Modified: 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave_layout.js
URL: 
http://svn.apache.org/viewvc/rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave_layout.js?rev=1398096&r1=1398095&r2=1398096&view=diff
==============================================================================
--- 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave_layout.js 
(original)
+++ 
rave/trunk/rave-portal-resources/src/main/webapp/static/script/rave_layout.js 
Sun Oct 14 15:24:32 2012
@@ -21,7 +21,11 @@ var rave = rave || {};
 rave.layout = rave.layout || (function() {
     var MOVE_PAGE_DEFAULT_POSITION_IDX = -1;
     var $moveWidgetDialog;
+    var showImportExportUI = false;
     var $movePageDialog = $("#movePageDialog");
+    var $pageFormTabbed = $("#pageFormTabbed");
+    var $pageFormImport = $("#pageFormImport");
+    var $omdlFile = $("#omdlFile");
     var $pageForm = $("#pageForm");
     var $tab_title_input = $("#tab_title"),
         $tab_id = $("#tab_id"),
@@ -35,6 +39,7 @@ rave.layout = rave.layout || (function()
         var $menuItemMove = $("#pageMenuMove");
         var $menuItemShare = $("#pageMenuShare");
         var $menuItemRevokeShare = $("#pageMenuRevokeShare");
+        var $MenuItemExport = $("#pageMenuExport");
 
         /**
          * Initializes the private pageMenu closure
@@ -42,7 +47,8 @@ rave.layout = rave.layout || (function()
          * - binds menu item click event handlers
          * - binds body click event handler to close the menu
          */
-        function init() {
+        function init(showImportExport) {
+            showImportExportUI = showImportExport;
             // initialize the page form validator overriding the
             // styles to wire in bootstrap styles
             $pageForm.validate({
@@ -55,23 +61,59 @@ rave.layout = rave.layout || (function()
                     $(element).parent().parent().removeClass('error');
                 }
             });
+            $pageFormTabbed.validate({
+                errorElement: 'span',
+                errorClass: 'help-inline',
+                highlight: function (element, errorClass) {
+                    $(element).parent().parent().addClass('error');
+                },
+                unhighlight: function (element, errorClass) {
+                    $(element).parent().parent().removeClass('error');
+                }
+            });
+            $pageFormImport.validate({
+                errorElement: 'span',
+                errorClass: 'help-inline',
+                highlight: function (element, errorClass) {
+                    $(element).parent().parent().addClass('error');
+                },
+                unhighlight: function (element, errorClass) {
+                    $(element).parent().parent().removeClass('error');
+                }
+            });
+
 
             // initialize the close button in the page menu dialog
             $("#pageMenuCloseButton").click(rave.layout.closePageDialog);
+            
$("#pageMenuCloseButtonTab").click(rave.layout.closePageDialogTabbed);
+            if(showImportExport){
+                $("#pageMenuExport").removeClass('hidden');
+            }
 
             // setup the edit page menu item
             $addPageButton.bind('click', function(event) {
-                
$("#pageMenuDialogHeader").html(rave.getClientMessage("page.add"));
-                var $pageMenuUpdateButton = $("#pageMenuUpdateButton");
-                
$pageMenuUpdateButton.html(rave.getClientMessage("common.add"));
-                // unbind the previous click event since we are sharing the
-                // dialog between separate add/edit page actions
-                $pageMenuUpdateButton.unbind('click');
-                $pageMenuUpdateButton.click(rave.layout.addPage);
-                $('#pageMenuDialog').on('shown', function () {
-                    $("#tab_title").first().focus();
-                });
-                $("#pageMenuDialog").modal('show');
+                if(showImportExport){
+                    var $pageMenuUpdateButtonTabbed = 
$("#pageMenuUpdateButtonTab");
+                    
$pageMenuUpdateButtonTabbed.html(rave.getClientMessage("common.add"));
+                    $("#page-tabs").tabs();
+                    
$pageMenuUpdateButtonTabbed.click(rave.layout.addOrImportPage);
+                    $('#pageMenuDialogTabbed').on('shown', function () {
+                        $("#tab_title").first().focus();
+                    });
+                    $("#pageMenuDialogTabbed").modal('show');
+                }else{
+                    
$("#pageMenuDialogHeader").html(rave.getClientMessage("page.add"));
+                    var $pageMenuUpdateButton = $("#pageMenuUpdateButton");
+                    
$pageMenuUpdateButton.html(rave.getClientMessage("common.add"));
+                    // unbind the previous click event since we are sharing the
+                    // dialog between separate add/edit page actions
+                    $pageMenuUpdateButton.unbind('click');
+                    $pageMenuUpdateButton.click(rave.layout.addPage);
+                    $('#pageMenuDialog').on('shown', function () {
+                        $("#tab_title").first().focus();
+                    });
+                    $("#pageMenuDialog").modal('show');
+                }
             });
 
             // setup the edit page menu item
@@ -110,7 +152,13 @@ rave.layout = rave.layout || (function()
                     $movePageDialog.modal('show');
                 });
             }
-
+            
+            // setup the export page menu item if it is not disabled
+            if (!$MenuItemExport.hasClass("hidden")) {
+                $MenuItemExport.bind('click', function(event) {
+                    window.open(rave.getContext() + "api/rest/" + "page/" + 
getCurrentPageId() + "/omdl");
+                });
+            }
             // setup the share page menu item
             if (!$menuItemShare.hasClass("menu-item-disabled")) {
                 $menuItemShare.bind('click', function(event) {
@@ -694,19 +742,79 @@ rave.layout = rave.layout || (function()
     /**
      * Submits the RPC call to add a new page if form validation passes
      */
-    function addPage() {
-        // if the form has passed validation submit the request
-        if ($pageForm.valid()) {
-            var newPageTitle = $tab_title_input.val();
-            var newPageLayoutCode = $page_layout_input.val();
-
-            // send the rpc request to create the new page
-            rave.api.rpc.addPage({pageName: newPageTitle,
-                                  pageLayoutCode: newPageLayoutCode,
-                                  successCallback: function(result) {
-                                      rave.viewPage(result.result.id);
-                                  }
-            });
+    function addPage() { 
+        if(showImportExportUI){
+            if ($pageFormTabbed.valid()) {
+                var newPageTitle = $("#tab_titleTabbed1").val();
+                var newPageLayoutCode = $("#pageLayoutTabbed").val();
+                // send the rpc request to create the new page
+                rave.api.rpc.addPage({pageName: newPageTitle,
+                                      pageLayoutCode: newPageLayoutCode,
+                                      errorLabel: 'pageFormErrorsTabbed1',
+                                      successCallback: function(result) {
+                                          rave.viewPage(result.result.id);
+                                      }
+                });
+            }
+        }else{
+            if ($pageForm.valid()) {
+                var newPageTitle = $tab_title_input.val();
+                var newPageLayoutCode = $page_layout_input.val();
+                // send the rpc request to create the new page
+                rave.api.rpc.addPage({pageName: newPageTitle,
+                                      pageLayoutCode: newPageLayoutCode,
+                                      errorLabel: 'pageFormErrors',
+                                      successCallback: function(result) {
+                                          rave.viewPage(result.result.id);
+                                      }
+                });
+            }
+        }
+    }
+    
+    function importPage() {
+        if($.browser.msie == true) {
+            alert(rave.getClientMessage("import.page.not.supported"));
+        }
+        else{
+            if ($pageFormImport.valid()) {
+                $pageFormImport.get(0).setAttribute('action', 
rave.getContext() + "api/rpc/page/import/omdl");
+                document.getElementById('pageFormImport').onsubmit=function() {
+                    document.getElementById('pageFormImport').target = 
'file_upload_frame';
+                    document.getElementById("file_upload_frame").onload = 
processFileUploadResult;
+                }
+                $pageFormImport.submit();
+            }
+        }
+    }
+    
+    function processFileUploadResult() {
+        // chrome & firefox a <pre> has been added to the begining of the json
+        var ret = 
frames['file_upload_frame'].document.getElementsByTagName("body")[0].firstChild.innerHTML;
+        var data = eval("("+ret+")");
+        if(data.error) {
+            if(data.errorCode == 'DUPLICATE_ITEM') {
+                
$("#pageFormErrorsTabbed2").html(rave.getClientMessage("page.duplicate_name"));
+            }
+            else if(data.errorCode == 'INTERNAL_ERROR' && 
data.errorMessage.indexOf("BadOmdlXmlFormatException") != -1){
+                var msg = 
data.errorMessage.substr(data.errorMessage.indexOf("BadOmdlXmlFormatException"),data.errorMessage.length)
+                $("#pageFormErrorsTabbed2").html(msg);
+            }
+            else{
+                alert(rave.getClientMessage("api.rpc.error.internal"));
+            }
+        }
+        else{
+            rave.viewPage(data.result.id);
+        }
+    }
+    
+    function addOrImportPage(){
+        var selectedTab = $("#page-tabs").tabs('option', 'selected');
+        if(selectedTab == 0){
+            addPage();
+        }else{
+            importPage();
         }
     }
 
@@ -733,6 +841,7 @@ rave.layout = rave.layout || (function()
             rave.api.rpc.updatePagePrefs({pageId: $tab_id.val(),
                                             title: $tab_title_input.val(),
                                             layout: $page_layout_input.val(),
+                                            errorLabel: 'pageFormErrors',
                                             successCallback: function(result) {
                                                 
rave.viewPage(result.result.id);
                                             }});
@@ -742,9 +851,19 @@ rave.layout = rave.layout || (function()
     function closePageDialog() {
         $pageForm[0].reset();
         $tab_id.val('');
+        $("#pageFormErrors").text('');
         $("#pageMenuDialog").modal("hide");
     }
-
+    
+    function closePageDialogTabbed() {
+        $pageForm[0].reset();
+        $("#pageFormErrors").text('');
+        $("#pageFormErrorsTabbed1").text('');
+        $("#pageFormErrorsTabbed2").text('');
+        $pageFormTabbed[0].reset();
+        $pageFormImport[0].reset();
+        $("#pageMenuDialogTabbed").modal("hide");
+    }
     /**
      * Invokes the RPC call to delete a regionWidget from a page
      *
@@ -797,8 +916,8 @@ rave.layout = rave.layout || (function()
    /***
     * initializes the rave.layout namespace code
     */
-    function init() {
-        pageMenu.init();
+    function init(showImportExport) {
+        pageMenu.init(showImportExport);
         widgetMenu.init();
         searchHandler.init();
         // initialize the bootstrap dropdowns
@@ -814,9 +933,12 @@ rave.layout = rave.layout || (function()
         enableEditPrefsMenuItem: widgetMenu.enableEditPrefsMenuItem,
         bindWidgetMenu: widgetMenu.bindWidgetMenu,
         addPage: addPage,
+        addOrImportPage : addOrImportPage,
         updatePage: updatePage,
         movePage: movePage,
+        importPage: importPage,
         closePageDialog: closePageDialog,
+        closePageDialogTabbed: closePageDialogTabbed,
         moveWidgetToPage: moveWidgetToPage,
         searchHandler : searchHandler,
         isWidgetOnHiddenTab: isWidgetOnHiddenTab


Reply via email to