Merge branch 'develop' of https://github.com/octobercms/october into feature/PSR-2
Conflicts: modules/backend/behaviors/FormController.php modules/backend/classes/AuthManager.php modules/backend/lang/fa/lang.php modules/backend/widgets/Form.php modules/cms/classes/CmsCompoundObject.php modules/cms/classes/ComponentHelpers.php modules/cms/formwidgets/Components.php
This commit is contained in:
commit
61cf1ad710
|
|
@ -1,3 +1,6 @@
|
|||
* **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.
|
||||
|
|
|
|||
|
|
@ -587,7 +587,7 @@
|
|||
|
||||
// DROPDOWN EDITOR
|
||||
// ==================
|
||||
|
||||
|
||||
var InspectorEditorDropdown = function(editorId, inspector, fieldDef) {
|
||||
this.inspector = inspector
|
||||
this.fieldDef = fieldDef
|
||||
|
|
|
|||
|
|
@ -108,6 +108,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'));
|
||||
}
|
||||
|
||||
//
|
||||
|
|
@ -129,7 +140,6 @@ class FormController extends ControllerBehavior
|
|||
);
|
||||
$model = $this->controller->formCreateModelObject();
|
||||
$this->initForm($model);
|
||||
|
||||
$this->controller->vars['formModel'] = $model;
|
||||
} catch (Exception $ex) {
|
||||
$this->controller->handleError($ex);
|
||||
|
|
@ -184,7 +194,7 @@ class FormController extends ControllerBehavior
|
|||
);
|
||||
$model = $this->controller->formFindModelObject($recordId);
|
||||
$this->initForm($model);
|
||||
|
||||
|
||||
$this->controller->vars['formModel'] = $model;
|
||||
} catch (Exception $ex) {
|
||||
$this->controller->handleError($ex);
|
||||
|
|
@ -262,7 +272,7 @@ class FormController extends ControllerBehavior
|
|||
);
|
||||
$model = $this->controller->formFindModelObject($recordId);
|
||||
$this->initForm($model);
|
||||
|
||||
|
||||
$this->controller->vars['formModel'] = $model;
|
||||
} catch (Exception $ex) {
|
||||
$this->controller->handleError($ex);
|
||||
|
|
@ -368,10 +378,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);
|
||||
}
|
||||
|
||||
//
|
||||
|
|
|
|||
|
|
@ -289,6 +289,19 @@ class ListController extends ControllerBehavior
|
|||
return $this->listWidgets[$definition]->onRefresh();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the widget used by this behavior.
|
||||
* @return Backend\Classes\WidgetBase
|
||||
*/
|
||||
public function listGetWidget($definition = null)
|
||||
{
|
||||
if (!$definition) {
|
||||
$definition = $this->primaryDefinition;
|
||||
}
|
||||
|
||||
return array_get($this->listWidgets, $definition);
|
||||
}
|
||||
|
||||
//
|
||||
// Overrides
|
||||
//
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ class AuthManager extends RainAuthManager
|
|||
// Permission management
|
||||
//
|
||||
|
||||
static $permissionDefaults = [
|
||||
protected static $permissionDefaults = [
|
||||
'code' => null,
|
||||
'label' => null,
|
||||
'comment' => null,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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,254 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'field' => [
|
||||
'invalid_type' => 'El tipo de campo utilizado es inválido :type.',
|
||||
'options_method_not_exists' => 'El modelo clase: model debe definir un método: method() opciones recurrentes para el ":field" desde campo.',
|
||||
],
|
||||
'widget' => [
|
||||
'not_registered' => "La clase del modulo ':name' no ha sido registrada",
|
||||
'not_bound' => "El módulo con la clase ':name' no se ha unido al controlador",
|
||||
],
|
||||
'page' => [
|
||||
'untitled' => "Sin título",
|
||||
'access_denied' => [
|
||||
'label' => "Acceso denegado",
|
||||
'help' => "Usted no tiene los permisos necesarios para ver esta página.",
|
||||
'cms_link' => "Regresar al Back-end",
|
||||
],
|
||||
],
|
||||
'partial' => [
|
||||
'not_found' => "El parcial ':name' no se encuentra.",
|
||||
],
|
||||
'account' => [
|
||||
'sign_out' => 'Salir',
|
||||
'login' => 'Entrar',
|
||||
'reset' => 'Reiniciar',
|
||||
'restore' => 'Restaurar',
|
||||
'login_placeholder' => 'Usuario',
|
||||
'password_placeholder' => 'Contraseña',
|
||||
'forgot_password' => "Olvido su contraseña?",
|
||||
'enter_email' => "Ingrese su email",
|
||||
'enter_login' => "Ingrese su usuario",
|
||||
'email_placeholder' => "email",
|
||||
'enter_new_password' => "Ingrese una nueva contraseña",
|
||||
'password_reset' => "Reiniciar contraseña",
|
||||
'restore_success' => "Le hemos enviado un email con la nueva contraseña.",
|
||||
'restore_error' => "El usuario no es válido ':login'",
|
||||
'reset_success' => "Su contraseña fue correctamente reseteada.",
|
||||
'reset_error' => "La contraseña es inválida. Por favor, intente otra vez!",
|
||||
'reset_fail' => "No se puede reiniciar su contraseña!",
|
||||
'apply' => 'Aplicar',
|
||||
'cancel' => 'Cancelar',
|
||||
'delete' => 'Borrar',
|
||||
'ok' => 'OK',
|
||||
],
|
||||
'dashboard' => [
|
||||
'menu_label' => 'Tablero',
|
||||
'widget_label' => 'Modulo',
|
||||
'widget_width' => 'Ancho',
|
||||
'full_width' => 'Ancho completo',
|
||||
'add_widget' => 'Agregar módulo',
|
||||
'widget_inspector_title' => 'Configurar módulo',
|
||||
'widget_inspector_description' => 'Configure el módulo de informe',
|
||||
'widget_columns_label' => 'Ancho :columnas',
|
||||
'widget_columns_description' => 'El ancho del módulo, un número entre 1 y 10.',
|
||||
'widget_columns_error' => 'Por favor introduce el ancho del modulo, un número entre 1 y 10.',
|
||||
'columns' => '{1} columna|[2,Inf] columnas',
|
||||
'widget_new_row_label' => 'Forzar nueva fila',
|
||||
'widget_new_row_description' => 'Coloca el módulo en una nueva fila.',
|
||||
'widget_title_label' => 'Título del módulo',
|
||||
'widget_title_error' => 'El título del módulo es requerido.',
|
||||
'status' => [
|
||||
'widget_title_default' => 'Estado del sistema',
|
||||
'online' => 'online',
|
||||
'update_available' => '{0} actualizaciones disponibles!|{1} actualizaciones disponibles!|[2,Inf] actualizaciones disponibles!',
|
||||
]
|
||||
],
|
||||
'user' => [
|
||||
'name' => 'Administrador',
|
||||
'menu_label' => 'Administradores',
|
||||
'menu_description' => 'Gestionar back-end de administrador de usuarios, grupos y permisos.',
|
||||
'list_title' => 'Gestionar Administradores',
|
||||
'new' => 'Nuevo Administrador',
|
||||
'login' => "Acceso",
|
||||
'first_name' => "Nombre",
|
||||
'last_name' => "Apellido",
|
||||
'full_name' => "Nombre completo",
|
||||
'email' => "Email",
|
||||
'groups' => "Grupos",
|
||||
'groups_comment' => "Especifique a qué grupos pertenece esta persona.",
|
||||
'avatar' => "Avatar",
|
||||
'password' => "Contraseña",
|
||||
'password_confirmation' => "Confirmar contraseña",
|
||||
'superuser' => "Super Administrador",
|
||||
'superuser_comment' => "Marque esta casilla para permitir que esta persona tenga acceso a todas las áreas.",
|
||||
'send_invite' => 'Enviar invitación por email',
|
||||
'send_invite_comment' => 'Utilice esta casilla de verificación para enviar una invitación al usuario por emai',
|
||||
'delete_confirm' => '¿Realmente desea eliminar este administrador?',
|
||||
'return' => 'Regresar a la lista de administradorest',
|
||||
'allow' => 'Permitir',
|
||||
'inherit' => 'Heredar',
|
||||
'deny' => 'Denegar',
|
||||
'group' => [
|
||||
'name' => 'Grupo',
|
||||
'name_field' => 'Nombre',
|
||||
'menu_label' => 'Grupos',
|
||||
'list_title' => 'Gestionar Grupos',
|
||||
'new' => 'Nuevo Grupo',
|
||||
'delete_confirm' => '¿Realmente desea eliminar este grupo de administradores?',
|
||||
'return' => 'Regresar a la lista de grupos',
|
||||
],
|
||||
'preferences' => [
|
||||
'not_authenticated' => 'No existe un usuario autenticado para cargar o guardar las preferencias para.'
|
||||
]
|
||||
],
|
||||
'list' => [
|
||||
'default_title' => 'Lista',
|
||||
'search_prompt' => 'Buscar...',
|
||||
'no_records' => 'No hay registros en esta lista',
|
||||
'missing_model' => 'El comportamiento de lista utilizado en :class no tiene un modelo definido.',
|
||||
'missing_column' => 'No hay definiciones de columna para :columns.',
|
||||
'missing_columns' => 'Lista utilizada en :class no tiene lista de columnas definidas.',
|
||||
'missing_definition' => "Comportamiento de lista no contiene una columna para ':field'.",
|
||||
'behavior_not_ready' => 'Comportamiento de lista no se ha inicializado, compruebe que ha llamado makeLists() en el controlador.',
|
||||
'invalid_column_datetime' => "Columna valor ':column' no es un objeto DateTime, has perdido la referencia \$dates en el Modelo?",
|
||||
'pagination' => 'Registros que se muestran: :from-:to de :total',
|
||||
'prev_page' => 'Página anterior',
|
||||
'next_page' => 'Página siguiente',
|
||||
'loading' => 'Cargando...',
|
||||
'setup_title' => 'Configuración de la lista',
|
||||
'setup_help' => 'Utilice las casillas de verificación para seleccionar las columnas que desea ver en la lista. Usted puede cambiar la posición de las columnas arrastrándolas hacia arriba o hacia abajo.',
|
||||
'records_per_page' => 'Registros por página',
|
||||
'records_per_page_help' => 'Seleccione el número de registros por página para mostrar. Tenga en cuenta que un alto número de registros en una sola página puede reducir el rendimiento.',
|
||||
],
|
||||
'fileupload' => [
|
||||
'attachment' => 'Adjunto',
|
||||
'help' => 'Añadir un título y una descripción para este Adjunto..',
|
||||
'title_label' => 'Título',
|
||||
'description_label' => 'Descripción'
|
||||
],
|
||||
|
||||
'form' => [
|
||||
'create_title' => "Nuevo :name",
|
||||
'update_title' => "Editar :name",
|
||||
'preview_title' => "Vista previa :name",
|
||||
'create_success' => ':name ha sido creado con éxito',
|
||||
'update_success' => ':name se ha actualizado correctamente',
|
||||
'delete_success' => ':name se ha eliminado correctamente',
|
||||
'missing_id' => "El formulario de registro de identificación no se ha especificado.",
|
||||
'missing_model' => 'El comportamiento del formulario utilizado en :class no tiene un modelo definido.',
|
||||
'missing_definition' => "El comportamiento de formulario no contiene un campo para':field'.",
|
||||
'not_found' => 'El registro de formulario con el ID :id no se pudo encontrar.',
|
||||
'create' => 'Crear',
|
||||
'create_and_close' => 'Crear y cerrar',
|
||||
'creating' => 'Creando...',
|
||||
'save' => 'Guardar',
|
||||
'save_and_close' => 'Guardar y cerrar',
|
||||
'saving' => 'Guardando...',
|
||||
'delete' => 'Borrar',
|
||||
'deleting' => 'Borrando...',
|
||||
'undefined_tab' => 'Misc',
|
||||
'field_off' => 'Off',
|
||||
'field_on' => 'On',
|
||||
'add' => 'Agregar',
|
||||
'apply' => 'Aplicar',
|
||||
'cancel' => 'Cancelar',
|
||||
'close' => 'Cerrar',
|
||||
'ok' => 'OK',
|
||||
'or' => 'o',
|
||||
'confirm_tab_close' => '¿Realmente desea cerrar la cuenta? Se perderán los cambios no guardados.',
|
||||
'behavior_not_ready' => 'Favor compruebe que ha llamado a la funcion initForm() en el controlador.',
|
||||
'preview_no_files_message' => 'Los archivos no fueron cargados',
|
||||
'select' => 'Seleccionar',
|
||||
'select_all' => 'Todo',
|
||||
'select_none' => 'Nada',
|
||||
'select_placeholder' => 'Seleccione',
|
||||
'insert_row' => 'Insertar fila',
|
||||
'delete_row' => 'Eliminar fila',
|
||||
'concurrency-file-changed-title' => 'El archivo fue cambiado',
|
||||
'concurrency-file-changed-description' => 'El archivo que usted se encuentra editando fue cambiado editado por otro usuario. Usted puede recargar el archivo y perder los cambios o sobreescribir el archivo en el disco.',
|
||||
'reload' => 'Recargar',
|
||||
],
|
||||
'relation' => [
|
||||
'missing_definition' => "Relación comportamiento no contiene una definición para ':field'.",
|
||||
'missing_model' => "Relación comportamiento utilizado en :class no tiene un modelo definido.",
|
||||
'invalid_action_single' => "Esta acción no se puede realizar en una relación singular.",
|
||||
'invalid_action_multi' => "Esta acción no se puede realizar en una relación múltiple.",
|
||||
'help' => "Haga clic en un elemento para añadir.",
|
||||
'related_data' => "Relacionar :name datos",
|
||||
'add' => "Agregar",
|
||||
'add_selected' => "Agregar seleccionado",
|
||||
'add_a_new' => "Agregar un nuevo :name",
|
||||
'cancel' => "Cancelar",
|
||||
'add_name' => "Agregar :name",
|
||||
'create' => "Crear",
|
||||
'create_name' => "Crear :name",
|
||||
'update' => "Actualizar",
|
||||
'update_name' => "Actualizar :name",
|
||||
'remove' => "Remover",
|
||||
'remove_name' => "Remover :name",
|
||||
'delete' => "Borrar",
|
||||
'delete_name' => "Borrar :name",
|
||||
'delete_confirm' => "¿Está usted seguro?",
|
||||
],
|
||||
'model' => [
|
||||
'name' => "Modelo",
|
||||
'not_found' => "Modelo ':class' con el ID :id no se pudo encontrar",
|
||||
'missing_id' => "No se ha especificado un ID para encontrar el modelo guardado.",
|
||||
'missing_relation' => "Modelo ':class' no contiene una definición para ':relation'.",
|
||||
'invalid_class' => "Modelo :model utilizado en :class no es váildo, este debería heredar la clase del \Model.",
|
||||
'mass_assignment_failed' => "Asignación masiva falló para el atributo del Modelo ':attribute'.",
|
||||
],
|
||||
'warnings' => [
|
||||
'tips' => 'Consejos de configuración del sistema',
|
||||
'tips_description' => 'Hay problemas que necesitan de su atención para configurar el sistema correctamente.',
|
||||
'permissions' => 'Directorio :name o los subdirectorios no se puede escribir por PHP. Por favor establecer los permisos correctos para el servidor web en este directorio.',
|
||||
'extension' => 'La extensión PHP :name no está instalada. Por favor instalar esta librería y activar la extensión.'
|
||||
],
|
||||
'editor' => [
|
||||
'menu_label' => 'Preferencias del Editor de Código',
|
||||
'menu_description' => 'Configurar las preferencias del editor de código, como el tamaño de la letra y el color del esquema.',
|
||||
'font_size' => 'Tamaño de la letra',
|
||||
'tab_size' => '>Tamaño de la Solapa',
|
||||
'use_hard_tabs' => 'Espacio entre solapas',
|
||||
'code_folding' => 'Código Plegable',
|
||||
'word_wrap' => 'Ajuste de línea',
|
||||
'highlight_active_line' => 'Resaltar línea activa',
|
||||
'show_invisibles' => 'Mostrar caracteres invisibles',
|
||||
'show_gutter' => 'Mostrar canal',
|
||||
'theme' => 'Color del esquema',
|
||||
],
|
||||
'tooltips' => [
|
||||
'preview_website' => 'Vista previa de la página web'
|
||||
],
|
||||
'mysettings' => [
|
||||
'menu_label' => 'Mi configuración',
|
||||
'menu_description' => 'Ajustes relacionados con su cuenta de administración',
|
||||
],
|
||||
'myaccount' => [
|
||||
'menu_label' => 'Mi cuenta',
|
||||
'menu_description' => 'Actualice la información de su cuenta, tales como nombre, dirección de correo electrónico y contraseña.',
|
||||
'menu_keywords' => 'Inicio seguro'
|
||||
],
|
||||
'backend_preferences' => [
|
||||
'menu_label' => 'Preferencias de Back-end',
|
||||
'menu_description' => 'Gestionar preferencia de idioma y la apariencia del Back-end.',
|
||||
'locale' => 'Idioma',
|
||||
'locale_comment' => 'Seleccione la localización para el uso del lenguaje.',
|
||||
],
|
||||
'access_log' => [
|
||||
'hint' => 'Este registro muestra la lista de ingresos al panel de administración. Los registros se mantienen por un total de :days días.',
|
||||
'menu_label' => 'Registro de acceso',
|
||||
'menu_description' => 'Ver registro de ingresos al panel de administracion.',
|
||||
'created_at' => 'Fecha y hora',
|
||||
'login' => 'Acceso',
|
||||
'ip_address' => 'IP',
|
||||
'first_name' => 'Nombre',
|
||||
'last_name' => 'Apellido',
|
||||
'email' => 'Email',
|
||||
],
|
||||
'filter' => [
|
||||
'all' => 'Todo'
|
||||
]
|
||||
];
|
||||
|
|
@ -48,6 +48,7 @@ class BackendPreferences extends Model
|
|||
'fr' => [Lang::get('system::lang.locale.fr'), 'flag-fr'],
|
||||
'it' => [Lang::get('system::lang.locale.it'), 'flag-it'],
|
||||
'ro' => [Lang::get('system::lang.locale.ro'), 'flag-ro'],
|
||||
'es-ar' => [Lang::get('system::lang.locale.es-ar'), 'flag-ar'],
|
||||
'pt-br' => [Lang::get('system::lang.locale.pt-br'), 'flag-br'],
|
||||
'fa' => [Lang::get('system::lang.locale.fa'), 'flag-ir'],
|
||||
];
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -241,7 +241,7 @@ class Form extends WidgetBase
|
|||
}
|
||||
|
||||
/**
|
||||
* Prepares the list data
|
||||
* Prepares the form data
|
||||
*/
|
||||
protected function prepareVars()
|
||||
{
|
||||
|
|
@ -756,11 +756,10 @@ class Form extends WidgetBase
|
|||
}
|
||||
|
||||
/*
|
||||
* 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;
|
||||
}
|
||||
|
||||
|
|
@ -769,11 +768,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);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -586,7 +586,9 @@ class Lists extends WidgetBase
|
|||
if ($columnOrder = $this->getSession('order', null)) {
|
||||
$orderedDefinitions = [];
|
||||
foreach ($columnOrder as $column) {
|
||||
$orderedDefinitions[$column] = $this->columns[$column];
|
||||
if (isset($this->columns[$column])) {
|
||||
$orderedDefinitions[$column] = $this->columns[$column];
|
||||
}
|
||||
}
|
||||
|
||||
$this->columns = array_merge($orderedDefinitions, $this->columns);
|
||||
|
|
|
|||
|
|
@ -3,5 +3,5 @@
|
|||
class="filter-scope checkbox custom-checkbox"
|
||||
data-scope-name="<?= $scope->scopeName ?>">
|
||||
<input type="checkbox" id="<?= $scope->getId() ?>" <?= $scope->value ? 'checked' : '' ?> />
|
||||
<label for="<?= $scope->getId() ?>"><?= e($scope->label) ?></label>
|
||||
<label for="<?= $scope->getId() ?>"><?= e(trans($scope->label)) ?></label>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -3,6 +3,6 @@
|
|||
class="filter-scope <?= $scope->value ? 'active' : '' ?>"
|
||||
href="javascript:;"
|
||||
data-scope-name="<?= $scope->scopeName ?>">
|
||||
<span class="filter-label"><?= e($scope->label) ?>:</span>
|
||||
<span class="filter-label"><?= e(trans($scope->label)) ?>:</span>
|
||||
<span class="filter-setting"><?= $scope->value ? count($scope->value) : e(trans('backend::lang.filter.all')) ?></span>
|
||||
</a>
|
||||
|
|
|
|||
|
|
@ -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() ?>"
|
||||
|
|
|
|||
|
|
@ -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() ?>"
|
||||
|
|
|
|||
|
|
@ -259,25 +259,41 @@ class CmsCompoundObject extends CmsObject
|
|||
*/
|
||||
public function getComponent($componentName)
|
||||
{
|
||||
if (!$this->hasComponent($componentName)) {
|
||||
if (!($componentSection = $this->hasComponent($componentName)))
|
||||
return null;
|
||||
}
|
||||
|
||||
return ComponentManager::instance()->makeComponent(
|
||||
$componentName,
|
||||
null,
|
||||
$this->settings['components'][$componentName]
|
||||
$this->settings['components'][$componentSection]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the object has a component with the specified name.
|
||||
* @param string $componentName Specifies the component name.
|
||||
* @return boolean Returns true if the component exists.
|
||||
* @return mixed Return false or the full component name used on the page (it could include the alias).
|
||||
*/
|
||||
public function hasComponent($componentName)
|
||||
{
|
||||
return isset($this->settings['components'][$componentName]);
|
||||
foreach ($this->settings['components'] as $sectionName=>$values) {
|
||||
if ($sectionName == $componentName) {
|
||||
return $componentName;
|
||||
}
|
||||
|
||||
$parts = explode(' ', $sectionName);
|
||||
|
||||
if (count($parts) < 2) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (trim($parts[0]) == $componentName) {
|
||||
return $sectionName;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -315,6 +331,11 @@ class CmsCompoundObject extends CmsObject
|
|||
$objectComponentMap[$objectCode] = [];
|
||||
} else {
|
||||
foreach ($this->settings['components'] as $componentName => $componentSettings) {
|
||||
$nameParts = explode(' ', $componentName);
|
||||
if (count($nameParts > 1)) {
|
||||
$componentName = trim($nameParts[0]);
|
||||
}
|
||||
|
||||
$component = $this->getComponent($componentName);
|
||||
if (!$component) {
|
||||
continue;
|
||||
|
|
|
|||
|
|
@ -47,12 +47,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 (is_array($value)) {
|
||||
array_walk($property[$name], function(&$_value, $key) { $_value = Lang::get($_value); });
|
||||
} else {
|
||||
$property[$name] = Lang::get($value);
|
||||
}
|
||||
}
|
||||
|
||||
$result[] = $property;
|
||||
|
|
|
|||
|
|
@ -45,6 +45,9 @@ 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();
|
||||
|
|
|
|||
|
|
@ -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' => 'Nombre inválido del archivo: :name. El nombre del archivo debe contener solamente caracteres alfanuméricos, guiones bajos, barras y puntos. Algunos ejemplos de nombres correctos son: archivo.htm, archivo, subdirectorio/archivo',
|
||||
'invalid_property' => 'La propiedad ":name" no puede establecerse',
|
||||
'file_already_exists' => 'Archivo ":name" ya existe.',
|
||||
'error_saving' => 'Error guardando archivo ":name". Por favor revisar los permisos de escritura.',
|
||||
'error_creating_directory' => 'Error creando el directorio :name. Por favor revisar los permisos de escritura.',
|
||||
'invalid_file_extension'=>'Extensión de archivo inválida: :invalid. Las extensiones permitidas son: :allowed.',
|
||||
'error_deleting' => 'Error borrando el archivo template ":name". Por favor revisar los permisos de escritura.',
|
||||
'delete_success' => 'Los templates fueron borrados exitosamente: :count.',
|
||||
'file_name_required' => 'Falta el nombre del campo del archivo.'
|
||||
],
|
||||
'theme' => [
|
||||
'active' => [
|
||||
'not_set' => "El tema activo no se ha establecido.",
|
||||
'not_found' => "El tema activo no se encuentra.",
|
||||
],
|
||||
'edit' => [
|
||||
'not_set' => "El tema de edición no se ha establecido.",
|
||||
'not_found' => "El tema de edición no se encuentra.",
|
||||
'not_match' => "El objeto que está intentando acceder no pertenece al tema que se está editando. Vuelve a cargar la página."
|
||||
],
|
||||
'settings_menu' => 'Plantilla',
|
||||
'settings_menu_description' => 'Vista previa de la lista de las plantillas instaladas.',
|
||||
'find_more_themes' => 'Busque más Plantillas',
|
||||
'activate_button' => 'Activar',
|
||||
'active_button' => 'Activar',
|
||||
],
|
||||
'page' => [
|
||||
'not_found' => [
|
||||
'label' => "Página no encontrada",
|
||||
'help' => "La página solicitada no se puede encontrar.",
|
||||
],
|
||||
'custom_error' => [
|
||||
'label' => "Error de página",
|
||||
'help' => "Lo sentimos, ha ocurrido un error y la página no se puede mostrar.",
|
||||
],
|
||||
'menu_label' => 'Páginas',
|
||||
'no_list_records' => 'No se encontraron páginas',
|
||||
'new' => 'Nueva página',
|
||||
'invalid_url' => 'Formato de URL inválido. El URL debe comenzar con el símbolo de barra diagonal y puede contener dígitos, letras latinas y los siguientes símbolos: _-[]:?|/+*',
|
||||
'delete_confirm_multiple' => '¿Realmente quiere eliminar las páginas seleccionadas?',
|
||||
'delete_confirm_single' => '¿Realmente quieres eliminar esta página?',
|
||||
'no_layout' => '-- ninguna disposición --'
|
||||
],
|
||||
'layout' => [
|
||||
'not_found' => "El diseño ':name' no se encuentra",
|
||||
'menu_label' => 'Diseños',
|
||||
'no_list_records' => 'No se ecnontraron diseños',
|
||||
'new' => 'Nuevo diseño',
|
||||
'delete_confirm_multiple' => 'Realmente quiere borrar los diseños seleccionados?',
|
||||
'delete_confirm_single' => 'Realmente quiere borrar este diseño?'
|
||||
],
|
||||
'partial' => [
|
||||
'invalid_name' => "Nombre parcial inválido: :name.",
|
||||
'not_found' => "El nombre parcial ':name' no se encuentra.",
|
||||
'menu_label' => 'Parciales',
|
||||
'no_list_records' => 'No se encontraron parciales',
|
||||
'delete_confirm_multiple' => 'Realmente quiere borrar los parciales seleccionados?',
|
||||
'delete_confirm_single' => 'Realmente quiere borrar este parcial?',
|
||||
'new' => 'Nuevo parcial'
|
||||
],
|
||||
'content' => [
|
||||
'not_found' => "El contenido del archivo ':name' no se encuentra.",
|
||||
'menu_label' => 'Contenido',
|
||||
'no_list_records' => 'No se encuentra el conteinod de los archivos',
|
||||
'delete_confirm_multiple' => 'Realmente desea borrar los contenidos seleccionados de los archivos o directorios?',
|
||||
'delete_confirm_single' => 'Realmente desea borrar el contenido de este archivo?',
|
||||
'new' => 'Nuevo contenido de archivo'
|
||||
],
|
||||
'ajax_handler' => [
|
||||
'invalid_name' => "Manejador de AJAX inválido: :name.",
|
||||
'not_found' => "El manejador de AJAX ':name' no se encuentra.",
|
||||
],
|
||||
'combiner' => [
|
||||
'not_found' => "El archivo combinado ':name' no se encuentra.",
|
||||
],
|
||||
'cms' => [
|
||||
'menu_label' => "Gestión"
|
||||
],
|
||||
'sidebar' => [
|
||||
'add' => 'Agregar',
|
||||
'search' => 'Buscar...'
|
||||
],
|
||||
'editor' => [
|
||||
'settings' => 'Configuración',
|
||||
'title' => 'Título',
|
||||
'new_title' => 'Nuevo título de la página',
|
||||
'url' => 'URL',
|
||||
'filename' => 'Nombre del archivo',
|
||||
'layout' => 'Disposición',
|
||||
'description' => 'Descripción',
|
||||
'preview' => 'Vista previa',
|
||||
'meta' => 'Meta',
|
||||
'meta_title' => 'Meta Título',
|
||||
'meta_description' => 'Meta Descripción',
|
||||
'markup' => 'Marcado',
|
||||
'code' => 'Código',
|
||||
'content' => 'Contenido',
|
||||
'hidden' => 'Oculto',
|
||||
'hidden_comment' => 'A las páginas ocultas solamente pueden acceder los usuarios del back-end que se encuentren logueados.',
|
||||
'enter_fullscreen' => 'Ingresar en el modo pantalla completa',
|
||||
'exit_fullscreen' => 'Salir de pantalla completa'
|
||||
],
|
||||
'asset' => [
|
||||
'menu_label' => "Assets",
|
||||
'drop_down_add_title' => 'Add...',
|
||||
'drop_down_operation_title' => 'Action...',
|
||||
'upload_files' => 'Upload file(s)',
|
||||
'create_file' => 'Create file',
|
||||
'create_directory' => 'Create directory',
|
||||
'directory_popup_title' => 'Nuevo directorio',
|
||||
'directory_name' => 'Nombre del directorio',
|
||||
'rename' => 'Renombrar',
|
||||
'delete' => 'Borrar',
|
||||
'move' => 'Mover',
|
||||
'select' => 'Seleccionar',
|
||||
'new' => 'Nuevo archivo',
|
||||
'rename_popup_title' => 'Renombrar',
|
||||
'rename_new_name' => 'Nuevo nombre',
|
||||
'invalid_path' => 'El path solamente puede contener dígitos, letras, espacios y los símbolos siguientes: ._-/',
|
||||
'error_deleting_file' => 'Error al borrar el archivo :name.',
|
||||
'error_deleting_dir_not_empty' => 'Error borrando el directorio :name. El directorio no está vacío.',
|
||||
'error_deleting_dir' => 'Error borrando el archivo :name.',
|
||||
'invalid_name' => 'El nombre solamente puede contener dígitos, letras, espacios y los símbolos siguientes: ._-',
|
||||
'original_not_found' => 'El archivo o directorio original no se encuentra',
|
||||
'already_exists' => 'Un archivo o directorio con este nombre ya existe',
|
||||
'error_renaming' => 'Error renombrando el archivo o directorio',
|
||||
'name_cant_be_empty' => 'El nombre no puede estar vacío',
|
||||
'too_large' => 'El archivo subido es demasiado pesado. El tamaño máximo permitido es :max_size',
|
||||
'type_not_allowed' => 'Solamente los siguientes tipos de archivos están permitidos: :allowed_types',
|
||||
'file_not_valid' => 'El archivo no es válido',
|
||||
'error_uploading_file' => 'Error subiendo el archivo ":name": :error',
|
||||
'move_please_select' => 'por favor seleccionar',
|
||||
'move_destination' => 'Directorio destino',
|
||||
'move_popup_title' => 'Mover los títulos emergentes',
|
||||
'move_button' => 'Mover',
|
||||
'selected_files_not_found' => 'Los archivos seleccionados no se encuentran',
|
||||
'select_destination_dir' => 'Por favor seleccione un directorio destino',
|
||||
'destination_not_found' => 'El directorio destino no se encuentra',
|
||||
'error_moving_file' => 'Error moviendo archivo :file',
|
||||
'error_moving_directory' => 'Error moviendo el directorio :dir',
|
||||
'error_deleting_directory' => 'Error borrando el directorio original :dir',
|
||||
'path' => 'Path'
|
||||
],
|
||||
'component' => [
|
||||
'menu_label' => "Componentes",
|
||||
'unnamed' => "Sin nombre",
|
||||
'no_description' => "No se proporciona descripción",
|
||||
'alias' => "Alias",
|
||||
'alias_description' => "Se le ha asignado un nombre único a este componente cuando se lo utilizaba en la página o en el código de disposición.",
|
||||
'validation_message' => "El componente alias es requerido y puede contener solamente letras, números y guión bajo. El alias debe empezar con una letra.",
|
||||
'invalid_request' => "La plantilla no puede ser guardada porque tiene datos inválidos.",
|
||||
'no_records' => 'No se encontraron componentes',
|
||||
'not_found' => "El componente ':name' no se encuentra.",
|
||||
'method_not_found' => "El componente ':name' no contiene un método ':method'.",
|
||||
],
|
||||
'template' => [
|
||||
'invalid_type' => "Tipo de plantilla Desconocido.",
|
||||
'not_found' => "No se encontró la plantilla solicitada.",
|
||||
'saved'=> "La plantilla se ha guardado correctamente."
|
||||
],
|
||||
'permissions' => [
|
||||
'manage_content' => 'Gestionar contenido',
|
||||
'manage_assets' => 'Gestionar archivos',
|
||||
'manage_pages' => 'Gestionar páginas',
|
||||
'manage_layouts' => 'Gestionar diseños',
|
||||
'manage_partials' => 'Gestionar parciales',
|
||||
'manage_themes' => 'Gestionar plantilla'
|
||||
]
|
||||
];
|
||||
|
|
@ -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
|
||||
{
|
||||
|
|
|
|||
|
|
@ -213,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'],
|
||||
]);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,237 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'app' => [
|
||||
'name' => 'October CMS',
|
||||
'motto' => 'Getting back to basics',
|
||||
],
|
||||
'locale' => [
|
||||
'en' => 'Inglés',
|
||||
'nl' => 'Holandés',
|
||||
'ja' => 'Japonés',
|
||||
'se' => 'Suizo',
|
||||
'tr' => 'Turco',
|
||||
'de' => 'Alemán',
|
||||
'ru' => 'Ruso',
|
||||
'fr' => 'Frances',
|
||||
'it' => 'Italiano',
|
||||
'ro' => 'Romana',
|
||||
'pt-br' => 'Portugués Brasilero',
|
||||
'es-Ar' => 'Español Argentino',
|
||||
],
|
||||
'directory' => [
|
||||
'create_fail' => "No se puede crear el directorio: :name",
|
||||
],
|
||||
'file' => [
|
||||
'create_fail' => "No se puede crear el archivo: :name",
|
||||
],
|
||||
'system' => [
|
||||
'name' => 'Sistema',
|
||||
'menu_label' => 'Sistema',
|
||||
'categories' => [
|
||||
'cms' => 'CMS',
|
||||
'misc' => 'Miscelánea',
|
||||
'logs' => 'Registros',
|
||||
'mail' => 'Correo',
|
||||
'shop' => 'Comprar',
|
||||
'team' => 'Equipo',
|
||||
'users' => 'Usuarios',
|
||||
'system' => 'Sistema',
|
||||
'social' => 'Social',
|
||||
'events' => 'Eventos',
|
||||
'customers' => 'Clientes',
|
||||
'my_settings' => 'Mis configuraciones',
|
||||
],
|
||||
],
|
||||
'plugin' => [
|
||||
'unnamed' => 'Plugin sin nombre',
|
||||
'name' => [
|
||||
'label' => 'Nombre del plugin',
|
||||
'help' => 'Buscar el plugin por su nombre de codigo unico. Por ejemplo: RainLab.Blog',
|
||||
],
|
||||
],
|
||||
'plugins' => [
|
||||
'manage' => 'Administrar plugins',
|
||||
'enable_or_disable' => 'Activar o desactivar',
|
||||
'enable_or_disable_title' => 'Activar o desactivar plugins',
|
||||
'remove' => 'Eliminar',
|
||||
'refresh' => 'Actualizar',
|
||||
'disabled_label' => 'Desactivado',
|
||||
'disabled_help' => 'Los Plugins desactivados son ignorados por la aplicación.',
|
||||
'selected_amount' => 'Plugins seleccionados: :amount',
|
||||
'remove_confirm' => '¿Está usted seguro?',
|
||||
'remove_success' => "Se eliminaron exitosamente los plugins del sistema.",
|
||||
'refresh_confirm' => '¿Está usted seguro?',
|
||||
'refresh_success' => "Se actualizaron exitosamente los plugins del sistema.",
|
||||
'disable_confirm' => '¿Está usted seguro?',
|
||||
'disable_success' => "Se desactivaron exitosamente los plugins.",
|
||||
'enable_success' => "Se activaron exitosamente los plugins.",
|
||||
'unknown_plugin' => "Se eliminó el plugin del sistema de archivos.",
|
||||
],
|
||||
'project' => [
|
||||
'name' => 'Proyecto',
|
||||
'owner_label' => 'Dueño',
|
||||
'attach' => 'Adjuntar Proyecto',
|
||||
'detach' => 'Separar Proyect',
|
||||
'none' => 'Ningun',
|
||||
'id' => [
|
||||
'label' => 'Identificación del proyecto',
|
||||
'help' => '¿Cómo encontrar su ID de Proyecto',
|
||||
'missing' => 'Por favor, especifique un ID del proyecto para usar.',
|
||||
],
|
||||
'detach_confirm' => '¿Seguro que quieres separar este proyecto?',
|
||||
'unbind_success' => 'El proyecto ha sido separado con éxito.',
|
||||
],
|
||||
'settings' => [
|
||||
'menu_label' => 'Configuración',
|
||||
'missing_model' => 'La página de configuración no encuentra una definición de modelo.',
|
||||
'update_success' => 'Los ajustes para :name han sido actualizados correctamente.',
|
||||
'return' => 'Regresar a la configuración del sistema',
|
||||
'search' => 'Buscar'
|
||||
],
|
||||
'mail' => [
|
||||
'menu_label' => 'Administrar Correo',
|
||||
'menu_description' => 'Administrar la configuración de correo electrónico.',
|
||||
'general' => 'General',
|
||||
'method' => 'Método',
|
||||
'sender_name' => 'Nombre del remitente',
|
||||
'sender_email' => 'Remitente Email',
|
||||
'smtp' => 'SMTP',
|
||||
'smtp_address' => 'Dirección SMTP',
|
||||
'smtp_authorization' => 'Autorización SMTP requerida',
|
||||
'smtp_authorization_comment' => 'Usar esta opción si el servidor SMTP requiere autorización.',
|
||||
'smtp_username' => 'Nombre de usuario',
|
||||
'smtp_password' => 'Contraseña',
|
||||
'smtp_port' => 'Puerto SMTP',
|
||||
'smtp_ssl' => 'Conexión SSL requerida',
|
||||
'sendmail' => 'Sendmail',
|
||||
'sendmail_path' => 'Ruta del Sendmail',
|
||||
'sendmail_path_comment' => 'Por favor, especifique la ruta del programa sendmail.',
|
||||
],
|
||||
'mail_templates' => [
|
||||
'menu_label' => 'Plantillas de Correo',
|
||||
'menu_description' => 'Modificar las plantillas de correo que se envían a los usuarios y administradores, administrar diseños de correo electrónico',
|
||||
'new_template' => 'Nueva plantilla',
|
||||
'new_layout' => 'Nueva Disposición',
|
||||
'template' => 'Plantilla',
|
||||
'templates' => 'Plantillas',
|
||||
'menu_layouts_label' => 'Disposición del Mail',
|
||||
'layout' => 'Disposición',
|
||||
'layouts' => 'Disposiciones',
|
||||
'name' => 'Nombre',
|
||||
'name_comment' => 'Nombre único utilizado para referirse a esta plantilla',
|
||||
'code' => 'Código',
|
||||
'code_comment' => 'Código único utilizado para referirse a esta plantilla ',
|
||||
'subject' => 'Asunto',
|
||||
'subject_comment' => 'Correo asunto del mensaje',
|
||||
'description' => 'Descripción',
|
||||
'content_html' => 'HTML',
|
||||
'content_css' => 'CSS',
|
||||
'content_text' => 'Texto plano',
|
||||
'test_send' => 'Enviar mensaje de prueba',
|
||||
'test_success' => 'El mensaje de prueba ha sido enviado con éxito.',
|
||||
'return' => 'Volver a la lista de plantilla'
|
||||
],
|
||||
'install' => [
|
||||
'project_label' => 'Adjuntar al proyecto',
|
||||
'plugin_label' => 'Instalar Plugin',
|
||||
'missing_plugin_name' => 'Por favor, especifique un nombre de Plugin para instalar',
|
||||
'install_completing' => 'Finalizó el proceso de instalación',
|
||||
'install_success' => 'El plugin se ha instalado correctamente.',
|
||||
],
|
||||
'updates' => [
|
||||
'title' => 'Administrar actualizaciones',
|
||||
'name' => 'Actualizaciones de software',
|
||||
'menu_label' => 'Actualizaciones',
|
||||
'menu_description' => 'Actualizaciones del sistema, administrar e instalar plugins y temas.',
|
||||
'check_label' => 'Chequear actualizaciones',
|
||||
'retry_label' => 'Intentar nuevamente',
|
||||
'plugin_name' => 'Nombre',
|
||||
'plugin_description' => 'Descripción',
|
||||
'plugin_version' => 'Versión',
|
||||
'plugin_author' => 'Autor',
|
||||
'core_build' => 'Versión actual',
|
||||
'core_build_old' => 'Versión actual :build',
|
||||
'core_build_new' => 'Versión :build',
|
||||
'core_build_new_help' => 'Última versión está disponible.',
|
||||
'core_downloading' => 'Descargando archivos de la aplicación',
|
||||
'core_extracting' => 'Descomprimiendo archivos de la aplicación',
|
||||
'plugin_downloading' => 'Descargando plugin: :name',
|
||||
'plugin_extracting' => 'Descomprimiendo plugin: :name',
|
||||
'plugin_version_none' => 'Nuevo plugin',
|
||||
'plugin_version_old' => 'Actual v:version',
|
||||
'plugin_version_new' => 'v:version',
|
||||
'theme_label' => 'Tema',
|
||||
'theme_new_install' => 'Intalación de nuevo tema.',
|
||||
'theme_downloading' => 'Descargando tema: :name',
|
||||
'theme_extracting' => 'Descomprimiendo tema: :name',
|
||||
'update_label' => 'Actualizando software',
|
||||
'update_completing' => 'Finalizando el proceso de actualización',
|
||||
'update_loading' => 'Cargando actualizaciones disponibles...',
|
||||
'update_success' => 'El proceso de actualización se realizó exitosamente.',
|
||||
'update_failed_label' => 'Actualización falló',
|
||||
'force_label' => 'Forzar actualización',
|
||||
'found' => [
|
||||
'label' => 'Se encontraron nuevas actualizaciones!',
|
||||
'help' => 'Click Actualizar software para comenzar con el proceso de actualización.',
|
||||
],
|
||||
'none' => [
|
||||
'label' => 'No hay actualizaciones',
|
||||
'help' => 'No se encontraron nuevas actualizaciones disponibles.',
|
||||
],
|
||||
],
|
||||
'server' => [
|
||||
'connect_error' => 'Error al conectar con el servidor.',
|
||||
'response_not_found' => 'El servidor de actualización no se pudo encontrar.',
|
||||
'response_invalid' => 'Respuesta no válida del servidor.',
|
||||
'response_empty' => 'Respuesta vacía desde el servidor.',
|
||||
'file_error' => 'El servidor no pudo entregar el paquete.',
|
||||
'file_corrupt' => 'El archivo se encuentra dañado.',
|
||||
],
|
||||
'behavior' => [
|
||||
'missing_property' => 'Clase :class debe definir la propiedad $:property utilizada por :behavior comportamiento.',
|
||||
],
|
||||
'config' => [
|
||||
'not_found' => 'No se puede encontrar el archivo de configuración :file definido por :location.',
|
||||
'required' => "Configuración utilizada en :location debe proporcionar un valor. ':property'.",
|
||||
],
|
||||
'zip' => [
|
||||
'extract_failed' => "No se puede extraer el archivo ':file'.",
|
||||
],
|
||||
'event_log' => [
|
||||
'hint' => 'Este registro muestra una lista de los posibles errores que se producen en la aplicación, como las excepciones y la información de depuración.',
|
||||
'menu_label' => 'Log de eventos',
|
||||
'menu_description' => 'Ver los logs de registro del sistema.',
|
||||
'empty_link' => 'El registro de eventos se encuentra vacío',
|
||||
'empty_loading' => 'Borrando los registros...',
|
||||
'empty_success' => 'Los registros fueron borrados',
|
||||
'return_link' => 'Regresar al registro de eventos',
|
||||
'id' => 'ID',
|
||||
'id_label' => 'ID del Evento',
|
||||
'created_at' => 'Fecha y Hora',
|
||||
'message' => 'Mensaje',
|
||||
'level' => 'Nivel',
|
||||
],
|
||||
'request_log' => [
|
||||
'hint' => 'Este registro muestra una lista de las peticiones del navegador que pueden requerir atención. Por ejemplo, si un usuario abre una página que no se puede encontrar, se crea un registro con el código de estado 404.',
|
||||
'menu_label' => 'Logs de acceso',
|
||||
'menu_description' => 'Ver listado de redirecciones con errores y paginas No encontradas (404).',
|
||||
'empty_link' => 'El registro de accesos se encuentra vacío',
|
||||
'empty_loading' => 'Borrando los logs...',
|
||||
'empty_success' => 'Los logs fueron borrados...',
|
||||
'return_link' => 'Regresar al registro de accesso',
|
||||
'id' => 'ID',
|
||||
'id_label' => 'ID Log',
|
||||
'count' => 'Contador',
|
||||
'referer' => 'Referencia',
|
||||
'url' => 'URL',
|
||||
'status_code' => 'Estado',
|
||||
],
|
||||
'permissions' => [
|
||||
'manage_system_settings' => 'Gestionar la configuración del sistema',
|
||||
'manage_software_updates' => 'Gestionar actualización de software',
|
||||
'manage_mail_templates' => 'Gestionar plantillas de correo',
|
||||
'manage_other_administrators' => 'Gestionar otros administradores',
|
||||
'view_the_dashboard' => 'Ver el Tablero'
|
||||
]
|
||||
];
|
||||
|
|
@ -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" => "The :attribute must be accepted.",
|
||||
"active_url" => "The :attribute is not a valid URL.",
|
||||
"after" => "The :attribute must be a date after :date.",
|
||||
"alpha" => "The :attribute may only contain letters.",
|
||||
"alpha_dash" => "The :attribute may only contain letters, numbers, and dashes.",
|
||||
"alpha_num" => "The :attribute may only contain letters and numbers.",
|
||||
"array" => "The :attribute must be an array.",
|
||||
"before" => "The :attribute must be a date before :date.",
|
||||
"between" => array(
|
||||
"numeric" => "The :attribute must be between :min - :max.",
|
||||
"file" => "The :attribute must be between :min - :max kilobytes.",
|
||||
"string" => "The :attribute must be between :min - :max characters.",
|
||||
"array" => "The :attribute must have between :min - :max items.",
|
||||
),
|
||||
"confirmed" => "The :attribute confirmation does not match.",
|
||||
"date" => "The :attribute is not a valid date.",
|
||||
"date_format" => "The :attribute does not match the format :format.",
|
||||
"different" => "The :attribute and :other must be different.",
|
||||
"digits" => "The :attribute must be :digits digits.",
|
||||
"digits_between" => "The :attribute must be between :min and :max digits.",
|
||||
"email" => "The :attribute format is invalid.",
|
||||
"exists" => "The selected :attribute is invalid.",
|
||||
"image" => "The :attribute must be an image.",
|
||||
"in" => "The selected :attribute is invalid.",
|
||||
"integer" => "The :attribute must be an integer.",
|
||||
"ip" => "The :attribute must be a valid IP address.",
|
||||
"max" => array(
|
||||
"numeric" => "The :attribute may not be greater than :max.",
|
||||
"file" => "The :attribute may not be greater than :max kilobytes.",
|
||||
"string" => "The :attribute may not be greater than :max characters.",
|
||||
"array" => "The :attribute may not have more than :max items.",
|
||||
),
|
||||
"mimes" => "The :attribute must be a file of type: :values.",
|
||||
"min" => array(
|
||||
"numeric" => "The :attribute must be at least :min.",
|
||||
"file" => "The :attribute must be at least :min kilobytes.",
|
||||
"string" => "The :attribute must be at least :min characters.",
|
||||
"array" => "The :attribute must have at least :min items.",
|
||||
),
|
||||
"not_in" => "The selected :attribute is invalid.",
|
||||
"numeric" => "The :attribute must be a number.",
|
||||
"regex" => "The :attribute format is invalid.",
|
||||
"required" => "The :attribute field is required.",
|
||||
"required_if" => "The :attribute field is required when :other is :value.",
|
||||
"required_with" => "The :attribute field is required when :values is present.",
|
||||
"required_without" => "The :attribute field is required when :values is not present.",
|
||||
"same" => "The :attribute and :other must match.",
|
||||
"size" => array(
|
||||
"numeric" => "The :attribute must be :size.",
|
||||
"file" => "The :attribute must be :size kilobytes.",
|
||||
"string" => "The :attribute must be :size characters.",
|
||||
"array" => "The :attribute must contain :size items.",
|
||||
),
|
||||
"unique" => "The :attribute has already been taken.",
|
||||
"url" => "The :attribute format is invalid.",
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| 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(),
|
||||
|
||||
);
|
||||
|
|
@ -19,4 +19,5 @@ columns:
|
|||
layout:
|
||||
label: system::lang.mail_templates.layout
|
||||
relation: layout
|
||||
select: @name
|
||||
select: name
|
||||
sortable: false
|
||||
|
|
@ -18,6 +18,7 @@ return [
|
|||
'Illuminate\Foundation\Providers\OptimizeServiceProvider',
|
||||
'Illuminate\Pagination\PaginationServiceProvider',
|
||||
'Illuminate\Queue\QueueServiceProvider',
|
||||
'Illuminate\Redis\RedisServiceProvider',
|
||||
'Illuminate\Remote\RemoteServiceProvider',
|
||||
'Illuminate\Database\SeedServiceProvider',
|
||||
'Illuminate\Foundation\Providers\ServerServiceProvider',
|
||||
|
|
|
|||
Loading…
Reference in New Issue