/* * Wikiplus */ window.wpjQ = jQuery.noConflict(true); (function(window, $) { /***************************************************** * * 汎用拡張 * * *****************************************************/ //jQueryウエイト処理 wpjQ.fn.wait = function(time, type) { time = time || 1000; type = type || "fx"; return this.queue(type, function() { var self = this; setTimeout(function() { wpjQ(self).dequeue(); }, time); }); }; /***************************************************** * * WikiPlus独自拡張 * *****************************************************/ wpjQ.fn.escapeSelector = function(selector){ return selector.replace(/(:|\.)/g,'\\$1'); }; /** * ユーザーによる手入力を無効にする * [BS][DEL]の場合は、入力欄を空にする。 * それ以外のキー入力は受け付けない。 * 主にdatepicker()やtimePicker()のUIに対して使用し、 * 不正な日付や時刻の入力を防ぐ * * @returns {unresolved} */ wpjQ.fn.wpProhibitInput = function(){ return this.each(function(){ var obj=$(this); obj.on('keydown', function(evt){ if(evt.keyCode === 9 || evt.keyCode === 13 || evt.keyCode === 27 || (evt.keyCode >= 37 && evt.keyCode <= 40) ){ //TAB、ENTER、ESC、または矢印キーであれば、何もしない return true; } if(evt.keyCode === 8 || evt.keyCode === 46){ //BSとDELは入力値を空にする obj.val(''); } evt.preventDefault(); evt.stopPropagation(); }); }); }; wpjQ.fn.wpInputNumber = function(opt){ opt = opt || {}; var defaults = { step : 1, min : 0, max : 9999, afterChange : false }; var options = $.extend(true, {}, defaults, opt); return this.each(function(){ var obj=$(this); if(!$.browser.msie){ obj.attr("unselectable", "on"); } obj.after(''); var plus = $("li.wp_editor_plus", obj.next()).eq(0); var minus = $("li.wp_editor_minus", obj.next()).eq(0); plus.css("cursor", "pointer"); minus.css("cursor", "pointer"); obj.change(function(){ if(options.afterChange){ options.afterChange($(this).val()); } }); plus.click(function(){ var set_val = parseInt(obj.val()) + options.step; if(false === $.isNumeric(set_val)){ obj.val(options.min); } else if(set_val <= options.max){ obj.val(set_val); } }); minus.click(function(){ var set_val = parseInt(obj.val()) - options.step; if(false === $.isNumeric(set_val)){ obj.val(options.min); } else if(set_val >= options.min){ obj.val(set_val); } }); }); }; /** * エディタ右メニューの開閉ボタン * */ wpjQ.fn.wpAdvMenuToggle = function(menu_id, hide_at_first){ $(this).attr('href', 'javascript:void(0)'); $('#' + menu_id).css('display', 'none').css('margin-bottom', '20px'); var plugin = this; plugin.show = function(){ $(this).removeClass('toggle_menu_off').addClass('toggle_menu_on'); $('#' + menu_id).show(); }; plugin.hide = function(){ $(this).removeClass('toggle_menu_on').addClass('toggle_menu_off'); $('#' + menu_id).hide(); }; if((hide_at_first === undefined)? true : hide_at_first){ plugin.hide(); }else{ plugin.show(); } $(this).click(function(){ if($(this).hasClass('toggle_menu_off')){ plugin.show(); } else { plugin.hide(); } }); }; /** * ページ選択リストの出力 * */ wpjQ.fn.wpSelectPageMenu = function(sel_val, sel_text, first_val, first_text){ sel_val = sel_val || 'contentid'; sel_text = sel_text || 'pagename'; first_val = first_val || ''; first_text = first_text || '--- 選択してください ---'; //内部リンクセレクトボックスのクリア $(this).find('option').remove(); $(this).append($('