Merge branch 'develop' into builder-ui

This commit is contained in:
Samuel Georges 2015-08-28 06:23:24 +10:00
commit a8fdeb66e0
176 changed files with 5237 additions and 832 deletions

3
.gitignore vendored
View File

@ -15,3 +15,6 @@ nginx-ssl.error.log
php-errors.log
sftp-config.json
selenium.php
# for netbeans
nbproject

View File

@ -1,3 +1,10 @@
* **Build 292** (2015-08-28)
- Added a new controller method `fireViewEvent()` for extending views and partials (see Plugins > Events docs).
- Fixes a bug where the database falls asleep during an update.
* **Build 290** (2015-08-15)
- Added test base class for developers who want to test their plugins with phpunit. See the readme file in the **tests/** directory for more details.
* **Build 289** (2015-08-07)
- Added new `makeFormWidget()` method to `WidgetMaker` trait for rendering form widgets individually. This method is now available to backend controllers, controller behaviors and widgets themselves. Check to make sure your classes do not define a conflicting method of this name.

View File

@ -45,7 +45,7 @@ You can communicate with us using the following mediums:
* [Follow us on Twitter](http://twitter.com/octobercms) for announcements and updates.
* [Follow us on Facebook](http://facebook.com/octobercms) for announcements and updates.
* [Join us on IRC](https://kiwiirc.com/client/irc.freenode.net/?nick=Octonaut|?#october) to chat with us.
* [Join us on IRC](http://octobercms.com/chat) to chat with us.
### License

View File

@ -39,7 +39,8 @@
"autoload-dev": {
"classmap": [
"tests/TestCase.php",
"tests/UiTestCase.php"
"tests/UiTestCase.php",
"tests/PluginTestCase.php"
]
},
"scripts": {

View File

@ -116,6 +116,10 @@
.sweet-alert .btn-danger:focus{border-color:#d43f3a;outline:0}
.sweet-alert .btn-warning:focus{border-color:#eea236;outline:0}
.sweet-alert button::-moz-focus-inner{border:0}
.sweet-alert{text-align:right}
.sweet-alert h4{word-break:word-break;word-wrap:break-word;max-height:350px;overflow-y:auto;margin:10px 0 17px 0;color:#2b3e50;text-align:left;font-size:15px;line-height:23px}
.sweet-alert p{margin:0}
.sweet-alert p.text-muted{margin-bottom:20px;color:#555555}
.control-simplelist{font-size:13px}
.control-simplelist ul{padding-left:15px}
.control-simplelist.form-control ul{margin-bottom:0}
@ -228,9 +232,6 @@
.tooltip.in{opacity:1;filter:alpha(opacity=100)}
.oc-logo-white{background-image:url(../images/october-logo-white.svg);background-position:50% 50%;background-repeat:no-repeat;background-size:contain}
.oc-bg-logo{background-image:url(../images/october-logo-transparent.svg);background-position:50% 50%;background-repeat:no-repeat;background-size:50% auto}
.sweet-alert{text-align:left}
.sweet-alert h4{margin:10px 0 20px 0;color:#2b3e50;font-size:18px}
.sweet-alert p.text-muted{margin-bottom:20px;color:#555555}
.report-widget{padding:15px;background:white;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}
.report-widget h3{font-size:14px;color:#7e8c8d;text-transform:uppercase;font-weight:600;margin-top:0;margin-bottom:30px}
.report-widget .height-100{height:100px}
@ -582,7 +583,6 @@ body{webkit-font-smoothing:antialiased;font-family:'Open Sans',Arial,sans-serif;
.layout > .layout-row > .layout-cell.min-height{height:0}
.layout > .layout-row > .layout-cell.center{text-align:center}
.layout > .layout-row > .layout-cell.middle{vertical-align:middle}
.layout > .layout-row > .layout-cell.width-fix > form,.layout > .layout-row > .layout-cell.width-fix > div{display:inline-block}
.layout > .layout-row > .layout-cell.width-100{width:100px}
.layout > .layout-row > .layout-cell.width-120{width:120px}
.layout > .layout-row > .layout-cell.width-200{width:200px}
@ -595,7 +595,6 @@ body{webkit-font-smoothing:antialiased;font-family:'Open Sans',Arial,sans-serif;
.layout > .layout-row > .layout-cell.min-height{height:0}
.layout > .layout-row > .layout-cell.center{text-align:center}
.layout > .layout-row > .layout-cell.middle{vertical-align:middle}
.layout > .layout-row > .layout-cell.width-fix > form,.layout > .layout-row > .layout-cell.width-fix > div{display:inline-block}
.layout > .layout-row.min-size{height:0}
.layout > .layout-cell{display:table-cell;vertical-align:top;height:100%}
.layout > .layout-cell.width-100{width:100px}
@ -610,8 +609,8 @@ body{webkit-font-smoothing:antialiased;font-family:'Open Sans',Arial,sans-serif;
.layout > .layout-cell.min-height{height:0}
.layout > .layout-cell.center{text-align:center}
.layout > .layout-cell.middle{vertical-align:middle}
.layout > .layout-cell.width-fix > form,.layout > .layout-cell.width-fix > div{display:inline-block}
.whiteboard{background:white}
.layout-cell.width-fix > form,[data-calculate-width] > form,.layout-cell.width-fix > div,[data-calculate-width] > div{display:inline-block}
body.compact-container .layout.layout-container,body.compact-container .layout .layout-container{padding:0 !important}
body.slim-container .layout.layout-container,body.slim-container .layout .layout-container{padding-left:0 !important;padding-right:0 !important}
@media (max-width:768px){.layout .hide-on-small{display:none}
@ -638,7 +637,7 @@ nav#layout-mainmenu.navbar ul li.account a{padding-right:20px;position:relative;
nav#layout-mainmenu.navbar ul li.account img{width:25px;margin-right:7px;position:relative;top:-2px}
nav#layout-mainmenu.navbar ul.nav{display:inline-block}
nav#layout-mainmenu.navbar .menu-toggle{display:none}
nav#layout-mainmenu.navbar .toolbar-item{margin-right:0}
nav#layout-mainmenu.navbar .toolbar-item{padding-right:0}
nav#layout-mainmenu.navbar .toolbar-item:before,nav#layout-mainmenu.navbar .toolbar-item:after{margin-top:0}
nav#layout-mainmenu.navbar .toolbar-item:before{left:-12px}
nav#layout-mainmenu.navbar .toolbar-item:after{right:-12px}

View File

@ -15,43 +15,6 @@ $.ajaxPrefilter(function(options) {
}
})
/*
* Implement "Sweet Alert" with AJAX framework
*/
$(window).on('ajaxErrorMessage', function(event, message){
if (!message) return
swal({
title: message,
// type: 'error',
confirmButtonClass: 'btn-default'
})
// Prevent the default alert() message
event.preventDefault()
})
$(window).on('ajaxConfirmMessage', function(event, message){
if (!message) return
swal({
title: message,
// type: 'warning',
showCancelButton: true,
confirmButtonClass: 'btn-primary'
},
function(isConfirm){
isConfirm
? event.promise.resolve()
: event.promise.reject()
})
// Prevent the default confirm() message
event.preventDefault()
return true
})
/*
* Path helpers
*/

View File

@ -432,7 +432,8 @@ var $targetElement=e.target||e.srcElement;var btnIndex=-1;for(var i=0;i<$modalBu
if(keyCode===9){if(btnIndex===-1){$targetElement=$okButton;}else{if(btnIndex===$modalButtons.length-1){$targetElement=$modalButtons[0];}else{$targetElement=$modalButtons[btnIndex+1];}}
stopEventPropagation(e);$targetElement.focus();}else{if(keyCode===13||keyCode===32){if(btnIndex===-1){$targetElement=$okButton;}else{$targetElement=undefined;}}else if(keyCode===27&&!($cancelButton.hidden||$cancelButton.style.display==='none')){$targetElement=$cancelButton;}else{$targetElement=undefined;}
if($targetElement!==undefined){fireClick($targetElement,e);}}}
previousWindowKeyDown=window.onkeydown;window.onkeydown=handleKeyDown;function handleOnBlur(e){var $targetElement=e.target||e.srcElement,$focusElement=e.relatedTarget,modalIsVisible=hasClass(modal,'visible');if(modalIsVisible){var btnIndex=-1;if($focusElement!==null){for(var i=0;i<$modalButtons.length;i++){if($focusElement===$modalButtons[i]){btnIndex=i;break;}}
previousWindowKeyDown=window.onkeydown;window.onkeydown=handleKeyDown;function handleOnBlur(e){var $targetElement=e.target||e.srcElement,$focusElement=e.relatedTarget,modalIsVisible=hasClass(modal,'visible'),bootstrapModalIsVisible=document.querySelector('.control-popup.modal')||false;if(bootstrapModalIsVisible){return;}
if(modalIsVisible){var btnIndex=-1;if($focusElement!==null){for(var i=0;i<$modalButtons.length;i++){if($focusElement===$modalButtons[i]){btnIndex=i;break;}}
if(btnIndex===-1){$targetElement.focus();}}else{lastFocusedButton=$targetElement;}}}
$okButton.onblur=handleOnBlur;$cancelButton.onblur=handleOnBlur;window.onfocus=function(){window.setTimeout(function(){if(lastFocusedButton!==undefined){lastFocusedButton.focus();lastFocusedButton=undefined;}},0);};};window.swal.setDefaults=function(userParams){if(!userParams){throw new Error('userParams is required');}
if(typeof userParams!=='object'){throw new Error('userParams has to be a object');}
@ -713,9 +714,25 @@ $.each(name.split('.'),function(index,value){if(result[value]===undefined){resul
return false}
result=result[value]})
return result}
if(lang.locale===undefined){lang.locale='en'}
if(lang.locale===undefined){lang.locale=$('html').attr('lang')||'en'}
if(lang.loadedMessages===undefined){lang.load(lang.locale)}
return lang})($.oc.lang||{},$.oc.langMessages);+function($){"use strict";var Base=$.oc.foundation.base,BaseProto=Base.prototype
return lang})($.oc.lang||{},$.oc.langMessages);(function($){if($.oc===undefined)
$.oc={}
$.oc.alert=function alert(message){swal({title:message,confirmButtonClass:'btn-primary'})}
$.oc.confirm=function confirm(message,callback){swal({title:message,showCancelButton:true,confirmButtonClass:'btn-primary'},callback)}})(jQuery);$(window).on('ajaxErrorMessage',function(event,message){if(!message)return
$.oc.alert(message)
event.preventDefault()})
$(window).on('ajaxConfirmMessage',function(event,message){if(!message)return
$.oc.confirm(message,function(isConfirm){isConfirm?event.promise.resolve():event.promise.reject()})
event.preventDefault()
return true})
$(document).on('ready',function(){if(!window.swal)return
var swal=window.swal
window.sweetAlert=window.swal=function(message,callback){if(typeof message==='object'){message.confirmButtonText=message.confirmButtonText||$.oc.lang.get('alert.confirm_button_text')
message.cancelButtonText=message.cancelButtonText||$.oc.lang.get('alert.cancel_button_text')}
else{message={title:message,confirmButtonText:$.oc.lang.get('alert.confirm_button_text'),cancelButtonText:$.oc.lang.get('alert.cancel_button_text')}}
swal(message,callback)}})
+function($){"use strict";var Base=$.oc.foundation.base,BaseProto=Base.prototype
var Scrollpad=function(element,options){this.$el=$(element)
this.scrollbarElement=null
this.dragHandleElement=null
@ -867,7 +884,7 @@ return this}}(window.jQuery);(function($){$(window).load(function(){$('nav.navba
navbar=$(this),nav=$('ul.nav',navbar)
nav.verticalMenu($('a.menu-toggle',navbar))
$('li.with-tooltip > a',navbar).tooltip({container:'body',placement:'bottom'})
$('.layout-cell.width-fix',navbar).one('oc.widthFixed',function(){var dragScroll=$('[data-control=toolbar]',navbar).data('oc.dragScroll')
$('[data-calculate-width]',navbar).one('oc.widthFixed',function(){var dragScroll=$('[data-control=toolbar]',navbar).data('oc.dragScroll')
if(dragScroll){dragScroll.goToElement($('ul.nav > li.active',navbar),undefined,{'duration':0})}})})})})(jQuery);+function($){"use strict";if($.oc===undefined)
$.oc={}
var SideNav=function(element,options){this.options=options
@ -1073,7 +1090,7 @@ if(this.pageTitleTemplate===undefined)
this.pageTitleTemplate=$title.data('titleTemplate')
$title.text(this.pageTitleTemplate.replace('%s',title))}
OctoberLayout.prototype.updateLayout=function(title){var $children,$el,fixedWidth,margin
$('.layout-cell.width-fix').each(function(){$children=$(this).children()
$('.layout-cell.width-fix, [data-calculate-width]').each(function(){$children=$(this).children()
if($children.length>0){fixedWidth=0
$children.each(function(){$el=$(this)
margin=$el.data('oc.layoutMargin')
@ -1399,13 +1416,6 @@ return this}
$(document).ready(function(){$('[data-control=sidenav-tree]').sidenavTree()})}(window.jQuery);$.ajaxPrefilter(function(options){var token=$('meta[name="csrf-token"]').attr('content')
if(token){if(!options.headers)options.headers={}
options.headers['X-CSRF-TOKEN']=token}})
$(window).on('ajaxErrorMessage',function(event,message){if(!message)return
swal({title:message,confirmButtonClass:'btn-default'})
event.preventDefault()})
$(window).on('ajaxConfirmMessage',function(event,message){if(!message)return
swal({title:message,showCancelButton:true,confirmButtonClass:'btn-primary'},function(isConfirm){isConfirm?event.promise.resolve():event.promise.reject()})
event.preventDefault()
return true})
if($.oc===undefined)
$.oc={}
$.oc.backendUrl=function(url){var backendBasePath=$('meta[name="backend-base-path"]').attr('content')

View File

@ -0,0 +1,89 @@
/*
* Alerts
*
* Displays alert and confirmation dialogs
*
* JavaScript API:
* $.oc.alert()
* $.oc.confirm()
*
* Dependences:
* - Sweet Alert
*/
(function($){
if ($.oc === undefined)
$.oc = {}
$.oc.alert = function alert(message) {
swal({
title: message,
confirmButtonClass: 'btn-primary'
})
}
$.oc.confirm = function confirm(message, callback) {
swal({
title: message,
showCancelButton: true,
confirmButtonClass: 'btn-primary'
}, callback)
}
})(jQuery);
/*
* Implement alerts with AJAX framework
*/
$(window).on('ajaxErrorMessage', function(event, message){
if (!message) return
$.oc.alert(message)
// Prevent the default alert() message
event.preventDefault()
})
$(window).on('ajaxConfirmMessage', function(event, message){
if (!message) return
$.oc.confirm(message, function(isConfirm){
isConfirm
? event.promise.resolve()
: event.promise.reject()
})
// Prevent the default confirm() message
event.preventDefault()
return true
})
/*
* Override "Sweet Alert" functions to translate default buttons
*/
$(document).on('ready', function(){
if (!window.swal) return
var swal = window.swal
window.sweetAlert = window.swal = function(message, callback) {
if (typeof message === 'object') {
// Do not override if texts are provided
message.confirmButtonText = message.confirmButtonText || $.oc.lang.get('alert.confirm_button_text')
message.cancelButtonText = message.cancelButtonText || $.oc.lang.get('alert.cancel_button_text')
}
else {
message = {
title: message,
confirmButtonText: $.oc.lang.get('alert.confirm_button_text'),
cancelButtonText: $.oc.lang.get('alert.cancel_button_text')
}
}
swal(message, callback)
}
})

View File

@ -18,6 +18,7 @@
=require ../../../system/assets/vendor/prettify/prettify.js
=require october.lang.js
=require october.alert.js
=require october.scrollpad.js
=require october.verticalmenu.js
=require october.navbar.js

View File

@ -38,7 +38,7 @@ $.oc.lang = (function(lang, messages) {
}
if (lang.locale === undefined) {
lang.locale = 'en'
lang.locale = $('html').attr('lang') || 'en'
}
if (lang.loadedMessages === undefined) {

View File

@ -15,7 +15,9 @@
OctoberLayout.prototype.updateLayout = function(title) {
var $children, $el, fixedWidth, margin
$('.layout-cell.width-fix').each(function(){
// The entire 'width-fix' class can probably be removed if year >= 2017
// After checking that it isn't being used anywhere -sg
$('.layout-cell.width-fix, [data-calculate-width]').each(function(){
$children = $(this).children()
if ($children.length > 0) {

View File

@ -12,7 +12,7 @@
(function($){
$(window).load(function() {
$('nav.navbar').each(function(){
var
var
navbar = $(this),
nav = $('ul.nav', navbar)
@ -23,7 +23,7 @@
placement: 'bottom'
})
$('.layout-cell.width-fix', navbar).one('oc.widthFixed', function(){
$('[data-calculate-width]', navbar).one('oc.widthFixed', function() {
var dragScroll = $('[data-control=toolbar]', navbar).data('oc.dragScroll')
if (dragScroll) {
dragScroll.goToElement($('ul.nav > li.active', navbar), undefined, {'duration': 0})

View File

@ -1,5 +1,5 @@
/*
* SimpleList control.
* SimpleList control.
*
* Data attributes:
* - data-control="simplelist" - enables the simplelist plugin

View File

@ -0,0 +1,30 @@
//
// Custom alerts (Based on Sweet Alert)
// --------------------------------------------------
.sweet-alert {
text-align: right;
h4 {
word-break: word-break;
word-wrap: break-word;
max-height: 350px;
overflow-y: auto;
margin: 10px 0 17px 0;
color: #2b3e50;
text-align: left;
font-size: 15px;
line-height: 23px;
}
p {
margin: 0;
}
p.text-muted {
margin-bottom: 20px;
color: #555555;
}
}

View File

@ -43,23 +43,3 @@
background-repeat: no-repeat;
background-size: 50% auto;
}
//
// Alerts
//
.sweet-alert {
text-align: left;
h4 {
margin: 10px 0 20px 0;
color: #2b3e50;
font-size: 18px;
}
p.text-muted {
margin-bottom: 20px;
color: #555555;
}
}

View File

@ -112,12 +112,6 @@ body {
&.middle {
vertical-align: middle;
}
&.width-fix {
> form, > div {
display: inline-block;
}
}
}
display: table;
@ -148,6 +142,16 @@ body {
background: white;
}
//
// Calculated fixed width
//
.layout-cell.width-fix, [data-calculate-width] {
> form, > div {
display: inline-block;
}
}
//
// Layout styles
//

View File

@ -7,8 +7,6 @@ body.mainmenu-open {
}
nav#layout-mainmenu.navbar {
// .clearfix();
// position: relative;
background-color: @color-mainmenu;
height: auto;
padding: 0 0 0 20px;
@ -84,7 +82,7 @@ nav#layout-mainmenu.navbar {
.menu-toggle { display: none; }
.toolbar-item {
margin-right: 0;
padding-right: 0;
&:before, &:after { margin-top: 0; }
&:before { left: -12px; }

View File

@ -21,6 +21,7 @@
//
@import "core/boot.less";
@import "controls/alert.less";
@import "controls/simplelist.less";
@import "controls/scrollbar.less";
@import "controls/filelist.less";

View File

@ -386,7 +386,14 @@
function handleOnBlur(e) {
var $targetElement = e.target || e.srcElement,
$focusElement = e.relatedTarget,
modalIsVisible = hasClass(modal, 'visible');
modalIsVisible = hasClass(modal, 'visible'),
bootstrapModalIsVisible = document.querySelector('.control-popup.modal') || false;
if (bootstrapModalIsVisible) {
// Bootstrap will enforce focus on the existing model, so don't
// do anything here to prevent infinite loop.
return;
}
if (modalIsVisible) {
var btnIndex = -1; // Find the button - note, this is a nodelist, not an array.

View File

@ -0,0 +1,266 @@
<?php namespace Backend\Behaviors;
use Lang;
use Backend;
use Backend\Classes\ControllerBehavior;
/**
* Reorder Controller Behavior
* Used for reordering and sorting records.
*
* @package october\backend
* @author Alexey Bobkov, Samuel Georges
*/
class ReorderController extends ControllerBehavior
{
/**
* {@inheritDoc}
*/
protected $requiredProperties = ['reorderConfig'];
/**
* @var array Configuration values that must exist when applying the primary config file.
*/
protected $requiredConfig = ['modelClass'];
/**
* @var Model Import model
*/
public $model;
/**
* @var string Model attribute to use for the display name
*/
public $nameFrom = 'name';
/**
* @var bool Display parent/child relationships in the list.
*/
protected $showTree = false;
/**
* @var string Reordering mode:
* - simple: October\Rain\Database\Traits\Sortable
* - nested: October\Rain\Database\Traits\NestedTree
*/
protected $sortMode = null;
/**
* @var Backend\Classes\WidgetBase Reference to the widget used for the toolbar.
*/
protected $toolbarWidget;
/**
* Behavior constructor
* @param Backend\Classes\Controller $controller
*/
public function __construct($controller)
{
parent::__construct($controller);
/*
* Build configuration
*/
$this->config = $this->makeConfig($controller->reorderConfig, $this->requiredConfig);
/*
* Widgets
*/
if ($this->toolbarWidget = $this->makeToolbarWidget()) {
$this->toolbarWidget->bindToController();
}
/*
* Populate from config
*/
$this->nameFrom = $this->getConfig('nameFrom', $this->nameFrom);
}
//
// Controller actions
//
public function reorder()
{
$this->addJs('js/october.reorder.js', 'core');
$this->controller->pageTitle = $this->controller->pageTitle
?: Lang::get($this->getConfig('title', 'backend::lang.reorder.default_title'));
$this->validateModel();
$this->prepareVars();
}
//
// AJAX
//
public function onReorder()
{
$model = $this->validateModel();
/*
* Simple
*/
if ($this->sortMode == 'simple') {
if (!$ids = post('record_ids')) return;
if (!$orders = post('sort_orders')) return;
$model->setSortableOrder($ids, $orders);
}
/*
* Nested set
*/
elseif ($this->sortMode == 'nested') {
$sourceNode = $model->find(post('sourceNode'));
$targetNode = post('targetNode') ? $model->find(post('targetNode')) : null;
if ($sourceNode == $targetNode) return;
switch (post('position')) {
case 'before':
$sourceNode->moveBefore($targetNode);
break;
case 'after':
$sourceNode->moveAfter($targetNode);
break;
case 'child':
$sourceNode->makeChildOf($targetNode);
break;
default:
$sourceNode->makeRoot();
break;
}
}
}
//
// Reordering
//
/**
* Prepares common form data
*/
protected function prepareVars()
{
$this->vars['reorderRecords'] = $this->getRecords();
$this->vars['reorderModel'] = $this->model;
$this->vars['reorderSortMode'] = $this->sortMode;
$this->vars['reorderShowTree'] = $this->showTree;
$this->vars['reorderToolbarWidget'] = $this->toolbarWidget;
}
public function reorderRender()
{
return $this->reorderMakePartial('container');
}
public function reorderGetModel()
{
if ($this->model !== null) {
return $this->model;
}
$modelClass = $this->getConfig('modelClass');
if (!$modelClass) {
throw new ApplicationException('Please specify the modelClass property for reordering');
}
return $this->model = new $modelClass;
}
/**
* Returns the display name for a record.
* @return string
*/
public function reorderGetRecordName($record)
{
return $record->{$this->nameFrom};
}
/**
* Validate the supplied form model.
* @return void
*/
protected function validateModel()
{
$model = $this->controller->reorderGetModel();
$modelTraits = class_uses($model);
if (isset($modelTraits['October\Rain\Database\Traits\Sortable'])) {
$this->sortMode = 'simple';
}
elseif (isset($modelTraits['October\Rain\Database\Traits\NestedTree'])) {
$this->sortMode = 'nested';
$this->showTree = true;
}
else {
throw new ApplicationException('The model must implement the NestedTree or Sortable traits.');
}
return $model;
}
/**
* Returns all the records from the supplied model.
* @return Collection
*/
protected function getRecords()
{
$model = $this->controller->reorderGetModel();
$records = null;
if ($this->sortMode == 'simple') {
$records = $model
->orderBy($model->getSortOrderColumn())
->get()
;
}
elseif ($this->sortMode == 'nested') {
$records = $model->getEagerRoot();
}
return $records;
}
//
// Widgets
//
protected function makeToolbarWidget()
{
if ($toolbarConfig = $this->getConfig('toolbar')) {
$toolbarConfig = $this->makeConfig($toolbarConfig);
$toolbarWidget = $this->makeWidget('Backend\Widgets\Toolbar', $toolbarConfig);
}
else {
$toolbarWidget = null;
}
return $toolbarWidget;
}
//
// Helpers
//
/**
* Controller accessor for making partials within this behavior.
* @param string $partial
* @param array $params
* @return string Partial contents
*/
public function reorderMakePartial($partial, $params = [])
{
$contents = $this->controller->makePartial('reorder_'.$partial, $params + $this->vars, false);
if (!$contents) {
$contents = $this->makePartial($partial, $params);
}
return $contents;
}
}

View File

@ -0,0 +1,82 @@
/*
* Scripts for the Reorder controller behavior.
*
* The following functions are observed:
* - Simple sorting: Post back the original sort orders and the new ordered identifiers.
* - Nested sorting: Post back source and target nodes IDs and the move positioning.
*/
+function ($) { "use strict";
var ReorderBehavior = function() {
this.sortMode = null
this.simpleSortOrders = []
this.initSorting = function (mode) {
this.sortMode = mode
if (mode == 'simple') {
this.initSortingSimple()
}
$('#reorderTreeList').on('move.oc.treelist', $.proxy(this.processReorder, this))
}
this.processReorder = function(ev, sortData){
var postData
if (this.sortMode == 'simple') {
postData = { sort_orders: this.simpleSortOrders }
}
else if (this.sortMode == 'nested') {
postData = this.getNestedMoveData(sortData)
}
$('#reorderTreeList').request('onReorder', {
data: postData
})
}
this.getNestedMoveData = function (sortData) {
var
$el,
$item = sortData.item,
moveData = {
targetNode: 0,
sourceNode: $item.data('recordId'),
position: 'root'
}
if (($el = $item.next()) && $el.length) {
moveData.position = 'before'
}
else if (($el = $item.prev()) && $el.length) {
moveData.position = 'after'
}
else if (($el = $item.parents('li:first')) && $el.length) {
moveData.position = 'child'
}
if ($el.length) {
moveData.targetNode = $el.data('recordId')
}
return moveData
}
this.initSortingSimple = function () {
var sortOrders = []
$('#reorderTreeList li').each(function(){
sortOrders.push($(this).data('recordSortOrder'))
})
this.simpleSortOrders = sortOrders
}
}
$.oc.reorderBehavior = new ReorderBehavior;
}(window.jQuery);

View File

@ -0,0 +1,29 @@
<?php if ($reorderToolbarWidget): ?>
<!-- Reorder Toolbar -->
<div id="<?= $this->getId('reorderToolbar') ?>" class="reorder-toolbar">
<?= $reorderToolbarWidget->render() ?>
</div>
<?php endif ?>
<!-- Reorder List -->
<?= Form::open() ?>
<div
id="reorderTreeList"
class="control-treelist"
data-control="treelist"
<?= $reorderShowTree ? '' : 'data-nested="0"' ?>
data-handle="<?= $reorderShowTree ? 'a.move' : '> li > .record > a.move' ?>"
data-stripe-load-indicator>
<?php if ($reorderRecords): ?>
<ol id="reorderRecords">
<?= $this->reorderMakePartial('records', ['records' => $reorderRecords]) ?>
</ol>
<?php else: ?>
<p><?= Lang::get('backend::lang.reorder.no_records') ?></p>
<?php endif ?>
</div>
<?= Form::close() ?>
<script>
$.oc.reorderBehavior.initSorting('<?= $reorderSortMode ?>')
</script>

View File

@ -0,0 +1,19 @@
<?php foreach ($records as $record): ?>
<li data-record-id="<?= $record->id ?>" data-record-sort-order="<?= $record->sort_order ?>">
<div class="record">
<a href="javascript:;" class="move"></a>
<span><?= $this->reorderGetRecordName($record) ?></span>
<input name="record_ids[]" type="hidden" value="<?= $record->id ?>" />
</div>
<?php if ($reorderShowTree): ?>
<ol>
<?php if ($record->children): ?>
<?= $this->reorderMakePartial('records', ['records' => $record->children]) ?>
<?php endif ?>
</ol>
<?php endif ?>
</li>
<?php endforeach ?>

View File

@ -273,6 +273,11 @@ class NavigationManager
return false;
}
$definition = array_merge($definition, [
'code' => $sideCode,
'owner' => $owner
]);
$mainItem = $this->items[$itemKey];
if (isset($mainItem->sideMenu[$sideCode])) {
$definition = array_merge((array) $mainItem->sideMenu[$sideCode], $definition);

View File

@ -26,6 +26,7 @@
autocomplete="off"
maxlength="255" />
<!-- Submit Login -->
<button type="submit" class="btn btn-primary login-button">
<?= e(trans('backend::lang.account.login')) ?>
</button>
@ -38,6 +39,7 @@
</a>
</p>
<!-- Submit Login -->
</div>
<?= Form::close() ?>
<?= Form::close() ?>
<?= $this->fireViewEvent('backend.auth.extendSigninView') ?>

View File

@ -34,9 +34,9 @@ class FileUpload extends FormWidgetBase
//
/**
* @var string Prompt to display if no record is selected.
* @var string Prompt text to display for the upload button.
*/
public $prompt = 'backend::lang.fileupload.default_prompt';
public $prompt = null;
/**
* @var int Preview image width
@ -126,7 +126,7 @@ class FileUpload extends FormWidgetBase
$this->vars['cssDimensions'] = $this->getCssDimensions();
$this->vars['cssBlockDimensions'] = $this->getCssDimensions('block');
$this->vars['useCaption'] = $this->useCaption;
$this->vars['prompt'] = str_replace('%s', '<i class="icon-upload"></i>', trans($this->prompt));
$this->vars['prompt'] = $this->getPromptText();
}
protected function getFileList()
@ -166,6 +166,22 @@ class FileUpload extends FormWidgetBase
return $mode;
}
/**
* Returns the escaped and translated prompt text to display according to the type.
* @return string
*/
protected function getPromptText()
{
if ($this->prompt === null) {
$isMulti = ends_with($this->getDisplayMode(), 'multi');
$this->prompt = $isMulti
? 'backend::lang.fileupload.upload_file'
: 'backend::lang.fileupload.default_prompt';
}
return str_replace('%s', '<i class="icon-upload"></i>', e(trans($this->prompt)));
}
/**
* Returns the CSS dimensions for the uploaded image,
* uses auto where no dimension is provided.

View File

@ -38,10 +38,21 @@ class Repeater extends FormWidgetBase
*/
protected $defaultAlias = 'repeater';
/**
* @var int Count of repeated items.
*/
protected $indexCount = 0;
/**
* @var array Collection of form widgets.
*/
protected $formWidgets = [];
/**
* @var bool Stops nested repeaters populating from previous sibling.
*/
protected static $onAddItemCalled = false;
/**
* {@inheritDoc}
*/
@ -53,7 +64,9 @@ class Repeater extends FormWidgetBase
'sortable',
]);
$this->processExistingItems();
if (!self::$onAddItemCalled) {
$this->processExistingItems();
}
}
/**
@ -128,6 +141,8 @@ class Repeater extends FormWidgetBase
public function onAddItem()
{
self::$onAddItemCalled = true;
$this->indexCount++;
$this->prepareVars();

View File

@ -11,8 +11,8 @@
>
<!-- Upload Button -->
<button type="button" class="btn btn-sm btn-primary oc-icon-upload upload-button">
<?= e(trans('backend::lang.fileupload.upload_file')) ?>
<button type="button" class="btn btn-sm btn-default oc-icon-upload upload-button">
<?= $prompt ?>
</button>
<!-- Existing files -->

View File

@ -169,8 +169,8 @@
MarkdownEditor.prototype.createToolbar = function() {
var self = this,
$button,
$buttons = $('<div class="layout-cell toolbar-item" />'),
$fixedButtons = $('<div class="layout-cell toolbar-item width-fix" />')
$buttons = $('<div class="toolbar-item toolbar-primary" />'),
$fixedButtons = $('<div class="toolbar-item" data-calculate-width />')
$.each($.oc.markdownEditorButtons, function(code, button) {
$button = self.makeToolbarButton(code, button)

View File

@ -1,4 +1,3 @@
<?php if ($this->previewMode): ?>
<div class="form-control"><?= e($value) ?></div>
<?php else: ?>
@ -10,8 +9,7 @@
data-view-mode="<?= $mode ?>"
data-vendor-path="<?= URL::asset('/modules/backend/formwidgets/codeeditor/assets/vendor/ace') ?>">
<div class="layout control-toolbar editor-toolbar"></div>
<div class="control-toolbar editor-toolbar"></div>
<div class="editor-write layout-cell">
<textarea name="<?= $name ?>" id="<?= $this->getId('textarea') ?>"><?= e($value) ?></textarea>

View File

@ -19,4 +19,11 @@
</button>
</div>
<?= Form::close() ?>
</div>
</div>
<script>
setTimeout(
function(){ $('#<?= $this->getId('popup') ?> input.form-control:first').focus() },
310
)
</script>

View File

@ -1,5 +1,5 @@
<?php
/* Greek Language Updated on 2015-07-11 v1.03 */
/* Greek Language Updated on 2015-08-07 v1.04 */
return [
'auth' => [
'title' => 'Περιοχή Διαχείρισης',
@ -21,7 +21,7 @@ return [
],
'invalid_token' => [
'label' => 'Μη έγκυρο διακριτικό ασφαλείας',
]
]
],
'partial' => [
'not_found_name' => "Το μερικό ':name' δεν βρέθηκε.",
@ -108,7 +108,7 @@ return [
'code_comment' => 'Συμπληρώστε ένα μοναδικό κωδικό αν θέλετε να έχετε πρόσβαση σε αυτόν μέσω του API.',
'menu_label' => 'Ομάδες',
'list_title' => 'Διαχείριση Ομάδων',
'new' => 'Νέα Ομάδα Διαχειριστών',
'new' => 'Νέα Ομάδα',
'delete_confirm' => 'Είστε σίγουροι ότι θέλετε να διαγράψετε αυτήν την ομάδα;',
'return' => 'Επιστροφή στην λίστα των ομάδων',
'users_count' => 'Χρήστες',
@ -145,12 +145,12 @@ return [
'help' => 'Προσθέστε τίτλο και περιγραφή για αυτήν την επισύναψη.',
'title_label' => 'Τίτλος',
'description_label' => 'Περιγραφή',
'default_prompt' => 'Κάντε κλικ στο %s ή σύρετε ένα αρχείο εδώ για να το ανεβάσετε',//Click the %s or drag a file here to upload',
'default_prompt' => 'Κάντε κλικ στο %s ή σύρετε ένα αρχείο εδώ για να το ανεβάσετε',
'attachment_url' => 'URL Συνημμένου',
'upload_file' => 'Ανέβασμα αρχείου',
'upload_error' => 'Σφάλμα ανεβάσματος',
'remove_confirm' => 'Είστε σίγουροι;',
'remove_file' => 'Διαγραφή αρχείου',
'remove_file' => 'Διαγραφή αρχείου',
],
'form' => [
'create_title' => 'Νέο :name',
@ -187,11 +187,12 @@ return [
'close' => 'Κλείσιμο',
'confirm' => 'Επιβεβαίωση',
'reload' => 'Επαναφόρτιση',
'complete' => 'Ολοκλήρωση',
'ok' => 'Εντάξει',
'or' => 'ή',
'confirm_tab_close' => 'Είστε σίγουροι ότι θέλετε να κλείσετε αυτήν την καρτέλα; Οι μη αποθηκευμένες αλλαγές θα χαθούν.',
'behavior_not_ready' => 'Η συμπεριφορά δεν έχει αρχικοποιήσεις, ελέγξτε εάν έχετε καλέσει το initForm() στον χειριστή.',
'preview_no_files_message' => 'Τα αρχεία δεν ανέβηκαν',
'preview_no_files_message' => 'Δεν υπάρχουν αρχεία που ανέβηκαν.',
'preview_no_record_message' => 'Δεν είναι επιλεγμένη καμία εγγραφή.',
'select' => 'Επιλογή',
'select_all' => 'όλα',

View File

@ -237,6 +237,10 @@ return [
'unlink_name' => 'Unlink :name',
'unlink_confirm' => 'Are you sure?'
],
'reorder' => [
'default_title' => 'Reorder records',
'no_records' => 'There are no records available to sort.',
],
'model' => [
'name' => 'Model',
'not_found' => "Model ':class' with an ID of :id could not be found",
@ -261,6 +265,7 @@ return [
'code_folding' => 'Code folding',
'word_wrap' => 'Word wrap',
'highlight_active_line' => 'Highlight active line',
'auto_closing' => 'Auto close tags and special characters',
'show_invisibles' => 'Show invisible characters',
'show_gutter' => 'Show gutter',
'theme' => 'Color scheme'

View File

@ -19,6 +19,9 @@ return [
'help' => 'Vous navez pas lautorisation de consulter cette page.',
'cms_link' => 'Retour à ladministration'
],
'invalid_token' => [
'label' => 'La clé de sécurité est invalide'
]
],
'partial' => [
'not_found_name' => 'Le nom partiel ":name" est introuvable.'
@ -95,6 +98,7 @@ return [
'allow' => 'Autoriser',
'inherit' => 'Hériter',
'deny' => 'Interdire',
'account' => 'Compte',
'group' => [
'name' => 'Groupe',
'name_field' => 'Nom',
@ -140,7 +144,13 @@ return [
'attachment' => 'Pièce jointe',
'help' => 'Ajouter un titre et une description pour cette pièce jointe.',
'title_label' => 'Titre',
'description_label' => 'Description'
'description_label' => 'Description',
'default_prompt' => 'Cliquer sur %s ou déposer un fichier ici pour le télécharger',
'attachment_url' => 'Adresse URL du fichier joint',
'upload_file' => 'Télécharger le fichier',
'upload_error' => 'Erreur durant le téléchargement',
'remove_confirm' => 'Confirmer laction ?',
'remove_file' => 'Supprimer le fichier',
],
'form' => [
'create_title' => 'Nouveau :name',
@ -169,19 +179,21 @@ return [
'resetting' => 'Restauration',
'resetting_name' => 'Restauration de :name',
'undefined_tab' => 'Divers',
'field_off' => 'Désactivé',
'field_on' => 'Activé',
'field_off' => 'Off',
'field_on' => 'On',
'add' => 'Ajouter',
'apply' => 'Appliquer',
'cancel' => 'Annuler',
'close' => 'Fermer',
'confirm' => 'Confirmer',
'reload' => 'Recharger',
'complete' => 'Complet',
'ok' => 'OK',
'or' => 'ou',
'confirm_tab_close' => 'Confirmer la fermeture de cet onglet ? Les modifications réalisées seront perdues.',
'behavior_not_ready' => 'Le formulaire na pas encore été initialisé, vérifier que la méthode dappel de initForm() a été soumise au contrôleur.',
'preview_no_files_message' => 'Les fichiers ne sont pas envoyés.',
'preview_no_record_message' => 'Il ny a aucun enregistrement sélectionné.',
'select' => 'Sélectionner',
'select_all' => 'tout',
'select_none' => 'aucun',
@ -242,12 +254,13 @@ return [
'editor' => [
'menu_label' => 'Préférences de léditeur de code',
'menu_description' => 'Personnaliser la configuration de léditeur de code, telle que la taille de la police ou la coloration syntaxique.',
'font_size' => 'Taille de police',
'tab_size' => 'Taille de tabulation',
'font_size' => 'Taille de la police',
'tab_size' => 'Taille de la tabulation',
'use_hard_tabs' => 'Indentation par tabulation',
'code_folding' => 'Masquage du code',
'word_wrap' => 'Retour à la ligne',
'highlight_active_line' => 'Sélectionner la ligne active',
'auto_closing' => 'Fermer Automatiquement les tags et les caractères spéciaux',
'show_invisibles' => 'Afficher les caractères invisibles',
'show_gutter' => 'Afficher les numéros de ligne',
'theme' => 'Coloration syntaxique'

View File

@ -28,7 +28,7 @@ return [
],
'account' => [
'sign_out' => 'Kijelentkezés',
'login' => 'Belép',
'login' => 'Belépés',
'reset' => 'Alaphelyzet',
'restore' => 'Visszaállítás',
'login_placeholder' => 'felhasználónév',
@ -45,7 +45,7 @@ return [
'reset_error' => 'A megadott jelszó átállítási adatok érvénytelenek. Próbálja újra!',
'reset_fail' => 'Nem állítható vissza a jelszava!',
'apply' => 'Alkalmaz',
'cancel' => 'Mégse',
'cancel' => 'Mégsem',
'delete' => 'Törlés',
'ok' => 'OK'
],
@ -79,19 +79,19 @@ return [
'list_title' => 'Adminisztrátorok kezelése',
'new' => 'Új adminisztrátor',
'login' => 'Felhasználónév',
'first_name' => 'Keresztnév',
'last_name' => 'Vezetéknév',
'first_name' => 'Vezetéknév',
'last_name' => 'Keresztnév',
'full_name' => 'Teljes név',
'email' => 'E-mail cím',
'groups' => 'Csoportok',
'groups_comment' => 'Adja meg, hogy ez a felhasználó melyik csoportokba tartozik.',
'groups_comment' => 'Adja meg, hogy a felhasználó melyik csoportokba tartozik.',
'avatar' => 'Profilkép',
'password' => 'Jelszó',
'password_confirmation' => 'Jelszó megerősítése',
'permissions' => 'Engedélyek',
'account' => 'Fiók',
'superuser' => 'Szuperadmin',
'superuser_comment' => 'Korlátlan hozzáférés a teljes admin felülethez.',
'superuser_comment' => 'Korlátlan hozzáférést biztosít a teljes admin felülethez.',
'send_invite' => 'Meghívó küldése e-mailben',
'send_invite_comment' => 'A fentebb megadott adatokat tartalmazza.',
'delete_confirm' => 'Valóban törölni akarja ezt az adminisztrátort?',
@ -183,10 +183,11 @@ return [
'field_on' => 'Be',
'add' => 'Hozzáadás',
'apply' => 'Alkalmaz',
'cancel' => 'Mégse',
'cancel' => 'Mégsem',
'close' => 'Bezárás',
'confirm' => 'Megerősítés',
'reload' => 'Újratöltés',
'complete' => 'Teljes',
'ok' => 'OK',
'or' => 'vagy',
'confirm_tab_close' => 'Valóban be akarja zárni a fület? El fognak veszni a nem mentett módosítások.',
@ -215,7 +216,7 @@ return [
'add_a_new' => 'Új :name hozzáadása',
'link_selected' => 'Kijelöltek csatolása',
'link_a_new' => 'Új :name csatolása',
'cancel' => 'Mégse',
'cancel' => 'Mégsem',
'close' => 'Bezárás',
'add_name' => ':name hozzáadása',
'create' => 'Létrehozás',
@ -235,6 +236,10 @@ return [
'unlink_name' => ':name csatolásának megszüntetése',
'unlink_confirm' => 'Biztos benne?'
],
'reorder' => [
'default_title' => 'Elemek újrarendezése',
'no_records' => 'Nincs elérhető tartalom a rendezéshez.'
],
'model' => [
'name' => 'Modell',
'not_found' => "Nem található :id azonosítójú ':class' modell.",
@ -259,6 +264,7 @@ return [
'code_folding' => 'Kód összecsukása',
'word_wrap' => 'Tördelés',
'highlight_active_line' => 'Aktív sor kiemelése',
'auto_closing' => 'Automatikus kódlezárás',
'show_invisibles' => 'Láthatatlan karakterek megjelenítése',
'show_gutter' => 'Margó megjelenítése',
'theme' => 'Színséma'
@ -279,8 +285,8 @@ return [
'menu_label' => 'Admin felület',
'menu_description' => 'A kinézetének módosítása és egyedivé tétele.',
'brand' => 'Márka',
'logo' => 'Embléma',
'logo_description' => 'Töltsön fel egy emblémát az admin oldalon való használathoz.',
'logo' => 'Logó',
'logo_description' => 'A kép a bejelentkezési felületen, illetve egyes oldalak háttereként fog megjelenni.',
'app_name' => 'Weboldal neve',
'app_name_description' => 'Ez a név látható a bejelentkező képernyőn.',
'app_tagline' => 'Weboldal szlogenje',
@ -303,7 +309,7 @@ return [
'hint' => 'Ez a napló a felhasználók sikeres bejelentkezési kísérleteit listázza ki. A bejegyzéseket :days napig őrzi meg a rendszer.',
'menu_label' => 'Hozzáférésnapló',
'menu_description' => 'A felhasználók sikeres bejelentkezéseinek megtekintése.',
'created_at' => 'Dátum és idő',
'created_at' => 'Időpont',
'login' => 'Felhasználónév',
'ip_address' => 'IP cím',
'first_name' => 'Keresztnév',

View File

@ -1,24 +1,30 @@
<?php
return [
'auth' => [
'title' => 'Area di Amministrazione'
],
'field' => [
'invalid_type' => 'Il tipo di campo :type non è valido.',
'options_method_not_exists' => 'La classe :model deve definire un metodo :method() che ritorni le opzioni per il campo ":field".',
'options_method_not_exists' => 'La classe :model deve definire un metodo :method() che ritorni le opzioni per il campo ":field".'
],
'widget' => [
'not_registered' => "Nessun widget ':name' è stato registrato",
'not_bound' => "Nessun widget ':name' è stato legato al controller",
],
'page' => [
'untitled' => "Senza titolo",
'untitled' => 'Senza titolo',
'access_denied' => [
'label' => "Accesso negato",
'label' => 'Accesso negato',
'help' => "Non hai le autorizzazioni necessarie per accedere a questa pagina.",
'cms_link' => "Ritorna al pannello di controllo",
'cms_link' => 'Ritorna al pannello di controllo'
],
'invalid_token' => [
'label' => 'Token di protezione non valido'
]
],
'partial' => [
'not_found_name' => "La vista parziale ':name' non è stata trovata.",
'not_found_name' => "La vista parziale ':name' non è stata trovata."
],
'account' => [
'sign_out' => 'Esci',
@ -27,26 +33,27 @@ return [
'restore' => 'Ripristina',
'login_placeholder' => 'login',
'password_placeholder' => 'password',
'forgot_password' => "Dimenticato la password?",
'enter_email' => "Inserisci in tuo indirizzo e-mail",
'enter_login' => "Inserisci il login.",
'email_placeholder' => "email",
'enter_new_password' => "Inserisci una nuova password",
'password_reset' => "Reimposta password",
'restore_success' => "Le istruzioni per reimpostare la password sono state inviate al tuo indirizzo e-mail.",
'restore_error' => "Nessun utente con login ':login' è stato trovato.",
'reset_success' => "La tua password è stata reimpostata con successo. Ora puoi effettuare l'accesso.",
'reset_error' => "I dati forniti per la reimpostazione della password non sono validi. Riprova!",
'reset_fail' => "Impossibile ripristinare la password!",
'forgot_password' => 'Password dimenticata?',
'enter_email' => 'Inserisci in tuo indirizzo e-mail',
'enter_login' => 'Inserisci il tuo username.',
'email_placeholder' => 'email',
'enter_new_password' => 'Inserisci una nuova password',
'password_reset' => 'Reimposta password',
'restore_success' => 'Le istruzioni per reimpostare la password sono state inviate al tuo indirizzo e-mail.',
'restore_error' => "Nessun utente con username ':login' è stato trovato.",
'reset_success' => 'La tua password è stata reimpostata con successo. Ora puoi effettuare l\'accesso.',
'reset_error' => 'I dati forniti per la reimpostazione della password non sono validi. Riprova!',
'reset_fail' => 'Impossibile ripristinare la password!',
'apply' => 'Applica',
'cancel' => 'Annulla',
'delete' => 'Elimina',
'ok' => 'OK',
'ok' => 'OK'
],
'dashboard' => [
'menu_label' => 'Dashboard',
'widget_label' => 'Widget',
'widget_width' => 'Larghezza',
'full_width' => 'intera larghezza',
'add_widget' => 'Aggiungi widget',
'widget_inspector_title' => 'Configurazione widget',
'widget_inspector_description' => 'Configura il widget',
@ -61,39 +68,50 @@ return [
'status' => [
'widget_title_default' => 'Stato del sistema',
'online' => 'online',
'update_available' => '{0} aggiornamenti disponibili!|{1} aggiornamento disponibile!|[2,Inf] aggiornamenti disponibili!',
'maintenance' => 'in manutenzione',
'update_available' => '{0} aggiornamenti disponibili!|{1} aggiornamento disponibile!|[2,Inf] aggiornamenti disponibili!'
]
],
'user' => [
'name' => 'Amministratori',
'name' => 'Amministratore',
'menu_label' => 'Amministratori',
'menu_description' => 'Gestisci gli utenti amministratori, i gruppi e le autorizzazioni.',
'list_title' => 'Gestisci amministratori',
'new' => 'Nuovo amministratorre',
'login' => "Login",
'first_name' => "Nome",
'last_name' => "Cognome",
'full_name' => "Nome completo",
'email' => "Indirizzo e-mail",
'groups' => "Gruppi",
'groups_comment' => "Seleziona i gruppi a cui appartiene l'utente.",
'avatar' => "Avatar",
'password' => "Password",
'password_confirmation' => "Conferma password",
'superuser' => "Super User",
'superuser_comment' => "Seleziona per consentire all'utente di accedere a tutte le aree.",
'new' => 'Nuovo amministratore',
'login' => 'Login',
'first_name' => 'Nome',
'last_name' => 'Cognome',
'full_name' => 'Nome completo',
'email' => 'Indirizzo e-mail',
'groups' => 'Gruppi',
'groups_comment' => 'Seleziona i gruppi a cui appartiene l\'utente.',
'avatar' => 'Avatar',
'password' => 'Password',
'password_confirmation' => 'Conferma password',
'permissions' => 'Autorizzazioni',
'account' => 'Account',
'superuser' => 'Super User',
'superuser_comment' => 'Seleziona per consentire all\'utente di accedere a tutte le aree.',
'send_invite' => 'Invia invito tramite e-mail',
'send_invite_comment' => 'Seleziona per inviare un invito all\'utente tramite e-mail',
'send_invite_comment' => 'Invia un messaggio di benvenuto contenente le credenziali per l\'accesso.',
'delete_confirm' => 'Vuoi davvero eliminare questo amministratore?',
'return' => 'Ritorna alla lista degli amministratori',
'allow' => 'Consenti',
'inherit' => 'Eredita',
'deny' => 'Nega',
'group' => [
'name' => 'Gruppo',
'name_field' => 'Nome',
'description_field' => 'Descrizione',
'is_new_user_default_field' => 'Aggiungi i nuovi amministratori a questo gruppo per impostazione predefinita.',
'code_field' => 'Codice',
'code_comment' => 'Inserisci un codice univoco se vuoi accedere a questo elementro tramite API.',
'menu_label' => 'Gruppi',
'list_title' => 'Gestisci gruppi',
'new' => 'Nuovo gruppo amministratore',
'new' => 'Nuovo gruppo',
'delete_confirm' => 'Vuoi davvero eliminare questo gruppo amministratore?',
'return' => 'Ritorna alla lista dei gruppi',
'users_count' => 'Utenti'
],
'preferences' => [
'not_authenticated' => 'Non c\'è nessun utente autenticato per cui caricare o salvare le preferenze.'
@ -110,30 +128,56 @@ return [
'behavior_not_ready' => 'L\'elenco non è stato inizializzato, controlla di aver chiamato il metodo makeLists() nel controller.',
'invalid_column_datetime' => "Il valore della colonna ':column' non è un oggetto di tipo DateTime, hai dimenticato un riferimento a \$dates nel modello?",
'pagination' => 'Record visualizzati: :from-:to di :total',
'prev_page' => 'Pagina precedente',
'next_page' => 'Pagina successiva',
'loading' => 'Caricamento...',
'setup_title' => 'Configura elenco',
'setup_help' => 'Utilizza le checkbox per selezionare le colonne che vuoi visualizzare nell\'elenco. Puoi cambiare la posizione delle colonne trascinandole verso l\'alto o il basso.',
'records_per_page' => 'Record per pagina',
'records_per_page_help' => 'Seleziona il numero di record da visualizzare su ogni pagina. Ricorda che un numero elevato di record in una singola pagina può ridurre le prestazioni.'
'records_per_page_help' => 'Seleziona il numero di record da visualizzare su ogni pagina. Ricorda che un numero elevato di record in una singola pagina può ridurre le prestazioni.',
'delete_selected' => 'Elimina selezionati',
'delete_selected_empty' => 'Non hai selezionato nessun record da eliminare.',
'delete_selected_confirm' => 'Elimina i record selezionati?',
'delete_selected_success' => 'I record selezionati sono stati eliminati con successo.'
],
'fileupload' => [
'attachment' => 'Allegato',
'help' => 'Aggiungi un titolo e una descrizione per questo allegato.',
'title_label' => 'Titolo',
'description_label' => 'Descrizione',
'default_prompt' => 'Fai clic su %s o trascina un file qui per eseguire il caricamento',
'attachment_url' => 'URL Allegato',
'upload_file' => 'Carica file',
'upload_error' => 'Errore nel caricamento',
'remove_confirm' => 'Sei sicuro?',
'remove_file' => 'Rimuovi file'
],
'form' => [
'create_title' => "Nuovo :name",
'update_title' => "Modifica :name",
'preview_title' => "Anteprima :name",
'create_title' => 'Crea :name',
'update_title' => 'Modifica :name',
'preview_title' => 'Anteprima :name',
'create_success' => ':name creato con successo',
'update_success' => ':name modificato con successo',
'delete_success' => ':name eliminato con successo',
'missing_id' => "L'ID del record non è stato specificato.",
'missing_id' => 'L\'ID del record non è stato specificato.',
'missing_model' => 'Il form utilizzato nella classe :class non ha un modello definito.',
'missing_definition' => "Il form non contiene il campo ':field'.",
'not_found' => 'Nessun record per l\'ID :id è stato trovato.',
'not_found' => 'Nessun record con ID :id è stato trovato.',
'action_confirm' => 'Sei sicuro?',
'create' => 'Crea',
'create_and_close' => 'Crea e chiudi',
'creating' => 'Creazione in corso...',
'creating_name' => 'Creazione :name in corso...',
'save' => 'Salva',
'save_and_close' => 'Salva e chiudi',
'saving' => 'Salvataggio in corso...',
'saving_name' => 'Salvataggio :name in corso...',
'delete' => 'Elimina',
'deleting' => 'Eliminazione in corso...',
'deleting_name' => 'Eliminazione :name in corso...',
'reset_default' => 'Ripristina predefiniti',
'resetting' => 'Ripristino in corso',
'resetting_name' => 'Ripristino :name in corso',
'undefined_tab' => 'Varie',
'field_off' => 'Off',
'field_on' => 'On',
@ -141,44 +185,71 @@ return [
'apply' => 'Applica',
'cancel' => 'Annulla',
'close' => 'Chiudi',
'confirm' => 'Conferma',
'reload' => 'Ricarica',
'complete' => 'Completo',
'ok' => 'OK',
'or' => 'o',
'confirm_tab_close' => 'Vuoi davvero chiudere il tab? Le modifiche non salvate andranno perse.',
'behavior_not_ready' => 'Il form non è stato inizializzato, verifica di aver chiamato il metodo initForm() nel controller.',
'preview_no_files_message' => 'I file non sono stati caricati',
'preview_no_files_message' => 'Non ci sono file caricati.',
'preview_no_record_message' => 'Nessun record selezionato.',
'select' => 'Seleziona',
'select_all' => 'tutti',
'select_none' => 'nessuno',
'select_placeholder' => 'seleziona',
'insert_row' => 'Inserisci riga',
'delete_row' => 'Elimina riga',
'concurrency_file_changed_title' => 'Il file è stato cambiato',
'concurrency_file_changed_description' => "Il file che stavi modificando è stato cambiato da un altro utente. Puoi ricaricare il file e perdere le tue modifiche oppure sovrascrivere il file sul disco."
],
'relation' => [
'missing_config' => "La relazione non ha nessuna configurazione per ':config'.",
'missing_definition' => "La relazione non contiene una definizione per il campo ':field'.",
'missing_model' => "La relazione utilizzata nella classe :class non ha un modello definito.",
'invalid_action_single' => "L'azione non può essere eseguita su una relazione singola.",
'invalid_action_multi' => "L'azione non può essere eseguita su una relazione multipla.",
'add' => "Aggiungi",
'add_name' => "Aggiungi :name",
'create' => "Crea",
'create_name' => "Crea :name",
'update' => "Aggiorna",
'update_name' => "Aggiorna :name",
'remove' => "Rimuovi",
'remove_name' => "Rimuovi :name",
'delete' => "Elimina",
'delete_name' => "Elimina :name",
'missing_model' => 'La relazione utilizzata nella classe :class non ha un modello definito.',
'invalid_action_single' => 'L\'azione non può essere eseguita su una relazione singola.',
'invalid_action_multi' => 'L\'azione non può essere eseguita su una relazione multipla.',
'help' => 'Fai clic su un elemento per aggiungere',
'related_data' => 'Dati :name correlati',
'add' => 'Aggiungi',
'add_selected' => 'Aggiungi selezionati',
'add_a_new' => 'Aggiungi nuovo :name',
'link_selected' => 'Collega selezionati',
'link_a_new' => 'Collega nuovo :name',
'cancel' => 'Annulla',
'close' => 'Chiudi',
'add_name' => 'Aggiungi :name',
'create' => 'Crea',
'create_name' => 'Crea :name',
'update' => 'Aggiorna',
'update_name' => 'Aggiorna :name',
'preview' => 'Visualizza',
'preview_name' => 'Visualizza :name',
'remove' => 'Rimuovi',
'remove_name' => 'Rimuovi :name',
'delete' => 'Elimina',
'delete_name' => 'Elimina :name',
'delete_confirm' => 'Sei sicuro?',
'link' => 'Collega',
'link_name' => 'Collega :name',
'unlink' => 'Scollega',
'unlink_name' => 'Scollega :name',
'unlink_confirm' => 'Sei sicuro?'
],
'model' => [
'name' => "Modello",
'not_found' => "Nessun modello di ':class' con l'ID :id trovato.",
'missing_id' => "Nessun ID specificato.",
'name' => 'Modello',
'not_found' => "Nessun modello ':class' con ID :id trovato.",
'missing_id' => 'Nessun ID specificato per la ricerca.',
'missing_relation' => "Il modello ':class' non contiene una definizione per la relazione ':relation'.",
'invalid_class' => "Il modello :model utilizzato nella classe :class non è valido, deve ereditare la classe Model.",
'missing_method' => "Il modello ':class' non contiene un metodo ':method'.",
'invalid_class' => "Il modello :model utilizzato nella classe :class non è valido, deve ereditare la classe \Model.",
'mass_assignment_failed' => "Assegnazione massiva fallita per l'attributo ':attribute' del modello.",
],
'warnings' => [
'tips' => 'Suggerimenti di configurazione del sistema',
'tips' => 'Suggerimenti per la configurazione del sistema',
'tips_description' => 'Ci sono elementi a cui è necessario prestare attenzione al fine di configurare il sistema in maniera corretta.',
'permissions' => 'La cartella :name o le sue sottocartelle non sono scrivibili da PHP. Imposta le corrette autorizzazioni per il server web su questa cartella.',
'extension' => 'L\'estenzione di PHP :name non è installata. Installa questa libreria ed attiva l\'estensione.'
'extension' => 'L\'estensione di PHP :name non è installata. Installa questa libreria ed attiva l\'estensione.'
],
'editor' => [
'menu_label' => 'Preferenze editor di codice',
@ -191,23 +262,41 @@ return [
'highlight_active_line' => 'Evidenzia la linea attiva',
'show_invisibles' => 'Mostra caratteri invisibili',
'show_gutter' => 'Visualizza numeri di linea',
'theme' => 'Schema di colori',
'theme' => 'Schema di colori'
],
'tooltips' => [
'preview_website' => 'Anteprima del sito web'
],
'mysettings' => [
'menu_label' => 'Impostazioni personali',
'menu_description' => 'Impostazioni legate al tuo account amministratore',
'menu_description' => 'Impostazioni legate al tuo account amministratore'
],
'myaccount' => [
'menu_label' => 'Il mio account',
'menu_description' => 'Aggiorna i dettagli del tuo account, come il nome, l\'indirizzo e-mail e la password.',
'menu_keywords' => 'sicurezza login'
],
'branding' => [
'menu_label' => 'Personalizza pannello di controllo',
'menu_description' => 'Personalizza l\'area di amministrazione, come il nome, i colori ed il logo.',
'brand' => 'Marchio',
'logo' => 'Logo',
'logo_description' => 'Carica un logo personalizzato da utilizzare nel pannello di controllo.',
'app_name' => 'Nome dell\'applicazione',
'app_name_description' => 'Questo campo verrà visualizzato nella barra del titolo del pannello di controllo.',
'app_tagline' => 'Slogan dell\'applicazione',
'app_tagline_description' => 'Questo campo verrà visualizzato nella schermata di login del pannello di controllo.',
'colors' => 'Colori',
'primary_light' => 'Principale (Chiaro)',
'primary_dark' => 'Principale (Scuro)',
'secondary_light' => 'Secondario (Chiaro)',
'secondary_dark' => 'Secondario (Scuro)',
'styles' => 'Stili',
'custom_stylesheet' => 'Foglio di stile personalizzato'
],
'backend_preferences' => [
'menu_label' => 'Preferenze pannello di controllo',
'menu_description' => 'Gestisci le preferenze della lingua e l\'aspetto del pannello di controllo.',
'menu_description' => 'Gestisci le preferenze del tuo account, come la lingua.',
'locale' => 'Lingua',
'locale_comment' => 'Seleziona la lingua da utilizzare.',
],
@ -222,4 +311,7 @@ return [
'last_name' => 'Cognome',
'email' => 'Indirizzo e-mail',
],
'filter' => [
'all' => 'tutto'
]
];

View File

@ -19,7 +19,7 @@ return [
'help' => "Nie posiadasz odpowiednich uprawnień, aby zobaczyć tą stronę.",
'cms_link' => 'Powrót do panelu back-end'
],
'invalid_token' => [
'invalid_token' => [
'label' => 'Nieprawidłowy żeton bezpieczeństwa'
]
],
@ -82,14 +82,14 @@ return [
'first_name' => 'Imię',
'last_name' => 'Nazwisko',
'full_name' => 'Pełna nazwa',
'email' => 'Email',
'email' => 'E-mail',
'groups' => 'Grupa',
'groups_comment' => 'Określ, do której grupy należy ten użytkownik',
'avatar' => 'Avatar',
'avatar' => 'Awatar',
'password' => 'Hasło',
'password_confirmation' => 'Potwierdź hasło',
'permissions' => 'Uprawnienia',
'account' => 'Konto',
'account' => 'Konto',
'superuser' => 'Super Użytkownik',
'superuser_comment' => 'Zaznacz to pole jeżeli chcesz zezwolić temu użytkownikowi na pełny dostęp do panelu.',
'send_invite' => 'Wyślij zaproszenie wiadomością email',
@ -111,7 +111,7 @@ return [
'new' => 'Nowa grupa Administratorów',
'delete_confirm' => 'Jesteś pewny, że chcesz usunąć tą grupę administratorów?',
'return' => 'Wróć do listy grup',
'users_count' => 'Użytkowników'
'users_count' => 'Użytkowników'
],
'preferences' => [
'not_authenticated' => 'Nie znaleziono uwierzytelnionego użytkownika, aby załadować lub zapisać ustawienia.'
@ -135,7 +135,7 @@ return [
'setup_help' => 'Użyj pól wyboru, aby wybrać kolumny, które chcesz zobaczyć w liście. Możesz zmienić pozycję kolumny przeciągająć ją w dół lub w górę.',
'records_per_page' => 'Rekordy na stronę',
'records_per_page_help' => 'Wybierz liczbnę rekordów do wyświetlenia na stronę. Wyższa liczba rekordów na jedną stronę może zmniejszyć wydajność.',
'delete_selected' => 'Usuń zaznaczone',
'delete_selected' => 'Usuń zaznaczone',
'delete_selected_empty' => 'Nie wybrano elementów do usunięcia.',
'delete_selected_confirm' => 'Usunąć zaznaczone elementy?',
'delete_selected_success' => 'Pomyślnie usunięto zaznaczone elementy.'
@ -145,7 +145,7 @@ return [
'help' => 'Dodaj tytuł oraz opis załącznika.',
'title_label' => 'Tytuł',
'description_label' => 'Opis',
'default_prompt' => 'Kliknij %s lub upuść plik aby przesłać',
'default_prompt' => 'Kliknij %s lub upuść plik aby przesłać',
'attachment_url' => 'URL załącznika',
'upload_file' => 'Prześlij plik',
'upload_error' => 'Błąd przesyłania',
@ -192,7 +192,7 @@ return [
'confirm_tab_close' => 'Czy naprawdę chcesz zamknąć tą kartę? Wszystkie niezapisane zmiany zostaną utracone.',
'behavior_not_ready' => 'Zachowanie formularza nie zostało zainicjowane, sprawdź czy wywołałeś initForm() w swoim kontrolerze.',
'preview_no_files_message' => 'Brak wgranych plików.',
'preview_no_record_message' => 'Break zaznaczonych elementów.',
'preview_no_record_message' => 'Break zaznaczonych elementów.',
'select' => 'Zaznacz',
'select_all' => 'wszystkie',
'select_none' => 'żadne',
@ -203,7 +203,7 @@ return [
'concurrency_file_changed_description' => "Plik, który edytujesz został zmieniony na dysku przez innego użytkownika. Możesz przeładować plik i stracić swoje zmiany lub nadpisać plik na dysku."
],
'relation' => [
'missing_config' => "Zachowanie relacji nie zawiera konfiguracji dla pola ':config'.",
'missing_config' => "Zachowanie relacji nie zawiera konfiguracji dla pola ':config'.",
'missing_definition' => "Zachowanie relacji nie zawiera definicji dla pola ':field'.",
'missing_model' => "Zachowanie relacji użyte w klasie :class nie zawiera definicji modelu.",
'invalid_action_single' => "Ta akcja nie może zostać wykonana na pojedynczej zależności.",
@ -213,7 +213,7 @@ return [
'add' => "Dodaj",
'add_selected' => "Dodaj zaznaczony",
'add_a_new' => "Dodaj nowy :name",
'link_selected' => 'Dołącz zaznaczone',
'link_selected' => 'Dołącz zaznaczone',
'link_a_new' => 'Dołącz nowy :name',
'cancel' => "Anuluj",
'close' => "Zamknij",
@ -229,7 +229,7 @@ return [
'delete' => "Skasuj",
'delete_name' => "Skasuj :name",
'delete_confirm' => "Na pewno?",
'link' => 'Dołącz',
'link' => 'Dołącz',
'link_name' => 'Dołącz :name',
'unlink' => 'Odłącz',
'unlink_name' => 'Odłącz :name',
@ -252,13 +252,14 @@ return [
],
'editor' => [
'menu_label' => 'Ustawienia edytora kodu',
'menu_description' => 'Personalizuj ustawienia edytora kodu, takie jak wielkość fontu oraz kolorostyka.',
'font_size' => 'Wielkość fontu',
'menu_description' => 'Personalizuj ustawienia edytora kodu, takie jak wielkość czcionki oraz kolorostyka.',
'font_size' => 'Wielkość czcionki',
'tab_size' => 'Wielkość karty',
'use_hard_tabs' => 'Wcięcie tabulaturą',
'code_folding' => 'Zawijanie kodu',
'word_wrap' => 'Zawijanie wierszy',
'highlight_active_line' => 'Podświetl aktywne linie',
'auto_closing' => 'Automatycznie zamykaj tagi i specjalne znaki',
'show_invisibles' => 'Pokaż niewidzialne znaki',
'show_gutter' => 'Pokaż gutter',
'theme' => 'Schemat kolorów'
@ -311,6 +312,6 @@ return [
'email' => 'Email'
],
'filter' => [
'all' => 'wszystkie'
'all' => 'wszystkie'
]
];

View File

@ -191,6 +191,7 @@ return [
'code_folding' => 'Code folding',
'word_wrap' => 'Word wrap',
'highlight_active_line' => 'Evidentiere linie activa',
'auto_closing' => 'Inchide automat tag-uri si caractere speciale',
'show_invisibles' => 'Arata caractere invizibile',
'show_gutter' => 'Afiseaza panou',
'theme' => 'Schema culori',

View File

@ -0,0 +1,305 @@
<?php
return [
'auth' => [
'title' => '管理介面'
],
'field' => [
'invalid_type' => '錯誤的字串類型 :type',
'options_method_not_exists' => "模型 :model 必須定義一個返回 ':field' 表單字串選項的方法 :method()。"
],
'widget' => [
'not_registered' => "元件 ':name' 還沒註冊",
'not_bound' => "元件 ':name' 沒綁到控制器"
],
'page' => [
'untitled' => '未命名',
'access_denied' => [
'label' => '拒絕訪問',
'help' => "您沒有訪問這個頁面需要的權限.",
'cms_link' => '返回管理介面'
]
],
'partial' => [
'not_found_name' => "元件 ':name' 找不到."
],
'account' => [
'sign_out' => '登出',
'login' => '登入',
'reset' => '重置',
'restore' => '還原',
'login_placeholder' => '登入',
'password_placeholder' => '密碼',
'forgot_password' => '忘記您的密碼?',
'enter_email' => '輸入您的email',
'enter_login' => '輸入帳號',
'email_placeholder' => 'email',
'enter_new_password' => '輸入新密碼',
'password_reset' => '密碼重置',
'restore_success' => '密碼重置的郵件已發送到您的電子信箱',
'restore_error' => "找不到使用者 ':login'",
'reset_success' => '您的密碼已經重置成功. 您現在可以登入了',
'reset_error' => '密碼重置失敗. 請重試!',
'reset_fail' => '不能重置您的密碼!',
'apply' => '套用',
'cancel' => '取消',
'delete' => '刪除',
'ok' => 'OK'
],
'dashboard' => [
'menu_label' => '儀表板',
'widget_label' => '元件',
'widget_width' => '寬度',
'full_width' => '全部寬度',
'add_widget' => '新增元件',
'widget_inspector_title' => '元件設定',
'widget_inspector_description' => '設定報表元件',
'widget_columns_label' => '寬度 :columns',
'widget_columns_description' => '元件寬度, 1 到 10',
'widget_columns_error' => '請輸入元件寬度, 1 到 10',
'columns' => '{1} 欄|[2,Inf] 欄',
'widget_new_row_label' => '強制新列',
'widget_new_row_description' => '把元件放到新列',
'widget_title_label' => '元件標題',
'widget_title_error' => '需要元件標題',
'status' => [
'widget_title_default' => '系統狀態',
'online' => '在線',
'maintenance' => '維護中',
'update_available' => '{0} 更新可用!|{1} 更新可用!|[2,Inf] 更新可用!'
]
],
'user' => [
'name' => '管理員',
'menu_label' => '管理員',
'menu_description' => '管理管理介面管理員使用者, 群組和權限',
'list_title' => '管理',
'new' => '新管理員',
'login' => '登入',
'first_name' => '名',
'last_name' => '姓',
'full_name' => '全名',
'email' => '郵件',
'groups' => '團隊',
'groups_comment' => '指定這個人屬於哪個群組',
'avatar' => '頭像',
'password' => '密碼',
'password_confirmation' => '確認密碼',
'permissions' => '權限',
'account' => '帳號',
'superuser' => '超級使用者',
'superuser_comment' => '選取並允許這個人訪問全部區域',
'send_invite' => '發送邀請郵件',
'send_invite_comment' => '發送一封包含使用者名和密碼的歡迎郵件',
'delete_confirm' => '您真的想要刪除這個管理員?',
'return' => '返回管理員列表',
'allow' => '允許',
'inherit' => '繼承',
'deny' => '拒絕',
'group' => [
'name' => '群組',
'name_field' => '名字',
'description_field' => '描述',
'is_new_user_default_field' => '預設增加新管理員到這個群組',
'code_field' => '代碼',
'code_comment' => '如果您想訪問 API, 請輸入唯一碼',
'menu_label' => '群組',
'list_title' => '管理群組',
'new' => '新管理群組',
'delete_confirm' => '您真的想要刪除這個管理群組?',
'return' => '返回群組列表',
],
'preferences' => [
'not_authenticated' => '沒有認證使用者載入或儲存設定'
]
],
'list' => [
'default_title' => '列表',
'search_prompt' => '搜尋...',
'no_records' => '目前頁面中沒有記錄',
'missing_model' => ':class 中的列表沒有定義好的模型。',
'missing_column' => '沒有 :columns 的欄定義',
'missing_columns' => ':class 中使用的列表沒有定義好的欄',
'missing_definition' => "列表不包含 ':field' 欄.",
'behavior_not_ready' => '列表沒有初始化, 確認您的控制器中調用了makeLists()',
'invalid_column_datetime' => "欄值 ':column' 不是時間對象, 缺少了 \$dates 在模型中的引用嗎?",
'pagination' => '顯示記錄: :from-:to :total',
'prev_page' => '之前頁',
'next_page' => '下一頁',
'loading' => '載入中...',
'setup_title' => '建立列表',
'setup_help' => '使用多選框選擇您想在列表中看到的欄. 您可以通過拖拽調整欄的位置',
'records_per_page' => '每頁的記錄',
'records_per_page_help' => '選擇每頁想顯示的記錄數量. 請注意一頁中太多記錄可能會降低性能',
'delete_selected' => '刪除選擇的',
'delete_selected_empty' => '沒有需要刪除的記錄',
'delete_selected_confirm' => '刪除選取的記錄?',
'delete_selected_success' => '成功刪除選擇的記錄',
],
'fileupload' => [
'attachment' => '附件',
'help' => '給附件新增標題和描述',
'title_label' => '標題',
'description_label' => '描述'
],
'form' => [
'create_title' => '新 :name',
'update_title' => '編輯 :name',
'preview_title' => '預覽 :name',
'create_success' => ':name 建立成功',
'update_success' => ':name 更新成功',
'delete_success' => ':name 刪除成功',
'missing_id' => '表單記錄ID沒有指定',
'missing_model' => ':class 中使用的表單沒有定義的model',
'missing_definition' => "表單不包含字串 ':field'.",
'not_found' => '表單 ID :id 找不到',
'action_confirm' => '您確定?',
'create' => '建立',
'create_and_close' => '建立和關閉',
'creating' => '建立中...',
'creating_name' => '建立 :name...',
'save' => '儲存',
'save_and_close' => '儲存和關閉',
'saving' => '儲存...',
'saving_name' => '儲存 :name...',
'delete' => '刪除',
'deleting' => '刪除中...',
'deleting_name' => '刪除 :name...',
'reset_default' => '重置到預設',
'resetting' => '重置',
'resetting_name' => '重置 :name',
'undefined_tab' => '雜項',
'field_off' => '關',
'field_on' => '開',
'add' => '增加',
'apply' => '應用',
'cancel' => '取消',
'close' => '關閉',
'confirm' => '確認',
'reload' => '重新載入',
'ok' => 'OK',
'or' => '或',
'confirm_tab_close' => '您真的想要關閉這個標籤嗎? 未儲存的改變會丟失',
'behavior_not_ready' => '表單還沒初始化, 確保您調用了控制器中的 initForm()',
'preview_no_files_message' => '檔案沒有上傳',
'select' => '選擇',
'select_all' => 'all',
'select_none' => 'none',
'select_placeholder' => '請選擇',
'insert_row' => '插入行',
'delete_row' => '刪除行',
'concurrency_file_changed_title' => '檔案異動',
'concurrency_file_changed_description' => "您正在編輯的檔案正在被其他使用者修改. 您可以重新載入或覆蓋硬碟上的檔案."
],
'relation' => [
'missing_config' => "關聯沒有':config'的設定檔案.",
'missing_definition' => "關聯不包含 ':field' 的定義.",
'missing_model' => "用於 :class 的關聯沒有定義好的model.",
'invalid_action_single' => "這個操作不能在單一關聯上執行.",
'invalid_action_multi' => "這個操作不能在多重關聯上執行.",
'help' => "點選增加",
'related_data' => "相關的 :name",
'add' => "增加",
'add_selected' => "增加選取的",
'add_a_new' => "增加一個新的 :name",
'link_selected' => "關聯選取",
'link_a_new' => "關聯一個新的 :name",
'cancel' => "取消",
'close' => "關閉",
'add_name' => "增加 :name",
'create' => "建立",
'create_name' => "建立 :name",
'update' => "更新",
'update_name' => "更新 :name",
'preview' => "預覽",
'preview_name' => "預覽 :name",
'remove' => "移除",
'remove_name' => "移除 :name",
'delete' => "刪除",
'delete_name' => "刪除 :name",
'delete_confirm' => "您確定?",
'link' => "關聯",
'link_name' => "關聯 :name",
'unlink' => "取消關聯",
'unlink_name' => "取消關聯 :name",
'unlink_confirm' => "您確定?",
],
'model' => [
'name' => 'Model',
'not_found' => "Model ':class' ID :id 找不到",
'missing_id' => '沒有指定的ID搜尋model記錄',
'missing_relation' => "Model ':class' 不包含 ':relation'.",
'missing_method' => "Model ':class' 不包含 ':method'.",
'invalid_class' => "Model :model 在 :class 中是錯誤的, 必須繼承 \\Model class.",
'mass_assignment_failed' => "針對Model屬性':attribute'的大量賦值失敗."
],
'warnings' => [
'tips' => '系統設定技巧',
'tips_description' => '您需要注意那些issue, 以使系統設定正確',
'permissions' => '目錄 :name 或子目錄對PHP不可寫. 請對這個目錄上的webserver設定正確的權限',
'extension' => 'PHP外掛 :name 沒安裝. 請安裝這個庫並且啟用外掛'
],
'editor' => [
'menu_label' => '代碼編輯器選項',
'menu_description' => '自訂代碼編輯器選項, 例如字體大小和顏色主題',
'font_size' => '字體大小',
'tab_size' => '標籤大小',
'use_hard_tabs' => '使用tabs縮進',
'code_folding' => '代碼摺疊',
'word_wrap' => '自動換行',
'highlight_active_line' => '醒目顯示操作中的行',
'show_invisibles' => '顯示隱藏字元',
'show_gutter' => '顯示gutter',
'theme' => '色彩主題'
],
'tooltips' => [
'preview_website' => '預覽網站'
],
'mysettings' => [
'menu_label' => '我的設定',
'menu_description' => '設定涉及到您的管理帳號'
],
'myaccount' => [
'menu_label' => '我的帳號',
'menu_description' => '更新您的帳號細節, 例如名字, 郵件地址和密碼',
'menu_keywords' => '安全登入'
],
'branding' => [
'menu_label' => '自訂管理介面',
'menu_description' => '自訂管理區域, 例如名字, 顏色和logo',
'brand' => '品牌',
'logo' => 'Logo',
'logo_description' => '上傳自訂logo到管理介面',
'app_name' => '網站名稱',
'app_name_description' => '這個名稱顯示在管理介面的標題區域',
'app_tagline' => '網站標語',
'app_tagline_description' => '標語顯示在管理介面的登入介面',
'colors' => '顏色',
'primary_light' => '主要 (Light)',
'primary_dark' => '主要 (Dark)',
'secondary_light' => '次要 (Light)',
'secondary_dark' => '次要 (Dark)',
'styles' => '樣式',
'custom_stylesheet' => '自訂樣式'
],
'backend_preferences' => [
'menu_label' => '管理介面設定',
'menu_description' => '管理您的管理介面設定, 例如希望使用的語言。',
'locale' => '語言',
'locale_comment' => '選擇您希望使用的本地語言。'
],
'access_log' => [
'hint' => '這個log顯示了管理員成功登入的訊息. 記錄保持:days天。',
'menu_label' => '訪問日誌',
'menu_description' => '查看成功登入管理介面使用者日誌。',
'created_at' => '日期 & 時間',
'login' => '登入',
'ip_address' => 'IP地址',
'first_name' => '名',
'last_name' => '姓',
'email' => 'Email'
],
'filter' => [
'all' => '全部'
]
];

View File

@ -2,28 +2,26 @@
$activeItem = BackendMenu::getActiveMainMenuItem();
$mySettings = System\Classes\SettingsManager::instance()->listItems('mysettings');
?>
<nav class="navbar layout control-toolbar" id="layout-mainmenu" role="navigation">
<div class="layout-cell">
<div class="toolbar-item">
<div data-control="toolbar">
<a class="menu-toggle" href="javascript:;">
<i class="icon-bars"></i>
<?= $activeItem ? e(trans($activeItem->label)) : 'CMS' ?>
</a>
<nav class="navbar control-toolbar" id="layout-mainmenu" role="navigation">
<div class="toolbar-item toolbar-primary">
<div data-control="toolbar">
<a class="menu-toggle" href="javascript:;">
<i class="icon-bars"></i>
<?= $activeItem ? e(trans($activeItem->label)) : 'CMS' ?>
</a>
<ul class="nav">
<?php foreach (BackendMenu::listMainMenuItems() as $item): ?>
<li class="<?= BackendMenu::isMainMenuItemActive($item) ? 'active' : null ?>">
<a href="<?= $item->url ?>">
<i class="<?= $item->icon ?>"></i><?= e(trans($item->label)) ?>
</a>
</li>
<?php endforeach ?>
</ul>
</div>
<ul class="nav">
<?php foreach (BackendMenu::listMainMenuItems() as $item): ?>
<li class="<?= BackendMenu::isMainMenuItemActive($item) ? 'active' : null ?>">
<a href="<?= $item->url ?>">
<i class="<?= $item->icon ?>"></i><?= e(trans($item->label)) ?>
</a>
</li>
<?php endforeach ?>
</ul>
</div>
</div>
<div class="layout-cell width-fix">
<div class="toolbar-item" data-calculate-width>
<ul>
<li class="icon preview with-tooltip">
<a

View File

@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="en" class="no-js">
<html lang="<?= App::getLocale() ?>" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1, user-scalable=0">

View File

@ -1,5 +1,5 @@
<!DOCTYPE html>
<html lang="<?= Config::get('app.locale', 'en') ?>" class="no-js <?= $this->makeLayoutPartial('browser_detector') ?>">
<html lang="<?= App::getLocale() ?>" class="no-js <?= $this->makeLayoutPartial('browser_detector') ?>">
<head>
<?= $this->makeLayoutPartial('head') ?>
</head>

View File

@ -56,6 +56,7 @@ class BackendPreferences extends Model
'pl' => [Lang::get('system::lang.locale.pl'), 'flag-pl'],
'sk' => [Lang::get('system::lang.locale.sk'), 'flag-sk'],
'zh-cn' => [Lang::get('system::lang.locale.zh-cn'), 'flag-cn'],
'zh-tw' => [Lang::get('system::lang.locale.zh-tw'), 'flag-tw'],
'nb-no' => [Lang::get('system::lang.locale.nb-no'), 'flag-no'],
'el' => [Lang::get('system::lang.locale.el'), 'flag-gr'],
]);

View File

@ -53,7 +53,7 @@ fields:
type: dropdown
auto_closing:
label: Auto close tags and special characters
label: backend::lang.editor.auto_closing
type: checkbox
show_invisibles:

View File

@ -1,15 +1,17 @@
<div class="toolbar-widget <?= $cssClasses ?>" id="<?= $this->getId() ?>">
<div class="layout control-toolbar">
<div class="control-toolbar">
<!-- Control Panel -->
<div class="layout-cell toolbar-item">
<div class="toolbar-item toolbar-primary">
<?= ($controlPanel) ?: '&nbsp;' ?>
</div>
<!-- List Search -->
<?php if ($search): ?>
<div class="layout-cell toolbar-item width-fix">
<div class="toolbar-item" data-calculate-width>
<?= $search ?>
</div>
<?php endif ?>
</div>
</div>

View File

@ -205,7 +205,7 @@ class ComponentManager
if (!class_exists($className)) {
throw new SystemException(sprintf(
'Component class not found %s.Check the component plugin.',
'Component class not found %s. Check the component plugin.',
$className
));
}

View File

@ -69,10 +69,17 @@ class Content extends CmsCompoundObject
protected function parseMarkup()
{
$result = $this->markup;
$extension = strtolower(File::extension($this->fileName));
if (strtolower(File::extension($this->fileName)) == 'md') {
$result = Markdown::parse($this->markup);
switch ($extension) {
case 'txt':
$result = htmlspecialchars($this->markup);
break;
case 'md':
$result = Markdown::parse($this->markup);
break;
default:
$result = $this->markup;
}
return $result;

View File

@ -111,7 +111,7 @@ class Controller
/**
* @var array Component partial stack, used internally.
*/
protected $partialComponentStack = [];
protected $partialStack = [];
/**
* Creates the controller.
@ -127,6 +127,7 @@ class Controller
$this->assetPath = Config::get('cms.themesPath', '/themes').'/'.$this->theme->getDirName();
$this->router = new Router($this->theme);
$this->partialStack = new PartialStack;
$this->initTwigEnvironment();
self::$instance = $this;
@ -847,6 +848,8 @@ class Controller
*/
if ($partial instanceof Partial) {
$this->partialStack->stackPartial();
$manager = ComponentManager::instance();
foreach ($partial->settings['components'] as $component => $properties) {
@ -868,10 +871,7 @@ class Controller
$componentObj->alias = $alias;
$parameters[$alias] = $partial->components[$alias] = $componentObj;
array_push($this->partialComponentStack, [
'name' => $alias,
'obj' => $componentObj
]);
$this->partialStack->addComponent($alias, $componentObj);
$this->setComponentPropertiesFromParams($componentObj, $parameters);
$componentObj->init();
@ -890,7 +890,7 @@ class Controller
}
/*
* Render the parital
* Render the partial
*/
CmsException::mask($partial, 400);
$this->loader->setObject($partial);
@ -899,9 +899,7 @@ class Controller
CmsException::unmask();
if ($partial instanceof Partial) {
if ($this->partialComponentStack) {
array_pop($this->partialComponentStack);
}
$this->partialStack->unstackPartial();
}
$this->vars = $vars;
@ -1224,10 +1222,9 @@ class Controller
return $this->layout->components[$name];
}
foreach ($this->partialComponentStack as $componentInfo) {
if ($componentInfo['name'] == $name) {
return $componentInfo['obj'];
}
$partialComponent = $this->partialStack->getComponent($name);
if ($partialComponent !== null) {
return $partialComponent;
}
return null;

View File

@ -467,8 +467,9 @@ class MediaLibrary
* S3 doesn't allow getting the last modified timestamp for folders,
* so this feature is disabled - folders timestamp is always NULL.
*/
$lastModified = $itemType == MediaLibraryItem::TYPE_FILE ?
$this->getStorageDisk()->lastModified($path) : null;
$lastModified = $itemType == MediaLibraryItem::TYPE_FILE
? $this->getStorageDisk()->lastModified($path)
: null;
/*
* The folder size (number of items) doesn't respect filters. That
@ -476,8 +477,9 @@ class MediaLibrary
* zero items for a folder that contains files not visible with a
* currently applied filter. -ab
*/
$size = $itemType == MediaLibraryItem::TYPE_FILE ?
$this->getStorageDisk()->size($path) : $this->getFolderItemCount($path);
$size = $itemType == MediaLibraryItem::TYPE_FILE
? $this->getStorageDisk()->size($path)
: $this->getFolderItemCount($path);
$publicUrl = $this->storagePath.$relativePath;
return new MediaLibraryItem($relativePath, $size, $lastModified, $itemType, $publicUrl);
@ -492,12 +494,14 @@ class MediaLibrary
{
$folderItems = array_merge(
$this->getStorageDisk()->files($path),
$this->getStorageDisk()->directories($path));
$this->getStorageDisk()->directories($path)
);
$size = 0;
foreach ($folderItems as $folderItem) {
if ($this->isVisible($folderItem))
if ($this->isVisible($folderItem)) {
$size++;
}
}
return $size;
@ -543,14 +547,14 @@ class MediaLibrary
usort($itemList, function($a, $b) use ($sortBy) {
switch ($sortBy) {
case self::SORT_BY_TITLE : return strcasecmp($a->path, $b->path);
case self::SORT_BY_SIZE :
case self::SORT_BY_TITLE: return strcasecmp($a->path, $b->path);
case self::SORT_BY_SIZE:
if ($a->size > $b->size)
return -1;
return $a->size < $b->size ? 1 : 0;
break;
case self::SORT_BY_MODIFIED :
case self::SORT_BY_MODIFIED:
if ($a->lastModified > $b->lastModified)
return -1;
@ -593,7 +597,8 @@ class MediaLibrary
return $this->storageDisk;
return $this->storageDisk = Storage::disk(
Config::get('cms.storage.media.disk', 'local'));
Config::get('cms.storage.media.disk', 'local')
);
}
/**

View File

@ -1,7 +1,7 @@
<?php namespace Cms\Classes;
use Config;
use File;
use Config;
/**
* Represents a file or folder in the Media Library.
@ -22,7 +22,7 @@ class MediaLibraryItem
/**
* @var string Specifies the item path relative to the Library root.
*/
public $path;
public $path;
/**
* @var integer Specifies the item size.

View File

@ -0,0 +1,93 @@
<?php namespace Cms\Classes;
/**
* Manager class for stacking nested partials and keeping track
* of their components. Partial "objects" store the components
* used by that partial for deferred retrieval.
*
* @package october\cms
* @author Alexey Bobkov, Samuel Georges
*/
class PartialStack
{
/**
* @var array The current partial "object" being rendered.
*/
public $activePartial = null;
/**
* @var array Collection of previously rendered partial "objects".
*/
protected $partialStack = [];
/**
* Partial entry point, appends a new partial to the stack.
*/
public function stackPartial()
{
if ($this->activePartial !== null) {
array_unshift($this->partialStack, $this->activePartial);
}
$this->activePartial = [
'components' => []
];
}
/**
* Partial exit point, removes the active partial from the stack.
*/
public function unstackPartial()
{
$this->activePartial = array_shift($this->partialStack);
}
/**
* Adds a component to the active partial stack.
*/
public function addComponent($alias, $componentObj)
{
array_push($this->activePartial['components'], [
'name' => $alias,
'obj' => $componentObj
]);
}
/**
* Returns a component by its alias from the partial stack.
*/
public function getComponent($name)
{
if (!$this->activePartial) {
return null;
}
$component = $this->findComponentFromStack($name, $this->activePartial);
if ($component !== null) {
return $component;
}
foreach ($this->partialStack as $stack) {
$component = $this->findComponentFromStack($name, $stack);
if ($component !== null) {
return $component;
}
}
return null;
}
/**
* Locates a component by its alias from the supplied stack.
*/
protected function findComponentFromStack($name, $stack)
{
foreach ($stack['components'] as $componentInfo) {
if ($componentInfo['name'] == $name) {
return $componentInfo['obj'];
}
}
return null;
}
}

View File

@ -24,7 +24,7 @@ return [
'not_match' => 'Az objektum melyhez hozzáférni próbál, nem a szerkesztés alatt lévő témához tartozik. Töltse be újra a lapot.'
],
'settings_menu' => 'Dizájn',
'settings_menu_description' => 'Telepített témák és további választható sablonok listája.',
'settings_menu_description' => 'A telepített témák és a választható sablonok listája.',
'default_tab' => 'Tulajdonságok',
'name_label' => 'Név',
'name_create_placeholder' => 'Az új téma neve',
@ -104,7 +104,7 @@ return [
'invalid_url' => 'Érvénytelen a webcím formátuma. A webcímnek perjellel kell kezdődnie, és számokat, latin betűket, valamint a következő karaktereket tartalmazhatja: ._-[]:?|/+*',
'delete_confirm_multiple' => 'Valóban törölni akarja a kijelölt lapokat?',
'delete_confirm_single' => 'Valóban törölni akarja ezt a lapot?',
'no_layout' => '-- nincs elrendezés --'
'no_layout' => '-- nincs --'
],
'layout' => [
'not_found_name' => "A(z) ':name' elrendezés nem található",
@ -147,8 +147,8 @@ return [
],
'editor' => [
'settings' => 'Beállítások',
'title' => 'Cím',
'new_title' => 'Új lap címe',
'title' => 'Elnevezés',
'new_title' => 'Az új lap címe',
'url' => 'Webcím',
'filename' => 'Fájlnév',
'layout' => 'Elrendezés',
@ -157,8 +157,8 @@ return [
'meta' => 'Meta',
'meta_title' => 'Meta cím',
'meta_description' => 'Meta leírás',
'markup' => 'Jelölés',
'code' => 'Kód',
'markup' => 'HTML',
'code' => 'PHP',
'content' => 'Tartalom',
'hidden' => 'Rejtett',
'hidden_comment' => 'A rejtett lapok csak a bejelentkezett felhasználók által hozzáférhetők.',
@ -220,7 +220,7 @@ return [
'method_not_found' => "A(z) ':name' komponens nem tartalmaz egy ':method' metódust."
],
'template' => [
'invalid_type' => 'Ismeretlen sablontípus.',
'invalid_type' => 'Ismeretlen sablon típus.',
'not_found' => 'A kért sablon nem található.',
'saved' => 'A módosítások sikeresen mentésre kerültek.'
],

View File

@ -3,51 +3,113 @@
return [
'cms_object' => [
'invalid_file' => 'Nome file non valido: :name. I nomi dei file possono contenere solo caratteri alfanumerici, underscores, trattini e punti. Alcuni esempi di nome di file corretti: page.htm, page, subdirectory/page',
'invalid_property' => 'La proprietà ":name" non può essere impostata',
'file_already_exists' => 'File ":name" già esistente.',
'error_saving' => 'Errore nel salvataggio del file ":name". Verifica le autorizzazioni di scrittura.',
'invalid_property' => "La proprietà ':name' non può essere impostata",
'file_already_exists' => "File ':name' già esistente.",
'error_saving' => "Errore nel salvataggio del file ':name'. Verifica le autorizzazioni di scrittura.",
'error_creating_directory' => 'Errore nella creazione della cartella :name. Verifica le autorizzazioni di scrittura.',
'invalid_file_extension'=>'Estensione del file non valida: :invalid. Le estensioni consentite sono: :allowed.',
'error_deleting' => 'Errore nella cancellazione del file ":name". Verifica le autorizzazioni di scrittura.',
'delete_success' => 'File eliminati correttamente: :count.',
'error_deleting' => "Errore nella cancellazione del file ':name'. Verifica le autorizzazioni di scrittura.",
'delete_success' => 'Template eliminati correttamente: :count.',
'file_name_required' => 'Il campo Nome file è obbligatorio.'
],
'theme' => [
'not_found_name' => "Tema ':name' non trovato.",
'active' => [
'not_set' => "Il tema attivo non è impostato.",
'not_found' => "Il tema attivo non è stato trovato.",
'not_set' => 'Il tema attivo non è impostato.',
'not_found' => 'Il tema attivo non è stato trovato.',
],
'edit' => [
'not_set' => "Il tema di modifica non è impostato.",
'not_found' => "Il tema di modifica non è stato trovato.",
'not_set' => 'Il tema modificato non è impostato.',
'not_found' => 'Il tema modificato non è stato trovato.',
'not_match' => "L'oggetto a cui stai cercando di accedere non appartiene al tema che stai modificando. Si prega di ricaricare la pagina."
],
'settings_menu' => 'Tema del sito',
'settings_menu_description' => 'Visualizza l\'anteprima dei temi installati e seleziona un tema attivo.',
'find_more_themes' => 'Trova altri temi su OctoberCMS Theme Marketplace.',
'default_tab' => 'Proprietà',
'name_label' => 'Nome',
'name_create_placeholder' => 'Nome del nuovo tema',
'author_label' => 'Autore',
'author_placeholder' => 'Nome della persona o della società',
'description_label' => 'Descrizione',
'description_placeholder' => 'Descrizione del tema',
'homepage_label' => 'Homepage',
'homepage_placeholder' => 'URL Sito web',
'code_label' => 'Codice',
'code_placeholder' => 'Un codice univoco per questo tema, utilizzato per la distribuzione',
'dir_name_label' => 'Nome della cartella',
'dir_name_create_label' => 'La cartella di destinazione del tema',
'theme_label' => 'Tema',
'theme_title' => 'Temi',
'activate_button' => 'Attiva',
'active_button' => 'Attivo',
'customize_theme' => 'Personalizza tema',
'customize_button' => 'Personalizza',
'duplicate_button' => 'Duplica',
'duplicate_title' => 'Duplica tema',
'duplicate_theme_success' => 'Tema duplicato con successo!',
'manage_button' => 'Gestisci',
'manage_title' => 'Gestisci tema',
'edit_properties_title' => 'Tema',
'edit_properties_button' => 'Modifica proprietà',
'save_properties' => 'Salva proprietà',
'import_button' => 'Importa',
'import_title' => 'Importa tema',
'import_theme_success' => 'Tema importato con successo!',
'import_uploaded_file' => 'File di archivio del tema',
'import_overwrite_label' => 'Sovrascrivi file esistenti',
'import_overwrite_comment' => 'Deseleziona per importare solamente i nuovi file',
'import_folders_label' => 'Cartelle',
'import_folders_comment' => 'Seleziona le cartelle del tema che vuoi importare',
'export_button' => 'Esporta',
'export_title' => 'Esporta tema',
'export_folders_label' => 'Cartelle',
'export_folders_comment' => 'Seleziona le cartelle del tema che vuoi esportare',
'delete_button' => 'Elimina',
'delete_confirm' => 'Sei sicuro di voler cancellare questo tema? L\'operazione non può essere annullata!',
'delete_active_theme_failed' => 'Impossibile eliminare il tema attivo, prova prima ad attivare un altro tema.',
'delete_theme_success' => 'Tema eliminato con successo!',
'create_title' => 'Crea tema',
'create_button' => 'Crea',
'create_new_blank_theme' => 'Crea un nuovo tema vuoto',
'create_theme_success' => 'Tema creato con successo!',
'create_theme_required_name' => 'Specifica un nome per il tema.',
'new_directory_name_label' => 'Cartella di destinazione del tema',
'new_directory_name_comment' => 'Inserisci una nuova cartella per il tema duplicato.',
'dir_name_invalid' => 'Il nome della cartella può contenere solo numeri, lettere latine e i seguenti simboli: _-',
'dir_name_taken' => 'Cartelle di destinazione del tema già esistente.',
'find_more_themes' => 'Trova nuovi temi',
'saving' => 'Salvataggio tema in corso...',
'return' => 'Ritorna all\'elenco del temi',
],
'maintenance' => [
'settings_menu' => 'Modalità di manutenzione',
'settings_menu_description' => 'Configura la pagina da visualizzare in modalità di manutenzione e cambia l\'impostazione.',
'is_enabled' => 'Abilita modalità di manutenzione',
'is_enabled_comment' => 'Se attivo i visitatori del sito vedranno la pagina selezionata sotto.'
],
'page' => [
'not_found_name' => "Pagina ':name' non trovata",
'not_found' => [
'label' => "Pagina non trovata",
'help' => "La pagina richiesta non è stata trovata.",
'label' => 'Pagina non trovata',
'help' => 'La pagina richiesta non è stata trovata.',
],
'custom_error' => [
'label' => "Errore nella pagina",
'label' => 'Errore nella pagina',
'help' => "Siamo spiacenti, ma qualcosa è andato storto e la pagina non può essere visualizzata.",
],
'menu_label' => 'Pagine',
'unsaved_label' => 'Pagina/e non salvate',
'no_list_records' => 'Pagine non trovate',
'new' => 'Nuova pagina',
'invalid_url' => 'Formato URL non valido. L\'URL deve iniziare con una barra e può contenere numeri, lettere e i seguenti simboli: ._-[]:?|/+*^$',
'invalid_url' => 'Formato URL non valido. L\'URL deve iniziare con una barra e può contenere numeri, lettere latine e i seguenti simboli: ._-[]:?|/+*^$',
'delete_confirm_multiple' => 'Sei sicuro di voler eliminare le pagine selezionate?',
'delete_confirm_single' => 'Sei sicuro di voler eliminare questa pagina?',
'no_layout' => '-- nessun layout --'
],
'layout' => [
'not_found_name' => "Il layout ':name' non è stato trovato",
'menu_label' => 'Layouts',
'menu_label' => 'Layout',
'unsaved_label' => 'Layout non salvati',
'no_list_records' => 'Nessun layout trovato',
'new' => 'Nuovo layout',
'delete_confirm_multiple' => 'Sei sicuro di voler eliminare i layouts selezionati?',
@ -55,27 +117,29 @@ return [
],
'partial' => [
'not_found_name' => "La vista parziale ':name' non è stata trovata.",
'invalid_name' => "Nome della vista parziale non valido: :name.",
'invalid_name' => 'Nome della vista parziale non valido: :name.',
'menu_label' => 'Viste parziali',
'unsaved_label' => 'Viste parziali non salvate',
'no_list_records' => 'Nessuna vista parziale trovata',
'delete_confirm_multiple' => 'Sei sicuro di voler eliminare le viste parziali selezionate?',
'delete_confirm_single' => 'Sei sicuro di voler eliminare questa vista parziale?',
'new' => 'Nuova vista parziale'
],
'content' => [
'not_found_name' => "Il file di contenuto ':name' non è stato trovato.",
'not_found_name' => "Il file di contenuti ':name' non è stato trovato.",
'menu_label' => 'Contenuti',
'unsaved_label' => 'Contenuti non salvati',
'no_list_records' => 'Nessun file di contenuto trovato',
'delete_confirm_multiple' => 'Sei sicuro di voler eliminare i file o le cartelle di contenuti selezionate?',
'delete_confirm_single' => 'Sei sicuro di voler eliminare questo file di contenuti?',
'new' => 'Nuovo file di contenuti'
],
'ajax_handler' => [
'invalid_name' => "Nome del gestore AJAX non valido: :name.",
'invalid_name' => 'Nome del gestore AJAX non valido: :name.',
'not_found' => "Il gestore AJAX ':name' non è stato trovato.",
],
'cms' => [
'menu_label' => "CMS"
'menu_label' => 'CMS'
],
'sidebar' => [
'add' => 'Aggiungi',
@ -93,32 +157,36 @@ return [
'meta' => 'Metadati',
'meta_title' => 'Meta Titolo',
'meta_description' => 'Meta Descrizione',
'markup' => 'Marcatore',
'markup' => 'Markup',
'code' => 'Codice',
'content' => 'Contenuto',
'hidden' => 'Nascosto',
'hidden_comment' => 'Le pagine nascoste sono accessibili sono dagli utenti registrati.',
'hidden_comment' => 'Le pagine nascoste sono accessibili solo dagli utenti collegati al pannello di controllo.',
'enter_fullscreen' => 'Visualizza a schermo intero',
'exit_fullscreen' => 'Esci dalla visualizzazione a schermo intero'
],
'asset' => [
'menu_label' => "Assets",
'drop_down_add_title' => 'Agiungi...',
'menu_label' => 'Assets',
'unsaved_label' => 'Asset(s) non salvati',
'drop_down_add_title' => 'Aggiungi...',
'drop_down_operation_title' => 'Azioni...',
'upload_files' => 'Carica file(s)',
'create_file' => 'Crea file',
'create_directory' => 'Crea cartella',
'directory_popup_title' => 'Nuova cartella',
'directory_name' => 'Nome della cartella',
'rename' => 'Rinomina',
'delete' => 'Elimina',
'move' => 'Sposta',
'select' => 'Seleziona',
'new' => 'Nuovo file',
'rename_popup_title' => 'Rinomina',
'rename_new_name' => 'Nuovo nome',
'invalid_path' => 'Il percorso può contenere solo numeri, lettere, spazi e i simboli seguenti: ._-/',
'invalid_path' => 'Il percorso può contenere solo numeri, lettere latine, spazi e i simboli seguenti: ._-/',
'error_deleting_file' => 'Errore durante l\'eliminazione del file :name.',
'error_deleting_dir_not_empty' => 'Errore durante l\'eliminazione della cartella :name. La cartella non è vuota.',
'error_deleting_dir' => 'Errore durante l\'eliminazinoe della cartella :name.',
'invalid_name' => 'Il nome può contenere solo numeri, lettere, spazi e i simboli seguenti: ._-',
'invalid_name' => 'Il nome può contenere solo numeri, lettere latine, spazi e i simboli seguenti: ._-',
'original_not_found' => 'Il file o la cartella originali non sono stati trovati',
'already_exists' => 'Un file o cartella con questo nome è già esistente',
'error_renaming' => 'Errore nella rinominazione del file o della cartella',
@ -126,8 +194,8 @@ return [
'too_large' => 'Il file caricato è troppo grande. La dimensione massima consentita è :max_size',
'type_not_allowed' => 'Solo i seguenti tipi di file sono consentiti: :allowed_types',
'file_not_valid' => 'File non valido',
'error_uploading_file' => 'Errore durante il caricamento del file ":name": :error',
'move_please_select' => 'Seleziona',
'error_uploading_file' => "Errore durante il caricamento del file ':name': :error",
'move_please_select' => 'seleziona',
'move_destination' => 'Cartella di destinazione',
'move_popup_title' => 'Sposta assets',
'move_button' => 'Sposta',
@ -140,28 +208,94 @@ return [
'path' => 'Percorso'
],
'component' => [
'menu_label' => "Componenti",
'unnamed' => "Senza nome",
'no_description' => "Nessuna descrizione fornita",
'alias' => "Alias",
'alias_description' => "Un nome univoco fornito a questo componente quando utilizzato nella pagina o nel layout.",
'validation_message' => "L'alias del componente è obbligatorio e può contenere solo lettere, numeri e underscores. L'alias deve iniziare con una lettera.",
'invalid_request' => "Il modello non può essere salvato a causa di dati dei componenti non validi.",
'menu_label' => 'Componenti',
'unnamed' => 'Senza nome',
'no_description' => 'Nessuna descrizione fornita',
'alias' => 'Alias',
'alias_description' => 'Un nome univoco fornito a questo componente quando utilizzato nella pagina o nel layout.',
'validation_message' => 'L\'alias del componente è obbligatorio e può contenere solo lettere latine, numeri e underscores. L\'alias deve iniziare con una lettera.',
'invalid_request' => 'Il template non può essere salvato a causa di dati dei componenti non validi.',
'no_records' => 'Nessun componente trovato',
'not_found' => "Il componente ':name' non è stato trovato.",
'method_not_found' => "Il componente ':name' non contiene il metodo ':method'.",
'method_not_found' => "Il componente ':name' non contiene il metodo ':method'."
],
'template' => [
'invalid_type' => "Tipo di modello non valido.",
'not_found' => "Il modello richiesto non è stato trovato.",
'saved'=> "Il modello è stato salvato con successo."
'invalid_type' => 'Tipo di template sconosciuto.',
'not_found' => 'Il template richiesto non è stato trovato.',
'saved'=> 'Il template è stato salvato con successo'
],
'permissions' => [
'name' => 'Cms',
'manage_content' => 'Gestisci contenuti',
'manage_assets' => 'Gestisci assets',
'manage_pages' => 'Gestisci pagine',
'manage_layouts' => 'Gesstisci layouts',
'manage_partials' => 'Gestisci viste parziali',
'manage_themes' => 'Gestisci temi'
'manage_themes' => 'Gestisci temi',
'manage_media' => 'Gestisci elementi multimediali'
],
'mediafinder' => [
'default_prompt' => 'Fai clic sul pulsante %s per trovare un elemento multimediale'
],
'media' => [
'invalid_path' => "Percorso del file non valido: ':path'.",
'menu_label' => 'Elementi multimediali',
'upload' => 'Carica',
'move' => 'Sposta',
'delete' => 'Elimina',
'add_folder' => 'Aggiungi cartella',
'search' => 'Cerca',
'display' => 'Visualizza',
'filter_everything' => 'Tutto',
'filter_images' => 'Immagini',
'filter_video' => 'Video',
'filter_audio' => 'Audio',
'filter_documents' => 'Documenti',
'library' => 'Libreria',
'folder_size_items' => 'elementi',
'size' => 'Dimensione',
'title' => 'Titolo',
'last_modified' => 'Ultima modifica',
'public_url' => 'URL pubblico',
'click_here' => 'Fai clic qui',
'thumbnail_error' => 'Errore durante la generazione dell\'anteprima.',
'return_to_parent' => 'Ritorna alla cartella superiore',
'return_to_parent_label' => 'Torna su ..',
'nothing_selected' => 'Nessun elemento selezionato.',
'multiple_selected' => 'Elementi multipli selezionati.',
'uploading_file_num' => 'Caricamento in corso di :number file(s)...',
'uploading_complete' => 'Caricamento completato',
'order_by' => 'Ordina per',
'search' => 'Cerca',
'folder' => 'Cartella',
'no_files_found' => 'Nessun file corrisponde alla tua richiesta.',
'delete_empty' => 'Seleziona elementi da eliminare.',
'delete_confirm' => 'Vuoi davvero eliminare gli elementi selezionati?',
'error_renaming_file' => 'Errore durante la rinominazione dell\'elemento',
'new_folder_title' => 'Nuova cartella',
'folder_name' => 'Nome della cartella',
'error_creating_folder' => 'Errore durante la creazione della cartella',
'folder_or_file_exist' => 'Una cartella o un file con il nome specificato è già esistente.',
'move_empty' => 'Selezione elementi da spostare.',
'move_popup_title' => 'Sposta file o cartelle',
'move_destination' => 'Cartella di destinazione',
'please_select_move_dest' => 'Seleziona una cartella di destinazione.',
'move_dest_src_match' => 'Seleziona un\'altra cartella di destinazione.',
'empty_library' => 'La libreria è vuota. Carica dei files o crea delle cartelle per iniziare.',
'insert' => 'Inserisci',
'crop_and_insert' => 'Ritaglia e inserisci',
'select_single_image' => 'Seleziona una singola immagine.',
'selection_not_image' => 'L\'elemento selezionato non è un\'immagine.',
'restore' => 'Annulla tutte le modifiche',
'resize' => 'Ridimensiona...',
'selection_mode_normal' => 'Normale',
'selection_mode_fixed_ratio' => 'Rapporto fisso',
'selection_mode_fixed_size' => 'Dimensione fissa',
'height' => 'Altezza',
'width' => 'Larghezza',
'selection_mode' => 'Metodo di selezione',
'resize_image' => 'Ridimensiona immagine',
'image_size' => 'Dimensione immagine:',
'selected_size' => 'Selezionati:'
]
];

View File

@ -0,0 +1,297 @@
<?php
return [
'cms_object' => [
'invalid_file' => '不合法的檔案名: :name. 檔案名只能包括字母或數字, _, - 和 .. 一些正確的檔案名: page.htm, page, subdirectory/page',
'invalid_property' => "屬性 ':name' 不能設定",
'file_already_exists' => "檔案 ':name' 已經存在.",
'error_saving' => "保存檔案 ':name' 錯誤. 請檢查寫權限.",
'error_creating_directory' => '建立檔案夾 :name 錯誤. 請檢查寫權限.',
'invalid_file_extension'=>'不合法的檔案擴展: :invalid. 允許的擴展: :allowed.',
'error_deleting' => "刪除模板檔案 ':name' 錯誤. 請檢查寫權限.",
'delete_success' => '模板成功刪除: :count.',
'file_name_required' => '需要檔案名字串.'
],
'theme' => [
'not_found_name' => "主題 ':name' 沒找到.",
'active' => [
'not_set' => '活動主題沒設定.',
'not_found' => '活動主題找不到.'
],
'edit' => [
'not_set' => '編輯主題沒設定.',
'not_found' => '編輯主題沒找到.',
'not_match' => "您嘗試訪問的對象不屬於正在編輯的主題. 請重載頁面."
],
'settings_menu' => '前端主題',
'settings_menu_description' => '預覽安裝的主題, 選擇一個活動主題.',
'default_tab' => '屬性',
'name_label' => '名稱',
'name_create_placeholder' => '新主題名稱',
'author_label' => '作者',
'author_placeholder' => '人或公司名',
'description_label' => '描述',
'description_placeholder' => '主題描述',
'homepage_label' => '主頁',
'homepage_placeholder' => '網站地址',
'code_label' => '代碼',
'code_placeholder' => '發行主題的唯一碼',
'dir_name_label' => '目錄名',
'dir_name_create_label' => '目標主題目錄',
'theme_label' => '主題',
'theme_title' => '主題',
'activate_button' => '激活',
'active_button' => '激活',
'customize_theme' => '自訂主題',
'customize_button' => '自訂',
'duplicate_button' => '複製',
'duplicate_title' => '複製主題',
'duplicate_theme_success' => '複製主題成功!',
'manage_button' => '管理',
'manage_title' => '管理主題',
'edit_properties_title' => '主題',
'edit_properties_button' => '編輯屬性',
'save_properties' => '保存屬性',
'import_button' => '導入',
'import_title' => '導入主題',
'import_theme_success' => '成功導入主題!',
'import_uploaded_file' => '主題存檔檔案',
'import_overwrite_label' => '覆蓋已經存在的檔案',
'import_overwrite_comment' => '取消勾選, 只導入新檔案',
'import_folders_label' => '檔案夾',
'import_folders_comment' => '請選擇您想要導入的主題檔案夾',
'export_button' => '導出',
'export_title' => '導出主題',
'export_folders_label' => '檔案夾',
'export_folders_comment' => '請選擇您想要導入的主題檔案夾',
'delete_button' => '刪除',
'delete_confirm' => '您確定刪除這個主題嗎? 這個操作不能撤銷!',
'delete_active_theme_failed' => '不能刪除活動主題, 請先嘗試另外一個主題.',
'delete_theme_success' => '刪除主題成功!',
'create_title' => '建立主題',
'create_button' => '建立',
'create_new_blank_theme' => '建立新的空白主題',
'create_theme_success' => '建立主題成功!',
'create_theme_required_name' => '請指點主題名.',
'new_directory_name_label' => '主題目錄',
'new_directory_name_comment' => '提供複製主題的新聞目錄名.',
'dir_name_invalid' => '名稱只能包含數字, 拉丁字母和以下字元: _-',
'dir_name_taken' => '主題目錄已存在.',
'find_more_themes' => '在 OctoberCMS 主題商店中搜尋更多主題',
'saving' => '保存主題...',
'return' => '返回主題列表',
],
'maintenance' => [
'settings_menu' => '維護模式',
'settings_menu_description' => '設定維護模式頁面和開關設定.',
'is_enabled' => '啟用維護模式',
'is_enabled_comment' => '當啟用時, 網站訪問者會看到下述頁面.'
],
'page' => [
'not_found_name' => "頁面 ':name' 找不到",
'not_found' => [
'label' => '頁面找不到',
'help' => '請求的頁面找不到.'
],
'custom_error' => [
'label' => '頁面錯誤',
'help' => "很抱歉, 有一些地方發生了錯誤導致頁面不能顯示."
],
'menu_label' => '頁面',
'unsaved_label' => '未保存頁面',
'no_list_records' => '找不到頁面',
'new' => '新頁面',
'invalid_url' => '不合法的URL格式. URL可以正斜槓開頭, 包含數字, 拉丁字母和下面的字元: ._-[]:?|/+*^$',
'delete_confirm_multiple' => '真的想要刪除選擇的頁面嗎?',
'delete_confirm_single' => '真的想要刪除這個頁面嗎?',
'no_layout' => '-- 沒有佈局 --'
],
'layout' => [
'not_found_name' => "佈局 ':name' 找不到",
'menu_label' => '佈局',
'unsaved_label' => '未保存佈局',
'no_list_records' => '找不到佈局',
'new' => '新佈局',
'delete_confirm_multiple' => '您真的想要刪除選取的佈局?',
'delete_confirm_single' => '您真的想要刪除這個佈局?'
],
'partial' => [
'not_found_name' => "部件 ':name' 找不到.",
'invalid_name' => '不合法的部件名: :name.',
'menu_label' => '部件',
'unsaved_label' => '未保存的部件',
'no_list_records' => '找不到部件',
'delete_confirm_multiple' => '您真的想要刪除選擇的部件?',
'delete_confirm_single' => '您真的想要刪除這個部件?',
'new' => '新部件'
],
'content' => [
'not_found_name' => "內容檔案 ':name' 找不到.",
'menu_label' => '內容',
'unsaved_label' => '未保存內容',
'no_list_records' => '找不到內容檔案',
'delete_confirm_multiple' => '您真的想要刪除選取的檔案或目錄嗎?',
'delete_confirm_single' => '您真的想要刪除這個內容檔案?',
'new' => '新內容檔案'
],
'ajax_handler' => [
'invalid_name' => '不合法的 AJAX 處理器: :name.',
'not_found' => " AJAX 處理器 ':name' 找不到."
],
'cms' => [
'menu_label' => 'CMS'
],
'sidebar' => [
'add' => '增加',
'search' => '搜尋...'
],
'editor' => [
'settings' => '設定',
'title' => '標題',
'new_title' => '新檔案標題',
'url' => 'URL',
'filename' => '檔案名',
'layout' => '佈局',
'description' => '描述',
'preview' => '預覽',
'meta' => 'Meta',
'meta_title' => 'Meta 標題',
'meta_description' => 'Meta 描述',
'markup' => 'Markup',
'code' => '代碼',
'content' => '內容',
'hidden' => '隱藏',
'hidden_comment' => '隱藏頁面只能被登錄的後台使用者訪問.',
'enter_fullscreen' => '進入全屏模式',
'exit_fullscreen' => '退出全屏模式'
],
'asset' => [
'menu_label' => '資源',
'unsaved_label' => '未保存的資源',
'drop_down_add_title' => '增加...',
'drop_down_operation_title' => '動作...',
'upload_files' => '上傳檔案',
'create_file' => '新建檔案',
'create_directory' => '新建目錄',
'directory_popup_title' => '新目錄',
'directory_name' => '目錄名',
'rename' => '重命名',
'delete' => '刪除',
'move' => '移動',
'select' => '選擇',
'new' => '新檔案',
'rename_popup_title' => '重命名',
'rename_new_name' => '新名稱',
'invalid_path' => '路徑名稱只能包含數字, 拉丁字母和以下字元: _-/',
'error_deleting_file' => '刪除檔案 :name 錯誤.',
'error_deleting_dir_not_empty' => '刪除目錄 :name 錯誤. 目錄不為空.',
'error_deleting_dir' => '刪除檔案 :name 錯誤.',
'invalid_name' => '名稱只能包含數字, 拉丁字母, 空格和以下字元: _-',
'original_not_found' => '原始檔案或目錄找不到',
'already_exists' => '檔案或目錄已存在',
'error_renaming' => '重命名檔案或目錄錯誤',
'name_cant_be_empty' => '名稱不能為空',
'too_large' => '上傳的檔案太大. 最大檔案大小是 :max_size',
'type_not_allowed' => '只有下面的檔案類型是允許的: :allowed_types',
'file_not_valid' => '檔案不合法',
'error_uploading_file' => "上傳檔案錯誤 ':name': :error",
'move_please_select' => '請選擇',
'move_destination' => '目標目錄',
'move_popup_title' => '移動資源',
'move_button' => '移動',
'selected_files_not_found' => '選擇的檔案找不到',
'select_destination_dir' => '請選擇目標目錄',
'destination_not_found' => '目標目錄找不到',
'error_moving_file' => '移動檔案 :file 錯誤',
'error_moving_directory' => '移動目錄 :dir 錯誤',
'error_deleting_directory' => '刪除原始目錄 :dir 錯誤',
'path' => '路徑'
],
'component' => [
'menu_label' => '組件',
'unnamed' => '未命名的',
'no_description' => '沒有描述',
'alias' => '別名',
'alias_description' => '這個組件的唯一名稱, 在頁面或者佈局代碼中.',
'validation_message' => '需要組件別名, 且只能包含拉丁字元, 數字和下劃線. 別名必須以拉丁字元開頭.',
'invalid_request' => '模板不能保存, 因為非法組件數據.',
'no_records' => '找不到組件',
'not_found' => "組件 ':name' 找不到.",
'method_not_found' => "組件 ':name' 不包含方法 ':method'."
],
'template' => [
'invalid_type' => '未知模板類型.',
'not_found' => '請求模板找不到.',
'saved'=> '模板保存成功.'
],
'permissions' => [
'name' => 'Cms',
'manage_content' => '管理內容',
'manage_assets' => '管理資源',
'manage_pages' => '管理頁面',
'manage_layouts' => '管理佈局',
'manage_partials' => '管理部件',
'manage_themes' => '管理主題'
],
'media' => [
'invalid_path' => "不合法的路徑: ':path'.",
'menu_label' => '媒體',
'upload' => '上傳',
'move' => '移動',
'delete' => '刪除',
'add_folder' => '增加檔案夾',
'search' => '搜尋',
'display' => '顯示',
'filter_everything' => '所有',
'filter_images' => '圖片',
'filter_video' => '視頻',
'filter_audio' => '音頻',
'filter_documents' => '文檔',
'library' => '庫',
'folder_size_items' => '個數',
'size' => '大小',
'title' => '標題',
'last_modified' => '最近修改',
'public_url' => '公開URL',
'click_here' => '點選這裡',
'thumbnail_error' => '生產縮略圖錯誤.',
'return_to_parent' => '返回上層檔案夾',
'return_to_parent_label' => '返回 ..',
'nothing_selected' => '沒有選中.',
'multiple_selected' => '多選.',
'uploading_file_num' => '上傳 :number 檔案...',
'uploading_complete' => '上傳完畢',
'order_by' => '排序',
'search' => '搜尋',
'folder' => '檔案夾',
'no_files_found' => '沒找到您請求的檔案.',
'delete_empty' => '請選擇刪除項.',
'delete_confirm' => '您是否想要刪除選中項?',
'error_renaming_file' => '重命名錯誤.',
'new_folder_title' => '新檔案',
'folder_name' => '檔案夾名',
'error_creating_folder' => '新建檔案夾錯誤',
'folder_or_file_exist' => '檔案夾或檔案已經存在.',
'move_empty' => '請選擇移動項.',
'move_popup_title' => '移動檔案或檔案夾',
'move_destination' => '目標檔案夾',
'please_select_move_dest' => '請選擇目標檔案夾.',
'move_dest_src_match' => '請選擇另一個目標檔案夾.',
'empty_library' => '媒體庫是空的. 從上傳檔案或建立檔案夾開始.',
'insert' => '插入',
'crop_and_insert' => '裁剪並插入',
'select_single_image' => '請選擇一張圖片.',
'selection_not_image' => '選擇的不是一張圖片.',
'restore' => '取消所有更改',
'resize' => '調整大小...',
'selection_mode_normal' => '正常',
'selection_mode_fixed_ratio' => '固定比例',
'selection_mode_fixed_size' => '固定大小',
'height' => '高度',
'width' => '寬度',
'selection_mode' => '選擇模式',
'resize_image' => '調整圖片',
'image_size' => '圖片大小:',
'selected_size' => '選中:'
]
];

View File

@ -963,6 +963,15 @@ class MediaManager extends WidgetBase
$fileName = $uploadedFile->getClientOriginalName();
/*
* File name contains non-latin characters, attempt to slug the value
*/
if (!$this->validateFileName($fileName)) {
$extension = $uploadedFile->getClientOriginalExtension();
$fileNameSlug = Str::slug(File::name($fileName), '-');
$fileName = $fileNameSlug.'.'.$extension;
}
// See mime type handling in the asset manager
if (!$uploadedFile->isValid()) {
@ -1092,56 +1101,89 @@ class MediaManager extends WidgetBase
$path = rtrim(dirname($path), '/').'/';
$fileName = basename($imageSrcPath);
if (strpos($fileName, '..') !== false || strpos($fileName, '/') !== false || strpos($fileName, '\\') !== false)
if (
strpos($fileName, '..') !== false ||
strpos($fileName, '/') !== false ||
strpos($fileName, '\\') !== false
) {
throw new SystemException('Invalid image file name.');
}
$selectionParams = ['x', 'y', 'w', 'h'];
foreach ($selectionParams as $paramName) {
if (!array_key_exists($paramName, $selectionData))
if (!array_key_exists($paramName, $selectionData)) {
throw new SystemException('Invalid selection data.');
}
if (!ctype_digit($selectionData[$paramName]))
if (!ctype_digit($selectionData[$paramName])) {
throw new SystemException('Invalid selection data.');
}
}
$sessionDirectoryPath = $this->getCropSessionDirPath($cropSessionKey);
$fullSessionDirectoryPath = temp_path($sessionDirectoryPath);
if (!File::isDirectory($fullSessionDirectoryPath))
if (!File::isDirectory($fullSessionDirectoryPath)) {
throw new SystemException('The image editing session is not found.');
}
// Find the image on the disk and resize it
/*
* Find the image on the disk and resize it
*/
$imagePath = $fullSessionDirectoryPath.'/'.$fileName;
if (!File::isFile($imagePath))
if (!File::isFile($imagePath)) {
throw new SystemException('The image is not found on the disk.');
}
$extension = pathinfo($originalFileName, PATHINFO_EXTENSION);
$targetImageName = basename($originalFileName, '.'.$extension).'-'.$selectionData['x']
.'-'.$selectionData['y'].'-'.$selectionData['w'].'-'.$selectionData['h'].'-';
$targetImageName = basename($originalFileName, '.'.$extension).'-'
.$selectionData['x'].'-'
.$selectionData['y'].'-'
.$selectionData['w'].'-'
.$selectionData['h'].'-';
$targetImageName .= time();
$targetImageName .= '.'.$extension;
$targetTmpPath = $fullSessionDirectoryPath.'/'.$targetImageName;
/*
* Crop the image, otherwise copy original to target destination.
*/
if ($selectionData['w'] == 0 || $selectionData['h'] == 0) {
// If cropping is not required, copy the oiginal image to the target destination.
File::copy($imagePath, $targetTmpPath);
}
else {
$resizer = Resizer::open($imagePath);
$resizer->resample($selectionData['x'], $selectionData['y'], $selectionData['w'], $selectionData['h'], $selectionData['w'], $selectionData['h']);
$resizer->resample(
$selectionData['x'],
$selectionData['y'],
$selectionData['w'],
$selectionData['h'],
$selectionData['w'],
$selectionData['h']
);
$resizer->save($targetTmpPath, 95);
}
// Upload the cropped file to the Library
$targetPath = $path.'cropped-images/'.$targetImageName;
/*
* Upload the cropped file to the Library
*/
$targetFolder = $path.'cropped-images';
$targetPath = $targetFolder.'/'.$targetImageName;
$library = MediaLibrary::instance();
$library->put($targetPath, file_get_contents($targetTmpPath));
return $library->getPathUrl($targetPath);
return [
'publicUrl' => $library->getPathUrl($targetPath),
'documentType' => MediaLibraryItem::FILE_TYPE_IMAGE,
'itemType' => MediaLibraryItem::TYPE_FILE,
'path' => $targetPath,
'title' => $targetImageName,
'folder' => $targetFolder
];
}
}
}

View File

@ -1,74 +1,78 @@
<div class="layout-row min-size">
<div class="layout control-toolbar">
<div class="layout-cell width-fix">
<div class="toolbar-item">
<div class="btn-group">
<div class="dropdown last">
<button type="button" class="btn btn-primary oc-icon-plus"
data-control="create-asset"
data-toggle="dropdown"
><?= e(trans('cms::lang.sidebar.add')) ?></button>
<div class="control-toolbar toolbar-padded">
<ul class="dropdown-menu" role="menu" data-dropdown-title="<?= e(trans('cms::lang.asset.drop_down_add_title')) ?>">
<li role="presentation"><a role="menuitem" tabindex="-1" href="javascript:;" data-control="create-template" class="oc-icon-file-text-o"><?= e(trans('cms::lang.asset.create_file')) ?></a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="javascript:;" data-control="upload-assets" class="oc-icon-upload"><?= e(trans('cms::lang.asset.upload_files')) ?></a></li>
<li role="presentation" class="divider"></li>
<li role="presentation"><a
role="menuitem"
tabindex="-1"
href="javascript:;"
class="oc-icon-folder-o"
data-control="popup"
data-handler="<?= $this->getEventHandler('onLoadNewDirPopup') ?>"
><?= e(trans('cms::lang.asset.create_directory')) ?></a></li>
</ul>
</div>
<!-- Control Panel -->
<div class="toolbar-item" data-calculate-width>
<div class="btn-group">
<div class="dropdown last">
<button type="button" class="btn btn-primary oc-icon-plus"
data-control="create-asset"
data-toggle="dropdown"
><?= e(trans('cms::lang.sidebar.add')) ?></button>
<div class="dropdown hide"
id="<?= $this->getId('tools-button') ?>"
data-trigger-action="show"
data-trigger="<?= '#'.$this->getId('asset-list') ?> input[type=checkbox]"
data-trigger-condition="checked">
<button type="button" class="btn btn-primary empty oc-icon-wrench last"
data-toggle="dropdown"
data-control="asset-tools"
></button>
<ul class="dropdown-menu" role="menu" data-dropdown-title="<?= e(trans('cms::lang.asset.drop_down_add_title')) ?>">
<li role="presentation"><a role="menuitem" tabindex="-1" href="javascript:;" data-control="create-template" class="oc-icon-file-text-o"><?= e(trans('cms::lang.asset.create_file')) ?></a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="javascript:;" data-control="upload-assets" class="oc-icon-upload"><?= e(trans('cms::lang.asset.upload_files')) ?></a></li>
<li role="presentation" class="divider"></li>
<li role="presentation"><a
role="menuitem"
tabindex="-1"
href="javascript:;"
class="oc-icon-folder-o"
data-control="popup"
data-handler="<?= $this->getEventHandler('onLoadNewDirPopup') ?>"
><?= e(trans('cms::lang.asset.create_directory')) ?></a></li>
</ul>
</div>
<ul class="dropdown-menu" role="menu" data-dropdown-title="<?= e(trans('cms::lang.asset.drop_down_operation_title')) ?>">
<li role="presentation"><a
role="menuitem"
tabindex="-1"
href="javascript:;"
data-control="delete-asset"
data-confirmation="<?= e(trans($this->deleteConfirmation)) ?>"
class="oc-icon-trash-o"
><?= e(trans('cms::lang.asset.delete')) ?></a></li>
<div class="dropdown hide"
id="<?= $this->getId('tools-button') ?>"
data-trigger-action="show"
data-trigger="<?= '#'.$this->getId('asset-list') ?> input[type=checkbox]"
data-trigger-condition="checked">
<button type="button" class="btn btn-primary empty oc-icon-wrench last"
data-toggle="dropdown"
data-control="asset-tools"
></button>
<li role="presentation"><a
role="menuitem"
tabindex="-1"
href="javascript:;"
class="oc-icon-angle-double-right"
data-control="popup"
data-handler="<?= $this->getEventHandler('onLoadMovePopup') ?>"
><?= e(trans('cms::lang.asset.move')) ?></a></li>
</ul>
</div>
<ul class="dropdown-menu" role="menu" data-dropdown-title="<?= e(trans('cms::lang.asset.drop_down_operation_title')) ?>">
<li role="presentation"><a
role="menuitem"
tabindex="-1"
href="javascript:;"
data-control="delete-asset"
data-confirmation="<?= e(trans($this->deleteConfirmation)) ?>"
class="oc-icon-trash-o"
><?= e(trans('cms::lang.asset.delete')) ?></a></li>
<li role="presentation"><a
role="menuitem"
tabindex="-1"
href="javascript:;"
class="oc-icon-angle-double-right"
data-control="popup"
data-handler="<?= $this->getEventHandler('onLoadMovePopup') ?>"
><?= e(trans('cms::lang.asset.move')) ?></a></li>
</ul>
</div>
</div>
</div>
<div class="layout-cell">
<div class="relative toolbar-item loading-indicator-container size-input-text">
<input placeholder="<?= e(trans('cms::lang.sidebar.search')) ?>" type="text" name="search" value="<?= e($this->getSearchTerm()) ?>"
class="form-control icon search" autocomplete="off"
data-track-input
data-load-indicator
data-load-indicator-opaque
data-request-success="$('<?= '#'.$this->getId('tools-button') ?>').trigger('oc.triggerOn.update')"
data-request="<?= $this->getEventHandler('onSearch') ?>"
/>
</div>
<!-- Asset Search -->
<div class="relative toolbar-item loading-indicator-container size-input-text">
<input
type="text"
name="search"
value="<?= e($this->getSearchTerm()) ?>"
class="form-control icon search" autocomplete="off"
placeholder="<?= e(trans('cms::lang.sidebar.search')) ?>"
data-track-input
data-load-indicator
data-load-indicator-opaque
data-request-success="$('<?= '#'.$this->getId('tools-button') ?>').trigger('oc.triggerOn.update')"
data-request="<?= $this->getEventHandler('onSearch') ?>"
/>
</div>
</div>
</div>

View File

@ -54,7 +54,7 @@ div[data-control="media-manager"] .sidebar-image-placeholder-container{display:t
div[data-control="media-manager"] .sidebar-image-placeholder{display:table-cell;height:225px;position:relative;vertical-align:middle;text-align:center;border-bottom:1px solid #ecf0f1}
div[data-control="media-manager"] .sidebar-image-placeholder[data-loading]{background:#ecf0f1}
div[data-control="media-manager"] .sidebar-image-placeholder[data-loading]:after{background-image:url('../../../../../../modules/system/assets/ui/images/loader-transparent.svg');background-position:50% 50%;content:' ';-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite;background-size:62px 62px;position:absolute;width:62px;height:62px;top:50%;left:50%;margin-top:-31px;margin-left:-31px}
div[data-control="media-manager"] .sidebar-image-placeholder i.icon-chain-broken,div[data-control="media-manager"] .sidebar-image-placeholder i.icon-crop,div[data-control="media-manager"] .sidebar-image-placeholder i.icon-asterisk{color:#bdc3c7;font-size:55px}
div[data-control="media-manager"] .sidebar-image-placeholder i.icon-chain-broken,div[data-control="media-manager"] .sidebar-image-placeholder i.icon-crop,div[data-control="media-manager"] .sidebar-image-placeholder i.icon-asterisk,div[data-control="media-manager"] .sidebar-image-placeholder i.icon-level-up{color:#bdc3c7;font-size:55px}
div[data-control="media-manager"] .sidebar-image-placeholder.no-border{border-bottom:none}
div[data-control="media-manager"] .sidebar-image-placeholder p{font-size:12px;margin:10px;line-height:160%;color:#bdc3c7;margin-top:25px}
div[data-control="media-manager"] .list-container{position:relative;z-index:100}

View File

@ -113,19 +113,20 @@ return
clearTimeout(this.selectTimer)
this.selectTimer=null}
MediaManager.prototype.selectItem=function(node,expandSelection){if(!expandSelection){var items=this.$el.get(0).querySelectorAll('[data-type="media-item"].selected')
for(var i=0,len=items.length;i<len;i++)
items[i].setAttribute('class','')}
else
this.unselectRoot()
if(!expandSelection)
node.setAttribute('class','selected')
for(var i=0,len=items.length;i<len;i++){items[i].setAttribute('class','')}
node.setAttribute('class','selected')}
else{if(node.getAttribute('class')=='selected')
node.setAttribute('class','')
else
node.setAttribute('class','selected')}
node.focus()
this.clearSelectTimer()
if(this.isPreviewSidebarVisible()){this.selectTimer=setTimeout(this.proxy(this.updateSidebarPreview),100)}}
if(this.isPreviewSidebarVisible()){this.selectTimer=setTimeout(this.proxy(this.updateSidebarPreview),100)}
if(node.hasAttribute('data-root')&&!expandSelection){this.toggleMoveAndDelete(true)}
else{this.toggleMoveAndDelete(false)}
if(expandSelection){this.unselectRoot()}}
MediaManager.prototype.toggleMoveAndDelete=function(value){$('[data-command=delete]',this.$el).prop('disabled',value)
$('[data-command=move]',this.$el).prop('disabled',value)}
MediaManager.prototype.unselectRoot=function(){var rootItem=this.$el.get(0).querySelector('[data-type="media-item"][data-root].selected')
if(rootItem)
rootItem.setAttribute('class','')}
@ -135,8 +136,7 @@ clearTimeout(this.dblTouchTimer)
this.dblTouchTimer=null}
MediaManager.prototype.clearDblTouchFlag=function(){this.dblTouchFlag=false}
MediaManager.prototype.selectFirstItem=function(){var firstItem=this.itemListElement.querySelector('[data-type="media-item"]:first-child')
if(firstItem)
this.selectItem(firstItem)}
if(firstItem){this.selectItem(firstItem)}}
MediaManager.prototype.selectRelative=function(next,expandSelection){var currentSelection=this.getSelectedItems(true,true)
if(currentSelection.length==0){this.selectFirstItem()
return}
@ -183,9 +183,8 @@ else{$sidebar.addClass('hide')
$button.addClass('sidebar-hidden')}
this.$form.request(this.options.alias+'::onSetSidebarVisible',{data:{visible:(isVisible?0:1)}})}
MediaManager.prototype.updateSidebarMediaPreview=function(items){var previewPanel=this.sidebarPreviewElement,previewContainer=previewPanel.querySelector('[data-control="media-preview-container"]'),template=''
for(var i=0,len=previewContainer.children.length;i<len;i++)
previewContainer.removeChild(previewContainer.children[i])
if(items.length==1){var item=items[0],documentType=item.getAttribute('data-document-type')
for(var i=0,len=previewContainer.children.length;i<len;i++){previewContainer.removeChild(previewContainer.children[i])}
if(items.length==1&&!items[0].hasAttribute('data-root')){var item=items[0],documentType=item.getAttribute('data-document-type')
switch(documentType){case'audio':template=previewPanel.querySelector('[data-control="audio-template"]').innerHTML
break;case'video':template=previewPanel.querySelector('[data-control="video-template"]').innerHTML
break;case'image':template=previewPanel.querySelector('[data-control="image-template"]').innerHTML
@ -193,6 +192,8 @@ break;}
previewContainer.innerHTML=template.replace('{src}',item.getAttribute('data-public-url')).replace('{path}',item.getAttribute('data-path')).replace('{last-modified}',item.getAttribute('data-last-modified-ts'))
if(documentType=='image')
this.loadSidebarThumbnail()}
else if(items.length==1&&items[0].hasAttribute('data-root')){template=previewPanel.querySelector('[data-control="go-up"]').innerHTML
previewContainer.innerHTML=template}
else if(items.length==0){template=previewPanel.querySelector('[data-control="no-selection-template"]').innerHTML
previewContainer.innerHTML=template}
else{template=previewPanel.querySelector('[data-control="multi-selection-template"]').innerHTML
@ -201,7 +202,7 @@ MediaManager.prototype.updateSidebarPreview=function(resetSidebar){if(!this.side
this.sidebarPreviewElement=this.$el.get(0).querySelector('[data-control="preview-sidebar"]')
var items=resetSidebar===undefined?this.$el.get(0).querySelectorAll('[data-type="media-item"].selected'):[],previewPanel=this.sidebarPreviewElement
if(items.length==0){this.sidebarPreviewElement.querySelector('[data-control="sidebar-labels"]').setAttribute('class','hide')}
else if(items.length==1){this.sidebarPreviewElement.querySelector('[data-control="sidebar-labels"]').setAttribute('class','panel')
else if(items.length==1&&!items[0].hasAttribute('data-root')){this.sidebarPreviewElement.querySelector('[data-control="sidebar-labels"]').setAttribute('class','panel')
var item=items[0],lastModified=item.getAttribute('data-last-modified')
previewPanel.querySelector('[data-label="size"]').textContent=item.getAttribute('data-size')
previewPanel.querySelector('[data-label="title"]').textContent=item.getAttribute('data-title')
@ -214,8 +215,8 @@ previewPanel.querySelector('[data-control="last-modified"]').setAttribute('class
if(this.isSearchMode()){previewPanel.querySelector('[data-control="item-folder"]').setAttribute('class','')
var folderNode=previewPanel.querySelector('[data-label="folder"]')
folderNode.textContent=item.getAttribute('data-folder')
folderNode.setAttribute('data-path',item.getAttribute('data-folder'))}else
previewPanel.querySelector('[data-control="item-folder"]').setAttribute('class','hide')}
folderNode.setAttribute('data-path',item.getAttribute('data-folder'))}
else{previewPanel.querySelector('[data-control="item-folder"]').setAttribute('class','hide')}}
else{this.sidebarPreviewElement.querySelector('[data-control="sidebar-labels"]').setAttribute('class','hide')}
this.updateSidebarMediaPreview(items)}
MediaManager.prototype.loadSidebarThumbnail=function(){if(this.sidebarThumbnailAjax){try{this.sidebarThumbnailAjax.abort()}
@ -313,7 +314,7 @@ MediaManager.prototype.uploadSending=function(file,xhr,formData){formData.append
formData.append('X_OCTOBER_FILEUPLOAD',this.options.uniqueId)}
MediaManager.prototype.uploadCancelAll=function(){this.dropzone.removeAllFiles(true)
this.hideUploadUi()}
MediaManager.prototype.uploadError=function(file,message){swal({title:'Error uploading file',text:message,confirmButtonClass:'btn-default'})}
MediaManager.prototype.uploadError=function(file,message){$.oc.alert('Error uploading file')}
MediaManager.prototype.cropSelectedImage=function(callback){var selectedItems=this.getSelectedItems(true)
if(selectedItems.length!=1){alert(this.options.selectSingleImage)
return}
@ -321,8 +322,7 @@ if(selectedItems[0].getAttribute('data-document-type')!=='image'){alert(this.opt
return}
var path=selectedItems[0].getAttribute('data-path')
new $.oc.mediaManager.imageCropPopup(path,{alias:this.options.alias,onDone:callback})}
MediaManager.prototype.onImageCropped=function(imageUrl){var item={documentType:'image',publicUrl:imageUrl}
this.$el.trigger('popupcommand',['insert-cropped',item])}
MediaManager.prototype.onImageCropped=function(result){this.$el.trigger('popupcommand',['insert-cropped',result])}
MediaManager.prototype.clearSearchTrackInputTimer=function(){if(this.searchTrackInputTimer===null)
return
clearTimeout(this.searchTrackInputTimer)
@ -337,9 +337,9 @@ this.lastSearchValue=value
this.clearSearchTrackInputTimer()
this.searchTrackInputTimer=window.setTimeout(this.proxy(this.updateSearchResults),300)}
MediaManager.prototype.deleteItems=function(){var items=this.$el.get(0).querySelectorAll('[data-type="media-item"].selected')
if(!items.length){swal({title:this.options.deleteEmpty,confirmButtonClass:'btn-default'})
if(!items.length){$.oc.alert(this.options.deleteEmpty)
return}
swal({title:this.options.deleteConfirm,confirmButtonClass:'btn-default',showCancelButton:true},this.proxy(this.deleteConfirmation))}
$.oc.confirm(this.options.deleteConfirm,this.proxy(this.deleteConfirmation))}
MediaManager.prototype.deleteConfirmation=function(confirmed){if(!confirmed)
return
var items=this.$el.get(0).querySelectorAll('[data-type="media-item"].selected'),paths=[]
@ -359,7 +359,7 @@ return false}
MediaManager.prototype.folderCreated=function(){this.$el.find('button[data-command="create-folder"]').popup('hide')
this.afterNavigate()}
MediaManager.prototype.moveItems=function(ev){var items=this.$el.get(0).querySelectorAll('[data-type="media-item"].selected')
if(!items.length){swal({title:this.options.moveEmpty,confirmButtonClass:'btn-default'})
if(!items.length){$.oc.alert(this.options.moveEmpty)
return}
var data={exclude:[],path:this.$el.find('[data-type="current-folder"]').val()}
for(var i=0,len=items.length;i<len;i++){var item=items[i],path=item.getAttribute('data-path')
@ -401,7 +401,7 @@ else
this.cropSelectedImage(this.proxy(this.onImageCropped))
break;}
return false}
MediaManager.prototype.onItemClick=function(ev){if(ev.currentTarget.hasAttribute('data-root')||(ev.target.tagName=='I'&&ev.target.hasAttribute('data-rename-control')))
MediaManager.prototype.onItemClick=function(ev){if(ev.target.tagName=='I'&&ev.target.hasAttribute('data-rename-control'))
return
this.selectItem(ev.currentTarget,ev.shiftKey)}
MediaManager.prototype.onItemTouch=function(ev){this.onItemClick(ev)
@ -573,8 +573,7 @@ MediaManagerImageCropPopup.prototype.cropAndInsert=function(){var data={img:$(th
$.oc.stripeLoadIndicator.show()
this.$popupElement.find('form').request(this.options.alias+'::onCropImage',{data:data}).always(function(){$.oc.stripeLoadIndicator.hide()}).done(this.proxy(this.onImageCropped))}
MediaManagerImageCropPopup.prototype.onImageCropped=function(response){this.hide()
if(this.options.onDone!==undefined)
this.options.onDone(response.result)}
if(this.options.onDone!==undefined){this.options.onDone(response)}}
MediaManagerImageCropPopup.prototype.showResizePopup=function(){this.$popupElement.find('button[data-command=resize]').popup({content:this.$popupElement.find('[data-control="resize-template"]').html(),zIndex:1220})}
MediaManagerImageCropPopup.prototype.onResizePopupShown=function(ev,button,popup){var $popup=$(popup),$widthControl=$popup.find('input[name=width]'),$heightControl=$popup.find('input[name=height]'),imageWidth=this.fixDimensionValue(this.$popupElement.find('input[data-control=dimension-width]').val()),imageHeight=this.fixDimensionValue(this.$popupElement.find('input[data-control=dimension-height]').val())
$widthControl.val(imageWidth)
@ -635,7 +634,8 @@ this.initRulers()
this.initJCrop()}
MediaManagerImageCropPopup.prototype.onSelectionModeChanged=function(){var mode=this.getSelectionMode(),$widthInput=this.getWidthInput(),$heightInput=this.getHeightInput()
if(mode==='normal'){$widthInput.attr('disabled','disabled')
$heightInput.attr('disabled','disabled')}else{$widthInput.removeAttr('disabled')
$heightInput.attr('disabled','disabled')}
else{$widthInput.removeAttr('disabled')
$heightInput.removeAttr('disabled')
$widthInput.val(this.fixDimensionValue($widthInput.val()))
$heightInput.val(this.fixDimensionValue($heightInput.val()))}

View File

@ -13,9 +13,9 @@ this.button.addCallback(buttonInsertAudio,this.mediamanager.onInsertAudio);},onI
hideLinkTooltips()
this.selection.save()
this.link.getData()
new $.oc.mediaManager.popup({alias:'ocmediamanager',cropAndInsertButton:false,onInsert:function(items){if(!items.length){alert($.oc.lang.get('mediamanager.invalid_file_empty_insert'))
new $.oc.mediaManager.popup({alias:'ocmediamanager',cropAndInsertButton:false,onInsert:function(items){if(!items.length){$.oc.alert($.oc.lang.get('mediamanager.invalid_file_empty_insert'))
return}
if(items.length>1){alert($.oc.lang.get('mediamanager.invalid_file_single_insert'))
if(items.length>1){$.oc.alert($.oc.lang.get('mediamanager.invalid_file_single_insert'))
return}
var text=that.link.text,textIsEmpty=$.trim(text)===''
for(var i=0,len=items.length;i<len;i++){var text=textIsEmpty?items[i].title:text
@ -26,11 +26,11 @@ if(!this.selection.getCurrent())
this.focus.setStart()
this.selection.save()
var that=this
new $.oc.mediaManager.popup({alias:'ocmediamanager',cropAndInsertButton:true,onInsert:function(items){if(!items.length){alert('Please select image(s) to insert.')
new $.oc.mediaManager.popup({alias:'ocmediamanager',cropAndInsertButton:true,onInsert:function(items){if(!items.length){$.oc.alert($.oc.lang.get('mediamanager.invalid_image_empty_insert'))
return}
that.selection.restore()
var isP=that.utils.isCurrentOrParent('P'),html='',imagesInserted=0
for(var i=0,len=items.length;i<len;i++){if(items[i].documentType!=='image'){alert('The file "'+items[i].title+'" is not an image.')
for(var i=0,len=items.length;i<len;i++){if(items[i].documentType!=='image'){$.oc.alert($.oc.lang.get('mediamanager.invalid_image_invalid_insert','The file "'+items[i].title+'" is not an image.'))
continue}
var $img=$('<img>').attr('src',items[i].publicUrl).attr('data-redactor-inserted-image','true')
html+=that.utils.getOuterHtml($img)
@ -50,12 +50,12 @@ var that=this
hideLinkTooltips()
this.selection.save()
this.link.getData()
new $.oc.mediaManager.popup({alias:'ocmediamanager',cropAndInsertButton:false,onInsert:function(items){if(!items.length){alert('Please select a video file to insert.')
new $.oc.mediaManager.popup({alias:'ocmediamanager',cropAndInsertButton:false,onInsert:function(items){if(!items.length){$.oc.alert($.oc.lang.get('mediamanager.invalid_video_empty_insert'))
return}
if(items.length>1){alert('Please select a single file.')
if(items.length>1){$.oc.alert($.oc.lang.get('mediamanager.invalid_file_single_insert'))
return}
var item=items[0]
if(item.documentType!=='video'){alert('The file "'+item.title+'" is not a video.')
if(item.documentType!=='video'){$.oc.alert($.oc.lang.get('mediamanager.invalid_video_invalid_insert','The file "'+item.title+'" is not a video.'))
return}
var $richEditorNode=that.core.getTextarea().closest('[data-control="richeditor"]'),$videoNode=$('<figure contenteditable="false" tabindex="0" data-ui-block="true"/>')
$videoNode.get(0).contentEditable=false
@ -68,12 +68,12 @@ var that=this
hideLinkTooltips()
this.selection.save()
this.link.getData()
new $.oc.mediaManager.popup({alias:'ocmediamanager',cropAndInsertButton:false,onInsert:function(items){if(!items.length){alert('Please select an audio file to insert.')
new $.oc.mediaManager.popup({alias:'ocmediamanager',cropAndInsertButton:false,onInsert:function(items){if(!items.length){$.oc.alert($.oc.lang.get('mediamanager.invalid_audio_empty_insert'))
return}
if(items.length>1){alert('Please select a single file.')
if(items.length>1){$.oc.alert($.oc.lang.get('mediamanager.invalid_file_single_insert'))
return}
var item=items[0]
if(item.documentType!=='audio'){alert('The file "'+item.title+'" is not an audio file.')
if(item.documentType!=='audio'){$.oc.alert($.oc.lang.get('mediamanager.invalid_audio_invalid_insert','The file "'+item.title+'" is not an audio file.'))
return}
var $richEditorNode=that.core.getTextarea().closest('[data-control="richeditor"]'),$videoNode=$('<figure contenteditable="false" tabindex="0" data-ui-block="true"/>')
$videoNode.get(0).contentEditable=false

View File

@ -236,20 +236,24 @@
}
$.oc.stripeLoadIndicator.show()
this.$popupElement.find('form').request(
this.options.alias+'::onCropImage', {
this.$popupElement
.find('form')
.request(this.options.alias+'::onCropImage', {
data: data
}
).always(function() {
$.oc.stripeLoadIndicator.hide()
}).done(this.proxy(this.onImageCropped))
})
.always(function() {
$.oc.stripeLoadIndicator.hide()
})
.done(this.proxy(this.onImageCropped))
}
MediaManagerImageCropPopup.prototype.onImageCropped = function(response) {
this.hide()
if (this.options.onDone !== undefined)
this.options.onDone(response.result)
if (this.options.onDone !== undefined) {
this.options.onDone(response)
}
}
MediaManagerImageCropPopup.prototype.showResizePopup = function() {
@ -409,7 +413,8 @@
if (mode === 'normal') {
$widthInput.attr('disabled', 'disabled')
$heightInput.attr('disabled', 'disabled')
} else {
}
else {
$widthInput.removeAttr('disabled')
$heightInput.removeAttr('disabled')
@ -449,13 +454,13 @@
var command = $(ev.currentTarget).data('command')
switch (command) {
case 'insert' :
case 'insert':
this.cropAndInsert()
break
case 'resize' :
case 'resize':
this.showResizePopup()
break
case 'undo-resizing' :
case 'undo-resizing':
this.undoResizing()
break
}

View File

@ -136,7 +136,7 @@
this.$el.on('click.tree-path', 'ul.tree-path, [data-control="sidebar-labels"]', this.proxy(this.onNavigate))
this.$el.on('click.command', '[data-command]', this.proxy(this.onCommandClick))
// Touch devices use double-tap for the navigation and single tap for selecting.
// Another option is checkboxes visible only on touch devices, but this approach
// will require more significant changes in the code for the touch device support.
@ -162,7 +162,7 @@
this.$el.off('dblclick', this.proxy(this.onNavigate))
this.$el.off('click.tree-path', this.proxy(this.onNavigate))
this.$el.off('click.command', this.proxy(this.onCommandClick))
if (!Modernizr.touch)
this.$el.off('click.item', this.proxy(this.onItemClick))
else
@ -248,16 +248,14 @@
var items = this.$el.get(0).querySelectorAll('[data-type="media-item"].selected')
// The class attribute is used only for selecting, it's safe to clear it
for (var i = 0, len = items.length; i < len; i++)
for (var i = 0, len = items.length; i < len; i++) {
items[i].setAttribute('class', '')
}
else
this.unselectRoot()
}
if (!expandSelection)
node.setAttribute('class', 'selected')
}
else {
if (node.getAttribute('class') == 'selected')
if (node.getAttribute('class') == 'selected')
node.setAttribute('class', '')
else
node.setAttribute('class', 'selected')
@ -272,6 +270,24 @@
// when the selection changes too quickly (with the keyboard arrows)
this.selectTimer = setTimeout(this.proxy(this.updateSidebarPreview), 100)
}
// Disable delete and move buttons
if (node.hasAttribute('data-root') && !expandSelection) {
this.toggleMoveAndDelete(true)
}
else {
this.toggleMoveAndDelete(false)
}
// Always unselect root when selecting multiples
if (expandSelection) {
this.unselectRoot()
}
}
MediaManager.prototype.toggleMoveAndDelete = function(value) {
$('[data-command=delete]', this.$el).prop('disabled', value)
$('[data-command=move]', this.$el).prop('disabled', value)
}
MediaManager.prototype.unselectRoot = function() {
@ -295,8 +311,9 @@
MediaManager.prototype.selectFirstItem = function() {
var firstItem = this.itemListElement.querySelector('[data-type="media-item"]:first-child')
if (firstItem)
if (firstItem) {
this.selectItem(firstItem)
}
}
MediaManager.prototype.selectRelative = function(next, expandSelection) {
@ -437,10 +454,12 @@
previewContainer = previewPanel.querySelector('[data-control="media-preview-container"]'),
template = ''
for (var i = 0, len = previewContainer.children.length; i < len; i++)
for (var i = 0, len = previewContainer.children.length; i < len; i++) {
previewContainer.removeChild(previewContainer.children[i])
}
if (items.length == 1) {
// Single item selected
if (items.length == 1 && !items[0].hasAttribute('data-root')) {
var item = items[0],
documentType = item.getAttribute('data-document-type')
@ -464,11 +483,18 @@
if (documentType == 'image')
this.loadSidebarThumbnail()
}
// "Go up" is selected
else if (items.length == 1 && items[0].hasAttribute('data-root')) {
template = previewPanel.querySelector('[data-control="go-up"]').innerHTML
previewContainer.innerHTML = template
}
// No selection
else if (items.length == 0) {
template = previewPanel.querySelector('[data-control="no-selection-template"]').innerHTML
previewContainer.innerHTML = template
}
else {
// Multiple selection
else {
template = previewPanel.querySelector('[data-control="multi-selection-template"]').innerHTML
previewContainer.innerHTML = template
}
@ -481,14 +507,14 @@
var items = resetSidebar === undefined ? this.$el.get(0).querySelectorAll('[data-type="media-item"].selected') : [],
previewPanel = this.sidebarPreviewElement
// No items are selected
if (items.length == 0) {
// No items are selected
this.sidebarPreviewElement.querySelector('[data-control="sidebar-labels"]').setAttribute('class', 'hide')
}
else if (items.length == 1) {
}
// One item is selected - display the details
else if (items.length == 1 && !items[0].hasAttribute('data-root')) {
this.sidebarPreviewElement.querySelector('[data-control="sidebar-labels"]').setAttribute('class', 'panel')
// One item is selected - display the details
var item = items[0],
lastModified = item.getAttribute('data-last-modified')
@ -507,11 +533,13 @@
var folderNode = previewPanel.querySelector('[data-label="folder"]')
folderNode.textContent = item.getAttribute('data-folder')
folderNode.setAttribute('data-path', item.getAttribute('data-folder'))
} else
}
else {
previewPanel.querySelector('[data-control="item-folder"]').setAttribute('class', 'hide')
}
}
// Multiple items are selected or "Go up" is selected
else {
// Multiple items are selected
this.sidebarPreviewElement.querySelector('[data-control="sidebar-labels"]').setAttribute('class', 'hide')
}
@ -777,12 +805,7 @@
}
MediaManager.prototype.uploadError = function(file, message) {
swal({
title: 'Error uploading file',
text: message,
// type: 'error',
confirmButtonClass: 'btn-default'
})
$.oc.alert('Error uploading file')
}
//
@ -810,13 +833,8 @@
})
}
MediaManager.prototype.onImageCropped = function(imageUrl) {
var item = {
documentType: 'image',
publicUrl: imageUrl
}
this.$el.trigger('popupcommand', ['insert-cropped', item])
MediaManager.prototype.onImageCropped = function(result) {
this.$el.trigger('popupcommand', ['insert-cropped', result])
}
//
@ -865,19 +883,11 @@
var items = this.$el.get(0).querySelectorAll('[data-type="media-item"].selected')
if (!items.length) {
swal({
title: this.options.deleteEmpty,
confirmButtonClass: 'btn-default'
})
$.oc.alert(this.options.deleteEmpty)
return
}
swal({
title: this.options.deleteConfirm,
confirmButtonClass: 'btn-default',
showCancelButton: true
}, this.proxy(this.deleteConfirmation))
$.oc.confirm(this.options.deleteConfirm, this.proxy(this.deleteConfirmation))
}
MediaManager.prototype.deleteConfirmation = function(confirmed) {
@ -949,11 +959,7 @@
var items = this.$el.get(0).querySelectorAll('[data-type="media-item"].selected')
if (!items.length) {
swal({
title: this.options.moveEmpty,
confirmButtonClass: 'btn-default'
})
$.oc.alert(this.options.moveEmpty)
return
}
@ -1037,13 +1043,13 @@
var command = $(ev.currentTarget).data('command')
switch (command) {
case 'refresh' :
case 'refresh':
this.refresh()
break;
case 'change-view' :
case 'change-view':
this.changeView($(ev.currentTarget).data('view'))
break;
case 'cancel-uploading' :
case 'cancel-uploading':
this.uploadCancelAll()
break;
case 'close-uploader':
@ -1078,8 +1084,8 @@
}
MediaManager.prototype.onItemClick = function(ev) {
// Don't select "Go up" folders and don't select items when the rename icon is clicked
if (ev.currentTarget.hasAttribute('data-root') || (ev.target.tagName == 'I' && ev.target.hasAttribute('data-rename-control')))
// Don't select items when the rename icon is clicked
if (ev.target.tagName == 'I' && ev.target.hasAttribute('data-rename-control'))
return
this.selectItem(ev.currentTarget, ev.shiftKey)

View File

@ -52,12 +52,12 @@ RedactorPlugins.mediamanager = function()
cropAndInsertButton: false,
onInsert: function(items) {
if (!items.length) {
alert($.oc.lang.get('mediamanager.invalid_file_empty_insert'))
$.oc.alert($.oc.lang.get('mediamanager.invalid_file_empty_insert'))
return
}
if (items.length > 1) {
alert($.oc.lang.get('mediamanager.invalid_file_single_insert'))
$.oc.alert($.oc.lang.get('mediamanager.invalid_file_single_insert'))
return
}
@ -91,7 +91,7 @@ RedactorPlugins.mediamanager = function()
cropAndInsertButton: true,
onInsert: function(items) {
if (!items.length) {
alert('Please select image(s) to insert.')
$.oc.alert($.oc.lang.get('mediamanager.invalid_image_empty_insert'))
return
}
that.selection.restore()
@ -104,7 +104,7 @@ RedactorPlugins.mediamanager = function()
for (var i=0, len=items.length; i<len; i++) {
if (items[i].documentType !== 'image') {
alert('The file "'+items[i].title+'" is not an image.')
$.oc.alert($.oc.lang.get('mediamanager.invalid_image_invalid_insert', 'The file "'+items[i].title+'" is not an image.'))
continue
}
@ -154,19 +154,19 @@ RedactorPlugins.mediamanager = function()
cropAndInsertButton: false,
onInsert: function(items) {
if (!items.length) {
alert('Please select a video file to insert.')
$.oc.alert($.oc.lang.get('mediamanager.invalid_video_empty_insert'))
return
}
if (items.length > 1) {
alert('Please select a single file.')
$.oc.alert($.oc.lang.get('mediamanager.invalid_file_single_insert'))
return
}
var item = items[0]
if (item.documentType !== 'video') {
alert('The file "'+item.title+'" is not a video.')
$.oc.alert($.oc.lang.get('mediamanager.invalid_video_invalid_insert', 'The file "'+item.title+'" is not a video.'))
return
}
@ -201,19 +201,19 @@ RedactorPlugins.mediamanager = function()
cropAndInsertButton: false,
onInsert: function(items) {
if (!items.length) {
alert('Please select an audio file to insert.')
$.oc.alert($.oc.lang.get('mediamanager.invalid_audio_empty_insert'))
return
}
if (items.length > 1) {
alert('Please select a single file.')
$.oc.alert($.oc.lang.get('mediamanager.invalid_file_single_insert'))
return
}
var item = items[0]
if (item.documentType !== 'audio') {
alert('The file "'+item.title+'" is not an audio file.')
$.oc.alert($.oc.lang.get('mediamanager.invalid_audio_invalid_insert', 'The file "'+item.title+'" is not an audio file.'))
return
}

View File

@ -323,7 +323,7 @@ div[data-control="media-manager"] {
}
}
i.icon-chain-broken, i.icon-crop, i.icon-asterisk {
i.icon-chain-broken, i.icon-crop, i.icon-asterisk, i.icon-level-up {
color: #bdc3c7;
font-size: 55px;
}

View File

@ -9,8 +9,8 @@
$sizeDisabledAttr = $currentSelectionMode == Cms\Widgets\MediaManager::SELECTION_MODE_NORMAL ? 'disabled="disabled"' : null;
?>
<div class="layout control-toolbar standalone-paddings">
<div class="layout-cell toolbar-item">
<div class="control-toolbar toolbar-padded">
<div class="toolbar-item toolbar-primary">
<div data-control="toolbar">
<label class="standalone"><?= e(trans('cms::lang.media.image_size')) ?> <span data-label="width"><?= $dimensions[0] ?></span> x <span data-label="height"><?= $dimensions[1] ?></span></label>

View File

@ -35,3 +35,12 @@
</div>
</div>
</script>
<script type="text/template" data-control="go-up">
<div class="sidebar-image-placeholder-container">
<div class="sidebar-image-placeholder no-border">
<i class="icon-level-up"></i>
<p><?= e(trans('cms::lang.media.return_to_parent')) ?></p>
</div>
</div>
</script>

View File

@ -1,6 +1,6 @@
<div class="layout-row min-size">
<div class="layout control-toolbar standalone-paddings">
<div class="layout-cell toolbar-item">
<div class="control-toolbar toolbar-padded">
<div class="toolbar-item toolbar-primary">
<div data-control="toolbar">
<div class="btn-group offset-right">
<button type="button" class="btn btn-primary oc-icon-upload" data-control="upload"
@ -22,10 +22,14 @@
</div>
</div>
</div>
<div class="layout-cell toolbar-item width-fix">
<div class="toolbar-item" data-calculate-width>
<div class="relative loading-indicator-container size-input-text">
<input placeholder="<?= e(trans('cms::lang.media.search')) ?>" type="text" name="search" value="<?= e($searchTerm) ?>"
class="form-control icon search growable"
<input
type="text"
name="search"
value="<?= e($searchTerm) ?>"
class="form-control icon search growable"
placeholder="<?= e(trans('cms::lang.media.search')) ?>"
data-control="search"
autocomplete="off"
data-load-indicator

View File

@ -1,32 +1,33 @@
<div class="layout-row min-size">
<div class="layout control-toolbar">
<div class="layout-cell width-fix">
<div class="toolbar-item">
<div class="btn-group">
<button type="button" class="btn btn-primary oc-icon-plus last"
data-control="create-template"
><?= e(trans('cms::lang.sidebar.add')) ?></button>
<button type="button" class="btn btn-primary empty oc-icon-trash-o hide"
id="<?= $this->getId('delete-button') ?>"
data-control="delete-template"
data-confirmation="<?= e(trans($this->deleteConfirmation)) ?>"
data-trigger-action="show"
data-trigger="<?= '#'.$this->getId('template-list') ?> input[type=checkbox]"
data-trigger-condition="checked"></button>
</div>
<div class="control-toolbar toolbar-padded">
<!-- Control Panel -->
<div class="toolbar-item" data-calculate-width>
<div class="btn-group">
<button type="button" class="btn btn-primary oc-icon-plus last"
data-control="create-template"
><?= e(trans('cms::lang.sidebar.add')) ?></button>
<button type="button" class="btn btn-primary empty oc-icon-trash-o hide"
id="<?= $this->getId('delete-button') ?>"
data-control="delete-template"
data-confirmation="<?= e(trans($this->deleteConfirmation)) ?>"
data-trigger-action="show"
data-trigger="<?= '#'.$this->getId('template-list') ?> input[type=checkbox]"
data-trigger-condition="checked"></button>
</div>
</div>
<div class="layout-cell">
<div class="relative toolbar-item loading-indicator-container size-input-text">
<input placeholder="<?= e(trans('cms::lang.sidebar.search')) ?>" type="text" name="search" value="<?= e($this->getSearchTerm()) ?>"
class="form-control icon search" autocomplete="off"
data-track-input
data-load-indicator
data-load-indicator-opaque
data-request-success="$('<?= '#'.$this->getId('delete-button') ?>').trigger('oc.triggerOn.update')"
data-request="<?= $this->getEventHandler('onSearch') ?>"
/>
</div>
<!-- Template Search -->
<div class="relative toolbar-item loading-indicator-container size-input-text">
<input placeholder="<?= e(trans('cms::lang.sidebar.search')) ?>" type="text" name="search" value="<?= e($this->getSearchTerm()) ?>"
class="form-control icon search" autocomplete="off"
data-track-input
data-load-indicator
data-load-indicator-opaque
data-request-success="$('<?= '#'.$this->getId('delete-button') ?>').trigger('oc.triggerOn.update')"
data-request="<?= $this->getEventHandler('onSearch') ?>"
/>
</div>
</div>
</div>

View File

@ -422,7 +422,8 @@ class ServiceProvider extends ModuleServiceProvider
'icon' => 'icon-exclamation-triangle',
'url' => Backend::url('system/eventlogs'),
'permissions' => ['system.access_logs'],
'order' => 900
'order' => 900,
'keywords' => 'error exception'
],
'request_logs' => [
'label' => 'system::lang.request_log.menu_label',
@ -431,7 +432,8 @@ class ServiceProvider extends ModuleServiceProvider
'icon' => 'icon-file-o',
'url' => Backend::url('system/requestlogs'),
'permissions' => ['system.access_logs'],
'order' => 910
'order' => 910,
'keywords' => '404 error'
]
]);
});

View File

@ -558,7 +558,7 @@ address{margin-bottom:20px;font-style:normal;line-height:1.42857143}
.oc-icon-github:before,.icon-github:before{content:"\f09b"}
.oc-icon-unlock:before,.icon-unlock:before{content:"\f09c"}
.oc-icon-credit-card:before,.icon-credit-card:before{content:"\f09d"}
.oc-icon-rss:before,.icon-rss:before{content:"\f09e"}
.oc-icon-feed:before,.icon-feed:before,.oc-icon-rss:before,.icon-rss:before{content:"\f09e"}
.oc-icon-hdd-o:before,.icon-hdd-o:before{content:"\f0a0"}
.oc-icon-bullhorn:before,.icon-bullhorn:before{content:"\f0a1"}
.oc-icon-bell:before,.icon-bell:before{content:"\f0f3"}
@ -834,14 +834,14 @@ address{margin-bottom:20px;font-style:normal;line-height:1.42857143}
.oc-icon-ge:before,.icon-ge:before,.oc-icon-empire:before,.icon-empire:before{content:"\f1d1"}
.oc-icon-git-square:before,.icon-git-square:before{content:"\f1d2"}
.oc-icon-git:before,.icon-git:before{content:"\f1d3"}
.oc-icon-hacker-news:before,.icon-hacker-news:before{content:"\f1d4"}
.oc-icon-y-combinator-square:before,.icon-y-combinator-square:before,.oc-icon-yc-square:before,.icon-yc-square:before,.oc-icon-hacker-news:before,.icon-hacker-news:before{content:"\f1d4"}
.oc-icon-tencent-weibo:before,.icon-tencent-weibo:before{content:"\f1d5"}
.oc-icon-qq:before,.icon-qq:before{content:"\f1d6"}
.oc-icon-wechat:before,.icon-wechat:before,.oc-icon-weixin:before,.icon-weixin:before{content:"\f1d7"}
.oc-icon-send:before,.icon-send:before,.oc-icon-paper-plane:before,.icon-paper-plane:before{content:"\f1d8"}
.oc-icon-send-o:before,.icon-send-o:before,.oc-icon-paper-plane-o:before,.icon-paper-plane-o:before{content:"\f1d9"}
.oc-icon-history:before,.icon-history:before{content:"\f1da"}
.oc-icon-genderless:before,.icon-genderless:before,.oc-icon-circle-thin:before,.icon-circle-thin:before{content:"\f1db"}
.oc-icon-circle-thin:before,.icon-circle-thin:before{content:"\f1db"}
.oc-icon-header:before,.icon-header:before{content:"\f1dc"}
.oc-icon-paragraph:before,.icon-paragraph:before{content:"\f1dd"}
.oc-icon-sliders:before,.icon-sliders:before{content:"\f1de"}
@ -908,7 +908,7 @@ address{margin-bottom:20px;font-style:normal;line-height:1.42857143}
.oc-icon-venus:before,.icon-venus:before{content:"\f221"}
.oc-icon-mars:before,.icon-mars:before{content:"\f222"}
.oc-icon-mercury:before,.icon-mercury:before{content:"\f223"}
.oc-icon-transgender:before,.icon-transgender:before{content:"\f224"}
.oc-icon-intersex:before,.icon-intersex:before,.oc-icon-transgender:before,.icon-transgender:before{content:"\f224"}
.oc-icon-transgender-alt:before,.icon-transgender-alt:before{content:"\f225"}
.oc-icon-venus-double:before,.icon-venus-double:before{content:"\f226"}
.oc-icon-mars-double:before,.icon-mars-double:before{content:"\f227"}
@ -917,6 +917,7 @@ address{margin-bottom:20px;font-style:normal;line-height:1.42857143}
.oc-icon-mars-stroke-v:before,.icon-mars-stroke-v:before{content:"\f22a"}
.oc-icon-mars-stroke-h:before,.icon-mars-stroke-h:before{content:"\f22b"}
.oc-icon-neuter:before,.icon-neuter:before{content:"\f22c"}
.oc-icon-genderless:before,.icon-genderless:before{content:"\f22d"}
.oc-icon-facebook-official:before,.icon-facebook-official:before{content:"\f230"}
.oc-icon-pinterest-p:before,.icon-pinterest-p:before{content:"\f231"}
.oc-icon-whatsapp:before,.icon-whatsapp:before{content:"\f232"}
@ -928,10 +929,75 @@ address{margin-bottom:20px;font-style:normal;line-height:1.42857143}
.oc-icon-train:before,.icon-train:before{content:"\f238"}
.oc-icon-subway:before,.icon-subway:before{content:"\f239"}
.oc-icon-medium:before,.icon-medium:before{content:"\f23a"}
.oc-icon-yc:before,.icon-yc:before,.oc-icon-y-combinator:before,.icon-y-combinator:before{content:"\f23b"}
.oc-icon-optin-monster:before,.icon-optin-monster:before{content:"\f23c"}
.oc-icon-opencart:before,.icon-opencart:before{content:"\f23d"}
.oc-icon-expeditedssl:before,.icon-expeditedssl:before{content:"\f23e"}
.oc-icon-battery-4:before,.icon-battery-4:before,.oc-icon-battery-full:before,.icon-battery-full:before{content:"\f240"}
.oc-icon-battery-3:before,.icon-battery-3:before,.oc-icon-battery-three-quarters:before,.icon-battery-three-quarters:before{content:"\f241"}
.oc-icon-battery-2:before,.icon-battery-2:before,.oc-icon-battery-half:before,.icon-battery-half:before{content:"\f242"}
.oc-icon-battery-1:before,.icon-battery-1:before,.oc-icon-battery-quarter:before,.icon-battery-quarter:before{content:"\f243"}
.oc-icon-battery-0:before,.icon-battery-0:before,.oc-icon-battery-empty:before,.icon-battery-empty:before{content:"\f244"}
.oc-icon-mouse-pointer:before,.icon-mouse-pointer:before{content:"\f245"}
.oc-icon-i-cursor:before,.icon-i-cursor:before{content:"\f246"}
.oc-icon-object-group:before,.icon-object-group:before{content:"\f247"}
.oc-icon-object-ungroup:before,.icon-object-ungroup:before{content:"\f248"}
.oc-icon-sticky-note:before,.icon-sticky-note:before{content:"\f249"}
.oc-icon-sticky-note-o:before,.icon-sticky-note-o:before{content:"\f24a"}
.oc-icon-cc-jcb:before,.icon-cc-jcb:before{content:"\f24b"}
.oc-icon-cc-diners-club:before,.icon-cc-diners-club:before{content:"\f24c"}
.oc-icon-clone:before,.icon-clone:before{content:"\f24d"}
.oc-icon-balance-scale:before,.icon-balance-scale:before{content:"\f24e"}
.oc-icon-hourglass-o:before,.icon-hourglass-o:before{content:"\f250"}
.oc-icon-hourglass-1:before,.icon-hourglass-1:before,.oc-icon-hourglass-start:before,.icon-hourglass-start:before{content:"\f251"}
.oc-icon-hourglass-2:before,.icon-hourglass-2:before,.oc-icon-hourglass-half:before,.icon-hourglass-half:before{content:"\f252"}
.oc-icon-hourglass-3:before,.icon-hourglass-3:before,.oc-icon-hourglass-end:before,.icon-hourglass-end:before{content:"\f253"}
.oc-icon-hourglass:before,.icon-hourglass:before{content:"\f254"}
.oc-icon-hand-grab-o:before,.icon-hand-grab-o:before,.oc-icon-hand-rock-o:before,.icon-hand-rock-o:before{content:"\f255"}
.oc-icon-hand-stop-o:before,.icon-hand-stop-o:before,.oc-icon-hand-paper-o:before,.icon-hand-paper-o:before{content:"\f256"}
.oc-icon-hand-scissors-o:before,.icon-hand-scissors-o:before{content:"\f257"}
.oc-icon-hand-lizard-o:before,.icon-hand-lizard-o:before{content:"\f258"}
.oc-icon-hand-spock-o:before,.icon-hand-spock-o:before{content:"\f259"}
.oc-icon-hand-pointer-o:before,.icon-hand-pointer-o:before{content:"\f25a"}
.oc-icon-hand-peace-o:before,.icon-hand-peace-o:before{content:"\f25b"}
.oc-icon-trademark:before,.icon-trademark:before{content:"\f25c"}
.oc-icon-registered:before,.icon-registered:before{content:"\f25d"}
.oc-icon-creative-commons:before,.icon-creative-commons:before{content:"\f25e"}
.oc-icon-gg:before,.icon-gg:before{content:"\f260"}
.oc-icon-gg-circle:before,.icon-gg-circle:before{content:"\f261"}
.oc-icon-tripadvisor:before,.icon-tripadvisor:before{content:"\f262"}
.oc-icon-odnoklassniki:before,.icon-odnoklassniki:before{content:"\f263"}
.oc-icon-odnoklassniki-square:before,.icon-odnoklassniki-square:before{content:"\f264"}
.oc-icon-get-pocket:before,.icon-get-pocket:before{content:"\f265"}
.oc-icon-wikipedia-w:before,.icon-wikipedia-w:before{content:"\f266"}
.oc-icon-safari:before,.icon-safari:before{content:"\f267"}
.oc-icon-chrome:before,.icon-chrome:before{content:"\f268"}
.oc-icon-firefox:before,.icon-firefox:before{content:"\f269"}
.oc-icon-opera:before,.icon-opera:before{content:"\f26a"}
.oc-icon-internet-explorer:before,.icon-internet-explorer:before{content:"\f26b"}
.oc-icon-tv:before,.icon-tv:before,.oc-icon-television:before,.icon-television:before{content:"\f26c"}
.oc-icon-contao:before,.icon-contao:before{content:"\f26d"}
.oc-icon-500px:before,.icon-500px:before{content:"\f26e"}
.oc-icon-amazon:before,.icon-amazon:before{content:"\f270"}
.oc-icon-calendar-plus-o:before,.icon-calendar-plus-o:before{content:"\f271"}
.oc-icon-calendar-minus-o:before,.icon-calendar-minus-o:before{content:"\f272"}
.oc-icon-calendar-times-o:before,.icon-calendar-times-o:before{content:"\f273"}
.oc-icon-calendar-check-o:before,.icon-calendar-check-o:before{content:"\f274"}
.oc-icon-industry:before,.icon-industry:before{content:"\f275"}
.oc-icon-map-pin:before,.icon-map-pin:before{content:"\f276"}
.oc-icon-map-signs:before,.icon-map-signs:before{content:"\f277"}
.oc-icon-map-o:before,.icon-map-o:before{content:"\f278"}
.oc-icon-map:before,.icon-map:before{content:"\f279"}
.oc-icon-commenting:before,.icon-commenting:before{content:"\f27a"}
.oc-icon-commenting-o:before,.icon-commenting-o:before{content:"\f27b"}
.oc-icon-houzz:before,.icon-houzz:before{content:"\f27c"}
.oc-icon-vimeo:before,.icon-vimeo:before{content:"\f27d"}
.oc-icon-black-tie:before,.icon-black-tie:before{content:"\f27e"}
.oc-icon-fonticons:before,.icon-fonticons:before{content:"\f280"}
.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000000;text-shadow:0 1px 0 #ffffff;opacity:0.2;filter:alpha(opacity=20)}
.close:hover,.close:focus{color:#000000;text-decoration:none;cursor:pointer;opacity:0.5;filter:alpha(opacity=50)}
button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}
@font-face{font-family:'FontAwesome';src:url('../ui/font/fontawesome-webfont.eot?v=1.0.0');src:url('../ui/font/fontawesome-webfont.eot?#iefix&v=1.0.0') format('embedded-opentype'),url('../ui/font/fontawesome-webfont.woff?v=1.0.0') format('woff'),url('../ui/font/fontawesome-webfont.ttf?v=1.0.0') format('truetype'),url('../ui/font/fontawesome-webfont.svg#fontawesomeregular?v=1.0.0') format('svg');font-weight:normal;font-style:normal}
@font-face{font-family:'FontAwesome';src:url('../ui/font/fontawesome-webfont.eot?v=1.0.1');src:url('../ui/font/fontawesome-webfont.eot?#iefix&v=1.0.1') format('embedded-opentype'),url('../ui/font/fontawesome-webfont.woff?v=1.0.1') format('woff'),url('../ui/font/fontawesome-webfont.ttf?v=1.0.1') format('truetype'),url('../ui/font/fontawesome-webfont.svg#fontawesomeregular?v=1.0.1') format('svg');font-weight:normal;font-style:normal}
[class^="icon-"],[class*=" icon-"]{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;display:inline;width:auto;height:auto;line-height:normal;vertical-align:baseline;background-image:none;background-position:0% 0%;background-repeat:repeat;margin-top:0}
[class^="icon-"]:before,[class*=" icon-"]:before{text-decoration:inherit;display:inline-block;speak:none}
[class^="icon-"].pull-left,[class*=" icon-"].pull-left{margin-right:.3em}

View File

@ -27,6 +27,7 @@
}
.plugin-details-content pre {
display: block;
border: none;
padding: 10px 10px 10px 20px;
font-size: 13px;
word-break: break-all;

View File

@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['de'] = $.extend(
$.oc.langMessages['de'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}}
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}}
);

View File

@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['el'] = $.extend(
$.oc.langMessages['el'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}}
{"markdowneditor":{"formatting":"\u039c\u03bf\u03c1\u03c6\u03bf\u03c0\u03bf\u03af\u03b7\u03c3\u03b7","quote":"\u03a0\u03b1\u03c1\u03ac\u03b8\u03b5\u03c3\u03b7","code":"\u039a\u03ce\u03b4\u03b9\u03ba\u03b1\u03c2","header1":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 1","header2":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 2","header3":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 3","header4":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 4","header5":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 5","header6":"\u039a\u03b5\u03c6\u03b1\u03bb\u03af\u03b4\u03b1 6","bold":"\u0388\u03bd\u03c4\u03bf\u03bd\u03b1","italic":"\u0399\u03c4\u03b1\u03bb\u03b9\u03ba\u03ac","unorderedlist":"\u039c\u03b7 \u03c4\u03b1\u03be\u03b9\u03bd\u03bf\u03bc\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1","orderedlist":"\u03a4\u03b1\u03be\u03b9\u03bd\u03bf\u03bc\u03b7\u03bc\u03ad\u03bd\u03b7 \u03bb\u03af\u03c3\u03c4\u03b1","video":"\u0392\u03af\u03bd\u03c4\u03b5\u03bf","image":"\u0395\u03b9\u03ba\u03cc\u03bd\u03b1","link":"\u03a3\u03cd\u03bd\u03b4\u03b5\u03c3\u03bc\u03bf\u03c2","horizontalrule":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u039f\u03c1\u03b9\u03b6\u03cc\u03bd\u03c4\u03b9\u03b1\u03c2 \u0393\u03c1\u03b1\u03bc\u03bc\u03ae\u03c2","fullscreen":"\u03a0\u03bb\u03ae\u03c1\u03b7\u03c2 \u03bf\u03b8\u03cc\u03bd\u03b7","preview":"\u03a0\u03c1\u03bf\u03b5\u03c0\u03b9\u03c3\u03ba\u03cc\u03c0\u03b7\u03c3\u03b7"},"mediamanager":{"insert_link":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u03a3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_image":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0395\u03b9\u03ba\u03cc\u03bd\u03b1\u03c2 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_video":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0392\u03af\u03bd\u03c4\u03b5\u03bf \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","insert_audio":"\u0395\u03b9\u03c3\u03b1\u03b3\u03c9\u03b3\u03ae \u0389\u03c7\u03bf\u03c5 \u03b1\u03c0\u03cc \u03c4\u03b1 \u039c\u03ad\u03c3\u03b1","invalid_file_empty_insert":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03b1\u03c1\u03c7\u03b5\u03af\u03bf \u03b3\u03b9\u03b1 \u03bd\u03b1 \u03b5\u03b9\u03c3\u03ac\u03b3\u03b5\u03c4\u03b5 \u03c3\u03c5\u03bd\u03b4\u03ad\u03c3\u03bc\u03bf\u03c5\u03c2 \u03c3\u03b5 \u03b1\u03c5\u03c4\u03cc.","invalid_file_single_insert":"\u03a0\u03b1\u03c1\u03b1\u03ba\u03b1\u03bb\u03bf\u03cd\u03bc\u03b5 \u03b5\u03c0\u03b9\u03bb\u03ad\u03be\u03c4\u03b5 \u03ad\u03bd\u03b1 \u03bc\u03bf\u03bd\u03b1\u03b4\u03b9\u03ba\u03cc \u03b1\u03c1\u03c7\u03b5\u03af\u03bf.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}}
);

View File

@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['en'] = $.extend(
$.oc.langMessages['en'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}}
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}}
);

View File

@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['es-ar'] = $.extend(
$.oc.langMessages['es-ar'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}}
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}}
);

View File

@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['es'] = $.extend(
$.oc.langMessages['es'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}}
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}}
);

View File

@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['fa'] = $.extend(
$.oc.langMessages['fa'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}}
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}}
);

View File

@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['fr'] = $.extend(
$.oc.langMessages['fr'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}}
{"markdowneditor":{"formatting":"Formatage","quote":"Citation","code":"Code","header1":"Ent\u00eate 1","header2":"Ent\u00eate 2","header3":"Ent\u00eate 3","header4":"Ent\u00eate 4","header5":"Ent\u00eate 5","header6":"Ent\u00eate 6","bold":"Gras","italic":"Italique","unorderedlist":"Liste non ordonn\u00e9e","orderedlist":"Liste ordonn\u00e9e","video":"Vid\u00e9o","image":"Image","link":"Lien","horizontalrule":"Ins\u00e9rer la r\u00e8gle horizontalement","fullscreen":"Plein \u00e9cran","preview":"Aper\u00e7u"},"mediamanager":{"insert_link":"Ins\u00e9rer un lien vers un fichier de la m\u00e9diath\u00e8que","insert_image":"Ins\u00e9rer une image de la m\u00e9diath\u00e8que","insert_video":"Ins\u00e9rer une vid\u00e9o de la m\u00e9diath\u00e8que","insert_audio":"Ins\u00e9rer un document audio de la m\u00e9diath\u00e8que","invalid_file_empty_insert":"Veuillez s\u00e9lectionner un fichier \u00e0 lier.","invalid_file_single_insert":"Veuillez s\u00e9lectionner un seul fichier.","invalid_image_empty_insert":"Veuillez s\u00e9lectionner au moins une image \u00e0 ins\u00e9rer.","invalid_video_empty_insert":"Veuillez s\u00e9lectionner une vid\u00e9o \u00e0 ins\u00e9rer.","invalid_audio_empty_insert":"Veuillez s\u00e9lectionner un document audio \u00e0 ins\u00e9rer.","invalid_image_invalid_insert":"Le fichier n\u2019est pas une image.","invalid_video_invalid_insert":"Le fichier n\u2019est pas une vid\u00e9o.","invalid_audio_invalid_insert":"Le fichier n\u2019est pas un document audio."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Annuler"}}
);

View File

@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['hu'] = $.extend(
$.oc.langMessages['hu'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}}
{"markdowneditor":{"formatting":"Forr\u00e1sk\u00f3d","quote":"Id\u00e9zet","code":"K\u00f3d","header1":"F\u0151c\u00edm 1","header2":"F\u0151c\u00edm 2","header3":"F\u0151c\u00edm 3","header4":"F\u0151c\u00edm 4","header5":"F\u0151c\u00edm 5","header6":"F\u0151c\u00edm 6","bold":"F\u00e9lk\u00f6v\u00e9r","italic":"D\u00f6lt","unorderedlist":"Rendezett lista","orderedlist":"Sz\u00e1mozott lista","video":"Vide\u00f3","image":"K\u00e9p","link":"Hivatkoz\u00e1s","horizontalrule":"Vonal besz\u00far\u00e1sa","fullscreen":"Teljes k\u00e9perny\u0151","preview":"El\u0151n\u00e9zet"},"mediamanager":{"insert_link":"Hivatkoz\u00e1s besz\u00far\u00e1sa","insert_image":"K\u00e9p besz\u00far\u00e1sa","insert_video":"Vide\u00f3 besz\u00far\u00e1sa","insert_audio":"Audi\u00f3 besz\u00far\u00e1sa","invalid_file_empty_insert":"Hivatkoz\u00e1s k\u00e9sz\u00edt\u00e9s\u00e9hez jel\u00f6lj\u00f6n ki egy sz\u00f6vegr\u00e9szt.","invalid_file_single_insert":"K\u00e9rj\u00fck jel\u00f6lj\u00f6n ki egy f\u00e1jlt.","invalid_image_empty_insert":"V\u00e1lasszon ki legal\u00e1bb egy k\u00e9pet a besz\u00far\u00e1shoz.","invalid_video_empty_insert":"V\u00e1lasszon ki legal\u00e1bb egy vide\u00f3t a besz\u00far\u00e1shoz.","invalid_audio_empty_insert":"V\u00e1lasszon ki legal\u00e1bb egy audi\u00f3t a besz\u00far\u00e1shoz."},"alert":{"confirm_button_text":"OK","cancel_button_text":"M\u00e9gsem"}}
);

View File

@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['id'] = $.extend(
$.oc.langMessages['id'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}}
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}}
);

View File

@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['it'] = $.extend(
$.oc.langMessages['it'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}}
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}}
);

View File

@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['ja'] = $.extend(
$.oc.langMessages['ja'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}}
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}}
);

View File

@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['lv'] = $.extend(
$.oc.langMessages['lv'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}}
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}}
);

View File

@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['nb-no'] = $.extend(
$.oc.langMessages['nb-no'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}}
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}}
);

View File

@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['nl'] = $.extend(
$.oc.langMessages['nl'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}}
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}}
);

View File

@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['pl'] = $.extend(
$.oc.langMessages['pl'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}}
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}}
);

View File

@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['pt-br'] = $.extend(
$.oc.langMessages['pt-br'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}}
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}}
);

View File

@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['ro'] = $.extend(
$.oc.langMessages['ro'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}}
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}}
);

View File

@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['ru'] = $.extend(
$.oc.langMessages['ru'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}}
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}}
);

View File

@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['se'] = $.extend(
$.oc.langMessages['se'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}}
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}}
);

View File

@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['sk'] = $.extend(
$.oc.langMessages['sk'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}}
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}}
);

View File

@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['tr'] = $.extend(
$.oc.langMessages['tr'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}}
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}}
);

View File

@ -5,5 +5,5 @@ if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['zh-cn'] = $.extend(
$.oc.langMessages['zh-cn'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file."}}
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}}
);

View File

@ -0,0 +1,9 @@
/*
* This file has been compiled from: /modules/system/lang/zh-tw/client.php
*/
if ($.oc === undefined) $.oc = {}
if ($.oc.langMessages === undefined) $.oc.langMessages = {}
$.oc.langMessages['zh-tw'] = $.extend(
$.oc.langMessages['zh-tw'] || {},
{"markdowneditor":{"formatting":"Formatting","quote":"Quote","code":"Code","header1":"Header 1","header2":"Header 2","header3":"Header 3","header4":"Header 4","header5":"Header 5","header6":"Header 6","bold":"Bold","italic":"Italic","unorderedlist":"Unordered List","orderedlist":"Ordered List","video":"Video","image":"Image","link":"Link","horizontalrule":"Insert Horizontal Rule","fullscreen":"Full screen","preview":"Preview"},"mediamanager":{"insert_link":"Insert Media Link","insert_image":"Insert Media Image","insert_video":"Insert Media Video","insert_audio":"Insert Media Audio","invalid_file_empty_insert":"Please select file to insert a links to.","invalid_file_single_insert":"Please select a single file.","invalid_image_empty_insert":"Please select image(s) to insert.","invalid_video_empty_insert":"Please select a video file to insert.","invalid_audio_empty_insert":"Please select an audio file to insert."},"alert":{"confirm_button_text":"OK","cancel_button_text":"Cancel"}}
);

View File

@ -0,0 +1,25 @@
/*
* Details page
*/
+function ($) { "use strict";
var UpdateDetails = function () {
this.init()
}
UpdateDetails.prototype.init = function() {
$(document).ready(function() {
$('.plugin-details-content pre').addClass('prettyprint')
prettyPrint()
})
}
if ($.oc === undefined)
$.oc = {}
$.oc.updateDetails = new UpdateDetails;
}(window.jQuery);

View File

@ -19,7 +19,7 @@
this.dataSet = {}
$(document).ready(function(){
$(document).ready(function() {
self.bindSearch('#pluginSearchInput')
self.bindSearch('#themeSearchInput')

View File

@ -23,6 +23,7 @@
pre {
display: block;
border: none;
padding: 10px 10px 10px (@padding-standard + @padding-container);
font-size: 13px;
word-break: break-all;

View File

@ -5,22 +5,22 @@
Allows a user to select from a small set of binary options.
<div class="checkbox custom-checkbox">
<input name="checkbox" value="1" type="checkbox" id="checkbox1">
<input name="checkbox" value="1" type="checkbox" id="checkbox1" />
<label for="checkbox1">Checkbox</label>
</div>
### Radio
<div class="radio custom-radio">
<input name="radio" value="1" type="radio" id="radio_1">
<input name="radio" value="1" type="radio" id="radio_1" />
<label for="radio_1">Paris</label>
</div>
<div class="radio custom-radio">
<input checked="checked" name="radio" value="2" type="radio" id="radio_2">
<input checked="checked" name="radio" value="2" type="radio" id="radio_2" />
<label for="radio_2">Dubai</label>
</div>
<div class="radio custom-radio">
<input name="radio" value="3" type="radio" id="radio_3">
<input name="radio" value="3" type="radio" id="radio_3" />
<label for="radio_3">New Zealand</label>
</div>

View File

@ -0,0 +1,995 @@
Provides icons of various descriptions
## Usage
### Inline icon
Place Font Autumn icons just about anywhere with the `<i>` tag.
<div style="font-size: 24px;">
<i class="icon-camera-retro"></i> icon-camera-retro
</div>
> **Note**: Icon classes are echoed via CSS :before.
### With buttons
<a class="btn btn-default" href="#">
<i class="icon-refresh"></i> Refresh
</a>
<a class="btn btn-success" href="#">
<i class="icon-shopping-cart icon-large"></i> Checkout
</a>
<a class="btn btn-primary" href="#">
<i class="icon-comment"></i> Comment
</a>
<a class="btn btn-danger" href="#">
<i class="icon-trash icon-large"></i> Delete
</a>
<a class="btn btn-default" href="#">
<i class="icon-cog"></i> Settings
</a>
<a class="btn btn-info" href="#">
<i class="icon-info"></i> More Info
</a>
## Available icons
### Web Application Icons
<div class="category-icons">
<ul>
<li><i class="icon-adjust"></i> icon-adjust</li>
<li><i class="icon-anchor"></i> icon-anchor</li>
<li><i class="icon-archive"></i> icon-archive</li>
<li><i class="icon-area-chart"></i> icon-area-chart</li>
<li><i class="icon-arrows"></i> icon-arrows</li>
<li><i class="icon-arrows-h"></i> icon-arrows-h</li>
<li><i class="icon-arrows-v"></i> icon-arrows-v</li>
<li><i class="icon-asterisk"></i> icon-asterisk</li>
<li><i class="icon-at"></i> icon-at</li>
<li><i class="icon-balance-scale"></i> icon-balance-scale</li>
<li><i class="icon-ban"></i> icon-ban</li>
<li><i class="icon-bar-chart"></i> icon-bar-chart</li>
<li><i class="icon-barcode"></i> icon-barcode</li>
<li><i class="icon-bars"></i> icon-bars</li>
<li><i class="icon-battery-empty"></i> icon-battery-empty</li>
<li><i class="icon-battery-full"></i> icon-battery-full</li>
<li><i class="icon-battery-half"></i> icon-battery-half</li>
<li><i class="icon-battery-quarter"></i> icon-battery-quarter</li>
<li><i class="icon-battery-three-quarters"></i> icon-battery-three-quarters</li>
<li><i class="icon-bed"></i> icon-bed</li>
<li><i class="icon-beer"></i> icon-beer</li>
<li><i class="icon-bell"></i> icon-bell</li>
<li><i class="icon-bell-o"></i> icon-bell-o</li>
<li><i class="icon-bell-slash"></i> icon-bell-slash</li>
<li><i class="icon-bell-slash-o"></i> icon-bell-slash-o</li>
<li><i class="icon-bicycle"></i> icon-bicycle</li>
<li><i class="icon-binoculars"></i> icon-binoculars</li>
<li><i class="icon-birthday-cake"></i> icon-birthday-cake</li>
<li><i class="icon-bolt"></i> icon-bolt</li>
<li><i class="icon-bomb"></i> icon-bomb</li>
<li><i class="icon-book"></i> icon-book</li>
<li><i class="icon-bookmark"></i> icon-bookmark</li>
<li><i class="icon-bookmark-o"></i> icon-bookmark-o</li>
<li><i class="icon-briefcase"></i> icon-briefcase</li>
<li><i class="icon-bug"></i> icon-bug</li>
<li><i class="icon-building"></i> icon-building</li>
<li><i class="icon-building-o"></i> icon-building-o</li>
<li><i class="icon-bullhorn"></i> icon-bullhorn</li>
<li><i class="icon-bullseye"></i> icon-bullseye</li>
<li><i class="icon-bus"></i> icon-bus</li>
<li><i class="icon-calculator"></i> icon-calculator</li>
<li><i class="icon-calendar"></i> icon-calendar</li>
<li><i class="icon-calendar-check-o"></i> icon-calendar-check-o</li>
<li><i class="icon-calendar-minus-o"></i> icon-calendar-minus-o</li>
<li><i class="icon-calendar-o"></i> icon-calendar-o</li>
<li><i class="icon-calendar-plus-o"></i> icon-calendar-plus-o</li>
<li><i class="icon-calendar-times-o"></i> icon-calendar-times-o</li>
<li><i class="icon-camera"></i> icon-camera</li>
<li><i class="icon-camera-retro"></i> icon-camera-retro</li>
<li><i class="icon-car"></i> icon-car</li>
<li><i class="icon-caret-square-o-down"></i> icon-caret-square-o-down</li>
<li><i class="icon-caret-square-o-left"></i> icon-caret-square-o-left</li>
<li><i class="icon-caret-square-o-right"></i> icon-caret-square-o-right</li>
<li><i class="icon-caret-square-o-up"></i> icon-caret-square-o-up</li>
<li><i class="icon-cart-arrow-down"></i> icon-cart-arrow-down</li>
<li><i class="icon-cart-plus"></i> icon-cart-plus</li>
<li><i class="icon-cc"></i> icon-cc</li>
<li><i class="icon-certificate"></i> icon-certificate</li>
<li><i class="icon-check"></i> icon-check</li>
<li><i class="icon-check-circle"></i> icon-check-circle</li>
<li><i class="icon-check-circle-o"></i> icon-check-circle-o</li>
<li><i class="icon-check-square"></i> icon-check-square</li>
<li><i class="icon-check-square-o"></i> icon-check-square-o</li>
<li><i class="icon-child"></i> icon-child</li>
<li><i class="icon-circle"></i> icon-circle</li>
<li><i class="icon-circle-o"></i> icon-circle-o</li>
<li><i class="icon-circle-o-notch"></i> icon-circle-o-notch</li>
<li><i class="icon-circle-thin"></i> icon-circle-thin</li>
<li><i class="icon-clock-o"></i> icon-clock-o</li>
<li><i class="icon-clone"></i> icon-clone</li>
<li><i class="icon-cloud"></i> icon-cloud</li>
<li><i class="icon-cloud-download"></i> icon-cloud-download</li>
<li><i class="icon-cloud-upload"></i> icon-cloud-upload</li>
<li><i class="icon-code"></i> icon-code</li>
<li><i class="icon-code-fork"></i> icon-code-fork</li>
<li><i class="icon-coffee"></i> icon-coffee</li>
<li><i class="icon-cog"></i> icon-cog</li>
<li><i class="icon-cogs"></i> icon-cogs</li>
<li><i class="icon-comment"></i> icon-comment</li>
<li><i class="icon-comment-o"></i> icon-comment-o</li>
<li><i class="icon-commenting"></i> icon-commenting</li>
<li><i class="icon-commenting-o"></i> icon-commenting-o</li>
</ul>
<ul>
<li><i class="icon-comments"></i> icon-comments</li>
<li><i class="icon-comments-o"></i> icon-comments-o</li>
<li><i class="icon-compass"></i> icon-compass</li>
<li><i class="icon-copyright"></i> icon-copyright</li>
<li><i class="icon-creative-commons"></i> icon-creative-commons</li>
<li><i class="icon-credit-card"></i> icon-credit-card</li>
<li><i class="icon-crop"></i> icon-crop</li>
<li><i class="icon-crosshairs"></i> icon-crosshairs</li>
<li><i class="icon-cube"></i> icon-cube</li>
<li><i class="icon-cubes"></i> icon-cubes</li>
<li><i class="icon-cutlery"></i> icon-cutlery</li>
<li><i class="icon-database"></i> icon-database</li>
<li><i class="icon-desktop"></i> icon-desktop</li>
<li><i class="icon-diamond"></i> icon-diamond</li>
<li><i class="icon-dot-circle-o"></i> icon-dot-circle-o</li>
<li><i class="icon-download"></i> icon-download</li>
<li><i class="icon-ellipsis-h"></i> icon-ellipsis-h</li>
<li><i class="icon-ellipsis-v"></i> icon-ellipsis-v</li>
<li><i class="icon-envelope"></i> icon-envelope</li>
<li><i class="icon-envelope-o"></i> icon-envelope-o</li>
<li><i class="icon-envelope-square"></i> icon-envelope-square</li>
<li><i class="icon-eraser"></i> icon-eraser</li>
<li><i class="icon-exchange"></i> icon-exchange</li>
<li><i class="icon-exclamation"></i> icon-exclamation</li>
<li><i class="icon-exclamation-circle"></i> icon-exclamation-circle</li>
<li><i class="icon-exclamation-triangle"></i> icon-exclamation-triangle</li>
<li><i class="icon-external-link"></i> icon-external-link</li>
<li><i class="icon-external-link-square"></i> icon-external-link-square</li>
<li><i class="icon-eye"></i> icon-eye</li>
<li><i class="icon-eye-slash"></i> icon-eye-slash</li>
<li><i class="icon-eyedropper"></i> icon-eyedropper</li>
<li><i class="icon-fax"></i> icon-fax</li>
<li><i class="icon-female"></i> icon-female</li>
<li><i class="icon-fighter-jet"></i> icon-fighter-jet</li>
<li><i class="icon-file-archive-o"></i> icon-file-archive-o</li>
<li><i class="icon-file-audio-o"></i> icon-file-audio-o</li>
<li><i class="icon-file-code-o"></i> icon-file-code-o</li>
<li><i class="icon-file-excel-o"></i> icon-file-excel-o</li>
<li><i class="icon-file-image-o"></i> icon-file-image-o</li>
<li><i class="icon-file-pdf-o"></i> icon-file-pdf-o</li>
<li><i class="icon-file-powerpoint-o"></i> icon-file-powerpoint-o</li>
<li><i class="icon-file-video-o"></i> icon-file-video-o</li>
<li><i class="icon-file-word-o"></i> icon-file-word-o</li>
<li><i class="icon-film"></i> icon-film</li>
<li><i class="icon-filter"></i> icon-filter</li>
<li><i class="icon-fire"></i> icon-fire</li>
<li><i class="icon-fire-extinguisher"></i> icon-fire-extinguisher</li>
<li><i class="icon-flag"></i> icon-flag</li>
<li><i class="icon-flag-checkered"></i> icon-flag-checkered</li>
<li><i class="icon-flag-o"></i> icon-flag-o</li>
<li><i class="icon-flask"></i> icon-flask</li>
<li><i class="icon-folder"></i> icon-folder</li>
<li><i class="icon-folder-o"></i> icon-folder-o</li>
<li><i class="icon-folder-open"></i> icon-folder-open</li>
<li><i class="icon-folder-open-o"></i> icon-folder-open-o</li>
<li><i class="icon-frown-o"></i> icon-frown-o</li>
<li><i class="icon-futbol-o"></i> icon-futbol-o</li>
<li><i class="icon-gamepad"></i> icon-gamepad</li>
<li><i class="icon-gavel"></i> icon-gavel</li>
<li><i class="icon-gift"></i> icon-gift</li>
<li><i class="icon-glass"></i> icon-glass</li>
<li><i class="icon-globe"></i> icon-globe</li>
<li><i class="icon-graduation-cap"></i> icon-graduation-cap</li>
<li><i class="icon-hand-lizard-o"></i> icon-hand-lizard-o</li>
<li><i class="icon-hand-paper-o"></i> icon-hand-paper-o</li>
<li><i class="icon-hand-peace-o"></i> icon-hand-peace-o</li>
<li><i class="icon-hand-pointer-o"></i> icon-hand-pointer-o</li>
<li><i class="icon-hand-rock-o"></i> icon-hand-rock-o</li>
<li><i class="icon-hand-scissors-o"></i> icon-hand-scissors-o</li>
<li><i class="icon-hand-spock-o"></i> icon-hand-spock-o</li>
<li><i class="icon-hdd-o"></i> icon-hdd-o</li>
<li><i class="icon-headphones"></i> icon-headphones</li>
<li><i class="icon-heart"></i> icon-heart</li>
<li><i class="icon-heart-o"></i> icon-heart-o</li>
<li><i class="icon-heartbeat"></i> icon-heartbeat</li>
<li><i class="icon-history"></i> icon-history</li>
<li><i class="icon-home"></i> icon-home</li>
<li><i class="icon-hourglass"></i> icon-hourglass</li>
<li><i class="icon-hourglass-end"></i> icon-hourglass-end</li>
<li><i class="icon-hourglass-half"></i> icon-hourglass-half</li>
<li><i class="icon-hourglass-o"></i> icon-hourglass-o</li>
<li><i class="icon-hourglass-start"></i> icon-hourglass-start</li>
</ul>
<ul>
<li><i class="icon-i-cursor"></i> icon-i-cursor</li>
<li><i class="icon-inbox"></i> icon-inbox</li>
<li><i class="icon-industry"></i> icon-industry</li>
<li><i class="icon-info"></i> icon-info</li>
<li><i class="icon-info-circle"></i> icon-info-circle</li>
<li><i class="icon-key"></i> icon-key</li>
<li><i class="icon-keyboard-o"></i> icon-keyboard-o</li>
<li><i class="icon-language"></i> icon-language</li>
<li><i class="icon-laptop"></i> icon-laptop</li>
<li><i class="icon-leaf"></i> icon-leaf</li>
<li><i class="icon-lemon-o"></i> icon-lemon-o</li>
<li><i class="icon-level-down"></i> icon-level-down</li>
<li><i class="icon-level-up"></i> icon-level-up</li>
<li><i class="icon-life-ring"></i> icon-life-ring</li>
<li><i class="icon-lightbulb-o"></i> icon-lightbulb-o</li>
<li><i class="icon-line-chart"></i> icon-line-chart</li>
<li><i class="icon-location-arrow"></i> icon-location-arrow</li>
<li><i class="icon-lock"></i> icon-lock</li>
<li><i class="icon-magic"></i> icon-magic</li>
<li><i class="icon-magnet"></i> icon-magnet</li>
<li><i class="icon-male"></i> icon-male</li>
<li><i class="icon-map"></i> icon-map</li>
<li><i class="icon-map-marker"></i> icon-map-marker</li>
<li><i class="icon-map-o"></i> icon-map-o</li>
<li><i class="icon-map-pin"></i> icon-map-pin</li>
<li><i class="icon-map-signs"></i> icon-map-signs</li>
<li><i class="icon-meh-o"></i> icon-meh-o</li>
<li><i class="icon-microphone"></i> icon-microphone</li>
<li><i class="icon-microphone-slash"></i> icon-microphone-slash</li>
<li><i class="icon-minus"></i> icon-minus</li>
<li><i class="icon-minus-circle"></i> icon-minus-circle</li>
<li><i class="icon-minus-square"></i> icon-minus-square</li>
<li><i class="icon-minus-square-o"></i> icon-minus-square-o</li>
<li><i class="icon-mobile"></i> icon-mobile</li>
<li><i class="icon-money"></i> icon-money</li>
<li><i class="icon-moon-o"></i> icon-moon-o</li>
<li><i class="icon-motorcycle"></i> icon-motorcycle</li>
<li><i class="icon-mouse-pointer"></i> icon-mouse-pointer</li>
<li><i class="icon-music"></i> icon-music</li>
<li><i class="icon-newspaper-o"></i> icon-newspaper-o</li>
<li><i class="icon-object-group"></i> icon-object-group</li>
<li><i class="icon-object-ungroup"></i> icon-object-ungroup</li>
<li><i class="icon-paint-brush"></i> icon-paint-brush</li>
<li><i class="icon-paper-plane"></i> icon-paper-plane</li>
<li><i class="icon-paper-plane-o"></i> icon-paper-plane-o</li>
<li><i class="icon-paw"></i> icon-paw</li>
<li><i class="icon-pencil"></i> icon-pencil</li>
<li><i class="icon-pencil-square"></i> icon-pencil-square</li>
<li><i class="icon-pencil-square-o"></i> icon-pencil-square-o</li>
<li><i class="icon-phone"></i> icon-phone</li>
<li><i class="icon-phone-square"></i> icon-phone-square</li>
<li><i class="icon-picture-o"></i> icon-picture-o</li>
<li><i class="icon-pie-chart"></i> icon-pie-chart</li>
<li><i class="icon-plane"></i> icon-plane</li>
<li><i class="icon-plug"></i> icon-plug</li>
<li><i class="icon-plus"></i> icon-plus</li>
<li><i class="icon-plus-circle"></i> icon-plus-circle</li>
<li><i class="icon-plus-square"></i> icon-plus-square</li>
<li><i class="icon-plus-square-o"></i> icon-plus-square-o</li>
<li><i class="icon-power-off"></i> icon-power-off</li>
<li><i class="icon-print"></i> icon-print</li>
<li><i class="icon-puzzle-piece"></i> icon-puzzle-piece</li>
<li><i class="icon-qrcode"></i> icon-qrcode</li>
<li><i class="icon-question"></i> icon-question</li>
<li><i class="icon-question-circle"></i> icon-question-circle</li>
<li><i class="icon-quote-left"></i> icon-quote-left</li>
<li><i class="icon-quote-right"></i> icon-quote-right</li>
<li><i class="icon-random"></i> icon-random</li>
<li><i class="icon-recycle"></i> icon-recycle</li>
<li><i class="icon-refresh"></i> icon-refresh</li>
<li><i class="icon-registered"></i> icon-registered</li>
<li><i class="icon-reply"></i> icon-reply</li>
<li><i class="icon-reply-all"></i> icon-reply-all</li>
<li><i class="icon-retweet"></i> icon-retweet</li>
<li><i class="icon-road"></i> icon-road</li>
<li><i class="icon-rocket"></i> icon-rocket</li>
<li><i class="icon-rss"></i> icon-rss</li>
<li><i class="icon-rss-square"></i> icon-rss-square</li>
<li><i class="icon-search"></i> icon-search</li>
<li><i class="icon-search-minus"></i> icon-search-minus</li>
<li><i class="icon-search-plus"></i> icon-search-plus</li>
<li><i class="icon-server"></i> icon-server</li>
</ul>
<ul>
<li><i class="icon-share"></i> icon-share</li>
<li><i class="icon-share-alt"></i> icon-share-alt</li>
<li><i class="icon-share-alt-square"></i> icon-share-alt-square</li>
<li><i class="icon-share-square"></i> icon-share-square</li>
<li><i class="icon-share-square-o"></i> icon-share-square-o</li>
<li><i class="icon-shield"></i> icon-shield</li>
<li><i class="icon-ship"></i> icon-ship</li>
<li><i class="icon-shopping-cart"></i> icon-shopping-cart</li>
<li><i class="icon-sign-in"></i> icon-sign-in</li>
<li><i class="icon-sign-out"></i> icon-sign-out</li>
<li><i class="icon-signal"></i> icon-signal</li>
<li><i class="icon-sitemap"></i> icon-sitemap</li>
<li><i class="icon-sliders"></i> icon-sliders</li>
<li><i class="icon-smile-o"></i> icon-smile-o</li>
<li><i class="icon-sort"></i> icon-sort</li>
<li><i class="icon-sort-alpha-asc"></i> icon-sort-alpha-asc</li>
<li><i class="icon-sort-alpha-desc"></i> icon-sort-alpha-desc</li>
<li><i class="icon-sort-amount-asc"></i> icon-sort-amount-asc</li>
<li><i class="icon-sort-amount-desc"></i> icon-sort-amount-desc</li>
<li><i class="icon-sort-asc"></i> icon-sort-asc</li>
<li><i class="icon-sort-desc"></i> icon-sort-desc</li>
<li><i class="icon-sort-numeric-asc"></i> icon-sort-numeric-asc</li>
<li><i class="icon-sort-numeric-desc"></i> icon-sort-numeric-desc</li>
<li><i class="icon-space-shuttle"></i> icon-space-shuttle</li>
<li><i class="icon-spinner"></i> icon-spinner</li>
<li><i class="icon-spoon"></i> icon-spoon</li>
<li><i class="icon-square"></i> icon-square</li>
<li><i class="icon-square-o"></i> icon-square-o</li>
<li><i class="icon-star"></i> icon-star</li>
<li><i class="icon-star-half"></i> icon-star-half</li>
<li><i class="icon-star-half-o"></i> icon-star-half-o</li>
<li><i class="icon-star-o"></i> icon-star-o</li>
<li><i class="icon-sticky-note"></i> icon-sticky-note</li>
<li><i class="icon-sticky-note-o"></i> icon-sticky-note-o</li>
<li><i class="icon-street-view"></i> icon-street-view</li>
<li><i class="icon-suitcase"></i> icon-suitcase</li>
<li><i class="icon-sun-o"></i> icon-sun-o</li>
<li><i class="icon-tablet"></i> icon-tablet</li>
<li><i class="icon-tachometer"></i> icon-tachometer</li>
<li><i class="icon-tag"></i> icon-tag</li>
<li><i class="icon-tags"></i> icon-tags</li>
<li><i class="icon-tasks"></i> icon-tasks</li>
<li><i class="icon-taxi"></i> icon-taxi</li>
<li><i class="icon-television"></i> icon-television</li>
<li><i class="icon-terminal"></i> icon-terminal</li>
<li><i class="icon-thumb-tack"></i> icon-thumb-tack</li>
<li><i class="icon-thumbs-down"></i> icon-thumbs-down</li>
<li><i class="icon-thumbs-o-down"></i> icon-thumbs-o-down</li>
<li><i class="icon-thumbs-o-up"></i> icon-thumbs-o-up</li>
<li><i class="icon-thumbs-up"></i> icon-thumbs-up</li>
<li><i class="icon-ticket"></i> icon-ticket</li>
<li><i class="icon-times"></i> icon-times</li>
<li><i class="icon-times-circle"></i> icon-times-circle</li>
<li><i class="icon-times-circle-o"></i> icon-times-circle-o</li>
<li><i class="icon-tint"></i> icon-tint</li>
<li><i class="icon-toggle-off"></i> icon-toggle-off</li>
<li><i class="icon-toggle-on"></i> icon-toggle-on</li>
<li><i class="icon-trademark"></i> icon-trademark</li>
<li><i class="icon-trash"></i> icon-trash</li>
<li><i class="icon-trash-o"></i> icon-trash-o</li>
<li><i class="icon-tree"></i> icon-tree</li>
<li><i class="icon-trophy"></i> icon-trophy</li>
<li><i class="icon-truck"></i> icon-truck</li>
<li><i class="icon-tty"></i> icon-tty</li>
<li><i class="icon-umbrella"></i> icon-umbrella</li>
<li><i class="icon-university"></i> icon-university</li>
<li><i class="icon-unlock"></i> icon-unlock</li>
<li><i class="icon-unlock-alt"></i> icon-unlock-alt</li>
<li><i class="icon-upload"></i> icon-upload</li>
<li><i class="icon-user"></i> icon-user</li>
<li><i class="icon-user-plus"></i> icon-user-plus</li>
<li><i class="icon-user-secret"></i> icon-user-secret</li>
<li><i class="icon-user-times"></i> icon-user-times</li>
<li><i class="icon-users"></i> icon-users</li>
<li><i class="icon-video-camera"></i> icon-video-camera</li>
<li><i class="icon-volume-down"></i> icon-volume-down</li>
<li><i class="icon-volume-off"></i> icon-volume-off</li>
<li><i class="icon-volume-up"></i> icon-volume-up</li>
<li><i class="icon-wheelchair"></i> icon-wheelchair</li>
<li><i class="icon-wifi"></i> icon-wifi</li>
<li><i class="icon-wrench"></i> icon-wrench</li>
</ul>
</div>
### Medical Icons
<div class="category-icons">
<ul>
<li><i class="icon-ambulance"></i> icon-ambulance</li>
<li><i class="icon-h-square"></i> icon-h-square</li>
<li><i class="icon-heart"></i> icon-heart</li>
</ul>
<ul>
<li><i class="icon-heart-o"></i> icon-heart-o</li>
<li><i class="icon-heartbeat"></i> icon-heartbeat</li>
<li><i class="icon-hospital-o"></i> icon-hospital-o</li>
</ul>
<ul>
<li><i class="icon-medkit"></i> icon-medkit</li>
<li><i class="icon-plus-square"></i> icon-plus-square</li>
<li><i class="icon-stethoscope"></i> icon-stethoscope</li>
</ul>
<ul>
<li><i class="icon-user-md"></i> icon-user-md</li>
<li><i class="icon-wheelchair"></i> icon-wheelchair</li>
</ul>
</div>
### Text Editor Icons
<div class="category-icons">
<ul>
<li><i class="icon-align-center"></i> icon-align-center</li>
<li><i class="icon-align-justify"></i> icon-align-justify</li>
<li><i class="icon-align-left"></i> icon-align-left</li>
<li><i class="icon-align-right"></i> icon-align-right</li>
<li><i class="icon-bold"></i> icon-bold</li>
<li><i class="icon-chain-broken"></i> icon-chain-broken</li>
<li><i class="icon-clipboard"></i> icon-clipboard</li>
<li><i class="icon-columns"></i> icon-columns</li>
<li><i class="icon-eraser"></i> icon-eraser</li>
<li><i class="icon-file"></i> icon-file</li>
<li><i class="icon-file-o"></i> icon-file-o</li>
</ul>
<ul>
<li><i class="icon-file-text"></i> icon-file-text</li>
<li><i class="icon-file-text-o"></i> icon-file-text-o</li>
<li><i class="icon-files-o"></i> icon-files-o</li>
<li><i class="icon-floppy-o"></i> icon-floppy-o</li>
<li><i class="icon-font"></i> icon-font</li>
<li><i class="icon-header"></i> icon-header</li>
<li><i class="icon-indent"></i> icon-indent</li>
<li><i class="icon-italic"></i> icon-italic</li>
<li><i class="icon-link"></i> icon-link</li>
<li><i class="icon-list"></i> icon-list</li>
</ul>
<ul>
<li><i class="icon-list-alt"></i> icon-list-alt</li>
<li><i class="icon-list-ol"></i> icon-list-ol</li>
<li><i class="icon-list-ul"></i> icon-list-ul</li>
<li><i class="icon-outdent"></i> icon-outdent</li>
<li><i class="icon-paperclip"></i> icon-paperclip</li>
<li><i class="icon-paragraph"></i> icon-paragraph</li>
<li><i class="icon-repeat"></i> icon-repeat</li>
<li><i class="icon-scissors"></i> icon-scissors</li>
<li><i class="icon-strikethrough"></i> icon-strikethrough</li>
<li><i class="icon-subscript"></i> icon-subscript</li>
</ul>
<ul>
<li><i class="icon-superscript"></i> icon-superscript</li>
<li><i class="icon-table"></i> icon-table</li>
<li><i class="icon-text-height"></i> icon-text-height</li>
<li><i class="icon-text-width"></i> icon-text-width</li>
<li><i class="icon-th"></i> icon-th</li>
<li><i class="icon-th-large"></i> icon-th-large</li>
<li><i class="icon-th-list"></i> icon-th-list</li>
<li><i class="icon-underline"></i> icon-underline</li>
<li><i class="icon-undo"></i> icon-undo</li>
</ul>
</div>
### Spinner Icons
<div class="category-icons">
<ul>
<li><i class="icon-circle-o-notch"></i> icon-circle-o-notch</li>
<li><i class="icon-cog"></i> icon-cog</li>
</ul>
<ul>
<li><i class="icon-refresh"></i> icon-refresh</li>
</ul>
<ul>
<li><i class="icon-spinner"></i> icon-spinner</li>
</ul>
<ul>
</ul>
</div>
### File Type Icons
<div class="category-icons">
<ul>
<li><i class="icon-file"></i> icon-file</li>
<li><i class="icon-file-archive-o"></i> icon-file-archive-o</li>
<li><i class="icon-file-audio-o"></i> icon-file-audio-o</li>
<li><i class="icon-file-code-o"></i> icon-file-code-o</li>
</ul>
<ul>
<li><i class="icon-file-excel-o"></i> icon-file-excel-o</li>
<li><i class="icon-file-image-o"></i> icon-file-image-o</li>
<li><i class="icon-file-o"></i> icon-file-o</li>
</ul>
<ul>
<li><i class="icon-file-pdf-o"></i> icon-file-pdf-o</li>
<li><i class="icon-file-powerpoint-o"></i> icon-file-powerpoint-o</li>
<li><i class="icon-file-text"></i> icon-file-text</li>
</ul>
<ul>
<li><i class="icon-file-text-o"></i> icon-file-text-o</li>
<li><i class="icon-file-video-o"></i> icon-file-video-o</li>
<li><i class="icon-file-word-o"></i> icon-file-word-o</li>
</ul>
</div>
### Directional Icons
<div class="category-icons">
<ul>
<li><i class="icon-angle-double-down"></i> icon-angle-double-down</li>
<li><i class="icon-angle-double-left"></i> icon-angle-double-left</li>
<li><i class="icon-angle-double-right"></i> icon-angle-double-right</li>
<li><i class="icon-angle-double-up"></i> icon-angle-double-up</li>
<li><i class="icon-angle-down"></i> icon-angle-down</li>
<li><i class="icon-angle-left"></i> icon-angle-left</li>
<li><i class="icon-angle-right"></i> icon-angle-right</li>
<li><i class="icon-angle-up"></i> icon-angle-up</li>
<li><i class="icon-arrow-circle-down"></i> icon-arrow-circle-down</li>
<li><i class="icon-arrow-circle-left"></i> icon-arrow-circle-left</li>
<li><i class="icon-arrow-circle-o-down"></i> icon-arrow-circle-o-down</li>
<li><i class="icon-arrow-circle-o-left"></i> icon-arrow-circle-o-left</li>
<li><i class="icon-arrow-circle-o-right"></i> icon-arrow-circle-o-right</li>
</ul>
<ul>
<li><i class="icon-arrow-circle-o-up"></i> icon-arrow-circle-o-up</li>
<li><i class="icon-arrow-circle-right"></i> icon-arrow-circle-right</li>
<li><i class="icon-arrow-circle-up"></i> icon-arrow-circle-up</li>
<li><i class="icon-arrow-down"></i> icon-arrow-down</li>
<li><i class="icon-arrow-left"></i> icon-arrow-left</li>
<li><i class="icon-arrow-right"></i> icon-arrow-right</li>
<li><i class="icon-arrow-up"></i> icon-arrow-up</li>
<li><i class="icon-arrows"></i> icon-arrows</li>
<li><i class="icon-arrows-alt"></i> icon-arrows-alt</li>
<li><i class="icon-arrows-h"></i> icon-arrows-h</li>
<li><i class="icon-arrows-v"></i> icon-arrows-v</li>
<li><i class="icon-caret-down"></i> icon-caret-down</li>
</ul>
<ul>
<li><i class="icon-caret-left"></i> icon-caret-left</li>
<li><i class="icon-caret-right"></i> icon-caret-right</li>
<li><i class="icon-caret-square-o-down"></i> icon-caret-square-o-down</li>
<li><i class="icon-caret-square-o-left"></i> icon-caret-square-o-left</li>
<li><i class="icon-caret-square-o-right"></i> icon-caret-square-o-right</li>
<li><i class="icon-caret-square-o-up"></i> icon-caret-square-o-up</li>
<li><i class="icon-caret-up"></i> icon-caret-up</li>
<li><i class="icon-chevron-circle-down"></i> icon-chevron-circle-down</li>
<li><i class="icon-chevron-circle-left"></i> icon-chevron-circle-left</li>
<li><i class="icon-chevron-circle-right"></i> icon-chevron-circle-right</li>
<li><i class="icon-chevron-circle-up"></i> icon-chevron-circle-up</li>
<li><i class="icon-chevron-down"></i> icon-chevron-down</li>
</ul>
<ul>
<li><i class="icon-chevron-left"></i> icon-chevron-left</li>
<li><i class="icon-chevron-right"></i> icon-chevron-right</li>
<li><i class="icon-chevron-up"></i> icon-chevron-up</li>
<li><i class="icon-exchange"></i> icon-exchange</li>
<li><i class="icon-hand-o-down"></i> icon-hand-o-down</li>
<li><i class="icon-hand-o-left"></i> icon-hand-o-left</li>
<li><i class="icon-hand-o-right"></i> icon-hand-o-right</li>
<li><i class="icon-hand-o-up"></i> icon-hand-o-up</li>
<li><i class="icon-long-arrow-down"></i> icon-long-arrow-down</li>
<li><i class="icon-long-arrow-left"></i> icon-long-arrow-left</li>
<li><i class="icon-long-arrow-right"></i> icon-long-arrow-right</li>
<li><i class="icon-long-arrow-up"></i> icon-long-arrow-up</li>
</ul>
</div>
### Video Player Icons
<div class="category-icons">
<ul>
<li><i class="icon-arrows-alt"></i> icon-arrows-alt</li>
<li><i class="icon-backward"></i> icon-backward</li>
<li><i class="icon-compress"></i> icon-compress</li>
<li><i class="icon-eject"></i> icon-eject</li>
<li><i class="icon-expand"></i> icon-expand</li>
</ul>
<ul>
<li><i class="icon-fast-backward"></i> icon-fast-backward</li>
<li><i class="icon-fast-forward"></i> icon-fast-forward</li>
<li><i class="icon-forward"></i> icon-forward</li>
<li><i class="icon-pause"></i> icon-pause</li>
</ul>
<ul>
<li><i class="icon-play"></i> icon-play</li>
<li><i class="icon-play-circle"></i> icon-play-circle</li>
<li><i class="icon-play-circle-o"></i> icon-play-circle-o</li>
<li><i class="icon-random"></i> icon-random</li>
</ul>
<ul>
<li><i class="icon-step-backward"></i> icon-step-backward</li>
<li><i class="icon-step-forward"></i> icon-step-forward</li>
<li><i class="icon-stop"></i> icon-stop</li>
<li><i class="icon-youtube-play"></i> icon-youtube-play</li>
</ul>
</div>
### Form Control Icons
<div class="category-icons">
<ul>
<li><i class="icon-check-square"></i> icon-check-square</li>
<li><i class="icon-check-square-o"></i> icon-check-square-o</li>
<li><i class="icon-circle"></i> icon-circle</li>
</ul>
<ul>
<li><i class="icon-circle-o"></i> icon-circle-o</li>
<li><i class="icon-dot-circle-o"></i> icon-dot-circle-o</li>
<li><i class="icon-minus-square"></i> icon-minus-square</li>
</ul>
<ul>
<li><i class="icon-minus-square-o"></i> icon-minus-square-o</li>
<li><i class="icon-plus-square"></i> icon-plus-square</li>
<li><i class="icon-plus-square-o"></i> icon-plus-square-o</li>
</ul>
<ul>
<li><i class="icon-square"></i> icon-square</li>
<li><i class="icon-square-o"></i> icon-square-o</li>
</ul>
</div>
### Transportation Icons
<div class="category-icons">
<ul>
<li><i class="icon-ambulance"></i> icon-ambulance</li>
<li><i class="icon-bicycle"></i> icon-bicycle</li>
<li><i class="icon-bus"></i> icon-bus</li>
<li><i class="icon-car"></i> icon-car</li>
</ul>
<ul>
<li><i class="icon-fighter-jet"></i> icon-fighter-jet</li>
<li><i class="icon-motorcycle"></i> icon-motorcycle</li>
<li><i class="icon-plane"></i> icon-plane</li>
<li><i class="icon-rocket"></i> icon-rocket</li>
</ul>
<ul>
<li><i class="icon-ship"></i> icon-ship</li>
<li><i class="icon-space-shuttle"></i> icon-space-shuttle</li>
<li><i class="icon-subway"></i> icon-subway</li>
<li><i class="icon-taxi"></i> icon-taxi</li>
</ul>
<ul>
<li><i class="icon-train"></i> icon-train</li>
<li><i class="icon-truck"></i> icon-truck</li>
<li><i class="icon-wheelchair"></i> icon-wheelchair</li>
</ul>
</div>
### Chart Icons
<div class="category-icons">
<ul>
<li><i class="icon-area-chart"></i> icon-area-chart</li>
<li><i class="icon-bar-chart"></i> icon-bar-chart</li>
</ul>
<ul>
<li><i class="icon-line-chart"></i> icon-line-chart</li>
</ul>
<ul>
<li><i class="icon-pie-chart"></i> icon-pie-chart</li>
</ul>
<ul>
</ul>
</div>
### Brand Icons
<div class="category-icons">
<ul>
<li><i class="icon-500px"></i> icon-500px</li>
<li><i class="icon-adn"></i> icon-adn</li>
<li><i class="icon-amazon"></i> icon-amazon</li>
<li><i class="icon-android"></i> icon-android</li>
<li><i class="icon-angellist"></i> icon-angellist</li>
<li><i class="icon-apple"></i> icon-apple</li>
<li><i class="icon-behance"></i> icon-behance</li>
<li><i class="icon-behance-square"></i> icon-behance-square</li>
<li><i class="icon-bitbucket"></i> icon-bitbucket</li>
<li><i class="icon-bitbucket-square"></i> icon-bitbucket-square</li>
<li><i class="icon-black-tie"></i> icon-black-tie</li>
<li><i class="icon-btc"></i> icon-btc</li>
<li><i class="icon-buysellads"></i> icon-buysellads</li>
<li><i class="icon-cc-amex"></i> icon-cc-amex</li>
<li><i class="icon-cc-diners-club"></i> icon-cc-diners-club</li>
<li><i class="icon-cc-discover"></i> icon-cc-discover</li>
<li><i class="icon-cc-jcb"></i> icon-cc-jcb</li>
<li><i class="icon-cc-mastercard"></i> icon-cc-mastercard</li>
<li><i class="icon-cc-paypal"></i> icon-cc-paypal</li>
<li><i class="icon-cc-stripe"></i> icon-cc-stripe</li>
<li><i class="icon-cc-visa"></i> icon-cc-visa</li>
<li><i class="icon-chrome"></i> icon-chrome</li>
<li><i class="icon-codepen"></i> icon-codepen</li>
<li><i class="icon-connectdevelop"></i> icon-connectdevelop</li>
<li><i class="icon-contao"></i> icon-contao</li>
<li><i class="icon-css3"></i> icon-css3</li>
<li><i class="icon-dashcube"></i> icon-dashcube</li>
<li><i class="icon-delicious"></i> icon-delicious</li>
<li><i class="icon-deviantart"></i> icon-deviantart</li>
<li><i class="icon-digg"></i> icon-digg</li>
<li><i class="icon-dribbble"></i> icon-dribbble</li>
<li><i class="icon-dropbox"></i> icon-dropbox</li>
<li><i class="icon-drupal"></i> icon-drupal</li>
<li><i class="icon-empire"></i> icon-empire</li>
<li><i class="icon-expeditedssl"></i> icon-expeditedssl</li>
</ul>
<ul>
<li><i class="icon-facebook"></i> icon-facebook</li>
<li><i class="icon-facebook-official"></i> icon-facebook-official</li>
<li><i class="icon-facebook-square"></i> icon-facebook-square</li>
<li><i class="icon-firefox"></i> icon-firefox</li>
<li><i class="icon-flickr"></i> icon-flickr</li>
<li><i class="icon-fonticons"></i> icon-fonticons</li>
<li><i class="icon-forumbee"></i> icon-forumbee</li>
<li><i class="icon-foursquare"></i> icon-foursquare</li>
<li><i class="icon-get-pocket"></i> icon-get-pocket</li>
<li><i class="icon-gg"></i> icon-gg</li>
<li><i class="icon-gg-circle"></i> icon-gg-circle</li>
<li><i class="icon-git"></i> icon-git</li>
<li><i class="icon-git-square"></i> icon-git-square</li>
<li><i class="icon-github"></i> icon-github</li>
<li><i class="icon-github-alt"></i> icon-github-alt</li>
<li><i class="icon-github-square"></i> icon-github-square</li>
<li><i class="icon-google"></i> icon-google</li>
<li><i class="icon-google-plus"></i> icon-google-plus</li>
<li><i class="icon-google-plus-square"></i> icon-google-plus-square</li>
<li><i class="icon-google-wallet"></i> icon-google-wallet</li>
<li><i class="icon-gratipay"></i> icon-gratipay</li>
<li><i class="icon-hacker-news"></i> icon-hacker-news</li>
<li><i class="icon-houzz"></i> icon-houzz</li>
<li><i class="icon-html5"></i> icon-html5</li>
<li><i class="icon-instagram"></i> icon-instagram</li>
<li><i class="icon-internet-explorer"></i> icon-internet-explorer</li>
<li><i class="icon-ioxhost"></i> icon-ioxhost</li>
<li><i class="icon-joomla"></i> icon-joomla</li>
<li><i class="icon-jsfiddle"></i> icon-jsfiddle</li>
<li><i class="icon-lastfm"></i> icon-lastfm</li>
<li><i class="icon-lastfm-square"></i> icon-lastfm-square</li>
<li><i class="icon-leanpub"></i> icon-leanpub</li>
<li><i class="icon-linkedin"></i> icon-linkedin</li>
<li><i class="icon-linkedin-square"></i> icon-linkedin-square</li>
</ul>
<ul>
<li><i class="icon-linux"></i> icon-linux</li>
<li><i class="icon-maxcdn"></i> icon-maxcdn</li>
<li><i class="icon-meanpath"></i> icon-meanpath</li>
<li><i class="icon-medium"></i> icon-medium</li>
<li><i class="icon-odnoklassniki"></i> icon-odnoklassniki</li>
<li><i class="icon-odnoklassniki-square"></i> icon-odnoklassniki-square</li>
<li><i class="icon-opencart"></i> icon-opencart</li>
<li><i class="icon-openid"></i> icon-openid</li>
<li><i class="icon-opera"></i> icon-opera</li>
<li><i class="icon-optin-monster"></i> icon-optin-monster</li>
<li><i class="icon-pagelines"></i> icon-pagelines</li>
<li><i class="icon-paypal"></i> icon-paypal</li>
<li><i class="icon-pied-piper"></i> icon-pied-piper</li>
<li><i class="icon-pied-piper-alt"></i> icon-pied-piper-alt</li>
<li><i class="icon-pinterest"></i> icon-pinterest</li>
<li><i class="icon-pinterest-p"></i> icon-pinterest-p</li>
<li><i class="icon-pinterest-square"></i> icon-pinterest-square</li>
<li><i class="icon-qq"></i> icon-qq</li>
<li><i class="icon-rebel"></i> icon-rebel</li>
<li><i class="icon-reddit"></i> icon-reddit</li>
<li><i class="icon-reddit-square"></i> icon-reddit-square</li>
<li><i class="icon-renren"></i> icon-renren</li>
<li><i class="icon-safari"></i> icon-safari</li>
<li><i class="icon-sellsy"></i> icon-sellsy</li>
<li><i class="icon-share-alt"></i> icon-share-alt</li>
<li><i class="icon-share-alt-square"></i> icon-share-alt-square</li>
<li><i class="icon-shirtsinbulk"></i> icon-shirtsinbulk</li>
<li><i class="icon-simplybuilt"></i> icon-simplybuilt</li>
<li><i class="icon-skyatlas"></i> icon-skyatlas</li>
<li><i class="icon-skype"></i> icon-skype</li>
<li><i class="icon-slack"></i> icon-slack</li>
<li><i class="icon-slideshare"></i> icon-slideshare</li>
<li><i class="icon-soundcloud"></i> icon-soundcloud</li>
<li><i class="icon-spotify"></i> icon-spotify</li>
</ul>
<ul>
<li><i class="icon-stack-exchange"></i> icon-stack-exchange</li>
<li><i class="icon-stack-overflow"></i> icon-stack-overflow</li>
<li><i class="icon-steam"></i> icon-steam</li>
<li><i class="icon-steam-square"></i> icon-steam-square</li>
<li><i class="icon-stumbleupon"></i> icon-stumbleupon</li>
<li><i class="icon-stumbleupon-circle"></i> icon-stumbleupon-circle</li>
<li><i class="icon-tencent-weibo"></i> icon-tencent-weibo</li>
<li><i class="icon-trello"></i> icon-trello</li>
<li><i class="icon-tripadvisor"></i> icon-tripadvisor</li>
<li><i class="icon-tumblr"></i> icon-tumblr</li>
<li><i class="icon-tumblr-square"></i> icon-tumblr-square</li>
<li><i class="icon-twitch"></i> icon-twitch</li>
<li><i class="icon-twitter"></i> icon-twitter</li>
<li><i class="icon-twitter-square"></i> icon-twitter-square</li>
<li><i class="icon-viacoin"></i> icon-viacoin</li>
<li><i class="icon-vimeo"></i> icon-vimeo</li>
<li><i class="icon-vimeo-square"></i> icon-vimeo-square</li>
<li><i class="icon-vine"></i> icon-vine</li>
<li><i class="icon-vk"></i> icon-vk</li>
<li><i class="icon-weibo"></i> icon-weibo</li>
<li><i class="icon-weixin"></i> icon-weixin</li>
<li><i class="icon-whatsapp"></i> icon-whatsapp</li>
<li><i class="icon-wikipedia-w"></i> icon-wikipedia-w</li>
<li><i class="icon-windows"></i> icon-windows</li>
<li><i class="icon-wordpress"></i> icon-wordpress</li>
<li><i class="icon-xing"></i> icon-xing</li>
<li><i class="icon-xing-square"></i> icon-xing-square</li>
<li><i class="icon-y-combinator"></i> icon-y-combinator</li>
<li><i class="icon-yahoo"></i> icon-yahoo</li>
<li><i class="icon-yelp"></i> icon-yelp</li>
<li><i class="icon-youtube"></i> icon-youtube</li>
<li><i class="icon-youtube-play"></i> icon-youtube-play</li>
<li><i class="icon-youtube-square"></i> icon-youtube-square</li>
</ul>
</div>
### Hand Icons
<div class="category-icons">
<ul>
<li><i class="icon-hand-lizard-o"></i> icon-hand-lizard-o</li>
<li><i class="icon-hand-o-down"></i> icon-hand-o-down</li>
<li><i class="icon-hand-o-left"></i> icon-hand-o-left</li>
<li><i class="icon-hand-o-right"></i> icon-hand-o-right</li>
</ul>
<ul>
<li><i class="icon-hand-o-up"></i> icon-hand-o-up</li>
<li><i class="icon-hand-paper-o"></i> icon-hand-paper-o</li>
<li><i class="icon-hand-peace-o"></i> icon-hand-peace-o</li>
<li><i class="icon-hand-pointer-o"></i> icon-hand-pointer-o</li>
</ul>
<ul>
<li><i class="icon-hand-rock-o"></i> icon-hand-rock-o</li>
<li><i class="icon-hand-scissors-o"></i> icon-hand-scissors-o</li>
<li><i class="icon-hand-spock-o"></i> icon-hand-spock-o</li>
<li><i class="icon-thumbs-down"></i> icon-thumbs-down</li>
</ul>
<ul>
<li><i class="icon-thumbs-o-down"></i> icon-thumbs-o-down</li>
<li><i class="icon-thumbs-o-up"></i> icon-thumbs-o-up</li>
<li><i class="icon-thumbs-up"></i> icon-thumbs-up</li>
</ul>
</div>
### Payment Icons
<div class="category-icons">
<ul>
<li><i class="icon-cc-amex"></i> icon-cc-amex</li>
<li><i class="icon-cc-diners-club"></i> icon-cc-diners-club</li>
<li><i class="icon-cc-discover"></i> icon-cc-discover</li>
</ul>
<ul>
<li><i class="icon-cc-jcb"></i> icon-cc-jcb</li>
<li><i class="icon-cc-mastercard"></i> icon-cc-mastercard</li>
<li><i class="icon-cc-paypal"></i> icon-cc-paypal</li>
</ul>
<ul>
<li><i class="icon-cc-stripe"></i> icon-cc-stripe</li>
<li><i class="icon-cc-visa"></i> icon-cc-visa</li>
<li><i class="icon-credit-card"></i> icon-credit-card</li>
</ul>
<ul>
<li><i class="icon-google-wallet"></i> icon-google-wallet</li>
<li><i class="icon-paypal"></i> icon-paypal</li>
</ul>
</div>
### Currency Icons
<div class="category-icons">
<ul>
<li><i class="icon-btc"></i> icon-btc</li>
<li><i class="icon-eur"></i> icon-eur</li>
<li><i class="icon-gbp"></i> icon-gbp</li>
<li><i class="icon-gg"></i> icon-gg</li>
</ul>
<ul>
<li><i class="icon-gg-circle"></i> icon-gg-circle</li>
<li><i class="icon-ils"></i> icon-ils</li>
<li><i class="icon-inr"></i> icon-inr</li>
</ul>
<ul>
<li><i class="icon-jpy"></i> icon-jpy</li>
<li><i class="icon-krw"></i> icon-krw</li>
<li><i class="icon-money"></i> icon-money</li>
</ul>
<ul>
<li><i class="icon-rub"></i> icon-rub</li>
<li><i class="icon-try"></i> icon-try</li>
<li><i class="icon-usd"></i> icon-usd</li>
</ul>
</div>
### Gender Icons
<div class="category-icons">
<ul>
<li><i class="icon-genderless"></i> icon-genderless</li>
<li><i class="icon-mars"></i> icon-mars</li>
<li><i class="icon-mars-double"></i> icon-mars-double</li>
<li><i class="icon-mars-stroke"></i> icon-mars-stroke</li>
</ul>
<ul>
<li><i class="icon-mars-stroke-h"></i> icon-mars-stroke-h</li>
<li><i class="icon-mars-stroke-v"></i> icon-mars-stroke-v</li>
<li><i class="icon-mercury"></i> icon-mercury</li>
</ul>
<ul>
<li><i class="icon-neuter"></i> icon-neuter</li>
<li><i class="icon-transgender"></i> icon-transgender</li>
<li><i class="icon-transgender-alt"></i> icon-transgender-alt</li>
</ul>
<ul>
<li><i class="icon-venus"></i> icon-venus</li>
<li><i class="icon-venus-double"></i> icon-venus-double</li>
<li><i class="icon-venus-mars"></i> icon-venus-mars</li>
</ul>
</div>
<!-- Styles -->
<style>
.category-icons {
overflow: hidden;
}
.category-icons > ul {
list-style-type: none;
padding: 0;
margin: 0;
width: 25%;
float: left;
}
.category-icons > ul > li {
cursor: pointer;
line-height: 42px;
height: 42px;
padding: 0;
margin: 0;
padding-left: 12px;
overflow: hidden;
font-size: 11px;
}
.category-icons > ul > li [class^="icon-"],
.category-icons > ul > li [class*=" icon-"] {
width: 32px;
font-size: 16px;
float: right;
line-height: 42px;
margin-right: 5px;
}
.category-icons > ul > li:hover {
background-color: #fbf4f4;
}
.category-icons > ul > li:hover [class^="icon-"]:before,
.category-icons > ul > li:hover [class*=" icon-"]:before {
font-size: 24px;
vertical-align: middle;
line-height: 20px;
}
</style>
<!-- PHP code for outputting icons -->
<!--
<?php
$iconYaml = <<<ESC
... place yaml content here...
ESC;
$array = Yaml::parse($iconYaml);
$categories = [];
foreach ($array['icons'] as $icon) {
foreach ($icon['categories'] as $category) {
$categories[$category][] = $icon['id'];
}
}
$result = [];
foreach ($categories as $name => &$cat) {
sort($cat);
$result[] = PHP_EOL.'### '.$name.PHP_EOL;
$break = count($cat) / 4;
$cnt = 0;
$result[] = '<div class="category-icons">';
foreach ([1, 2, 3, 4] as $b) {
$end = $break * $b;
$result[] = '<ul>';
while ($cnt <= $end) {
if (!isset($cat[$cnt])) break;
$icon = $cat[$cnt];
$result[] = ' <li><i class="icon-'.$icon.'"></i> icon-'.$icon.'</li>';
$cnt++;
}
$result[] = '</ul>';
}
$result[] = '</div>';
}
echo '<textarea>'.implode(PHP_EOL, $result).'</textarea>';
?>
-->

View File

@ -2,6 +2,30 @@
### Scoreboard
<div class="scoreboard">
<div data-control="toolbar">
<div class="scoreboard-item title-value">
<h4>Weight</h4>
<p>100</p>
<p class="description">unit: kg</p>
</div>
<div class="scoreboard-item title-value">
<h4>Comments</h4>
<p class="positive">44</p>
<p class="description">previous month: 32</p>
</div>
<div class="scoreboard-item title-value">
<h4>Latest commenter</h4>
<p class="oc-icon-star">John Smith</p>
<p class="description">registered: yes</p>
</div>
</div>
</div>
### Complete example
<div class="scoreboard">
<div data-control="toolbar">
<div class="scoreboard-item control-chart" data-control="chart-pie">
@ -57,3 +81,4 @@
</div>
</div>
</div>

View File

@ -1,39 +1,101 @@
# Toolbar
Toolbar
A scrollable set of buttons aligned to the left with a fixed right section.
# Example
All toolbar items (`toolbar-item`) should have a fixed width, except for the primary item (`toolbar-primary`) which will stretch. In the October backend you can use the `data-calculate-width` attribute to have these widths calculated dynamically for you.
<h4>Basic toolbar</h4>
## Basic toolbar
<div class="layout control-toolbar">
<div class="layout-cell toolbar-item">
<div class="control-toolbar">
<div class="toolbar-item toolbar-primary">
<div data-control="toolbar">
<div class="btn-group">
<button type="button" class="btn btn-primary oc-icon-plus">Create post</button>
<button type="button" disabled class="btn btn-primary oc-icon-copy">Copy</button>
<button type="button" disabled class="btn btn-primary oc-icon-trash">Delete</button>
</div>
<button type="button" class="btn btn-primary oc-icon-plus">Create post</button>
<div class="btn-group">
<button type="button" disabled class="btn btn-primary oc-icon-magic">Publish</button>
<button type="button" disabled class="btn btn-primary oc-icon-off">Unpublish</button>
</div>
<button type="button" class="btn btn-default oc-icon-copy">Copy</button>
<button type="button" class="btn btn-primary oc-icon-time">Timer</button>
<button type="button" class="btn btn-default oc-icon-trash">Delete</button>
<div class="btn-group">
<button type="button" class="btn btn-primary oc-icon-mail-reply-all">Send by email</button>
<button type="button" class="btn btn-primary oc-icon-hdd">Archive</button>
</div>
<button type="button" class="btn btn-default oc-icon-magic">Publish</button>
<button type="button" class="btn btn-default oc-icon-power-off">Unpublish</button>
<button type="button" class="btn btn-default oc-icon-clock-o">Timer</button>
<button type="button" class="btn btn-default oc-icon-mail-reply-all">Send by email</button>
<button type="button" class="btn btn-default oc-icon-hdd-o">Archive</button>
</div>
</div>
<div class="layout-cell toolbar-item width-fix">
<input placeholder="search..." type="text" name="" value="" class="form-control icon search growable" autocomplete="off"/>
<div class="toolbar-item" style="width: 110px">
<input placeholder="search..." type="text" name="" value="" class="form-control icon search" />
</div>
</div>
<h4>Editor toolbar</h4>
### Button groups
<div class="control-toolbar">
<div class="toolbar-item toolbar-primary">
<div data-control="toolbar">
<div class="btn-group">
<button type="button" class="btn btn-default oc-icon-mail-reply-all">Send by email</button>
<button type="button" class="btn btn-default oc-icon-hdd-o">Archive</button>
</div>
</div>
</div>
<div class="toolbar-item" style="width: 110px">
<input placeholder="search..." type="text" name="" value="" class="form-control icon search" />
</div>
</div>
### Button with Tooltips
<div class="control-toolbar">
<div class="toolbar-item toolbar-primary">
<div data-control="toolbar">
<button
type="button"
class="btn btn-default oc-icon-download"
title="Hold down shift for more options"
data-control="tooltip"
data-placement="bottom"
data-container="body">
Export
</button>
</div>
</div>
<div class="toolbar-item" style="width: 110px">
<input placeholder="search..." type="text" name="" value="" class="form-control icon search" />
</div>
</div>
### Dropdown buttons
<div class="control-toolbar">
<div class="toolbar-item toolbar-primary">
<div data-control="toolbar">
<div class="dropdown dropdown-fixed">
<button
type="button"
class="btn btn-default oc-icon-users"
data-toggle="dropdown">
Assign selected to...
</button>
<ul class="dropdown-menu" data-dropdown-title="Assign selected to...">
<li><a href="#" tabindex="-1" class="oc-icon-user">Sally</a></li>
<li><a href="#" tabindex="-1" class="oc-icon-user">Steve</a></li>
<li><a href="#" tabindex="-1" class="oc-icon-user">Justin</a></li>
</ul>
</div>
</div>
</div>
<div class="toolbar-item" style="width: 110px">
<input placeholder="search..." type="text" name="" value="" class="form-control icon search" />
</div>
</div>
## Editor toolbar
<div class="layout control-toolbar editor-toolbar">
<div class="layout-cell toolbar-item">
@ -50,14 +112,14 @@ Toolbar
data-placement="bottom"
data-container="body"></button>
<ul class="dropdown-menu" data-dropdown-title="Formatting">
<li><a href="#" rel="quote" tabindex="-1" class="oc-icon-quote-right">Quote</a></li>
<li><a href="#" rel="code" tabindex="-1" class="oc-icon-code">Code</a></li>
<li><a href="#" rel="header1" tabindex="-1" class="oc-icon-header">Header 1</a></li>
<li><a href="#" rel="header2" tabindex="-1" class="oc-icon-header">Header 2</a></li>
<li><a href="#" rel="header3" tabindex="-1" class="oc-icon-header">Header 3</a></li>
<li><a href="#" rel="header4" tabindex="-1" class="oc-icon-header">Header 4</a></li>
<li><a href="#" rel="header5" tabindex="-1" class="oc-icon-header">Header 5</a></li>
<li><a href="#" rel="header6" tabindex="-1" class="oc-icon-header">Header 6</a></li>
<li><a href="#" tabindex="-1" class="oc-icon-quote-right">Quote</a></li>
<li><a href="#" tabindex="-1" class="oc-icon-code">Code</a></li>
<li><a href="#" tabindex="-1" class="oc-icon-header">Header 1</a></li>
<li><a href="#" tabindex="-1" class="oc-icon-header">Header 2</a></li>
<li><a href="#" tabindex="-1" class="oc-icon-header">Header 3</a></li>
<li><a href="#" tabindex="-1" class="oc-icon-header">Header 4</a></li>
<li><a href="#" tabindex="-1" class="oc-icon-header">Header 5</a></li>
<li><a href="#" tabindex="-1" class="oc-icon-header">Header 6</a></li>
</ul>
</div>
@ -79,7 +141,7 @@ Toolbar
<button type="button" class="btn tb-icon tb-horizontalrule"></button>
</div>
</div>
<div class="layout-cell toolbar-item width-fix">
<div class="toolbar-item" style="width: 80px">
<button type="button" class="btn oc-icon-eye"></button>
<button type="button" class="btn oc-icon-expand"></button>
</div>

Some files were not shown because too many files have changed in this diff Show More