Version Description
Download this release
Release Info
Developer | mani_monaj |
Plugin | ![]() |
Version | 3.5 |
Comparing to | |
See all releases |
Version 3.5
- farsitype.js +378 -0
- mps-jalalidate35.php +1812 -0
- readme.txt +46 -0
- screenshot-1.png +0 -0
- wp-fa-logo.png +0 -0
farsitype.js
ADDED
@@ -0,0 +1,378 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
FARSI TYPE
|
3 |
+
This script developed to ease typing Farsi(Persian) in web forms where there is no Farsi Keyboard installed on a PC.Works with Internet Explorer, Gecko family (Mozilla/FireFox) and Opera.
|
4 |
+
|
5 |
+
Author : Kaveh Ahmadi
|
6 |
+
Author Contact : kaveh@ashoob.net
|
7 |
+
Version : 1.3.0
|
8 |
+
|
9 |
+
Copyright 2002-2007 Kaveh Ahmadi (email : kaveh@ashoob.net)
|
10 |
+
Special Thanks to Gonahkar (gonahkar.com), Mani Monajjemi (manionline.org) and Mazdak Aghakhani (mazdakam.com) for their support and their great ideas!
|
11 |
+
|
12 |
+
This program is free software; you can redistribute it and/or modify
|
13 |
+
it under the terms of the GNU General Public License as published by
|
14 |
+
the Free Software Foundation; either version 2 of the License, or
|
15 |
+
(at your option) any later version.
|
16 |
+
|
17 |
+
This program is distributed in the hope that it will be useful,
|
18 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
19 |
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
20 |
+
GNU General Public License for more details.
|
21 |
+
|
22 |
+
You should have received a copy of the GNU General Public License
|
23 |
+
along with this program; if not, write to the Free Software
|
24 |
+
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
25 |
+
|
26 |
+
> > > USAGE < < <
|
27 |
+
|
28 |
+
Step 0. Customize settings
|
29 |
+
Set ShowChangeLangButton, KeyBoardError, ChangeDir variables values with your own opinon!
|
30 |
+
ShowChangeLangButton // Show Change Language Button --> 0: Show / 1: Visible
|
31 |
+
KeyBoardError // the action when useres keyboard is farsi --> 0: Disable FarsiType / 1: Show Error
|
32 |
+
ChangeDir // change the input or textarea direction when language is change --> 0: No Action / 1: Change direction / 2: set Rtl/Ltr button
|
33 |
+
|
34 |
+
Step 1.
|
35 |
+
Include the "farsitype.js" file to your HTML <head> part (before </head>):
|
36 |
+
<script language="javascript" src="farsitype.js" type="text/javascript"></script>
|
37 |
+
|
38 |
+
Step 2.
|
39 |
+
Add "lang" attribute with value "fa" to any <input> or <textarea> tag which you want to have FarsiType enabled!
|
40 |
+
<input type="text" name="whatever" lang="fa" />
|
41 |
+
or
|
42 |
+
<textarea cols="30" rows="7" name="whatever" lang="fa"></textarea>
|
43 |
+
[Magic : only the lang="fa" is important for FarsiType!]
|
44 |
+
[As ver 1.2.1 , you can also use lang="fa-IR"]
|
45 |
+
|
46 |
+
Step 3. (OPTIONAL)
|
47 |
+
You can also add an enable/disable checkbox beside your form.
|
48 |
+
<input type="checkbox" id="disableFarsiType" />
|
49 |
+
|
50 |
+
Note : You can use F8 keybord button to switch languages instead of using the change language button.
|
51 |
+
|
52 |
+
> > > CHANFGELOG < < <
|
53 |
+
|
54 |
+
V 1.3.0
|
55 |
+
- Optional controls is added for users
|
56 |
+
|
57 |
+
V 1.2.1
|
58 |
+
- Comments clean up
|
59 |
+
- GPL Licence added
|
60 |
+
- lang = 'fa-IR' support added
|
61 |
+
|
62 |
+
V 1.2
|
63 |
+
- Opera full support added
|
64 |
+
|
65 |
+
V 1.1
|
66 |
+
- Some little Gecko fixes
|
67 |
+
|
68 |
+
> > > EXTRA < < <
|
69 |
+
Mozilla solving problem idea is from: http://forum.persiantools.com/showthread.php?p=667351
|
70 |
+
Auto Creation idea is from: http://ip.webkar.com/forums/index.php?act=ST&f=19&t=99
|
71 |
+
with a look at behdad.org/editor and blogfa.com farsi solutions!
|
72 |
+
*/
|
73 |
+
|
74 |
+
// insertAdjacentHTML(), insertAdjacentText() and insertAdjacentElement() for Netscape 6/Mozilla by Thor Larholm me@jscript.dk
|
75 |
+
if(typeof HTMLElement!="undefined" && ! HTMLElement.prototype.insertAdjacentElement) {
|
76 |
+
HTMLElement.prototype.insertAdjacentElement = function (where,parsedNode) {
|
77 |
+
switch (where) {
|
78 |
+
case 'beforeBegin':
|
79 |
+
this.parentNode.insertBefore(parsedNode,this)
|
80 |
+
break;
|
81 |
+
case 'afterBegin':
|
82 |
+
this.insertBefore(parsedNode,this.firstChild);
|
83 |
+
break;
|
84 |
+
case 'beforeEnd':
|
85 |
+
this.appendChild(parsedNode);
|
86 |
+
break;
|
87 |
+
case 'afterEnd':
|
88 |
+
if (this.nextSibling)
|
89 |
+
this.parentNode.insertBefore(parsedNode,this.nextSibling);
|
90 |
+
else
|
91 |
+
this.parentNode.appendChild(parsedNode);
|
92 |
+
break;
|
93 |
+
}
|
94 |
+
}
|
95 |
+
|
96 |
+
HTMLElement.prototype.insertAdjacentHTML = function (where,htmlStr) {
|
97 |
+
var r = this.ownerDocument.createRange();
|
98 |
+
r.setStartBefore(this);
|
99 |
+
var parsedHTML = r.createContextualFragment(htmlStr);
|
100 |
+
this.insertAdjacentElement(where,parsedHTML)
|
101 |
+
}
|
102 |
+
|
103 |
+
HTMLElement.prototype.insertAdjacentText = function (where,txtStr) {
|
104 |
+
var parsedText = document.createTextNode(txtStr)
|
105 |
+
this.insertAdjacentElement(where,parsedText)
|
106 |
+
}
|
107 |
+
}
|
108 |
+
|
109 |
+
var FarsiType =
|
110 |
+
{
|
111 |
+
// Farsi keyboard map based on Iran Popular Keyboard Layout
|
112 |
+
farsiKey : [
|
113 |
+
32 , 33 , 34 , 35 , 36 , 37 , 1548 , 1711 ,
|
114 |
+
41 , 40 , 215 , 43 , 1608 , 45 , 46 , 47 ,
|
115 |
+
48 , 49 , 50 , 51 , 52 , 53 , 54 , 55 ,
|
116 |
+
56 , 57 , 58 , 1705 , 44 , 61 , 46 , 1567 ,
|
117 |
+
64 , 1616 , 1584 , 125 , 1609 , 1615 , 1609 , 1604 ,
|
118 |
+
1570 , 247 , 1600 , 1548 , 47 , 8217 , 1583 , 215 ,
|
119 |
+
1563 , 1614 , 1569 , 1613 , 1601 , 8216 , 123 , 1611 ,
|
120 |
+
1618 , 1573 , 126 , 1580 , 1688 , 1670 , 94 , 95 ,
|
121 |
+
1662 , 1588 , 1584 , 1586 , 1740 , 1579 , 1576 , 1604 ,
|
122 |
+
1575 , 1607 , 1578 , 1606 , 1605 , 1574 , 1583 , 1582 ,
|
123 |
+
1581 , 1590 , 1602 , 1587 , 1601 , 1593 , 1585 , 1589 ,
|
124 |
+
1591 , 1594 , 1592 , 60 , 124 , 62 , 1617
|
125 |
+
],
|
126 |
+
Type : true,
|
127 |
+
counter : 0,
|
128 |
+
ShowChangeLangButton : 1, // 0: Show / 1: Visible
|
129 |
+
KeyBoardError : 0, // 0: Disable FarsiType / 1: Show Error
|
130 |
+
ChangeDir : 2 // 0: No Action / 1: Do Rtl-Ltr / 2: Rtl-Ltr button
|
131 |
+
}
|
132 |
+
|
133 |
+
FarsiType.enable_disable = function(Dis) {
|
134 |
+
var invis, obj;
|
135 |
+
|
136 |
+
if (!Dis.checked) {
|
137 |
+
FarsiType.Type = true;
|
138 |
+
disable = false;
|
139 |
+
color = 'darkblue';
|
140 |
+
}
|
141 |
+
else {
|
142 |
+
FarsiType.Type = false;
|
143 |
+
disable = true;
|
144 |
+
color = '#ECE9D8';
|
145 |
+
}
|
146 |
+
|
147 |
+
if (FarsiType.ShowChangeLangButton == 1) {
|
148 |
+
for (var i=1; i<= FarsiType.counter; i++) {
|
149 |
+
obj = document.getElementById('FarsiType_button_' + i);
|
150 |
+
obj.disabled = disable;
|
151 |
+
obj.style.backgroundColor = color;
|
152 |
+
}
|
153 |
+
}
|
154 |
+
}
|
155 |
+
|
156 |
+
FarsiType.Disable = function(){
|
157 |
+
FarsiType.Type = false;
|
158 |
+
var Dis = document.getElementById('disableFarsiType')
|
159 |
+
if (Dis != null) {
|
160 |
+
Dis.checked = true;
|
161 |
+
}
|
162 |
+
if (FarsiType.ShowChangeLangButton == 1) {
|
163 |
+
for (var i=1; i<= FarsiType.counter; i++) {
|
164 |
+
obj = document.getElementById('FarsiType_button_' + i);
|
165 |
+
obj.disabled = true;
|
166 |
+
obj.style.backgroundColor = '#ECE9D8';
|
167 |
+
}
|
168 |
+
}
|
169 |
+
}
|
170 |
+
|
171 |
+
FarsiType.init = function() {
|
172 |
+
|
173 |
+
var Inputs = document.getElementsByTagName('INPUT');
|
174 |
+
for (var i=0; i<Inputs.length; i++) {
|
175 |
+
if (Inputs[i].type.toLowerCase() == 'text' && (Inputs[i].lang.toLowerCase() == 'fa' || Inputs[i].lang.toLowerCase() == 'fa-ir')) {
|
176 |
+
FarsiType.counter++;
|
177 |
+
new FarsiType.KeyObject(Inputs[i], FarsiType.counter);
|
178 |
+
}
|
179 |
+
}
|
180 |
+
|
181 |
+
var Areas = document.getElementsByTagName('TEXTAREA');
|
182 |
+
for (var i=0; i<Areas.length; i++) {
|
183 |
+
if (Areas[i].lang.toLowerCase() == 'fa' || Areas[i].lang.toLowerCase() == 'fa-ir') {
|
184 |
+
FarsiType.counter++;
|
185 |
+
new FarsiType.KeyObject(Areas[i], FarsiType.counter);
|
186 |
+
}
|
187 |
+
}
|
188 |
+
|
189 |
+
var Dis = document.getElementById('disableFarsiType')
|
190 |
+
if (Dis != null) {
|
191 |
+
FarsiType.enable_disable (Dis);
|
192 |
+
Dis.onclick = new Function( "FarsiType.enable_disable (this);" )
|
193 |
+
}
|
194 |
+
}
|
195 |
+
|
196 |
+
FarsiType.KeyObject = function(z,x) {
|
197 |
+
|
198 |
+
GenerateStr = "";
|
199 |
+
if (FarsiType.ShowChangeLangButton == 1) {
|
200 |
+
GenerateStr = GenerateStr + "<input type='button' id=FarsiType_button_"+x+" style='border: none; background-color:darkblue; font-size:11; color:white; font-family:tahoma; padding: 1px; margin: 1px; width: auto; height: auto;' value='FA' /> ";
|
201 |
+
}
|
202 |
+
if (FarsiType.ChangeDir == 2) {
|
203 |
+
GenerateStr = GenerateStr + "<input type='button' id=FarsiType_ChangeDir_"+x+" style='border: none; background-color:darkblue; font-size:11; color:white; font-family:tahoma; padding: 1px; margin: 1px; width: auto; height: auto;' value='RTL' />"
|
204 |
+
}
|
205 |
+
z.insertAdjacentHTML("afterEnd", GenerateStr);
|
206 |
+
|
207 |
+
if (FarsiType.ShowChangeLangButton == 1) {
|
208 |
+
z.bottelm = document.getElementById ('FarsiType_button_' + x);
|
209 |
+
z.bottelm.title = 'Change lang to english';
|
210 |
+
}
|
211 |
+
if (FarsiType.ChangeDir == 2) {
|
212 |
+
z.Direlm = document.getElementById ('FarsiType_ChangeDir_' + x);
|
213 |
+
}
|
214 |
+
|
215 |
+
z.farsi = true;
|
216 |
+
z.dir = "rtl";
|
217 |
+
z.align = "right";
|
218 |
+
|
219 |
+
z.style.textAlign = z.align;
|
220 |
+
z.style.direction = z.dir;
|
221 |
+
|
222 |
+
setSelectionRange = function(input, selectionStart, selectionEnd) {
|
223 |
+
input.focus()
|
224 |
+
input.setSelectionRange(selectionStart, selectionEnd)
|
225 |
+
}
|
226 |
+
|
227 |
+
ChangeDirection = function(e) {
|
228 |
+
if (z.dir == "rtl") {
|
229 |
+
z.dir = "ltr";
|
230 |
+
z.align = "left";
|
231 |
+
z.Direlm.value = "LTR";
|
232 |
+
z.Direlm.title = "Change direction: Right to Left"
|
233 |
+
}
|
234 |
+
else {
|
235 |
+
z.dir = "rtl";
|
236 |
+
z.align = "right";
|
237 |
+
z.Direlm.value = "RTL";
|
238 |
+
z.Direlm.title = "Change direction: Left to Right"
|
239 |
+
}
|
240 |
+
z.style.textAlign = z.align;
|
241 |
+
z.style.direction = z.dir;
|
242 |
+
z.focus();
|
243 |
+
}
|
244 |
+
|
245 |
+
ChangeLang = function(e) {
|
246 |
+
if (e == null) e = window.event;
|
247 |
+
var key = e.keyCode ? e.keyCode : e.charCode;
|
248 |
+
|
249 |
+
if (FarsiType.Type) {
|
250 |
+
if (key==119 || !key) {
|
251 |
+
if (z.farsi) {
|
252 |
+
z.farsi = false;
|
253 |
+
if (FarsiType.ShowChangeLangButton == 1) {
|
254 |
+
z.bottelm.value = "EN";
|
255 |
+
z.bottelm.title = 'Change lang to persian';
|
256 |
+
}
|
257 |
+
if (FarsiType.ChangeDir == 1) {
|
258 |
+
z.style.textAlign = "left";
|
259 |
+
z.style.direction = "ltr";
|
260 |
+
}
|
261 |
+
}
|
262 |
+
else {
|
263 |
+
z.farsi = true;
|
264 |
+
if (FarsiType.ShowChangeLangButton == 1) {
|
265 |
+
z.bottelm.value = "FA";
|
266 |
+
z.bottelm.title = 'Change lang to english';
|
267 |
+
}
|
268 |
+
if (FarsiType.ChangeDir == 1) {
|
269 |
+
z.style.textAlign = "right";
|
270 |
+
z.style.direction = "rtl";
|
271 |
+
}
|
272 |
+
}
|
273 |
+
z.focus();
|
274 |
+
}
|
275 |
+
}
|
276 |
+
}
|
277 |
+
|
278 |
+
Convert = function(e) {
|
279 |
+
|
280 |
+
if (FarsiType.Type) {
|
281 |
+
|
282 |
+
if (e == null) e = window.event;
|
283 |
+
eElement = (e.srcElement) ? e.srcElement : e.originalTarget;
|
284 |
+
|
285 |
+
var key = e.keyCode ? e.keyCode : e.charCode;
|
286 |
+
if (navigator.userAgent.toLowerCase().indexOf('opera')>-1) key = e.which;
|
287 |
+
|
288 |
+
if ( (e.charCode != null) && (e.charCode != key) ) return;
|
289 |
+
if (e.ctrlKey || e.altKey || e.metaKey || key == 13 || key == 27 || key == 8) return;
|
290 |
+
|
291 |
+
//check windows lang
|
292 |
+
if (key>128){
|
293 |
+
if (FarsiType.KeyBoardError == 0) {
|
294 |
+
FarsiType.Disable();
|
295 |
+
}
|
296 |
+
else {
|
297 |
+
alert("Please change your windows language to English");
|
298 |
+
return false;
|
299 |
+
}
|
300 |
+
}
|
301 |
+
|
302 |
+
// if Farsi
|
303 |
+
if (z.farsi && key > 31 && key < 128) {
|
304 |
+
|
305 |
+
//check CpasLock
|
306 |
+
if ( (key >= 65 && key <= 90) && !e.shiftKey ) {
|
307 |
+
alert("Caps Lock is On. To prevent entering farsi incorrectly, you should press Caps Lock to turn it off.");
|
308 |
+
return false;
|
309 |
+
}
|
310 |
+
else if ( (key >= 97 && key <= 122 ) && e.shiftKey ) {
|
311 |
+
alert("Caps Lock is On. To prevent entering farsi incorrectly, you should press Caps Lock to turn it off.");
|
312 |
+
return false;
|
313 |
+
}
|
314 |
+
|
315 |
+
// Shift-space -> ZWNJ
|
316 |
+
if (key == 32 && e.shiftKey)
|
317 |
+
key = 8204;
|
318 |
+
else
|
319 |
+
key = FarsiType.farsiKey[key-32];
|
320 |
+
|
321 |
+
// to farsi
|
322 |
+
try {
|
323 |
+
// IE
|
324 |
+
e.keyCode = key
|
325 |
+
}
|
326 |
+
catch(error) {
|
327 |
+
try {
|
328 |
+
// Gecko before
|
329 |
+
e.initKeyEvent("keypress", true, true, document.defaultView, false, false, true, false, 0, key, eElement);
|
330 |
+
}
|
331 |
+
catch(error) {
|
332 |
+
try {
|
333 |
+
// Gecko & Opera now
|
334 |
+
var nScrollTop = eElement.scrollTop;
|
335 |
+
var nScrollLeft = eElement.scrollLeft;
|
336 |
+
var nScrollWidth = eElement.scrollWidth;
|
337 |
+
|
338 |
+
replaceString = String.fromCharCode(key);
|
339 |
+
|
340 |
+
var selectionStart = eElement.selectionStart;
|
341 |
+
var selectionEnd = eElement.selectionEnd;
|
342 |
+
eElement.value = eElement.value.substring(0, selectionStart) + replaceString + eElement.value.substring(selectionEnd);
|
343 |
+
setSelectionRange(eElement, selectionStart + replaceString.length, selectionStart + replaceString.length);
|
344 |
+
|
345 |
+
var nW = eElement.scrollWidth - nScrollWidth;
|
346 |
+
if (eElement.scrollTop == 0) { eElement.scrollTop = nScrollTop }
|
347 |
+
|
348 |
+
e.preventDefault()
|
349 |
+
}
|
350 |
+
catch(error) {
|
351 |
+
// else no farsi type!
|
352 |
+
alert('Sorry! no FarsiType support')
|
353 |
+
FarsiType.Disable();
|
354 |
+
var Dis = document.getElementById('disableFarsiType')
|
355 |
+
if (Dis != null) {
|
356 |
+
Dis.disabled = true;
|
357 |
+
}
|
358 |
+
return false;
|
359 |
+
}
|
360 |
+
}
|
361 |
+
}
|
362 |
+
}
|
363 |
+
}
|
364 |
+
return true;
|
365 |
+
}
|
366 |
+
|
367 |
+
if (FarsiType.ShowChangeLangButton == 1) { z.bottelm.onmouseup = ChangeLang; }
|
368 |
+
if (FarsiType.ChangeDir == 2) { z.Direlm.onmouseup = ChangeDirection; }
|
369 |
+
z.onkeydown = ChangeLang;
|
370 |
+
z.onkeypress = Convert;
|
371 |
+
}
|
372 |
+
|
373 |
+
if (window.attachEvent) {
|
374 |
+
window.attachEvent('onload', FarsiType.init)
|
375 |
+
}
|
376 |
+
else if (window.addEventListener) {
|
377 |
+
window.addEventListener('load', FarsiType.init, false)
|
378 |
+
}
|
mps-jalalidate35.php
ADDED
@@ -0,0 +1,1812 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Plugin Name: Full Jalali Date & Persian Support Package for Wordpress
|
4 |
+
Plugin URI: http://www.wp-persian.com/wp-jalali/
|
5 |
+
Description: Full Jalali Date and Persian(Farsi) Support Package for wordpress, Full posts' and comments' dates convertion , Jalali Archive , Magic(Jalali/Gregorian) Calendar and Jalali/Gregorian Compaitables Permalinks, TinyMCE RTL/LTR activation, TinyMCE Persian Improvement, Cross browser Perisan keyboard support, Jalali Archive/Calendar widgets and Persian numbers, Great tool for Persian(Iranian) Users of WordPress, part of <a href="http://wp-persian.com" title="پروژه وردپرس فارسی">Persian Wordpress Project</a>.
|
6 |
+
Version: 3.5
|
7 |
+
Author: Vali Allah(Mani) Monajjemi
|
8 |
+
Author URI: http://www.manionline.org/
|
9 |
+
*/
|
10 |
+
|
11 |
+
/* Copyright 2005-2007 Vali Allah[Mani] Monajjemi (email : mani.monajjemi@gmail.com)
|
12 |
+
|
13 |
+
This program is free software; you can redistribute it and/or modify
|
14 |
+
it under the terms of the GNU General Public License as published by
|
15 |
+
the Free Software Foundation; either version 2 of the License, or
|
16 |
+
(at your option) any later version.
|
17 |
+
|
18 |
+
This program is distributed in the hope that it will be useful,
|
19 |
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
20 |
|