diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index faa5cc076..590ac41bb 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -4,6 +4,8 @@ - rfe #10007: New Month and Year question type. If required, Month must be selected and a 4 digit year must be entered. - fixed #10011: Wrong spelling of "Descendant" in Navigation Asset Help function (Rob Schipper/NFIA India) - rfe #9098: Thingy Thing-copy function (SDH Consulting Group) + - rfe #9128: Thingy pretext and subtext fields maxlength too small (SDH Consulting Group) + - rfe #9099: Thingy field-copy function (SDH Consulting Group) 7.7.0 - fixed #9913: New Content Side Bar missing in Asset window diff --git a/docs/upgrades/upgrade_7.7.0-7.7.1.pl b/docs/upgrades/upgrade_7.7.0-7.7.1.pl index 4aebadfd5..52cdfa21b 100644 --- a/docs/upgrades/upgrade_7.7.0-7.7.1.pl +++ b/docs/upgrades/upgrade_7.7.0-7.7.1.pl @@ -34,6 +34,7 @@ my $session = start(); # this line required adSkuInstall($session); addWelcomeMessageTemplateToSettings( $session ); addStatisticsCacheTimeoutToMatrix( $session ); +changeThingyFieldsPreTextAndSubtext( $session ); # image mods addImageAnnotation($session); @@ -81,6 +82,15 @@ sub addStatisticsCacheTimeoutToMatrix{ print "Done.\n" unless $quiet; } +#---------------------------------------------------------------------------- +sub changeThingyFieldsPreTextAndSubtext{ + my $session = shift; + print "\tChanging pretext and subtext fields in Thingy_fields table... \n" unless $quiet; + $session->db->write("alter table Thingy_fields change subtext subtext text, change pretext pretext text;"); + print "Done.\n" unless $quiet; +} + + #---------------------------------------------------------------------------- # Describe what our function does sub adSkuInstall { diff --git a/lib/WebGUI/Asset/Wobject/Thingy.pm b/lib/WebGUI/Asset/Wobject/Thingy.pm index ad996c24a..64552c74b 100644 --- a/lib/WebGUI/Asset/Wobject/Thingy.pm +++ b/lib/WebGUI/Asset/Wobject/Thingy.pm @@ -677,7 +677,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{ @@ -736,12 +739,14 @@ sub getEditFieldForm { -value=>$field->{pretext}, -label=>$i18n->get('pretext label'), -hoverHelp=>$i18n->get('pretext description'), + -maxlength=>'1024', ); $f->text( -name=>"subtext", -value=>$field->{subtext}, -label=>$i18n->get('subtext label'), -hoverHelp=>$i18n->get('subtext description'), + -maxlength=>'1024', ); $f->selectBox( -name=>"status", @@ -1770,7 +1775,10 @@ sub www_editThing { ." ".$field->{label}."\n" ." ".$formElement."\n" ." session->url->page() - ."?func=editField;fieldId=".$field->{fieldId}.";thingId=".$thingId."','".$field->{fieldId}."')\" value='".$i18n->get('Edit','Icon')."' 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='".$i18n->get('Delete','Icon')."' type='button'>\n\n\n\n"; @@ -2111,12 +2119,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"; diff --git a/www/extras/wobject/Thingy/thingy.js b/www/extras/wobject/Thingy/thingy.js index 6d0fdde70..d263f551b 100644 --- a/www/extras/wobject/Thingy/thingy.js +++ b/www/extras/wobject/Thingy/thingy.js @@ -129,7 +129,7 @@ function initOptionalFields(prefix,fieldId) { } } -function editListItem(url,fieldId) { +function editListItem(url,fieldId,copy) { var handleGetFormSuccess = function(o){ @@ -139,6 +139,10 @@ function editListItem(url,fieldId) { 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); var search_label = new YAHOO.util.Element("search_label_"+listItemId); @@ -159,21 +163,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", - autofillheight:false, + + 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"); - editFieldDialog.setBody(o.responseText); + 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 +205,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 +281,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) {