cubicweb/web/data/cubicweb.reledit.js
changeset 11057 0b59724cb3f2
parent 10279 d7479a5ac553
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/cubicweb/web/data/cubicweb.reledit.js	Sat Jan 16 13:48:51 2016 +0100
@@ -0,0 +1,75 @@
+cw.reledit = new Namespace('cw.reledit');
+
+
+jQuery.extend(cw.reledit, {
+
+    /* Unhides the part of reledit div containing the form
+     * hides other parts
+     */
+    showInlineEditionForm: function (divid) {
+        jQuery('#' + divid).hide();
+        jQuery('#' + divid + '-value').hide();
+        jQuery('#' + divid + '-form').show();
+      },
+
+    /* Hides and removes edition parts, incl. messages
+     * show initial widget state
+     */
+    cleanupAfterCancel: function (divid) {
+        jQuery('#appMsg').hide();
+        jQuery('div.errorMessage').remove();
+        // plus re-set inline style ?
+        jQuery('#' + divid).show();
+        jQuery('#' + divid + '-value').show();
+        jQuery('#' + divid + '-form').hide();
+    },
+
+    /* callback used on form validation success
+     * refreshes the whole page or just the edited reledit zone
+     * @param results: [status, ...]
+     * @param formid: the dom id of the reledit form
+     * @param cbargs: ...
+     */
+     onSuccess: function (results, formid, cbargs) {
+        var params = {fname: 'reledit_form'};
+        jQuery('#' + formid + ' input:hidden').each(function (elt) {
+            var name = jQuery(this).attr('name');
+            if (name && name.startswith('__reledit|')) {
+                params[name.split('|')[1]] = this.value;
+            }
+        });
+        var reload = cw.evalJSON(params.reload);
+        if (reload || (params.formid == 'deleteconf')) {
+            if (typeof reload == 'string') {
+                /* Sometimes we want to reload but the reledit thing
+                 * updated a key attribute which was a component of the
+                 * url
+                 */
+                document.location.href = reload;
+                return;
+            }
+            else {
+                document.location.reload();
+                return;
+            }
+        }
+        jQuery('#'+params.divid+'-reledit').loadxhtml(AJAX_BASE_URL, params, 'post', 'swap');
+        jQuery(cw).trigger('reledit-reloaded', params);
+    },
+
+    /* called by reledit forms to submit changes
+     * @param formid : the dom id of the form used
+     * @param rtype : the attribute being edited
+     * @param eid : the eid of the entity being edited
+     * @param reload: boolean to reload page if true (when changing URL dependant data)
+     * @param default_value : value if the field is empty
+     */
+    loadInlineEditionForm: function(formid, eid, rtype, role, divid, reload, vid, action) {
+        var args = {fname: 'reledit_form', rtype: rtype, role: role,
+                    pageid: pageid, action: action,
+                    eid: eid, divid: divid, formid: formid,
+                    reload: reload, vid: vid};
+        var d = jQuery('#'+divid+'-reledit').loadxhtml(AJAX_BASE_URL, args, 'post', 'swap');
+        d.addCallback(function () {cw.reledit.showInlineEditionForm(divid);});
+    }
+});