%PDF- %PDF-
| Direktori : /www/varak.net/wiki.varak.net/vendor/oojs/oojs-ui/demos/pages/ |
| Current File : /www/varak.net/wiki.varak.net/vendor/oojs/oojs-ui/demos/pages/toolbars.js |
Demo.static.pages.toolbars = function ( demo ) {
var i, toolGroups, actionButton, actionButtonDelete, actionButtonDisabled, actionGroup, publishButton, AlertTool, PopupTool, ToolGroupTool,
setDisabled = function () { this.setDisabled( true ); },
$demo = demo.$element,
$containers = $(),
toolFactories = [],
toolGroupFactories = [],
toolbars = [],
configs = [
{ $overlay: true },
{ $overlay: true, actions: true },
{},
{ actions: true },
{ position: 'bottom' },
{ actions: true, position: 'bottom' },
{ $overlay: true },
{ $overlay: true, actions: true }
];
// Show some random accelerator keys that don't actually work
function getToolAccelerator( name ) {
return {
listTool1: 'Ctrl+Shift+1',
listTool2: 'Ctrl+Alt+2',
listTool3: 'Cmd+Enter',
listTool5: 'Shift+Down',
menuTool: 'Ctrl+M'
}[ name ];
}
for ( i = 0; i <= 7; i++ ) {
toolFactories.push( new OO.ui.ToolFactory() );
toolGroupFactories.push( new OO.ui.ToolGroupFactory() );
toolbars.push( new OO.ui.Toolbar( toolFactories[ i ], toolGroupFactories[ i ], configs[ i ] ) );
toolbars[ i ].getToolAccelerator = getToolAccelerator;
}
function createTool( toolbar, group, name, icon, title, init, onSelect, displayBothIconAndLabel ) {
var Tool = function () {
Tool.parent.apply( this, arguments );
this.toggled = false;
if ( init ) {
init.call( this );
}
};
OO.inheritClass( Tool, OO.ui.Tool );
Tool.prototype.onSelect = function () {
if ( onSelect ) {
onSelect.call( this );
} else {
this.toggled = !this.toggled;
this.setActive( this.toggled );
}
toolbars[ toolbar ].emit( 'updateState' );
};
Tool.prototype.onUpdateState = function () {};
Tool.static.name = name;
Tool.static.group = group;
Tool.static.icon = icon;
Tool.static.title = title;
Tool.static.displayBothIconAndLabel = !!displayBothIconAndLabel;
return Tool;
}
function createToolGroup( toolbar, group ) {
$.each( toolGroups[ group ], function ( i, tool ) {
var args = tool.slice();
args.splice( 0, 0, toolbar, group );
toolFactories[ toolbar ].register( createTool.apply( null, args ) );
} );
}
function createDisabledToolGroup( parent, name ) {
var DisabledToolGroup = function () {
DisabledToolGroup.parent.apply( this, arguments );
this.setDisabled( true );
};
OO.inheritClass( DisabledToolGroup, parent );
DisabledToolGroup.static.name = name;
DisabledToolGroup.prototype.onUpdateState = function () {
this.setLabel( 'Disabled' );
};
return DisabledToolGroup;
}
toolGroupFactories[ 0 ].register( createDisabledToolGroup( OO.ui.BarToolGroup, 'disabledBar' ) );
toolGroupFactories[ 0 ].register( createDisabledToolGroup( OO.ui.ListToolGroup, 'disabledList' ) );
toolGroupFactories[ 1 ].register( createDisabledToolGroup( OO.ui.MenuToolGroup, 'disabledMenu' ) );
AlertTool = function ( toolGroup, config ) {
// Parent constructor
OO.ui.PopupTool.call( this, toolGroup, $.extend( { popup: {
padded: true,
label: 'Alert head',
head: true
} }, config ) );
this.popup.$body.append( '<p>Alert contents</p>' );
};
OO.inheritClass( AlertTool, OO.ui.PopupTool );
AlertTool.static.name = 'alertTool';
AlertTool.static.group = 'popupTools';
AlertTool.static.icon = 'alert';
toolFactories[ 2 ].register( AlertTool );
toolFactories[ 4 ].register( AlertTool );
PopupTool = function ( toolGroup, config ) {
// Parent constructor
OO.ui.PopupTool.call( this, toolGroup, $.extend( { popup: {
padded: true,
label: 'Popup head',
head: true
} }, config ) );
this.popup.$body.append( '<p>Popup contents</p>' );
};
OO.inheritClass( PopupTool, OO.ui.PopupTool );
PopupTool.static.name = 'popupTool';
PopupTool.static.group = 'popupTools';
PopupTool.static.icon = 'help';
toolFactories[ 2 ].register( PopupTool );
toolFactories[ 4 ].register( PopupTool );
ToolGroupTool = function ( toolGroup, config ) {
// Parent constructor
OO.ui.ToolGroupTool.call( this, toolGroup, config );
};
OO.inheritClass( ToolGroupTool, OO.ui.ToolGroupTool );
ToolGroupTool.static.name = 'toolGroupTool';
ToolGroupTool.static.group = 'barTools';
ToolGroupTool.static.groupConfig = {
label: 'More',
include: [ { group: 'moreListTools' } ]
};
toolFactories[ 0 ].register( ToolGroupTool );
toolFactories[ 3 ].register( ToolGroupTool );
toolFactories[ 5 ].register( ToolGroupTool );
// Toolbars setup, in order of toolbar items appearance
// Toolbar
toolbars[ 0 ].setup( [
{
name: 'bar',
type: 'bar',
include: [ { group: 'barTools' } ],
demote: [ 'toolGroupTool' ]
},
{
name: 'disabledBar',
type: 'disabledBar',
include: [ { group: 'disabledBarTools' } ]
},
{
name: 'list',
type: 'list',
label: 'List',
icon: 'image',
include: [ { group: 'listTools' } ],
allowCollapse: [ 'listTool1', 'listTool6' ]
},
{
name: 'disabledList',
type: 'disabledList',
label: 'List',
icon: 'image',
include: [ { group: 'disabledListTools' } ]
},
{
name: 'autoDisabledList',
type: 'list',
label: 'Auto-disabling list',
icon: 'image',
include: [ { group: 'autoDisableListTools' } ]
},
{
name: 'catchAll',
label: 'Catch-all',
include: '*'
}
] );
// Toolbar with action buttons
toolbars[ 1 ].setup( [
{
name: 'menu',
type: 'menu',
header: 'Popup-/MenuToolGroup header',
icon: 'image',
include: [ { group: 'menuTools' } ]
},
{
name: 'disabledMenu',
type: 'disabledMenu',
icon: 'image',
include: [ { group: 'disabledMenuTools' } ]
},
{
name: 'cite',
type: 'bar',
include: [ { group: 'cite' } ]
},
{
name: 'citeDisabled',
type: 'bar',
include: [ { group: 'citeDisabled' } ]
}
] );
// Action toolbar for toolbars[ 3 ] below
toolbars[ 2 ].setup( [
{
name: 'popup',
include: [ { group: 'popupTools' } ]
},
{
name: 'overflow',
type: 'list',
icon: 'menu',
indicator: '',
include: [ { group: 'overflowTools' } ]
},
{
name: 'editorSwitch',
type: 'list',
icon: 'edit',
include: [ { group: 'editorSwitchTools' } ]
}
] );
// Word processor toolbar
toolbars[ 3 ].setup( [
{
name: 'history',
type: 'bar',
include: [ { group: 'history' } ]
},
{
name: 'format',
type: 'menu',
include: [ { group: 'formatTools' } ]
},
{
name: 'textStyle',
type: 'list',
icon: 'textStyle',
include: [ { group: 'styleTools' } ]
},
{
name: 'link',
type: 'bar',
include: [ { group: 'link' } ]
},
{
name: 'cite',
type: 'bar',
include: [ { group: 'cite' } ]
},
{
name: 'citeDisabled',
type: 'bar',
include: [ { group: 'citeDisabled' } ]
},
{
name: 'structure',
type: 'list',
icon: 'listBullet',
include: [ { group: 'structureTools' } ]
},
{
name: 'insert',
type: 'list',
label: 'Insert',
include: [ { group: 'insertTools' }, { group: 'autoDisableListTools' }, { group: 'unusedStuff' } ],
allowCollapse: [ 'comment', 'hieroglyphs', 'score', 'signature', 'gallery', 'chem', 'math', 'syntaxHighlightDialog', 'graph', 'referencesList' ]
},
{
name: 'specialCharacters',
type: 'bar',
include: [ { group: 'specialCharacters' } ]
}
] );
// Action toolbar for toolbars[ 5 ] below
toolbars[ 4 ].setup( [
{
name: 'popup',
include: [ { group: 'popupTools' } ]
},
{
name: 'alert',
include: [ { group: 'alertTools' } ]
},
{
name: 'overflow',
type: 'list',
icon: 'menu',
indicator: '',
include: [ { group: 'overflowTools' } ]
},
{
name: 'editorSwitch',
type: 'list',
icon: 'edit',
include: [ { group: 'editorSwitchTools' } ]
}
] );
// Word processor toolbar set to `position: 'bottom'`
toolbars[ 5 ].setup( [
{
name: 'history',
type: 'bar',
include: [ { group: 'history' } ]
},
{
name: 'format',
type: 'menu',
include: [ { group: 'formatTools' } ]
},
{
name: 'style',
type: 'list',
icon: 'textStyle',
include: [ { group: 'styleTools' } ]
},
{
name: 'link',
type: 'bar',
include: [ { group: 'link' } ]
},
{
name: 'cite',
type: 'bar',
include: [ { group: 'cite' } ]
},
{
name: 'citeDisabled',
type: 'bar',
include: [ { group: 'citeDisabled' } ]
},
{
name: 'structure',
type: 'list',
icon: 'listBullet',
include: [ { group: 'structureTools' } ]
},
{
name: 'insert',
type: 'list',
label: 'Insert',
include: [ { group: 'insertTools' }, { group: 'autoDisableListTools' }, { group: 'unusedStuff' } ]
},
{
name: 'specialCharacters',
type: 'bar',
include: [ { group: 'specialCharacters' } ]
}
] );
// Action toolbar for toolbars[7]
toolbars[ 6 ].setup( [
{
name: 'list',
type: 'list',
indicator: 'down',
flags: [ 'primary', 'progressive' ],
include: [ { group: 'listTools' } ]
}
] );
// Toolbar with action buttons, in a ButtonGroup
toolbars[ 7 ].setup( [
{
name: 'menu',
type: 'menu',
icon: 'image',
include: [ { group: 'menuTools' } ]
},
{
name: 'disabledMenu',
type: 'disabledMenu',
icon: 'image',
include: [ { group: 'disabledMenuTools' } ]
}
] );
actionButton = new OO.ui.ButtonWidget( { label: 'Action' } );
actionButtonDisabled = new OO.ui.ButtonWidget( { label: 'Disabled', disabled: true } );
toolbars[ 1 ].$actions.append( actionButton.$element, actionButtonDisabled.$element );
for ( i = 3; i <= 5; i += 2 ) {
publishButton = new OO.ui.ButtonWidget( { label: 'Publish changes…', flags: [ 'progressive', 'primary' ] } );
toolbars[ i ].$actions.append( toolbars[ i - 1 ].$element, publishButton.$element );
}
actionButtonDelete = new OO.ui.ButtonWidget( { label: 'Delete', flags: [ 'destructive' ] } );
publishButton = new OO.ui.ButtonWidget( { label: 'Publish changes…', flags: [ 'progressive', 'primary' ] } );
actionGroup = new OO.ui.ButtonGroupWidget( {
items: [ actionButtonDelete, publishButton, toolbars[ 6 ].items[ 0 ] ]
} );
toolbars[ 7 ].$actions.append( actionGroup.$element );
for ( i = 0; i < toolbars.length; i++ ) {
toolbars[ i ].emit( 'updateState' );
}
// ToolGroups definition, in alphabetical/disabledAlphabetical order
toolGroups = {
// Parameters like in createTool() function above (starting with 'name')
barTools: [
[ 'barTool', 'image', 'Basic tool in bar' ],
[ 'disabledBarTool', 'image', 'Basic tool in bar disabled', setDisabled ]
],
disabledBarTools: [
[ 'barToolInDisabled', 'image', 'Basic tool in disabled bar' ]
],
cite: [
[ 'citeTool', 'quotes', 'Cite', null, null, true ]
],
citeDisabled: [
[ 'citeToolDisabled', 'quotes', 'Cite', setDisabled, null, true ]
],
editorSwitchTools: [
[ 'visualEditor', 'eye', 'Visual editing' ],
[ 'wikitextEditor', 'wikiText', 'Source editing' ]
],
formatTools: [
[ 'paragraph', null, 'Paragraph' ],
[ 'heading2', null, 'Heading 2' ],
[ 'heading3', null, 'Sub-heading 1' ],
[ 'heading4', null, 'Sub-heading 2' ],
[ 'heading5', null, 'Sub-heading 3' ],
[ 'heading6', null, 'Sub-heading 4' ],
[ 'preformatted', null, 'Preformatted' ],
[ 'blockquote', null, 'Blockquote' ]
],
history: [
[ 'undoTool', 'undo', 'Undo' ],
[ 'redoTool', 'redo', 'Redo' ]
],
insertTools: [
[ 'media', 'image', 'First basic tool in list' ],
[ 'template', 'puzzle', 'Template' ],
[ 'table', 'table', 'Table' ],
[ 'comment', 'speechBubble', 'Comment' ],
[ 'hieroglyphs', null, 'Hieroglyphs' ],
[ 'score', null, 'Musical notation' ],
[ 'signature', 'signature', 'Your signature' ],
[ 'gallery', 'imageGallery', 'Gallery' ],
[ 'chem', null, 'Chemical formula' ],
[ 'math', null, 'Math formula' ],
[ 'syntaxHighlightDialog', 'markup', 'Code block' ],
[ 'graph', null, 'Graph' ],
[ 'referencesList', null, 'References list' ]
],
link: [
[ 'linkTool', 'link', 'Link' ]
],
listTools: [
[ 'listTool', 'image', 'First basic tool in list' ],
[ 'listTool1', 'image', 'Basic tool in list' ],
[ 'listTool3', 'image', 'Basic disabled tool in list', setDisabled ],
[ 'listTool6', 'image', 'A final tool' ]
],
moreListTools: [
[ 'listTool2', 'code', 'Another basic tool' ],
[ 'listTool4', 'image', 'More basic tools' ],
[ 'listTool5', 'ellipsis', 'And even more' ]
],
disabledListTools: [
[ 'listToolInDisabled', 'image', 'Basic tool in disabled list' ]
],
autoDisableListTools: [
[ 'autoDisableListTool', 'image', 'Click to disable this tool', null, setDisabled ]
],
menuTools: [
[ 'menuTool', 'image', 'Basic tool' ],
[ 'iconlessMenuTool', null, 'Tool without an icon' ],
[ 'disabledMenuTool', 'image', 'Basic tool disabled', setDisabled ]
],
disabledMenuTools: [
[ 'menuToolInDisabled', 'image', 'Basic tool' ]
],
overflowTools: [
[ 'meta', 'window', 'Options' ],
[ 'categories', 'image', 'Categories' ],
[ 'settings', 'pageSettings', 'Page settings' ],
[ 'advanced', 'advanced', 'Advanced settings' ],
[ 'textLanguage', 'language', 'Languages' ],
[ 'templatesUsed', 'puzzle', 'Templates used' ],
[ 'codeMirror', 'highlight', 'Syntax highlighting', setDisabled ],
[ 'changeDirectionality', 'textDirRTL', 'View as right-to-left' ],
[ 'find', 'articleSearch', 'Find and replace' ]
],
specialCharacters: [
[ 'specialCharacter', 'specialCharacter', 'Special character' ]
],
popupTools: [
[ 'popupTool', 'alertTool' ]
],
structureTools: [
[ 'bullet', 'listBullet', 'Bullet list' ],
[ 'number', 'listNumbered', 'Numbered list' ],
[ 'outdent', 'outdent', 'Decrease indentation' ],
[ 'indent', 'indent', 'Increase indentation' ]
],
styleTools: [
[ 'bold', 'bold', 'Bold' ],
[ 'italic', 'italic', 'Italic' ],
[ 'italic', 'italic', 'Italic' ],
[ 'superscript', 'superscript', 'Superscript' ],
[ 'subscript', 'subscript', 'Subscript' ],
[ 'strikethrough', 'strikethrough', 'Strikethrough' ],
[ 'code', 'code', 'Computer Code' ],
[ 'underline', 'underline', 'Underline' ],
[ 'language', 'language', 'Language' ],
[ 'big', 'bigger', 'Big' ],
[ 'small', 'smaller', 'Small' ],
[ 'clear', 'cancel', 'Clear Styling', setDisabled ]
],
unusedStuff: [
[ 'unusedTool', 'help', 'This tool is not explicitly used anywhere' ],
[ 'unusedTool1', 'help', 'And neither is this one' ]
]
};
// ToolGroup creation, in Toolbar numeric and ToolGroup alphabetical order
createToolGroup( 0, 'barTools' );
createToolGroup( 0, 'disabledBarTools' );
createToolGroup( 0, 'listTools' );
createToolGroup( 0, 'moreListTools' );
createToolGroup( 0, 'disabledListTools' );
createToolGroup( 0, 'autoDisableListTools' );
createToolGroup( 0, 'unusedStuff' );
createToolGroup( 1, 'cite' );
createToolGroup( 1, 'citeDisabled' );
createToolGroup( 1, 'menuTools' );
createToolGroup( 1, 'disabledMenuTools' );
createToolGroup( 6, 'listTools' );
createToolGroup( 7, 'menuTools' );
createToolGroup( 7, 'disabledMenuTools' );
for ( i = 3; i <= 5; i += 2 ) {
createToolGroup( i - 1, 'overflowTools' );
createToolGroup( i - 1, 'editorSwitchTools' );
createToolGroup( i, 'cite' );
createToolGroup( i, 'formatTools' );
createToolGroup( i, 'insertTools' );
createToolGroup( i, 'history' );
createToolGroup( i, 'link' );
createToolGroup( i, 'listTools' );
createToolGroup( i, 'moreListTools' );
createToolGroup( i, 'autoDisableListTools' );
createToolGroup( i, 'menuTools' );
createToolGroup( i, 'specialCharacters' );
createToolGroup( i, 'structureTools' );
createToolGroup( i, 'styleTools' );
createToolGroup( i, 'unusedStuff' );
}
for ( i = 0; i < toolbars.length; i++ ) {
if ( i === 2 || i === 4 || i === 6 ) {
// Action toolbars
continue;
}
$containers = $containers.add(
new OO.ui.PanelLayout( {
expanded: false,
framed: true
} ).$element
.addClass( 'demo-toolbar' )
);
$containers.last().append( toolbars[ i ].$element );
}
$containers.append( '' );
$demo.append(
new OO.ui.PanelLayout( {
expanded: false,
framed: false
} ).$element
.addClass( 'demo-container demo-toolbars' )
.attr( 'role', 'main' )
.append(
$containers.eq( 0 ).append( '<div class="demo-toolbars-contents">Toolbar</div>' ),
$containers.eq( 1 ).append( '<div class="demo-toolbars-contents">Toolbar with action buttons</div>' ),
$containers.eq( 2 ).append( '<div class="demo-toolbars-contents">Word processor toolbar</div>' ),
$containers.eq( 3 ).prepend( '<div class="demo-toolbars-contents">Word processor toolbar set to <code>position: 'bottom'</code></div>' ),
$containers.eq( 4 ).append( '<div class="demo-toolbars-contents">Toolbar with action buttons in a group</div>' )
)
);
for ( i = 0; i < toolbars.length; i++ ) {
toolbars[ i ].initialize();
}
};