Merge branch 'develop' of github.com:octobercms/october into develop
This commit is contained in:
commit
0b2481560b
|
|
@ -10,4 +10,6 @@ nginx-ssl.access.log
|
|||
nginx-ssl.error.log
|
||||
php-errors.log
|
||||
sftp-config.json
|
||||
selenium.php
|
||||
selenium.php
|
||||
.env.*.php
|
||||
.env.php
|
||||
|
|
|
|||
|
|
@ -1,6 +1,12 @@
|
|||
* **Build 15x** (2014-10-xx)
|
||||
* **Build 15x** (2014-10-x)
|
||||
- Added twig filters `|trans` for `Lang::get(...)` and `|transchoice` for `Lang::choice(...)`.
|
||||
|
||||
* **Build 153** (2014-10-09)
|
||||
- Plugins are now updated in order of their dependency definitions.
|
||||
- Moved `ViewMaker` trait now lives under system, it can be useful for Models too.
|
||||
- Mailgun support added to Mail settings.
|
||||
- Form fields can now be marked as **hidden** (see Backend > Forms docs).
|
||||
- Added Controller behavior extension helpers `extendFormFields` and `extendListColumns`.
|
||||
|
||||
* **Build 149** (2014-09-29)
|
||||
- Added new `hint` form field type (see Backend > Forms docs).
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ The theme is based on the Twitter Bootstrap framework and uses LESS language for
|
|||
|
||||
* [LESS.app](http://incident57.com/less/) for Mac
|
||||
* [WinLess](http://winless.org/) for Windows
|
||||
* [Koala](http://koala-app.com/) for Linux
|
||||
|
||||
### Contact
|
||||
|
||||
|
|
|
|||
|
|
@ -587,7 +587,7 @@
|
|||
|
||||
// DROPDOWN EDITOR
|
||||
// ==================
|
||||
|
||||
|
||||
var InspectorEditorDropdown = function(editorId, inspector, fieldDef) {
|
||||
this.inspector = inspector
|
||||
this.fieldDef = fieldDef
|
||||
|
|
|
|||
|
|
@ -107,6 +107,17 @@ class FormController extends ControllerBehavior
|
|||
*/
|
||||
if ($this->controller->isClassExtendedWith('Backend.Behaviors.RelationController'))
|
||||
$this->controller->initRelation($model);
|
||||
|
||||
$this->prepareVars($model);
|
||||
}
|
||||
|
||||
/**
|
||||
* Prepares common form data
|
||||
*/
|
||||
protected function prepareVars($model)
|
||||
{
|
||||
$this->controller->vars['formModel'] = $model;
|
||||
$this->controller->vars['formRecordName'] = Lang::get($this->getConfig('name', 'backend::lang.model.name'));
|
||||
}
|
||||
|
||||
//
|
||||
|
|
@ -124,9 +135,8 @@ class FormController extends ControllerBehavior
|
|||
$this->context = strlen($context) ? $context : $this->getConfig('create[context]', 'create');
|
||||
$this->controller->pageTitle = $this->controller->pageTitle ?: $this->getLang('create[title]', 'backend::lang.form.create_title');
|
||||
$model = $this->controller->formCreateModelObject();
|
||||
$this->initForm($model);
|
||||
|
||||
$this->controller->vars['formModel'] = $model;
|
||||
$this->initForm($model);
|
||||
}
|
||||
catch (Exception $ex) {
|
||||
$this->controller->handleError($ex);
|
||||
|
|
@ -176,9 +186,8 @@ class FormController extends ControllerBehavior
|
|||
$this->context = strlen($context) ? $context : $this->getConfig('update[context]', 'update');
|
||||
$this->controller->pageTitle = $this->controller->pageTitle ?: $this->getLang('update[title]', 'backend::lang.form.update_title');
|
||||
$model = $this->controller->formFindModelObject($recordId);
|
||||
$this->initForm($model);
|
||||
|
||||
$this->controller->vars['formModel'] = $model;
|
||||
$this->initForm($model);
|
||||
}
|
||||
catch (Exception $ex) {
|
||||
$this->controller->handleError($ex);
|
||||
|
|
@ -250,9 +259,8 @@ class FormController extends ControllerBehavior
|
|||
$this->context = strlen($context) ? $context : $this->getConfig('preview[context]', 'preview');
|
||||
$this->controller->pageTitle = $this->controller->pageTitle ?: $this->getLang('preview[title]', 'backend::lang.form.preview_title');
|
||||
$model = $this->controller->formFindModelObject($recordId);
|
||||
$this->initForm($model);
|
||||
|
||||
$this->controller->vars['formModel'] = $model;
|
||||
$this->initForm($model);
|
||||
}
|
||||
catch (Exception $ex) {
|
||||
$this->controller->handleError($ex);
|
||||
|
|
@ -353,10 +361,10 @@ class FormController extends ControllerBehavior
|
|||
{
|
||||
$name = $this->getConfig($name, $default);
|
||||
$vars = [
|
||||
'name' => Lang::get($this->getConfig('name', trans('backend::lang.model.name')))
|
||||
'name' => Lang::get($this->getConfig('name', 'backend::lang.model.name'))
|
||||
];
|
||||
$vars = array_merge($vars, $extras);
|
||||
return trans($name, $vars);
|
||||
return Lang::get($name, $vars);
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
|||
|
|
@ -323,7 +323,7 @@ class ListController extends ControllerBehavior
|
|||
$calledClass = self::getCalledExtensionClass();
|
||||
Event::listen('backend.list.extendColumns', function($widget) use ($calledClass, $callback) {
|
||||
if (!is_a($widget->getController(), $calledClass)) return;
|
||||
$callback($widget, $widget->model, $widget->getContext());
|
||||
$callback($widget, $widget->model);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ class AuthManager extends RainAuthManager
|
|||
// Permission management
|
||||
//
|
||||
|
||||
static $permissionDefaults = [
|
||||
protected static $permissionDefaults = [
|
||||
'code' => null,
|
||||
'label' => null,
|
||||
'comment' => null,
|
||||
|
|
@ -82,8 +82,8 @@ class AuthManager extends RainAuthManager
|
|||
{
|
||||
foreach ($definitions as $code=>$definition) {
|
||||
$permission = (object)array_merge(self::$permissionDefaults, array_merge($definition, [
|
||||
'code'=>$code,
|
||||
'owner'=>$owner
|
||||
'code' => $code,
|
||||
'owner' => $owner
|
||||
]));
|
||||
|
||||
$this->permissions[] = $permission;
|
||||
|
|
|
|||
|
|
@ -83,6 +83,11 @@ class FormField
|
|||
*/
|
||||
public $disabled = false;
|
||||
|
||||
/**
|
||||
* @var bool Specify if the field is hidden. Hiddens fields are not included in postbacks.
|
||||
*/
|
||||
public $hidden = false;
|
||||
|
||||
/**
|
||||
* @var bool Specifies if this field stretch to fit the page height.
|
||||
*/
|
||||
|
|
@ -245,6 +250,7 @@ class FormField
|
|||
|
||||
if (array_key_exists('required', $config)) $this->required = $config['required'];
|
||||
if (array_key_exists('disabled', $config)) $this->disabled = $config['disabled'];
|
||||
if (array_key_exists('hidden', $config)) $this->hidden = $config['hidden'];
|
||||
if (array_key_exists('stretch', $config)) $this->stretch = $config['stretch'];
|
||||
|
||||
if (isset($config['valueFrom'])) $this->valueFrom = $config['valueFrom'];
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ class NavigationManager
|
|||
protected $contextMainMenuItemCode;
|
||||
protected $contextSideMenuItemCode;
|
||||
|
||||
static $mainItemDefaults = [
|
||||
protected static $mainItemDefaults = [
|
||||
'code' => null,
|
||||
'label' => null,
|
||||
'icon' => null,
|
||||
|
|
@ -40,7 +40,7 @@ class NavigationManager
|
|||
'sideMenu' => []
|
||||
];
|
||||
|
||||
static $sideItemDefaults = [
|
||||
protected static $sideItemDefaults = [
|
||||
'code' => null,
|
||||
'label' => null,
|
||||
'icon' => null,
|
||||
|
|
|
|||
|
|
@ -84,9 +84,9 @@ class Users extends Controller
|
|||
/**
|
||||
* Add available permission fields to the User form.
|
||||
*/
|
||||
protected function formExtendFields($host)
|
||||
protected function formExtendFields($form)
|
||||
{
|
||||
if ($host->getContext() == 'myaccount')
|
||||
if ($form->getContext() == 'myaccount')
|
||||
return;
|
||||
|
||||
$permissionFields = [];
|
||||
|
|
@ -116,6 +116,6 @@ class Users extends Controller
|
|||
$permissionFields[$fieldName] = $fieldConfig;
|
||||
}
|
||||
|
||||
$host->addTabFields($permissionFields);
|
||||
$form->addTabFields($permissionFields);
|
||||
}
|
||||
}
|
||||
|
|
@ -163,8 +163,8 @@ return [
|
|||
'select_placeholder' => 'Bitte auswählen',
|
||||
'insert_row' => 'Reihe einfügen',
|
||||
'delete_row' => 'Reihe löschen',
|
||||
'concurrency-file-changed-title' => 'Datei wurde geändert',
|
||||
'concurrency-file-changed-description' => 'Die Datei, welche Sie bearbeiten, wurde auf von einem anderen Benutzer geändert. Sie können die Datei entweder erneut laden, wodurch Ihre Änderungen verloren gehen oder Sie überschreiben die Datei auf dem Server',
|
||||
'concurrency_file_changed_title' => 'Datei wurde geändert',
|
||||
'concurrency_file_changed_description' => 'Die Datei, welche Sie bearbeiten, wurde auf von einem anderen Benutzer geändert. Sie können die Datei entweder erneut laden, wodurch Ihre Änderungen verloren gehen oder Sie überschreiben die Datei auf dem Server',
|
||||
'reload' => 'Erneut laden',
|
||||
],
|
||||
'relation' => [
|
||||
|
|
|
|||
|
|
@ -139,14 +139,18 @@ return [
|
|||
'missing_model' => 'Form behavior used in :class does not have a model defined.',
|
||||
'missing_definition' => "Form behavior does not contain a field for ':field'.",
|
||||
'not_found' => 'Form record with an ID of :id could not be found.',
|
||||
'action_confirm' => "Are you sure?",
|
||||
'create' => 'Create',
|
||||
'create_and_close' => 'Create and close',
|
||||
'creating' => 'Creating...',
|
||||
'creating_name' => 'Creating :name...',
|
||||
'save' => 'Save',
|
||||
'save_and_close' => 'Save and close',
|
||||
'saving' => 'Saving...',
|
||||
'saving_name' => 'Saving :name...',
|
||||
'delete' => 'Delete',
|
||||
'deleting' => 'Deleting...',
|
||||
'deleting_name' => 'Deleting :name...',
|
||||
'undefined_tab' => 'Misc',
|
||||
'field_off' => 'Off',
|
||||
'field_on' => 'On',
|
||||
|
|
@ -154,6 +158,8 @@ return [
|
|||
'apply' => 'Apply',
|
||||
'cancel' => 'Cancel',
|
||||
'close' => 'Close',
|
||||
'confirm' => 'Confirm',
|
||||
'reload' => 'Reload',
|
||||
'ok' => 'OK',
|
||||
'or' => 'or',
|
||||
'confirm_tab_close' => 'Do you really want to close the tab? Unsaved changes will be lost.',
|
||||
|
|
@ -165,16 +171,15 @@ return [
|
|||
'select_placeholder' => 'please select',
|
||||
'insert_row' => 'Insert Row',
|
||||
'delete_row' => 'Delete Row',
|
||||
'concurrency-file-changed-title' => 'File was changed',
|
||||
'concurrency-file-changed-description' => 'The file you\'re editing has been changed on disk by another user. You can either reload the file and lose your changes or override the file on the disk.',
|
||||
'reload' => 'Reload',
|
||||
'concurrency_file_changed_title' => "File was changed",
|
||||
'concurrency_file_changed_description' => "The file you're editing has been changed on disk by another user. You can either reload the file and lose your changes or override the file on the disk.",
|
||||
],
|
||||
'relation' => [
|
||||
'missing_definition' => "Relation behavior does not contain a definition for ':field'.",
|
||||
'missing_model' => "Relation behavior used in :class does not have a model defined.",
|
||||
'invalid_action_single' => "This action cannot be performed on a singular relationship.",
|
||||
'invalid_action_multi' => "This action cannot be performed on a multiple relationship.",
|
||||
'help' => "Click on an item to add",
|
||||
'help' => "Click on an item to add",
|
||||
'related_data' => "Related :name data",
|
||||
'add' => "Add",
|
||||
'add_selected' => "Add selected",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,256 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'field' => [
|
||||
'invalid_type' => 'نوع فیلد :type نا معتبر می باشد.',
|
||||
'options_method_not_exists' => 'کلاس مدل :model باید شامل متد :method() باشد و گزینه های مورد نیاز ":field" را بازگرداند.',
|
||||
],
|
||||
'widget' => [
|
||||
'not_registered' => "کلاس مربوط به ابزارک ':name' به سیستم معرفی نشده است",
|
||||
'not_bound' => "ابزارکی تعریف شده در کلاس با نام ':name' به هیچ کنترلری ارتباط داده نشده است",
|
||||
],
|
||||
'page' => [
|
||||
'untitled' => "بدون عنوان",
|
||||
'access_denied' => [
|
||||
'label' => "شما مجوز دسترسی ندارید",
|
||||
'help' => "شما مجوز لازم براس دسترسی به این صفحه را ندارید.",
|
||||
'cms_link' => "بازگشت به مدیریت",
|
||||
],
|
||||
],
|
||||
'partial' => [
|
||||
'not_found' => "بخشی با نام ':name' یافت نشد.",
|
||||
],
|
||||
'account' => [
|
||||
'sign_out' => 'خروج',
|
||||
'login' => 'ورود',
|
||||
'reset' => 'تنظیم مجدد',
|
||||
'restore' => 'بازگرداندن',
|
||||
'login_placeholder' => 'ورود',
|
||||
'password_placeholder' => 'کلمه عبور',
|
||||
'forgot_password' => "کلمه عبور خود را فراموش کرده اید؟",
|
||||
'enter_email' => "پست الکترونیکی خود را وارد نمایید",
|
||||
'enter_login' => "نام کاربری خود را وارد نمایید",
|
||||
'email_placeholder' => "پست الکترونیکی",
|
||||
'enter_new_password' => "کلمه عبور جدید را وارد نمایید",
|
||||
'password_reset' => "بازگرداندن کلمه عبور",
|
||||
'restore_success' => "یک نامه به پست الکترونیکی شما جهت شروع عملیات بارگرداندن کلمه عبور ارسال شد.",
|
||||
'restore_error' => "کاربری با نام کاریری ':login' یافت نشد.",
|
||||
'reset_success' => "کلمه عبور شما بارگردانی شد و شما هم اکنون میتوانید وارد سیستم شوید.",
|
||||
'reset_error' => "اطلاعات رمز عبور نا معتبر است , لطفا مجددا تلاش نمایید!",
|
||||
'reset_fail' => "عدم توانایی در بازگرداندن کلمه عبور شما!",
|
||||
'apply' => 'اعمال کردن',
|
||||
'cancel' => 'انصراف',
|
||||
'delete' => 'حذف',
|
||||
'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' => 'online',
|
||||
'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' => "تکرار کلمه عبور",
|
||||
'superuser' => "کاربر ممتاز",
|
||||
'superuser_comment' => "اگر میخواهید این شخص به تمام قسمت ها دسترسی داشته باشد این گزینه را فعال نمایید.",
|
||||
'send_invite' => 'دعوت نامه توسط پست الکترونیکی ارسال شود',
|
||||
'send_invite_comment' => 'جهت ارسال دعوت نامه به پست الکترونیکی این شخص این گزینه را فعال نمایید',
|
||||
'delete_confirm' => 'آیا از حذف این مدیر اطمینان دارید؟',
|
||||
'return' => 'بازگشت به لیست مدیران',
|
||||
'allow' => 'اجازه دسترسی',
|
||||
'inherit' => 'ارث بری',
|
||||
'deny' => 'عدم دسترسی',
|
||||
'group' => [
|
||||
'name' => 'گروه',
|
||||
'name_field' => 'نام',
|
||||
'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' از نوع شی تاریخ نمی باشد ، لطفا بررسی نمایید که این ستون در مدل از نوع تاریخ تعریف شده باشد.",
|
||||
'pagination' => 'نمایش :from تا :to از :total مورد',
|
||||
'prev_page' => 'صفحه قبل',
|
||||
'next_page' => 'صفحه بعد',
|
||||
'loading' => 'در حال بارگذاری...',
|
||||
'setup_title' => 'راه اندازی لیست',
|
||||
'setup_help' => 'ستون هایی را که میخواهید مشاهده نمایید را انتخاب نمایید. میتوانید محل قرار گیری ستونها را با جابجا نمودن آنها به .',
|
||||
'records_per_page' => 'مورد در هر صفحه',
|
||||
'records_per_page_help' => 'تعداد موارد نمایش داده شده در هر صفحه را انتخاب نمایید. لطفا توجه نمایید نمایش تعداد زیادی از موارد در هر صفحه از کارایی سیستم میکاهد.'
|
||||
],
|
||||
'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 مشخص نشده است.',
|
||||
'missing_definition' => "فرم مورد نظر شامل فیلدی برای ':field' نمی باشد.",
|
||||
'not_found' => 'فرمی با مشخصه :id یافت نشد.',
|
||||
'create' => 'ایجاد',
|
||||
'create_and_close' => 'ایجاد و خروج',
|
||||
'creating' => 'در حال ایجاد...',
|
||||
'save' => 'ذخیره',
|
||||
'save_and_close' => 'ذخیره و خروج',
|
||||
'saving' => 'در حال ذخیره...',
|
||||
'delete' => 'حذف',
|
||||
'deleting' => 'در حال حذف...',
|
||||
'undefined_tab' => 'متفرقه',
|
||||
'field_off' => 'خاموش',
|
||||
'field_on' => 'روشن',
|
||||
'add' => 'افزودن',
|
||||
'apply' => 'اعمال',
|
||||
'cancel' => 'انصراف',
|
||||
'close' => 'خروج',
|
||||
'ok' => 'تایید',
|
||||
'or' => 'یا',
|
||||
'confirm_tab_close' => 'در صورت بستن این پنجره موارد ذخیره نشده از بین خواهند رفت. آیا از حذف شدن این پنجره اطمینان دارید؟',
|
||||
'behavior_not_ready' => 'فرم مور نظر مقدار دهی اولیه نشده است ، بررسی کنید که متد initForm() در کنترلر فرتخوانی شده باشد.',
|
||||
'preview_no_files_message' => 'فایل ها ارسال نشدند',
|
||||
'select' => 'انتخاب',
|
||||
'select_all' => 'همه',
|
||||
'select_none' => 'هیچ',
|
||||
'select_placeholder' => 'لطفا انتخاب نمایید',
|
||||
'insert_row' => 'افزودن سطر',
|
||||
'delete_row' => 'حذف سطر',
|
||||
'concurrency_file_changed_title' => 'فایل تغییر کرد',
|
||||
'concurrency_file_changed_description' => 'فایلی که شما ویرایش کردید توسط کاربر دیگری تغییر یافته و ذخیره شده است. شما میتوانید فایل را مجددا بارگذاری نمایید و تغییراتی که اعمال کرده اید را از دست بدهید و یا تغییرات اعمال شده توسط آن کاربر را بین برده و فایل را بازنویسی نمایید.',
|
||||
'reload' => 'بارگذاری مجدد',
|
||||
],
|
||||
'relation' => [
|
||||
'missing_definition' => "در ارتباط مورد نظر فیلد ':field' وجود ندارد.",
|
||||
'missing_model' => "مدلی برای ارتباط موجود در :class وجود ندارد.",
|
||||
'invalid_action_single' => "این عمل در ارتباط یک تعرفه نمبتواند اعمال شود.",
|
||||
'invalid_action_multi' => "این عمل در ارتباط چند طرفه نمیتواند اعمال شود.",
|
||||
'help' => "بر روی یک گزینه کلیک کنید تا افزوده شود",
|
||||
'related_data' => "اعلاعات :name مرتبط",
|
||||
'add' => "افزودن",
|
||||
'add_selected' => "افرودن انتخاب شده ها",
|
||||
'add_a_new' => ":name جدید",
|
||||
'cancel' => "انصراف",
|
||||
'add_name' => "افزودن :name",
|
||||
'create' => "ایجاد",
|
||||
'create_name' => "ایجاد :name",
|
||||
'update' => "بروز رسانی",
|
||||
'update_name' => "بروز رسانی :name",
|
||||
'remove' => "حذف",
|
||||
'remove_name' => "حذف :name",
|
||||
'delete' => "حذف",
|
||||
'delete_name' => "حذف :name",
|
||||
'delete_confirm' => "آیا اطمینان دارید؟",
|
||||
],
|
||||
'model' => [
|
||||
'name' => "مدل",
|
||||
'not_found' => "مدل ':class' با مشخصه ی :id یافت نشد",
|
||||
'missing_id' => "مشخصه ای برای مودل مورد نظر یافت نشد.",
|
||||
'missing_relation' => "مدل ':class' شامل تعریفی از ':relation'.",
|
||||
'invalid_class' => "مدل :model استفاده شده در :class معتبر نمی باشد، این مدل باید از کلاس \Model ارث برده باشد.",
|
||||
'mass_assignment_failed' => "Mass assignment failed for Model attribute ':attribute'.",
|
||||
],
|
||||
'warnings' => [
|
||||
'tips' => 'راهنمایی پیکر بندی سیستم',
|
||||
'tips_description' => 'مشکلاتی در پیکربندی سیستم وجود دارد، شما باید تنظیمات زیر را بررسی نمایید.',
|
||||
'permissions' => 'پوشه :name یا یکی از زیر پوشه های آن برای PHP قابل نوشتن نیستند. لطفا تنظیمات این پوشه را تعییر دهید.',
|
||||
'extension' => 'افزونه PHP با نام :name نصب نشده است. لطفن این افزونه را نصب کرده و فعال نمایید.'
|
||||
],
|
||||
'editor' => [
|
||||
'menu_label' => 'تنظیمات ویرایشگر کد',
|
||||
'menu_description' => 'سفارشی سازی ویرایشگر کد، مانند اندازه فونت و رنگ بندی آن.',
|
||||
'font_size' => 'اندازه فونت',
|
||||
'tab_size' => 'اندازه کاراکتر TAB',
|
||||
'use_hard_tabs' => 'فاصله گذاری با استفاده از TAB',
|
||||
'code_folding' => 'بلاک بندی کدها',
|
||||
'word_wrap' => 'چیدمان کلمات',
|
||||
'highlight_active_line' => 'مشخص نودن خط فعال',
|
||||
'show_invisibles' => 'نمایش کاراکتر های مخفی',
|
||||
'show_gutter' => 'نمایش نشانگر',
|
||||
'theme' => 'رنگ بندی',
|
||||
],
|
||||
'tooltips' => [
|
||||
'preview_website' => 'پیش نماسش وب سایت'
|
||||
],
|
||||
'mysettings' => [
|
||||
'menu_label' => 'تنظیمات من',
|
||||
'menu_description' => 'تنظیمات مربوط به حساب کاربری شما',
|
||||
],
|
||||
'myaccount' => [
|
||||
'menu_label' => 'حساب کاربری من',
|
||||
'menu_description' => 'به روز رسانی اطلاعات حساب کار بری شما مانند نام و کلمه عبور و ... .',
|
||||
'menu_keywords' => 'ورود امن'
|
||||
],
|
||||
'backend_preferences' => [
|
||||
'menu_label' => 'تنظیمات مدیریت',
|
||||
'menu_description' => 'تنظیمات مربوط به زبان مربوط به قسمت مدیریت.',
|
||||
'locale' => 'زبان',
|
||||
'locale_comment' => 'زبان مورد نظر خود را انتخاب نمایید.',
|
||||
],
|
||||
'access_log' => [
|
||||
'hint' => 'این لیست نشاندهنده ورود کاربران مدیر به سیستم می باشد. موارد برای مدت :days روز نگهداری می شوند.',
|
||||
'menu_label' => 'ثبت دسترسی ها',
|
||||
'menu_description' => 'نمایش لیست ورود موفقیت آمیز کاربران مدیر.',
|
||||
'created_at' => 'زمان و تاریخ',
|
||||
'login' => 'ورود',
|
||||
'ip_address' => 'آدرس آی پی',
|
||||
'first_name' => 'نام',
|
||||
'last_name' => 'نام خوانوادگی',
|
||||
'email' => 'پست الکترونیکی',
|
||||
],
|
||||
'filter' => [
|
||||
'all' => 'همه'
|
||||
],
|
||||
'layout' => [
|
||||
'direction' => 'rtl'
|
||||
]
|
||||
];
|
||||
|
|
@ -49,6 +49,7 @@ class BackendPreferences extends Model
|
|||
'it' => [Lang::get('system::lang.locale.it'), 'flag-it'],
|
||||
'ro' => [Lang::get('system::lang.locale.ro'), 'flag-ro'],
|
||||
'pt-br' => [Lang::get('system::lang.locale.pt-br'), 'flag-br'],
|
||||
'fa' => [Lang::get('system::lang.locale.fa'), 'flag-ir'],
|
||||
];
|
||||
|
||||
// Sort locales alphabetically
|
||||
|
|
|
|||
|
|
@ -43,7 +43,10 @@ class User extends UserBase
|
|||
*/
|
||||
protected $purgeable = ['password_confirmation', 'send_invite'];
|
||||
|
||||
protected static $loginAttribute = 'login';
|
||||
/**
|
||||
* @var string Login attribute
|
||||
*/
|
||||
public static $loginAttribute = 'login';
|
||||
|
||||
/**
|
||||
* @return string Returns the user's full name.
|
||||
|
|
|
|||
|
|
@ -10,8 +10,9 @@ columns:
|
|||
login:
|
||||
label: backend::lang.access_log.login
|
||||
relation: user
|
||||
select: @login
|
||||
select: login
|
||||
searchable: yes
|
||||
sortable: false
|
||||
|
||||
ip_address:
|
||||
label: backend::lang.access_log.ip_address
|
||||
|
|
@ -20,17 +21,20 @@ columns:
|
|||
first_name:
|
||||
label: backend::lang.access_log.first_name
|
||||
relation: user
|
||||
select: @first_name
|
||||
select: first_name
|
||||
searchable: yes
|
||||
sortable: false
|
||||
|
||||
last_name:
|
||||
label: backend::lang.access_log.last_name
|
||||
relation: user
|
||||
select: @last_name
|
||||
select: last_name
|
||||
searchable: yes
|
||||
sortable: false
|
||||
|
||||
email:
|
||||
label: backend::lang.access_log.email
|
||||
relation: user
|
||||
select: @email
|
||||
searchable: yes
|
||||
select: email
|
||||
searchable: yes
|
||||
sortable: false
|
||||
|
|
@ -22,4 +22,5 @@ columns:
|
|||
groups:
|
||||
label: backend::lang.user.groups
|
||||
relation: groups
|
||||
select: @name
|
||||
select: name
|
||||
sortable: false
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php namespace Backend\Traits;
|
||||
|
||||
use Request;
|
||||
use System\Classes\SystemException;
|
||||
use System\Classes\ApplicationException;
|
||||
use Request;
|
||||
|
||||
/**
|
||||
* Inspectable Container Trait
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@
|
|||
use App;
|
||||
use Str;
|
||||
use Lang;
|
||||
use Model;
|
||||
use Form as FormHelper;
|
||||
use Input;
|
||||
use Event;
|
||||
|
|
@ -12,6 +11,7 @@ use Backend\Classes\WidgetBase;
|
|||
use Backend\Classes\WidgetManager;
|
||||
use System\Classes\ApplicationException;
|
||||
use Backend\Classes\FormWidgetBase;
|
||||
use October\Rain\Database\Model;
|
||||
|
||||
/**
|
||||
* Form Widget
|
||||
|
|
@ -218,7 +218,7 @@ class Form extends WidgetBase
|
|||
}
|
||||
|
||||
/**
|
||||
* Prepares the list data
|
||||
* Prepares the form data
|
||||
*/
|
||||
protected function prepareVars()
|
||||
{
|
||||
|
|
@ -693,12 +693,10 @@ class Form extends WidgetBase
|
|||
$data = [];
|
||||
|
||||
/*
|
||||
* Boolean fields (checkbox, switch) won't be present value FALSE
|
||||
* Number fields should be converted to integers
|
||||
*/
|
||||
foreach ($this->fields as $field) {
|
||||
|
||||
if (!in_array($field->type, ['switch', 'checkbox', 'number']))
|
||||
if ($field->type != 'number')
|
||||
continue;
|
||||
|
||||
/*
|
||||
|
|
@ -706,11 +704,10 @@ class Form extends WidgetBase
|
|||
*/
|
||||
$parts = Str::evalHtmlArray($field->fieldName);
|
||||
$dotted = implode('.', $parts);
|
||||
$value = array_get($data, $dotted, 0);
|
||||
if ($field->type == 'number') {
|
||||
if (($value = array_get($data, $dotted)) !== null) {
|
||||
$value = !strlen(trim($value)) ? null : (float) $value;
|
||||
array_set($data, $dotted, $value);
|
||||
}
|
||||
array_set($data, $dotted, $value);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -1,5 +1,10 @@
|
|||
<!-- Checkbox -->
|
||||
<div class="checkbox custom-checkbox" tabindex="0">
|
||||
<input
|
||||
type="hidden"
|
||||
name="<?= $field->getName() ?>"
|
||||
value="0"
|
||||
<?= $this->previewMode ? 'disabled="disabled"' : '' ?>>
|
||||
<input
|
||||
type="checkbox"
|
||||
id="<?= $field->getId() ?>"
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@
|
|||
<?= $value == $field->value ? 'selected="selected"' : '' ?>
|
||||
<?php if (isset($option[1])): ?>data-<?=strpos($option[1],'.')?'image':'icon'?>="<?= $option[1] ?>"<?php endif ?>
|
||||
value="<?= $value ?>">
|
||||
<?= e($option[0]) ?>
|
||||
<?= e(trans($option[0])) ?>
|
||||
</option>
|
||||
<?php endforeach ?>
|
||||
</select>
|
||||
|
|
|
|||
|
|
@ -5,7 +5,14 @@
|
|||
<p class="help-block"><?= e(trans($field->comment)) ?></p>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
<label class="custom-switch" onclick="">
|
||||
|
||||
<input
|
||||
type="hidden"
|
||||
name="<?= $field->getName() ?>"
|
||||
value="0"
|
||||
<?= $this->previewMode ? 'disabled="disabled"' : '' ?>>
|
||||
|
||||
<label class="custom-switch">
|
||||
<input
|
||||
type="checkbox"
|
||||
id="<?= $field->getId() ?>"
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
<?php foreach ($fields as $field): ?>
|
||||
<?php if ($field->hidden) continue; ?>
|
||||
<?= $this->makePartial('field-container', ['field' => $field]) ?>
|
||||
<?php endforeach ?>
|
||||
|
|
|
|||
|
|
@ -45,10 +45,17 @@ class ComponentHelpers
|
|||
/*
|
||||
* Translate human values
|
||||
*/
|
||||
$translate = ['title', 'description'];
|
||||
$translate = ['title', 'description', 'options'];
|
||||
foreach ($property as $name => $value) {
|
||||
if (!in_array($name, $translate)) continue;
|
||||
$property[$name] = Lang::get($value);
|
||||
if (!in_array($name, $translate))
|
||||
continue;
|
||||
|
||||
if (is_array($value)) {
|
||||
array_walk($property[$name], function(&$_value, $key) { $_value = Lang::get($_value); });
|
||||
}
|
||||
else {
|
||||
$property[$name] = Lang::get($value);
|
||||
}
|
||||
}
|
||||
|
||||
$result[] = $property;
|
||||
|
|
|
|||
|
|
@ -37,8 +37,8 @@ class Content extends CmsCompoundObject
|
|||
*/
|
||||
public static function load($theme, $fileName)
|
||||
{
|
||||
$obj = parent::load($theme, $fileName);
|
||||
$obj->parsedMarkup = $obj->parseMarkup();
|
||||
if ($obj = parent::load($theme, $fileName))
|
||||
$obj->parsedMarkup = $obj->parseMarkup();
|
||||
|
||||
return $obj;
|
||||
}
|
||||
|
|
@ -51,9 +51,9 @@ class Content extends CmsCompoundObject
|
|||
{
|
||||
parent::initFromCache($cached);
|
||||
|
||||
$this->parsedMarkup = array_key_exists('parsed-markup', $cached) ?
|
||||
$cached['parsed-markup'] :
|
||||
$this->parseMarkup($this->markup);
|
||||
$this->parsedMarkup = array_key_exists('parsed-markup', $cached)
|
||||
? $cached['parsed-markup']
|
||||
: $this->parseMarkup($this->markup);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -32,10 +32,19 @@ class Theme
|
|||
*/
|
||||
protected $configCache = null;
|
||||
|
||||
/**
|
||||
* @var mixed Active theme cache in memory
|
||||
*/
|
||||
protected static $activeThemeCache = false;
|
||||
|
||||
/**
|
||||
* @var mixed Edit theme cache in memory
|
||||
*/
|
||||
protected static $editThemeCache = false;
|
||||
|
||||
const ACTIVE_KEY = 'cms::theme.active';
|
||||
const EDIT_KEY = 'cms::theme.edit';
|
||||
|
||||
/**
|
||||
* Loads the theme.
|
||||
*/
|
||||
|
|
@ -102,12 +111,11 @@ class Theme
|
|||
if (self::$activeThemeCache !== false)
|
||||
return self::$activeThemeCache;
|
||||
|
||||
$paramKey = 'cms::theme.active';
|
||||
$activeTheme = Config::get('cms.activeTheme');
|
||||
|
||||
if (DbDongle::hasDatabase()) {
|
||||
$dbResult = Parameters::findRecord($paramKey)
|
||||
->remember(1440, $paramKey)
|
||||
$dbResult = Parameters::findRecord(self::ACTIVE_KEY)
|
||||
->remember(1440, self::ACTIVE_KEY)
|
||||
->pluck('value')
|
||||
;
|
||||
|
||||
|
|
@ -137,12 +145,8 @@ class Theme
|
|||
*/
|
||||
public static function setActiveTheme($code)
|
||||
{
|
||||
self::$activeThemeCache = false;
|
||||
self::$editThemeCache = false;
|
||||
|
||||
$paramKey = 'cms::theme.active';
|
||||
Parameters::set($paramKey, $code);
|
||||
Cache::forget($paramKey);
|
||||
self::resetCache();
|
||||
Parameters::set(self::ACTIVE_KEY, $code);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -247,4 +251,16 @@ class Theme
|
|||
|
||||
return URL::asset('themes/'.$this->getDirName().$previewPath);
|
||||
}
|
||||
|
||||
/**
|
||||
* Resets any memory or cache involved with the active or edit theme.
|
||||
* @return void
|
||||
*/
|
||||
public static function resetCache()
|
||||
{
|
||||
self::$activeThemeCache = false;
|
||||
self::$editThemeCache = false;
|
||||
Cache::forget(self::ACTIVE_KEY);
|
||||
Cache::forget(self::EDIT_KEY);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -44,12 +44,16 @@ class Components extends FormWidgetBase
|
|||
$componentObj->alias = $alias;
|
||||
$componentObj->pluginIcon = 'icon-puzzle-piece';
|
||||
|
||||
/*
|
||||
* Look up the plugin hosting this component
|
||||
*/
|
||||
$plugin = $manager->findComponentPlugin($componentObj);
|
||||
if ($plugin) {
|
||||
$pluginDetails = $plugin->pluginDetails();
|
||||
if (isset($pluginDetails['icon']))
|
||||
$componentObj->pluginIcon = $pluginDetails['icon'];
|
||||
}
|
||||
|
||||
}
|
||||
catch (Exception $ex) {
|
||||
$componentObj = new UnknownComponent(null, $properties, $ex->getMessage());
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<div class="layout-cell <?= e($component->componentCssClass) ?> <?= $component->isHidden ? 'hidden' : null ?>">
|
||||
<div
|
||||
class="<?= 'oc-'.$component->pluginIcon ?> layout-relative"
|
||||
<div
|
||||
class="<?= 'oc-'.$component->pluginIcon ?> layout-relative"
|
||||
<?php if ($component->inspectorEnabled): ?>data-inspectable<?php endif ?>
|
||||
data-inspector-title="<?= $name = e($this->getComponentName($component)) ?>"
|
||||
data-inspector-description="<?= $description = e($this->getComponentDescription($component)) ?>"
|
||||
|
|
@ -9,9 +9,9 @@
|
|||
<span class="name"><?= $name ?></span>
|
||||
<span class="description"><?= $description ?></span>
|
||||
<span class="alias oc-icon-code"><?= e($component->alias) ?></span>
|
||||
<input type="hidden" name="component_properties[]" data-inspector-values value="<?= e($this->getComponentPropertyValues($component)) ?>"/>
|
||||
<input type="hidden" name="component_names[]" value="<?= e($component->name) ?>"></input>
|
||||
<input type="hidden" name="component_aliases[]" value="<?= e($component->alias) ?>"></input>
|
||||
<input type="hidden" name="component_properties[]" data-inspector-values value="<?= e($this->getComponentPropertyValues($component)) ?>" />
|
||||
<input type="hidden" name="component_names[]" value="<?= e($component->name) ?>" />
|
||||
<input type="hidden" name="component_aliases[]" value="<?= e($component->alias) ?>" />
|
||||
<a href="#" class="remove">×</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -1,18 +1,17 @@
|
|||
<div class="control-componentlist">
|
||||
<?php
|
||||
foreach ($components as $component) {
|
||||
if ($component->isHidden)
|
||||
echo $this->makePartial('component', ['component'=>$component]);
|
||||
}
|
||||
?>
|
||||
<?php foreach ($components as $component): ?>
|
||||
<?php if ($component->isHidden): ?>
|
||||
<?= $this->makePartial('component', ['component' => $component]) ?>
|
||||
<?php endif ?>
|
||||
<?php endforeach ?>
|
||||
|
||||
<div class="components" data-control="toolbar">
|
||||
<div class="layout">
|
||||
<?php
|
||||
foreach ($components as $component) {
|
||||
if (!$component->isHidden)
|
||||
echo $this->makePartial('component', ['component'=>$component]);
|
||||
}
|
||||
?>
|
||||
<?php foreach ($components as $component): ?>
|
||||
<?php if (!$component->isHidden): ?>
|
||||
<?= $this->makePartial('component', ['component' => $component]) ?>
|
||||
<?php endif ?>
|
||||
<?php endforeach ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,173 @@
|
|||
<?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' => [
|
||||
'active' => [
|
||||
'not_set' => "قالب فعال مشخص نشده است.",
|
||||
'not_found' => "قالب فعال یافت نشد.",
|
||||
],
|
||||
'edit' => [
|
||||
'not_set' => "قالب ویرایش مشخص نشده ایت.",
|
||||
'not_found' => "قالب ویرایش یافت نشد.",
|
||||
'not_match' => "شی مورد مظر شما در قالبی که ویرایش می کنید یافت نشد. لطفا صفحه را مجددا بارگذاری نمایید."
|
||||
],
|
||||
'settings_menu' => 'قالب نمایشی',
|
||||
'settings_menu_description' => 'پیش نمایش قالب های موجود و انتخاب قالب فعال.',
|
||||
'find_more_themes' => 'دریافت قالب های بیشتر.',
|
||||
'activate_button' => 'فعال کردن',
|
||||
'active_button' => 'فعال',
|
||||
],
|
||||
'page' => [
|
||||
'not_found' => [
|
||||
'label' => "صفحه مورد نظر یافت نشد",
|
||||
'help' => "صفحه مورد نظر یافت نشد.",
|
||||
],
|
||||
'custom_error' => [
|
||||
'label' => "خطای صفحه",
|
||||
'help' => "متاسفانه مشکلی در نمایش صفحه مورد نظر به وجود آمده است.",
|
||||
],
|
||||
'menu_label' => 'صفخات',
|
||||
'no_list_records' => 'صفحه ای یافت نشد',
|
||||
'new' => 'New page',
|
||||
'invalid_url' => 'قالب آدرس صحیح نمی باشد. آدرس باید با اسلش شروع شده و می تواند شامل اعداد، خروف لاتین و این کاراکتر ها باشد: ._-[]:?|/+*',
|
||||
'delete_confirm_multiple' => 'آیا از حذف صفحات انتخاب شده اطمینان دارید؟',
|
||||
'delete_confirm_single' => 'آیا از حذف این صفحه اطمینان دارید؟',
|
||||
'no_layout' => '-- بدون طرح بندی --'
|
||||
],
|
||||
'layout' => [
|
||||
'not_found' => "طرح بندی ی ':name' یافت نشد",
|
||||
'menu_label' => 'طرح بندی ها',
|
||||
'no_list_records' => 'طرحبندی یافت نشد',
|
||||
'new' => 'طرح بندی جدید',
|
||||
'delete_confirm_multiple' => 'آیا از حذف طرح بندی های انتخاب شده اطمینان دارید؟',
|
||||
'delete_confirm_single' => 'آیا از حذف این طرحبندی اطمینان دارید؟'
|
||||
],
|
||||
'partial' => [
|
||||
'invalid_name' => "نام بخش نا معتبر است: :name.",
|
||||
'not_found' => "بخشی با نام ':name' یافت نشد.",
|
||||
'menu_label' => 'بخش ها',
|
||||
'no_list_records' => 'بخشی وجود ندارد',
|
||||
'delete_confirm_multiple' => 'آیا از حذف بخش های انتخاب شده اطمینان دارید؟',
|
||||
'delete_confirm_single' => 'آیا از حذف این بخش بندی اطمینان دارید؟',
|
||||
'new' => 'بخش بندی جدید'
|
||||
],
|
||||
'content' => [
|
||||
'not_found' => "فایل محتوای ':name' یافت نشد.",
|
||||
'menu_label' => 'محتوا',
|
||||
'no_list_records' => 'هیچ فایل محتوایی وجود ندارد',
|
||||
'delete_confirm_multiple' => 'آیا از خذف فایل ها و یا پوشه های انتخاب شده اطمینان دارید؟',
|
||||
'delete_confirm_single' => 'آیا از حذف این فایل اطمینان دارید؟',
|
||||
'new' => 'فایل محتوی جدید'
|
||||
],
|
||||
'ajax_handler' => [
|
||||
'invalid_name' => "نام کنترل کننده آژاکس نا معتبر است: :name.",
|
||||
'not_found' => "کنترل کننده آژاکس ':name' یافت نشد.",
|
||||
],
|
||||
'combiner' => [
|
||||
'not_found' => "فایل ترکیب کننده ':name' یافت نشد.",
|
||||
],
|
||||
'cms' => [
|
||||
'menu_label' => "مدیریت محتوی"
|
||||
],
|
||||
'sidebar' => [
|
||||
'add' => 'افزودن',
|
||||
'search' => 'جستجو...'
|
||||
],
|
||||
'editor' => [
|
||||
'settings' => 'تنظیمات',
|
||||
'title' => 'عنوان',
|
||||
'new_title' => 'عنوان صفحه جدید',
|
||||
'url' => 'آدرس',
|
||||
'filename' => 'تام فایل',
|
||||
'layout' => 'طرح بندی',
|
||||
'description' => 'توضیحات',
|
||||
'preview' => 'پیش نمایش',
|
||||
'meta' => 'متا',
|
||||
'meta_title' => 'عنوان متا',
|
||||
'meta_description' => 'توضیحات متا',
|
||||
'markup' => 'نشانه گذاری',
|
||||
'code' => 'کد',
|
||||
'content' => 'محتوی',
|
||||
'hidden' => 'مخفی',
|
||||
'hidden_comment' => 'صفحات مخفی فقط برای کاربران وارد شده به سیستم نمایش داده می شود.',
|
||||
'enter_fullscreen' => 'حالت تمام صفحه',
|
||||
'exit_fullscreen' => 'خروج از حالت تمام صفحه'
|
||||
],
|
||||
'asset' => [
|
||||
'menu_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' => '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' => [
|
||||
'manage_content' => 'مدیریت محتوی',
|
||||
'manage_assets' => 'مدیریت فایلها',
|
||||
'manage_pages' => 'مدیریت صفحات',
|
||||
'manage_layouts' => 'مدیریت طرح بندی ها',
|
||||
'manage_partials' => 'مدیریت بخش ها',
|
||||
'manage_themes' => 'مدیریت قالب ها'
|
||||
]
|
||||
];
|
||||
|
|
@ -7,7 +7,7 @@ use Cms\Classes\Controller;
|
|||
use Cms\Classes\ComponentBase;
|
||||
use Illuminate\Pagination\Paginator;
|
||||
use Illuminate\Support\Collection;
|
||||
use Model;
|
||||
use October\Rain\Database\Model;
|
||||
|
||||
class DebugExtension extends Twig_Extension
|
||||
{
|
||||
|
|
|
|||
|
|
@ -60,6 +60,15 @@ class ServiceProvider extends ModuleServiceProvider
|
|||
App::singleton('backend.menu', function() { return \Backend\Classes\NavigationManager::instance(); });
|
||||
App::singleton('backend.auth', function() { return \Backend\Classes\AuthManager::instance(); });
|
||||
|
||||
/*
|
||||
* Check for CLI or system/updates route and disable any plugin initialization
|
||||
* @todo This should be moved to middleware
|
||||
*/
|
||||
$requestPath = \October\Rain\Router\Helper::normalizeUrl(\Request::path());
|
||||
$systemPath = \October\Rain\Router\Helper::normalizeUrl(Config::get('cms.backendUri') . '/system/updates');
|
||||
if (App::runningInConsole() || stripos($requestPath, $systemPath) === 0)
|
||||
PluginManager::$noInit = true;
|
||||
|
||||
/*
|
||||
* Register all plugins
|
||||
*/
|
||||
|
|
@ -204,6 +213,8 @@ class ServiceProvider extends ModuleServiceProvider
|
|||
'snake' => ['Str', 'snake'],
|
||||
'camel' => ['Str', 'camel'],
|
||||
'studly' => ['Str', 'studly'],
|
||||
'trans' => ['Lang', 'get'],
|
||||
'transchoice' => ['Lang', 'choice'],
|
||||
'md' => ['October\Rain\Support\Markdown', 'parse'],
|
||||
]);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -56,6 +56,11 @@ class PluginManager
|
|||
*/
|
||||
protected $disabledPlugins = [];
|
||||
|
||||
/**
|
||||
* @var boolean Prevent all plugins from registering or booting
|
||||
*/
|
||||
public static $noInit = false;
|
||||
|
||||
/**
|
||||
* Initializes the plugin manager
|
||||
*/
|
||||
|
|
@ -111,7 +116,7 @@ class PluginManager
|
|||
*/
|
||||
public function registerAll()
|
||||
{
|
||||
if ($this->registered)
|
||||
if ($this->registered || self::$noInit)
|
||||
return;
|
||||
|
||||
foreach ($this->plugins as $pluginId => $plugin) {
|
||||
|
|
@ -166,7 +171,7 @@ class PluginManager
|
|||
*/
|
||||
public function bootAll()
|
||||
{
|
||||
if ($this->booted)
|
||||
if ($this->booted || self::$noInit)
|
||||
return;
|
||||
|
||||
foreach ($this->plugins as $plugin) {
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@
|
|||
type="submit"
|
||||
class="btn btn-primary"
|
||||
data-request="onDisablePlugins"
|
||||
data-request-confirm="<?= e(trans('backend::lang.form.plugins.disable_confirm')) ?>"
|
||||
data-request-confirm="<?= e(trans('backend::lang.plugins.disable_confirm')) ?>"
|
||||
data-stripe-load-indicator>
|
||||
<?= e(trans('backend::lang.form.apply')) ?>
|
||||
</button>
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ return [
|
|||
'it' => 'Italian',
|
||||
'ro' => 'Romana',
|
||||
'pt-br' => 'Brazilian Portuguese',
|
||||
'fa' => 'Persian',
|
||||
],
|
||||
'directory' => [
|
||||
'create_fail' => "Konnte Verzeichnis: :name nicht erstellen",
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ return [
|
|||
'it' => 'Italian',
|
||||
'ro' => 'Romana',
|
||||
'pt-br' => 'Brazilian Portuguese',
|
||||
'fa' => 'Persian',
|
||||
],
|
||||
'directory' => [
|
||||
'create_fail' => "Cannot create directory: :name",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,237 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'app' => [
|
||||
'name' => 'مدیریت محتوی اکتبر',
|
||||
'motto' => 'بازگشت به گذشته',
|
||||
],
|
||||
'locale' => [
|
||||
'en' => 'انگلیسی',
|
||||
'nl' => 'هلندی',
|
||||
'ja' => 'ژاپنی',
|
||||
'se' => 'سوئدی',
|
||||
'tr' => 'ترکی',
|
||||
'de' => 'آلمانی',
|
||||
'ru' => 'روسی',
|
||||
'fr' => 'فرانسوی',
|
||||
'it' => 'ایتالیایی',
|
||||
'ro' => 'رومانیایی',
|
||||
'pt-br' => 'پرتغالی برزیل',
|
||||
'fa' => 'فارسی',
|
||||
],
|
||||
'directory' => [
|
||||
'create_fail' => "مشکلی در ایجاد پوشه ی :name به وجود آمده است",
|
||||
],
|
||||
'file' => [
|
||||
'create_fail' => "مشکلی در ایجاد فایل :name به وجود آمده است",
|
||||
],
|
||||
'system' => [
|
||||
'name' => 'سیستم',
|
||||
'menu_label' => 'سیستم',
|
||||
'categories' => [
|
||||
'cms' => 'مدیریت محتوی',
|
||||
'misc' => 'متفرقه',
|
||||
'logs' => 'وقایع',
|
||||
'mail' => 'پست الکترونیکی',
|
||||
'shop' => 'فروشگاه',
|
||||
'team' => 'تیم',
|
||||
'users' => 'کاربران',
|
||||
'system' => 'سیستم',
|
||||
'social' => 'شبکه اجتماعی',
|
||||
'events' => 'رویداد ها',
|
||||
'customers' => 'مشتریان',
|
||||
'my_settings' => 'تنظیمات من',
|
||||
],
|
||||
],
|
||||
'plugin' => [
|
||||
'unnamed' => 'افزونه بدون نام',
|
||||
'name' => [
|
||||
'label' => 'نام افزونه',
|
||||
'help' => 'افزونه را با نام یکتایی نام گذاری کنید. برای مثال: RainLab.Blog',
|
||||
],
|
||||
],
|
||||
'plugins' => [
|
||||
'manage' => 'مدیریت افزونه ها',
|
||||
'enable_or_disable' => 'فعال یا غیر فعال کردن',
|
||||
'enable_or_disable_title' => 'فعال یا غیر فعال کردن افزونه ها',
|
||||
'remove' => 'خذف',
|
||||
'refresh' => 'تازه کردن',
|
||||
'disabled_label' => 'غیر فعال',
|
||||
'disabled_help' => 'افزونه های غیر فعال توسط برنامه نادیده گرفته می شوند.',
|
||||
'selected_amount' => 'افزونه های انتخاب شده: :amount',
|
||||
'remove_confirm' => 'آیا اطمینان دارید؟',
|
||||
'remove_success' => "افزونه های با موفقیت از سیستم حذف شدند.",
|
||||
'refresh_confirm' => 'آیا اطمینان دارید؟',
|
||||
'refresh_success' => "افزونه ها با موفقیت بارگذاری مجدد شدند.",
|
||||
'disable_confirm' => 'آیا اطمینان دارید؟',
|
||||
'disable_success' => "افزونه ها با موفقیت غیر فعال شدند.",
|
||||
'enable_success' => "افرونه ها با موفقیت فعال شدند.",
|
||||
'unknown_plugin' => "افرونه ها با موفقیت پاک شدند.",
|
||||
],
|
||||
'project' => [
|
||||
'name' => 'پروژه',
|
||||
'owner_label' => 'صاحب امتیاز',
|
||||
'attach' => 'افرودن به پروژه',
|
||||
'detach' => 'حذف از پروژه',
|
||||
'none' => 'هیچ',
|
||||
'id' => [
|
||||
'label' => 'مشخصه ی پروژه',
|
||||
'help' => 'مشخصه ی پروژه ی خود را چگونه بیابید',
|
||||
'missing' => 'لطفا مشخصه ی پروژهی خود را وارد نمایید.',
|
||||
],
|
||||
'detach_confirm' => 'آیا از حذف این پروژه اطمینان دارید؟',
|
||||
'unbind_success' => 'پروژه با موفقیت پاک شد.',
|
||||
],
|
||||
'settings' => [
|
||||
'menu_label' => 'تنظیمات',
|
||||
'missing_model' => 'صفحه تنظیمات شامل یک مدل تعریف نشده می باشد.',
|
||||
'update_success' => 'تنظیمات برای :name با موفقیت تغییر یافتند.',
|
||||
'return' => 'بازگشت به تنظیمات سیستم',
|
||||
'search' => 'جستجو'
|
||||
],
|
||||
'mail' => [
|
||||
'menu_label' => 'تنظیمات پست الکترونیکی',
|
||||
'menu_description' => 'مدیریت تنظیمات پست الکترونیکی.',
|
||||
'general' => 'عمومی',
|
||||
'method' => 'روش ارسال',
|
||||
'sender_name' => 'نام ارسال کننده',
|
||||
'sender_email' => 'پست الکترونیکی ارسال کننده',
|
||||
'smtp' => 'SMTP',
|
||||
'smtp_address' => 'آدرس SMTP',
|
||||
'smtp_authorization' => 'مجوز اتصال به SMTP مورد نیاز است',
|
||||
'smtp_authorization_comment' => 'این گزیتع را جهت اتصال به سرور SMTP در صورت نیاز فعال نمایید.',
|
||||
'smtp_username' => 'نام کاربری',
|
||||
'smtp_password' => 'کلمه عبور',
|
||||
'smtp_port' => 'درگاه SMTP',
|
||||
'smtp_ssl' => 'اتصال امن SSL مورد نیاز است',
|
||||
'sendmail' => 'Sendmail',
|
||||
'sendmail_path' => 'محل Sendmail',
|
||||
'sendmail_path_comment' => 'لطفا محل ذخیره نرم افزار sendmail را مشخص نمایید.',
|
||||
],
|
||||
'mail_templates' => [
|
||||
'menu_label' => 'قالب های نامه الکترونیکی',
|
||||
'menu_description' => 'مدیریت و تغییر قالب های نامه الکترونیکی که برای کاربران و مدیران ارسال می شود، مدیریت طرح بندی نامه الکترونیکی.',
|
||||
'new_template' => 'قالب جدید',
|
||||
'new_layout' => 'طرح بندی ی جدید',
|
||||
'template' => 'قالب',
|
||||
'templates' => 'قالب ها',
|
||||
'menu_layouts_label' => 'طرح بندی نامه الکترونیکی',
|
||||
'layout' => 'طرح بندی',
|
||||
'layouts' => 'طرح بندی ها',
|
||||
'name' => 'نام',
|
||||
'name_comment' => 'نام یکتای مشخص کننده ی این قالی',
|
||||
'code' => 'کد',
|
||||
'code_comment' => 'کد یکتای مشخص کننده ی این قالب',
|
||||
'subject' => 'موضوع',
|
||||
'subject_comment' => 'موجوع نامه الکترونیکی',
|
||||
'description' => 'توضیحات',
|
||||
'content_html' => 'اچ تی ام ال',
|
||||
'content_css' => 'شیوه نامه',
|
||||
'content_text' => 'متن معمولی',
|
||||
'test_send' => 'ارسال پیغام آزمایشی',
|
||||
'test_success' => 'پیغان آزمایشی ارسال شد.',
|
||||
'return' => 'بازگشت به لیست قالب ها'
|
||||
],
|
||||
'install' => [
|
||||
'project_label' => 'ضمیمه کردن به نرم افزار',
|
||||
'plugin_label' => 'نصب افزونه',
|
||||
'missing_plugin_name' => 'لطفان نام افزونه را جهت نصب وارد نمایید.',
|
||||
'install_completing' => 'مرحله ی پایانی عملیات نصب',
|
||||
'install_success' => 'افزونه با موفقیت نصب شد.',
|
||||
],
|
||||
'updates' => [
|
||||
'title' => 'مدیریت بروز رسانی',
|
||||
'name' => 'بروز رسانی نرم افزار',
|
||||
'menu_label' => 'بروز رسانی ها',
|
||||
'menu_description' => 'به روز رسانی ی سیستم، مدیریت افزونه ها و قالب های نصب شده.',
|
||||
'check_label' => 'بررسی بروز رسانی',
|
||||
'retry_label' => 'تلاش مجدد',
|
||||
'plugin_name' => 'نام',
|
||||
'plugin_description' => 'توضیحات',
|
||||
'plugin_version' => 'نسخه',
|
||||
'plugin_author' => 'تولید کننده',
|
||||
'core_build' => 'نسخه ی کنونی',
|
||||
'core_build_old' => 'نسخه ی کنونی :build',
|
||||
'core_build_new' => 'نسخه ی :build',
|
||||
'core_build_new_help' => 'آخرین نسخه موجود است.',
|
||||
'core_downloading' => 'دریافت فایل های نرم افزار',
|
||||
'core_extracting' => 'گشودن فایل های نرم افزار',
|
||||
'plugin_downloading' => 'دریافت افزونه: :name',
|
||||
'plugin_extracting' => 'گشودن افزونه: :name',
|
||||
'plugin_version_none' => 'افزونه ی جدید',
|
||||
'plugin_version_old' => 'نسخه کنونی:version',
|
||||
'plugin_version_new' => 'مسخه:version',
|
||||
'theme_label' => 'قالب',
|
||||
'theme_new_install' => 'قالب جدید نصب شد.',
|
||||
'theme_downloading' => 'دریافت قالب: :name',
|
||||
'theme_extracting' => 'گشودن قالب: :name',
|
||||
'update_label' => 'بروز رسانی نرم افزار',
|
||||
'update_completing' => 'اعمال بروز رسانی',
|
||||
'update_loading' => 'بارگزاری بروز رسانی های موجود...',
|
||||
'update_success' => 'بروز رسانی با موفقیت انجام شد..',
|
||||
'update_failed_label' => 'بروز رسانی موفق نبود',
|
||||
'force_label' => 'اصرار در بروز رسانی',
|
||||
'found' => [
|
||||
'label' => 'بروز رسانی جدیدی یافت شده است!',
|
||||
'help' => 'بر روی بروز رسانی نرم افزار جهت شروع عملیات بروز رسانی کلیک کنید.',
|
||||
],
|
||||
'none' => [
|
||||
'label' => '0 به روز رسانی',
|
||||
'help' => 'هیچ به روز رسانی یافت نشد.',
|
||||
],
|
||||
],
|
||||
'server' => [
|
||||
'connect_error' => 'خطا در برقراری ارتباط با سرور.',
|
||||
'response_not_found' => 'سرور به روز رسانی یافت نشد.',
|
||||
'response_invalid' => 'پاسخ نا معتبر از سوی سرور.',
|
||||
'response_empty' => 'پاسخ خالی از سوی سرور.',
|
||||
'file_error' => 'خطا در ارسال یا دریافت بسته به سرور.',
|
||||
'file_corrupt' => 'فایل دریافت شده از سرور ناقص است.',
|
||||
],
|
||||
'behavior' => [
|
||||
'missing_property' => 'کلاس :class باید شامل خصوصیت $:property که در :behavior استفاده شده است باشد.',
|
||||
],
|
||||
'config' => [
|
||||
'not_found' => 'فایل پیکربندی :file تعریف شده در :location یافت نشد.',
|
||||
'required' => "پیکربندی استفاده شده در :location باید مقدار ':property' را ارائه نماید.",
|
||||
],
|
||||
'zip' => [
|
||||
'extract_failed' => "عدم توانایی در گسودن فایل هسته ':file'.",
|
||||
],
|
||||
'event_log' => [
|
||||
'hint' => 'این گزارش نمایش دهنده خطاهای عملکردی در سیستم می باشد، مانند خطاهای در حال اجرا و اطلاغات خطایابی.',
|
||||
'menu_label' => 'گزارش رویدادها',
|
||||
'menu_description' => 'نمایش گزارش های سیستمی همراه با زمان و توضیح آنها.',
|
||||
'empty_link' => 'پاک سازی گزارش رویداد ها',
|
||||
'empty_loading' => 'درحال پاکسازی گزارشها...',
|
||||
'empty_success' => 'گزارشها با موفقیت پاک شدند.',
|
||||
'return_link' => 'بازگشت به گزارش رویداد ها',
|
||||
'id' => 'مشخصه',
|
||||
'id_label' => 'مشخصه ی رویداد',
|
||||
'created_at' => 'ساعت و تاریخ',
|
||||
'message' => 'پیغام',
|
||||
'level' => 'مرحله',
|
||||
],
|
||||
'request_log' => [
|
||||
'hint' => 'این گزارش درخواستهایی از طرف مرورگر را که نیاز به بررسی دارند را نمایش می دهد. به عنوان مثال اکر بازدید کنند صفحه ای را که موجود نیست درخواست کند، یک گزینه با کد وضعیت 404 ایجاد می شود.',
|
||||
'menu_label' => 'گزارش درخواست ها',
|
||||
'menu_description' => 'نمایش درخواستهای مشکل ساز و انتقال داده شده مانند خطای : صفحه مورد نظر یافت نشد 404.',
|
||||
'empty_link' => 'پاک کردن گزارش دخواستها',
|
||||
'empty_loading' => 'در حال پاکسازی...',
|
||||
'empty_success' => 'گزارش درخواستها با موفقیت پاکسازی شد.',
|
||||
'return_link' => 'بازگشت به گزارش درخواستها',
|
||||
'id' => 'مشخصه',
|
||||
'id_label' => 'مشخصه ی گزارش',
|
||||
'count' => 'شمارشگر',
|
||||
'referer' => 'معرف ها',
|
||||
'url' => 'آردس',
|
||||
'status_code' => 'وضعیت',
|
||||
],
|
||||
'permissions' => [
|
||||
'manage_system_settings' => 'مدیریت تنظیمات سیستم',
|
||||
'manage_software_updates' => 'مدیریت به روز رسانی نرم افزار',
|
||||
'manage_mail_templates' => 'مدیریت قالب پست الکترونیکی',
|
||||
'manage_other_administrators' => 'مدیریت سایر مدیران',
|
||||
'view_the_dashboard' => 'نمایش صفحه مدیریت'
|
||||
]
|
||||
];
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
<?php
|
||||
|
||||
return array(
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines contain the default error messages used by
|
||||
| the validator class. Some of these rules have multiple versions such
|
||||
| such as the size rules. Feel free to tweak each of these messages.
|
||||
|
|
||||
*/
|
||||
|
||||
"accepted" => ":attribute باید مورد قبولتان باشد.",
|
||||
"active_url" => ":attribute آدرس الکترونیکی معتبری نیست.",
|
||||
"after" => ":attribute باید تاریخی بعد از :date باشد.",
|
||||
"alpha" => ":attribute فقط میتواند حاوی حروف انگلیسی باشد.",
|
||||
"alpha_dash" => ":attribute فقط میتواند شامل حروف انگلیسی، اعداد و خط تیره باشد.",
|
||||
"alpha_num" => ":attribute فقط میتواند شامل حروف انگلیسی و عدد باشد.",
|
||||
"array" => ":attribute باید یک آرایه باشد.",
|
||||
"before" => ":attribute باید تاریخی قبل از :date باشد.",
|
||||
"between" => array(
|
||||
"numeric" => ":attribute میتواند مابین :min و :max باشد.",
|
||||
"file" => "اندازه ی :attribute بای مابین :min و :max کیلوبایت باشد.",
|
||||
"string" => ":attribute باید مابین :min و :max کاراکتر باشد.",
|
||||
"array" => ":attribute باید شامل :min تا :max مورد باشد.",
|
||||
),
|
||||
"confirmed" => "مقداری :attribute با تاییدیه اش یکسان نیست.",
|
||||
"date" => ":attribute تاریخ معتبری نیست.",
|
||||
"date_format" => "مقدار :attribute در قالب :format نمی باشد.",
|
||||
"different" => "مقدار :attribute و :other نباید یکسان باشد.",
|
||||
"digits" => "مقدار :attribute باید یم عدد :digits رقمی باشد.",
|
||||
"digits_between" => "مقدار :attribute باید ما بین :min و :max باشد.",
|
||||
"email" => "قالب :attribute نامعتبر است.",
|
||||
"exists" => ":attribute انتخاب شده نامعتبر است.",
|
||||
"image" => ":attribute باید یک تصویر باشد.",
|
||||
"in" => ":attribute انتخاب شده نا معتبر است.",
|
||||
"integer" => ":attribute باید یک عدد صحیح باشد.",
|
||||
"ip" => ":attribute حاوی یک آدرس آی پی معتبر نیست.",
|
||||
"max" => array(
|
||||
"numeric" => ":attribute نباید بیشتر از :max باشد.",
|
||||
"file" => ":attribute نباید بیش از :max کیلوبایت باشد.",
|
||||
"string" => ":attribute نباید بیش از :max کاراکتر باشد.",
|
||||
"array" => ":attribute نباید بیش تر از :max مورد داشته باشد.",
|
||||
),
|
||||
"mimes" => ":attribute باید فایلی از نوع :values باشد.",
|
||||
"min" => array(
|
||||
"numeric" => "مقدار :attribute باید حد اقل :min باشد.",
|
||||
"file" => ":attribute باید حداقل :min کیلوبایت باشد.",
|
||||
"string" => ":attribute باید شامل حداقل :min کاراکتر باشد.",
|
||||
"array" => ":attribute باید شامل حد اقل :min مورد باشد.",
|
||||
),
|
||||
"not_in" => ":attribute انتخاب شده نا معتبر است.",
|
||||
"numeric" => "مقدار :attribute باید یم مقدار عددی باشد.",
|
||||
"regex" => "قالب :attribute نا معتبر است.",
|
||||
"required" => "وارد کردن :attribute الزامیست.",
|
||||
"required_if" => "اگر مقدار :other برابر با :value باشد وارد کردن :attribute الزامیست.",
|
||||
"required_with" => "فیل :attribute در صورتی که :values موجود باشد مورد نیاز است.",
|
||||
"required_without" => "فیلد :attribute در صورتی که مقدار :values وجود نداشته باشد مورد نیاز است.",
|
||||
"same" => ":attribute و :other باید مقدار یکسانی داشته باشند.",
|
||||
"size" => array(
|
||||
"numeric" => ":attribute باید به اندازه ی :size باشد.",
|
||||
"file" => ":attribute باید :size کیلوبایت باشد.",
|
||||
"string" => ":attribute باید :size کاراکتر باشد.",
|
||||
"array" => ":attribute باید شامل :size مورد باشد.",
|
||||
),
|
||||
"unique" => ":attribute استفاده شده تکراری می باشد.",
|
||||
"url" => "قالب :attribute نا معتبر است.",
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Language Lines
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Here you may specify custom validation messages for attributes using the
|
||||
| convention "attribute.rule" to name the lines. This makes it quick to
|
||||
| specify a specific custom language line for a given attribute rule.
|
||||
|
|
||||
*/
|
||||
|
||||
'custom' => array(),
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Custom Validation Attributes
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| The following language lines are used to swap attribute place-holders
|
||||
| with something more reader friendly such as E-Mail Address instead
|
||||
| of "email". This simply helps us make messages a little cleaner.
|
||||
|
|
||||
*/
|
||||
|
||||
'attributes' => array(),
|
||||
|
||||
);
|
||||
|
|
@ -15,6 +15,7 @@ return [
|
|||
'ru' => 'Russe',
|
||||
'fr' => 'Français',
|
||||
'pt-br' => 'Portugais-Brésilien',
|
||||
'fa' => 'Persian',
|
||||
],
|
||||
'directory' => [
|
||||
'create_fail' => "Impossible de créer le répertoire : :name",
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ return [
|
|||
'fr' => 'Francese',
|
||||
'it' => 'Italiano',
|
||||
'pt-br' => 'Portoghese (Brasile)',
|
||||
'fa' => 'Persian',
|
||||
],
|
||||
'directory' => [
|
||||
'create_fail' => "Impossibile creare la cartella: :name",
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ return [
|
|||
'it' => 'Italian',
|
||||
'ro' => 'Romana',
|
||||
'pt-br' => 'Brazilian Portuguese',
|
||||
'fa' => 'Persian',
|
||||
],
|
||||
'directory' => [
|
||||
'create_fail' => "ディレクトリーが作成できません: :name",
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ return [
|
|||
'it' => 'Italiaans',
|
||||
'ro' => 'Roemeens',
|
||||
'pt-br' => 'Braziliaans Portugees',
|
||||
'fa' => 'Persian',
|
||||
],
|
||||
'directory' => [
|
||||
'create_fail' => "Map aanmaken mislukt: :name",
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ return [
|
|||
'it' => 'Italiano',
|
||||
'ro' => 'Romano',
|
||||
'pt-br' => 'Português do Brasil',
|
||||
'fa' => 'Persian',
|
||||
],
|
||||
'directory' => [
|
||||
'create_fail' => "Não é possível criar o diretório: :name",
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ return [
|
|||
'fr' => 'Franceza',
|
||||
'ro' => 'Romana',
|
||||
'pt-br' => 'Portugheza (Brazilia)',
|
||||
'fa' => 'Persian',
|
||||
],
|
||||
'directory' => [
|
||||
'create_fail' => "Nu se poate crea directorul: :name",
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ return [
|
|||
'it' => 'Italian',
|
||||
'ro' => 'Romana',
|
||||
'pt-br' => 'Brazilian Portuguese',
|
||||
'fa' => 'Persian',
|
||||
],
|
||||
'directory' => [
|
||||
'create_fail' => "Невозможно создать директорию: :name",
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ return [
|
|||
'it' => 'Italian',
|
||||
'ro' => 'Romana',
|
||||
'pt-br' => 'Brazilian Portuguese',
|
||||
'fa' => 'Persian',
|
||||
],
|
||||
'directory' => [
|
||||
'create_fail' => "Kunde inte skapa mapp: :name",
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@ return [
|
|||
'it' => 'Italian',
|
||||
'ro' => 'Romana',
|
||||
'pt-br' => 'Brazilian Portuguese',
|
||||
'fa' => 'Persian',
|
||||
],
|
||||
'directory' => [
|
||||
'create_fail' => "Klasör oluşturulamıyor: :name",
|
||||
|
|
|
|||
|
|
@ -19,6 +19,7 @@ class MailSettings extends Model
|
|||
const MODE_MAIL = 'mail';
|
||||
const MODE_SENDMAIL = 'sendmail';
|
||||
const MODE_SMTP = 'smtp';
|
||||
const MODE_MAILGUN = 'mailgun';
|
||||
|
||||
public function initSettingsData()
|
||||
{
|
||||
|
|
@ -40,6 +41,7 @@ class MailSettings extends Model
|
|||
static::MODE_MAIL => 'PHP mail',
|
||||
static::MODE_SENDMAIL => 'Sendmail',
|
||||
static::MODE_SMTP => 'SMTP',
|
||||
static::MODE_MAILGUN => 'Mailgun',
|
||||
];
|
||||
}
|
||||
|
||||
|
|
@ -69,6 +71,11 @@ class MailSettings extends Model
|
|||
case self::MODE_SENDMAIL:
|
||||
$config->set('mail.sendmail', $settings->sendmail_path);
|
||||
break;
|
||||
|
||||
case self::MODE_MAILGUN:
|
||||
$config->set('services.mailgun.domain', $settings->mailgun_domain);
|
||||
$config->set('services.mailgun.secret', $settings->mailgun_secret);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -52,4 +52,14 @@ tabs:
|
|||
sendmail_path:
|
||||
label: system::lang.mail.sendmail_path
|
||||
commentAbove: system::lang.mail.sendmail_path_comment
|
||||
tab: system::lang.mail.sendmail
|
||||
tab: system::lang.mail.sendmail
|
||||
|
||||
mailgun_domain:
|
||||
label: system::lang.mail.mailgun_domain
|
||||
commentAbove: system::lang.mail.mailgun_domain_comment
|
||||
tab: system::lang.mail.mailgun
|
||||
|
||||
mailgun_secret:
|
||||
label: system::lang.mail.mailgun_secret
|
||||
commentAbove: system::lang.mail.mailgun_domain_secret
|
||||
tab: system::lang.mail.mailgun
|
||||
|
|
@ -19,4 +19,5 @@ columns:
|
|||
layout:
|
||||
label: system::lang.mail_templates.layout
|
||||
relation: layout
|
||||
select: @name
|
||||
select: name
|
||||
sortable: false
|
||||
|
|
@ -8,6 +8,7 @@ class ThemeTest extends TestCase
|
|||
{
|
||||
Config::set('cms.activeTheme', 'test');
|
||||
Event::flush('cms.activeTheme');
|
||||
Theme::resetCache();
|
||||
}
|
||||
|
||||
protected function countThemePages($path)
|
||||
|
|
|
|||
Loading…
Reference in New Issue