/*
* 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($('