(새 문서: <!--사용자:다메즈마/mascot notification.js에서 이츠레아 부분 삭제--> $('head').append( '<script src=\'/index.php?title=사용자:다메즈마/hisyokan.js&action=...) |
편집 요약 없음 |
||
1번째 줄: | 1번째 줄: | ||
<!--[[사용자:다메즈마/mascot notification.js]]에서 이츠레아 부분 삭제--> | <!--[[사용자:다메즈마/mascot notification.js]]에서 이츠레아 부분 삭제--> | ||
<!--[[사용자:다메즈마/hisyokan.js]]을 변형한 [[사용자:Skim/secretary.js]] 사용--> | |||
function randomRange(n1, n2) { | |||
return Math.round( Math.random() * 10000) % (n2 - n1) + n1; | |||
} | |||
function Mascot() | |||
{ | |||
this.is_loaded = false; | |||
this.is_show = false; | |||
this.mascot_img_list = []; | |||
this.message_queue = []; | |||
this.now_balloon = null; | |||
this.is_small = true; | |||
} | |||
Mascot.prototype.AddImage = function(img) | |||
{ | |||
this.mascot_img_list.push(img); | |||
}; | |||
Mascot.prototype._show_balloon = function() | |||
{ | |||
this.now_balloon = document.createElement("div"); | |||
$(this.now_balloon).css("position","fixed"); | |||
$(this.now_balloon).css("display","none"); | |||
$(this.now_balloon).html(this.message_queue[0]); | |||
$(this.now_balloon).css("background-color","#000"); | |||
$(this.now_balloon).css("color","#FFF"); | |||
$(this.now_balloon).css("max-width","225px"); | |||
$(this.now_balloon).css("padding","16px"); | |||
$(document.body).append(this.now_balloon); | |||
$(this.now_balloon).css("bottom",$(this.mascot_img_html).height()/2 +16 - $(this.now_balloon).height()/2 + 32); | |||
$(this.now_balloon).css("right",$(this.mascot_img_html).width() + 32); | |||
$(this.now_balloon).css("border-radius",5); | |||
$(this.now_balloon).fadeIn(1000); | |||
this.message_queue.shift(); | |||
this.now_balloon.obj = this; | |||
$(this.now_balloon).click | |||
( | |||
function() | |||
{ | |||
var obj = this.obj; | |||
$(obj.now_balloon).fadeOut(1000).delay(1000,function(){$(this).remove();}); | |||
obj.now_balloon = null; | |||
if(obj.message_queue.length != 0) | |||
{ | |||
obj._show_balloon(); | |||
} | |||
} | |||
); | |||
}; | |||
Mascot.prototype.Show = function() | |||
{ | |||
if(this.is_show) return; | |||
this.is_show = true; | |||
var select = this.mascot_img_list[randomRange(0,this.mascot_img_list.length)]; | |||
var wrap_div = document.createElement("div"); | |||
this.mascot_img_html = document.createElement("img"); | |||
this.mascot_img_html.obj = this; | |||
if(localStorage.getItem("custom_dmns_is_small") == "true") | |||
{ | |||
this.ToSmall(); | |||
} | |||
else | |||
{ | |||
this.ToBig(); | |||
} | |||
this.mascot_img_html.onload = function() | |||
{ | |||
var obj = this.obj; | |||
if(localStorage.getItem("custom_dmns_is_small") == "true") | |||
{ | |||
obj.ToSmall(); | |||
} | |||
else | |||
{ | |||
obj.ToBig(); | |||
} | |||
if(obj.message_queue.length != 0) | |||
{ | |||
obj._show_balloon(); | |||
} | |||
$(".top_s_btn").css("display","none"); | |||
$("#to-top-btn").css("width",$(this).width()/2); | |||
$("#to-bottom-btn").css("width",$(this).width()/2); | |||
obj.is_loaded = true; | |||
}; | |||
$(this.mascot_img_html).click( | |||
function() | |||
{ | |||
if(this.obj.is_small == false) | |||
{ | |||
this.obj.ToSmall(); | |||
} | |||
else | |||
{ | |||
this.obj.ToBig(); | |||
} | |||
}); | |||
this.mascot_img_html.src = select; | |||
$(this.mascot_img_html).css("display","block"); | |||
$(wrap_div).css("position","fixed"); | |||
$(wrap_div).css("right","16px"); | |||
$(wrap_div).css("bottom","16px"); | |||
$(wrap_div).append(this.mascot_img_html); | |||
$(wrap_div).append("<ul style='list-style:none;padding: 0px;margin:0px;display:inline;'><li style='float:left;'><a id='to-top-btn' href='#' style='text-align:center;display:inline-block;line-height:32px;width:100%;background-color:#000;color:#FFF;font-weight:bold;'>위로</a></li><li style='float:left;'><a id='to-bottom-btn' href='#' style='text-align:center;display:inline-block;line-height:32px;width:100%;background-color:#000;color:#FFF;font-weight:bold;'>아래로</a></li></ul>"); | |||
$(document.body).append(wrap_div); | |||
$("#to-top-btn").click( | |||
function() | |||
{$('html, body').animate({scrollTop:0}, 'slow');} | |||
); | |||
$("#to-bottom-btn").click( | |||
function() | |||
{$('html, body').animate({scrollTop:document.body.scrollHeight}, 'slow');} | |||
); | |||
}; | |||
Mascot.prototype.ShowMessage = function(msg) | |||
{ | |||
this.message_queue.push(msg); | |||
if(this.is_show == false) | |||
{ | |||
this.Show(); | |||
} | |||
else{ | |||
this.CloseMessage(); | |||
} | |||
if(this.now_balloon == null && this.is_loaded == true) | |||
{ | |||
this._show_balloon(); | |||
} | |||
}; | |||
Mascot.prototype.CloseMessage = function() | |||
{ | |||
$(this.now_balloon).fadeOut(1000).delay(1000,function(){$(this).remove();}); | |||
this.now_balloon = null; | |||
if(this.message_queue.length != 0) | |||
{ | |||
this._show_balloon(); | |||
} | |||
}; | |||
Mascot.prototype.ToSmall = function() | |||
{ | |||
$(this.mascot_img_html).css("width",96); | |||
if(this.now_balloon != null) | |||
{ | |||
$(this.now_balloon).css("bottom",$(this.mascot_img_html).height()/2 +16 - $(this.now_balloon).height()/2 + 32); | |||
$(this.now_balloon).css("right",$(this.mascot_img_html).width() + 32); | |||
} | |||
$("#to-top-btn").css("width",$(this.mascot_img_html).width()/2); | |||
$("#to-bottom-btn").css("width",$(this.mascot_img_html).width()/2); | |||
this.is_small = true; | |||
localStorage.setItem("custom_dmns_is_small",true); | |||
}; | |||
Mascot.prototype.ToBig = function() | |||
{ | |||
$(this.mascot_img_html).css("width",256); | |||
if(this.now_balloon != null) | |||
{ | |||
$(this.now_balloon).css("bottom",$(this.mascot_img_html).height()/2 +16 - $(this.now_balloon).height()/2 + 32); | |||
$(this.now_balloon).css("right",$(this.mascot_img_html).width() + 32); | |||
} | |||
$("#to-top-btn").css("width",$(this.mascot_img_html).width()/2); | |||
$("#to-bottom-btn").css("width",$(this.mascot_img_html).width()/2) | |||
this.is_small = false; | |||
localStorage.setItem("custom_dmns_is_small",false); | |||
} | |||
$(document).ready(function(){ | |||
var mascot = new Mascot(); | |||
var libra = | var libra = | ||
{ | { | ||
77번째 줄: | 256번째 줄: | ||
temp(); | temp(); | ||
setInterval(temp,1000 * 20); | setInterval(temp,1000 * 20); | ||
} | }; |
2015년 8월 12일 (수) 19:02 판
<!--[[사용자:다메즈마/mascot notification.js]]에서 이츠레아 부분 삭제-->
<!--[[사용자:다메즈마/hisyokan.js]]을 변형한 [[사용자:Skim/secretary.js]] 사용-->
function randomRange(n1, n2) {
return Math.round( Math.random() * 10000) % (n2 - n1) + n1;
}
function Mascot()
{
this.is_loaded = false;
this.is_show = false;
this.mascot_img_list = [];
this.message_queue = [];
this.now_balloon = null;
this.is_small = true;
}
Mascot.prototype.AddImage = function(img)
{
this.mascot_img_list.push(img);
};
Mascot.prototype._show_balloon = function()
{
this.now_balloon = document.createElement("div");
$(this.now_balloon).css("position","fixed");
$(this.now_balloon).css("display","none");
$(this.now_balloon).html(this.message_queue[0]);
$(this.now_balloon).css("background-color","#000");
$(this.now_balloon).css("color","#FFF");
$(this.now_balloon).css("max-width","225px");
$(this.now_balloon).css("padding","16px");
$(document.body).append(this.now_balloon);
$(this.now_balloon).css("bottom",$(this.mascot_img_html).height()/2 +16 - $(this.now_balloon).height()/2 + 32);
$(this.now_balloon).css("right",$(this.mascot_img_html).width() + 32);
$(this.now_balloon).css("border-radius",5);
$(this.now_balloon).fadeIn(1000);
this.message_queue.shift();
this.now_balloon.obj = this;
$(this.now_balloon).click
(
function()
{
var obj = this.obj;
$(obj.now_balloon).fadeOut(1000).delay(1000,function(){$(this).remove();});
obj.now_balloon = null;
if(obj.message_queue.length != 0)
{
obj._show_balloon();
}
}
);
};
Mascot.prototype.Show = function()
{
if(this.is_show) return;
this.is_show = true;
var select = this.mascot_img_list[randomRange(0,this.mascot_img_list.length)];
var wrap_div = document.createElement("div");
this.mascot_img_html = document.createElement("img");
this.mascot_img_html.obj = this;
if(localStorage.getItem("custom_dmns_is_small") == "true")
{
this.ToSmall();
}
else
{
this.ToBig();
}
this.mascot_img_html.onload = function()
{
var obj = this.obj;
if(localStorage.getItem("custom_dmns_is_small") == "true")
{
obj.ToSmall();
}
else
{
obj.ToBig();
}
if(obj.message_queue.length != 0)
{
obj._show_balloon();
}
$(".top_s_btn").css("display","none");
$("#to-top-btn").css("width",$(this).width()/2);
$("#to-bottom-btn").css("width",$(this).width()/2);
obj.is_loaded = true;
};
$(this.mascot_img_html).click(
function()
{
if(this.obj.is_small == false)
{
this.obj.ToSmall();
}
else
{
this.obj.ToBig();
}
});
this.mascot_img_html.src = select;
$(this.mascot_img_html).css("display","block");
$(wrap_div).css("position","fixed");
$(wrap_div).css("right","16px");
$(wrap_div).css("bottom","16px");
$(wrap_div).append(this.mascot_img_html);
$(wrap_div).append("<ul style='list-style:none;padding: 0px;margin:0px;display:inline;'><li style='float:left;'><a id='to-top-btn' href='#' style='text-align:center;display:inline-block;line-height:32px;width:100%;background-color:#000;color:#FFF;font-weight:bold;'>위로</a></li><li style='float:left;'><a id='to-bottom-btn' href='#' style='text-align:center;display:inline-block;line-height:32px;width:100%;background-color:#000;color:#FFF;font-weight:bold;'>아래로</a></li></ul>");
$(document.body).append(wrap_div);
$("#to-top-btn").click(
function()
{$('html, body').animate({scrollTop:0}, 'slow');}
);
$("#to-bottom-btn").click(
function()
{$('html, body').animate({scrollTop:document.body.scrollHeight}, 'slow');}
);
};
Mascot.prototype.ShowMessage = function(msg)
{
this.message_queue.push(msg);
if(this.is_show == false)
{
this.Show();
}
else{
this.CloseMessage();
}
if(this.now_balloon == null && this.is_loaded == true)
{
this._show_balloon();
}
};
Mascot.prototype.CloseMessage = function()
{
$(this.now_balloon).fadeOut(1000).delay(1000,function(){$(this).remove();});
this.now_balloon = null;
if(this.message_queue.length != 0)
{
this._show_balloon();
}
};
Mascot.prototype.ToSmall = function()
{
$(this.mascot_img_html).css("width",96);
if(this.now_balloon != null)
{
$(this.now_balloon).css("bottom",$(this.mascot_img_html).height()/2 +16 - $(this.now_balloon).height()/2 + 32);
$(this.now_balloon).css("right",$(this.mascot_img_html).width() + 32);
}
$("#to-top-btn").css("width",$(this.mascot_img_html).width()/2);
$("#to-bottom-btn").css("width",$(this.mascot_img_html).width()/2);
this.is_small = true;
localStorage.setItem("custom_dmns_is_small",true);
};
Mascot.prototype.ToBig = function()
{
$(this.mascot_img_html).css("width",256);
if(this.now_balloon != null)
{
$(this.now_balloon).css("bottom",$(this.mascot_img_html).height()/2 +16 - $(this.now_balloon).height()/2 + 32);
$(this.now_balloon).css("right",$(this.mascot_img_html).width() + 32);
}
$("#to-top-btn").css("width",$(this.mascot_img_html).width()/2);
$("#to-bottom-btn").css("width",$(this.mascot_img_html).width()/2)
this.is_small = false;
localStorage.setItem("custom_dmns_is_small",false);
}
$(document).ready(function(){
var mascot = new Mascot();
var libra =
{
img:"/images/3/3d/리브레_위키_마스코트.png",
comment:"한번만 더 '노브라'라고 하면 차단할테니 각오하세요"
};
var libra2 = libra;
libra2.img = "/images/8/8b/리브라_대반달.png";
var libra3 =
{
img:"/images/d/d3/백팩커리브라.png",
comment:"자 얼릉 문서수정하러 가자고"
};
var libren =
{
img:"/images/b/be/리브렌_100.png",
comment:"나 팩맨아니라고!"
};
var mascot_list =
[
libra,
libra2,
libra3,
libren,
itsurea_moe,
itsurea_moe2
];
if($(document).width() >= 1000)
{
var select = mascot_list[randomRange(0,mascot_list.length)];
mascot.AddImage(select.img);
mascot.ShowMessage(select.comment);
var temp = function(){
var param =
{
"action":"query",
"meta":"notifications",
"notlimit":10,
"format":"json"
};
$.ajax("/api.php",
{
data:param,
dataType:"json"
})
.done(function(res)
{
var list_o = res.query.notifications.list;
var list = [];
for(var key in list_o)
{
list.push(list_o[key]);
}
var unread_message = [];
for(var i = 0 ; i < list.length ; i++)
{
if(list[i].read == null && list[i].type != "page-linked")
{
unread_message.push(list[i]);
}
}
if(unread_message.length != 0)
{
mascot.ShowMessage("<a href='/wiki/"+ encodeURIComponent(unread_message[unread_message.length - 1].title.full) + "'>알림이 도착했어요</a>");
}
else
{
}
});
};
temp();
setInterval(temp,1000 * 20);
};