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) {