Advertisement
Guest User

common.js

a guest
Apr 13th, 2014
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // set up the words in your language
  2. var NavigationBarHide = '[ απόκρυψη ]';
  3. var NavigationBarShow = '[ εμφάνιση ]';
  4. var TranslationBarsHide = ' (απόκρυψη όλων)';
  5. var TranslationBarsShow = ' (εμφάνιση όλων)';
  6.  
  7. // set up max count of Navigation Bars on page,
  8. // if there are more, all will be hidden
  9. // NavigationBarShowDefault = 0; // all bars will be hidden
  10. // NavigationBarShowDefault = 1; // on pages with more than 1 bar all bars will be hidden
  11. var NavigationBarShowDefault = 0;
  12.  
  13. //Honor the User Preferences
  14. if (($.cookie('WiktionaryUseJSPreferences') != 'true') || ($.cookie('WiktionaryPreferencesShowNav') != 'true')) {
  15.     NavigationBarShowDefault = 0;
  16. }
  17. else {
  18.     if (wgNamespaceNumber == 0) NavigationBarShowDefault = 999;
  19. }
  20.  
  21. /* </pre>
  22. ===toggleNavigationBar===
  23. <pre> */
  24.  
  25. // shows and hides content and picture (if available) of navigation bars
  26. // Parameters:
  27. //     indexNavigationBar: the index of navigation bar to be toggled
  28. // setToState: toggle, open, close
  29. // childrenAlso: change state of all children as well (if set to 1)
  30. function toggleNavigationBar(indexNavigationBar, setToState, childrenAlso) {
  31.     if (setToState === undefined) {
  32.         setToState = 'toggle';
  33.     }
  34.     if (childrenAlso === undefined) {
  35.         childrenAlso = 0;
  36.     }
  37.     var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
  38.     var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);
  39.     if (!NavFrame || !NavToggle) {
  40.         return false;
  41.     }
  42.     // if shown now
  43.     if ((NavToggle.firstChild.data == NavigationBarHide && setToState == 'toggle') || setToState == 'close') {
  44.         for (var NavChild = NavFrame.firstChild; NavChild; NavChild = NavChild.nextSibling) {
  45.             if (NavChild.className == 'NavPic' || NavChild.className == 'NavContent') {
  46.                 NavChild.style.display = 'none';
  47.             }
  48.         }
  49.         NavToggle.firstChild.data = NavigationBarShow;
  50.         // if hidden now
  51.     }
  52.     else if ((NavToggle.firstChild.data == NavigationBarShow && setToState == 'toggle') || setToState == 'open') {
  53.         for (var NavChild = NavFrame.firstChild; NavChild; NavChild = NavChild.nextSibling) {
  54.             if (NavChild.className == 'NavPic' || NavChild.className == 'NavContent') {
  55.                 NavChild.style.display = 'block';
  56.             }
  57.         }
  58.         NavToggle.firstChild.data = NavigationBarHide;
  59.     }
  60.     if (childrenAlso == 1) {
  61.         var NavFrameDivs = NavFrame.getElementsByTagName('div');
  62.         for (i = 0; i < NavFrameDivs.length; i++) {
  63.             // nested NavFrame
  64.             if (NavFrameDivs[i].className == 'NavFrame') {
  65.                 // get the index of the frame
  66.                 NavFrameDivs[i].id.match(/NavFrame([0-9]+)/);
  67.                 NavFrameDivIndex = RegExp.$1;
  68.                 toggleNavigationBar(NavFrameDivIndex, setToState);
  69.             }
  70.         }
  71.     }
  72. }
  73.  
  74. function toggleTranslationBars(indexTranslationHeader) {
  75.     var TranslationToggle = document.getElementById("TranslationToggle" + indexTranslationHeader);
  76.     if (!TranslationToggle) {
  77.         return false;
  78.     }
  79.     var TranslationBarsState;
  80.  
  81.     // if hidden now
  82.     if (TranslationToggle.firstChild.data == TranslationBarsShow) {
  83.         TranslationToggle.firstChild.data = TranslationBarsHide;
  84.         TranslationBarsState = 'open';
  85.         // if shown now
  86.     }
  87.     else if (TranslationToggle.firstChild.data == TranslationBarsHide) {
  88.         TranslationToggle.firstChild.data = TranslationBarsShow;
  89.         TranslationBarsState = 'close';
  90.     }
  91.     // find the NavBars that are in our translation table... ewww grody hack
  92.     PossibleNavFrame = TranslationToggle; // walk back up the tree looking for a
  93.     // header.. if we hit bodyContent something's wrong
  94.     while (PossibleNavFrame && (!PossibleNavFrame.nodeName.match(/^h[0-9]/i)) && PossibleNavFrame.nodeName != 'bodyContent') {
  95.         PossibleNavFrame = PossibleNavFrame.parentNode;
  96.     }
  97.     if (!PossibleNavFrame || !PossibleNavFrame.nodeName.match(/^h[0-9]/i)) {
  98.         return (-1);
  99.     }
  100.     while (PossibleNavFrame = PossibleNavFrame.nextSibling) {
  101.         // we have "related" translation bars up til a header or end of page
  102.         if (PossibleNavFrame.nodeName.match(/^h[0-9]/i)) return;
  103.  
  104.         if (PossibleNavFrame.className == 'NavFrame' && PossibleNavFrame.innerHTML.indexOf('class="translations"' >= 0)) {
  105.             // get the index of the frame
  106.             PossibleNavFrame.id.match(/NavFrame([0-9]+)/);
  107.             NavFrameDivIndex = RegExp.$1;
  108.             toggleNavigationBar(NavFrameDivIndex, TranslationBarsState, 1);
  109.         }
  110.     }
  111. }
  112.  
  113. /* </pre>
  114. ===createNavigationBarToggleButton===
  115. <pre> */
  116.  
  117. // adds show/hide-button to navigation bars
  118.  
  119. function createNavToggle(navFrame, indexNavigationBar) {
  120.     var navHead, navToggle, navContent;
  121.     for (var j = 0; j < navFrame.childNodes.length; j++) {
  122.         var div = navFrame.childNodes[j];
  123.         switch (div.className) {
  124.         case 'NavHead':
  125.             navHead = div;
  126.             break;
  127.         case 'NavContent':
  128.             navContent = div;
  129.             break;
  130.         }
  131.     }
  132.     if (!navHead || !navContent) return;
  133.     // Step 1, don't react when a subitem is clicked.
  134.     for (var i = 0; i < navHead.childNodes.length; i++) {
  135.         var child = navHead.childNodes[i];
  136.         if (child.nodeName == "A") {
  137.             child.onclick = function(e) {
  138.                 if (e && e.stopPropagation) e.stopPropagation();
  139.                 else window.event.cancelBubble = true;
  140.             };
  141.         }
  142.     }
  143.     // Step 2, toggle visibility when bar is clicked.
  144.     navToggle = document.createElement("a");
  145.     navToggle.className = 'NavToggle';
  146.     navToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
  147.     navToggle.setAttribute('href', 'javascript:void(0)');
  148.  
  149.     var NavToggleText = document.createTextNode('');
  150.     navToggle.appendChild(NavToggleText);
  151.     navHead.appendChild(navToggle);
  152.     navFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
  153.  
  154.     if (navContent.innerHTML.indexOf('class="translations"') == -1 || navContent.innerHTML.indexOf('wiktionary.org') >= 0) {
  155.         navHead.style.cursor = "pointer";
  156.         navToggle.innerHTML = NavigationBarShow;
  157.         navHead.onclick = function() {
  158.             if (navContent.style.display === "block") {
  159.                 navToggle.innerHTML = NavigationBarShow;
  160.                 if (navContent) navContent.style.display = "none";
  161.             }
  162.             else {
  163.                 navToggle.innerHTML = NavigationBarHide;
  164.                 if (navContent) navContent.style.display = "block";
  165.             }
  166.         };
  167.     }
  168. }
  169.  
  170. $(document).ready(function() {
  171.     var divs = $(".NavFrame");
  172.     var navsNum = 0;
  173.  
  174.     for (var i = 0; i < divs.length; i++)
  175.     if (divs[i].className == "NavFrame") createNavToggle(divs[i], ++navsNum);
  176.  
  177.     // if more Navigation Bars found than Default: hide all
  178.     if (NavigationBarShowDefault < navsNum) for (var i = 1; i <= navsNum; i++)
  179.     toggleNavigationBar(i, 'close');
  180. });
  181.  
  182. function createTranslationBarsToggleButton() {
  183.     // only in the main namespace please
  184.     //if (wgNamespaceNumber != 0) return;
  185.  
  186.     var indexTranslationHeader = 0;
  187.     // iterate over all < a >-elements
  188.     for (var i = 0; TranslationsLink = document.getElementsByTagName("a")[i]; i++) {
  189.         // if found a translation header
  190.         if (TranslationsLink.innerHTML.indexOf('Μεταφράσεις') > -1) {
  191.             // count num of tables, if only one in this section don't bother
  192.             TranslationSectionNavFrameCount = 0;
  193.             PossibleNavFrame = TranslationsLink; // walk back the tree looking for a header..
  194.             // if we hit bodyContent something's wrong
  195.             while (PossibleNavFrame && (!PossibleNavFrame.nodeName.match(/^h[0-9]/i)) && PossibleNavFrame.nodeName != 'bodyContent') {
  196.                 PossibleNavFrame = PossibleNavFrame.parentNode;
  197.             }
  198.             // if it's not a header element we probably got some other link, e.g. in the TOC
  199.             if (!PossibleNavFrame || !PossibleNavFrame.nodeName.match(/^h[0-9]/i)) {
  200.                 continue;
  201.             }
  202.             while (PossibleNavFrame = PossibleNavFrame.nextSibling) {
  203.                 // we have "related" translation bars up til a header or end of page
  204.                 if (PossibleNavFrame.nodeName.match(/^h[0-9]/i)) {
  205.                     break;
  206.                 }
  207.                 if (PossibleNavFrame.className == 'NavFrame' && PossibleNavFrame.innerHTML.indexOf('class="translations"' >= 0)) {
  208.                     if (++TranslationSectionNavFrameCount > 1) {
  209.                         break;
  210.                     }
  211.                 }
  212.             }
  213.             if (TranslationSectionNavFrameCount > 1) {
  214.                 indexTranslationHeader++;
  215.                 var TranslationToggle = document.createElement("a");
  216.                 TranslationToggle.className = 'TranslationToggle';
  217.                 TranslationToggle.setAttribute('id', 'TranslationToggle' + indexTranslationHeader);
  218.                 TranslationToggle.setAttribute('href', 'javascript:toggleTranslationBars(' + indexTranslationHeader + ',1);');
  219.                 var TranslationToggleText = document.createTextNode(TranslationBarsHide);
  220.                 TranslationToggle.appendChild(TranslationToggleText);
  221.                 TranslationsLink.parentNode.appendChild(TranslationToggle);
  222.                 // initially set as though closed
  223.                 TranslationToggle.firstChild.data = TranslationBarsShow;
  224.             }
  225.         }
  226.     }
  227. }
  228.  
  229. jQuery(document).ready(createTranslationBarsToggleButton);
  230. // END Dynamic Navigation Bars
  231.  
  232. /* </pre>
  233. === Υποχρεωτική ανακατεύθυνση (doRedirect) ===
  234. <pre> */
  235.  
  236. /* Redirect if a case-insensitive search on an external link is found */
  237. function doRedirect() {
  238.     dym = document.getElementById('did-you-mean')
  239.     if (dym) {
  240.         if ($.cookie('WiktionaryDisableAutoRedirect') != 'true') {
  241.             var dymtarget = dym.firstChild.title;
  242.             var target = dymtarget;
  243.             pagetitle = document.getElementsByTagName('h1').item(0).firstChild.nodeValue;
  244.             if (pagetitle == target) {
  245.                 alert('No looping allowed.');
  246.                 return;
  247.             }
  248.             if (pagetitle.toLowerCase().replace(/[^a-z]/g, "") != target.toLowerCase().replace(/[^a-z]/g, "")) {
  249.                 alert(target + " does not match " + pagetitle);
  250.                 return;
  251.             }
  252.             if (pagetitle.search(/Editing /g) != -1) return;
  253.             pagenamee = pagetitle.replace(/\ /g, "_");
  254.             document.location.replace('//en.wiktionary.org/wiki/Special:Search/' + pagenamee);
  255.         }
  256.     }
  257. }
  258.  
  259. /* </pre>
  260. ===fixEditSectionWikifiedLinks===
  261. <pre> */
  262.  
  263. // edit-section still doesn't return to correct spot if link contains a [[wikified]] term.
  264. function fixEditSectionWikifiedLinks() {
  265.     if (/\.5B/.test(window.location.href)) {
  266.         var url = window.location.href.replace(/.5B.5B:/g, "").
  267.         replace(/.5B/g, "").replace(/.5D/g, "");
  268.         window.location = url;
  269.     }
  270.     //#capiche_and_.7B.7Btemp.7Calternative_spelling_of.7D.7D
  271.     if (/\.7B\.7Btemp\.7C(.*?)\.7D\.7D/.test(window.location.href)) {
  272.         var url = window.location.href.replace(/\.7B\.7Btemp.7C/, ".7B.7B");
  273.         window.location = url;
  274.     }
  275. }
  276.  
  277. /* </pre>
  278. ===Hide "Main Page" heading and several other elements on the Main Page===
  279. <pre> */
  280.  
  281. var mpTitle = "Wiktionary:Main Page";
  282. var isMainPage = (document.title.substr(0, document.title.lastIndexOf(" - ")) == mpTitle);
  283. var isDiff = (document.location.search && (document.location.search.indexOf("diff=") != -1 || document.location.search.indexOf("oldid=") != -1));
  284.  
  285. if (isMainPage && !isDiff) mw.util.addCSS('#lastmod, #siteSub, #contentSub, h1.firstHeading { display: none !important; }');
  286.  
  287. /* </pre>
  288. === Προτιμήσεις χρήστη (πειραματικό) ===
  289. <pre> */
  290.  
  291. // [[User:Connel MacKenzie/custom.js]] - User preferences
  292. // importScript('User:Connel_MacKenzie/custom.js');
  293.  
  294. /* </pre>
  295. === Wiktionary-specific tooltips ===
  296. <pre> */
  297.  
  298. // function wiktHeadingToolTips() {
  299. // }
  300.  
  301.  
  302. /* </pre>
  303. === Ειδικοί χαρακτήρες ===
  304. <pre> */
  305.  
  306. /* add menu for selecting subsets of special characters */
  307. /***** must match MediaWiki:Edittools) *****/
  308. function addCharSubsetMenu() {
  309.     var specialchars = document.getElementById("specialchars");
  310.     if (specialchars) {
  311.         var menu = "<select style=\"display:inline\" onChange=\"chooseCharSubset(selectedIndex)\">";
  312.         menu += "<option>Γενικά πρότυπα</option>";
  313.         menu += "<option>Ελληνικά</option>";
  314.         menu += "<option>Ελληνικά (πολυτονικό)</option>";
  315.         menu += "<option>Ελληνικά (νέα - ΔΦΑ)</option>";
  316.         menu += "<option>ΔΦΑ</option>";
  317.         menu += "<option>Αζερμπαϊτζανικά (Βόρεια)</option>";
  318.         menu += "<option>Αζερμπαϊτζανικά (Νότια, κυριλλικά)</option>";
  319.         menu += "<option>Αζερμπαϊτζανικά (Νότια, λατινικά)</option>";
  320.         menu += "<option>Αλβανικά</option>";
  321.         menu += "<option>Αμχαρικά</option>";
  322.         menu += "<option>Αραβικά</option>";
  323.         menu += "<option>Αρμενικά</option>";
  324.         menu += "<option>Αφρικάανς</option>";
  325.         menu += "<option>Βένδα</option>";
  326.         menu += "<option>Βιετναμικά</option>";
  327.         menu += "<option>Βολαπούκ</option>";
  328.         menu += "<option>Βοσνιακά</option>";
  329.         menu += "<option>Βουλγαρικά</option>";
  330.         menu += "<option>Γαλλικά</option>";
  331.         menu += "<option>Γερμανικά</option>";
  332.         menu += "<option>Γεωργιανά</option>";
  333.         menu += "<option>Γίντις</option>";
  334.         menu += "<option>Γοτθικά</option>";
  335.         menu += "<option>Δανικά</option>";
  336.         menu += "<option>Εβραϊκά</option>";
  337.         menu += "<option>Εσθονικά</option>";
  338.         menu += "<option>Εσπεράντο</option>";
  339.         menu += "<option>Ισλανδικά</option>";
  340.         menu += "<option>Ισπανικά</option>";
  341.         menu += "<option>Ιταλικά</option>";
  342.         menu += "<option>Καταλανικά</option>";
  343.         menu += "<option>Κινεζικά (πινγίν)</option>";
  344.         menu += "<option>Κουρδικά (Κουρμαντζί)</option>";
  345.         menu += "<option>Κουρδικά (Σορανί)</option>";
  346.         menu += "<option>Κροατικά</option>";
  347.         menu += "<option>Λευκορωσικά (κυριλλικά)</option>";
  348.         menu += "<option>Λευκορωσικά (λατινικά)</option>";
  349.         menu += "<option>Μαλτέζικα</option>";
  350.         menu += "<option>Μολδαβικά (κυριλλικά)</option>";
  351.         menu += "<option>Μολδαβικά (λατινικά)</option>";
  352.         menu += "<option>Νορβηγικά</option>";
  353.         menu += "<option>Ουαλλέζικα</option>";
  354.         menu += "<option>Ούιγκουρ</option>";
  355.         menu += "<option>Ουκρανικά</option>";
  356.         menu += "<option>Ούρντου</option>";
  357.         menu += "<option>Περσικά</option>";
  358.         menu += "<option>Πολωνικά</option>";
  359.         menu += "<option>Πορτογαλικά</option>";
  360.         menu += "<option>Ρουμανικά</option>";
  361.         menu += "<option>Ρωσικά</option>";
  362.         menu += "<option>Σερβικά</option>";
  363.         menu += "<option>Σλαβομακεδονικά</option>";
  364.         menu += "<option>Σλοβακικά</option>";
  365.         menu += "<option>Σότο (βόρεια)</option>";
  366.         menu += "<option>Σότο (νότια)</option>";
  367.         menu += "<option>Σουηδικά</option>";
  368.         menu += "<option>Τουρκικά</option>";
  369.         menu += "<option>Τσεχικά</option>";
  370.         menu += "<option>Τσουάνα</option>";
  371.         menu += "<option>Χαβανέζικα</option>";
  372.         menu += "<option>Χίντι</option>";
  373.         menu += "</select>";
  374.         specialchars.innerHTML = menu + specialchars.innerHTML;
  375.         chooseCharSubset(0); // Standard-CharSubset
  376.     }
  377. }
  378.  
  379.  
  380. // CharSubset-Auswahl
  381. function chooseCharSubset(s) {
  382.     var l = document.getElementById('specialchars').getElementsByTagName('p');
  383.     for (var i = 0; i < l.length; i++) {
  384.         l[i].style.display = i == s ? 'inline' : 'none';
  385.     }
  386. }
  387.  
  388. /* </pre>
  389. === Προσωποποίηση του Βικιλεξικού (customizeWiktionary) ===
  390. <pre> */
  391.  
  392. function customizeWiktionary() {
  393.     doRedirect();
  394.     addCharSubsetMenu();
  395.     fixEditSectionWikifiedLinks();
  396.     /*wiktHeadingToolTips();*/
  397. }
  398.  
  399. jQuery(document).ready(customizeWiktionary);
  400.  
  401. //Γεμίζει τη μεταβλητή mwCustomEditButtons που προσθέτει κουμπιά στη μπάρα εργαλείων
  402. function addCustomButton(imageFile, speedTip, tagOpen, tagClose, sampleText) {
  403.     mwCustomEditButtons[mwCustomEditButtons.length] = {
  404.         "imageFile": imageFile,
  405.         "speedTip": speedTip,
  406.         "tagOpen": tagOpen,
  407.         "tagClose": tagClose,
  408.         "sampleText": sampleText
  409.     };
  410. }
  411.  
  412. addCustomButton('//upload.wikimedia.org/wikipedia/commons/3/30/Btn_toolbar_rayer.png', 'Διαγραφή', '<s>', '</s>', '');
  413. addCustomButton('//upload.wikimedia.org/wikipedia/commons/8/88/Btn_toolbar_enum.png', 'Απαρίθμηση', '\n# στοιχείο 1\n# στοιχείο 2\n# στοιχείο 3', '', '');
  414. addCustomButton('//upload.wikimedia.org/wikipedia/commons/1/11/Btn_toolbar_liste.png', 'Λίστα', '\n* στοιχείο Α\n* στοιχείο Β\n* στοιχείο Γ', '', '');
  415. addCustomButton('//upload.wikimedia.org/wikipedia/commons/3/37/Btn_toolbar_commentaire.png', 'Σχόλιο', '<!--', '-->', 'Γράψτε το σχόλιό σας');
  416. addCustomButton('//upload.wikimedia.org/wikipedia/commons/c/c8/Button_redirect.png', 'Ανακατεύθυνση', '#ΑΝΑΚΑΤΕΥΘΥΝΣΗ \[\[', '\]\]', 'όνομα του στόχου');
  417. addCustomButton('//upload.wikimedia.org/wikipedia/commons/b/b4/Button_category03.png', 'Κατηγορία', '\[\[Κατηγορία:', '\]\]', 'όνομα της κατηγορίας');
  418. addCustomButton('//upload.wikimedia.org/wikipedia/commons/6/65/Button_petit.png', 'Μικρότερη γραφή', '<small>', '</small>', '');
  419. addCustomButton('//upload.wikimedia.org/wikipedia/en/8/80/Button_upper_letter.png', 'Εκθέτης', '<sup>', '</sup>', '');
  420. addCustomButton('//upload.wikimedia.org/wikipedia/commons/4/4b/Button_nbsp.png', 'Αδιαχώριστο κενό', '&nbsp\;', '', '');
  421.  
  422. //Ressemble à la fonction de /skins-1.5/commons/wikibits.js pour insérer un autre lien que insertTags
  423. function marque_tab() {
  424.     var toolbar = document.getElementById('toolbar');
  425.     if (!toolbar) return false;
  426.  
  427.     var textbox = document.getElementById('wpTextbox1');
  428.     if (!textbox) return false;
  429.  
  430.     if (!document.selection && textbox.selectionStart == null) return false;
  431.  
  432.     var image = document.createElement("img");
  433.     image.width = 23;
  434.     image.height = 22;
  435.     image.src = '//upload.wikimedia.org/wikipedia/commons/0/04/Button_array.png';
  436.     image.border = 0;
  437.     image.alt = 'Tableau';
  438.     image.title = 'Tableau';
  439.     image.style.cursor = "pointer";
  440.     image.onclick = function() {
  441.         popupTableau();
  442.         return false;
  443.     }
  444.     toolbar.appendChild(image);
  445. }
  446.  
  447. function addLocalEditToolbarItems() {
  448.     if ( typeof $j != 'undefined' && typeof $j.fn.wikiEditor != 'undefined' ) {
  449.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  450.                 'sections': {
  451.                         'local': { 'type': 'toolbar', 'label': 'Τοπικά' }
  452.                 }
  453.         } );
  454.  
  455.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  456.                 'section': 'local',
  457.                 'groups': { 'IPA': { 'label': 'ΔΦΑ' } }
  458.         } );
  459.  
  460.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  461.                 'section': 'local',
  462.                 'groups': { 'misc': { 'label': 'Διάφορα' } }
  463.         } );
  464.  
  465.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  466.                 'section': 'local', 'group': 'misc',
  467.                 'tools': {
  468.                         'category': {
  469.                                 label: 'Κατηγορία', type: 'button',
  470.                                 icon: '//upload.wikimedia.org/wikipedia/commons/b/b4/Button_category03.png',
  471.                                 action: {
  472.                                         type: 'encapsulate',
  473.                                         options: { pre: "[[Κατηγορία:όνομα της κατηγορίας]]" }
  474.                                 }
  475.                         }
  476.                 }
  477.         } );
  478.  
  479.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  480.                 'section': 'local', 'group': 'misc',
  481.                 'tools': {
  482.                         'category': {
  483.                                 label: 'Ανακατεύθυνση', type: 'button',
  484.                                 icon: '//upload.wikimedia.org/wikipedia/commons/c/c8/Button_redirect.png',
  485.                                 action: {
  486.                                         type: 'encapsulate',
  487.                                         options: { pre: "#ΑΝΑΚΑΤΕΥΘΥΝΣΗ [[όνομα του στόχου]]" }
  488.                                 }
  489.                         }
  490.                 }
  491.         } );
  492.  
  493.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  494.                 'section': 'local', 'group': 'misc',
  495.                 'tools': {
  496.                         'category': {
  497.                                 label: 'Σχόλιο HTML', type: 'button',
  498.                                 icon: '//upload.wikimedia.org/wikipedia/commons/3/37/Btn_toolbar_commentaire.png',
  499.                                 action: {
  500.                                         type: 'encapsulate',
  501.                                         options: { pre: "<!-- Γράψτε το σχόλιό σας -->" }
  502.                                 }
  503.                         }
  504.                 }
  505.         } );
  506.  
  507.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  508.                 'section': 'local', 'group': 'misc',
  509.                 'tools': {
  510.                         'category': {
  511.                                 label: 'Αδιαχώριστο κενό', type: 'button',
  512.                                 icon: '//upload.wikimedia.org/wikipedia/commons/4/4b/Button_nbsp.png',
  513.                                 action: { type: 'encapsulate',
  514.                                         options: { pre: '&',  post: 'nbsp;' }
  515.                                 }
  516.                         }
  517.                 }
  518.         } );
  519.  
  520.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  521.                 'section': 'local', 'group': 'misc',
  522.                 'tools': {
  523.                         'category': {
  524.                                 label: 'Προφορά (ΔΦΑ)', type: 'button',
  525.                                 icon: '//upload.wikimedia.org/wikipedia/commons/f/f2/Button_prononciation.png',
  526.                                 action: { type: 'encapsulate',
  527.                                         options: { pre: '===\{{προφορά}}===\n\{{ΔΦΑ|',  post: '}\}' }
  528.                                 }
  529.                         }
  530.                 }
  531.         } );
  532.  
  533.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  534.                 'section': 'local', 'group': 'misc',
  535.                 'tools': {
  536.                         'category': {
  537.                                 label: 'Ετυμολογία (αρχαία)', type: 'button',
  538.                                 icon: '//upload.wikimedia.org/wikipedia/commons/5/52/Button_grec.png',
  539.                                 action: { type: 'encapsulate',
  540.                                         options: { pre: ':\{{PAGENAME}\} < \{{αρχ}\} [[',  post: ']]' }
  541.                                 }
  542.                         }
  543.                 }
  544.         } );
  545.  
  546.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  547.                 'section': 'local', 'group': 'misc',
  548.                 'tools': {
  549.                         'category': {
  550.                                 label: 'Κλείδα ταξινόμησης', type: 'button',
  551.                                 icon: '//upload.wikimedia.org/wikipedia/commons/3/32/Btn_toolbar_Evalution_Securite_informatique.png',
  552.                                 action: { type: 'encapsulate',
  553.                                         options: { pre: '\{{κλείδα ταξινόμησης|',  post: '\}}\n' }
  554.                                 }
  555.                         }
  556.                 }
  557.         } );
  558.  
  559.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  560.                 'section': 'local', 'group': 'IPA',
  561.                 'tools': {
  562.                         'category': {
  563.                                 label: 'Τόνος', type: 'button',
  564.                                 icon: '//upload.wikimedia.org/wiktionary/el/e/ed/%CE%94%CF%86%CE%B1-%CB%88.png',
  565.                                 action: { type: 'encapsulate',
  566.                                         options: { pre: 'ˈ' }
  567.                                 }
  568.                         }
  569.                 }
  570.         } );
  571.  
  572.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  573.                 'section': 'local', 'group': 'IPA',
  574.                 'tools': {
  575.                         'category': {
  576.                                 label: 'ο/ω όπως στο «πάνω»', type: 'button',
  577.                                 icon: '//upload.wikimedia.org/wiktionary/el/7/7c/%CE%94%CF%86%CE%B1-%C9%94.png',
  578.                                 action: { type: 'encapsulate',
  579.                                         options: { pre: 'ɔ' }
  580.                                 }
  581.                         }
  582.                 }
  583.         } );
  584.  
  585.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  586.                 'section': 'local', 'group': 'IPA',
  587.                 'tools': {
  588.                         'category': {
  589.                                 label: 'ε/αι όπως στο «μέλι»', type: 'button',
  590.                                 icon: '//upload.wikimedia.org/wiktionary/el/0/07/%CE%94%CF%86%CE%B1-%C9%9B.png',
  591.                                 action: { type: 'encapsulate',
  592.                                         options: { pre: 'ɛ' }
  593.                                 }
  594.                         }
  595.                 }
  596.         } );
  597.  
  598.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  599.                 'section': 'local', 'group': 'IPA',
  600.                 'tools': {
  601.                         'category': {
  602.                                 label: 'γ όπως στο «γάτα»', type: 'button',
  603.                                 icon: '//upload.wikimedia.org/wiktionary/el/e/e1/%CE%94%CF%86%CE%B1-%C9%A3.png',
  604.                                 action: { type: 'encapsulate',
  605.                                         options: { pre: 'ɣ' }
  606.                                 }
  607.                         }
  608.                 }
  609.         } );
  610.  
  611.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  612.                 'section': 'local', 'group': 'IPA',
  613.                 'tools': {
  614.                         'category': {
  615.                                 label: 'ουρανικό γ όπως στο «για»', type: 'button',
  616.                                 icon: '//upload.wikimedia.org/wiktionary/el/2/2e/%CE%94%CF%86%CE%B1-%CA%9D.png',
  617.                                 action: { type: 'encapsulate',
  618.                                         options: { pre: 'ʝ' }
  619.                                 }
  620.                         }
  621.                 }
  622.         } );
  623.  
  624.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  625.                 'section': 'local', 'group': 'IPA',
  626.                 'tools': {
  627.                         'category': {
  628.                                 label: 'ουρανικό γκ όπως στο «γκιόνης»', type: 'button',
  629.                                 icon: '//upload.wikimedia.org/wiktionary/el/b/bc/%CE%94%CF%86%CE%B1-%C9%9F-.png',
  630.                                 action: { type: 'encapsulate',
  631.                                         options: { pre: 'ɟ' }
  632.                                 }
  633.                         }
  634.                 }
  635.         } );
  636.  
  637.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  638.                 'section': 'local', 'group': 'IPA',
  639.                 'tools': {
  640.                         'category': {
  641.                                 label: 'δ όπως στο «δέμα»', type: 'button',
  642.                                 icon: '//upload.wikimedia.org/wiktionary/el/d/da/%CE%94%CF%86%CE%B1-%C3%B0.png',
  643.                                 action: { type: 'encapsulate',
  644.                                         options: { pre: 'ð' }
  645.                                 }
  646.                         }
  647.                 }
  648.         } );
  649.  
  650.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  651.                 'section': 'local', 'group': 'IPA',
  652.                 'tools': {
  653.                         'category': {
  654.                                 label: 'θ όπως στο «θέμα»', type: 'button',
  655.                                 icon: '//upload.wikimedia.org/wiktionary/el/4/4c/%CE%94%CF%86%CE%B1-%CE%B8.png',
  656.                                 action: { type: 'encapsulate',
  657.                                         options: { pre: 'θ' }
  658.                                 }
  659.                         }
  660.                 }
  661.         } );
  662.  
  663.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  664.                 'section': 'local', 'group': 'IPA',
  665.                 'tools': {
  666.                         'category': {
  667.                                 label: 'ουρανικό λ όπως στο «ήλιος»', type: 'button',
  668.                                 icon: '//upload.wikimedia.org/wiktionary/el/1/1d/%CE%94%CF%86%CE%B1-%CA%8E.png',
  669.                                 action: { type: 'encapsulate',
  670.                                         options: { pre: 'ʎ' }
  671.                                 }
  672.                         }
  673.                 }
  674.         } );
  675.  
  676.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  677.                 'section': 'local', 'group': 'IPA',
  678.                 'tools': {
  679.                         'category': {
  680.                                 label: 'χειλοδοντικό μ όπως στο «έμφαση»', type: 'button',
  681.                                 icon: '//upload.wikimedia.org/wiktionary/el/8/8a/%CE%94%CF%86%CE%B1-%C9%B1.png',
  682.                                 action: { type: 'encapsulate',
  683.                                         options: { pre: 'ɱ' }
  684.                                 }
  685.                         }
  686.                 }
  687.         } );
  688.  
  689.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  690.                 'section': 'local', 'group': 'IPA',
  691.                 'tools': {
  692.                         'category': {
  693.                                 label: 'ρ όπως στο «πάρα»', type: 'button',
  694.                                 icon: '//upload.wikimedia.org/wiktionary/el/d/d9/%CE%94%CF%86%CE%B1-%C9%BE.png',
  695.                                 action: { type: 'encapsulate',
  696.                                         options: { pre: 'ɾ' }
  697.                                 }
  698.                         }
  699.                 }
  700.         } );
  701.  
  702.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  703.                 'section': 'local', 'group': 'IPA',
  704.                 'tools': {
  705.                         'category': {
  706.                                 label: 'ουρανικό ν όπως στο «πανιά»', type: 'button',
  707.                                 icon: '//upload.wikimedia.org/wiktionary/el/5/53/%CE%94%CF%86%CE%B1-%C9%B2.png',
  708.                                 action: { type: 'encapsulate',
  709.                                         options: { pre: 'ɲ' }
  710.                                 }
  711.                         }
  712.                 }
  713.         } );
  714.  
  715.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  716.                 'section': 'local', 'group': 'IPA',
  717.                 'tools': {
  718.                         'category': {
  719.                                 label: 'υπερωικό γ όπως στο «άγχος» ή το «εγγονός»', type: 'button',
  720.                                 icon: '//upload.wikimedia.org/wiktionary/el/0/09/%CE%94%CF%86%CE%B1-%C5%8B.png',
  721.                                 action: { type: 'encapsulate',
  722.                                         options: { pre: 'ŋ' }
  723.                                 }
  724.                         }
  725.                 }
  726.         } );
  727.  
  728.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  729.                 'section': 'local', 'group': 'IPA',
  730.                 'tools': {
  731.                         'category': {
  732.                                 label: 'ουρανικό χ όπως στο «χέρι»', type: 'button',
  733.                                 icon: '//upload.wikimedia.org/wiktionary/el/e/e8/%CE%94%CF%86%CE%B1-%C3%A7.png',
  734.                                 action: { type: 'encapsulate',
  735.                                         options: { pre: 'ç' }
  736.                                 }
  737.                         }
  738.                 }
  739.         } );
  740.  
  741.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  742.                 'sections': { 'languages': { 'type': 'booklet', 'label': 'Γλώσσες',  'deferLoad': true,
  743.                     'pages': {
  744.                         'greek': {
  745.                                 'layout': 'characters', 'label': 'Ελληνικά (νέα)',
  746.                                 'characters': [ 'Α', 'Ά', 'Β', 'Γ', 'Δ', 'Ε', 'Έ', 'Ζ', 'Η', 'Ή', 'Θ', 'Ι', 'Ί', 'Κ', 'Λ', 'Μ', 'Ν', 'Ξ', 'Ο', 'Ό', 'Π', 'Ρ', 'Σ', 'Τ', 'Υ', 'Ύ', 'Φ', 'Χ', 'Ψ', 'Ω', 'Ώ', 'α', 'ά', 'β', 'γ', 'δ', 'ε', 'έ', 'ζ', 'η', 'ή', 'θ', 'ι', 'ί', 'ϊ', 'ΐ', 'κ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'ό', 'π', 'ρ', 'σ', 'ς', 'τ', 'υ', 'ύ', 'ϋ', 'ΰ', 'φ', 'χ', 'ψ', 'ω', 'ώ', '·' ]
  747.                         },
  748.                         'greek-polytonic': {
  749.                                 'layout': 'characters', 'label': 'Ελληνικά (πολυτονικά)',
  750.                                 'characters':   [ 'Α', 'Β', 'Γ', 'Δ', 'Ε', 'Ζ', 'Η', 'Θ', 'Ι', 'Κ', 'Λ', 'Μ', 'Ν', 'Ξ', 'Ο', 'Π', 'Ρ', 'Σ', 'Τ', 'Υ', 'Φ', 'Χ', 'Ψ', 'Ω', 'Ϝ', 'Ϻ', 'ϟ', 'Ϡ', 'Ϛ', 'Ϸ', 'Ῥ', 'α', 'β', 'ϐ', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ϑ', 'ι', 'κ', 'ϰ', 'λ', 'μ', 'ν', 'ξ', 'ο', 'π', 'ϖ', 'ρ', 'ϱ', 'σ', 'ς', 'τ', 'υ', 'φ', 'ϕ', 'χ', 'ψ', 'ω', 'ϝ', 'ϻ', 'ϟ', 'ϡ', 'ϛ', 'ϸ', 'ῤ', 'ῥ', 'Ά', 'Έ', 'Ή', 'Ί', 'Ό', 'Ύ', 'Ώ', 'ά', 'έ', 'ή', 'ί', 'ό', 'ύ', 'ώ', 'ᾴ', 'ῄ', 'ῴ', 'Ὰ', 'Ὲ', 'Ὴ', 'Ὶ', 'Ὸ', 'Ὺ', 'Ὼ', '—', 'ὰ', 'ὲ', 'ὴ', 'ὶ', 'ὸ', 'ὺ', 'ὼ', 'ᾲ', 'ῂ', 'ῲ', 'ᾶ', 'ῆ', 'ῖ', 'ῦ', 'ῶ', 'ᾷ', 'ῇ', 'ῷ', 'ῗ', 'ῧ', 'ῒ', 'ῢ', 'ΐ', 'ΰ', 'ᾼ', 'ῌ', 'ῼ', 'ᾳ', 'ῃ', 'ῳ', 'Ἀ', 'Ἐ', 'Ἠ', 'Ἰ', 'Ὀ', 'Υ̓', 'Ὠ', 'ᾈ', 'ᾘ', 'ᾨ', 'ἀ', 'ἐ', 'ἠ', 'ἰ', 'ὀ', 'ὐ', 'ὠ', 'ᾀ', 'ᾐ', 'ᾠ', 'Ἄ', 'Ἔ', 'Ἤ', 'Ἴ', 'Ὄ', 'Ὤ', 'ᾌ', 'ᾜ', 'ᾬ', 'ἄ', 'ἔ', 'ἤ', 'ἴ', 'ὄ', 'ὔ', 'ὤ', 'ᾄ', 'ᾔ', 'ᾤ', 'Ἂ', 'Ἒ', 'Ἢ', 'Ἲ', 'Ὂ', 'Ὢ', 'ᾊ', 'ᾚ', 'ᾪ', 'ἂ', 'ἒ', 'ἢ', 'ἲ', 'ὂ', 'ὒ', 'ὢ', 'ᾂ', 'ᾒ', 'ᾢ', 'Ἆ', 'Ἦ', 'Ἶ', 'Ὦ', 'ᾎ', 'ᾞ', 'ᾮ', 'ἆ', 'ἦ', 'ἶ', 'ὖ', 'ὦ', 'ᾆ', 'ᾖ', 'ᾦ', 'Ἁ', 'Ἑ', 'Ἡ', 'Ἱ', 'Ὁ', 'Ὑ', 'Ὡ', 'Ῥ', 'ἁ', 'ἑ', 'ἡ', 'ἱ', 'ὁ', 'ὑ', 'ὡ', 'ῥ', 'Ἅ', 'Ἕ', 'Ἥ', 'Ἵ', 'Ὅ', 'Ὕ', 'Ὥ', 'ᾍ', 'ᾝ', 'ᾭ', 'ἅ', 'ἕ', 'ἥ', 'ἵ', 'ὅ', 'ὕ', 'ὥ', 'ᾅ', 'ᾕ', 'ᾥ', 'Ἃ', 'Ἓ', 'Ἣ', 'Ἳ', 'Ὃ', 'Ὓ', 'Ὣ', 'ᾋ', 'ᾛ', 'ᾫ', 'ἃ', 'ἓ', 'ἣ', 'ἳ', 'ὃ', 'ὓ', 'ὣ', 'ᾃ', 'ᾓ', 'ᾣ', 'Ἇ', 'Ἧ', 'Ἷ', 'Ὗ', 'ᾏ', 'ᾟ', 'ᾯ', 'ἇ', 'ἧ', 'ἷ', 'ὗ', 'ὧ', 'ᾇ', 'ᾗ', 'ᾧ', 'Ᾰ', 'ᾰ', 'Ῐ', 'ῐ', 'Ῠ', 'ῠ', 'Ᾱ', 'ᾱ', 'Ῑ', 'ῑ', 'Ῡ', 'ῡ' ]
  751.                         },
  752.                         'greek-ipa': {
  753.                                 'layout': 'characters', 'label': 'ΔΦΑ (Ελληνικά)',
  754.                                 'characters': [ 'a', 'ɛ', 'e̞', 'ɔ', 'o̞', 'i', 'u', 'a͜i', 'ɛ͜i', 'ɔ͜i', 'v', 'b', 'ʝ', 'ɣ', 'g', 'ɟ', 'ð', 'd', 'z', 'θ', 'i', 'j', 'c', 'k', 'l', 'ʎ', 'm', 'ɱ', 'n', 'ɲ', 'ŋ', 'ks', 'p', 'ɾ', 's', 't', 'f', 'ç', 'x', 'ps', 'ʣ', 'ʦ', 'ˈ' ]
  755.                         },
  756.                         'french': {
  757.                                 'layout': 'characters', 'label': 'Γαλλικά',
  758.                                 'characters': [ 'À', 'Â', 'Ç', 'É', 'È', 'Ê', 'Ë', 'Î', 'Ï', 'Ô', 'Œ', 'Ù', 'Û', 'Ü', 'à', 'â', 'ç', 'é', 'è', 'ê', 'ë', 'î', 'ï', 'ô', 'œ', 'ù', 'û', 'ü' ]
  759.                         },
  760.                         'ipa': {
  761.                                 'layout': 'characters', 'label': 'ΔΦΑ',
  762.                                 'characters': [ 'a', 'a̝', 'a̞', 'a̤', 'a̰', 'ɑ', 'ɑ̃', 'ɒ', 'ɐ', 'ɐ̯', 'ʌ', 'æ', 'æ̝', 'æ̞', 'ɶ', 'e', 'e̯', 'e̝', 'e̞', 'ẽ', 'ɘ', 'ə', 'ᵊ', 'ə̯', 'ə̃', 'ɚ', 'ɛ', 'ɛ̝', 'ɛ̞', 'ɛ̃', 'ɜ', 'ɝ', 'i', 'i̯', 'ĭ', 'ĩ', 'ɨ', 'ɪ', 'ɪ̯', 'ɪ̃', 'œ', 'œ̝', 'œ̞', 'ɞ', 'o', 'o̝', 'o̞', 'õ', 'ɔ', 'ɔ̝', 'ɔ̞', 'ɔ̃', 'ɵ', 'ø', 'ø̝', 'ø̞', 'ɷ', 'u', 'u̯', 'ŭ', 'ũ', 'ʉ', 'ʊ', 'ʊ', 'ʊ̯', 'ɯ', 'y', 'y̯', 'ʏ', 'b', 'b̥', 'b̤', 'b̰', 'ɓ', 'ɓ̥', 'β', 'β̞', 'ʙ', 'c', 'ç', 'ɕ', 'd', 'd̥', 'd̪', 'd̼', 'd̚', 'ɖ', 'ɗ', 'ʣ', 'ʥ', 'ʤ', 'ð', 'ð̞', 'f', 'ɸ', 'ɡ', 'g̊', 'ɠ', 'ɡ͡ʘ', 'ɡ͡ǀ', 'ɡ͡ǃ', 'ɡ͡ǂ', 'ɡ͡ǁ', 'ɡ͡b', 'ɢ', 'ʛ', 'ʛ̥', 'ɢ͡ʘ', 'ɢ͡ǀ', 'ɢ͡ǃ', 'ɢ͡ǂ', 'ɢ͡ǁ', 'ɣ', 'ˠ', 'ɣ̊', 'h', 'ʰ', 'ʱ', 'ɦ', 'ɧ', 'ħ', 'ʜ', 'j', 'ʲ', 'ʝ', 'ɟ', 'k', 'kʼ', 'k̚', 'k͡ʘ', 'k͡ǀ', 'k͡ǃ', 'k͡ǂ', 'k͡ǁ', 'k͡p', 'l', 'ˡ', 'l̥', 'l̩', 'l̰', 'ɭ', 'ɫ', 'ɬ', 'ʎ', 'ɮ', 'ʟ', 'm', 'm̩', 'm̰', 'ɱ', 'n', 'ⁿ', 'n̩', 'n̥', 'n̼', 'ɳ', 'ɲ', 'ŋ', 'ŋ̊', 'ŋ̩', 'ŋ̍', 'ŋ͡m', 'ŋ͡ʘ', 'ŋ͡ǀ', 'ŋ͡ǃ', 'ŋ͡ǂ', 'ŋ͡ǁ', 'ɴ', 'ɴ͡ʘ', 'ɴ͡ǀ', 'ɴ͡ǃ', 'ɴ͡ǂ', 'ɴ͡ǁ', 'p', 'pʼ', 'p̚', 'q', 'q͡ʘ', 'q͡ǀ', 'q͡ǃ', 'q͡ǂ', 'q͡ǁ', 'r', 'r̩', 'r̥', 'r̝', 'r̼', 'ɾ', 'ɾ̥', 'ɾ̃', 'ɿ', 'ɹ', 'ɹ̩', 'ɽ', 'ɻ', 'ʀ', 'ʁ', 'ʁ̞', 'ɺ', 'ѵ', 'ѵ̟', 's', 'ˢ', 'sʼ', 's̬', 'ʂ', 'ʃ', 'ʄ', 'ʅ', 'ʆ', 't', 'tʼ', 't̪', 't̚', 't̬', 'ʈ', 't͡ɬ', 'ʨ', 'ʦ', 'θ', 'v', 'v̊', 'ʋ', 'w', 'ʷ', 'w̩', 'ʍ', 'w', 'w̰', 'ɰ', 'ɥ', 'x', 'ˣ', 'χ', 'z', 'z̥', 'z̃', 'ʐ', 'ʑ', 'ʒ', 'ʓ', 'ʕ', 'ˁ', 'ʔ', 'ˀ', 'ˀ̣', 'ʢ', 'ʡ', 'ʖ', 'ʘ', 'ʘ͡ɡ', 'ʘ͡ɢ', 'ʘ͡k', 'ʘ͡ŋ', 'ʘ͡ɴ', 'ʘ͡q', 'ǀ', 'ǀ͡ɡ', 'ǀ͡ɢ', 'ǀ͡k', 'ǀ͡ŋ', 'ǀ͡ɴ', 'ǀ͡q', '!', 'ǃ͡ɡ', 'ǃ͡ɢ', 'ǃ͡k', 'ǃ͡ŋ', 'ǃ͡ɴ', 'ǃ͡q', 'ǂ', 'ǂ͡ɡ', 'ǂ͡ɢ', 'ǂ͡k', 'ǂ͡ŋ', 'ǂ͡ɴ', 'ǂ͡q', 'ǁ', 'ǁ͡ɡ', 'ǁ͡ɢ', 'ǁ͡k', 'ǁ͡ŋ', 'ǁ͡ɴ', 'ǁ͡q', 'ˈ', 'ˌ', 'ˊ', 'ˋ', '˅', 'ː', 'ˑ', '↓', '↑', '˥', '˦', '˧', '˨', '˩', '˘', '.', '‿', '|', '‖', 'a͜i', 'ɛ͜i', 'ɔ͜i' ]
  763.                         }
  764.                     }
  765.                 }
  766.              }
  767.         } );
  768.  
  769.  
  770.         $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
  771.                 'sections': { 'templates': { 'type': 'booklet', 'label': 'Πρότυπα',  'deferLoad': true,
  772.                     'pages': {
  773.                         'general-templates': {
  774.                                 'layout': 'characters', 'label': 'Γενικά πρότυπα',
  775.                                 'characters': [ '==\{{-el-}\}==', '==\{{-en-}\}==', '==\{{-fr-}\}==', '==\{{-it-}\}==', '==\{{-de-}\}==', '==\{{--}\}==', '\{{PAGENAME}\}', '===\{{ετυμολογία}\}===', '===\{{προφορά}\}===', '====\{{σημειώσεις}\}====', '====\{{συνώνυμα}\}====', '====\{{αντώνυμα}\}====', '====\{{συγγενικά}\}====', '====\{{σύνθετα}\}====', '====\{{βλέπε}\}====', '====\{{αναφορές}\}====', '====\{{ομώνυμα}\}====', '====\{{εκφράσεις}\}====', '====\{{μεταφράσεις}\}====', '\{{σύνδεσμος||}\}', '[[Κατηγορία:]]', '[[Αρχείο:|thumb]]', '#ΑΝΑΚΑΤΕΥΘΥΝΣΗ [[]]', '\{{αδετυμ}\}', '\{{αρχ}\}', '\{{ελνστ}\}', '\{{μσν}\}', '\{{μτγ}\}', '\{{ετυμ ΧΧ}\}', '\{{αντιδάνειο}\}', '\{{σμσδ}\}', '\{{μτφδ}\}', '\{{λενδ}\}', '\{{δσμμ}\}', '\{{μπφ}\}', '\{{μτχππ}\}', '\{{μτχπε}\}', '\{{ουσεπ α}\}', '\{{ουσεπ θ}\}', '\{{ουσεπ ο}\}', '===\{{ουσιαστικό}\}===', '===\{{επίθετο}\}===', '===\{{ρήμα}\}===', '===\{{μετοχή}\}===', '===\{{επίρρημα}\}===', '===\{{σύνδεσμος}\}===', '===\{{επιφώνημα}\}===', '===\{{έκφραση}\}===', '===\{{κύριο όνομα}\}===', '===\{{συντομομορφή}\}===', '* \{{}\} : \{{τ||}\}', ', \{{τ||}\}', '* \{{}\} : [[]]', '\{{σύνδεσμος||el}\}', '[[w:|]]', '[[s:|]]', '[[b:|]]', '[[commons:|]]', '[[m:|]]', '[[q:|]]', '[[n:|]]', '[[v:|]]', '\{{ΒΠ}\}', '\{{Παράρτημα|}\}', '\{{ΔΦΑ}\}',
  776.         { 'label': "εικόνα-thumb", 'action': { 'type': 'encapsulate', 'options': { 'pre': "[[Αρχείο:", 'post': "|thumb|λεζάντα]]" } } },
  777.         { 'label': "nowiki", 'action': { 'type': 'encapsulate', 'options': { 'pre': "<nowiki>", 'post': "</nowiki>" } } },
  778.         { 'label': "noinclude", 'action': { 'type': 'encapsulate', 'options': { 'pre': "<noinclude>", 'post': "</noinclude>" } } },
  779.         { 'label': "includeonly", 'action': { 'type': 'encapsulate', 'options': { 'pre': "<includeonly>", 'post': "</includeonly>" } } },
  780.         { 'label': "pre", 'action': { 'type': 'encapsulate', 'options': { 'pre': "<pre>", 'post': "</pre>" } } },
  781.         { 'label': "σχόλιο HTML", 'action': { 'type': 'encapsulate', 'options': { 'pre': "<!-- ", 'post': " -->" } } },
  782.         { 'label': "br", 'action': { 'type': 'encapsulate', 'options': { 'pre': "<br />", 'post': "" } } },
  783.         { 'label': "small", 'action': { 'type': 'encapsulate', 'options': { 'pre': "<small>", 'post': "</small>" } } },
  784.         { 'label': "s", 'action': { 'type': 'encapsulate', 'options': { 'pre': "<s>", 'post': "</s>" } } },
  785.                                ]
  786.                         },
  787.                         'greek-templates': {
  788.                                 'layout': 'characters', 'label': 'Πρότυπα κλίσεων (Ελληνικά)',
  789.                                 'characters': [ '\{{el-κλίσ-\'ουρανός\'}\}', '\{{el-κλίσ-\'γέρος\'}\}', '\{{el-κλίσ-\'δρόμος\'}\}', '\{{el-κλίσ-\'άγγελος\'}\}', '\{{el-κλίσ-\'καρδινάλιος\'}\}', '\{{el-κλίσ-\'νικητής\'}\}', '\{{el-κλίσ-\'μπαλωματής\'}\}', '\{{el-κλίσ-\'πραματευτής\'}\}', '\{{el-κλίσ-\'ναύτης\'}\}', '\{{el-κλίσ-\'μανάβης\'}\}', '\{{el-κλίσ-\'λαχειοπώλης\'}\}', '\{{el-κλίσ-\'νοικοκύρης\'}\}', '\{{el-κλίσ-\'φούρναρης\'}\}', '\{{el-κλίσ-\'αγώνας\'}\}', '\{{el-κλίσ-\'ταμίας\'}\}', '\{{el-κλίσ-\'φύλακας\'}\}', '\{{el-κλίσ-\'ιππέας\'}\}', '\{{el-κλίσ-\'σφουγγαράς\'}\}', '\{{el-κλίσ-\'καφές\'}\}', '\{{el-κλίσ-\'κόντες\'}\}', '\{{el-κλίσ-\'παππούς\'}\}', '\{{el-κλίσ-\'καρδιά\'}\}', '\{{el-κλίσ-\'γιαγιά\'}\}', '\{{el-κλίσ-\'θάλασσα\'}\}', '\{{el-κλίσ-\'ελπίδα\'}\}', '\{{el-κλίσ-\'πείνα\'}\}', '\{{el-κλίσ-\'νότα\'}\}', '\{{el-κλίσ-\'σάλπιγγα\'}\}', '\{{el-κλίσ-\'ψυχή\'}\}', '\{{el-κλίσ-\'νίκη\'}\}', '\{{el-κλίσ-\'σκόνη\'}\}', '\{{el-κλίσ-\'βιασύνη\'}\}', '\{{el-κλίσ-\'ζάχαρη\'}\}', '\{{el-κλίσ-\'λύση\'}\}', '\{{el-κλίσ-\'αλεπού\'}\}', '\{{el-κλίσ-\'οδός\'}\}', '\{{el-κλίσ-\'έρημος\'}\}', '\{{el-κλίσ-\'διάμετρος\'}\}', '\{{el-κλίσ-\'ηχώ\'}\}', '\{{el-κλίσ-\'βουνό\'}\}', '\{{el-κλίσ-\'πεύκο\'}\}', '\{{el-κλίσ-\'πρόβατο\'}\}', '\{{el-κλίσ-\'πρόσωπο\'}\}', '\{{el-κλίσ-\'δέσιμο\'}\}', '\{{el-κλίσ-\'παιδί\'}\}', '\{{el-κλίσ-\'παιδάκι\'}\}', '\{{el-κλίσ-\'τραγούδι\'}\}', '\{{el-κλίσ-\'μίλι\'}\}', '\{{el-κλίσ-\'έδαφος\'}\}', '\{{el-κλίσ-\'όνομα\'}\}', '\{{el-κλίσ-\'κρέας\'}\}', '\{{el-κλίσ-\'συγγενής\'}\}', '\{{el-κλίσ-\'καλός\'}\}', '\{{el-κλίσ-\'γλυκός\'}\}', '\{{el-κλίσ-\'ωραίος\'}\}', '\{{el-κλίσ-\'όμορφος\'}\}', '\{{el-κλίσ-\'κακοποιός\'}\}', '\{{el-κλίσ-\'συνεχής\'}\}', '\{{el-κλίσ-\'σταχτής\'}\}', '\{{el-κλίσ-\'ζηλιάρης\'}\}', '\{{el-κλίσ-\'βαθύς\'}\}', '\{{el-κλίσ-\'ελώδης\'}\}', '\{{el-κλίσ-\'αγαπώ\'}\}', '\{{el-κλίσ-\'βλέπω\'}\}', '\{{el-κλίσ-\'δροσίζω\'}\}', '\{{el-κλίσ-\'καλώ\'}\}', '\{{el-κλίσ-\'λαλώ\'}\}', '\{{el-κλίσ-\'δένω\'}\}', '\{{el-κλίσ-\'δένομαι\'}\}', '\{{el-κλίσ-\'ταξιδεύω\'}\}' ]
  790.                         },
  791.                         'french-templates': {
  792.                                 'layout': 'characters', 'label': 'Πρότυπα (Γαλλικά)',
  793.                                 'characters': [ '\{{fr-v-pron}\}', '\{{fr-v-pron-pass}\}', '\{{fr-v-pron-récipr}\}', '\{{fr-v-pron-réfl}\}', '\{{fr-κλίσ-\'act-if\'}\}', '\{{fr-κλίσ-\'amour-eux\'}\}', '\{{fr-κλίσ-\'berg-er\'}\}', '\{{fr-κλίσ-\'bon\'}\}', '\{{fr-κλίσ-\'can-al\'}\}', '\{{fr-κλίσ-\'cruel\'}\}', '\{{fr-κλίσ-\'dans-eur\'}\}', '\{{fr-κλίσ-\'direc-teur\'}\}', '\{{fr-κλίσ-\'gros\'}\}', '\{{fr-κλίσ-\'indien\'}\}', '\{{fr-κλίσ-\'or-al\'}\}', '\{{fr-κλίσ-Minv-Fman}\}', '\{{fr-κλίσ-Mman-Fman}\}', '\{{fr-κλίσ-Mrég-Frég}\}', '\{{fr-κλίσ-f-man-s}\}', '\{{fr-κλίσ-idem}\}', '\{{fr-κλίσ-mf-rég}\}', '\{{fr-κλίσ-pl-man}\}', '\{{fr-κλίσ-rég}\}', '\{{fr-κλίσ-x}\}' ]
  794.                         }
  795.                     }
  796.                 }
  797.              }
  798.         } );
  799.     }
  800. }
  801.  
  802. addOnloadHook(marque_tab);
  803.  
  804.  
  805. if (typeof $ != 'undefined') $(document).ready(addLocalEditToolbarItems);
  806.  
  807. var sectionsInToolbar = new Array();
  808. var groupsInSection = new Array();
  809.  
  810. function existsEditToolbarSection(sectionName) {
  811.     // set up if empty
  812.     if (sectionsInToolbar.length == 0) {
  813.         var count = 0;
  814.         possibleSections = document.getElementsByTagName('div');
  815.         for (i = 0; i < possibleSections.length; i++) {
  816.             if (possibleSections[i].className.indexOf('booklet section section-') == 0 || possibleSections[i].className.indexOf('toolbar section section-') == 0) {
  817.                 sectionsInToolbar[count] = possibleSections[i].className.substring(24);
  818.                 possibleGroups = possibleSections[i].getElementsByTagName('div');
  819.                 var groupcount = 0;
  820.                 groupsInSection[count] = new Array();
  821.                 for (j = 0; j < possibleGroups.length; j++) {
  822.                     if (possibleGroups[j].className.indexOf('group group-') == 0) {
  823.                         // μόνο το όνομα, όχι το 'group group-'
  824.                         groupsInSection[count][groupcount++] = possibleGroups[j].className.substring(12);
  825.                     }
  826.                 }
  827.                 count++;
  828.             }
  829.         }
  830.     }
  831.     for (i = 0; i < sectionsInToolbar.length; i++) {
  832.         if (sectionsInToolbar[i] == sectionName) {
  833.             return true;
  834.         }
  835.     }
  836.     return false;
  837. }
  838.  
  839. function existsEditToolbarGroup(sectionName, groupName) {
  840.     for (i = 0; i < sectionsInToolbar.length; i++) {
  841.         if (sectionsInToolbar[i] == sectionName) {
  842.             for (j = 0; j < groupsInSection[i].length; j++) {
  843.                 if (groupsInSection[i][j] == groupName) {
  844.                     return true;
  845.                 }
  846.             }
  847.         }
  848.     }
  849.     return false;
  850. }
  851.  
  852. function addGroupNameToSectionNameList(sectionName, groupName) {
  853.     for (i = 0; i < sectionsInToolbar.length; i++) {
  854.         if (sectionsInToolbar[i] == sectionName) {
  855.             for (j = 0; j < groupsInSection[i].length; j++) {
  856.                 if (groupsInSection[i][j] == groupName) {
  857.                     return;
  858.                 }
  859.             }
  860.             groupsInSection[i][groupsInSection[i].length] = groupName;
  861.             return;
  862.         }
  863.     }
  864.     return;
  865. }
  866.  
  867. /*
  868.  παράμετροι:
  869.  imageFile: URL προς το εικονίδιο (22x22 px)
  870.  speedTip: το κείμενο που φαίνεται όταν βάλεις τον κέρσορα πάνω στο εικονίδιο
  871.  textToEnter: το κείμενο που εισάγεται όταν πατήσεις το κουμπί
  872.  toolbarSectionName: το όνομα που εμφανίζεται στη μπάρα δίπλα στα άλλα τμήματα (Προχωρημένα, Τοπικά κλπ.)
  873.                      αν βάλεις όνομα ενός υπάρχοντος τμήματος κουμπιών, τα δικά σου κουμπιά θα προστεθούν
  874.                      σε αυτό· αν βάλεις όνομα καινούριου τμήματος, θα δημιουργηθεί
  875. */
  876. function addCustomButtonToLocalVectorToolbarButtons(imageFile, speedTip, textToEnter, toolbarSectionName) {
  877.     if (typeof $j != 'undefined' && typeof $j.fn.wikiEditor != 'undefined') {
  878.         if (toolbarSectionName === undefined) {
  879.             toolbarSectionName = 'local';
  880.             toolbarSectionLabel = 'Toπικά';
  881.         }
  882.         else {
  883.             toolbarSectionLabel = toolbarSectionName;
  884.         }
  885.         // υπάρχει ήδη το τμήμα;
  886.         if (!existsEditToolbarSection(toolbarSectionName)) {
  887.             // δημιουργούμε τμήμα με το ορισμένο όνομα και με ομάδα misc
  888.             var sectionObject = {};
  889.             sectionObject[toolbarSectionName] = {
  890.                 'type': 'toolbar',
  891.                 'label': toolbarSectionLabel
  892.             };
  893.             $('#wpTextbox1').wikiEditor('addToToolbar', {
  894.                 'sections': sectionObject
  895.             });
  896.             sectionsInToolbar[sectionsInToolbar.length] = toolbarSectionName;
  897.             groupsInSection[sectionsInToolbar.length - 1] = new Array();
  898.         }
  899.         // υπάρχει η ομάδα μέσα σε αυτό το τμήμα;
  900.         if (!existsEditToolbarGroup(toolbarSectionName, 'misc')) {
  901.             $('#wpTextbox1').wikiEditor('addToToolbar', {
  902.                 'section': toolbarSectionName,
  903.                 'groups': {
  904.                     'misc': {
  905.                         'label': 'Διάφορα'
  906.                     }
  907.                 }
  908.             });
  909.             addGroupNameToSectionNameList(toolbarSectionName, 'misc');
  910.         }
  911.         $('#wpTextbox1').wikiEditor('addToToolbar', {
  912.             'section': toolbarSectionName,
  913.             'group': 'misc',
  914.             'tools': {
  915.                 'category': {
  916.                     label: speedTip,
  917.                     type: 'button',
  918.                     icon: imageFile,
  919.                     action: {
  920.                         type: 'encapsulate',
  921.                         options: {
  922.                             pre: textToEnter
  923.                         }
  924.                     }
  925.                 }
  926.             }
  927.         });
  928.     }
  929. }
  930.  
  931. /* Remember to keep [[MediaWiki:Standard.js]] in sync with this, for classic style! */
  932. /*
  933. </pre>
  934. */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement