PluginProbe ʕ •ᴥ•ʔ
پارسی دیت – Parsi Date / 1.1
پارسی دیت – Parsi Date v1.1
6.1 5.1.6 5.1.7 5.1.8 5.1.8.2 6.0 trunk 1.0 1.1 1.2 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 2.0.0-alpha 2.1 2.1.1 2.1.2 2.1.3 2.1.5 2.1.6 2.1.7 2.2.0 2.2.1 2.2.2 2.2.3 2.3.0.1 2.3.0.2 2.3.1 2.3.2 2.3.3 2.3.4 3.0.1 3.0.2 3.0.3 4.0.0 4.0.1 4.0.2 5.1.0 5.1.1 5.1.2 5.1.3 5.1.4 5.1.5
wp-parsidate / js / parsidate.js
wp-parsidate / js Last commit date
index.php 12 years ago parsidate.js 12 years ago
parsidate.js
132 lines
1 jQuery(document).ready(function(){
2
3 function IsLeapYear(year){if(((year%4)==0&&(year%100)!=0)||((year%400)==0)&&(year%100)==0)return true;else return false;}
4 function persian_to_gregorian(jy,jm,jd){var gd;j_days_sum_month=[0,0,31,62,93,124,155,186,216,246,276,306,336,365];g_days_in_month=[31,28,31,30,31,30,31,31,30,31,30,31];g_days_leap_month=[31,29,31,30,31,30,31,31,30,31,30,31];gd=j_days_sum_month[parseInt(jm)]+parseInt(jd);gy=parseInt(jy)+621;if(gd>286)gy++;if(IsLeapYear(gy-1)&&286<gd)gd--;if(gd>286)gd-=286;else gd+=79;if(IsLeapYear(gy)){for(gm=0;gd>g_days_leap_month[gm];gm++){gd-=g_days_leap_month[gm];}} else{for(gm=0;gd>g_days_in_month[gm];gm++)gd-=g_days_in_month[gm];}gm++;if(gm<10)gm='0'+gm;return [gy,gm,gd];}
5 function gregorian_to_persian(gy, gm, gd){j_days_in_month = [31,31,31,31,31,31,30,30,30,30,30,29];g_days_sum_month = [0,0,31,59,90,120,151,181,212,243,273,304,334,365];dayofyear = g_days_sum_month[parseInt(gm)] + parseInt(gd);leab=IsLeapYear(gy);leap=IsLeapYear(gy-1);if (dayofyear > 79){jd =(leab?dayofyear - 78:dayofyear - 79);jy = gy - 621;for (i = 0; jd > j_days_in_month[i]; i++)jd -= j_days_in_month[i];}else{jd =((leap || (leab && gm>2))?287 + dayofyear:286 + dayofyear);jy = gy - 622;if (leap == 0 && jd == 366)return [jy,12,30];for (i = 0; jd > j_days_in_month[i]; i++)jd -= j_days_in_month[i];}jm = ++i;jm=(jm<10?jm='0'+jm:jm);return [jy,jm,jd];}
6
7 var persian_month_names =['','فروردین','اردیبهشت','خرداد','تیر','�
8 رداد','شهریور','�
9 هر','آبان','آذر','دی','به�
10 ن','اسفند'];
11
12
13 /*
14 * Edit inline
15 */
16 function create_stampdiv(year,mon,day,hour,minu)
17 {
18 div='<div class="timestamp-wrap persian">'+
19 '<select id="mma" name="mma">';
20 for(var i=1;i<13;i++)
21 {
22 if(i==mon)
23 div+='<option value="'+i+'" selected="selected">'+persian_month_names[i]+'</option>';
24 else
25 div+='<option value="'+i+'">'+persian_month_names[i]+'</option>';
26 }
27 div+='</select>'+
28 '<input type="text" id="jja" name="jja" value="'+day+'" size="2" maxlength="2" autocomplete="off" />,'+
29 '<input type="text" id="aaa" name="aaa" value="'+year+'" size="4" maxlength="4" autocomplete="off" /> @'+
30 '<input type="text" id="hha" name="hha" value="'+hour+'" size="2" maxlength="2" autocomplete="off" /> : '+
31 '<input type="text" id="mna" name="mna" value="'+minu+'" size="2" maxlength="2" autocomplete="off" />'+
32 '</div>';
33 return div;
34 }
35
36 jQuery('a.edit-timestamp').on('click',function()
37 {
38 jQuery('.persian').remove();
39 var date = gregorian_to_persian(jQuery('#aa').val(),jQuery('#mm').val(),jQuery('#jj').val());
40 var div = create_stampdiv(date[0],date[1],date[2],jQuery('#hh').val(),jQuery('#mn').val());
41 jQuery('#timestampdiv').prepend(div);
42 jQuery('#timestampdiv .timestamp-wrap:eq(1)').hide();
43 });
44
45 jQuery('#the-list').on('click','.editinline',function()
46 {
47 var tr=jQuery(this).closest('td');
48 var year=tr.find('.aa').html();
49 if(year>1400)
50 {
51 var month=tr.find('.mm').html();
52 var day=tr.find('.jj').html();
53 var hour=tr.find('.hh').html();
54 var minu=tr.find('.mn').html();
55 var date=gregorian_to_persian(year,month,day);
56 jQuery('.persian').remove();
57 jQuery('.inline-edit-date').prepend(create_stampdiv(date[0],date[1],date[2],hour,minu));
58 jQuery('.inline-edit-date div:eq(1)').hide();
59 }
60 });
61
62
63 jQuery('#timestampdiv,.inline-edit-date').on('keyup','#hha',function(e)
64 {
65 jQuery('input[name=hh]').val(jQuery(this).val());
66 });
67
68 jQuery('#timestampdiv,.inline-edit-date').on('keyup','#mna',function(e)
69 {
70 jQuery('input[name=mn]').val(jQuery(this).val());
71 });
72
73 jQuery('#timestampdiv,.inline-edit-date').on('keyup','#aaa , #jja',function(e)
74 {
75 year = jQuery('#aaa').val();
76 mon = jQuery('#mma').val();
77 day = jQuery('#jja').val();
78 date=persian_to_gregorian(year,mon,day);
79 jQuery('input[name=aa]').val(date[0]);
80 jQuery('select[name=mm]').val(date[1]);
81 jQuery('input[name=jj]').val(date[2]);
82 });
83
84 jQuery('#timestampdiv,.inline-edit-date').on('change','#mma',function()
85 {
86 year = jQuery('#aaa').val();
87 mon = jQuery('#mma').val();
88 day = jQuery('#jja').val();
89 date=persian_to_gregorian(year,mon,day);
90 jQuery('input[name=aa]').val(date[0]);
91 jQuery('select[name=mm]').val(date[1]);
92 jQuery('input[name=jj]').val(date[2]);
93 });
94
95
96 /*
97 * Filter on post screen dates
98 */
99 jQuery('select[name=m]').hide()
100 var timer;
101
102 function change_date()
103 {
104 old=jQuery('#timestamp b').text();
105 var info=jQuery('#mma option:selected').text()+' '+jQuery('#jja').val()+', '+jQuery('#aaa').val()+'@ '+jQuery('#hha').val()+':'+jQuery('#mna').val();
106 info=info.replace(/\d+/g, function(digit) {
107 var ret = '';
108 for (var i = 0, len = digit.length; i < len; i++)
109 {
110 ret += String.fromCharCode(digit.charCodeAt(i) + 1728);
111 }
112 return ret;
113 });
114 if(old!=info)
115 {
116 jQuery('#timestamp b').html(info);
117 clearInterval(timer);
118 }
119 }
120
121 jQuery('#timestampdiv').on('keypress',function(e)
122 {
123 if(e.which==13)
124 timer=setInterval(function(){change_date();},50);
125 });
126
127 jQuery('.save-timestamp , .cancel-timestamp , #publish').on('click',function()
128 {
129 if(jQuery('#aaa').length)
130 timer=setInterval(function(){change_date();},50);
131 });
132 });