diff --git a/lib/WebGUI/Asset/Wobject/Thingy.pm b/lib/WebGUI/Asset/Wobject/Thingy.pm
index db7832320..1db70039d 100644
--- a/lib/WebGUI/Asset/Wobject/Thingy.pm
+++ b/lib/WebGUI/Asset/Wobject/Thingy.pm
@@ -643,7 +643,10 @@ sub getEditFieldForm {
}
my $dialogPrefix;
- if ($fieldId eq "new"){
+ if ($field->{oldFieldId}){
+ $dialogPrefix = "edit_".$field->{oldFieldId}."_Dialog_copy";
+ }
+ elsif($fieldId eq "new"){
$dialogPrefix = "addDialog";
}
else{
@@ -1727,7 +1730,10 @@ sub www_editThing {
."
".$field->{label}." | \n"
." ".$formElement." | \n"
." session->url->page()
- ."?func=editField;fieldId=".$field->{fieldId}.";thingId=".$thingId."','".$field->{fieldId}."')\" value='Edit' type='button'>"
+ ."?func=editField;fieldId=".$field->{fieldId}.";thingId=".$thingId."','".$field->{fieldId}."')\" value='Edit' type='button'>"
+ ." session->url->page()
+ ."?func=editField;copy=1;fieldId=".$field->{fieldId}.";thingId=".$thingId."','".$field->{fieldId}
+ ."','copy')\" value='Copy' type='button'>"
."session->url->page()."','".$field->{fieldId}."','".$thingId."')\" "
."value='Delete' type='button'> | \n\n\n\n";
@@ -2068,12 +2074,19 @@ Returns the html for a pop-up dialog to add or edit a field.
sub www_editField {
- my $self = shift;
+ my $self = shift;
+ my $session = $self->session;
my (%properties,$thingId,$fieldId,$dialogBody);
- return $self->session->privilege->insufficient() unless $self->canEdit;
- $fieldId = $self->session->form->process("fieldId");
- $thingId = $self->session->form->process("thingId");
- %properties = $self->session->db->quickHash("select * from Thingy_fields where thingId=".$self->session->db->quote($thingId)." and fieldId = ".$self->session->db->quote($fieldId)." and assetId = ".$self->session->db->quote($self->get("assetId")));
+ return $session->privilege->insufficient() unless $self->canEdit;
+ $fieldId = $session->form->process("fieldId");
+ $thingId = $session->form->process("thingId");
+ %properties = $session->db->quickHash("select * from Thingy_fields where thingId=? and fieldId=? and assetId=?",
+ [$thingId,$fieldId,$self->get("assetId")]);
+ if($session->form->process("copy")){
+ $properties{oldFieldId} = $properties{fieldId};
+ $properties{fieldId} = 'new';
+ $properties{label} = $properties{label}.' (copy)';
+ }
$dialogBody = $self->getEditFieldForm(\%properties);
$self->session->output->print($dialogBody->print);
return "chunked";
@@ -2157,6 +2170,9 @@ sub www_editFieldSave {
."".$formElement." | \n"
." session->url->page()
."?func=editField;fieldId=".$newFieldId.";thingId=".$properties{thingId}."','".$newFieldId."')\" value='Edit' type='button'>"
+ ." session->url->page()
+ ."?func=editField;copy=1;fieldId=".$newFieldId.";thingId=".$properties{thingId}."','".$newFieldId
+ ."','copy')\" value='Copy' type='button'>"
."session->url->page()."','".$newFieldId
."','".$properties{thingId}."')\" value='Delete' type='button'> | \n\n";
diff --git a/www/extras/wobject/Thingy/thingy.js b/www/extras/wobject/Thingy/thingy.js
index 6d0fdde70..24992fe60 100644
--- a/www/extras/wobject/Thingy/thingy.js
+++ b/www/extras/wobject/Thingy/thingy.js
@@ -129,15 +129,18 @@ function initOptionalFields(prefix,fieldId) {
}
}
-function editListItem(url,fieldId) {
+function editListItem(url,fieldId,copy) {
var handleGetFormSuccess = function(o){
-
var handleSuccess = function(o) {
var response = o.responseText;
var listItemId = response.slice(0,22);
var newInnerHTML = response.slice(22);
var label = editFieldDialog.getData().label;
+
+ if(copy){
+ addListItemHTML(listItemId, newInnerHTML,label);
+ }
var li = new YAHOO.util.Element(listItemId);
li.set('innerHTML',newInnerHTML);
@@ -159,21 +162,31 @@ function editListItem(url,fieldId) {
this.destroy();
};
function optionalFields() {
- initOptionalFields("edit_"+fieldId+"_Dialog",fieldId);
+ initOptionalFields(dialogId,fieldId);
}
- editFieldDialog = new YAHOO.widget.Dialog("edit_"+fieldId+"_Dialog", { width:"460px", visible:false, draggable:true, close:true, fixedcenter:true, zIndex:11001, height: "420px",
+
+ var dialogId = "edit_"+fieldId+"_Dialog";
+ if(copy){
+ dialogId = dialogId + '_copy';
+ }
+
+ editFieldDialog = new YAHOO.widget.Dialog(dialogId, { width:"460px", visible:false, draggable:true, close:true, fixedcenter:true, zIndex:11001, height: "420px",
autofillheight:false,
buttons : [ { text:"Submit", handler:handleSubmit, isDefault:true },
{ text:"Cancel", handler:handleCancel } ]
} );
-
- editFieldDialog.setHeader("Edit Field");
+
+ if(copy){
+ editFieldDialog.setHeader("Copy Field");
+ }else{
+ editFieldDialog.setHeader("Edit Field");
+ }
editFieldDialog.setBody(o.responseText);
editFieldDialog.render(document.body);
editFieldDialog.callback = { success: handleSuccess, failure: handleFailure };
editFieldDialog.show();
- YAHOO.util.Event.onContentReady("edit_"+fieldId+"_Dialog", optionalFields);
- initHoverHelp("edit_"+fieldId+"_Dialog");
+ YAHOO.util.Event.onContentReady(dialogId, optionalFields);
+ initHoverHelp(dialogId);
};
@@ -191,16 +204,8 @@ function editListItem(url,fieldId) {
var request = YAHOO.util.Connect.asyncRequest('GET', url, callbackGetForm);
}
-
-function initAddFieldDialog() {
-
- var handleSuccess = function(o) {
- var response = o.responseText;
- var listItemId = response.slice(0,22);
- var newInnerHTML = response.slice(22);
- var label = addFieldDialog.getData().label;
-
- var ul1 = new YAHOO.util.Element('ul1');
+function addListItemHTML(listItemId, newInnerHTML,label){
+ var ul1 = new YAHOO.util.Element('ul1');
var li = document.createElement('li');
li.id = listItemId;
li.className = 'list1';
@@ -275,6 +280,18 @@ function initAddFieldDialog() {
viewScreenTitle_td.innerHTML = "";
}
view_tr.appendChild(viewScreenTitle_td);
+}
+
+
+function initAddFieldDialog() {
+
+ var handleSuccess = function(o) {
+ var response = o.responseText;
+ var listItemId = response.slice(0,22);
+ var newInnerHTML = response.slice(22);
+ var label = addFieldDialog.getData().label;
+ addListItemHTML(listItemId, newInnerHTML,label);
+
};
var handleFailure = function(o) {