/** * UI系汎用関数オブジェクト */ (function($) { wp.ui = { loadingCounter : 0, loadingBlankMs : 300, //ローディングを表示するまでのあそび時間(ms) /** * ペインに関係する全ての情報とUIを再読み込み * @param {type} callback * @returns {undefined} */ refreshUI : function(callback){ var self = this; var success_callback = function(json){ var panes= [{}]; $(json.panes).each(function(){ var $pane_elem = $('#wp_paneno_' + this.paneno); var settings = self.loadEditorCallSettings($pane_elem); //data属性から、各種情報を取得 var pane_data = $.extend(true, {}, this); pane_data.settings = settings; if(settings.isbody){ panes[0] = pane_data; panes[0].pagename = "このページの本文"; }else{ panes.push(pane_data); } }); wp.state.setFunctions(json.functions); //WIKIPLUSの機能 wp.state.setPanes(panes); //WIKIPLUSのペイン wp.state.setRollbacks(json.rollbacks); //WIKIPLUSのロールバック wp.state.setDesigns(json.designs); //WIKIPLUSのデザインテンプレート setTimeout( function() { if(callback){ callback(); } $(':ui-wpPane').wpPane('refreshPaneState'); $(':ui-wpPane').wpPane('refreshUIPosition'); wp.toolbar.logo.setUnreadCount(wp.state.devnavi.count.unread); }, 1000); return true; }; //Ajax実行 wp.ajax.toolbar($.proxy(success_callback, self)); }, loadEditorCallSettings : function($elem){ var settings = { display : $elem.data('wp_call_editor_display'), assist_button : $elem.data('wp_call_editor_assist_button'), page_properties : $elem.data('wp_call_editor_page_properties'), isbody : $elem.data('wp_call_editor_isbody'), css_path : $elem.data('wp_call_editor_css_path'), editable : $elem.data('wp_call_editor_editable'), transfer_page : $elem.data('wp_call_editor_transfer_page'), has_priv_edit : $elem.data('wp_call_editor_has_priv_edit'), // true|false has_priv_view : $elem.data('wp_call_editor_has_priv_view'), // true|false approval_state : $elem.data('wp_call_editor_approval_state') // approving|must_approve|unrelated|related }; return settings; }, // *** ダイアログ系 *** getDialogHeight : function(dialog_height){ if($(window).height() < dialog_height){ dialog_height = $(window).height() - 20; } return dialog_height; }, saveDialogProp : function(dialog, dialogprop){ var self = this; var $dialog = $(dialog); dialogprop.top = $dialog.offset().top; dialogprop.left = $dialog.offset().left; dialogprop.width = parseInt($dialog.css("width")); dialogprop.height = parseInt($dialog.css("height")); }, openSitePropDialog : function(){ wp.lib.dialog.open('./?cmd=siteprop', { title : 'サイトプロパティ', height : wp.ui.getDialogHeight(760), width : 660, maxHeight : 760, minWidth : 660, maxWidth : 660 }); }, // *** ローディング系 *** deployLoading : function(){ $('body').append('
'); $('body').append('
'); }, showLoading : function(){ var self = this; self.loadingCounter++; setTimeout(function(){ if(self.loadingCounter > 0){ $('#wp_loading').css("height", $(document).height()).css("width", $(document).width()); $('#wp_loading, #wp_loading_center').show(); } }, self.loadingBlankMs); }, hideLoading : function(){ var self = this; if(self.loadingCounter > 0){ self.loadingCounter--; } else { self.loadingCounter = 0; } $('#wp_loading, #wp_loading_center').hide(); }, // *** Ajax系 *** ajaxComplete : function(XMLHttpRequest, status){ switch (status) { case "notmodified": wp.logger("Ajax:notmodified"); //throw {"code":1001} break; case "timeout": wp.logger("Ajax:timeout"); //throw {"code":1002} break; case "parsererror": wp.logger("Ajax:parsererror"); //throw {"code":1003} break; default: break; } } }; })(window.wpjQ);