more translator widget work
authormiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 22 Jul 2008 02:34:35 +0000 (02:34 +0000)
committermiker <miker@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Tue, 22 Jul 2008 02:34:35 +0000 (02:34 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/branches/acq-experiment@10086 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/web/conify/global/config/copy_status.html
Open-ILS/web/js/dojo/openils/widget/TranslatorPopup.js

index 8b6f062..f60920e 100644 (file)
                                                                                                                'status_grid.rowHeightChanged('+row+')',
                                                                                                        0
                                                                                                );
-                                                                                               var oldnode = dojo.byId('name_translation_' + row);
-                                                                                               if (oldnode) dijit.byNode(oldnode).destroyRecursive();
                                                                                                return '<span class="status_grid_trans_cell_'+row+'"></span>';
                                                                                        }
                                                                                        return '';
index 9947425..fe7f74d 100644 (file)
@@ -39,16 +39,20 @@ if(!dojo._hasResource["openils.widget.TranslatorPopup"]) {
                [dijit._Widget, dijit._Templated],
                {
 
-                       templateString : "<span dojoAttachPoint='node'><div id='${field}_translation_button_${unique}' dojoAttachPoint='translateLabelNode' dojoType='dijit.form.DropDownButton'><span>Translate</span><div id='${field}_translation_${unique}' dojoAttachPoint='tooltipDialog' dojoType='dijit.TooltipDialog'><div dojoType='dijit.layout.ContentPane'><table><tbody class='translation_tbody_template' style='display:none; visibility:hidden;'><tr><th dojoAttachPoint='localeLabelNode'/><td class='locale'><div class='locale_combobox'></div></td><th dojoAttachPoint='translationLabelNode'/><td class='translation'><div class='translation_textbox'></div></td><td><button class='create_button' style='display:none; visibility:hidden;'><span dojoAttachPoint='createButtonNode'/></button><button class='update_button' style='display:none; visibility:hidden;'><span dojoAttachPoint='updateButtonNode'/></button><button class='delete_button' style='display:none; visibility:hidden;'><span dojoAttachPoint='removeButtonNode'/></button></td></tr></tbody><tbody class='translation_tbody'></tbody></table></div></div></div></span>",
+                       templateString : "<span id='${field}_translation_${unique}' dojoAttachPoint='containerNode'><div id='${field}_translation_button_${unique}' dojoAttachPoint='translateLabelNode' dojoType='dijit.form.DropDownButton'><span>Translate</span><div id='${field}_translation_tooltip_${unique}' dojoAttachPoint='tooltipDialog' dojoType='dijit.TooltipDialog'><div dojoType='dijit.layout.ContentPane'><table><tbody class='translation_tbody_template' style='display:none; visibility:hidden;'><tr><th dojoAttachPoint='localeLabelNode'/><td class='locale'><div class='locale_combobox'></div></td><th dojoAttachPoint='translationLabelNode'/><td class='translation'><div class='translation_textbox'></div></td><td><button class='create_button' style='display:none; visibility:hidden;'><span dojoAttachPoint='createButtonNode'/></button><button class='update_button' style='display:none; visibility:hidden;'><span dojoAttachPoint='updateButtonNode'/></button><button class='delete_button' style='display:none; visibility:hidden;'><span dojoAttachPoint='removeButtonNode'/></button></td></tr></tbody><tbody class='translation_tbody'></tbody></table></div></div></div></span>",
 
                        widgetsInTemplate: true,
                        field : "",
                        targetObject : "",
                        unique : "",
 
+                       postMixInProperties : function () {
+                               if (!this.unique) this.unique = openils.widget.TranslatorPopup._unique++;
+                       },
+
                        postCreate : function () {
 
-                               dojo.connect(this.tooltipDialog, 'onOpen', this, 'renderTranslatorPopup');
+                               dojo.connect(this.tooltipDialog, 'onFocus', this, 'renderTranslatorPopup');
 
                                this.nls = dojo.i18n.getLocalization("openils.widget", "TranslatorPopup");
 
@@ -64,9 +68,11 @@ if(!dojo._hasResource["openils.widget.TranslatorPopup"]) {
 
                        renderTranslatorPopup : function () {
                
+                               var _trans_dijit = this;
+
                                this._targetObject = dojox.jsonPath.query(window, '$.' + this.targetObject, {evalType:"RESULT"});
 
-                               var node = dojo.byId(this.field + '_translation_' + this.unique);
+                               var node = dojo.byId(this.field + '_translation_tooltip_' + this.unique);
                
                                var trans_list = openils.I18N.getTranslations( this._targetObject, this.field );
                
@@ -114,12 +120,12 @@ if(!dojo._hasResource["openils.widget.TranslatorPopup"]) {
                
                                        dojo.query('.update_button',trans_row).style({ visibility : 'visible', display : 'inline'}).instantiate(
                                                dijit.form.Button,
-                                               { onClick : dojo.hitch( this, 'updateTranslation') }
+                                               { onClick : dojo.hitch( _trans_dijit, 'updateTranslation', trans_id) }
                                        );
                
                                        dojo.query('.delete_button',trans_row).style({ visibility : 'visible', display : 'inline'}).instantiate(
                                                dijit.form.Button,
-                                               { onClick : dojo.hitch( this, 'removeTranslation') }
+                                               { onClick : dojo.hitch( _trans_dijit, 'removeTranslation', trans_id) }
                                        );
                
                                        trans_tbody.appendChild( trans_row );
@@ -155,7 +161,7 @@ if(!dojo._hasResource["openils.widget.TranslatorPopup"]) {
                
                                dojo.query('.create_button',trans_row).style({ visibility : 'visible', display : 'inline'}).instantiate(
                                        dijit.form.Button,
-                                       { onClick : dojo.hitch( this, 'createTranslation') }
+                                       { onClick : dojo.hitch( _trans_dijit, 'createTranslation') }
                                );
                
                                trans_tbody.appendChild( trans_row );
@@ -186,7 +192,7 @@ if(!dojo._hasResource["openils.widget.TranslatorPopup"]) {
                        },
                        
                        createTranslation : function () {
-                               var node = dojo.byId(this.field + '_translation_' + this.unique);
+                               var node = dojo.byId(this.field + '_translation_tooltip_' + this.unique);
                        
                                var trans_obj = new i18n().fromHash({
                                        isnew : 1,
@@ -201,32 +207,34 @@ if(!dojo._hasResource["openils.widget.TranslatorPopup"]) {
        
                        writeTranslation : function (method, trans_obj) {
                        
+                               var _trans_dijit = this;
+
                                OpenSRF.CachedClientSession('open-ils.permacrud').request({
                                        method : 'open-ils.permacrud.' + method + '.i18n',
                                        timeout: 10,
                                        params : [ ses, trans_obj ],
                                        onerror: function (r) {
                                                //highlighter.editor_pane.red.play();
-                                               if (status_update) status_update( 'Problem saving translation for ' + this._targetObject[this.field]() );
+                                               if (status_update) status_update( 'Problem saving translation for ' + _trans_dijit._targetObject[_trans_dijit.field]() );
                                        },
                                        oncomplete : function (r) {
                                                var res = r.recv();
                                                if ( res && res.content() ) {
                                                        //highlighter.editor_pane.green.play();
-                                                       if (status_update) status_update( 'Saved changes to translation for ' + this._targetObject[this.field]() );
+                                                       if (status_update) status_update( 'Saved changes to translation for ' + _trans_dijit._targetObject[_trans_dijit.field]() );
                        
                                                        if (method == 'delete') {
                                                                dojo.NodeList(dojo.byId('translation_row_' + trans_obj.id())).orphan();
                                                        } else if (method == 'create') {
-                                                               var node = dojo.byId(this.field + '_translation_' + this.unique);
-                                                               dijit.byId('i18n_new_locale_' + this._targetObject.classname + '.' + this.field + this.unique).setValue(null);
-                                                               dijit.byId('i18n_new_translation_' + this._targetObject.classname + '.' + this.field + this.unique).setValue(null);
-                                                               this.renderTranslatorPopup();
+                                                               var node = dojo.byId(_trans_dijit.field + '_translation_tooltip_' + _trans_dijit.unique);
+                                                               dijit.byId('i18n_new_locale_' + _trans_dijit._targetObject.classname + '.' + _trans_dijit.field + _trans_dijit.unique).setValue(null);
+                                                               dijit.byId('i18n_new_translation_' + _trans_dijit._targetObject.classname + '.' + _trans_dijit.field + _trans_dijit.unique).setValue(null);
+                                                               _trans_dijit.renderTranslatorPopup();
                                                        }
                        
                                                } else {
                                                        //highlighter.editor_pane.red.play();
-                                                       if (status_update) status_update( 'Problem saving translation for ' + this._targetObject[this.field]() );
+                                                       if (status_update) status_update( 'Problem saving translation for ' + _trans_dijit._targetObject[_trans_dijit.field]() );
                                                }
                                        },
                                }).send();