PluginProbe ʕ •ᴥ•ʔ
پارسی دیت – Parsi Date / 2.3.2
پارسی دیت – Parsi Date v2.3.2
6.2.1 6.2 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 / assets / js / admin.js
wp-parsidate / assets / js Last commit date
admin.js 9 years ago
admin.js
165 lines
1 jQuery(document).ready(function () {
2 var persian_month_names = ['', 'فروردین', 'اردیبهشت', 'خرداد', 'تیر', '�
3 رداد', 'شهریور', '�
4 هر', 'آبان', 'آذر', 'دی', 'به�
5 ن', 'اسفند'];
6
7 jQuery('.wp-editor-wrap.html-active #content').css("direction", "ltr");
8
9 function IsLeapYear(year) {
10 if (((year % 4) === 0 && (year % 100) !== 0) || (year % 400) === 0 && (year % 100) === 0)
11 return true;
12 else
13 return false;
14 }
15
16 function persian_to_gregorian(jy, jm, jd) {
17 var j_days_sum_month = [0, 0, 31, 62, 93, 124, 155, 186, 216, 246, 276, 306, 336, 365];
18 var g_days_in_month = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
19 var g_days_leap_month = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
20 var gd = j_days_sum_month[parseInt(jm)] + parseInt(jd), gm, gy = parseInt(jy) + 621;
21 if (gd > 286) gy++;
22 if (IsLeapYear(gy - 1) && 286 < gd) gd--;
23 if (gd > 286) gd -= 286; else gd += 79;
24 if (IsLeapYear(gy)) {
25 for (gm = 0; gd > g_days_leap_month[gm]; gm++) {
26 gd -= g_days_leap_month[gm];
27 }
28 } else {
29 for (gm = 0; gd > g_days_in_month[gm]; gm++)gd -= g_days_in_month[gm];
30 }
31 gm++;
32 if (gm < 10) gm = '0' + gm;
33 return [gy, gm, gd];
34 }
35
36 function gregorian_to_persian(gy, gm, gd) {
37 var j_days_in_month = [31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29];
38 var g_days_sum_month = [0, 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];
39 var day_of_year = g_days_sum_month[parseInt(gm)] + parseInt(gd);
40 var leab = IsLeapYear(gy);
41 var leap = IsLeapYear(gy - 1);
42 var jd, jm, jy, i;
43 if (day_of_year > 79) {
44 jd = (leab ? day_of_year - 78 : day_of_year - 79);
45 jy = gy - 621;
46 for (i = 0; jd > j_days_in_month[i]; i++)jd -= j_days_in_month[i];
47 } else {
48 jd = ((leap || (leab && gm > 2)) ? 287 + day_of_year : 286 + day_of_year);
49 jy = gy - 622;
50 if (leap === false && jd === 366)return [jy, 12, 30];
51 for (i = 0; jd > j_days_in_month[i]; i++)jd -= j_days_in_month[i];
52 }
53 jm = ++i;
54 jm = (jm < 10 ? jm = '0' + jm : jm);
55 return [jy, jm, jd];
56 }
57
58 /*
59 * Edit inline
60 */
61 function create_stampdiv(year, mon, day, hour, minu) {
62 var div = '<div class="timestamp-wrap persian">' +
63 '<select id="mma" name="mma">';
64 for (var i = 1; i < 13; i++) {
65 if (i === parseInt(mon))
66 div += '<option value="' + i + '" selected="selected">' + persian_month_names[i] + '</option>';
67 else
68 div += '<option value="' + i + '">' + persian_month_names[i] + '</option>';
69 }
70 div += '</select>' +
71 '<input type="text" id="jja" name="jja" value="' + day + '" size="2" maxlength="2" autocomplete="off" />,' +
72 '<input type="text" id="aaa" name="aaa" value="' + year + '" size="4" maxlength="4" autocomplete="off" /> @' +
73 '<input type="text" id="hha" name="hha" value="' + hour + '" size="2" maxlength="2" autocomplete="off" /> : ' +
74 '<input type="text" id="mna" name="mna" value="' + minu + '" size="2" maxlength="2" autocomplete="off" />' +
75 '</div>';
76 return div;
77 }
78
79 jQuery('a.edit-timestamp').on('click', function () {
80 jQuery('.persian').remove();
81 var date = gregorian_to_persian(jQuery('#aa').val(), jQuery('#mm').val(), jQuery('#jj').val());
82 var div = create_stampdiv(date[0], date[1], date[2], jQuery('#hh').val(), jQuery('#mn').val());
83 jQuery('#timestampdiv').prepend(div);
84 jQuery('#timestampdiv .timestamp-wrap:eq(1)').hide();
85 });
86
87 jQuery('#the-list').on('click', '.editinline', function () {
88 var tr = jQuery(this).closest('td');
89 var year = tr.find('.aa').html();
90 if (year > 1400) {
91 var month = tr.find('.mm').html();
92 var day = tr.find('.jj').html();
93 var hour = tr.find('.hh').html();
94 var minu = tr.find('.mn').html();
95 var date = gregorian_to_persian(year, month, day);
96 jQuery('.persian').remove();
97 jQuery('.inline-edit-date').prepend(create_stampdiv(date[0], date[1], date[2], hour, minu));
98 jQuery('.inline-edit-date div:eq(1)').hide();
99 }
100 });
101
102
103 jQuery('#timestampdiv,.inline-edit-date').on('keyup', '#hha', function () {
104 jQuery('input[name=hh]').val(jQuery(this).val());
105
106 }).on('keyup', '#mna', function () {
107 jQuery('input[name=mn]').val(jQuery(this).val());
108
109 }).on('keyup', '#aaa , #jja', function () {
110 var year = jQuery('#aaa').val();
111 var mon = jQuery('#mma').val();
112 var day = jQuery('#jja').val();
113 date = persian_to_gregorian(year, mon, day);
114 jQuery('input[name=aa]').val(date[0]);
115 jQuery('select[name=mm]').val(date[1]);
116 jQuery('input[name=jj]').val(date[2]);
117
118 }).on('change', '#mma', function () {
119 var year = jQuery('#aaa').val();
120 var mon = jQuery('#mma').val();
121 var day = jQuery('#jja').val();
122 date = persian_to_gregorian(year, mon, day);
123 jQuery('input[name=aa]').val(date[0]);
124 jQuery('select[name=mm]').val(date[1]);
125 jQuery('input[name=jj]').val(date[2]);
126 });
127
128
129 /*
130 * Filter on post screen dates
131 */
132 jQuery('select[name=m]').hide()
133 var timer;
134
135 function change_date() {
136 var old = jQuery('#timestamp b').text();
137 var info = jQuery('#mma option:selected').text() + ' ' + jQuery('#jja').val() + ', ' + jQuery('#aaa').val() + '@ ' + jQuery('#hha').val() + ':' + jQuery('#mna').val();
138 info = info.replace(/\d+/g, function (digit) {
139 var ret = '';
140 for (var i = 0, len = digit.length; i < len; i++) {
141 ret += String.fromCharCode(digit.charCodeAt(i) + 1728);
142 }
143 return ret;
144 });
145 if (old != info) {
146 jQuery('#timestamp b').html(info);
147 clearInterval(timer);
148 }
149 }
150
151 jQuery('#timestampdiv').on('keypress', function (e) {
152 if (e.which == 13)
153 timer = setInterval(function () {
154 change_date();
155 }, 50);
156 });
157
158 jQuery('.save-timestamp , .cancel-timestamp , #publish').on('click', function () {
159 if (jQuery('#aaa').length)
160 timer = setInterval(function () {
161 change_date();
162 }, 50);
163 });
164 });
165