From 1527ac43e85af797797724440c3fea31ce69d378 Mon Sep 17 00:00:00 2001 From: Yung Han Khoe Date: Wed, 3 Dec 2008 12:43:10 +0000 Subject: [PATCH] added rfe #w9099: Thingy field-copy function --- lib/WebGUI/Asset/Wobject/Thingy.pm | 30 ++++++++++++---- www/extras/wobject/Thingy/thingy.js | 53 +++++++++++++++++++---------- 2 files changed, 58 insertions(+), 25 deletions(-) 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) {