Merge branch 'master' of github.com:octobercms/october into develop

This commit is contained in:
alekseybobkov 2015-10-17 10:59:15 -07:00
commit 109f833617
73 changed files with 2116 additions and 3422 deletions

1
.gitignore vendored
View File

@ -1,6 +1,5 @@
/bootstrap/compiled.php
/vendor
composer.lock
composer.phar
.DS_Store
.idea

View File

@ -1,3 +1,6 @@
* **Build 305** (2015-10-17)
- The Inspector control has been dramatically improved.
* **Build 304** (2015-10-09)
- Added new `where` and `whereComponent` methods for querying CMS template properties.

View File

@ -4,7 +4,7 @@ Thank you for your contributions!
## Reporting a bug with OctoberCMS
**Please don't use the main Github for reporting bugs with plugins.** If you have found a bug in a plugin, the best place to report it is with the [plugin author](http://octobercms.com/plugins).
**Please don't use the main GitHub for reporting bugs with plugins.** If you have found a bug in a plugin, the best place to report it is with the [plugin author](http://octobercms.com/plugins).
We work hard to process bugs that are reported, to assist with this please ensure the following details are always included:
@ -18,9 +18,9 @@ We work hard to process bugs that are reported, to assist with this please ensur
- **Actual result**: What is the actual result on running above steps i.e. the bug behavior - **include any error messages**.
#### Here's how to report a bug on Github
#### Here's how to report a bug on GitHub
1. **Register for an account on [Github](https://github.com),** if you don't already have one.
1. **Register for an account on [GitHub](https://github.com),** if you don't already have one.
2. **Search for similar bugs.** Perhaps someone has already reported your issue! If so, please add clarification and/or more information to the **existing** bug.
@ -38,11 +38,11 @@ If you wish to contact us privately about any security exploits in OctoberCMS yo
## Feature requests
**Please don't use Github issues for suggesting a new feature.** If you have a feature idea, the best place to suggest it is the [OctoberCMS website forum](http://octobercms.com/forum/chan/feature-requests).
**Please don't use GitHub issues for suggesting a new feature.** If you have a feature idea, the best place to suggest it is the [OctoberCMS website forum](http://octobercms.com/forum/chan/feature-requests).
Only use Github if you are planning on contributing a new feature and developing it. If you want to discuss your idea first, before "officially" posting it anywhere, you can always join us on [IRC](http://octobercms.com/chat).
Only use GitHub if you are planning on contributing a new feature and developing it. If you want to discuss your idea first, before "officially" posting it anywhere, you can always join us on [IRC](http://octobercms.com/chat).
#### Github feature requests
#### GitHub feature requests
Feature Requests submitted as GitHub Issues specifically mean *"I'd like to see this feature, I'm going to be working on some code to implement it."* It is more like a Pre-Pull Request, in which a developer signifies that he or she wants to see a feature implemented that they think would be really great, and they're committed to coding it.

View File

@ -88,9 +88,9 @@
@media all and (max-width:767px){.sweet-alert{width:auto;margin-left:0;margin-right:0;left:15px;right:15px}
}
.sweet-alert .icon{width:80px;height:80px;border:4px solid gray;border-radius:50%;margin:20px auto;position:relative;box-sizing:content-box}
.sweet-alert .icon.error{border-color:#d43f3a}
.sweet-alert .icon.error{border-color:#952518}
.sweet-alert .icon.error .x-mark{position:relative;display:block}
.sweet-alert .icon.error .line{position:absolute;height:5px;width:47px;background-color:#d9534f;display:block;top:37px;border-radius:2px}
.sweet-alert .icon.error .line{position:absolute;height:5px;width:47px;background-color:#ab2a1c;display:block;top:37px;border-radius:2px}
.sweet-alert .icon.error .line.left{-webkit-transform:rotate(45deg);transform:rotate(45deg);left:17px}
.sweet-alert .icon.error .line.right{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);right:16px}
.sweet-alert .icon.warning{border-color:#eea236}
@ -99,20 +99,20 @@
.sweet-alert .icon.info{border-color:#46b8da}
.sweet-alert .icon.info::before{content:"";position:absolute;width:5px;height:29px;left:50%;bottom:17px;border-radius:2px;margin-left:-2px;background-color:#5bc0de}
.sweet-alert .icon.info::after{content:"";position:absolute;width:7px;height:7px;border-radius:50%;margin-left:-3px;top:19px;background-color:#5bc0de}
.sweet-alert .icon.success{border-color:#4cae4c}
.sweet-alert .icon.success{border-color:#2b9854}
.sweet-alert .icon.success::before,.sweet-alert .icon.success::after{content:'';border-radius:50%;position:absolute;width:60px;height:120px;background:white;-webkit-transform:rotate(45deg);transform:rotate(45deg)}
.sweet-alert .icon.success::before{border-radius:120px 0 0 120px;top:-7px;left:-33px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:60px 60px;transform-origin:60px 60px}
.sweet-alert .icon.success::after{border-radius:0 120px 120px 0;top:-11px;left:30px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:0px 60px;transform-origin:0px 60px}
.sweet-alert .icon.success .placeholder{width:80px;height:80px;border:4px solid rgba(92,184,92,0.2);border-radius:50%;box-sizing:content-box;position:absolute;left:-4px;top:-4px;z-index:2}
.sweet-alert .icon.success .placeholder{width:80px;height:80px;border:4px solid rgba(49,172,95,0.2);border-radius:50%;box-sizing:content-box;position:absolute;left:-4px;top:-4px;z-index:2}
.sweet-alert .icon.success .fix{width:5px;height:90px;background-color:#f9f9f9;position:absolute;left:28px;top:8px;z-index:1;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}
.sweet-alert .icon.success .line{height:5px;background-color:#5cb85c;display:block;border-radius:2px;position:absolute;z-index:2}
.sweet-alert .icon.success .line{height:5px;background-color:#31ac5f;display:block;border-radius:2px;position:absolute;z-index:2}
.sweet-alert .icon.success .line.tip{width:25px;left:14px;top:46px;-webkit-transform:rotate(45deg);transform:rotate(45deg)}
.sweet-alert .icon.success .line.long{width:47px;right:8px;top:38px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg)}
.sweet-alert .icon.custom{background-size:contain;border-radius:0;border:none;background-position:center center;background-repeat:no-repeat}
.sweet-alert .btn-default:focus{border-color:#e3e3e3;outline:0}
.sweet-alert .btn-success:focus{border-color:#4cae4c;outline:0}
.sweet-alert .btn-success:focus{border-color:#2b9854;outline:0}
.sweet-alert .btn-info:focus{border-color:#46b8da;outline:0}
.sweet-alert .btn-danger:focus{border-color:#d43f3a;outline:0}
.sweet-alert .btn-danger:focus{border-color:#952518;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}

View File

@ -912,15 +912,13 @@ class RelationController extends ControllerBehavior
$sessionKey = $this->deferredBinding ? $this->relationGetSessionKey(true) : null;
if ($this->viewMode == 'multi') {
if ($this->relationType == 'hasMany') {
$newModel = $this->relationObject->create($saveData, $sessionKey);
}
elseif ($this->relationType == 'belongsToMany') {
$newModel = $this->relationObject->create($saveData, [], $sessionKey);
$newModel = $this->relationModel;
$modelsToSave = $this->prepareModelsToSave($newModel, $saveData);
foreach ($modelsToSave as $modelToSave) {
$modelToSave->save(null, $this->manageWidget->getSessionKey());
}
$newModel->commitDeferred($this->manageWidget->getSessionKey());
$this->relationObject->add($newModel, $sessionKey);
}
elseif ($this->viewMode == 'single') {
$newModel = $this->viewModel;
@ -961,8 +959,10 @@ class RelationController extends ControllerBehavior
if ($this->viewMode == 'multi') {
$model = $this->relationModel->find($this->manageId);
$model->fill($saveData);
$model->save(null, $this->manageWidget->getSessionKey());
$modelsToSave = $this->prepareModelsToSave($model, $saveData);
foreach ($modelsToSave as $modelToSave) {
$modelToSave->save(null, $this->manageWidget->getSessionKey());
}
}
elseif ($this->viewMode == 'single') {
$this->viewWidget->setFormValues($saveData);

View File

@ -211,22 +211,35 @@ class ReorderController extends ControllerBehavior
*/
protected function getRecords()
{
$model = $this->controller->reorderGetModel();
$records = null;
$model = $this->controller->reorderGetModel();
$query = $model->newQuery();
$this->controller->reorderExtendQuery($query);
if ($this->sortMode == 'simple') {
$records = $model
$records = $query
->orderBy($model->getSortOrderColumn())
->get()
;
}
elseif ($this->sortMode == 'nested') {
$records = $model->getEagerRoot();
$records = $query->getNested();
}
return $records;
}
/**
* Extend the query used for finding reorder records. Extra conditions
* can be applied to the query, for example, $query->withTrashed();
* @param October\Rain\Database\Builder $query
* @return void
*/
public function reorderExtendQuery($query)
{
}
//
// Widgets
//

View File

@ -254,6 +254,10 @@ class FormField
*/
protected function evalConfig($config)
{
if (is_null($config)) {
$config = [];
}
/*
* Standard config:property values
*/
@ -543,12 +547,65 @@ class FormField
* Returns this fields value from a supplied data set, which can be
* an array or a model or another generic collection.
* @param mixed $data
* @param mixed $default
* @return mixed
*/
public function getValueFromData($data, $default = null)
{
$fieldName = $this->valueFrom ?: $this->fieldName;
return $this->getFieldNameFromData($fieldName, $data, $default);
}
/**
* Returns the default value for this field, the supplied data is used
* to source data when defaultFrom is specified.
* @param mixed $data
* @return mixed
*/
public function getDefaultFromData($data)
{
if ($this->defaultFrom) {
return $this->getFieldNameFromData($this->defaultFrom, $data);
}
if ($this->defaults !== '') {
return $this->defaults;
}
return null;
}
/**
* Returns the final model and attribute name of a nested attribute.
* Eg: list($model, $attribute) = $this->resolveAttribute('person[phone]');
* @param string $attribute.
* @return array
*/
public function resolveModelAttribute($model, $attribute = null)
{
if ($attribute === null) {
$attribute = $this->valueFrom ?: $this->fieldName;
}
$parts = is_array($attribute) ? $attribute : HtmlHelper::nameToArray($attribute);
$last = array_pop($parts);
foreach ($parts as $part) {
$model = $model->{$part};
}
return [$model, $last];
}
/**
* Internal method to extract the value of a field name from a data set.
* @param string $fieldName
* @param mixed $data
* @param mixed $default
* @return mixed
*/
protected function getFieldNameFromData($fieldName, $data, $default = null)
{
/*
* Array field name, eg: field[key][key2][key3]
*/
@ -588,26 +645,4 @@ class FormField
return $result;
}
/**
* Returns the final model and attribute name of a nested attribute.
* Eg: list($model, $attribute) = $this->resolveAttribute('person[phone]');
* @param string $attribute.
* @return array
*/
public function resolveModelAttribute($model, $attribute = null)
{
if ($attribute === null) {
$attribute = $this->valueFrom ?: $this->fieldName;
}
$parts = is_array($attribute) ? $attribute : HtmlHelper::nameToArray($attribute);
$last = array_pop($parts);
foreach ($parts as $part) {
$model = $model->{$part};
}
return [$model, $last];
}
}

View File

@ -113,7 +113,11 @@ abstract class FormWidgetBase extends WidgetBase
*/
public function getLoadValue()
{
return $this->formField->getValueFromData($this->data ?: $this->model);
$defaultValue = !$this->model->exists
? $this->formField->getDefaultFromData($this->data ?: $this->model)
: null;
return $this->formField->getValueFromData($this->data ?: $this->model, $defaultValue);
}
/**

View File

@ -1,5 +1,6 @@
<?php namespace Backend\FormWidgets;
use Carbon\Carbon;
use Backend\Classes\FormWidgetBase;
/**
@ -53,6 +54,14 @@ class DatePicker extends FormWidgetBase
]);
$this->mode = strtolower($this->mode);
$this->minDate = is_integer($this->minDate)
? Carbon::createFromTimestamp($this->minDate)
: Carbon::parse($this->minDate);
$this->maxDate = is_integer($this->maxDate)
? Carbon::createFromTimestamp($this->maxDate)
: Carbon::parse($this->maxDate);
}
/**

View File

@ -141,7 +141,7 @@ class FileUpload extends FormWidgetBase
/*
* Decorate each file with thumb and custom download path
*/
$list->each(function($file){
$list->each(function($file) {
$this->decorateFileAttributes($file);
});

View File

@ -43,9 +43,9 @@
.field-fileupload.style-image-multi .upload-button .upload-button-icon{position:absolute;width:22px;height:22px;top:50%;left:50%;margin-top:-11px;margin-left:-11px}
.field-fileupload.style-image-multi .upload-button .upload-button-icon:before{text-align:center;display:block;font-size:22px;height:22px;width:22px;line-height:22px;color:rgba(0,0,0,0.1)}
.field-fileupload.style-image-multi .upload-button:hover{border:2px dotted rgba(0,0,0,0.2)}
.field-fileupload.style-image-multi .upload-button:hover .upload-button-icon:before{color:#5cb85c;color:rgba(0,0,0,0.2)}
.field-fileupload.style-image-multi .upload-button:hover .upload-button-icon:before{color:#31ac5f;color:rgba(0,0,0,0.2)}
.field-fileupload.style-image-multi .upload-button:focus{border:2px solid rgba(0,0,0,0.3);background:transparent}
.field-fileupload.style-image-multi .upload-button:focus .upload-button-icon:before{color:#5cb85c;color:rgba(0,0,0,0.2)}
.field-fileupload.style-image-multi .upload-button:focus .upload-button-icon:before{color:#31ac5f;color:rgba(0,0,0,0.2)}
.field-fileupload.style-image-multi .upload-files-container{margin-left:90px}
.field-fileupload.style-image-multi .upload-object{background:#fff;border:1px solid #ecf0f1;width:260px}
.field-fileupload.style-image-multi .upload-object .progress-bar{display:block;width:100%;overflow:hidden;height:5px;background-color:#f5f5f5;border-radius:2px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);position:absolute;bottom:10px;left:0}
@ -77,9 +77,9 @@
.field-fileupload.style-image-single .upload-button .upload-button-icon{position:absolute;width:22px;height:22px;top:50%;left:50%;margin-top:-11px;margin-left:-11px}
.field-fileupload.style-image-single .upload-button .upload-button-icon:before{text-align:center;display:block;font-size:22px;height:22px;width:22px;line-height:22px;color:rgba(0,0,0,0.1)}
.field-fileupload.style-image-single .upload-button:hover{border:2px dotted rgba(0,0,0,0.2)}
.field-fileupload.style-image-single .upload-button:hover .upload-button-icon:before{color:#5cb85c;color:rgba(0,0,0,0.2)}
.field-fileupload.style-image-single .upload-button:hover .upload-button-icon:before{color:#31ac5f;color:rgba(0,0,0,0.2)}
.field-fileupload.style-image-single .upload-button:focus{border:2px solid rgba(0,0,0,0.3);background:transparent}
.field-fileupload.style-image-single .upload-button:focus .upload-button-icon:before{color:#5cb85c;color:rgba(0,0,0,0.2)}
.field-fileupload.style-image-single .upload-button:focus .upload-button-icon:before{color:#31ac5f;color:rgba(0,0,0,0.2)}
.field-fileupload.style-image-single .upload-object{padding-bottom:66px}
.field-fileupload.style-image-single .upload-object .icon-container{border:1px solid #f6f8f9;background:rgba(255,255,255,0.5)}
.field-fileupload.style-image-single .upload-object .icon-container.image img{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;display:block;max-width:100%;height:auto;min-height:100px;min-width:100px}

View File

@ -48,7 +48,7 @@
<div class="upload-object dz-preview dz-file-preview">
<div class="icon-container">
<i class="icon-file"></i>
<img data-dz-thumbnail />
<img data-dz-thumbnail alt="" />
</div>
<div class="info">
<h4 class="filename">

View File

@ -52,7 +52,7 @@
<div class="upload-object dz-preview dz-file-preview">
<div class="icon-container">
<i class="icon-file"></i>
<img data-dz-thumbnail />
<img data-dz-thumbnail alt="" />
</div>
<div class="info">
<h4 class="filename">

View File

@ -20,7 +20,7 @@
<?php foreach ($fileList as $file): ?>
<div class="upload-object is-success" data-id="<?= $file->id ?>" data-path="<?= $file->pathUrl ?>">
<div class="icon-container image">
<img src="<?= $file->thumbUrl ?>" />
<img src="<?= $file->thumbUrl ?>" alt="" />
</div>
<div class="info">
<h4 class="filename">
@ -47,7 +47,7 @@
<script type="text/template" id="<?= $this->getId('template') ?>">
<div class="upload-object dz-preview dz-file-preview">
<div class="icon-container image">
<img data-dz-thumbnail />
<img data-dz-thumbnail alt="" />
</div>
<div class="info">
<h4 class="filename">

View File

@ -24,7 +24,7 @@
<?php if ($singleFile): ?>
<div class="upload-object is-success" data-id="<?= $singleFile->id ?>" data-path="<?= $singleFile->pathUrl ?>">
<div class="icon-container image">
<img src="<?= $singleFile->thumbUrl ?>" />
<img src="<?= $singleFile->thumbUrl ?>" alt="" />
</div>
<div class="info">
<h4 class="filename">
@ -50,7 +50,7 @@
<script type="text/template" id="<?= $this->getId('template') ?>">
<div class="upload-object dz-preview dz-file-preview">
<div class="icon-container image">
<img data-dz-thumbnail style="<?= $cssDimensions ?>" />
<img data-dz-thumbnail style="<?= $cssDimensions ?>" alt="" />
</div>
<div class="info">
<h4 class="filename">

View File

@ -119,7 +119,11 @@ return [
'setup_title' => 'Listen Setup',
'setup_help' => 'Benutzen Sie Checkboxen, um Spalten auszuwählen, welche Sie in den Listen sehen möchten. Sie können die Position der Spalten ändern, indem Sie diese hinauf oder hinunter ziehen.',
'records_per_page' => 'Aufzeichnungen pro Seite',
'records_per_page_help' => 'Wählen Sie, wieviele Aufzeichnungen pro Seite dargestellt werden sollen. Bitte beachten Sie, dass eine hohe Anzahl pro Seite die Performance negativ beeinflussen kann.'
'records_per_page_help' => 'Wählen Sie, wieviele Aufzeichnungen pro Seite dargestellt werden sollen. Bitte beachten Sie, dass eine hohe Anzahl pro Seite die Performance negativ beeinflussen kann.',
'delete_selected' => 'Markierte löschen',
'delete_selected_empty' => 'Keine Einträge zum Löschen markiert.',
'delete_selected_confirm' => 'Markierte Einträge löschen?',
'delete_selected_success' => 'Markierte Einträge erfolgreich gelöscht.'
],
'fileupload' => [
'attachment' => 'Anhang',

View File

@ -138,7 +138,9 @@ return [
'delete_selected' => 'Delete selected',
'delete_selected_empty' => 'There are no selected records to delete.',
'delete_selected_confirm' => 'Delete the selected records?',
'delete_selected_success' => 'Successfully deleted the selected records.'
'delete_selected_success' => 'Successfully deleted the selected records.',
'column_switch_true' => 'Yes',
'column_switch_false' => 'No'
],
'fileupload' => [
'attachment' => 'Attachment',

View File

@ -139,6 +139,8 @@ return [
'delete_selected_empty' => 'Il ny a aucun enregistrement à supprimer',
'delete_selected_confirm' => 'Confirmer la suppression des enregistrements sélectionnés ?',
'delete_selected_success' => 'Les enregistrements ont bien été supprimés.',
'column_switch_true' => 'Oui',
'column_switch_false' => 'Non'
],
'fileupload' => [
'attachment' => 'Pièce jointe',
@ -315,4 +317,4 @@ return [
'filter' => [
'all' => 'tous'
],
];
];

View File

@ -187,6 +187,7 @@ return [
'close' => 'Aizvērt',
'confirm' => 'Apstiprināt',
'reload' => 'Pārlādēt',
'complete' => 'Pabeigt',
'ok' => 'OK',
'or' => 'vai',
'confirm_tab_close' => 'Vai tiešām vēlaties aizvērt šo cilni? Nesaglabātās izmaiņas būs zudušas.',
@ -235,6 +236,10 @@ return [
'unlink_name' => "Atsaistīt :name",
'unlink_confirm' => "Vai esat pārliecināts?",
],
'reorder' => [
'default_title' => 'Pārkārtot ierakstus',
'no_records' => 'Nav pieejami ieraksti, ko pārkārtot.',
],
'model' => [
'name' => 'Modulis',
'not_found' => "Modulis ':class' ar ID :id netika atrasts",
@ -259,6 +264,7 @@ return [
'code_folding' => 'Koda savilkšana',
'word_wrap' => 'Vārdu aplaušana',
'highlight_active_line' => 'Iekrāsot aktīvo līniju',
'auto_closing' => 'Automātiski aizvērt birkas un īpašos simbolus',
'show_invisibles' => 'Rādīt slēptos simbolus',
'show_gutter' => 'Rādīt līniju numurus',
'theme' => 'Krāsu shēma'

View File

@ -19,6 +19,9 @@ return [
'help' => "Du har inte behörighet att visa den här sidan.",
'cms_link' => "Gå till CMS backend",
],
'invalid_token' => [
'label' => 'Ogiltig säkerhetstoken'
],
],
'partial' => [
'not_found_name' => "En partial med namn ':name' kunde ej hittas",
@ -304,10 +307,10 @@ return [
],
'access_log' => [
'hint' => 'Denna logg visar en lista över lyckade inloggningsförsök till administratrationen. Registret behålls i :days dagar.',
'menu_label' => 'Åtkomst logg',
'menu_label' => 'Åtkomstlogg',
'menu_description' => 'Visa en lista över framgångsrika inloggningar av back-end användare.',
'created_at' => 'Dataum och tid',
'login' => 'Inlogging',
'login' => 'Inloggning',
'ip_address' => 'IP adress',
'first_name' => 'Förnamn',
'last_name' => 'Efternamn',

View File

@ -291,7 +291,7 @@ class Form extends WidgetBase
$data = $this->getSaveData();
}
$this->model->fill($data);
$this->model->forceFill($data);
$this->data = (object) array_merge((array) $this->data, (array) $data);
foreach ($this->allFields as $field) {
@ -775,17 +775,9 @@ class Form extends WidgetBase
$field = $this->allFields[$field];
}
$defaultValue = null;
if (!$this->model->exists) {
if ($field->defaultFrom) {
list($model, $attribute) = $field->resolveModelAttribute($this->model, $field->defaultFrom);
$defaultValue = $model->{$attribute};
}
elseif ($field->defaults !== '') {
$defaultValue = $field->defaults;
}
}
$defaultValue = !$this->model->exists
? $field->getDefaultFromData($this->data)
: null;
return $field->getValueFromData($this->data, $defaultValue);
}

View File

@ -878,8 +878,16 @@ class Lists extends WidgetBase
*/
protected function evalSwitchTypeValue($record, $column, $value)
{
// return ($value) ? '<i class="icon-check"></i>' : '<i class="icon-times"></i>';
return ($value) ? 'Yes' : 'No';
$contents = '';
if ($value) {
$contents = Lang::get('backend::lang.list.column_switch_true');
}
else {
$contents = Lang::get('backend::lang.list.column_switch_false');
}
return $contents;
}
/**

View File

@ -216,6 +216,7 @@ abstract class ComponentBase extends Extendable
* Sets an external property name.
* @param string $name Property name
* @param string $extName External property name
* @return string
*/
public function setExternalPropertyName($name, $extName)
{

View File

@ -976,6 +976,7 @@ class Controller
/**
* Sets the status code for the current web response.
* @param int $code Status code
* @return \Cms\Classes\Controller $this
*/
public function setStatusCode($code)
{
@ -1303,6 +1304,10 @@ class Controller
$routerParameters = $this->router->getParameters();
foreach ($properties as $propertyName => $propertyValue) {
if (is_array($propertyValue)) {
continue;
}
$matches = [];
if (preg_match('/^\{\{([^\}]+)\}\}$/', $propertyValue, $matches)) {
$paramName = trim($matches[1]);

View File

@ -27,6 +27,7 @@ class Layout extends CmsCompoundObject
/**
* Initializes the fallback layout.
* @param \Cms\ClassesTheme $theme Specifies a theme the file belongs to.
* @return \Cms\Classes\Layout
*/
public static function initFallback($theme)
{

View File

@ -443,7 +443,7 @@ class MediaLibrary
/**
* Determines if the path should be visible (not ignored).
* @param string $path Specifies a path to check.
* return boolean Returns TRUE if the path is visible.
* @return boolean Returns TRUE if the path is visible.
*/
protected function isVisible($path)
{

View File

@ -265,6 +265,7 @@ return [
'multiple_selected' => 'Multiple items selected.',
'uploading_file_num' => 'Uploading :number file(s)...',
'uploading_complete' => 'Upload complete',
'uploading_error' => 'Upload failed',
'order_by' => 'Order by',
'folder' => 'Folder',
'no_files_found' => 'No files found by your request.',

View File

@ -25,6 +25,7 @@ return [
],
'settings_menu' => 'Front-end tema',
'settings_menu_description' => 'Förhandsgranska listan av installerade teman och välj ett aktivt tema.',
'default_tab' => 'Egenskaper',
'name_label' => 'Namn',
'name_create_placeholder' => 'Nytt tema namn',
'author_label' => 'Författare',

View File

@ -286,7 +286,8 @@ this.dropzone.on('addedfile',this.proxy(this.uploadFileAdded))
this.dropzone.on('totaluploadprogress',this.proxy(this.uploadUpdateTotalProgress))
this.dropzone.on('queuecomplete',this.proxy(this.uploadQueueComplete))
this.dropzone.on('sending',this.proxy(this.uploadSending))
this.dropzone.on('error',this.proxy(this.uploadError))}
this.dropzone.on('error',this.proxy(this.uploadError))
this.dropzone.on('success',this.proxy(this.uploadSuccess))}
MediaManager.prototype.destroyUploader=function(){if(!this.dropzone)
return
this.dropzone.destroy()
@ -299,22 +300,22 @@ MediaManager.prototype.showUploadUi=function(){this.$el.find('[data-control="upl
MediaManager.prototype.hideUploadUi=function(){this.$el.find('[data-control="upload-ui"]').addClass('hide')}
MediaManager.prototype.uploadUpdateTotalProgress=function(uploadProgress,totalBytes,totalBytesSent){this.setUploadProgress(uploadProgress)
var fileNumberLabel=this.$el.get(0).querySelector('[data-label="file-number-and-progress"]'),messageTemplate=fileNumberLabel.getAttribute('data-message-template'),fileNumber=this.dropzone.getUploadingFiles().length+this.dropzone.getQueuedFiles().length
if(uploadProgress>=100)
uploadProgress=99
if(uploadProgress>=100){uploadProgress=99}
fileNumberLabel.innerHTML=messageTemplate.replace(':number',fileNumber).replace(':percents',Math.round(uploadProgress)+'%')}
MediaManager.prototype.setUploadProgress=function(value){var progresBar=this.$el.get(0).querySelector('[data-control="upload-progress-bar"]')
progresBar.setAttribute('style','width: '+value+'%')
progresBar.setAttribute('class','progress-bar')}
MediaManager.prototype.uploadQueueComplete=function(){var fileNumberLabel=this.$el.get(0).querySelector('[data-label="file-number-and-progress"]'),completeTemplate=fileNumberLabel.getAttribute('data-complete-template'),progresBar=this.$el.get(0).querySelector('[data-control="upload-progress-bar"]')
fileNumberLabel.innerHTML=completeTemplate;progresBar.setAttribute('class','progress-bar progress-bar-success')
this.$el.find('[data-command="cancel-uploading"]').addClass('hide')
MediaManager.prototype.setUploadProgress=function(value){var progressBar=this.$el.get(0).querySelector('[data-control="upload-progress-bar"]')
progressBar.setAttribute('style','width: '+value+'%')
progressBar.setAttribute('class','progress-bar')}
MediaManager.prototype.uploadQueueComplete=function(){this.$el.find('[data-command="cancel-uploading"]').addClass('hide')
this.$el.find('[data-command="close-uploader"]').removeClass('hide')
this.refresh()}
MediaManager.prototype.uploadSending=function(file,xhr,formData){formData.append('path',this.$el.find('[data-type="current-folder"]').val())
formData.append('X_OCTOBER_FILEUPLOAD',this.options.uniqueId)}
MediaManager.prototype.uploadCancelAll=function(){this.dropzone.removeAllFiles(true)
this.hideUploadUi()}
MediaManager.prototype.uploadError=function(file,message){$.oc.alert('Error uploading file')}
MediaManager.prototype.updateUploadBar=function(templateName,classNames){var fileNumberLabel=this.$el.get(0).querySelector('[data-label="file-number-and-progress"]'),successTemplate=fileNumberLabel.getAttribute('data-'+templateName+'-template'),progressBar=this.$el.get(0).querySelector('[data-control="upload-progress-bar"]')
fileNumberLabel.innerHTML=successTemplate;progressBar.setAttribute('class',classNames)}
MediaManager.prototype.uploadSuccess=function(){this.updateUploadBar('success','progress-bar progress-bar-success');}
MediaManager.prototype.uploadError=function(file,message){this.updateUploadBar('error','progress-bar progress-bar-danger');$.oc.alert('Error uploading file')}
MediaManager.prototype.cropSelectedImage=function(callback){var selectedItems=this.getSelectedItems(true)
if(selectedItems.length!=1){alert(this.options.selectSingleImage)
return}

View File

@ -730,6 +730,7 @@
this.dropzone.on('queuecomplete', this.proxy(this.uploadQueueComplete))
this.dropzone.on('sending', this.proxy(this.uploadSending))
this.dropzone.on('error', this.proxy(this.uploadError))
this.dropzone.on('success', this.proxy(this.uploadSuccess))
}
MediaManager.prototype.destroyUploader = function() {
@ -763,31 +764,25 @@
messageTemplate = fileNumberLabel.getAttribute('data-message-template'),
fileNumber = this.dropzone.getUploadingFiles().length + this.dropzone.getQueuedFiles().length
// Don't confuse users with displaying 100%
// Don't confuse users with displaying 100%
// until the operation finishes. We consider the operation
// finished when the Dropzone's 'compete' event triggers -
// finished when the Dropzone's 'compete' event triggers -
// when the response is received from the server.
if (uploadProgress >= 100)
if (uploadProgress >= 100) {
uploadProgress = 99
}
fileNumberLabel.innerHTML = messageTemplate.replace(':number', fileNumber).replace(':percents', Math.round(uploadProgress) + '%')
}
MediaManager.prototype.setUploadProgress = function(value) {
var progresBar = this.$el.get(0).querySelector('[data-control="upload-progress-bar"]')
progresBar.setAttribute('style', 'width: ' + value + '%')
progresBar.setAttribute('class', 'progress-bar')
var progressBar = this.$el.get(0).querySelector('[data-control="upload-progress-bar"]')
progressBar.setAttribute('style', 'width: ' + value + '%')
progressBar.setAttribute('class', 'progress-bar')
}
MediaManager.prototype.uploadQueueComplete = function() {
var fileNumberLabel = this.$el.get(0).querySelector('[data-label="file-number-and-progress"]'),
completeTemplate = fileNumberLabel.getAttribute('data-complete-template'),
progresBar = this.$el.get(0).querySelector('[data-control="upload-progress-bar"]')
fileNumberLabel.innerHTML = completeTemplate;
progresBar.setAttribute('class', 'progress-bar progress-bar-success')
this.$el.find('[data-command="cancel-uploading"]').addClass('hide')
this.$el.find('[data-command="close-uploader"]').removeClass('hide')
@ -804,7 +799,21 @@
this.hideUploadUi()
}
MediaManager.prototype.updateUploadBar = function(templateName, classNames) {
var fileNumberLabel = this.$el.get(0).querySelector('[data-label="file-number-and-progress"]'),
successTemplate = fileNumberLabel.getAttribute('data-' + templateName + '-template'),
progressBar = this.$el.get(0).querySelector('[data-control="upload-progress-bar"]')
fileNumberLabel.innerHTML = successTemplate;
progressBar.setAttribute('class', classNames)
}
MediaManager.prototype.uploadSuccess = function() {
this.updateUploadBar('success', 'progress-bar progress-bar-success');
}
MediaManager.prototype.uploadError = function(file, message) {
this.updateUploadBar('error', 'progress-bar progress-bar-danger');
$.oc.alert('Error uploading file')
}

View File

@ -4,7 +4,8 @@
<h5
data-label="file-number-and-progress"
data-message-template="<?= e(trans('cms::lang.media.uploading_file_num')) ?> <span>:percents</span>"
data-complete-template="<?= e(trans('cms::lang.media.uploading_complete')) ?>"
data-success-template="<?= e(trans('cms::lang.media.uploading_complete')) ?>"
data-error-template="<?= e(trans('cms::lang.media.uploading_error')) ?>"
></h5>
<div class="progress-controls">

View File

@ -365,8 +365,8 @@ cite{font-style:normal}
.text-center{text-align:center}
.text-justify{text-align:justify}
.text-muted{color:#999999}
.text-primary{color:#5fb6f5}
a.text-primary:hover{color:#2fa0f2}
.text-primary{color:#4da7e8}
a.text-primary:hover{color:#2091e2}
.text-success{color:#3c763d}
a.text-success:hover{color:#2b542c}
.text-info{color:#31708f}
@ -375,8 +375,8 @@ a.text-info:hover{color:#245269}
a.text-warning:hover{color:#66512c}
.text-danger{color:#a94442}
a.text-danger:hover{color:#843534}
.bg-primary{color:#fff;background-color:#5fb6f5}
a.bg-primary:hover{background-color:#2fa0f2}
.bg-primary{color:#fff;background-color:#4da7e8}
a.bg-primary:hover{background-color:#2091e2}
.bg-success{background-color:#dff0d8}
a.bg-success:hover{background-color:#c1e2b3}
.bg-info{background-color:#d9edf7}

View File

@ -4,26 +4,41 @@ Displays a floating flash message on the screen.
### Display onload
<p data-control="flash-message" data-interval="5" class="success">
This message is created from a static element. It will go away in 5 seconds.
</p>
<p data-control="flash-message" data-interval="5" class="success">
This message is created from a static element. It will go away in 5 seconds.
</p>
### Trigger
<p>
<a href="#" class="btn btn-primary" onclick="$.oc.flashMsg({text: 'The record has been successfujavascript:;ly saved. This message will go away in 1 second.', 'class': 'success', 'interval': 1}); return false;">
Create Success message
</a>
<a href="#" class="btn btn-primary" onclick="$.oc.flashMsg({text: 'The record has been successfujavascript:;ly saved. This message will go away in 1 second.', 'class': 'success', 'interval': 1}); return false;">
Create Success message
</a>
</p>
<p>
<a href="javascript:;" class="btn btn-danger" onclick="$.oc.flashMsg({text: 'Babam!', 'class': 'error'}); return false;">
Create Error message
</a>
<a href="javascript:;" class="btn btn-danger" onclick="$.oc.flashMsg({text: 'Babam!', 'class': 'error'}); return false;">
Create Error message
</a>
</p>
<p>
<a href="javascript:;" class="btn btn-warning" onclick="$.oc.flashMsg({text: 'Warning! October is too good for this world!', 'class': 'warning'}); return false;">
Create Warning message
</a>
<a href="javascript:;" class="btn btn-warning" onclick="$.oc.flashMsg({text: 'Warning! October is too good for this world!', 'class': 'warning'}); return false;">
Create Warning message
</a>
</p>
### Data attributes:
- data-control="flash-message" - enables the flash message plugin
- data-interval="2" - the interval to display the message in seconds, optional. Default: 2
### JavaScript API:
```js
$.oc.flashMsg({
'text': 'The record has been successfully saved.',
'class': 'success',
'interval': 3
})
```

View File

@ -118,6 +118,3 @@ $('a#someLink').popup({ ajax: 'popup-content.htm' })
$('a#someLink').popup({ handler: 'onLoadSomePopup' })
$('a#someLink').popup({ handler: 'onLoadSomePopup', extraData: { id: 3 } })
```
### Dependences:
- Bootstrap Modal (modal.js)

View File

@ -1,6 +1,6 @@
/*
* The bar chart plugin.
*
*
* Data attributes:
* - data-control="chart-bar" - enables the bar chart plugin
* - data-height="200" - optional, height of the graph
@ -9,9 +9,8 @@
* JavaScript API:
* $('.scoreboard .chart').barChart()
*
* Dependences:
* Dependences:
* - Raphaël (raphael-min.js)
* - October chart utilities (october.chartutils.js)
*/
+function ($) { "use strict";

View File

@ -1,8 +0,0 @@
/*
=require ../vendor/raphael/raphael.js
=require chart.utils.js
=require chart.line.js
=require chart.bar.js
=require chart.pie.js
=require chart.meter.js
*/

View File

@ -1,9 +1,3 @@
/*
=require ../vendor/flot/jquery.flot.js
=require ../vendor/flot/jquery.flot.tooltip.js
=require ../vendor/flot/jquery.flot.resize.js
=require ../vendor/flot/jquery.flot.time.js
*/
/*
* Line Chart Plugin
*
@ -21,15 +15,11 @@
* JavaScript API:
* $('.chart').chartLine({ resetZoomLink:'#reset-zoom' })
*
*
* Dependences:
* Dependences:
* - Flot (jquery.flot.js)
* - Flot Pie (jquery.flot.pie.js)
* - Flot Tooltip (jquery.flot.tooltip.js)
* - Flot Selection (jquery.flot.selection.js)
* - Flot Resize (jquery.flot.resize.js)
* - Flot Time (jquery.flot.time.js)
* - Flot Order Bars (jquery.orderBars.js)
*/
+function ($) { "use strict";

View File

@ -9,7 +9,7 @@
* JavaScript API:
* $('.scoreboard .chart').pieChart()
*
* Dependences:
* Dependences:
* - Raphaël (raphael-min.js)
* - October chart utilities (october.chartutils.js)
*/

View File

@ -1,6 +1,3 @@
/*
=require checkbox.balloon.js
*/
/*
* Checkbox control
*

View File

@ -1,5 +0,0 @@
/*
=require drag.value.js
=require drag.sort.js
=require drag.scroll.js
*/

View File

@ -1,8 +1,3 @@
/*
=require ../vendor/modernizr/modernizr.js
=require ../vendor/mousewheel/mousewheel.js
=require foundation.js
*/
/*
* Allows to scroll an element content in the horizontal or horizontal directions. This script doesn't use
* absolute positioning and rely on the scrollLeft/scrollTop DHTML properties. The element width should be
@ -31,8 +26,9 @@
* - goToStart - moves the scrollable area to the start (left or top)
* - goToElement - moves the scrollable area to an element
*
* Dependences:
* - Mouse Wheel plugin (mousewheel.js)
* Require:
* - modernizr/modernizr
* - mousewheel/mousewheel
*/
+function ($) { "use strict";

View File

@ -1,10 +1,10 @@
/*
=require ../vendor/sortable/jquery-sortable.js
*/
/*
* Sortable plugin.
*
* - Documentation: ../docs/drag-sort.md
* Documentation: ../docs/drag-sort.md
*
* Require:
* - sortable/jquery-sortable
*/
+function ($) { "use strict";

View File

@ -1,11 +1,10 @@
/*
=require ../vendor/bootstrap/js/dropdown.js
*/
/*
* Dropdown menus.
*
* This script customizes the Twitter Bootstrap drop-downs.
*
* Require:
* - bootstrap/dropdown
*/
+function ($) { "use strict";

View File

@ -1,9 +1,3 @@
/*
=require ../vendor/modernizr/modernizr.js
=require ../vendor/mustache/mustache.js
=require popover.js
*/
/*
* Filter Widget
*
@ -16,6 +10,11 @@
* Notes:
* Ideally this control would not depend on loader or the AJAX framework,
* then the Filter widget can use events to handle this business logic.
*
* Require:
* - mustache/mustache
* - modernizr/modernizr
* - storm/popover
*/
+function ($) { "use strict";

View File

@ -1,17 +1,10 @@
/*
=require ../vendor/bootstrap/js/transition.js
*/
/*
* The flash message.
*
* The default hide interval is 2 seconds. The interval option is not required.
* The flash message.
*
* Data attributes API:
* <p data-control="flash-message" class="success" data-interval="5">The record has been successfully saved.</p>
* Documentation: ../docs/flashmessage.md
*
* JavaScript API:
* $.oc.flashMsg({text: 'The record has been successfully saved.', 'class': 'success', 'interval': 3})
* Require:
* - bootstrap/transition
*/
+function ($) { "use strict";

View File

@ -1,9 +0,0 @@
/*
=require foundation.js
=require checkbox.js
=require select.js
*/
/*
* Form control
*
*/

View File

@ -1,6 +0,0 @@
/*
=require foundation.baseclass.js
=require foundation.element.js
=require foundation.event.js
=require foundation.controlutils.js
*/

View File

@ -1,6 +1,3 @@
/*
=require foundation.js
*/
/*
* Hot key binding.
*

View File

@ -1,6 +0,0 @@
/*
=require input.monitor.js
=require input.hotkey.js
=require input.preset.js
=require input.trigger.js
*/

View File

@ -1,6 +1,3 @@
/*
=require foundation.js
*/
/*
* The form change monitor API.
*

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +0,0 @@
/*
=require list.rowlink.js
*/

View File

@ -13,6 +13,9 @@
*
* The event parameter in the show() method is optional. If it is passed, the initial cursor position
* will be loaded from it.
*
* Require:
* - modernizr/modernizr
*/
+function ($) { "use strict";
if ($.oc === undefined)

View File

@ -1,6 +0,0 @@
/*
=require ../vendor/modernizr/modernizr.js
=require loader.base.js
=require loader.cursor.js
=require loader.stripe.js
*/

View File

@ -1,10 +1,10 @@
/*
=require ../vendor/bootstrap/js/modal.js
*/
/*
* Ajax Popup plugin
*
* - Documentation: ../docs/popup.md
* Documentation: ../docs/popup.md
*
* Require:
* - bootstrap/modal
*/
+function ($) { "use strict";

View File

@ -1,4 +0,0 @@
/*
=require toolbar.js
=require chart.js
*/

View File

@ -1,11 +1,9 @@
/*
=require ../vendor/modernizr/modernizr.js
=require ../vendor/select2/js/select2.full.js
*/
/*
* Select control
*
* Require:
* - modernizr/modernizr
* - select2/select2.full
*/
(function($){

View File

@ -1,12 +1,12 @@
/*
=require ../vendor/bootstrap/js/transition.js
=require ../vendor/bootstrap/js/tab.js
=require toolbar.js
*/
/*
* Tab control
*
* - Documentation: ../docs/tab.md
* Documentation: ../docs/tab.md
*
* Require:
* - bootstrap/transition
* - bootstrap/tab
* - storm/toolbar
*/
+function ($) { "use strict";

View File

@ -1,8 +1,3 @@
/*
=require foundation.js
=require drag.scroll.js
*/
/*
* Toolbar control.
*
@ -15,8 +10,8 @@
* JavaScript API:
* $('#toolbar').toolbar()
*
* Dependences:
* - Drag Scroll (october.dragscroll.js)
* Require:
* - storm/drag.scroll
*/
+function ($) { "use strict";

View File

@ -1,8 +1,3 @@
/*
=require ../vendor/bootstrap/js/transition.js
=require ../vendor/bootstrap/js/tooltip.js
*/
/*
* Implement the tooltip control automatically
*
@ -15,6 +10,10 @@
* title="Tooltip content">
* Some link
* </a>
*
* Require:
* - bootstrap/transition
* - bootstrap/tooltip
*/
(function($){

View File

@ -14,13 +14,15 @@
.open .dropdown-toggle& {
color: @color;
background-color: darken(@background, 8%);
border-color: darken(@border, 12%);
border-color: darken(@border, 12%);
}
&:active,
&.active,
.open .dropdown-toggle& {
background-image: none;
}
&.disabled,
&[disabled],
fieldset[disabled] & {
@ -30,7 +32,7 @@
&:active,
&.active {
background-color: @background;
border-color: @border;
border-color: @border;
}
}

View File

@ -112,16 +112,21 @@
@size-huge: 250px;
@size-giant: 350px;
//
// Colors
// --------------------------------------------------
@color-text-title: #405261;
@color-text-description: #8f8f8f;
@brand-primary: #4da7e8; // Original was #5fb6f5 -sg
@brand-success: #31ac5f;
@brand-info: #5bc0de; // @todo Find a non-BS color
@brand-warning: #f0ad4e; // @todo Find a non-BS color
@brand-danger: #ab2a1c;
@color-focus: @brand-primary;
@color-border: #cccccc;
@color-border-light: #e1e1e1;
@color-text-title: #405261;
@color-text-description: #8f8f8f;
@color-focus: @brand-primary;
@color-border: #cccccc;
@color-border-light: #e1e1e1;
@gray-darker: lighten(#000, 13.5%); // #222
@gray-dark: lighten(#000, 20%); // #333
@ -129,27 +134,21 @@
@gray-light: lighten(#000, 60%); // #999
@gray-lighter: lighten(#000, 93.5%); // #eee
@brand-primary: #5fb6f5;
@brand-success: #5cb85c;
@brand-info: #5bc0de;
@brand-warning: #f0ad4e;
@brand-danger: #d9534f;
@state-success-text: #3c763d;
@state-success-bg: #dff0d8;
@state-success-border: darken(spin(@state-success-bg, -10), 5%);
@state-success-text: #3c763d;
@state-success-bg: #dff0d8;
@state-success-border: darken(spin(@state-success-bg, -10), 5%);
@state-info-text: #31708f;
@state-info-bg: #d9edf7;
@state-info-border: darken(spin(@state-info-bg, -10), 7%);
@state-info-text: #31708f;
@state-info-bg: #d9edf7;
@state-info-border: darken(spin(@state-info-bg, -10), 7%);
@state-warning-text: #8a6d3b;
@state-warning-bg: #fcf8e3;
@state-warning-border: darken(spin(@state-warning-bg, -10), 5%);
@state-warning-text: #8a6d3b;
@state-warning-bg: #fcf8e3;
@state-warning-border: darken(spin(@state-warning-bg, -10), 5%);
@state-danger-text: #a94442;
@state-danger-bg: #f2dede;
@state-danger-border: darken(spin(@state-danger-bg, -10), 5%);
@state-danger-text: #a94442;
@state-danger-bg: #f2dede;
@state-danger-border: darken(spin(@state-danger-bg, -10), 5%);
//
// General

View File

@ -1,70 +0,0 @@
// Bar animations
// -------------------------
// WebKit
@-webkit-keyframes progress-bar-stripes {
from { background-position: 40px 0; }
to { background-position: 0 0; }
}
// Spec and IE10+
@keyframes progress-bar-stripes {
from { background-position: 40px 0; }
to { background-position: 0 0; }
}
// Bar itself
// -------------------------
// Outer container
.progress {
overflow: hidden;
height: @line-height-computed;
margin-bottom: @line-height-computed;
background-color: @progress-bg;
border-radius: @border-radius-base;
.box-shadow(inset 0 1px 2px rgba(0,0,0,.1));
}
// Bar of progress
.progress-bar {
float: left;
width: 0%;
height: 100%;
font-size: @font-size-small;
line-height: @line-height-computed;
color: @progress-bar-color;
text-align: center;
background-color: @progress-bar-bg;
.box-shadow(inset 0 -1px 0 rgba(0,0,0,.15));
.transition(width .6s ease);
}
// Call animation for the active one
.progress.active .progress-bar {
.animation(progress-bar-stripes 2s linear infinite);
}
// Variations
// -------------------------
.progress-bar-success {
background-color: @progress-bar-success-bg;
}
.progress-bar-info {
background-color: @progress-bar-info-bg;
}
.progress-bar-warning {
background-color: @progress-bar-warning-bg;
}
.progress-bar-danger {
background-color: @progress-bar-danger-bg;
}

View File

@ -8,32 +8,75 @@
// Progress bars
// --------------------------------------------------
@import "progressbar.base.less";
@progress-bg: #f5f5f5;
@progress-bg: #d9dee0;
@progress-bar-color: #fff;
@progress-bar-bg: @brand-primary;
@progress-bar-bg: #2f99da;
@progress-bar-success-bg: @brand-success;
@progress-bar-warning-bg: @brand-warning;
@progress-bar-danger-bg: @brand-danger;
@progress-bar-info-bg: @brand-info;
// Bar itself
// -------------------------
div.progress {
// Outer container
.progress {
overflow: hidden;
height: 9px;
.box-shadow(none);
background: #d9dee0;
margin-bottom: @line-height-computed;
background-color: @progress-bg;
border-radius: @border-radius-base;
}
// Bar of progress
.progress-bar {
float: left;
width: 0%;
height: 100%;
font-size: @font-size-small;
line-height: 9px;
.box-shadow(none);
background-color: #2f99da;
&.progress-bar-success {
background-color: #31ac5f;
}
color: @progress-bar-color;
text-align: center;
background-color: @progress-bar-bg;
.transition(width .6s ease);
}
// Call animation for the active one
.progress.active .progress-bar {
.animation(progress-bar-stripes 2s linear infinite);
}
// Variations
// -------------------------
.progress-bar-success {
background-color: @progress-bar-success-bg;
}
.progress-bar-info {
background-color: @progress-bar-info-bg;
}
.progress-bar-warning {
background-color: @progress-bar-warning-bg;
}
.progress-bar-danger {
background-color: @progress-bar-danger-bg;
}
// Bar animations
// -------------------------
// WebKit
@-webkit-keyframes progress-bar-stripes {
from { background-position: 40px 0; }
to { background-position: 0 0; }
}
// Spec and IE10+
@keyframes progress-bar-stripes {
from { background-position: 40px 0; }
to { background-position: 0 0; }
}

File diff suppressed because one or more lines are too long

View File

@ -365,8 +365,8 @@ cite{font-style:normal}
.text-center{text-align:center}
.text-justify{text-align:justify}
.text-muted{color:#999999}
.text-primary{color:#5fb6f5}
a.text-primary:hover{color:#2fa0f2}
.text-primary{color:#4da7e8}
a.text-primary:hover{color:#2091e2}
.text-success{color:#3c763d}
a.text-success:hover{color:#2b542c}
.text-info{color:#31708f}
@ -375,8 +375,8 @@ a.text-info:hover{color:#245269}
a.text-warning:hover{color:#66512c}
.text-danger{color:#a94442}
a.text-danger:hover{color:#843534}
.bg-primary{color:#fff;background-color:#5fb6f5}
a.bg-primary:hover{background-color:#2fa0f2}
.bg-primary{color:#fff;background-color:#4da7e8}
a.bg-primary:hover{background-color:#2091e2}
.bg-success{background-color:#dff0d8}
a.bg-success:hover{background-color:#c1e2b3}
.bg-info{background-color:#d9edf7}
@ -419,16 +419,16 @@ address{margin-bottom:20px;font-style:normal;line-height:1.42857143}
.btn-default:active,.btn-default.active,.open .dropdown-toggle.btn-default{background-image:none}
.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#e3e3e3;border-color:#e3e3e3}
.btn-default .badge{color:#e3e3e3;background-color:#666666}
.btn-primary{color:#ffffff;background-color:#5fb6f5;border-color:#47abf4}
.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#ffffff;background-color:#39a4f3;border-color:#0f91ee}
.btn-primary{color:#ffffff;background-color:#4da7e8;border-color:#369ce5}
.btn-primary:hover,.btn-primary:focus,.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{color:#ffffff;background-color:#2995e3;border-color:#197dc5}
.btn-primary:active,.btn-primary.active,.open .dropdown-toggle.btn-primary{background-image:none}
.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#5fb6f5;border-color:#47abf4}
.btn-primary .badge{color:#5fb6f5;background-color:#ffffff}
.btn-success{color:#ffffff;background-color:#5cb85c;border-color:#4cae4c}
.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#ffffff;background-color:#47a447;border-color:#398439}
.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#4da7e8;border-color:#369ce5}
.btn-primary .badge{color:#4da7e8;background-color:#ffffff}
.btn-success{color:#ffffff;background-color:#31ac5f;border-color:#2b9854}
.btn-success:hover,.btn-success:focus,.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{color:#ffffff;background-color:#288c4d;border-color:#1e693a}
.btn-success:active,.btn-success.active,.open .dropdown-toggle.btn-success{background-image:none}
.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#5cb85c;border-color:#4cae4c}
.btn-success .badge{color:#5cb85c;background-color:#ffffff}
.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#31ac5f;border-color:#2b9854}
.btn-success .badge{color:#31ac5f;background-color:#ffffff}
.btn-info{color:#ffffff;background-color:#5bc0de;border-color:#46b8da}
.btn-info:hover,.btn-info:focus,.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{color:#ffffff;background-color:#39b3d7;border-color:#269abc}
.btn-info:active,.btn-info.active,.open .dropdown-toggle.btn-info{background-image:none}
@ -439,11 +439,11 @@ address{margin-bottom:20px;font-style:normal;line-height:1.42857143}
.btn-warning:active,.btn-warning.active,.open .dropdown-toggle.btn-warning{background-image:none}
.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#f0ad4e;border-color:#eea236}
.btn-warning .badge{color:#f0ad4e;background-color:#ffffff}
.btn-danger{color:#ffffff;background-color:#d9534f;border-color:#d43f3a}
.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#ffffff;background-color:#d2322d;border-color:#ac2925}
.btn-danger{color:#ffffff;background-color:#ab2a1c;border-color:#952518}
.btn-danger:hover,.btn-danger:focus,.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{color:#ffffff;background-color:#882116;border-color:#601810}
.btn-danger:active,.btn-danger.active,.open .dropdown-toggle.btn-danger{background-image:none}
.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#d9534f;border-color:#d43f3a}
.btn-danger .badge{color:#d9534f;background-color:#ffffff}
.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#ab2a1c;border-color:#952518}
.btn-danger .badge{color:#ab2a1c;background-color:#ffffff}
.btn-link{color:#0181b9;font-weight:normal;cursor:pointer;border-radius:0}
.btn-link,.btn-link:active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}
.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}
@ -1140,7 +1140,7 @@ button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-ap
.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}
.dropdown-menu > li > a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#39454a;white-space:nowrap}
.dropdown-menu > li > a:hover,.dropdown-menu > li > a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}
.dropdown-menu > .active > a,.dropdown-menu > .active > a:hover,.dropdown-menu > .active > a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#5fb6f5}
.dropdown-menu > .active > a,.dropdown-menu > .active > a:hover,.dropdown-menu > .active > a:focus{color:#ffffff;text-decoration:none;outline:0;background-color:#4da7e8}
.dropdown-menu > .disabled > a,.dropdown-menu > .disabled > a:hover,.dropdown-menu > .disabled > a:focus{color:#999999}
.dropdown-menu > .disabled > a:hover,.dropdown-menu > .disabled > a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}
.open > .dropdown-menu{display:block}
@ -1241,22 +1241,19 @@ body.popover-open .control-popover .popover-head:before{display:none}
body.breadcrumb-flush .control-breadcrumb,.control-breadcrumb.breadcrumb-flush{margin-bottom:0}
body.slim-container .control-breadcrumb{margin-left:0;margin-right:0}
body.compact-container .control-breadcrumb{margin-top:0;margin-left:0;margin-right:0}
.progress{overflow:hidden;height:9px;margin-bottom:20px;background-color:#d9dee0;border-radius:2px}
.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:9px;color:#ffffff;text-align:center;background-color:#2f99da;-webkit-transition:width 0.6s ease;transition:width 0.6s ease}
.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}
.progress-bar-success{background-color:#31ac5f}
.progress-bar-info{background-color:#5bc0de}
.progress-bar-warning{background-color:#f0ad4e}
.progress-bar-danger{background-color:#ab2a1c}
@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}
to{background-position:0 0}
}
@keyframes progress-bar-stripes{from{background-position:40px 0}
to{background-position:0 0}
}
.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:2px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}
.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#ffffff;text-align:center;background-color:#5fb6f5;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width 0.6s ease;transition:width 0.6s ease}
.progress.active .progress-bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}
.progress-bar-success{background-color:#5cb85c}
.progress-bar-info{background-color:#5bc0de}
.progress-bar-warning{background-color:#f0ad4e}
.progress-bar-danger{background-color:#d9534f}
div.progress{height:9px;-webkit-box-shadow:none;box-shadow:none;background:#d9dee0}
.progress-bar{line-height:9px;-webkit-box-shadow:none;box-shadow:none;background-color:#2f99da}
.progress-bar.progress-bar-success{background-color:#31ac5f}
.callout{font-size:14px;margin-bottom:20px}
.callout.fade{opacity:0;filter:alpha(opacity=0);-webkit-transition:all 0.5s,width 0s;transition:all 0.5s,width 0s;-webkit-transform:scale(0.9);-ms-transform:scale(0.9);transform:scale(0.9)}
.callout.fade.in{opacity:1;filter:alpha(opacity=100);-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}
@ -1320,7 +1317,7 @@ div.progress{height:9px;-webkit-box-shadow:none;box-shadow:none;background:#d9de
.nav-pills > li{float:left}
.nav-pills > li > a{border-radius:2px}
.nav-pills > li + li{margin-left:2px}
.nav-pills > li.active > a,.nav-pills > li.active > a:hover,.nav-pills > li.active > a:focus{color:#ffffff;background-color:#5fb6f5}
.nav-pills > li.active > a,.nav-pills > li.active > a:hover,.nav-pills > li.active > a:focus{color:#ffffff;background-color:#4da7e8}
.nav-stacked > li{float:none}
.nav-stacked > li + li{margin-top:2px;margin-left:0}
.nav-justified{width:100%}
@ -1372,7 +1369,7 @@ div.progress{height:9px;-webkit-box-shadow:none;box-shadow:none;background:#d9de
.control-tabs[data-closable] > ul.nav-tabs > li a,.control-tabs[data-closable] > div > ul.nav-tabs > li a,.control-tabs[data-closable] > div > div > ul.nav-tabs > li a{padding-left:20px !important;padding-right:0 !important}
.control-tabs[data-closable] > ul.nav-tabs > li span.tab-close,.control-tabs[data-closable] > div > ul.nav-tabs > li span.tab-close,.control-tabs[data-closable] > div > div > ul.nav-tabs > li span.tab-close{display:block;position:absolute;width:20px;height:20px;top:5px;left:-5px;text-align:right;font-size:12px;color:#cccccc !important;cursor:pointer}
.control-tabs[data-closable] > ul.nav-tabs > li span.tab-close i,.control-tabs[data-closable] > div > ul.nav-tabs > li span.tab-close i,.control-tabs[data-closable] > div > div > ul.nav-tabs > li span.tab-close i{display:inline-block;z-index:101;top:-7px;right:5px;position:relative}
.control-tabs[data-closable] > ul.nav-tabs > li span.tab-close:hover i,.control-tabs[data-closable] > div > ul.nav-tabs > li span.tab-close:hover i,.control-tabs[data-closable] > div > div > ul.nav-tabs > li span.tab-close:hover i{color:#d9534f}
.control-tabs[data-closable] > ul.nav-tabs > li span.tab-close:hover i,.control-tabs[data-closable] > div > ul.nav-tabs > li span.tab-close:hover i,.control-tabs[data-closable] > div > div > ul.nav-tabs > li span.tab-close:hover i{color:#ab2a1c}
.control-tabs[data-closable] > ul.nav-tabs > li.active span.close,.control-tabs[data-closable] > div > ul.nav-tabs > li.active span.close,.control-tabs[data-closable] > div > div > ul.nav-tabs > li.active span.close{color:#cccccc}
.control-tabs[data-closable] > ul.nav-tabs > li[data-modified] span.tab-close i,.control-tabs[data-closable] > div > ul.nav-tabs > li[data-modified] span.tab-close i,.control-tabs[data-closable] > div > div > ul.nav-tabs > li[data-modified] span.tab-close i{top:-4px}
.control-tabs[data-closable] > ul.nav-tabs > li[data-modified] span.tab-close i:before,.control-tabs[data-closable] > div > ul.nav-tabs > li[data-modified] span.tab-close i:before,.control-tabs[data-closable] > div > div > ul.nav-tabs > li[data-modified] span.tab-close i:before{content:"\f111";font-size:9px}
@ -1474,10 +1471,10 @@ ul.status-list li a{color:#7e8c8d}
ul.status-list li a:hover{color:#0181b9;text-decoration:none}
ul.status-list li span.status{display:inline-block;padding:1px 5px;color:white;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}
ul.status-list li span.status.circle{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;width:12px;height:12px;vertical-align:middle;position:relative;top:-1px}
ul.status-list li span.status.success{background:#5cb85c}
ul.status-list li span.status.primary{background:#5fb6f5}
ul.status-list li span.status.success{background:#31ac5f}
ul.status-list li span.status.primary{background:#4da7e8}
ul.status-list li span.status.warning{background:#f0ad4e}
ul.status-list li span.status.danger{background:#d9534f}
ul.status-list li span.status.danger{background:#ab2a1c}
ul.status-list li span.status.info{background:#5bc0de}
.gecko ul.status-list li span.status.circle{top:-2px}
.report-container ul.status-list{margin-top:-10px}
@ -2179,7 +2176,7 @@ html.cssanimations .cursor-loading-indicator.hide{display:none}
.custom-checkbox input[type=radio]:checked + label:before,.custom-radio input[type=radio]:checked + label:before{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;content:"\f111";font-size:9px;line-height:12px;border-width:2px}
.custom-checkbox input[type=checkbox]:checked + label:before,.custom-radio input[type=checkbox]:checked + label:before{font-family:FontAwesome;font-weight:normal;font-style:normal;text-decoration:inherit;-webkit-font-smoothing:antialiased;*margin-right:.3em;content:"\f00c";font-size:10px;line-height:12px;border-width:2px}
.custom-checkbox:focus,.custom-radio:focus{outline:none}
.custom-checkbox:focus label:before,.custom-radio:focus label:before{border-color:#5fb6f5}
.custom-checkbox:focus label:before,.custom-radio:focus label:before{border-color:#4da7e8}
.custom-checkbox p.help-block,.custom-radio p.help-block{margin-top:0}
.custom-radio label:before{border-radius:8px}
.custom-checkbox label:before{border-radius:2px}

View File

@ -3,23 +3,53 @@
/ \/ | / \|__)|_ |__) (_ | / \|__)|\/|
\__/\__ | \__/|__)|__| \ __) | \__/| \ | |
=require vendor/mustache/mustache.js
=require vendor/modernizr/modernizr.js
=require vendor/bootstrap/js/dropdown.js
=require vendor/bootstrap/js/transition.js
=require vendor/bootstrap/js/tab.js
=require vendor/bootstrap/js/modal.js
=require vendor/bootstrap/js/tooltip.js
=require vendor/raphael/raphael.js
=require vendor/flot/jquery.flot.js
=require vendor/flot/jquery.flot.tooltip.js
=require vendor/flot/jquery.flot.resize.js
=require vendor/flot/jquery.flot.time.js
=require vendor/select2/js/select2.full.js
=require vendor/mousewheel/mousewheel.js
=require vendor/sortable/jquery-sortable.js
=require js/foundation.js
=require js/foundation.baseclass.js
=require js/foundation.element.js
=require js/foundation.event.js
=require js/foundation.controlutils.js
=require js/flashmessage.js
=require js/checkbox.js
=require js/checkbox.balloon.js
=require js/dropdown.js
=require js/callout.js
=require js/tooltip.js
=require js/toolbar.js
=require js/filter.js
=require js/select.js
=require js/loader.js
=require js/loader.base.js
=require js/loader.cursor.js
=require js/loader.stripe.js
=require js/popover.js
=require js/popup.js
=require js/chart.js
=require js/list.js
=require js/input.js
=require js/drag.js
=require js/chart.utils.js
=require js/chart.line.js
=require js/chart.bar.js
=require js/chart.pie.js
=require js/chart.meter.js
=require js/list.rowlink.js
=require js/input.monitor.js
=require js/input.hotkey.js
=require js/input.preset.js
=require js/input.trigger.js
=require js/drag.value.js
=require js/drag.sort.js
=require js/drag.scroll.js
=require js/tab.js
=require js/inspector.surface.js
=require js/inspector.manager.js

View File

@ -469,7 +469,8 @@ class PluginManager
/**
* Disables a single plugin in the system.
* @param string $id Plugin code/namespace
* @param bool $user Set to true if disabled by the user
* @param bool $isUser Set to true if disabled by the user
* @return bool
*/
public function disablePlugin($id, $isUser = false)
{
@ -491,7 +492,8 @@ class PluginManager
/**
* Enables a single plugin in the system.
* @param string $id Plugin code/namespace
* @param bool $user Set to true if enabled by the user
* @param bool $isUser Set to true if enabled by the user
* @return bool
*/
public function enablePlugin($id, $isUser = false)
{

View File

@ -7,29 +7,29 @@ return [
],
'locale' => [
'cs' => 'Tschechisch',
'en' => 'English',
'de' => 'German',
'el' => 'Greek',
'es' => 'Spanish',
'es-ar' => 'Spanish (Argentina)',
'fa' => 'Persian',
'fr' => 'French',
'hu' => 'Hungarian',
'id' => 'Bahasa Indonesia',
'it' => 'Italian',
'ja' => 'Japanese',
'lv' => 'Latvian',
'en' => 'Englisch',
'de' => 'Deutsch',
'el' => 'Griechisch',
'es' => 'Spanisch',
'es-ar' => 'Spanisch (Argentinien)',
'fa' => 'Persisch',
'fr' => 'Französisch',
'hu' => 'Ungarisch',
'id' => 'Indonesisch',
'it' => 'Italienisch',
'ja' => 'Japanisch',
'lv' => 'Lettisch',
'nb-no' => 'Norwegisch (Bokmål)',
'nl' => 'Dutch',
'pl' => 'Polish',
'pt-br' => 'Portuguese (Brazil)',
'ro' => 'Romana',
'ru' => 'Russian',
'sv' => 'Swedish',
'sk' => 'Slovak (Slovakia)',
'tr' => 'Turkish',
'zh-cn' => 'Chinese (China)',
'zh-tw' => 'Chinese (Taiwan)'
'nl' => 'Niederländisch',
'pl' => 'Polnisch',
'pt-br' => 'Portugiesisch (Brasilien)',
'ro' => 'Rumänisch',
'ru' => 'Russisch',
'sv' => 'Schwedisch',
'sk' => 'Slowakisch',
'tr' => 'Türkisch',
'zh-cn' => 'Chinesisch (China)',
'zh-tw' => 'Chinesisch (Taiwan)'
],
'directory' => [
'create_fail' => "Konnte Verzeichnis: :name nicht erstellen",
@ -54,41 +54,41 @@ return [
'project' => [
'name' => 'Projekt',
'owner_label' => 'Besitzer',
'attach' => 'Attach Project',
'detach' => 'Detach Project',
'none' => 'None',
'attach' => 'Projekt verbinden',
'detach' => 'Projekt trennen',
'none' => 'Keins',
'id' => [
'label' => 'Projekt-ID',
'help' => 'Wie Sie Ihre Projekt-ID finden',
'missing' => 'Bitte geben Sie eine Projekt-ID an.',
],
'detach_confirm' => 'Are you sure you want to detach this project?',
'detach_confirm' => 'Möchtest du dieses Projekt wirklich trennen?',
'unbind_success' => 'Projekt wurde erfolgreich getrennt (detached).',
],
'settings' => [
'menu_label' => 'Einstellungen',
'missing_model' => 'Der Einstellungsseite fehlt eine Model-Definition.',
'update_success' => 'Einstellung für :name wurde erfolgreich aktualisiert.',
'return' => 'Return to system settings',
'return' => 'Zurück zu den Einstellungen',
],
'email' => [
'menu_label' => 'Email Configuration',
'menu_description' => 'Manage email configuration.',
'general' => 'General',
'menu_label' => 'Email Einstellungen',
'menu_description' => 'Email Einstellungen verwalten.',
'general' => 'Allgemein',
'method' => 'Email Method',
'sender_name' => 'Sender Name',
'sender_email' => 'Sender Email',
'sender_name' => 'Absender Name',
'sender_email' => 'Absender Email',
'smtp' => 'SMTP',
'smtp_address' => 'SMTP Address',
'smtp_authorization' => 'SMTP authorization required',
'smtp_authorization_comment' => 'Use this checkbox if your SMTP server requires authorization.',
'smtp_username' => 'Username',
'smtp_password' => 'Password',
'smtp_address' => 'SMTP Adresse',
'smtp_authorization' => 'SMTP Authorisation erforderlich',
'smtp_authorization_comment' => 'Bitte auswählen, wenn der SMTP Server eine SMTP Authorisation erfordert.',
'smtp_username' => 'Benutzername',
'smtp_password' => 'Passwort',
'smtp_port' => 'SMTP Port',
'smtp_ssl' => 'SSL connection required',
'smtp_ssl' => 'SSL Verbindung erforderlich',
'sendmail' => 'Sendmail',
'sendmail_path' => 'Sendmail Path',
'sendmail_path_comment' => 'Please specify the path of the sendmail program.',
'sendmail_path' => 'Sendmail Pfad',
'sendmail_path_comment' => 'Bitte gib den (absoluten) Pfad zum Sendmail Programm an.',
],
'install' => [
'project_label' => 'Mit Projekt verbinden',
@ -104,9 +104,9 @@ return [
'check_label' => 'Auf Aktualisierungen überprüfen',
'retry_label' => 'Erneut versuchen',
'plugin_name' => 'Name',
'plugin_description' => 'Description',
'plugin_description' => 'Beschreibung',
'plugin_version' => 'Version',
'plugin_author' => 'Author',
'plugin_author' => 'Autor',
'core_current_build' => 'Aktueller Build',
'core_build' => 'Build :build',
'core_build_help' => 'Aktuellster Build ist verfügbar.',
@ -148,4 +148,46 @@ return [
'zip' => [
'extract_failed' => "Konnte Core-Datei ':file' nicht entpacken.",
],
'event_log' => [
'hint' => 'Dieses Event-Log listet potentielle Fehler in der Anwendung, wie Exceptions und Debugging-Informationen.',
'menu_label' => 'Event-Log',
'menu_description' => 'Rufe ein Event-Log mit Zeitangaben und Fehlerdetails auf.',
'empty_link' => 'Event-Log zurücksetzen',
'empty_loading' => 'Event-Log wird zurückgesetzt...',
'empty_success' => 'Event-Log erfolgreich zurückgesetzt.',
'return_link' => 'Zurück zum Event-Log',
'id' => 'ID',
'id_label' => 'Event ID',
'created_at' => 'Datum & Zeit',
'message' => 'Nachricht',
'level' => 'Level'
],
'request_log' => [
'hint' => 'Dieses Request-Log listet Browser-Anfragen, die Ihrer Aufmerksamkeit bedürfen könnten. Falls zum Beispiel ein Besucher eine nicht existierende CMS-Seite öffnet, wird ein Eintrag mit dem Fehler 404 angelegt.',
'menu_label' => 'Request-Log',
'menu_description' => 'Liste fehlerhafte Requests auf, z.B. Seite nicht gefunden (404).',
'empty_link' => 'Request-Log zurücksetzen',
'empty_loading' => 'Request-Log wird zurückgesetzt...',
'empty_success' => 'Request-Log erfolgreich zurückgesetzt.',
'return_link' => 'Zurück zum Request-Log',
'id' => 'ID',
'id_label' => 'Log ID',
'count' => 'Zähler',
'referer' => 'Referer',
'url' => 'URL',
'status_code' => 'Status'
],
'permissions' => [
'name' => 'System',
'manage_system_settings' => 'Systemeinstellungen verwalten',
'manage_software_updates' => 'Software-Updates verwalten',
'access_logs' => 'Systemprotokolle einsehen',
'manage_mail_templates' => 'Mail-Templates verwalten',
'manage_mail_settings' => 'Mail-Einstellungen verwalten',
'manage_other_administrators' => 'Andere Administratoren verwalten',
'manage_preferences' => 'Backend-Einstellungen verwalten',
'manage_editor' => 'Code-Editor-Einstellungen verwalten',
'view_the_dashboard' => 'Dashboard einsehen',
'manage_branding' => 'Backend individualisieren'
]
];

View File

@ -9,6 +9,7 @@ return [
'cs' => 'Czech',
'en' => 'Engelska',
'de' => 'Tyska',
'el' => 'Grekiska',
'es' => 'Spanska',
'es-ar' => 'Spanska (Argentina)',
'fa' => 'Persiska',
@ -74,6 +75,7 @@ return [
'remove_confirm' => 'Är du säker på att du vill radera det här temat?'
],
'plugin' => [
'label' => 'Tillägg',
'unnamed' => 'Namnlöst tillägg',
'name' => [
'label' => 'Tilläggsnamn',
@ -145,6 +147,10 @@ return [
'smtp_password' => 'Lösenord',
'smtp_port' => 'SMTP-port',
'smtp_ssl' => 'SSL-anslutning krävs',
'smtp_encryption' => 'SMTP-krypteringsprotokoll',
'smtp_encryption_none' => 'Ingen kryptering',
'smtp_encryption_tls' => 'TLS',
'smtp_encryption_ssl' => 'SSL',
'sendmail' => 'Sendmail',
'sendmail_path' => 'Sendmail-sökväg',
'sendmail_path_comment' => 'Vänligen ange sökvägen till sendmail',
@ -305,13 +311,15 @@ return [
],
'permissions' => [
'name' => 'System',
'manage_system_settings' => 'Hantera system inställningar',
'manage_system_settings' => 'Hantera systeminställningar',
'manage_software_updates' => 'Hantera systemuppdateringar',
'access_logs' => 'Visa system loggen',
'access_logs' => 'Visa systemloggen',
'manage_mail_templates' => 'Hantera e-postmallar',
'manage_mail_settings' => 'Hantera e-postinställningar',
'manage_other_administrators' => 'Hantera andra administratörer',
'manage_preferences' => 'Hantera inställningar för back-end',
'manage_editor' => 'Hantera inställningar för kodredigerare',
'view_the_dashboard' => 'Visa kontrollpanelen',
'manage_branding' => 'Anpassa backend'
'manage_branding' => 'Anpassa back-end',
]
];

View File

@ -46,6 +46,7 @@ return array(
"array" => ":attribute får inte innehålla mer än :max objekt.",
),
"mimes" => ":attribute måste vara en fil av typen: :values.",
"extensions" => ":attribute måste ha ett av följande filtillägg: :values.",
"min" => array(
"numeric" => ":attribute måste vara minst :min.",
"file" => ":attribute måste vara minst :min kilobytes.",

View File

@ -61,6 +61,7 @@ class Parameters extends Model
* Stores a setting value to the database.
* @param string $key Specifies the setting key value, for example 'system:updates.check'
* @param mixed $value The setting value to store, serializable.
* @return bool
*/
public static function set($key, $value = null)
{

View File

@ -72,7 +72,8 @@ trait ViewMaker
/**
* Loads a view with the name specified. Applies layout if its name is provided by the parent object.
* The view file must be situated in the views directory, and has the extension "htm".
* @param string $view Specifies the view name, without extension. Eg: "index".
* @param string $view Specifies the view name, without extension. Eg: "index".
* @return string
*/
public function makeView($view)
{