MediaWiki: Editor.js: Unterschied zwischen den Versionen

Aus Joachim Camerarius (1500-1574)
Wechseln zu: Navigation, Suche
Keine Bearbeitungszusammenfassung
Markierung: Zurückgesetzt
Keine Bearbeitungszusammenfassung
Markierung: Zurückgesetzt
Zeile 15: Zeile 15:
                                     type: 'element',
                                     type: 'element',
                                     element: function ( context ) {
                                     element: function ( context ) {
                                        var $select = $( '<select>' ).attr( 'id', 'camerarius-attribute-select' );
                                         // Prepare attribute options
                                       
                                         // Populate dropdown with attributes
                                         var attributes = [
                                         var attributes = [
                                             { value: 'Auftraggeber', label: 'Auftraggeber' },
                                             { value: 'Auftraggeber', label: 'Auftraggeber' },
Zeile 38: Zeile 36:
                                             { value: 'Nachrufempfänger', label: 'Nachrufempfänger' }
                                             { value: 'Nachrufempfänger', label: 'Nachrufempfänger' }
                                         ];
                                         ];
                                          
 
                                         attributes.forEach( function( attr ) {
                                         // Create menu items
                                             $select.append( $( '<option>' ).val( attr.value ).text( attr.label ) );
                                         var menuItems = attributes.map( function( attr ) {
                                             return new OO.ui.MenuOptionWidget({
                                                data: attr.value,
                                                label: attr.label
                                            });
                                         });
                                         });
                                       
 
                                         // Add button to insert selected attribute
                                         // Create dropdown
                                         var insertButton = new OO.ui.ButtonWidget( {
                                         var dropdown = new OO.ui.DropdownWidget({
                                             label: 'Insert Attribute',
                                             label: 'Attribute-Allgemein',
                                             flags: [ 'progressive' ]
                                             menu: {
                                                items: menuItems
                                            }
                                         });
                                         });
                                          
 
                                         insertButton.on( 'click', function() {
                                         // Add event handler for selection
                                             var selectedAttr = $select.val();
                                         dropdown.getMenu().on( 'choose', function( menuOption ) {
                                             var selectedAttr = menuOption.getData();
                                             var insertText = '[[' + selectedAttr + '::]]';
                                             var insertText = '[[' + selectedAttr + '::]]';
                                             context.fn.insertText( insertText );
                                             context.fn.insertText( insertText );
                                         });
                                         });
                                       
 
                                         return $( '<div>' )
                                         return dropdown.$element;
                                            .append( $select )
                                            .append( insertButton.$element );
                                     }
                                     }
                                 }
                                 }

Version vom 6. Dezember 2024, 10:31 Uhr

// Check if we're in edit mode
if ( [ 'edit', 'submit' ].indexOf( mw.config.get( 'wgAction' ) ) !== -1 ) {
    // Add a hook handler for WikiEditor toolbar
    mw.hook( 'wikiEditor.toolbarReady' ).add( function ( $textarea ) {
        $textarea.wikiEditor( 'addToToolbar', {
            sections: {
                camerarius: {
                    type: 'section',
                    label: 'Camerarius-Attribute',
                    groups: {
                        attributes: {
                            tools: {
                                // Attribute Dropdown
                                attributeSelect: {
                                    type: 'element',
                                    element: function ( context ) {
                                        // Prepare attribute options
                                        var attributes = [
                                            { value: 'Auftraggeber', label: 'Auftraggeber' },
                                            { value: 'Beeinflusser', label: 'Beeinflusser' },
                                            { value: 'Briefpartner', label: 'Briefpartner' },
                                            { value: 'Erwähnte Körperschaft', label: 'Erwähnte Körperschaft' },
                                            { value: 'Erwähnte Person', label: 'Erwähnte Person' },
                                            { value: 'Erwähnter Ort', label: 'Erwähnter Ort' },
                                            { value: 'Erwähntes Werk', label: 'Erwähntes Werk' },
                                            { value: 'Forschungsliteratur', label: 'Forschungsliteratur' },
                                            { value: 'Gesprächspartner', label: 'Gesprächspartner' },
                                            { value: 'Initiator', label: 'Initiator' },
                                            { value: 'Lehrer', label: 'Lehrer' },
                                            { value: 'Schüler', label: 'Schüler' },
                                            { value: 'Student', label: 'Student' },
                                            { value: 'Unterstützer', label: 'Unterstützer' },
                                            { value: 'Werkadressat', label: 'Werkadressat' },
                                            { value: 'Widmender', label: 'Widmender' },
                                            { value: 'Widmungsempfänger', label: 'Widmungsempfänger' },
                                            { value: 'Nachrufempfänger', label: 'Nachrufempfänger' }
                                        ];

                                        // Create menu items
                                        var menuItems = attributes.map( function( attr ) {
                                            return new OO.ui.MenuOptionWidget({
                                                data: attr.value,
                                                label: attr.label
                                            });
                                        });

                                        // Create dropdown
                                        var dropdown = new OO.ui.DropdownWidget({
                                            label: 'Attribute-Allgemein',
                                            menu: {
                                                items: menuItems
                                            }
                                        });

                                        // Add event handler for selection
                                        dropdown.getMenu().on( 'choose', function( menuOption ) {
                                            var selectedAttr = menuOption.getData();
                                            var insertText = '[[' + selectedAttr + '::]]';
                                            context.fn.insertText( insertText );
                                        });

                                        return dropdown.$element;
                                    }
                                }
                            }
                        },
                        specialButtons: {
                            tools: {
                                // Beschreibungen Button
                                beschreibungenButton: {
                                    type: 'button',
                                    label: 'Beschreibungen',
                                    icon: 'bold',
                                    action: {
                                        type: 'encapsulate',
                                        options: {
                                            pre: '{{Beschreibungen|',
                                            post: '}}'
                                        }
                                    }
                                },
                                // MBW Button
                                mbwButton: {
                                    type: 'button',
                                    label: 'MBW',
                                    icon: 'link',
                                    action: {
                                        type: 'encapsulate',
                                        options: {
                                            pre: '[https://melanchthon.hadw-bw.de/regesten.html MBW - Regesten online], Nr. ',
                                            post: ''
                                        }
                                    }
                                },
                                // Link Button
                                linkButton: {
                                    type: 'button',
                                    label: 'Verlinkung',
                                    icon: 'linkExternal',
                                    action: {
                                        type: 'encapsulate',
                                        options: {
                                            pre: '[[',
                                            post: ']]'
                                        }
                                    }
                                },
                                // Binnenverweis Button
                                binnenverweisButton: {
                                    type: 'button',
                                    label: 'Binnenverweis',
                                    icon: 'redirect',
                                    action: {
                                        type: 'encapsulate',
                                        options: {
                                            pre: '[[',
                                            post: ']]'
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        });
    });
}