Zum Inhalt springen

Benutzer:Andreas Plank/vector.js: Unterschied zwischen den Versionen

Aus Flora von Bayern
imported>Andreas Plank
K Test Zitat Einfügen - autocomplete
imported>Andreas Plank
K Test Zitat Einfügen - autocomplete
Zeile 551: Zeile 551:
                     })
                     })
                     .done(function(data) {
                     .done(function(data) {
                       console.log(data);
                       //console.log(data);
                       response( $.map(data.sfautocomplete, function(item) {
                       response( $.map(data.sfautocomplete, function(item) {
                        console.log(item);
                         return {
                         return {
                           label: item.titel,
                           label: item.titel,

Version vom 31. März 2014, 13:42 Uhr

//<pre>
/*
 o ptions: { *
 pre:'{|'+classStr+"\n",
 peri:table,
 post:'|}',
 ownline:true

 type: "booklet"
 label string: non-localizable label string
 labelMsg string: key for localizable message string
 deferLoad boolean
 pages object: map of name keys to further objects:
 layout string required: 'table' or 'characters'
 label string: non-localizable label string
 labelMsg string: key for localizable message string
 headings string[]: array of objects? {textMsg: key} ??
 rows object[] optional?: array of objects? {'row key name': {message object?}}
 characters string[] optional?: array of strings of little character bits for insertion (???!)

 */
var customizeUserToolbar = function () {
  $( '#wpTextbox1' ).wikiEditor( 'addToToolbar', {
    'section': 'advanced',
    'group': 'format',
    'tools': {
      'strikethrough': {
        label: 'Durchgestrichen',
        type: 'button',
        icon: 'http://upload.wikimedia.org/wikipedia/commons/3/30/Btn_toolbar_rayer.png',
        action: {
          type: 'encapsulate',
          options: {
            pre: "<s>",
            post: "</s>"
          }
        }
      },
      'syntaxhighlight': {
        label: 'Syntax Hervorhebung',
        type: 'button',
        icon: 'http://upload.wikimedia.org/wikipedia/commons/d/d2/Button_source.png',
        action: {
          type: 'encapsulate',
          options: {
            pre: "<syntaxhighlight lang=\"html4strict\">\n",
            post: "\n</syntaxhighlight>"
          }
        }
      },
      'blockquote': {
        label: 'Eingerückten Blockquote einfügen',
        type: 'button',
        icon: 'http://upload.wikimedia.org/wikipedia/en/f/fd/Button_blockquote.png',
        action: {
          type: 'encapsulate',
          options: {
            pre: "<blockquote>\n",
            post: "\n</blockquote>"
          }
        }
      }
    }
  });
  $('#wpTextbox1').wikiEditor('addToToolbar', {
    'sections': {
      'programming': {
        type: 'booklet',
        label: 'Programmierung'
      }
    }
  });
  $('#wpTextbox1').wikiEditor('addToToolbar', {
    'section': 'programming',
    'pages': {
      'tags': {
        'layout': 'characters',
        label: 'Wiki/HTML Tags',
        'characters': [{
          label: "nbsp;",
          action: {
            type: 'encapsulate', options: {pre: "&nbsp;", post: ""}
            }
          },{
            label: "()",
                               action: {
                                 type: 'encapsulate', options: {pre: "(", post: ")"}
          }
        },{
          label: "[]",
          action: {
            type: 'encapsulate', options: {pre: "[", post: "]"}
            }
          },{
            label: "[[]]",
            action: {
              type: 'encapsulate', options: {pre: "[[", post: "]]"}
            }
          },{
            label: "{{}}",
            action: {
              type: 'encapsulate', options: {pre: '{{', post: '}}'}
            }
          },{
            label: "{{{}}}",
            action: {
              type: 'encapsulate', options: {pre: "{{{", 'peri': '1', post: "}}}"}
            }
          },{
            label: "{{{|}}}",
            action: {
              type: 'encapsulate', options: {pre: "{{{", 'peri': '1', post: "|}}}"}
            }
          },{
            label: "[[Kategorie:]]",
            action: {
              type: 'encapsulate', options: {pre: '[[Kategorie: ', post: ']]'}
            }
          }, {
              label: "[[Attribut:]]",
              action: {
                type: 'encapsulate',
                options: {
                  /* no selection */
                  pre: "[[Attribut: ",
                  post: "]]",
                  /* a selection */
                  regex:/\s*(.+)\s*/,
                  regexReplace:"[[Attribut: \$1 |\$1]]"
                }
              }
            }, {
              label: "[[property:]]",
              action: {
                type: 'encapsulate',
                options: {
                  /* no selection */
                  pre: "[[property: ",
                  post: "]]",
                  /* a selection */
                  regex:/\s*(.+)\s*/,
                  regexReplace:"[[property: \$1 |\$1]]"
                }
              }
            },{
            label: "#WEITERLEITUNG [[]]",
            action: {
              type: 'encapsulate', options: {pre: "#WEITERLEITUNG [[", post: "]]"}
            }
          },{
            label: "ref",
            action: {
              type: 'encapsulate', options: {pre: '<ref name="">', peri: 'Referenz/Zitat', post: '</ref>'}
            }
          },{
            label: "references",
            action: {
              type: 'encapsulate', options: {pre: '<references/>', post: ''}
            }
          },{
            label: "noinclude",
            action: {
              type: 'encapsulate', options: {pre: "<noinclude>", post: "</noinclude>"}
            }
          },{
            label: "includeonly",
            action: {
              type: 'encapsulate', options: {pre: "<includeonly>", post: "</includeonly>"}
            }
          },{
            label: "onlyinclude",
            action: {
              type: 'encapsulate', options: {pre: "<onlyinclude>", post: "</onlyinclude>"}
            }
          },{
            label: "code",
            action: {
              type: 'encapsulate', options: {pre: "<code>", post: "</code>"}
            }
          },{
            label: "nowiki",
            action: {
              type: 'encapsulate', options: {pre: "<nowiki>", post: "</nowiki>"}
            }
          },{
            label: "code nowiki code",
            action: {
              type: 'encapsulate', options: {pre: "<code><nowiki>", post: "</nowiki></code>"}
            }
          },{
            label: "comment",
            action: {
              type: 'encapsulate', options: {pre: "<!-- ", 'peri': 'comment:', post: " -->"}
            }
          },{
            label: "comment lt--gt",
            action: {
              type: 'encapsulate', options: {pre: "&lt;!-- ", 'peri': 'comment:', post: " -->"}
            }
          },{
            label: "span",
            action: {
              type: 'encapsulate', options: {pre: '<span style="">', post: '</span>'}
            }
          },{
            label: "span.plainlinks",
            action: {
              type: 'encapsulate', options: {pre: '<span class="plainlinks">', post: '</span>'}
            }
          },{
            label: "div",
            action: {
              type: 'encapsulate', options: {pre: '<div style="">', post: '</div>'}
            }
          },{
            label: "{{DEFAULTSORT:}}",
            action: {
              type: 'encapsulate', options: {pre: "{{DEFAULTSORT: ", post: "}}"}
            }
          },{
            label: "{{SORTIERUNG:}}",
            action: {
              type: 'encapsulate', options: {pre: "{{SORTIERUNG: ", post: "}}"}
            }
          },{
            'label': "div.definition-inline",
            'action': {
              'type': 'encapsulate','options': {'pre': '<div class="definition-inline">\n; ','post': ' : Erläuterung\n</div>'}
            }
          },{
            label: "{{#arraymap:}}",
            action: {
              type: 'encapsulate', options: {pre: "{{#arraymap: ", peri:  '{{{field|}}}', post: '|;|§|[[My property::§]] |&#32;•&#32;}}'}
            }
          },{
            label: "{{#arraymap:long}}",
            action: {
              type: 'encapsulate', options: {pre: "{{#arraymap: ", peri:  '{{{field|}}}', post: '<!-- values\n-->|;<!-- split on ;\n-->|§<!-- assign temporary variable\n-->|[[My property::§]] <!-- output\n-->|&#32;•&#32;<!-- new output separator\n-->}}'}
            }
          },{
            label: "if",
            action: {
              type: 'encapsulate', options: {pre: "{{#if: ", post: "| | }}"}
            }
          },{
            label: "if long",
            action: {
              type: 'encapsulate', options: {pre: "<!--\n-->{{#if: ", post: "<!--\nthen-->|<!--\nelse-->|<!--\n-->}}<!-- if end\n-->"}
            }
          },{
            label: "switch CONTENTLANGUAGE",
            action: {
              type: 'encapsulate', options: {pre: "{{#switch: {{CONTENTLANGUAGE}}", post: "<!--\n-->|de|de-formal= deutsch <!--\n-->| #default = english<!--\n-->}}<!-- switch end\n-->"}
            }
          },{
            label: "switch",
            action: {
              type: 'encapsulate', options: {pre: "{{#switch: ", post: "<!--\n-->| one | two = <!--\n-->| #default = <!--\n-->}}<!-- switch end\n-->"}
            }
          }, {
            label: "ol",
            action: {
              type: 'encapsulate',
              options: {pre: '<ol>',peri: '<li>Text</li><li>Text</li>', post: '</ol>'}
            }
          }, {
            label: "ul",
            action: {
              type: 'encapsulate',
              options: {pre: '<ul>',peri: '<li>Text</li><li>Text</li>', post: '</ul>'}
            }
          }, {
            label: "table",
            action: {
              type: 'encapsulate',
              options: {pre: '<table>',peri: '<!--\n--><tr><!--\n  --><td></td><!--\n--></tr><!--\n-->', post: '</table>'}
            }
          }, {
            label: "tr",
            action: {
              type: 'encapsulate',
              options: {pre: '<tr>',peri: '<!--\n  --><td></td><!--\n-->', post: '</tr>'}
            }
          }, {
            label: "th",
            action: {
              type: 'encapsulate',
              options: {pre: '<th>', post: '</th>'}
            }
          }, {
            label: "td",
            action: {
              type: 'encapsulate',
              options: {pre: '<td>', post: '</td>'}
            }
          },
          '┌',
          '┬',
          '┐',
          '└',
          '┴',
          '┘',
          '│',
          '─',
          '├',
          '┼',
          '┤'
          /*  <s></s>   <sup></sup>   <sub></sub>  */
          ]
        },
        'templates': {
          'layout': 'characters',
          label: 'Vorlagen',
          'characters': [{
            label: "Keyboard",
            action: {
              type: 'encapsulate', options: {pre: "{{Keyboard |", post: "}}"}
            }
          },{
            label: "Zitat",
            action: {
              type: 'encapsulate', options: {pre: '{{Zitat |', post: '}}'}
            }
          },{
            label: "Zitat versteckt",
            action: {
              type: 'encapsulate', options: {pre: '{{Zitat versteckt|', post: '}}'}
            }
          },{
            label: "nbsp;",
            action: {
              type: 'encapsulate',
              options: {pre: "&nbsp;", post: ""}
            }
          }, {
            label: "()",
            action: {
              type: 'encapsulate',
             options: {pre: "(", post: ")"}
            }
          }, {
            label: "[]",
            action: {
              type: 'encapsulate',
              options: {pre: "[", post: "]"}
              }
          }, {
            label: "[[]]",
            action: {
              type: 'encapsulate',
              options: {pre: "[[", post: "]]"}
            }
          }, {
            label: "{{}}",
            action: {
              type: 'encapsulate',
              options: {pre: "{{", post: "}}"}
            }
          }, {
            label: "{{{}}}",
            action: {
              type: 'encapsulate',
              options: {pre: "{{{", post: "}}}"}
            }
          }, {
            label: "{{{|}}}",
            action: {
              type: 'encapsulate',
              options: {pre: "{{{", post: "|}}}"}
            }
          }, {
            label: "noinclude",
            action: {
              type: 'encapsulate',
              options: {pre: "<noinclude>", post: "</noinclude>"}
            }
          }, {
            label: "includeonly",
            action: {
              type: 'encapsulate',
              options: {pre: "<includeonly>", post: "</includeonly>"}
            }
          }, {
            label: "onlyinclude",
            action: {
              type: 'encapsulate',
              options: {pre: "<onlyinclude>", post: "</onlyinclude>"}
            }
          }, {
            label: "nowiki",
            action: {
              type: 'encapsulate',
              options: {pre: "<nowiki>", post: "</nowiki>"}
            }
          }, {
            label: "comment",
            action: {
              type: 'encapsulate',
              options: {pre: "<!-- ", post: " -->"}
            }
          }, {
            label: "{{#arraymap:}} long",
            action: {
              type: 'encapsulate',
              options: {pre: "{{#arraymap: ", peri : '{{{field|}}}', post: "<!--\n-->|;<!-- sep\n-->|§<!-- assign temporary var\n-->|[[My property::§]] <!--output\n-->|&#32;•&#32;<!--output sep\n-->}}<!-- end arraymap \n-->"}
            }
          }, {
            label: "{{#arraymap:}}",
            action: {
              type: 'encapsulate',
              options: {pre: "{{#arraymap: ", peri : '{{{field|}}}', post: "|;|§|[[My property::§]] |&#32;•&#32;}}"}
            }
          }, {
            label: "{{#ask:table}}",
            action: {
              type: 'encapsulate',
              options: {pre: "{{#ask: ", peri : '[[PAGE]] [[property::+]]', post: " | ?displayprop |? | mainlabel=- | link=none | format = table | limit = 500}}"}
            }
          }, {
            label: "{{#ask:list}}",
            action: {
              type: 'encapsulate',
              options: {pre: "{{#ask: ", peri : '[[PAGE]] [[property::+]]', post: " | ?displayprop | mainlabel=- | link=none | format = list | sep=&#32;•&#32; | limit = 500}}"}
            }
          }, {
            label: "{{#vardefine:}}",
            action: {
              type: 'encapsulate',
              options: {pre: "{{#vardefine: ", peri : 'myVar', post: "| }}"}
            }
          }, {
            label: "{{#varexist:}}",
            action: {
              type: 'encapsulate',
              options: {pre: "{{#varexist: ", peri : 'myVar', post: "}}"}
            }
          }, {
            label: "{{#var:}}",
            action: {
              type: 'encapsulate',
              options: {pre: "{{#var: ", peri : 'myVar', post: "}}"}
            }
          }, {
            label: "if",
            action: {
              type: 'encapsulate',
              options: {pre: "{{#if: ", post: "| | }}"}
            }
          }, {
            label: "if long",
            action: {
              type: 'encapsulate',
              options: {pre: "<!--\n-->{{#if: ", post: "<!--\nthen-->|<!--\nelse-->|<!--\n-->}}<!-- end if\n-->"}
            }
          }, {
            label: "ifexist",
            action: {
              type: 'encapsulate',
              options: {pre: "{{#ifexist: ", post: "| | }}"}
            }
          }, {
            label: "ifexist long",
            action: {
              type: 'encapsulate',
              options: {pre: "<!--\n-->{{#ifexist: ", post: "<!--\nthen-->|<!--\nelse-->|<!--\n-->}}<!-- end ifexist\n-->"}
            }
          }, {
            label: "{{#expr:}}",
            action: {
              type: 'encapsulate',
              options: {pre: "{{#expr: ", peri : '1 + 6', post: "}}"}
            }
          }, {
            label: "switch",
            action: {
              type: 'encapsulate',
              options: {pre: "{{#switch: ", post: "<!--\n-->| one | two = <!--\n-->| #default = <!--\n-->}}<!-- end switch\n-->"}
            }
          }, {
            label: "{{DEFAULTSORT:}}",
            action: {
              type: 'encapsulate',
              options: {pre: "{{DEFAULTSORT:", post: "}}"}
            }
          }, {
            label: "{{DISPLAYTITLE:}}",
            action: {
              type: 'encapsulate',
              options: {pre: "{{DISPLAYTITLE:", post: "}}"}
            }
          },
          '{{PAGENAME}}',
          '{{PAGENAMEE}}',
          '{{FULLPAGENAME}}',
          '{{FULLPAGENAMEE}}'
          ]
        }
      }
  });
}
  //</source>
/* Check if view is in edit mode and that the required modules are available. Then, customize the toolbar … */
if ( $.inArray( mw.config.get( 'wgAction' ), ['edit', 'submit'] ) !== -1 ) {
      mw.loader.using( 'user.options', function () {
              if ( mw.user.options.get('usebetatoolbar') ) {
                      mw.loader.using( 'ext.wikiEditor.toolbar', function () {
                              $(document).ready( customizeUserToolbar );
                      } );
              }
      } );
}

$('#wpTextbox1').on('wikiEditor-toolbar-doneInitialSections', function () {
  var zitatTool = function () {
    return {
      dialogs: {
        'insert-zitat': {
          titleMsg: 'wikieditor-toolbar-tool-zitat-title',
          id: 'wikieditor-toolbar-zitat-dialog',
          html: '<div class="wikieditor-toolbar-dialog-wrapper">\
          <fieldset><div class="wikieditor-toolbar-table-form">\
            <div class="wikieditor-toolbar-field-wrapper">\
              <label for="wikieditor-toolbar-zitat-autor-search"\
                rel="wikieditor-toolbar-tool-zitat-autor-search">Autor</label>\
              <input type="text" id="wikieditor-toolbar-zitat-autor-search" placeholder="Autor suchen"/>\
              <label for="wikieditor-toolbar-zitat-text"\
                rel="wikieditor-toolbar-tool-zitat-text">Literaturschlüssel</label>\
              <input type="text" id="wikieditor-toolbar-zitat-text"/>\
            </div>\
          </div></fieldset>\
          </div>',
          init: function () {
            // Insert translated strings into labels
            $(this).find('[rel]').each(function () {
              $(this).text(mw.msg($(this).attr('rel')));
            });
            if (typeof mw !== "undefined"){
              mw.loader.using("jquery.ui.autocomplete", function () {
                $( "#wikieditor-toolbar-zitat-autor-search" ).autocomplete({
                  'source': function( request, response ) {
                    $.ajax({
                      url: mw.config.get("wgServer") + mw.config.get("wgScriptPath") + "/api.php",
                      dataType: "json",
                      data: {
                        action: "sfautocomplete",
                        substr: $('#wikieditor-toolbar-zitat-autor-search').val(),
                        category: "Literatur",
                        property: "Autor",
                        format: "json"
                      }
                    })
                    .done(function(data) {
                      //console.log(data);
                      response( $.map(data.sfautocomplete, function(item) {
                        console.log(item);
                        return {
                          label: item.titel,
                          value: item.titel
                        };
                      }));
                    });
                  },
                });
                $("#cluetip-title").css({cursor:"move"});
              });
            }
            
          },
          dialog: {
            dialogClass: 'wikiEditor-toolbar-dialog',
            width: 590,
            buttons: {
              'wikieditor-toolbar-tool-reference-insert': function () {// use translated default buttons of insert-reference
                var insertText = $('#wikieditor-toolbar-zitat-text').val();
                // Close the dialog
                $(this).dialog('close');
                $.wikiEditor.modules.toolbar.fn.doAction(
                  $(this).data('context'),
                  {
                    type: 'replace',
                    options: {
                      pre: '{{Zitat|',
                      peri: insertText,
                      post: '}}'
                    }
                  },
                  $(this)
                );
                // Restore form state
                $('#wikieditor-toolbar-zitat-text').val('');
              },
              'wikieditor-toolbar-tool-reference-cancel': function () {// use translated default buttons of insert-reference
                $(this).dialog('close');
              }
            },
            open: function () {
              if (!($(this).data('dialogkeypressset'))) {
                $(this).data('dialogkeypressset', true);
                // Execute the action associated with the first button
                // when the user presses Enter
                $(this).closest('.ui-dialog').keypress(function (e) {
                  if ((e.keyCode || e.which) === 13) {
                    var button = $(this).data('dialogaction') || $(this).find('button:first');
                    button.click();
                    e.preventDefault();
                  }
                });
                // Make tabbing to a button and pressing
                // Enter do what people expect
                $(this).closest('.ui-dialog').find('button').focus(function () {
                  $(this).closest('.ui-dialog').data('dialogaction', this);
                });
              }
            }
          }
        }
      }
    };//end return object
  };//modules zitat def

  $('#wpTextbox1').wikiEditor('addModule', zitatTool());

  $('#wpTextbox1').wikiEditor('addToToolbar', {
    'section': 'main',
    'group': 'insert',
    'tools': {
      'zitat': {
        'label': 'Quellenangabe {{Zitat}}', // or use labelMsg for a localized label, see above
        'type': 'button',
        'icon': 'insert-reference.png',
        'action': {
          'type': 'dialog',
          'module': 'insert-zitat'
        }
      }
    }
  });//END:wikiEditor('addToToolbar
});
// </pre>