Merge branch 'develop' into wip/laravel-6
# Conflicts: # modules/system/classes/UpdateManager.php # modules/system/classes/VersionManager.php
This commit is contained in:
commit
e78d5fe2bf
|
|
@ -664,7 +664,7 @@ nav#layout-mainmenu a {text-decoration:none}
|
||||||
nav#layout-mainmenu a:focus {background:transparent}
|
nav#layout-mainmenu a:focus {background:transparent}
|
||||||
nav#layout-mainmenu ul {margin:0;padding:0;list-style:none;float:left;white-space:nowrap;overflow:hidden}
|
nav#layout-mainmenu ul {margin:0;padding:0;list-style:none;float:left;white-space:nowrap;overflow:hidden}
|
||||||
nav#layout-mainmenu ul li {color:rgba(255,255,255,0.6);display:inline-block;vertical-align:top;position:relative;margin-right:30px}
|
nav#layout-mainmenu ul li {color:rgba(255,255,255,0.6);display:inline-block;vertical-align:top;position:relative;margin-right:30px}
|
||||||
nav#layout-mainmenu ul li a {display:inline-block;font-size:14px;color:inherit;outline:none;padding:14px 0 10px}
|
nav#layout-mainmenu ul li a {display:inline-block;font-size:14px;color:inherit;padding:14px 0 10px}
|
||||||
nav#layout-mainmenu ul li a:hover {background-color:transparent}
|
nav#layout-mainmenu ul li a:hover {background-color:transparent}
|
||||||
nav#layout-mainmenu ul li a:active,
|
nav#layout-mainmenu ul li a:active,
|
||||||
nav#layout-mainmenu ul li a:focus {text-decoration:none;color:rgba(255,255,255,0.6)}
|
nav#layout-mainmenu ul li a:focus {text-decoration:none;color:rgba(255,255,255,0.6)}
|
||||||
|
|
@ -771,7 +771,7 @@ nav#layout-mainmenu.navbar-mode-collapse .menu-toggle {display:inline-block;colo
|
||||||
.mainmenu-collapsed >div ul.mainmenu-nav li:first-child {margin-left:0}
|
.mainmenu-collapsed >div ul.mainmenu-nav li:first-child {margin-left:0}
|
||||||
.mainmenu-collapsed >div ul {margin:0;padding:5px 0 15px 15px;overflow:hidden}
|
.mainmenu-collapsed >div ul {margin:0;padding:5px 0 15px 15px;overflow:hidden}
|
||||||
.mainmenu-collapsed >div ul li {color:rgba(255,255,255,0.6);display:inline-block;vertical-align:top;position:relative;margin-right:30px}
|
.mainmenu-collapsed >div ul li {color:rgba(255,255,255,0.6);display:inline-block;vertical-align:top;position:relative;margin-right:30px}
|
||||||
.mainmenu-collapsed >div ul li a {display:inline-block;font-size:14px;color:inherit;outline:none}
|
.mainmenu-collapsed >div ul li a {display:inline-block;font-size:14px;color:inherit}
|
||||||
.mainmenu-collapsed >div ul li a:hover {background-color:transparent}
|
.mainmenu-collapsed >div ul li a:hover {background-color:transparent}
|
||||||
.mainmenu-collapsed >div ul li a:active,
|
.mainmenu-collapsed >div ul li a:active,
|
||||||
.mainmenu-collapsed >div ul li a:focus {text-decoration:none;color:rgba(255,255,255,0.6)}
|
.mainmenu-collapsed >div ul li a:focus {text-decoration:none;color:rgba(255,255,255,0.6)}
|
||||||
|
|
@ -857,6 +857,7 @@ body.outer .layout >.layout-row >.layout-cell .outer-form-container .horizontal-
|
||||||
body.outer .layout >.layout-row >.layout-cell .outer-form-container .horizontal-form input {vertical-align:top;margin-right:9px;display:inline-block;border:none;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}
|
body.outer .layout >.layout-row >.layout-cell .outer-form-container .horizontal-form input {vertical-align:top;margin-right:9px;display:inline-block;border:none;-webkit-border-radius:2px;-moz-border-radius:2px;border-radius:2px}
|
||||||
body.outer .layout >.layout-row >.layout-cell .outer-form-container .horizontal-form button {background:#0181b9;text-align:center;font-size:13px;font-weight:600;height:40px;vertical-align:top;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}
|
body.outer .layout >.layout-row >.layout-cell .outer-form-container .horizontal-form button {background:#0181b9;text-align:center;font-size:13px;font-weight:600;height:40px;vertical-align:top;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}
|
||||||
body.outer .layout >.layout-row >.layout-cell .outer-form-container .remember label {color:rgba(255,255,255,0.44)}
|
body.outer .layout >.layout-row >.layout-cell .outer-form-container .remember label {color:rgba(255,255,255,0.44)}
|
||||||
|
body.outer .layout >.layout-row >.layout-cell .outer-form-container .remember input#remember {display:none}
|
||||||
body.outer .layout >.layout-row >.layout-cell .outer-form-container .forgot-password {margin-top:30px;font-size:13px;top:8px}
|
body.outer .layout >.layout-row >.layout-cell .outer-form-container .forgot-password {margin-top:30px;font-size:13px;top:8px}
|
||||||
body.outer .layout >.layout-row >.layout-cell .outer-form-container .forgot-password a {color:rgba(255,255,255,0.44)}
|
body.outer .layout >.layout-row >.layout-cell .outer-form-container .forgot-password a {color:rgba(255,255,255,0.44)}
|
||||||
body.outer .layout >.layout-row >.layout-cell .outer-form-container .forgot-password:before {color:rgba(255,255,255,0.44);font-size:14px;position:relative;margin-right:5px}
|
body.outer .layout >.layout-row >.layout-cell .outer-form-container .forgot-password:before {color:rgba(255,255,255,0.44);font-size:14px;position:relative;margin-right:5px}
|
||||||
|
|
|
||||||
|
|
@ -1041,7 +1041,7 @@ self.$el.on('close.oc.sidePanel',function(){self.hideSidePanel()})}
|
||||||
this.updateActiveTab()}
|
this.updateActiveTab()}
|
||||||
SidePanelTab.prototype.displayTab=function(menuItem){var menuItemId=$(menuItem).data('menu-item')
|
SidePanelTab.prototype.displayTab=function(menuItem){var menuItemId=$(menuItem).data('menu-item')
|
||||||
this.visibleItemId=menuItemId
|
this.visibleItemId=menuItemId
|
||||||
$.oc.sideNav.setActiveItem(menuItemId)
|
if($.oc.sideNav!==undefined){$.oc.sideNav.setActiveItem(menuItemId)}
|
||||||
this.$sidePanelItems.each(function(){var $el=$(this)
|
this.$sidePanelItems.each(function(){var $el=$(this)
|
||||||
$el.toggleClass('hide',$el.data('content-id')!=menuItemId)})
|
$el.toggleClass('hide',$el.data('content-id')!=menuItemId)})
|
||||||
$(window).trigger('resize')}
|
$(window).trigger('resize')}
|
||||||
|
|
@ -1058,7 +1058,8 @@ this.updateActiveTab()}
|
||||||
SidePanelTab.prototype.updatePanelPosition=function(){if(!this.panelFixed()||Modernizr.touchevents){this.$el.height($(document).height()-this.mainNavHeight)}
|
SidePanelTab.prototype.updatePanelPosition=function(){if(!this.panelFixed()||Modernizr.touchevents){this.$el.height($(document).height()-this.mainNavHeight)}
|
||||||
else{this.$el.css('height','')}
|
else{this.$el.css('height','')}
|
||||||
if(this.panelVisible&&$(window).width()>this.options.breakpoint&&this.panelFixed()){this.hideSidePanel()}}
|
if(this.panelVisible&&$(window).width()>this.options.breakpoint&&this.panelFixed()){this.hideSidePanel()}}
|
||||||
SidePanelTab.prototype.updateActiveTab=function(){if(!this.panelVisible&&($(window).width()<this.options.breakpoint||!this.panelFixed())){$.oc.sideNav.unsetActiveItem()}
|
SidePanelTab.prototype.updateActiveTab=function(){if($.oc.sideNav===undefined){return}
|
||||||
|
if(!this.panelVisible&&($(window).width()<this.options.breakpoint||!this.panelFixed())){$.oc.sideNav.unsetActiveItem()}
|
||||||
else{$.oc.sideNav.setActiveItem(this.visibleItemId)}}
|
else{$.oc.sideNav.setActiveItem(this.visibleItemId)}}
|
||||||
SidePanelTab.prototype.panelFixed=function(){return!($(window).width()<this.options.breakpoint)&&!$(document.body).hasClass('side-panel-not-fixed')}
|
SidePanelTab.prototype.panelFixed=function(){return!($(window).width()<this.options.breakpoint)&&!$(document.body).hasClass('side-panel-not-fixed')}
|
||||||
SidePanelTab.prototype.fixPanel=function(){$(document.body).toggleClass('side-panel-not-fixed')
|
SidePanelTab.prototype.fixPanel=function(){$(document.body).toggleClass('side-panel-not-fixed')
|
||||||
|
|
|
||||||
|
|
@ -115,7 +115,9 @@
|
||||||
|
|
||||||
this.visibleItemId = menuItemId
|
this.visibleItemId = menuItemId
|
||||||
|
|
||||||
$.oc.sideNav.setActiveItem(menuItemId)
|
if ($.oc.sideNav !== undefined) {
|
||||||
|
$.oc.sideNav.setActiveItem(menuItemId)
|
||||||
|
}
|
||||||
|
|
||||||
this.$sidePanelItems.each(function() {
|
this.$sidePanelItems.each(function() {
|
||||||
var $el = $(this)
|
var $el = $(this)
|
||||||
|
|
@ -164,6 +166,10 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
SidePanelTab.prototype.updateActiveTab = function() {
|
SidePanelTab.prototype.updateActiveTab = function() {
|
||||||
|
if ($.oc.sideNav === undefined) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
if (!this.panelVisible && ($(window).width() < this.options.breakpoint || !this.panelFixed())) {
|
if (!this.panelVisible && ($(window).width() < this.options.breakpoint || !this.panelFixed())) {
|
||||||
$.oc.sideNav.unsetActiveItem()
|
$.oc.sideNav.unsetActiveItem()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,6 @@ body.mainmenu-open {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
font-size: @font-size-base;
|
font-size: @font-size-base;
|
||||||
color: inherit;
|
color: inherit;
|
||||||
outline: none;
|
|
||||||
|
|
||||||
&:hover {
|
&:hover {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
|
|
|
||||||
|
|
@ -78,6 +78,9 @@ body.outer {
|
||||||
label {
|
label {
|
||||||
color: @color-outer-muted-text;
|
color: @color-outer-muted-text;
|
||||||
}
|
}
|
||||||
|
input#remember {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.forgot-password {
|
.forgot-password {
|
||||||
|
|
|
||||||
|
|
@ -425,6 +425,15 @@ class FormField
|
||||||
$result = array_get($this->attributes, $position, []);
|
$result = array_get($this->attributes, $position, []);
|
||||||
$result = $this->filterAttributes($result, $position);
|
$result = $this->filterAttributes($result, $position);
|
||||||
|
|
||||||
|
// Field is required, so add the "required" attribute
|
||||||
|
if ($position === 'field' && $this->required && (!isset($result['required']) || $result['required'])) {
|
||||||
|
$result['required'] = '';
|
||||||
|
}
|
||||||
|
// The "required" attribute is set and falsy, so unset it
|
||||||
|
elseif ($position === 'field' && isset($result['required']) && !$result['required']) {
|
||||||
|
unset($result['required']);
|
||||||
|
}
|
||||||
|
|
||||||
return $htmlBuild ? Html::attributes($result) : $result;
|
return $htmlBuild ? Html::attributes($result) : $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -137,7 +137,9 @@ class TagList extends FormWidgetBase
|
||||||
$newTags = $this->customTags ? array_diff($names, $existingTags) : [];
|
$newTags = $this->customTags ? array_diff($names, $existingTags) : [];
|
||||||
|
|
||||||
foreach ($newTags as $newTag) {
|
foreach ($newTags as $newTag) {
|
||||||
$newModel = $relationModel::create([$this->nameFrom => $newTag]);
|
$newModel = new $relationModel;
|
||||||
|
$newModel->{$this->nameFrom} = $newTag;
|
||||||
|
$newModel->save();
|
||||||
$existingTags[$newModel->getKey()] = $newTag;
|
$existingTags[$newModel->getKey()] = $newTag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,639 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
'auth' => [
|
||||||
|
'title' => 'Administratorska sekcija',
|
||||||
|
'invalid_login' => 'Unešeni detalji se ne podudaraju sa onima u bazi, pokušajte ponovo.',
|
||||||
|
],
|
||||||
|
'field' => [
|
||||||
|
'invalid_type' => 'Iskorišćen tip polja nije validan :type.',
|
||||||
|
'options_method_invalid_model' => "Atribut ':field' ne vraća validni model. Pokušaj da eksplicitno specificiraš metod opcija za model klase :model.",
|
||||||
|
'options_method_not_exists' => "Model klase :model mora definisati metod :method() koji vraća opcije za polje obrasca ':field'.",
|
||||||
|
'colors_method_not_exists' => "Model klase :model mora da definiše metod :method() koji vraća heksadecimalne kodove boje za polje obrasca ':field'.",
|
||||||
|
],
|
||||||
|
'widget' => [
|
||||||
|
'not_registered' => "Klasa posredničkog elementa ':name' nije registrovana",
|
||||||
|
'not_bound' => "Kalasa posredničkog elementa ':name' nije vezana za kontroler",
|
||||||
|
],
|
||||||
|
'page' => [
|
||||||
|
'untitled' => 'Bez naziva',
|
||||||
|
'404' => [
|
||||||
|
'label' => 'Stranica nije pronađena',
|
||||||
|
'help' => "Traženi URL nije pronađen. Možda tražiš nešto drugo?",
|
||||||
|
'back_link' => 'Nazad na prošlu stranicu',
|
||||||
|
],
|
||||||
|
'access_denied' => [
|
||||||
|
'label' => 'Pristup odbijen',
|
||||||
|
'help' => "Nemaš odgovarajuće dozvole za pristup ovoj stranici.",
|
||||||
|
'cms_link' => 'Nazad na pozadinski sistem',
|
||||||
|
],
|
||||||
|
'no_database' => [
|
||||||
|
'label' => 'Baza podataka nedostaje',
|
||||||
|
'help' => "Baza podataka je neophodna za pristup pozadinskom sistemu. Proveri da li je baza podataka konfigurisana kako treba i pokušaj ponovo.",
|
||||||
|
'cms_link' => 'Nazad na početnu stranicu',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'partial' => [
|
||||||
|
'not_found_name' => "Parcijal ':name' nije pronađen.",
|
||||||
|
'invalid_name' => 'Naziv parcijala nije validan: :name.',
|
||||||
|
],
|
||||||
|
'ajax_handler' => [
|
||||||
|
'invalid_name' => 'Naziv AJAX rukovatelja nije validan: :name.',
|
||||||
|
'not_found' => "AJAX rukovatelj ':name' nije pronađen.",
|
||||||
|
],
|
||||||
|
'account' => [
|
||||||
|
'impersonate' => 'Oponašaj korisnika',
|
||||||
|
'impersonate_confirm' => 'Da li zaista želiš da oponašaš ovog korisnika? Možeš se vratiti na originalno stanje kada se izloguješ.',
|
||||||
|
'impersonate_success' => 'Sada oponašaš ovog korisnika',
|
||||||
|
'impersonate_working' => 'Oponašanje...',
|
||||||
|
'impersonating' => 'Oponašanje :full_name',
|
||||||
|
'stop_impersonating' => 'Prestani sa oponašanjem',
|
||||||
|
'unsuspend' => 'Obustavljena suspenzija',
|
||||||
|
'unsuspend_confirm' => 'Da li zaista želiš da obustaviš suspenziju za ovog korisnika?',
|
||||||
|
'unsuspend_success' => 'Korisnik više nije supsendovan.',
|
||||||
|
'unsuspend_working' => 'Obustavljanje suspenzije...',
|
||||||
|
'signed_in_as' => 'Ulogovan kao :full_name',
|
||||||
|
'sign_out' => 'Izloguj se',
|
||||||
|
'login' => 'Logovanje',
|
||||||
|
'reset' => 'Resetuj',
|
||||||
|
'restore' => 'Povrati',
|
||||||
|
'login_placeholder' => 'login',
|
||||||
|
'password_placeholder' => 'lozinka',
|
||||||
|
'remember_me' => 'Ostani ulogovan',
|
||||||
|
'forgot_password' => 'Zaboravljena lozinka?',
|
||||||
|
'enter_email' => 'Unesi svoj email',
|
||||||
|
'enter_login' => 'Unesi svoj login',
|
||||||
|
'email_placeholder' => 'email',
|
||||||
|
'enter_new_password' => 'Unesi novu lozinku',
|
||||||
|
'password_reset' => 'Resetovanje lozinke',
|
||||||
|
'restore_success' => 'Poruka sa instrukcijama je poslata na vašu adresu.',
|
||||||
|
'restore_error' => "Korisnik nije pronađen sa navedenom vrednošću: ':login'",
|
||||||
|
'reset_success' => 'Lozinka je resetovana, možeš se ulogovati.',
|
||||||
|
'reset_error' => 'Priloženi podaci za resetovanje lozinke nisu validni. Pokušaj ponovo!',
|
||||||
|
'reset_fail' => 'Resetovanje lozinke nije moguće!',
|
||||||
|
'apply' => 'Primeni',
|
||||||
|
'cancel' => 'Otkaži',
|
||||||
|
'delete' => 'Izbriši',
|
||||||
|
'ok' => 'OK',
|
||||||
|
],
|
||||||
|
'dashboard' => [
|
||||||
|
'menu_label' => 'Kontrolna tabla',
|
||||||
|
'widget_label' => 'Posrednički element',
|
||||||
|
'widget_width' => 'Širina',
|
||||||
|
'full_width' => 'puna širina',
|
||||||
|
'manage_widgets' => 'Upravljanje posredničkim elementima',
|
||||||
|
'add_widget' => 'Dodaj posrednički element',
|
||||||
|
'widget_inspector_title' => 'Konfiguracija posredničkog elementa',
|
||||||
|
'widget_inspector_description' => 'Konfiguriši izveštaj za posrednički element',
|
||||||
|
'widget_columns_label' => 'Širina :columns',
|
||||||
|
'widget_columns_description' => 'Širina posredničkog elementa, broj između 1 i 12.',
|
||||||
|
'widget_columns_error' => 'Unesi širinu posredničkog elementa kao broj između 1 i 12.',
|
||||||
|
'columns' => '{1} kolona|[2,Inf] kolone',
|
||||||
|
'widget_new_row_label' => 'Novi red na silu',
|
||||||
|
'widget_new_row_description' => 'Postavi posrednički element u novi red.',
|
||||||
|
'widget_title_label' => 'Naslov posredničkog elementa',
|
||||||
|
'widget_title_error' => 'Naslov za posrednički element je neophodan.',
|
||||||
|
'reset_layout' => 'Resetuj plan',
|
||||||
|
'reset_layout_confirm' => 'Resetuj plan na podrazumevani?',
|
||||||
|
'reset_layout_success' => 'Plan je resetovan',
|
||||||
|
'make_default' => 'Učini podrazumevanim',
|
||||||
|
'make_default_confirm' => 'Postavi trenutni plan kao podrazumevani?',
|
||||||
|
'make_default_success' => 'Trenutni plan je sada podrazumevani',
|
||||||
|
'collapse_all' => 'Sklopi sve',
|
||||||
|
'expand_all' => 'Rasklopi sve',
|
||||||
|
'status' => [
|
||||||
|
'widget_title_default' => 'Status sistema',
|
||||||
|
'update_available' => '{0} ispravki dostupno!|{1} ispravka dostupna!|[2,Inf] ispravke dostupne!',
|
||||||
|
'updates_pending' => 'Čekaju se ispravke softvera',
|
||||||
|
'updates_nil' => 'Softver je ažuriran',
|
||||||
|
'updates_link' => 'Ažuriraj',
|
||||||
|
'warnings_pending' => 'Neki problemi zahtevaju vašu pažnju',
|
||||||
|
'warnings_nil' => 'Nema upozorenja za prikaz',
|
||||||
|
'warnings_link' => 'Pogled',
|
||||||
|
'core_build' => 'Verzija sistema',
|
||||||
|
'event_log' => 'Log događaja',
|
||||||
|
'request_log' => 'Log zahteva',
|
||||||
|
'app_birthday' => 'Na mreži od',
|
||||||
|
],
|
||||||
|
'welcome' => [
|
||||||
|
'widget_title_default' => 'Dobrodošli',
|
||||||
|
'welcome_back_name' => 'Dobrodošli nazad na :app, :name.',
|
||||||
|
'welcome_to_name' => 'Dobrodošli na :app, :name.',
|
||||||
|
'first_sign_in' => 'Prvi put ste se ulogovali.',
|
||||||
|
'last_sign_in' => 'Vaše poslednje logovanje je bilo na',
|
||||||
|
'view_access_logs' => 'Prikaži logove pristupa',
|
||||||
|
'nice_message' => 'Lep dan želim!',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'user' => [
|
||||||
|
'name' => 'Administrator',
|
||||||
|
'menu_label' => 'Administratori',
|
||||||
|
'menu_description' => 'Upravljaj administratorima pozadinskog sistema, grupama i dozvolama.',
|
||||||
|
'list_title' => 'Upravljanje administratorima',
|
||||||
|
'new' => 'Novi administrator',
|
||||||
|
'login' => 'Logovanje',
|
||||||
|
'first_name' => 'Ime',
|
||||||
|
'last_name' => 'Prezime',
|
||||||
|
'full_name' => 'Ime i prezime',
|
||||||
|
'email' => 'Email',
|
||||||
|
'role_field' => 'Rola',
|
||||||
|
'role_comment' => 'Role definišu dozvole korisnika, koje mogu biti pregažene na korisničkom nivou ili preko taba za dozvole.',
|
||||||
|
'groups' => 'Grupe',
|
||||||
|
'groups_comment' => 'Speicificiraj grupe kojima nalog treba pripadati.',
|
||||||
|
'avatar' => 'Avatar',
|
||||||
|
'password' => 'Lozinka',
|
||||||
|
'password_confirmation' => 'Potvrdi lozinku',
|
||||||
|
'permissions' => 'Dozvole',
|
||||||
|
'account' => 'Nalog',
|
||||||
|
'superuser' => 'Super korisnik',
|
||||||
|
'superuser_comment' => 'Dozvoli ovom nalogu pristup svim delovima sistema bez ograničenja. Super korisnici mogu dodavati i upravljati drugim korisnicima.',
|
||||||
|
'send_invite' => 'Pošalji pozivnicu preko mejla',
|
||||||
|
'send_invite_comment' => 'Pošalji poruku dobrodošlice koja sadrži informacije za logovanje.',
|
||||||
|
'delete_confirm' => 'Obriši administratora?',
|
||||||
|
'return' => 'Nazad na listu administratora',
|
||||||
|
'allow' => 'Dozvoli',
|
||||||
|
'inherit' => 'Nasledi',
|
||||||
|
'deny' => 'Odbij',
|
||||||
|
'activated' => 'Aktiviran',
|
||||||
|
'last_login' => 'Poslednje logovanje:',
|
||||||
|
'created_at' => 'Napravljen:',
|
||||||
|
'updated_at' => 'Ažuriran:',
|
||||||
|
'deleted_at' => 'Obrisan:',
|
||||||
|
'show_deleted' => 'Prikaži izbrisane',
|
||||||
|
'group' => [
|
||||||
|
'name' => 'Grupe',
|
||||||
|
'name_field' => 'Naziv',
|
||||||
|
'name_comment' => 'Naziv je prikazan u listi grupa u administratorskom obrascu.',
|
||||||
|
'description_field' => 'Opis',
|
||||||
|
'is_new_user_default_field_label' => 'Osnovna grupa',
|
||||||
|
'is_new_user_default_field_comment' => 'Podrazumevano dodaj nove administratore ovoj grupi.',
|
||||||
|
'code_field' => 'Kod',
|
||||||
|
'code_comment' => 'Unesi jedinstveni kod ako želiš da pristupaš objektu grupe preko API-ja.',
|
||||||
|
'menu_label' => 'Upravljaj grupama',
|
||||||
|
'list_title' => 'Upravljaj grupama',
|
||||||
|
'new' => 'Nova grupa',
|
||||||
|
'delete_confirm' => 'Izbriši ovu administratorsku grupu?',
|
||||||
|
'return' => 'Nazad na listu grupa',
|
||||||
|
'users_count' => 'Korisnici',
|
||||||
|
],
|
||||||
|
'role' => [
|
||||||
|
'name' => 'Rola',
|
||||||
|
'name_field' => 'Naziv',
|
||||||
|
'name_comment' => 'Naziv je prikazan u listi rola u administratorskom obrascu.',
|
||||||
|
'description_field' => 'Opis',
|
||||||
|
'code_field' => 'Kod',
|
||||||
|
'code_comment' => 'Unesi jedinstveni kod ako želiš da pristupaš objektu role preko API-ja.',
|
||||||
|
'menu_label' => 'Upravljaj rolama',
|
||||||
|
'list_title' => 'Upravljaj rolama',
|
||||||
|
'new' => 'Nova rola',
|
||||||
|
'delete_confirm' => 'Izbriši ovu administratorsku rolu?',
|
||||||
|
'return' => 'Nazad na listu rola',
|
||||||
|
'users_count' => 'Korisnici',
|
||||||
|
],
|
||||||
|
'preferences' => [
|
||||||
|
'not_authenticated' => 'Nema autentifikovanog korisnika za učitavanje ili čuvanje podeski.',
|
||||||
|
],
|
||||||
|
'trashed_hint_title' => 'Ovaj nalog je izbrisan',
|
||||||
|
'trashed_hint_desc' => 'Ovaj nalog je izbrisan i neće više moći da se koristi za logovanje. Da ga povratiš, klikni na ikonicu u donjem desnom uglu',
|
||||||
|
],
|
||||||
|
'list' => [
|
||||||
|
'default_title' => 'Lista',
|
||||||
|
'search_prompt' => 'Traži...',
|
||||||
|
'no_records' => 'Nema zapisa u ovom pogledu.',
|
||||||
|
'missing_model' => 'Lista ponašanja korišćena u klasi :class nema definisan model.',
|
||||||
|
'missing_column' => 'Nema definicija za sledeće kolone: :columns.',
|
||||||
|
'missing_columns' => 'Lista korišćena u klasi :class nema definisane kolone.',
|
||||||
|
'missing_definition' => "Lista ponašanja ne sadrži definiciju za ':field'.",
|
||||||
|
'missing_parent_definition' => "Lista ponašanja ne sadrži definiciju za ':definition'.",
|
||||||
|
'behavior_not_ready' => 'Lista ponašanja nije inicijalizovana, proveri da li je metoda makeLists() pozvana u kontroleru.',
|
||||||
|
'invalid_column_datetime' => "Vrednost kolone ':column' nije DateTime objekat, da li ti nedostaje \$dates referenca u modelu?",
|
||||||
|
'pagination' => 'Prikazani zapisi: :from-:to od ukupno :total',
|
||||||
|
'first_page' => 'Prva strana',
|
||||||
|
'last_page' => 'Poslednja strana',
|
||||||
|
'prev_page' => 'Prošla strana',
|
||||||
|
'next_page' => 'Sledeća strana',
|
||||||
|
'refresh' => 'Osveži',
|
||||||
|
'updating' => 'Ažuriranje...',
|
||||||
|
'loading' => 'Učitavanje...',
|
||||||
|
'setup_title' => 'Podešavanje liste',
|
||||||
|
'setup_help' => 'Koristi polja za potvrdu za biranje kolona koje želiš da vidiš u listi. Možeš menjati položaj kolona prevlačenjem na gore ili dole.',
|
||||||
|
'records_per_page' => 'Zapisa po strani',
|
||||||
|
'records_per_page_help' => 'Izaberi broj zapisa za prikazivanje po strani. Imaj samo na umu da veliki broj zapisa po strani može smanjiti performanse.',
|
||||||
|
'check' => 'Proveri',
|
||||||
|
'delete_selected' => 'Izbriši izabrane',
|
||||||
|
'delete_selected_empty' => 'Nema izabranih zapisa za brisanje.',
|
||||||
|
'delete_selected_confirm' => 'Izbriši izabrane zapise?',
|
||||||
|
'delete_selected_success' => 'Izabrani zapisi su obrisani.',
|
||||||
|
'column_switch_true' => 'Da',
|
||||||
|
'column_switch_false' => 'Ne',
|
||||||
|
],
|
||||||
|
'fileupload' => [
|
||||||
|
'attachment' => 'Prilog',
|
||||||
|
'help' => 'Dodaj naslov i opis za ovaj prilog.',
|
||||||
|
'title_label' => 'Naslov',
|
||||||
|
'description_label' => 'Opis',
|
||||||
|
'default_prompt' => 'Klikni na %s ili prevuci fajl ovde za otpremanje',
|
||||||
|
'attachment_url' => 'URL priloga',
|
||||||
|
'upload_file' => 'Otpremi fajl',
|
||||||
|
'upload_error' => 'Greška pri otpremanju',
|
||||||
|
'remove_confirm' => 'Da li si siguran?',
|
||||||
|
'remove_file' => 'Izbriši fajl',
|
||||||
|
],
|
||||||
|
'repeater' => [
|
||||||
|
'add_new_item' => 'Dodaj novi element',
|
||||||
|
'min_items_failed' => 'Ponavljač :name zahteva minimum :min elementa, samo :items je obezbeđeno',
|
||||||
|
'max_items_failed' => 'Ponavljač :name može imati maksimum :max elemenata, :items je obezbeđeno',
|
||||||
|
],
|
||||||
|
'form' => [
|
||||||
|
'create_title' => 'Nova :name',
|
||||||
|
'update_title' => 'Izmeni :name',
|
||||||
|
'preview_title' => 'Pregledaj :name',
|
||||||
|
'create_success' => ':name napravljen',
|
||||||
|
'update_success' => ':name ažuriran',
|
||||||
|
'delete_success' => ':name obrisan',
|
||||||
|
'restore_success' => ':name povraćen',
|
||||||
|
'reset_success' => 'Resetovanje završeno',
|
||||||
|
'missing_id' => 'ID obrasca nije specificiran.',
|
||||||
|
'missing_model' => 'Ponašanje obrasca koje se koristi u klasi :class nema definisan model.',
|
||||||
|
'missing_definition' => "Ponašanje obrasca ne sadrži sledeće polje: ':field'.",
|
||||||
|
'not_found' => 'Zapis obrasca sa identifikatorom :id nije pronađen.',
|
||||||
|
'action_confirm' => 'Da li ste sigurni?',
|
||||||
|
'create' => 'Napravi',
|
||||||
|
'create_and_close' => 'Napravi i zatvori',
|
||||||
|
'creating' => 'Pravljenje...',
|
||||||
|
'creating_name' => 'Pravljenje :name...',
|
||||||
|
'save' => 'Sačuvaj',
|
||||||
|
'save_and_close' => 'Sačuvaj i zatvori',
|
||||||
|
'saving' => 'Čuvanje...',
|
||||||
|
'saving_name' => 'Čuvanje :name...',
|
||||||
|
'delete' => 'Izbriši',
|
||||||
|
'deleting' => 'Brisanje...',
|
||||||
|
'confirm_delete' => 'Izbriši zapis?',
|
||||||
|
'confirm_delete_multiple' => 'Izbriši odabrane zapise?',
|
||||||
|
'deleting_name' => 'Brisanje :name...',
|
||||||
|
'restore' => 'Povrati',
|
||||||
|
'restoring' => 'Vraćanje...',
|
||||||
|
'confirm_restore' => 'Da li zaista želite da povratite ovaj zapis?',
|
||||||
|
'reset_default' => 'Resetuj na osnovno',
|
||||||
|
'resetting' => 'Resetovanje',
|
||||||
|
'resetting_name' => 'Resetovanje :name',
|
||||||
|
'undefined_tab' => 'Razno',
|
||||||
|
'field_off' => 'Isključi',
|
||||||
|
'field_on' => 'Uključi',
|
||||||
|
'add' => 'Dodaj',
|
||||||
|
'apply' => 'Primeni',
|
||||||
|
'cancel' => 'Poništi',
|
||||||
|
'close' => 'Zatvori',
|
||||||
|
'confirm' => 'Potvrdi',
|
||||||
|
'reload' => 'Ponovo učitaj',
|
||||||
|
'complete' => 'Kompletno',
|
||||||
|
'ok' => 'OK',
|
||||||
|
'or' => 'ili',
|
||||||
|
'confirm_tab_close' => 'Zatvori tab? Nesačuvane promene će biti izgubljene.',
|
||||||
|
'behavior_not_ready' => 'Ponašanje obrasca se nije inicijalizovalo, proveri da li je metoda initForm() pozvana.',
|
||||||
|
'preview_no_files_message' => 'Nema otpremljenih fajlova.',
|
||||||
|
'preview_no_media_message' => 'Nema izabranih medija.',
|
||||||
|
'preview_no_record_message' => 'Nema izabranih zapisa.',
|
||||||
|
'select' => 'Izaberi',
|
||||||
|
'select_all' => 'Izaberi sve',
|
||||||
|
'select_none' => 'Ukloni odabire',
|
||||||
|
'select_placeholder' => 'izaberi',
|
||||||
|
'insert_row' => 'Ubaci red',
|
||||||
|
'insert_row_below' => 'Ubaci red ispod',
|
||||||
|
'delete_row' => 'Izbriši red',
|
||||||
|
'concurrency_file_changed_title' => 'Fajl je izmenjen',
|
||||||
|
'concurrency_file_changed_description' => "Fajl nad kojim je rađeno je u međuvremenu promenjen od strane drugog korisnika. Možeš ponovo da ga učitaš i izgubiš svoje promene, ili ga jednostavno pregaziš.",
|
||||||
|
'return_to_list' => 'Nazad na listu',
|
||||||
|
],
|
||||||
|
'recordfinder' => [
|
||||||
|
'find_record' => 'Pronađi zapis',
|
||||||
|
'invalid_model_class' => 'Klasa modela ":modelClass" za pretragu nije validna',
|
||||||
|
'cancel' => 'Otkaži',
|
||||||
|
],
|
||||||
|
'pagelist' => [
|
||||||
|
'page_link' => 'Link strane',
|
||||||
|
'select_page' => 'Izaberi stranu...',
|
||||||
|
],
|
||||||
|
'relation' => [
|
||||||
|
'missing_config' => "Relacioni odnos nema konfiguraciju za ':config'.",
|
||||||
|
'missing_definition' => "Relacioni odnos ne sadrži definiciju za polje ':field'.",
|
||||||
|
'missing_model' => 'Relacioni odnos korišćen u klasi :class nema definisan model.',
|
||||||
|
'invalid_action_single' => 'Ova radnja se ne može izvršiti na jednoj vezi.',
|
||||||
|
'invalid_action_multi' => 'Ova radnja se ne može izvršiti na više veza.',
|
||||||
|
'help' => 'Klikni na element za dodavanje',
|
||||||
|
'related_data' => 'Srodni podatak: :name',
|
||||||
|
'add' => 'Dodaj',
|
||||||
|
'add_selected' => 'Dodaj izabrane',
|
||||||
|
'add_a_new' => 'Dodaj novu :name',
|
||||||
|
'link_selected' => 'Zakači izabrane',
|
||||||
|
'link_a_new' => 'Zakači novu :name',
|
||||||
|
'cancel' => 'Otkaži',
|
||||||
|
'close' => 'Zatvori',
|
||||||
|
'add_name' => 'Dodaj :name',
|
||||||
|
'create' => 'Napravi',
|
||||||
|
'create_name' => 'Napravi :name',
|
||||||
|
'update' => 'Ažuriraj',
|
||||||
|
'update_name' => 'Ažuriraj :name',
|
||||||
|
'preview' => 'Pregledaj',
|
||||||
|
'preview_name' => 'Pregledaj :name',
|
||||||
|
'remove' => 'Ukloni',
|
||||||
|
'remove_name' => 'Ukloni :name',
|
||||||
|
'delete' => 'Izbriši',
|
||||||
|
'delete_name' => 'Izbriši :name',
|
||||||
|
'delete_confirm' => 'Da li ste sigurni?',
|
||||||
|
'link' => 'Zakači',
|
||||||
|
'link_name' => 'Zakači :name',
|
||||||
|
'unlink' => 'Otkači',
|
||||||
|
'unlink_name' => 'Otkači :name',
|
||||||
|
'unlink_confirm' => 'Da li ste sigurni?',
|
||||||
|
],
|
||||||
|
'reorder' => [
|
||||||
|
'default_title' => 'Promeni redosled',
|
||||||
|
'no_records' => 'Ne postoje elementi za razmeštanje.',
|
||||||
|
],
|
||||||
|
'model' => [
|
||||||
|
'name' => 'Model',
|
||||||
|
'not_found' => "Model ':class' sa odabranim identifikatorom :id nije pronađen",
|
||||||
|
'missing_id' => 'ID za pretragu modela nije specificiran.',
|
||||||
|
'missing_relation' => "Model ':class' ne sadrži definiciju za relaciju: ':relation'.",
|
||||||
|
'missing_method' => "Model ':class' ne sadrži metod: ':method'.",
|
||||||
|
'invalid_class' => "Model :model korišćen u klasi :class nije validan, mora da nasledi klasu \Model.",
|
||||||
|
'mass_assignment_failed' => "Greška pri masovnom dodeljivanju za atribut modela: ':attribute'.",
|
||||||
|
],
|
||||||
|
'warnings' => [
|
||||||
|
'tips' => 'Saveti za konfigurisanje sistema',
|
||||||
|
'tips_description' => 'Postoje problemi na koje bi trebalo da obratiš pažnju da bi konfigurisao sistem kako treba.',
|
||||||
|
'permissions' => 'PHP ne može pristupiti direktorijumu :name ili njegovim poddirektorijuma zarad upisivanja. Promeni RWX dozvole na serveru za ovaj direktorijum.',
|
||||||
|
'extension' => 'Produžetak za PHP :name nije instaliran. Instaliraj ovu biblioteku i produžetak.',
|
||||||
|
'plugin_missing' => 'Produžetak :name je obavezan ali nije instaliran. Instaliraj ovaj produžetak.',
|
||||||
|
'debug' => 'Uključen je mod za ispravljanje grešaka što nije preporučljivo.',
|
||||||
|
'decompileBackendAssets' => 'Sredstva u pozadinskom sistemu trenutno nisu kompajlovana što nije preporučljivo.',
|
||||||
|
],
|
||||||
|
'editor' => [
|
||||||
|
'menu_label' => 'Podešavanje editora',
|
||||||
|
'menu_description' => 'Izmeni postavke globalnog editora, kao što su veličina fonta, boje, itd.',
|
||||||
|
'font_size' => 'Veličina fonta',
|
||||||
|
'tab_size' => 'Veličina taba',
|
||||||
|
'use_hard_tabs' => 'Uvođenje pomoću tabova',
|
||||||
|
'code_folding' => 'Presavijanje koda',
|
||||||
|
'code_folding_begin' => 'Označi početak',
|
||||||
|
'code_folding_begin_end' => 'Označi početak i kraj',
|
||||||
|
'autocompletion' => 'Automatsko dovršavanje',
|
||||||
|
'word_wrap' => 'Prelomi redove',
|
||||||
|
'highlight_active_line' => 'Istakni aktivne linije',
|
||||||
|
'auto_closing' => 'Automatski zatvori tagove',
|
||||||
|
'show_invisibles' => 'Prikaži nevidljive karaktere',
|
||||||
|
'show_gutter' => 'Prikaži margine za povezivanje',
|
||||||
|
'basic_autocompletion' => 'Osnovno automatsko dovršavanje (Ctrl + Space)',
|
||||||
|
'live_autocompletion' => 'Instant automatsko dovršavanje',
|
||||||
|
'enable_snippets' => 'Uključi isečke za kod (Tab)',
|
||||||
|
'display_indent_guides' => 'Prikaži pomoćne margine za uvođenje',
|
||||||
|
'show_print_margin' => 'Prikaži margine za štampu',
|
||||||
|
'mode_off' => 'Isključen mod',
|
||||||
|
'mode_fluid' => 'Fluidan mod',
|
||||||
|
'40_characters' => '40 karaktera',
|
||||||
|
'80_characters' => '80 karaktera',
|
||||||
|
'theme' => 'Boje',
|
||||||
|
'markup_styles' => 'Stilovi označavanja',
|
||||||
|
'custom_styles' => 'Proizvoljni stilovi',
|
||||||
|
'custom styles_comment' => 'Proizvoljni stilovi za uključivanje u HTML editor.',
|
||||||
|
'markup_classes' => 'Klase označavanja',
|
||||||
|
'paragraph' => 'Paragraf',
|
||||||
|
'link' => 'Link',
|
||||||
|
'table' => 'Tabela',
|
||||||
|
'table_cell' => 'Ćelija tabele',
|
||||||
|
'image' => 'Slika',
|
||||||
|
'label' => 'Oznaka',
|
||||||
|
'class_name' => 'Naziv klase',
|
||||||
|
'markup_tags' => 'Tagovi označavanja',
|
||||||
|
'allowed_empty_tags' => 'Dozvoljeni prazni tagovi',
|
||||||
|
'allowed_empty_tags_comment' => 'Lista tagova koji se ne brišu kada nemaju sadržaj.',
|
||||||
|
'allowed_tags' => 'Dozvoljeni tagovi',
|
||||||
|
'allowed_tags_comment' => 'Lista dozvoljenih tagova.',
|
||||||
|
'no_wrap' => 'Ne umeći tagove',
|
||||||
|
'no_wrap_comment' => 'Lista tagova koji se ne trebaju umetati u blokovske tagove.',
|
||||||
|
'remove_tags' => 'Ukloni tagove',
|
||||||
|
'remove_tags_comment' => 'Lista tagova koji se brišu zajedno sa njihovim sadržajem.',
|
||||||
|
'line_breaker_tags' => 'Tagovi za liniju prekida',
|
||||||
|
'line_breaker_tags_comment' => 'Lista tagova koji se koriste za postavljanje linije prekida za elemente.',
|
||||||
|
'toolbar_buttons' => 'Traka sa alatkama',
|
||||||
|
'toolbar_buttons_comment' => 'Traka sa alatkama će obično biti prikazana u editoru.',
|
||||||
|
'toolbar_buttons_preset' => 'Ubaci već podešenu konfiguraciju za traku sa alatkama:',
|
||||||
|
'toolbar_buttons_presets' => [
|
||||||
|
'default' => 'Osnovna',
|
||||||
|
'minimal' => 'Minimalna',
|
||||||
|
'full' => 'Kompletna',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'tooltips' => [
|
||||||
|
'preview_website' => 'Pregledaj sajt',
|
||||||
|
],
|
||||||
|
'mysettings' => [
|
||||||
|
'menu_label' => 'Moja podešavanja',
|
||||||
|
'menu_description' => 'Podešavanja vezana za administratorski nalog',
|
||||||
|
],
|
||||||
|
'myaccount' => [
|
||||||
|
'menu_label' => 'Moj nalog',
|
||||||
|
'menu_description' => 'Ažuriraj detalje svog naloga kao što su ime, prezime, email adresa i lozinka.',
|
||||||
|
'menu_keywords' => 'bezbednosno logovanje',
|
||||||
|
],
|
||||||
|
'branding' => [
|
||||||
|
'menu_label' => 'Izmene pozadinskog sistema',
|
||||||
|
'menu_description' => 'Izmene za administratorsku sekciju poput naziva, boja, logoa, itd.',
|
||||||
|
'brand' => 'Brend',
|
||||||
|
'logo' => 'Logo',
|
||||||
|
'logo_description' => 'Otpremi željeni logo za pozadinski sistem.',
|
||||||
|
'favicon' => 'Ikonica',
|
||||||
|
'favicon_description' => 'Otpremi željenu ikonicu za pozadinski sistem.',
|
||||||
|
'app_name' => 'Naziv aplikacije',
|
||||||
|
'app_name_description' => 'Ovo ime će se prikazati kao naslov pozadinskog sistema.',
|
||||||
|
'app_tagline' => 'Slogan aplikacije',
|
||||||
|
'app_tagline_description' => 'Ovaj slogan će se prikazati na strani za logovanje na pozadinski sistem.',
|
||||||
|
'colors' => 'Boje',
|
||||||
|
'primary_color' => 'Primarne boje',
|
||||||
|
'secondary_color' => 'Sekundarne boje',
|
||||||
|
'accent_color' => 'Akcentovane boje',
|
||||||
|
'styles' => 'Stilovi',
|
||||||
|
'custom_stylesheet' => 'Proizvoljni stil',
|
||||||
|
'navigation' => 'Navigacija',
|
||||||
|
'menu_mode' => 'Stil menija',
|
||||||
|
'menu_mode_inline' => 'Uveden',
|
||||||
|
'menu_mode_inline_no_icons' => 'Uveden (bez ikonica)',
|
||||||
|
'menu_mode_tile' => 'Poređan',
|
||||||
|
'menu_mode_collapsed' => 'Sklopljen',
|
||||||
|
],
|
||||||
|
'backend_preferences' => [
|
||||||
|
'menu_label' => 'Postavke pozadinskog sistema',
|
||||||
|
'menu_description' => 'Upravljaj postavkama tvog naloga.',
|
||||||
|
'region' => 'Region',
|
||||||
|
'code_editor' => 'Editor koda',
|
||||||
|
'timezone' => 'Vremenska zona',
|
||||||
|
'timezone_comment' => 'Podesi prikazane datume na osnovu ove vremenske zone.',
|
||||||
|
'locale' => 'Prevod',
|
||||||
|
'locale_comment' => 'Izaberi željeni jezik prevoda.',
|
||||||
|
],
|
||||||
|
'access_log' => [
|
||||||
|
'hint' => 'Ovaj log prikazuje listu uspešnih logova od strane administratora. Logovi se čuvaju ukupno :days dana.',
|
||||||
|
'menu_label' => 'Logovi pristupa',
|
||||||
|
'menu_description' => 'Prikaži listu uspešnih logovanja na pozadinski sistem.',
|
||||||
|
'id' => 'ID',
|
||||||
|
'created_at' => 'Datum & vreme',
|
||||||
|
'type' => 'Tip',
|
||||||
|
'login' => 'Logovanje',
|
||||||
|
'ip_address' => 'IP adresa',
|
||||||
|
'first_name' => 'Ime',
|
||||||
|
'last_name' => 'Prezime',
|
||||||
|
'email' => 'Email',
|
||||||
|
],
|
||||||
|
'filter' => [
|
||||||
|
'all' => 'svi',
|
||||||
|
'options_method_not_exists' => "Model klase :model mora definisati povratne opcije metoda :method() za ':filter' filter.",
|
||||||
|
'date_all' => 'svi periodi',
|
||||||
|
'number_all' => 'svi brojevi',
|
||||||
|
],
|
||||||
|
'import_export' => [
|
||||||
|
'upload_csv_file' => '1. Otpremi CSV fajl',
|
||||||
|
'import_file' => 'Uvezi fajl',
|
||||||
|
'row' => 'Red :row',
|
||||||
|
'first_row_contains_titles' => 'Prvi red sadrži naslove kolona',
|
||||||
|
'first_row_contains_titles_desc' => 'Ostavite ovo polje označeno ako se prvi red u CSV fajlu koristi za naslove kolona.',
|
||||||
|
'match_columns' => '2. Upari kolone fajla sa kolonama baze podataka',
|
||||||
|
'file_columns' => 'Kolone fajla',
|
||||||
|
'database_fields' => 'Polja u bazi podataka',
|
||||||
|
'set_import_options' => '3. Postavi uvozne opcije',
|
||||||
|
'export_output_format' => '1. Izvezi izlazni format',
|
||||||
|
'file_format' => 'Format fajla',
|
||||||
|
'standard_format' => 'Standardni format',
|
||||||
|
'custom_format' => 'Proizvoljni format',
|
||||||
|
'delimiter_char' => 'Granični znak',
|
||||||
|
'enclosure_char' => 'Ogradni znak',
|
||||||
|
'escape_char' => 'Komandni znak',
|
||||||
|
'select_columns' => '2. Izaberi kolone za izvoz',
|
||||||
|
'column' => 'Kolona',
|
||||||
|
'columns' => 'Kolone',
|
||||||
|
'set_export_options' => '3. Postavi izvozne opcije',
|
||||||
|
'show_ignored_columns' => 'Prikaži ignorisane kolone',
|
||||||
|
'auto_match_columns' => 'Automatski upari kolone',
|
||||||
|
'created' => 'Napravljeni',
|
||||||
|
'updated' => 'Ažurirani',
|
||||||
|
'skipped' => 'Preskočeni',
|
||||||
|
'warnings' => 'Upozorenja',
|
||||||
|
'errors' => 'Greške',
|
||||||
|
'skipped_rows' => 'Preskočeni redovi',
|
||||||
|
'import_progress' => 'Progres uvoza',
|
||||||
|
'processing' => 'Procesovanje',
|
||||||
|
'import_error' => 'Greška pri uvozu',
|
||||||
|
'upload_valid_csv' => 'Otpremi validan CSV fajl.',
|
||||||
|
'drop_column_here' => 'Spusti kolonu ovde...',
|
||||||
|
'ignore_this_column' => 'Ignoriši ovu kolonu',
|
||||||
|
'processing_successful_line1' => 'Proces izvoza fajla je završen!',
|
||||||
|
'processing_successful_line2' => 'Pretraživač će sada biti preusmeren na fajl za preuzimanje.',
|
||||||
|
'export_progress' => 'Progres izvoza',
|
||||||
|
'export_error' => 'Greška pri izvozu',
|
||||||
|
'column_preview' => 'Pregled kolone',
|
||||||
|
'file_not_found_error' => 'Fajl nije pronađen',
|
||||||
|
'empty_error' => 'Nije bilo podataka za izvoz',
|
||||||
|
'empty_import_columns_error' => 'Specificiraj neke kolone za uvoz.',
|
||||||
|
'match_some_column_error' => 'Upari prvo neke kolone.',
|
||||||
|
'required_match_column_error' => 'Specificiraj par za obavezno polje: :label.',
|
||||||
|
'empty_export_columns_error' => 'Specificiraj kolone za izvoz.',
|
||||||
|
'behavior_missing_uselist_error' => 'Moraš implementirati ponašanje za "ListController" sa omogućenom opcijom izvoza - "useList."',
|
||||||
|
'missing_model_class_error' => 'Izaberi svojstvo modela kalse za svojstvo: :type',
|
||||||
|
'missing_column_id_error' => 'Identifikator kolone ne postoji',
|
||||||
|
'unknown_column_error' => 'Nepoznata kolona',
|
||||||
|
'encoding_not_supported_error' => 'Kodiranje izvorne datoteke nije prepoznato. Izaberite opciju prilagođenog formata datoteke sa odgovarajućim kodiranjem da biste uvezli datoteku.',
|
||||||
|
'encoding_format' => 'Format enkodovanja',
|
||||||
|
'encodings' => [
|
||||||
|
'utf_8' => 'UTF-8',
|
||||||
|
'us_ascii' => 'US-ASCII',
|
||||||
|
'iso_8859_1' => 'ISO-8859-1 (Latin-1, Zapadnoevropski)',
|
||||||
|
'iso_8859_2' => 'ISO-8859-2 (Latin-2, Srednjoevropski)',
|
||||||
|
'iso_8859_3' => 'ISO-8859-3 (Latin-3, Južnoevropski)',
|
||||||
|
'iso_8859_4' => 'ISO-8859-4 (Latin-4, Severnoevropski)',
|
||||||
|
'iso_8859_5' => 'ISO-8859-5 (Latin, Ćirilični)',
|
||||||
|
'iso_8859_6' => 'ISO-8859-6 (Latin, Arapski)',
|
||||||
|
'iso_8859_7' => 'ISO-8859-7 (Latin, Grčki)',
|
||||||
|
'iso_8859_8' => 'ISO-8859-8 (Latin, Hebrejski)',
|
||||||
|
'iso_8859_0' => 'ISO-8859-9 (Latin-5, Turski)',
|
||||||
|
'iso_8859_10' => 'ISO-8859-10 (Latin-6, Nordijski)',
|
||||||
|
'iso_8859_11' => 'ISO-8859-11 (Latin, Tajlandski)',
|
||||||
|
'iso_8859_13' => 'ISO-8859-13 (Latin-7, Baltički region)',
|
||||||
|
'iso_8859_14' => 'ISO-8859-14 (Latin-8, Keltski)',
|
||||||
|
'iso_8859_15' => 'ISO-8859-15 (Latin-9, Zapadnoevropska revizija sa euro znakom)',
|
||||||
|
'windows_1250' => 'Windows-1250 (CP1250, Severnoevropski i istočnoevropski)',
|
||||||
|
'windows_1251' => 'Windows-1251 (CP1251)',
|
||||||
|
'windows_1252' => 'Windows-1252 (CP1252)',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'permissions' => [
|
||||||
|
'manage_media' => 'Otpremi i upravljaj medijima - slikama, video i audio zapisima, dokumentima',
|
||||||
|
],
|
||||||
|
'mediafinder' => [
|
||||||
|
'label' => 'Pretražuj medije',
|
||||||
|
'default_prompt' => 'Klikni na %s dugme za traženje elementa',
|
||||||
|
'no_image' => 'Slika nije pronađena',
|
||||||
|
],
|
||||||
|
'media' => [
|
||||||
|
'menu_label' => 'Mediji',
|
||||||
|
'upload' => 'Otpremanje',
|
||||||
|
'move' => 'Pomeri',
|
||||||
|
'delete' => 'Izbriši',
|
||||||
|
'add_folder' => 'Dodaj direktorijum',
|
||||||
|
'search' => 'Traži',
|
||||||
|
'display' => 'Prikaži',
|
||||||
|
'filter_everything' => 'Sve',
|
||||||
|
'filter_images' => 'Slike',
|
||||||
|
'filter_video' => 'Video zapisi',
|
||||||
|
'filter_audio' => 'Audio zapisi',
|
||||||
|
'filter_documents' => 'Dokumenta',
|
||||||
|
'library' => 'Biblioteka',
|
||||||
|
'size' => 'Veličina',
|
||||||
|
'title' => 'Naslov',
|
||||||
|
'last_modified' => 'Poslednja modifikacija',
|
||||||
|
'public_url' => 'URL',
|
||||||
|
'click_here' => 'Klikni ovde',
|
||||||
|
'thumbnail_error' => 'Greška pri generisanju pregledne slike.',
|
||||||
|
'return_to_parent' => 'Nazad na nadređeni direktorijum',
|
||||||
|
'return_to_parent_label' => 'Idi nazad ..',
|
||||||
|
'nothing_selected' => 'Ništa nije izabrano.',
|
||||||
|
'multiple_selected' => 'Više elemenata je izabrano.',
|
||||||
|
'uploading_file_num' => 'Otpremi :number fajl(ova)...',
|
||||||
|
'uploading_complete' => 'Otpremanje završeno',
|
||||||
|
'uploading_error' => 'Otpremanje neuspešno',
|
||||||
|
'type_blocked' => 'Fajl je blokiran iz bezbednosnih razloga.',
|
||||||
|
'order_by' => 'Sortiraj po',
|
||||||
|
'direction' => 'Pravac',
|
||||||
|
'direction_asc' => 'Uzlazni',
|
||||||
|
'direction_desc' => 'Silazni',
|
||||||
|
'folder' => 'Direktorijum',
|
||||||
|
'no_files_found' => 'Nijedan fajl nije pronađen.',
|
||||||
|
'delete_empty' => 'Izaberi elemente za brisanje.',
|
||||||
|
'delete_confirm' => 'Izbriši odabran element(e)?',
|
||||||
|
'error_renaming_file' => 'Greška pri promeni naziva elementa.',
|
||||||
|
'new_folder_title' => 'Novi direktorijum',
|
||||||
|
'folder_name' => 'Naziv direktorijuma',
|
||||||
|
'error_creating_folder' => 'Greška pri pravljenju direktorijuma',
|
||||||
|
'folder_or_file_exist' => 'Direktorijum ili fajl sa navedenim nazivom već postoji.',
|
||||||
|
'move_empty' => 'Izaberi elemente za pomeranje.',
|
||||||
|
'move_popup_title' => 'Pomeri fajlove ili direktorijume',
|
||||||
|
'move_destination' => 'Odredišni direktorijum',
|
||||||
|
'please_select_move_dest' => 'Izaberi odredišni direktorijum.',
|
||||||
|
'move_dest_src_match' => 'Izaberi drugi odredišni direktorijum.',
|
||||||
|
'empty_library' => 'Otpremi fajlove ili napravi direktorijume.',
|
||||||
|
'insert' => 'Ubaci',
|
||||||
|
'crop_and_insert' => 'Iseci & ubaci',
|
||||||
|
'select_single_image' => 'Izaberi jednu sliku.',
|
||||||
|
'selection_not_image' => 'Izabrani element nije slika.',
|
||||||
|
'restore' => 'Poništi sve promene',
|
||||||
|
'resize' => 'Promeni veličinu...',
|
||||||
|
'selection_mode_normal' => 'Normalna',
|
||||||
|
'selection_mode_fixed_ratio' => 'Fiksirani odnos',
|
||||||
|
'selection_mode_fixed_size' => 'Fiksirana veličina',
|
||||||
|
'height' => 'Visina',
|
||||||
|
'width' => 'Širina',
|
||||||
|
'selection_mode' => 'Mod selekcije',
|
||||||
|
'resize_image' => 'Promeni veličinu slike',
|
||||||
|
'image_size' => 'Veličina slike:',
|
||||||
|
'selected_size' => 'Izabrana veličina:',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
@ -210,6 +210,7 @@ class Preference extends Model
|
||||||
'pt-br' => [Lang::get('system::lang.locale.pt-br'), 'flag-br'],
|
'pt-br' => [Lang::get('system::lang.locale.pt-br'), 'flag-br'],
|
||||||
'pt-pt' => [Lang::get('system::lang.locale.pt-pt'), 'flag-pt'],
|
'pt-pt' => [Lang::get('system::lang.locale.pt-pt'), 'flag-pt'],
|
||||||
'ro' => [Lang::get('system::lang.locale.ro'), 'flag-ro'],
|
'ro' => [Lang::get('system::lang.locale.ro'), 'flag-ro'],
|
||||||
|
'rs' => [Lang::get('system::lang.locale.rs'), 'flag-rs'],
|
||||||
'ru' => [Lang::get('system::lang.locale.ru'), 'flag-ru'],
|
'ru' => [Lang::get('system::lang.locale.ru'), 'flag-ru'],
|
||||||
'sk' => [Lang::get('system::lang.locale.sk'), 'flag-sk'],
|
'sk' => [Lang::get('system::lang.locale.sk'), 'flag-sk'],
|
||||||
'sl' => [Lang::get('system::lang.locale.sl'), 'flag-si'],
|
'sl' => [Lang::get('system::lang.locale.sl'), 'flag-si'],
|
||||||
|
|
|
||||||
|
|
@ -1076,8 +1076,8 @@ class Lists extends WidgetBase
|
||||||
/*
|
/*
|
||||||
* Apply default value.
|
* Apply default value.
|
||||||
*/
|
*/
|
||||||
if ($value === '' || $value === null) {
|
if (($value === '' || is_null($value)) && !empty($column->defaults)) {
|
||||||
$value = $column->defaults;
|
$value = Lang::get($column->defaults);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,14 @@ class Search extends WidgetBase
|
||||||
* Trigger class event, merge results as viewable array
|
* Trigger class event, merge results as viewable array
|
||||||
*/
|
*/
|
||||||
$params = func_get_args();
|
$params = func_get_args();
|
||||||
$result = $this->fireEvent('search.submit', [$params]);
|
try {
|
||||||
|
$result = $this->fireEvent('search.submit', [$params]);
|
||||||
|
} catch (\Throwable $e) {
|
||||||
|
// Remove the search term from the session if the search has failed.
|
||||||
|
$this->setActiveTerm('');
|
||||||
|
throw $e;
|
||||||
|
}
|
||||||
|
|
||||||
if ($result && is_array($result)) {
|
if ($result && is_array($result)) {
|
||||||
return call_user_func_array('array_merge', $result);
|
return call_user_func_array('array_merge', $result);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,303 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
'cms_object' => [
|
||||||
|
'invalid_file' => 'Naziv fajla nije validan: :name. Nazivi fajlova mogu sadržati samo alfanumeričke simbole, donje crte, povlake i tačke. Validni primeri su: strana.htm, strana, direktorijum/strana',
|
||||||
|
'invalid_property' => "Svojstvo ':name' se ne može postaviti",
|
||||||
|
'file_already_exists' => "Fajl ':name' već postoji.",
|
||||||
|
'error_saving' => "Greška pri čuvanju fajla ':name'. Proveri dozvole na sistemu.",
|
||||||
|
'error_creating_directory' => 'Greška pri pravljenju direktorijuma :name. Proveri dozvole na sistemu.',
|
||||||
|
'invalid_file_extension' => 'Ekstenzija fajla nije validna: :invalid. Dozvoljene ekstenzije su: :allowed.',
|
||||||
|
'error_deleting' => "Greška pri brisanju šablonskog fajla ':name'. Proveri dozvole na sistemu.",
|
||||||
|
'delete_success' => 'Izbrisani šabloni: :count.',
|
||||||
|
'file_name_required' => 'Polje za naziv fajla je obavezno.',
|
||||||
|
'safe_mode_enabled' => 'Signurni režim je trenutno omogućen. Izmena PHP koda u CMS šablonima je trenutno onemogućena. Da isključiš siguran režim rada, izmeni vrednost konfiguracione promenljive `cms.enableSafeMode` u `false`.',
|
||||||
|
],
|
||||||
|
'dashboard' => [
|
||||||
|
'active_theme' => [
|
||||||
|
'widget_title_default' => 'Sajt',
|
||||||
|
'online' => 'Na mreži',
|
||||||
|
'maintenance' => 'U fazi održavanju',
|
||||||
|
'manage_themes' => 'Upravljaj temama',
|
||||||
|
'customize_theme' => 'Izmeni temu',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'theme' => [
|
||||||
|
'not_found_name' => "Tema ':name' nije pronađena.",
|
||||||
|
'by_author' => 'Autor: :name',
|
||||||
|
'active' => [
|
||||||
|
'not_set' => 'Aktivna tema nije postavljena.',
|
||||||
|
'not_found' => 'Aktivna tema nije pronađena.',
|
||||||
|
],
|
||||||
|
'edit' => [
|
||||||
|
'not_set' => 'Tema za izmenu nije postavljena.',
|
||||||
|
'not_found' => 'Tema za izmenu nije pronađena.',
|
||||||
|
'not_match' => "Objekat kojem pokušavaš da pristupiš ne pripada temi koju menjaš. Osveži stranicu.",
|
||||||
|
],
|
||||||
|
'settings_menu' => 'Teme',
|
||||||
|
'settings_menu_description' => 'Upravljaj temama i opcijama prilagođavanja.',
|
||||||
|
'default_tab' => 'Svojstva',
|
||||||
|
'name_label' => 'Naziv',
|
||||||
|
'name_create_placeholder' => 'Naziv nove teme',
|
||||||
|
'author_label' => 'Autor',
|
||||||
|
'author_placeholder' => 'Pravno ili privatno lice',
|
||||||
|
'description_label' => 'Opis',
|
||||||
|
'description_placeholder' => 'Opis teme',
|
||||||
|
'homepage_label' => 'Početna stranica',
|
||||||
|
'homepage_placeholder' => 'URL sajta',
|
||||||
|
'code_label' => 'Kod',
|
||||||
|
'code_placeholder' => 'Jedinstveni kod ove teme za distribuciju',
|
||||||
|
'preview_image_label' => 'Slika pregleda',
|
||||||
|
'preview_image_placeholder' => 'Putanja za sliku pregleda teme.',
|
||||||
|
'dir_name_label' => 'Naziv direktorijuma',
|
||||||
|
'dir_name_create_label' => 'Odredišni direktorijum za temu',
|
||||||
|
'theme_label' => 'Tema',
|
||||||
|
'theme_title' => 'Teme',
|
||||||
|
'activate_button' => 'Aktiviraj',
|
||||||
|
'active_button' => 'Aktiviraj',
|
||||||
|
'customize_theme' => 'Izmeni temu',
|
||||||
|
'customize_button' => 'Izmeni',
|
||||||
|
'duplicate_button' => 'Duplikat',
|
||||||
|
'duplicate_title' => 'Dupliraj temu',
|
||||||
|
'duplicate_theme_success' => 'Tema duplirana!',
|
||||||
|
'manage_button' => 'Upravljaj',
|
||||||
|
'manage_title' => 'Upravljaj temom',
|
||||||
|
'edit_properties_title' => 'Tema',
|
||||||
|
'edit_properties_button' => 'Izmeni svojstva',
|
||||||
|
'save_properties' => 'Snimi svojstva',
|
||||||
|
'import_button' => 'Uvezi',
|
||||||
|
'import_title' => 'Uvezi temu',
|
||||||
|
'import_theme_success' => 'Tema uvežena!',
|
||||||
|
'import_uploaded_file' => 'Arhivni fajl teme',
|
||||||
|
'import_overwrite_label' => 'Pregazi postojeće fajlove',
|
||||||
|
'import_overwrite_comment' => 'Nemoj čekirati ovo polje ako želiš samo da uvezeš nove fajlove',
|
||||||
|
'import_folders_label' => 'Direktorijumi',
|
||||||
|
'import_folders_comment' => 'Odaberi direktorijume teme koje želiš da uvezeš',
|
||||||
|
'export_button' => 'Eksportuj',
|
||||||
|
'export_title' => 'Eksportuj temu',
|
||||||
|
'export_folders_label' => 'Direktorijumi',
|
||||||
|
'export_folders_comment' => 'Odaberi direktorijume teme koje želiš da izvezeš',
|
||||||
|
'delete_button' => 'Izbriši',
|
||||||
|
'delete_confirm' => 'Izbriši ovu temu? Ova radnja se ne može poništiti.',
|
||||||
|
'delete_active_theme_failed' => 'Aktivna tema se ne može izbrisati, pokušaj prvo da napraviš i aktiviraš drugu.',
|
||||||
|
'delete_theme_success' => 'Tema izbrisana!',
|
||||||
|
'create_title' => 'Napravi temu',
|
||||||
|
'create_button' => 'Napravi',
|
||||||
|
'create_new_blank_theme' => 'Napravi novu praznu temu',
|
||||||
|
'create_theme_success' => 'Tema napravljena!',
|
||||||
|
'create_theme_required_name' => 'Odaberi naziv za temu.',
|
||||||
|
'new_directory_name_label' => 'Direktorijum teme',
|
||||||
|
'new_directory_name_comment' => 'Odaberi drugi naziv za direktorijum teme koja je duplikat.',
|
||||||
|
'dir_name_invalid' => 'Naziv može sadržati samo brojeve, latinska slova, kao i sledeće simbole: _-',
|
||||||
|
'dir_name_taken' => 'Direktorijum za željenu temu postoji.',
|
||||||
|
'find_more_themes' => 'Pronađi još tema',
|
||||||
|
'saving' => 'Čuvanje tema...',
|
||||||
|
'return' => 'Nazad na listu tema',
|
||||||
|
],
|
||||||
|
'maintenance' => [
|
||||||
|
'settings_menu' => 'Mod održavanja',
|
||||||
|
'settings_menu_description' => 'Konfiguriši mod održavanja stranice i uključi/isključi isti.',
|
||||||
|
'is_enabled' => 'Uključi mod održavanja',
|
||||||
|
'is_enabled_comment' => 'Izaberi stranicu za prikazivanje kada je mod održavanja uključen.',
|
||||||
|
'hint' => 'Mod održavanja će prikazati odabranu stranicu korisnicima koji nisu ulogovani preko pozadinskog sistema.',
|
||||||
|
],
|
||||||
|
'page' => [
|
||||||
|
'not_found_name' => "Strana ':name' nije pronađena",
|
||||||
|
'not_found' => [
|
||||||
|
'label' => 'Strana nije pronađena',
|
||||||
|
'help' => 'Tražena strana nije pronađena.',
|
||||||
|
],
|
||||||
|
'custom_error' => [
|
||||||
|
'label' => 'Greška sa stranom',
|
||||||
|
'help' => "Žao nam je, nešto je pošlo po zlu pa strana ne može biti prikazana.",
|
||||||
|
],
|
||||||
|
'menu_label' => 'Strane',
|
||||||
|
'unsaved_label' => 'Nesačuvana strana(e)',
|
||||||
|
'no_list_records' => 'Nema pronađenih strana',
|
||||||
|
'new' => 'Nova strana',
|
||||||
|
'invalid_url' => 'Format URL-a nije validan. URL treba početi sa kosom crtom i može sadržati brojeve, latinska slova, kao i sledeće simbole: ._-[]:?|/+*^$',
|
||||||
|
'delete_confirm_multiple' => 'Izbriši odabrane strane?',
|
||||||
|
'delete_confirm_single' => 'Izbriši ovu stranu?',
|
||||||
|
'no_layout' => '-- nema plana --',
|
||||||
|
'cms_page' => 'CMS strana',
|
||||||
|
'title' => 'Naslov strane',
|
||||||
|
'url' => 'URL strane',
|
||||||
|
'file_name' => 'Naziv fajla strane',
|
||||||
|
],
|
||||||
|
'layout' => [
|
||||||
|
'not_found_name' => "Plan ':name' nije pronađen",
|
||||||
|
'menu_label' => 'Planovi',
|
||||||
|
'unsaved_label' => 'Nesačuvani plan(ovi)',
|
||||||
|
'no_list_records' => 'Nema pronađenih planova',
|
||||||
|
'new' => 'Novi plan',
|
||||||
|
'delete_confirm_multiple' => 'Izbriši izabrane planove?',
|
||||||
|
'delete_confirm_single' => 'Izbriši ovaj plan?',
|
||||||
|
],
|
||||||
|
'partial' => [
|
||||||
|
'not_found_name' => "Parcijal ':name' nije pronađen",
|
||||||
|
'invalid_name' => 'Naziv parcijala nije validan: :name.',
|
||||||
|
'menu_label' => 'Parcijal',
|
||||||
|
'unsaved_label' => 'Nesačuvan parcijal(i)',
|
||||||
|
'no_list_records' => 'Nema pronađenih parcijala',
|
||||||
|
'delete_confirm_multiple' => 'Izbriši izabrane parcijale?',
|
||||||
|
'delete_confirm_single' => 'Izbriši ovaj parcijal?',
|
||||||
|
'new' => 'Novi parcijal',
|
||||||
|
],
|
||||||
|
'content' => [
|
||||||
|
'not_found_name' => "Fajl sadržaja ':name' nije pronađen",
|
||||||
|
'menu_label' => 'Sadržaj',
|
||||||
|
'unsaved_label' => 'Nesačuvani sadržaj',
|
||||||
|
'no_list_records' => 'Fajlovi za sardžaj nisu pronađeni',
|
||||||
|
'delete_confirm_multiple' => 'Izbriši odabrane fajlove ili direktorijume za sadržaj?',
|
||||||
|
'delete_confirm_single' => 'Izbriši ovaj fajl za sadržaj?',
|
||||||
|
'new' => 'Novi fajl za sadržaj',
|
||||||
|
],
|
||||||
|
'ajax_handler' => [
|
||||||
|
'invalid_name' => 'Naziv za AJAX rukovatelja nije validan: :name.',
|
||||||
|
'not_found' => "AJAX rukovatelj ':name' nije pronađen.",
|
||||||
|
],
|
||||||
|
'cms' => [
|
||||||
|
'menu_label' => 'CMS',
|
||||||
|
],
|
||||||
|
'sidebar' => [
|
||||||
|
'add' => 'Dodaj',
|
||||||
|
'search' => 'Traži...',
|
||||||
|
],
|
||||||
|
'editor' => [
|
||||||
|
'settings' => 'Podešavanja',
|
||||||
|
'title' => 'Naslov',
|
||||||
|
'new_title' => 'Naslov nove strane',
|
||||||
|
'url' => 'URL',
|
||||||
|
'filename' => 'Naziv fajla',
|
||||||
|
'layout' => 'Plan',
|
||||||
|
'description' => 'Opis',
|
||||||
|
'preview' => 'Pregled',
|
||||||
|
'meta' => 'Meta',
|
||||||
|
'meta_title' => 'Meta Naslov',
|
||||||
|
'meta_description' => 'Meta Opis',
|
||||||
|
'markup' => 'Označavanje',
|
||||||
|
'code' => 'Kod',
|
||||||
|
'content' => 'Sadržaj',
|
||||||
|
'hidden' => 'Skrivena',
|
||||||
|
'hidden_comment' => 'Skrivena stranica je dostupna samo korisnicima koji su ulogovani na pozadinski sistem.',
|
||||||
|
'enter_fullscreen' => 'Uđite u režim punog ekrana',
|
||||||
|
'exit_fullscreen' => 'Izađite iz režima punog ekrana',
|
||||||
|
'open_searchbox' => 'Otvori polje za pretragu',
|
||||||
|
'close_searchbox' => 'Zatvori polje za pretragu',
|
||||||
|
'open_replacebox' => 'Otvori polje za zamenu',
|
||||||
|
'close_replacebox' => 'Zatvori polje za zamenu',
|
||||||
|
'commit' => 'Izvrši',
|
||||||
|
'reset' => 'Resetuj',
|
||||||
|
'commit_confirm' => 'Da li zaista želite da izvršite promene nad ovim fajlom? Ovo će pregaziti postojeći',
|
||||||
|
'reset_confirm' => 'Da li zaista želite da resetujete ovaj fajl? Ovo će u potpunosti zameniti trenutni sa onim koji je na sistemu',
|
||||||
|
'committing' => 'Izvršavanje',
|
||||||
|
'resetting' => 'Resetovanje',
|
||||||
|
'commit_success' => 'Izvršenje :type je uspešno.',
|
||||||
|
'reset_success' => 'Resetovanje :type je uspešno.',
|
||||||
|
],
|
||||||
|
'asset' => [
|
||||||
|
'menu_label' => 'Sredstva',
|
||||||
|
'unsaved_label' => 'Nesačuvano sredstvo(a)',
|
||||||
|
'drop_down_add_title' => 'Dodaj...',
|
||||||
|
'drop_down_operation_title' => 'Radnja...',
|
||||||
|
'upload_files' => 'Otpremi fajl(ove)',
|
||||||
|
'create_file' => 'Napravi fajl',
|
||||||
|
'create_directory' => 'Napravi direktorijum',
|
||||||
|
'directory_popup_title' => 'Novi direktorijum',
|
||||||
|
'directory_name' => 'Naziv direktorijuma',
|
||||||
|
'rename' => 'Promeni naziv',
|
||||||
|
'delete' => 'Izbriši',
|
||||||
|
'move' => 'Pomeri',
|
||||||
|
'select' => 'Izaberi',
|
||||||
|
'new' => 'Novi fajl',
|
||||||
|
'rename_popup_title' => 'Promeni naziv',
|
||||||
|
'rename_new_name' => 'Novi naziv',
|
||||||
|
'invalid_path' => 'Putanja može sadržati samo brojeve, latinska slova, razmake, kao i sledeće simbole: ._-/',
|
||||||
|
'error_deleting_file' => 'Greška pri brisanju fajla :name.',
|
||||||
|
'error_deleting_dir_not_empty' => 'Greška pri brisanju direktorijuma :name. Direktorijum nije prazan.',
|
||||||
|
'error_deleting_dir' => 'Greška pri brisanju direktorijuma :name.',
|
||||||
|
'invalid_name' => 'Naziv može sadržati samo brojeve, latinska slova, razmake, kao i sledeće simbole: ._-',
|
||||||
|
'original_not_found' => 'Originalni fajl ili direktorijum nije pronađen',
|
||||||
|
'already_exists' => 'Fajl ili direktorijum sa ovim nazivom već postoji',
|
||||||
|
'error_renaming' => 'Greška pri promeni naziva fajla ili direktorijuma',
|
||||||
|
'name_cant_be_empty' => 'Naziv ne može biti prazan',
|
||||||
|
'too_large' => 'Otpremljeni fajl je previše velik. Maksimalna dozvoljena veličina je :max_size',
|
||||||
|
'type_not_allowed' => 'Samo sledeći tipovi fajla su dozvoljeni: :allowed_types',
|
||||||
|
'file_not_valid' => 'Fajl nije validan',
|
||||||
|
'error_uploading_file' => "Greška pri otpremanju fajla ':name': :error",
|
||||||
|
'move_please_select' => 'Izaberi',
|
||||||
|
'move_destination' => 'Odredište direktorijuma',
|
||||||
|
'move_popup_title' => 'Pomeri sredstva',
|
||||||
|
'move_button' => 'Pomeri',
|
||||||
|
'selected_files_not_found' => 'Izabrani fajlovi nisu pronađeni',
|
||||||
|
'select_destination_dir' => 'Izaberi odredišni direktorijum',
|
||||||
|
'destination_not_found' => 'Odredišni direktorijum nije pronađen',
|
||||||
|
'error_moving_file' => 'Greška pri pomeranju fajla :file',
|
||||||
|
'error_moving_directory' => 'Greška pri pomeranju direktorijuma :dir',
|
||||||
|
'error_deleting_directory' => 'Greška pri brisanju originalnog direktorijuma :dir',
|
||||||
|
'no_list_records' => 'Nema pronađenih fajlova',
|
||||||
|
'delete_confirm' => 'Izbriši izabrane fajlove ili direktorijume?',
|
||||||
|
'path' => 'Putanja',
|
||||||
|
],
|
||||||
|
'component' => [
|
||||||
|
'menu_label' => 'Komponente',
|
||||||
|
'unnamed' => 'Bez naziva',
|
||||||
|
'no_description' => 'Opis nije dat',
|
||||||
|
'alias' => 'Pseudonim',
|
||||||
|
'alias_description' => 'Jedinstven naziv koji je dat komponenti kada se koristi u stranici ili kodu plana.',
|
||||||
|
'validation_message' => 'Pseudonimi komponente su neophodni i mogu sadržati samo latinske simbole, brojeve i donje crte. Pseudonimi bi trebalo da počinju latinskim simbolom.',
|
||||||
|
'invalid_request' => 'Šablon ne može biti sačuvan zbog podataka koji nisu validni.',
|
||||||
|
'no_records' => 'Nema pronađenih komponenti',
|
||||||
|
'not_found' => "Komponenta ':name' nije pronađena.",
|
||||||
|
'method_not_found' => "Komponenta ':name' ne sadrži ':method'.",
|
||||||
|
'soft_component' => 'Opciona komponenta',
|
||||||
|
'soft_component_description' => 'Ova komponenta nedostaje ali je opciona.',
|
||||||
|
],
|
||||||
|
'template' => [
|
||||||
|
'invalid_type' => 'Nepoznati tip šablona.',
|
||||||
|
'not_found' => 'Šablon nije pronađen.',
|
||||||
|
'saved' => 'Šablon sačuvan.',
|
||||||
|
'no_list_records' => 'Zapisi nisu pronađeni',
|
||||||
|
'delete_confirm' => 'Izbriši izabrane šablone?',
|
||||||
|
'order_by' => 'Sortiraj po',
|
||||||
|
],
|
||||||
|
'permissions' => [
|
||||||
|
'name' => 'CMS',
|
||||||
|
'manage_content' => 'Upravljaj sadržajem sajta',
|
||||||
|
'manage_assets' => 'Upravljaj slikama, JS i CSS fajlovima sajta',
|
||||||
|
'manage_pages' => 'Napravi, modifikuj i izbriši stranice sajta',
|
||||||
|
'manage_layouts' => 'Napravi, modifikuj i izbriši planove CMS-a',
|
||||||
|
'manage_partials' => 'Napravi, modifikuj i izbriši parcijale CMS-a',
|
||||||
|
'manage_themes' => 'Aktiviraj, deaktiviraj i konfiguriši teme CMS-a',
|
||||||
|
'manage_theme_options' => 'Konfiguriši opcije izmena za aktivnu temu',
|
||||||
|
],
|
||||||
|
'theme_log' => [
|
||||||
|
'hint' => 'Ovaj log prikazuje promene načinjene nad temom od strane administratora u pozadinskom delu sistema.',
|
||||||
|
'menu_label' => 'Log teme',
|
||||||
|
'menu_description' => 'Prikaži promene načinjene nad aktivnom temom.',
|
||||||
|
'empty_link' => 'Isprazni log teme',
|
||||||
|
'empty_loading' => 'Pražnjenje loga teme...',
|
||||||
|
'empty_success' => 'Log teme je ispražnjen',
|
||||||
|
'return_link' => 'Vrati se na logove teme',
|
||||||
|
'id' => 'ID',
|
||||||
|
'id_label' => 'ID loga',
|
||||||
|
'created_at' => 'Datum & vreme',
|
||||||
|
'user' => 'Korisnik',
|
||||||
|
'type' => 'Tip',
|
||||||
|
'type_create' => 'Napravi',
|
||||||
|
'type_update' => 'Ažuriraj',
|
||||||
|
'type_delete' => 'Izbriši',
|
||||||
|
'theme_name' => 'Tema',
|
||||||
|
'theme_code' => 'Kod teme',
|
||||||
|
'old_template' => 'Šablon (Stari)',
|
||||||
|
'new_template' => 'Šablon (Novi)',
|
||||||
|
'template' => 'Šablon',
|
||||||
|
'diff' => 'Izmene',
|
||||||
|
'old_value' => 'Stara vrednost',
|
||||||
|
'new_value' => 'Nova vrednost',
|
||||||
|
'preview_title' => 'Izmene šablona',
|
||||||
|
'template_updated' => 'Šablon je ažuriran',
|
||||||
|
'template_created' => 'Šablon je napravljen',
|
||||||
|
'template_deleted' => 'Šablon je izbrisan',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
@ -254,6 +254,7 @@ class ServiceProvider extends ModuleServiceProvider
|
||||||
$this->registerConsoleCommand('plugin.disable', 'System\Console\PluginDisable');
|
$this->registerConsoleCommand('plugin.disable', 'System\Console\PluginDisable');
|
||||||
$this->registerConsoleCommand('plugin.enable', 'System\Console\PluginEnable');
|
$this->registerConsoleCommand('plugin.enable', 'System\Console\PluginEnable');
|
||||||
$this->registerConsoleCommand('plugin.refresh', 'System\Console\PluginRefresh');
|
$this->registerConsoleCommand('plugin.refresh', 'System\Console\PluginRefresh');
|
||||||
|
$this->registerConsoleCommand('plugin.rollback', 'System\Console\PluginRollback');
|
||||||
$this->registerConsoleCommand('plugin.list', 'System\Console\PluginList');
|
$this->registerConsoleCommand('plugin.list', 'System\Console\PluginList');
|
||||||
|
|
||||||
$this->registerConsoleCommand('theme.install', 'System\Console\ThemeInstall');
|
$this->registerConsoleCommand('theme.install', 'System\Console\ThemeInstall');
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@ textarea {background-image:none}
|
||||||
a {color:#0181b9;text-decoration:none}
|
a {color:#0181b9;text-decoration:none}
|
||||||
a:hover,
|
a:hover,
|
||||||
a:focus {color:#001721;text-decoration:underline}
|
a:focus {color:#001721;text-decoration:underline}
|
||||||
a:focus {outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}
|
a:focus {outline:thin dotted;outline-offset:0;outline:4px auto Highlight;outline:4px auto -webkit-focus-ring-color}
|
||||||
img {vertical-align:middle}
|
img {vertical-align:middle}
|
||||||
.img-responsive {display:block;max-width:100%;height:auto}
|
.img-responsive {display:block;max-width:100%;height:auto}
|
||||||
.img-rounded {-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}
|
.img-rounded {-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ if(window.jQuery.request!==undefined){throw new Error('The OctoberCMS framework
|
||||||
+function($){"use strict";var Request=function(element,handler,options){var $el=this.$el=$(element);this.options=options||{};if(handler===undefined){throw new Error('The request handler name is not specified.')}
|
+function($){"use strict";var Request=function(element,handler,options){var $el=this.$el=$(element);this.options=options||{};if(handler===undefined){throw new Error('The request handler name is not specified.')}
|
||||||
if(!handler.match(/^(?:\w+\:{2})?on*/)){throw new Error('Invalid handler name. The correct handler name format is: "onEvent".')}
|
if(!handler.match(/^(?:\w+\:{2})?on*/)){throw new Error('Invalid handler name. The correct handler name format is: "onEvent".')}
|
||||||
var $form=options.form?$(options.form):$el.closest('form'),$triggerEl=!!$form.length?$form:$el,context={handler:handler,options:options}
|
var $form=options.form?$(options.form):$el.closest('form'),$triggerEl=!!$form.length?$form:$el,context={handler:handler,options:options}
|
||||||
|
if(typeof document.createElement('input').reportValidity=='function'&&$form&&$form[0]&&!$form[0].checkValidity()){$form[0].reportValidity();return false;}
|
||||||
$el.trigger('ajaxSetup',[context])
|
$el.trigger('ajaxSetup',[context])
|
||||||
var _event=jQuery.Event('oc.beforeRequest')
|
var _event=jQuery.Event('oc.beforeRequest')
|
||||||
$triggerEl.trigger(_event,context)
|
$triggerEl.trigger(_event,context)
|
||||||
|
|
@ -24,7 +25,7 @@ if(options.data!==undefined&&!$.isEmptyObject(options.data)){$.extend(data,optio
|
||||||
if(useFiles){requestData=new FormData($form.length?$form.get(0):undefined)
|
if(useFiles){requestData=new FormData($form.length?$form.get(0):undefined)
|
||||||
if($el.is(':file')&&inputName){$.each($el.prop('files'),function(){requestData.append(inputName,this)})
|
if($el.is(':file')&&inputName){$.each($el.prop('files'),function(){requestData.append(inputName,this)})
|
||||||
delete data[inputName]}
|
delete data[inputName]}
|
||||||
$.each(data,function(key){requestData.append(key,this)})}
|
$.each(data,function(key){if(typeof Blob!=="undefined"&&this instanceof Blob&&this.filename){requestData.append(key,this,this.filename)}else{requestData.append(key,this)}})}
|
||||||
else{requestData=[$form.serialize(),$.param(data)].filter(Boolean).join('&')}
|
else{requestData=[$form.serialize(),$.param(data)].filter(Boolean).join('&')}
|
||||||
var requestOptions={url:url,crossDomain:false,global:options.ajaxGlobal,context:context,headers:requestHeaders,success:function(data,textStatus,jqXHR){if(this.options.beforeUpdate.apply(this,[data,textStatus,jqXHR])===false)return
|
var requestOptions={url:url,crossDomain:false,global:options.ajaxGlobal,context:context,headers:requestHeaders,success:function(data,textStatus,jqXHR){if(this.options.beforeUpdate.apply(this,[data,textStatus,jqXHR])===false)return
|
||||||
if(options.evalBeforeUpdate&&eval('(function($el, context, data, textStatus, jqXHR) {'+options.evalBeforeUpdate+'}.call($el.get(0), $el, context, data, textStatus, jqXHR))')===false)return
|
if(options.evalBeforeUpdate&&eval('(function($el, context, data, textStatus, jqXHR) {'+options.evalBeforeUpdate+'}.call($el.get(0), $el, context, data, textStatus, jqXHR))')===false)return
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ if(window.jQuery.request!==undefined){throw new Error('The OctoberCMS framework
|
||||||
+function($){"use strict";var Request=function(element,handler,options){var $el=this.$el=$(element);this.options=options||{};if(handler===undefined){throw new Error('The request handler name is not specified.')}
|
+function($){"use strict";var Request=function(element,handler,options){var $el=this.$el=$(element);this.options=options||{};if(handler===undefined){throw new Error('The request handler name is not specified.')}
|
||||||
if(!handler.match(/^(?:\w+\:{2})?on*/)){throw new Error('Invalid handler name. The correct handler name format is: "onEvent".')}
|
if(!handler.match(/^(?:\w+\:{2})?on*/)){throw new Error('Invalid handler name. The correct handler name format is: "onEvent".')}
|
||||||
var $form=options.form?$(options.form):$el.closest('form'),$triggerEl=!!$form.length?$form:$el,context={handler:handler,options:options}
|
var $form=options.form?$(options.form):$el.closest('form'),$triggerEl=!!$form.length?$form:$el,context={handler:handler,options:options}
|
||||||
|
if(typeof document.createElement('input').reportValidity=='function'&&$form&&$form[0]&&!$form[0].checkValidity()){$form[0].reportValidity();return false;}
|
||||||
$el.trigger('ajaxSetup',[context])
|
$el.trigger('ajaxSetup',[context])
|
||||||
var _event=jQuery.Event('oc.beforeRequest')
|
var _event=jQuery.Event('oc.beforeRequest')
|
||||||
$triggerEl.trigger(_event,context)
|
$triggerEl.trigger(_event,context)
|
||||||
|
|
@ -24,7 +25,7 @@ if(options.data!==undefined&&!$.isEmptyObject(options.data)){$.extend(data,optio
|
||||||
if(useFiles){requestData=new FormData($form.length?$form.get(0):undefined)
|
if(useFiles){requestData=new FormData($form.length?$form.get(0):undefined)
|
||||||
if($el.is(':file')&&inputName){$.each($el.prop('files'),function(){requestData.append(inputName,this)})
|
if($el.is(':file')&&inputName){$.each($el.prop('files'),function(){requestData.append(inputName,this)})
|
||||||
delete data[inputName]}
|
delete data[inputName]}
|
||||||
$.each(data,function(key){requestData.append(key,this)})}
|
$.each(data,function(key){if(typeof Blob!=="undefined"&&this instanceof Blob&&this.filename){requestData.append(key,this,this.filename)}else{requestData.append(key,this)}})}
|
||||||
else{requestData=[$form.serialize(),$.param(data)].filter(Boolean).join('&')}
|
else{requestData=[$form.serialize(),$.param(data)].filter(Boolean).join('&')}
|
||||||
var requestOptions={url:url,crossDomain:false,global:options.ajaxGlobal,context:context,headers:requestHeaders,success:function(data,textStatus,jqXHR){if(this.options.beforeUpdate.apply(this,[data,textStatus,jqXHR])===false)return
|
var requestOptions={url:url,crossDomain:false,global:options.ajaxGlobal,context:context,headers:requestHeaders,success:function(data,textStatus,jqXHR){if(this.options.beforeUpdate.apply(this,[data,textStatus,jqXHR])===false)return
|
||||||
if(options.evalBeforeUpdate&&eval('(function($el, context, data, textStatus, jqXHR) {'+options.evalBeforeUpdate+'}.call($el.get(0), $el, context, data, textStatus, jqXHR))')===false)return
|
if(options.evalBeforeUpdate&&eval('(function($el, context, data, textStatus, jqXHR) {'+options.evalBeforeUpdate+'}.call($el.get(0), $el, context, data, textStatus, jqXHR))')===false)return
|
||||||
|
|
|
||||||
|
|
@ -30,12 +30,23 @@ if (window.jQuery.request !== undefined) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Prepare the options and execute the request
|
* Prepare the options
|
||||||
*/
|
*/
|
||||||
var $form = options.form ? $(options.form) : $el.closest('form'),
|
var $form = options.form ? $(options.form) : $el.closest('form'),
|
||||||
$triggerEl = !!$form.length ? $form : $el,
|
$triggerEl = !!$form.length ? $form : $el,
|
||||||
context = { handler: handler, options: options }
|
context = { handler: handler, options: options }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Validate the form client-side
|
||||||
|
*/
|
||||||
|
if (typeof document.createElement('input').reportValidity == 'function' && $form && $form[0] && !$form[0].checkValidity()) {
|
||||||
|
$form[0].reportValidity();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Execute the request
|
||||||
|
*/
|
||||||
$el.trigger('ajaxSetup', [context])
|
$el.trigger('ajaxSetup', [context])
|
||||||
var _event = jQuery.Event('oc.beforeRequest')
|
var _event = jQuery.Event('oc.beforeRequest')
|
||||||
$triggerEl.trigger(_event, context)
|
$triggerEl.trigger(_event, context)
|
||||||
|
|
@ -107,7 +118,11 @@ if (window.jQuery.request !== undefined) {
|
||||||
}
|
}
|
||||||
|
|
||||||
$.each(data, function(key) {
|
$.each(data, function(key) {
|
||||||
requestData.append(key, this)
|
if (typeof Blob !== "undefined" && this instanceof Blob && this.filename) {
|
||||||
|
requestData.append(key, this, this.filename)
|
||||||
|
} else {
|
||||||
|
requestData.append(key, this)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
|
||||||
|
|
@ -26,9 +26,12 @@
|
||||||
.tab-focus() {
|
.tab-focus() {
|
||||||
// Default
|
// Default
|
||||||
outline: thin dotted;
|
outline: thin dotted;
|
||||||
|
outline-offset: 0px;
|
||||||
|
|
||||||
|
// Firefox
|
||||||
|
outline: 4px auto Highlight;
|
||||||
// WebKit
|
// WebKit
|
||||||
outline: 5px auto -webkit-focus-ring-color;
|
outline: 4px auto -webkit-focus-ring-color;
|
||||||
outline-offset: -2px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Center-align a block level element
|
// Center-align a block level element
|
||||||
|
|
@ -128,4 +131,4 @@
|
||||||
|
|
||||||
.responsive-invisibility() {
|
.responsive-invisibility() {
|
||||||
display: none !important;
|
display: none !important;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,3 @@
|
||||||
/*! Make focus ring standard on every browser */
|
|
||||||
|
|
||||||
// See github issue https://github.com/octobercms/october/issues/4892
|
|
||||||
|
|
||||||
&:focus {
|
|
||||||
outline: none;
|
|
||||||
-webkit-box-shadow: inset 0 1px 2px rgba(27,31,35,.075), 0 0 0 0.2em rgba(3,102,214,.3);
|
|
||||||
box-shadow: inset 0 1px 2px rgba(27,31,35,.075), 0 0 0 0.2em rgba(3,102,214,.3);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*! normalize.css v3.0.0 | MIT License | git.io/normalize */
|
/*! normalize.css v3.0.0 | MIT License | git.io/normalize */
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
|
||||||
|
|
@ -3062,10 +3062,7 @@ FilterWidget.prototype.getPopoverTemplate=function(){return'
|
||||||
name="search" \
|
name="search" \
|
||||||
autocomplete="off" \
|
autocomplete="off" \
|
||||||
class="filter-search-input form-control icon search popup-allow-focus" \
|
class="filter-search-input form-control icon search popup-allow-focus" \
|
||||||
data-request="{{ optionsHandler }}" \
|
data-search /> \
|
||||||
data-load-indicator-opaque \
|
|
||||||
data-load-indicator \
|
|
||||||
data-track-input /> \
|
|
||||||
<div class="filter-items"> \
|
<div class="filter-items"> \
|
||||||
<ul> \
|
<ul> \
|
||||||
{{#available}} \
|
{{#available}} \
|
||||||
|
|
@ -3115,7 +3112,8 @@ $(event.relatedTarget).on('ajaxDone','#controlFilterPopover input.filter-search-
|
||||||
$(event.relatedTarget).on('click','#controlFilterPopover [data-filter-action="apply"]',function(e){e.preventDefault()
|
$(event.relatedTarget).on('click','#controlFilterPopover [data-filter-action="apply"]',function(e){e.preventDefault()
|
||||||
self.filterScope()})
|
self.filterScope()})
|
||||||
$(event.relatedTarget).on('click','#controlFilterPopover [data-filter-action="clear"]',function(e){e.preventDefault()
|
$(event.relatedTarget).on('click','#controlFilterPopover [data-filter-action="clear"]',function(e){e.preventDefault()
|
||||||
self.filterScope(true)})})
|
self.filterScope(true)})
|
||||||
|
$(event.relatedTarget).on('input','#controlFilterPopover input[data-search]',function(e){self.searchQuery($(this))});})
|
||||||
this.$el.on('hide.oc.popover','a.filter-scope',function(){var $scope=$(this)
|
this.$el.on('hide.oc.popover','a.filter-scope',function(){var $scope=$(this)
|
||||||
self.pushOptions(self.activeScopeName)
|
self.pushOptions(self.activeScopeName)
|
||||||
self.activeScopeName=null
|
self.activeScopeName=null
|
||||||
|
|
@ -3230,6 +3228,17 @@ this.updateScopeSetting(this.$activeScope,0)}
|
||||||
this.pushOptions(scopeName);this.isActiveScopeDirty=true;this.$activeScope.data('oc.popover').hide()}
|
this.pushOptions(scopeName);this.isActiveScopeDirty=true;this.$activeScope.data('oc.popover').hide()}
|
||||||
FilterWidget.prototype.getLang=function(name,defaultValue){if($.oc===undefined||$.oc.lang===undefined){return defaultValue}
|
FilterWidget.prototype.getLang=function(name,defaultValue){if($.oc===undefined||$.oc.lang===undefined){return defaultValue}
|
||||||
return $.oc.lang.get(name,defaultValue)}
|
return $.oc.lang.get(name,defaultValue)}
|
||||||
|
FilterWidget.prototype.searchQuery=function($el){if(this.dataTrackInputTimer!==undefined){window.clearTimeout(this.dataTrackInputTimer)}
|
||||||
|
var self=this
|
||||||
|
this.dataTrackInputTimer=window.setTimeout(function(){var
|
||||||
|
lastValue=$el.data('oc.lastvalue'),thisValue=$el.val()
|
||||||
|
if(lastValue!==undefined&&lastValue==thisValue){return}
|
||||||
|
$el.data('oc.lastvalue',thisValue)
|
||||||
|
if(self.lastDataTrackInputRequest){self.lastDataTrackInputRequest.abort()}
|
||||||
|
var data={scopeName:self.activeScopeName,search:thisValue}
|
||||||
|
$.oc.stripeLoadIndicator.show()
|
||||||
|
self.lastDataTrackInputRequest=self.$el.request(self.options.optionsHandler,{data:data}).success(function(data){self.filterAvailable(self.activeScopeName,data.options.available)
|
||||||
|
self.toggleFilterButtons()}).always(function(){$.oc.stripeLoadIndicator.hide()})},300)}
|
||||||
var old=$.fn.filterWidget
|
var old=$.fn.filterWidget
|
||||||
$.fn.filterWidget=function(option){var args=arguments,result
|
$.fn.filterWidget=function(option){var args=arguments,result
|
||||||
this.each(function(){var $this=$(this)
|
this.each(function(){var $this=$(this)
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,3 @@
|
||||||
:focus {outline:none;-webkit-box-shadow:inset 0 1px 2px rgba(27,31,35,.075),0 0 0 .2em rgba(3,102,214,.3);box-shadow:inset 0 1px 2px rgba(27,31,35,.075),0 0 0 .2em rgba(3,102,214,.3)}
|
|
||||||
html {font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
|
html {font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}
|
||||||
body {margin:0}
|
body {margin:0}
|
||||||
article,
|
article,
|
||||||
|
|
@ -90,7 +89,7 @@ textarea {background-image:none}
|
||||||
a {color:#0181b9;text-decoration:none}
|
a {color:#0181b9;text-decoration:none}
|
||||||
a:hover,
|
a:hover,
|
||||||
a:focus {color:#001721;text-decoration:underline}
|
a:focus {color:#001721;text-decoration:underline}
|
||||||
a:focus {outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}
|
a:focus {outline:thin dotted;outline-offset:0;outline:4px auto Highlight;outline:4px auto -webkit-focus-ring-color}
|
||||||
img {vertical-align:middle}
|
img {vertical-align:middle}
|
||||||
.img-responsive {display:block;max-width:100%;height:auto}
|
.img-responsive {display:block;max-width:100%;height:auto}
|
||||||
.img-rounded {-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}
|
.img-rounded {-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px}
|
||||||
|
|
@ -467,7 +466,7 @@ address {margin-bottom:20px;font-style:normal;line-height:1.42857143}
|
||||||
.btn {display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 19.5px;font-size:14px;line-height:1.42857143;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
|
.btn {display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:8px 19.5px;font-size:14px;line-height:1.42857143;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
|
||||||
.btn:focus,
|
.btn:focus,
|
||||||
.btn:active:focus,
|
.btn:active:focus,
|
||||||
.btn.active:focus {outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}
|
.btn.active:focus {outline:thin dotted;outline-offset:0;outline:4px auto Highlight;outline:4px auto -webkit-focus-ring-color}
|
||||||
.btn:hover,
|
.btn:hover,
|
||||||
.btn:focus {color:#fff;text-decoration:none}
|
.btn:focus {color:#fff;text-decoration:none}
|
||||||
.btn:active,
|
.btn:active,
|
||||||
|
|
@ -3690,7 +3689,7 @@ select[multiple],
|
||||||
select[size] {height:auto}
|
select[size] {height:auto}
|
||||||
input[type="file"]:focus,
|
input[type="file"]:focus,
|
||||||
input[type="radio"]:focus,
|
input[type="radio"]:focus,
|
||||||
input[type="checkbox"]:focus {outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}
|
input[type="checkbox"]:focus {outline:thin dotted;outline-offset:0;outline:4px auto Highlight;outline:4px auto -webkit-focus-ring-color}
|
||||||
output {display:block;padding-top:9px;font-size:14px;line-height:1.42857143;color:#385487}
|
output {display:block;padding-top:9px;font-size:14px;line-height:1.42857143;color:#385487}
|
||||||
.form-control {display:block;width:100%;height:38px;padding:8px 13px 9px;font-size:14px;line-height:1.42857143;color:#385487;background-color:#fff;background-image:none;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}
|
.form-control {display:block;width:100%;height:38px;padding:8px 13px 9px;font-size:14px;line-height:1.42857143;color:#385487;background-color:#fff;background-image:none;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;-webkit-transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s;transition:border-color ease-in-out 0.15s,box-shadow ease-in-out 0.15s}
|
||||||
.form-control:focus {border-color:#d1d6d9;outline:0}
|
.form-control:focus {border-color:#d1d6d9;outline:0}
|
||||||
|
|
|
||||||
|
|
@ -45,17 +45,17 @@ class UpdateManager
|
||||||
protected $tempDirectory;
|
protected $tempDirectory;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var System\Classes\PluginManager
|
* @var \System\Classes\PluginManager
|
||||||
*/
|
*/
|
||||||
protected $pluginManager;
|
protected $pluginManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Cms\Classes\ThemeManager
|
* @var \Cms\Classes\ThemeManager
|
||||||
*/
|
*/
|
||||||
protected $themeManager;
|
protected $themeManager;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var System\Classes\VersionManager
|
* @var \System\Classes\VersionManager
|
||||||
*/
|
*/
|
||||||
protected $versionManager;
|
protected $versionManager;
|
||||||
|
|
||||||
|
|
@ -80,12 +80,12 @@ class UpdateManager
|
||||||
protected $productCache;
|
protected $productCache;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Illuminate\Database\Migrations\Migrator
|
* @var \Illuminate\Database\Migrations\Migrator
|
||||||
*/
|
*/
|
||||||
protected $migrator;
|
protected $migrator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @var Illuminate\Database\Migrations\DatabaseMigrationRepository
|
* @var \Illuminate\Database\Migrations\DatabaseMigrationRepository
|
||||||
*/
|
*/
|
||||||
protected $repository;
|
protected $repository;
|
||||||
|
|
||||||
|
|
@ -168,7 +168,7 @@ class UpdateManager
|
||||||
/**
|
/**
|
||||||
* Checks for new updates and returns the amount of unapplied updates.
|
* Checks for new updates and returns the amount of unapplied updates.
|
||||||
* Only requests from the server at a set interval (retry timer).
|
* Only requests from the server at a set interval (retry timer).
|
||||||
* @param boolean $force Ignore the retry timer.
|
* @param boolean $force Ignore the retry timer.
|
||||||
* @return int Number of unapplied updates.
|
* @return int Number of unapplied updates.
|
||||||
*/
|
*/
|
||||||
public function check($force = false)
|
public function check($force = false)
|
||||||
|
|
@ -194,8 +194,7 @@ class UpdateManager
|
||||||
try {
|
try {
|
||||||
$result = $this->requestUpdateList();
|
$result = $this->requestUpdateList();
|
||||||
$newCount = array_get($result, 'update', 0);
|
$newCount = array_get($result, 'update', 0);
|
||||||
}
|
} catch (Exception $ex) {
|
||||||
catch (Exception $ex) {
|
|
||||||
$newCount = 0;
|
$newCount = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -210,7 +209,7 @@ class UpdateManager
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Requests an update list used for checking for new updates.
|
* Requests an update list used for checking for new updates.
|
||||||
* @param boolean $force Request application and plugins hash list regardless of version.
|
* @param boolean $force Request application and plugins hash list regardless of version.
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function requestUpdateList($force = false)
|
public function requestUpdateList($force = false)
|
||||||
|
|
@ -229,11 +228,11 @@ class UpdateManager
|
||||||
}
|
}
|
||||||
|
|
||||||
$params = [
|
$params = [
|
||||||
'core' => $this->getHash(),
|
'core' => $this->getHash(),
|
||||||
'plugins' => serialize($versions),
|
'plugins' => serialize($versions),
|
||||||
'themes' => serialize($themes),
|
'themes' => serialize($themes),
|
||||||
'build' => $build,
|
'build' => $build,
|
||||||
'force' => $force
|
'force' => $force
|
||||||
];
|
];
|
||||||
|
|
||||||
$result = $this->requestServerData('core/update', $params);
|
$result = $this->requestServerData('core/update', $params);
|
||||||
|
|
@ -265,8 +264,7 @@ class UpdateManager
|
||||||
(isset($updatable[$code]) && !$updatable[$code])
|
(isset($updatable[$code]) && !$updatable[$code])
|
||||||
) {
|
) {
|
||||||
$updateCount = max(0, --$updateCount);
|
$updateCount = max(0, --$updateCount);
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$plugins[$code] = $info;
|
$plugins[$code] = $info;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -307,7 +305,7 @@ class UpdateManager
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Requests details about a project based on its identifier.
|
* Requests details about a project based on its identifier.
|
||||||
* @param string $projectId
|
* @param string $projectId
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function requestProjectDetails($projectId)
|
public function requestProjectDetails($projectId)
|
||||||
|
|
@ -336,7 +334,7 @@ class UpdateManager
|
||||||
$modules = Config::get('cms.loadModules', []);
|
$modules = Config::get('cms.loadModules', []);
|
||||||
|
|
||||||
foreach ($modules as $module) {
|
foreach ($modules as $module) {
|
||||||
$paths[] = $path = base_path() . '/modules/'.strtolower($module).'/database/migrations';
|
$paths[] = $path = base_path() . '/modules/' . strtolower($module) . '/database/migrations';
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
@ -418,7 +416,7 @@ class UpdateManager
|
||||||
*/
|
*/
|
||||||
public function seedModule($module)
|
public function seedModule($module)
|
||||||
{
|
{
|
||||||
$className = '\\'.$module.'\Database\Seeds\DatabaseSeeder';
|
$className = '\\' . $module . '\Database\Seeds\DatabaseSeeder';
|
||||||
if (!class_exists($className)) {
|
if (!class_exists($className)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -523,11 +521,13 @@ class UpdateManager
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes an existing plugin
|
* Rollback an existing plugin
|
||||||
|
*
|
||||||
* @param string $name Plugin name.
|
* @param string $name Plugin name.
|
||||||
|
* @param string $stopOnVersion If this parameter is specified, the process stops once the provided version number is reached
|
||||||
* @return self
|
* @return self
|
||||||
*/
|
*/
|
||||||
public function rollbackPlugin($name)
|
public function rollbackPlugin(string $name, string $stopOnVersion = null)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Remove the plugin database and version
|
* Remove the plugin database and version
|
||||||
|
|
@ -539,8 +539,17 @@ class UpdateManager
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($this->versionManager->removePlugin($plugin)) {
|
if ($stopOnVersion && !$this->versionManager->hasDatabaseVersion($plugin, $stopOnVersion)) {
|
||||||
|
throw new ApplicationException(Lang::get('system::lang.updates.plugin_version_not_found'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->versionManager->removePlugin($plugin, $stopOnVersion, true)) {
|
||||||
$this->note('<info>Rolled back:</info> ' . $name);
|
$this->note('<info>Rolled back:</info> ' . $name);
|
||||||
|
|
||||||
|
if ($currentVersion = $this->versionManager->getCurrentVersion($plugin)) {
|
||||||
|
$this->note('<info>Current Version:</info> ' . $currentVersion . ' (' . $this->versionManager->getCurrentVersionNote($plugin) . ')');
|
||||||
|
}
|
||||||
|
|
||||||
return $this;
|
return $this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -560,7 +569,7 @@ class UpdateManager
|
||||||
{
|
{
|
||||||
$fileCode = $name . $hash;
|
$fileCode = $name . $hash;
|
||||||
$this->requestServerFile('plugin/get', $fileCode, $hash, [
|
$this->requestServerFile('plugin/get', $fileCode, $hash, [
|
||||||
'name' => $name,
|
'name' => $name,
|
||||||
'installation' => $installation ? 1 : 0
|
'installation' => $installation ? 1 : 0
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
@ -645,7 +654,7 @@ class UpdateManager
|
||||||
$newCodes = array_diff($codes, array_keys($this->productCache[$type]));
|
$newCodes = array_diff($codes, array_keys($this->productCache[$type]));
|
||||||
if (count($newCodes)) {
|
if (count($newCodes)) {
|
||||||
$dataCodes = [];
|
$dataCodes = [];
|
||||||
$data = $this->requestServerData($type.'/details', ['names' => $newCodes]);
|
$data = $this->requestServerData($type . '/details', ['names' => $newCodes]);
|
||||||
foreach ($data as $product) {
|
foreach ($data as $product) {
|
||||||
$code = array_get($product, 'code', -1);
|
$code = array_get($product, 'code', -1);
|
||||||
$this->cacheProductDetail($type, $code, $product);
|
$this->cacheProductDetail($type, $code, $product);
|
||||||
|
|
@ -688,13 +697,13 @@ class UpdateManager
|
||||||
$type = 'plugin';
|
$type = 'plugin';
|
||||||
}
|
}
|
||||||
|
|
||||||
$cacheKey = 'system-updates-popular-'.$type;
|
$cacheKey = 'system-updates-popular-' . $type;
|
||||||
|
|
||||||
if (Cache::has($cacheKey)) {
|
if (Cache::has($cacheKey)) {
|
||||||
return @unserialize(@base64_decode(Cache::get($cacheKey))) ?: [];
|
return @unserialize(@base64_decode(Cache::get($cacheKey))) ?: [];
|
||||||
}
|
}
|
||||||
|
|
||||||
$data = $this->requestServerData($type.'/popular');
|
$data = $this->requestServerData($type . '/popular');
|
||||||
$expiresAt = now()->addMinutes(60);
|
$expiresAt = now()->addMinutes(60);
|
||||||
Cache::put($cacheKey, base64_encode(serialize($data)), $expiresAt);
|
Cache::put($cacheKey, base64_encode(serialize($data)), $expiresAt);
|
||||||
|
|
||||||
|
|
@ -715,8 +724,7 @@ class UpdateManager
|
||||||
|
|
||||||
if (Cache::has($cacheKey)) {
|
if (Cache::has($cacheKey)) {
|
||||||
$this->productCache = @unserialize(@base64_decode(Cache::get($cacheKey))) ?: $defaultCache;
|
$this->productCache = @unserialize(@base64_decode(Cache::get($cacheKey))) ?: $defaultCache;
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
$this->productCache = $defaultCache;
|
$this->productCache = $defaultCache;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -766,8 +774,7 @@ class UpdateManager
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$resultData = json_decode($result->body, true);
|
$resultData = json_decode($result->body, true);
|
||||||
}
|
} catch (Exception $ex) {
|
||||||
catch (Exception $ex) {
|
|
||||||
throw new ApplicationException(Lang::get('system::lang.server.response_invalid'));
|
throw new ApplicationException(Lang::get('system::lang.server.response_invalid'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -780,7 +787,7 @@ class UpdateManager
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Raise a note event for the migrator.
|
* Raise a note event for the migrator.
|
||||||
* @param string $message
|
* @param string $message
|
||||||
* @return self
|
* @return self
|
||||||
*/
|
*/
|
||||||
protected function note($message)
|
protected function note($message)
|
||||||
|
|
@ -794,7 +801,7 @@ class UpdateManager
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets an output stream for writing notes.
|
* Sets an output stream for writing notes.
|
||||||
* @param Illuminate\Console\Command $output
|
* @param Illuminate\Console\Command $output
|
||||||
* @return self
|
* @return self
|
||||||
*/
|
*/
|
||||||
public function setNotesOutput($output)
|
public function setNotesOutput($output)
|
||||||
|
|
@ -810,8 +817,8 @@ class UpdateManager
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Contacts the update server for a response.
|
* Contacts the update server for a response.
|
||||||
* @param string $uri Gateway API URI
|
* @param string $uri Gateway API URI
|
||||||
* @param array $postData Extra post data
|
* @param array $postData Extra post data
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function requestServerData($uri, $postData = [])
|
public function requestServerData($uri, $postData = [])
|
||||||
|
|
@ -836,8 +843,7 @@ class UpdateManager
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$resultData = @json_decode($result->body, true);
|
$resultData = @json_decode($result->body, true);
|
||||||
}
|
} catch (Exception $ex) {
|
||||||
catch (Exception $ex) {
|
|
||||||
throw new ApplicationException(Lang::get('system::lang.server.response_invalid'));
|
throw new ApplicationException(Lang::get('system::lang.server.response_invalid'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -850,10 +856,10 @@ class UpdateManager
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Downloads a file from the update server.
|
* Downloads a file from the update server.
|
||||||
* @param string $uri Gateway API URI
|
* @param string $uri Gateway API URI
|
||||||
* @param string $fileCode A unique code for saving the file.
|
* @param string $fileCode A unique code for saving the file.
|
||||||
* @param string $expectedHash The expected file hash of the file.
|
* @param string $expectedHash The expected file hash of the file.
|
||||||
* @param array $postData Extra post data
|
* @param array $postData Extra post data
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function requestServerFile($uri, $fileCode, $expectedHash, $postData = [])
|
public function requestServerFile($uri, $fileCode, $expectedHash, $postData = [])
|
||||||
|
|
@ -877,7 +883,7 @@ class UpdateManager
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Calculates a file path for a file code
|
* Calculates a file path for a file code
|
||||||
* @param string $fileCode A unique file code
|
* @param string $fileCode A unique file code
|
||||||
* @return string Full path on the disk
|
* @return string Full path on the disk
|
||||||
*/
|
*/
|
||||||
protected function getFilePath($fileCode)
|
protected function getFilePath($fileCode)
|
||||||
|
|
@ -888,7 +894,7 @@ class UpdateManager
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the API security for all transmissions.
|
* Set the API security for all transmissions.
|
||||||
* @param string $key API Key
|
* @param string $key API Key
|
||||||
* @param string $secret API Secret
|
* @param string $secret API Secret
|
||||||
*/
|
*/
|
||||||
public function setSecurity($key, $secret)
|
public function setSecurity($key, $secret)
|
||||||
|
|
@ -899,7 +905,7 @@ class UpdateManager
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a complete gateway server URL from supplied URI
|
* Create a complete gateway server URL from supplied URI
|
||||||
* @param string $uri URI
|
* @param string $uri URI
|
||||||
* @return string URL
|
* @return string URL
|
||||||
*/
|
*/
|
||||||
protected function createServerUrl($uri)
|
protected function createServerUrl($uri)
|
||||||
|
|
@ -914,8 +920,8 @@ class UpdateManager
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Modifies the Network HTTP object with common attributes.
|
* Modifies the Network HTTP object with common attributes.
|
||||||
* @param Http $http Network object
|
* @param Http $http Network object
|
||||||
* @param array $postData Post data
|
* @param array $postData Post data
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
protected function applyHttpAttributes($http, $postData)
|
protected function applyHttpAttributes($http, $postData)
|
||||||
|
|
|
||||||
|
|
@ -151,8 +151,13 @@ class VersionManager
|
||||||
* Removes and packs down a plugin from the system. Files are left intact.
|
* Removes and packs down a plugin from the system. Files are left intact.
|
||||||
* If the $stopOnVersion parameter is specified, the process stops after
|
* If the $stopOnVersion parameter is specified, the process stops after
|
||||||
* the specified version is rolled back.
|
* the specified version is rolled back.
|
||||||
|
*
|
||||||
|
* @param mixed $plugin Either the identifier of a plugin as a string, or a Plugin class.
|
||||||
|
* @param string $stopOnVersion
|
||||||
|
* @param bool $stopCurrentVersion
|
||||||
|
* @return bool
|
||||||
*/
|
*/
|
||||||
public function removePlugin($plugin, $stopOnVersion = null)
|
public function removePlugin($plugin, $stopOnVersion = null, $stopCurrentVersion = false)
|
||||||
{
|
{
|
||||||
$code = is_string($plugin) ? $plugin : $this->pluginManager->getIdentifier($plugin);
|
$code = is_string($plugin) ? $plugin : $this->pluginManager->getIdentifier($plugin);
|
||||||
|
|
||||||
|
|
@ -166,25 +171,37 @@ class VersionManager
|
||||||
$stopOnNextVersion = false;
|
$stopOnNextVersion = false;
|
||||||
$newPluginVersion = null;
|
$newPluginVersion = null;
|
||||||
|
|
||||||
foreach ($pluginHistory as $history) {
|
try {
|
||||||
if ($stopOnNextVersion && $history->version !== $stopOnVersion) {
|
foreach ($pluginHistory as $history) {
|
||||||
// Stop if the $stopOnVersion value was found and
|
if ($stopCurrentVersion && $stopOnVersion === $history->version) {
|
||||||
// this is a new version. The history could contain
|
$newPluginVersion = $history->version;
|
||||||
// multiple items for a single version (comments and scripts).
|
break;
|
||||||
$newPluginVersion = $history->version;
|
}
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($history->type == self::HISTORY_TYPE_COMMENT) {
|
if ($stopOnNextVersion && $history->version !== $stopOnVersion) {
|
||||||
$this->removeDatabaseComment($code, $history->version);
|
// Stop if the $stopOnVersion value was found and
|
||||||
}
|
// this is a new version. The history could contain
|
||||||
elseif ($history->type == self::HISTORY_TYPE_SCRIPT) {
|
// multiple items for a single version (comments and scripts).
|
||||||
$this->removeDatabaseScript($code, $history->version, $history->detail);
|
$newPluginVersion = $history->version;
|
||||||
}
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if ($stopOnVersion === $history->version) {
|
if ($history->type == self::HISTORY_TYPE_COMMENT) {
|
||||||
$stopOnNextVersion = true;
|
$this->removeDatabaseComment($code, $history->version);
|
||||||
|
} elseif ($history->type == self::HISTORY_TYPE_SCRIPT) {
|
||||||
|
$this->removeDatabaseScript($code, $history->version, $history->detail);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($stopOnVersion === $history->version) {
|
||||||
|
$stopOnNextVersion = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
} catch (\Exception $exception) {
|
||||||
|
$lastHistory = $this->getLastHistory($code);
|
||||||
|
if ($lastHistory) {
|
||||||
|
$this->setDatabaseVersion($code, $lastHistory->version);
|
||||||
|
}
|
||||||
|
throw $exception;
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->setDatabaseVersion($code, $newPluginVersion);
|
$this->setDatabaseVersion($code, $newPluginVersion);
|
||||||
|
|
@ -203,7 +220,7 @@ class VersionManager
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes all records from the version and history tables for a plugin.
|
* Deletes all records from the version and history tables for a plugin.
|
||||||
* @param string $pluginCode Plugin code
|
* @param string $pluginCode Plugin code
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function purgePlugin($pluginCode)
|
public function purgePlugin($pluginCode)
|
||||||
|
|
@ -311,8 +328,7 @@ class VersionManager
|
||||||
if (!isset($this->databaseVersions[$code])) {
|
if (!isset($this->databaseVersions[$code])) {
|
||||||
$this->databaseVersions[$code] = Db::table('system_plugin_versions')
|
$this->databaseVersions[$code] = Db::table('system_plugin_versions')
|
||||||
->where('code', $code)
|
->where('code', $code)
|
||||||
->value('version')
|
->value('version');
|
||||||
;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $this->databaseVersions[$code] ?? self::NO_VERSION_VALUE;
|
return $this->databaseVersions[$code] ?? self::NO_VERSION_VALUE;
|
||||||
|
|
@ -327,18 +343,16 @@ class VersionManager
|
||||||
|
|
||||||
if ($version && !$currentVersion) {
|
if ($version && !$currentVersion) {
|
||||||
Db::table('system_plugin_versions')->insert([
|
Db::table('system_plugin_versions')->insert([
|
||||||
'code' => $code,
|
'code' => $code,
|
||||||
'version' => $version,
|
'version' => $version,
|
||||||
'created_at' => new Carbon
|
'created_at' => new Carbon
|
||||||
]);
|
]);
|
||||||
}
|
} elseif ($version && $currentVersion) {
|
||||||
elseif ($version && $currentVersion) {
|
|
||||||
Db::table('system_plugin_versions')->where('code', $code)->update([
|
Db::table('system_plugin_versions')->where('code', $code)->update([
|
||||||
'version' => $version,
|
'version' => $version,
|
||||||
'created_at' => new Carbon
|
'created_at' => new Carbon
|
||||||
]);
|
]);
|
||||||
}
|
} elseif ($currentVersion) {
|
||||||
elseif ($currentVersion) {
|
|
||||||
Db::table('system_plugin_versions')->where('code', $code)->delete();
|
Db::table('system_plugin_versions')->where('code', $code)->delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -351,10 +365,10 @@ class VersionManager
|
||||||
protected function applyDatabaseComment($code, $version, $comment)
|
protected function applyDatabaseComment($code, $version, $comment)
|
||||||
{
|
{
|
||||||
Db::table('system_plugin_history')->insert([
|
Db::table('system_plugin_history')->insert([
|
||||||
'code' => $code,
|
'code' => $code,
|
||||||
'type' => self::HISTORY_TYPE_COMMENT,
|
'type' => self::HISTORY_TYPE_COMMENT,
|
||||||
'version' => $version,
|
'version' => $version,
|
||||||
'detail' => $comment,
|
'detail' => $comment,
|
||||||
'created_at' => new Carbon
|
'created_at' => new Carbon
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
@ -389,10 +403,10 @@ class VersionManager
|
||||||
$this->updater->setUp($updateFile);
|
$this->updater->setUp($updateFile);
|
||||||
|
|
||||||
Db::table('system_plugin_history')->insert([
|
Db::table('system_plugin_history')->insert([
|
||||||
'code' => $code,
|
'code' => $code,
|
||||||
'type' => self::HISTORY_TYPE_SCRIPT,
|
'type' => self::HISTORY_TYPE_SCRIPT,
|
||||||
'version' => $version,
|
'version' => $version,
|
||||||
'detail' => $script,
|
'detail' => $script,
|
||||||
'created_at' => new Carbon
|
'created_at' => new Carbon
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
@ -435,6 +449,20 @@ class VersionManager
|
||||||
return $this->databaseHistory[$code] = $historyInfo;
|
return $this->databaseHistory[$code] = $historyInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the last update history for a plugin.
|
||||||
|
*
|
||||||
|
* @param string $code The plugin identifier
|
||||||
|
* @return stdClass|null
|
||||||
|
*/
|
||||||
|
protected function getLastHistory($code)
|
||||||
|
{
|
||||||
|
return Db::table('system_plugin_history')
|
||||||
|
->where('code', $code)
|
||||||
|
->orderBy('id', 'DESC')
|
||||||
|
->first();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if a plugin has an applied update version.
|
* Checks if a plugin has an applied update version.
|
||||||
*/
|
*/
|
||||||
|
|
@ -468,7 +496,7 @@ class VersionManager
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Raise a note event for the migrator.
|
* Raise a note event for the migrator.
|
||||||
* @param string $message
|
* @param string $message
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
protected function note($message)
|
protected function note($message)
|
||||||
|
|
@ -482,7 +510,7 @@ class VersionManager
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets an output stream for writing notes.
|
* Sets an output stream for writing notes.
|
||||||
* @param Illuminate\Console\Command $output
|
* @param Illuminate\Console\Command $output
|
||||||
* @return self
|
* @return self
|
||||||
*/
|
*/
|
||||||
public function setNotesOutput($output)
|
public function setNotesOutput($output)
|
||||||
|
|
@ -496,7 +524,7 @@ class VersionManager
|
||||||
* Extract script and comments from version details
|
* Extract script and comments from version details
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
protected function extractScriptsAndComments($details)
|
protected function extractScriptsAndComments($details): array
|
||||||
{
|
{
|
||||||
if (is_array($details)) {
|
if (is_array($details)) {
|
||||||
$fileNamePattern = "/^[a-z0-9\_\-\.\/\\\]+\.php$/i";
|
$fileNamePattern = "/^[a-z0-9\_\-\.\/\\\]+\.php$/i";
|
||||||
|
|
@ -516,4 +544,52 @@ class VersionManager
|
||||||
|
|
||||||
return [$comments, $scripts];
|
return [$comments, $scripts];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the currently installed version of the plugin.
|
||||||
|
*
|
||||||
|
* @param string|PluginBase $plugin Either the identifier of a plugin as a string, or a Plugin class.
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getCurrentVersion($plugin): string
|
||||||
|
{
|
||||||
|
$code = $this->pluginManager->getIdentifier($plugin);
|
||||||
|
return $this->getDatabaseVersion($code);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check if a certain version of the plugin exists in the plugin history database.
|
||||||
|
*
|
||||||
|
* @param string|PluginBase $plugin Either the identifier of a plugin as a string, or a Plugin class.
|
||||||
|
* @param string $version
|
||||||
|
* @return bool
|
||||||
|
*/
|
||||||
|
public function hasDatabaseVersion($plugin, string $version): bool
|
||||||
|
{
|
||||||
|
$code = $this->pluginManager->getIdentifier($plugin);
|
||||||
|
$histories = $this->getDatabaseHistory($code);
|
||||||
|
foreach ($histories as $history) {
|
||||||
|
if ($history->version === $version) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get last version note
|
||||||
|
*
|
||||||
|
* @param string|PluginBase $plugin
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public function getCurrentVersionNote($plugin): string
|
||||||
|
{
|
||||||
|
$code = $this->pluginManager->getIdentifier($plugin);
|
||||||
|
$histories = $this->getDatabaseHistory($code);
|
||||||
|
$lastHistory = array_last(array_where($histories, function ($history) {
|
||||||
|
return $history->type === self::HISTORY_TYPE_COMMENT;
|
||||||
|
}));
|
||||||
|
return $lastHistory ? $lastHistory->detail : '';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -313,7 +313,7 @@ class OctoberUtil extends Command
|
||||||
{
|
{
|
||||||
foreach (File::directories(plugins_path()) as $authorDir) {
|
foreach (File::directories(plugins_path()) as $authorDir) {
|
||||||
foreach (File::directories($authorDir) as $pluginDir) {
|
foreach (File::directories($authorDir) as $pluginDir) {
|
||||||
if (!File::isDirectory($pluginDir.'/.git')) {
|
if (!File::exists($pluginDir.'/.git')) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -325,7 +325,7 @@ class OctoberUtil extends Command
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (File::directories(themes_path()) as $themeDir) {
|
foreach (File::directories(themes_path()) as $themeDir) {
|
||||||
if (!File::isDirectory($themeDir.'/.git')) {
|
if (!File::exists($themeDir.'/.git')) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,88 @@
|
||||||
|
<?php namespace System\Console;
|
||||||
|
|
||||||
|
use Illuminate\Console\Command;
|
||||||
|
use Symfony\Component\Console\Input\InputOption;
|
||||||
|
use System\Classes\UpdateManager;
|
||||||
|
use System\Classes\PluginManager;
|
||||||
|
use Symfony\Component\Console\Input\InputArgument;
|
||||||
|
use System\Classes\VersionManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Console command to rollback a plugin.
|
||||||
|
*
|
||||||
|
* @package october\system
|
||||||
|
* @author Alexey Bobkov, Samuel Georges
|
||||||
|
*/
|
||||||
|
class PluginRollback extends Command
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The console command name.
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $name = 'plugin:rollback';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The console command description.
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $description = 'Rollback an existing plugin.';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute the console command.
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Lookup plugin
|
||||||
|
*/
|
||||||
|
$pluginName = $this->argument('name');
|
||||||
|
$pluginName = PluginManager::instance()->normalizeIdentifier($pluginName);
|
||||||
|
if (!PluginManager::instance()->exists($pluginName)) {
|
||||||
|
throw new \InvalidArgumentException('Plugin not found');
|
||||||
|
}
|
||||||
|
|
||||||
|
$stopOnVersion = ltrim(($this->argument('version') ?: null), 'v');
|
||||||
|
|
||||||
|
if ($stopOnVersion) {
|
||||||
|
if (!VersionManager::instance()->hasDatabaseVersion($pluginName, $stopOnVersion)) {
|
||||||
|
throw new \InvalidArgumentException('Plugin version not found');
|
||||||
|
}
|
||||||
|
$confirmQuestion = 'Please confirm that you wish to revert the plugin to version ' . $stopOnVersion . '. This may result in changes to your database and potential data loss.';
|
||||||
|
} else {
|
||||||
|
$confirmQuestion = 'Please confirm that you wish to completely rollback this plugin. This may result in potential data loss.';
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->option('force') || $this->confirm($confirmQuestion)) {
|
||||||
|
$manager = UpdateManager::instance()->setNotesOutput($this->output);
|
||||||
|
$stopOnVersion = ltrim(($this->argument('version') ?: null), 'v');
|
||||||
|
|
||||||
|
try {
|
||||||
|
$manager->rollbackPlugin($pluginName, $stopOnVersion);
|
||||||
|
} catch (\Exception $exception) {
|
||||||
|
$lastVersion = VersionManager::instance()->getCurrentVersion($pluginName);
|
||||||
|
$this->output->writeln(sprintf("<comment>An exception occurred during the rollback and the process has been stopped. The plugin was rolled back to version v%s.</comment>", $lastVersion));
|
||||||
|
throw $exception;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the console command arguments.
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function getArguments()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
['name', InputArgument::REQUIRED, 'The name of the plugin to be rolled back. Eg: AuthorName.PluginName'],
|
||||||
|
['version', InputArgument::OPTIONAL, 'If this parameter is specified, the process will stop on the specified version, if not, it will completely rollback the plugin. Example: 1.3.9'],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getOptions()
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
['force', 'f', InputOption::VALUE_NONE, 'Force rollback', null],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -36,6 +36,7 @@ return [
|
||||||
'pt-br' => 'Português (Brasil)',
|
'pt-br' => 'Português (Brasil)',
|
||||||
'pt-pt' => 'Português (Portugal)',
|
'pt-pt' => 'Português (Portugal)',
|
||||||
'ro' => 'Română',
|
'ro' => 'Română',
|
||||||
|
'rs' => 'Srpski',
|
||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'fi' => 'Suomi',
|
'fi' => 'Suomi',
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ return [
|
||||||
'pt-br' => 'Português (Brasil)',
|
'pt-br' => 'Português (Brasil)',
|
||||||
'pt-pt' => 'Português (Portugal)',
|
'pt-pt' => 'Português (Portugal)',
|
||||||
'ro' => 'Română',
|
'ro' => 'Română',
|
||||||
|
'rs' => 'Srpski',
|
||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'fi' => 'Suomi',
|
'fi' => 'Suomi',
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
|
|
@ -322,6 +323,7 @@ return [
|
||||||
'plugin_version' => 'Version',
|
'plugin_version' => 'Version',
|
||||||
'plugin_author' => 'Author',
|
'plugin_author' => 'Author',
|
||||||
'plugin_not_found' => 'Plugin not found',
|
'plugin_not_found' => 'Plugin not found',
|
||||||
|
'plugin_version_not_found' => 'Plugin version not found',
|
||||||
'core_current_build' => 'Current build',
|
'core_current_build' => 'Current build',
|
||||||
'core_view_changelog' => 'View Changelog',
|
'core_view_changelog' => 'View Changelog',
|
||||||
'core_build' => 'Build :build',
|
'core_build' => 'Build :build',
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,7 @@ return [
|
||||||
'pl' => 'Polski',
|
'pl' => 'Polski',
|
||||||
'pt-br' => 'Português (Brasil)',
|
'pt-br' => 'Português (Brasil)',
|
||||||
'ro' => 'Română',
|
'ro' => 'Română',
|
||||||
|
'rs' => 'Srpski',
|
||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'sk' => 'Slovenský',
|
'sk' => 'Slovenský',
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ return [
|
||||||
'pt-br' => 'Português (Brasil)',
|
'pt-br' => 'Português (Brasil)',
|
||||||
'pt-pt' => 'Português (Portugal)',
|
'pt-pt' => 'Português (Portugal)',
|
||||||
'ro' => 'Română',
|
'ro' => 'Română',
|
||||||
|
'rs' => 'Srpski',
|
||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'fi' => 'Suomi',
|
'fi' => 'Suomi',
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,7 @@ return [
|
||||||
'pt-br' => 'Português (Brasil)',
|
'pt-br' => 'Português (Brasil)',
|
||||||
'pt-pt' => 'Português (Portugal)',
|
'pt-pt' => 'Português (Portugal)',
|
||||||
'ro' => 'Română',
|
'ro' => 'Română',
|
||||||
|
'rs' => 'Srpski',
|
||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'sk' => 'Slovenský',
|
'sk' => 'Slovenský',
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ return [
|
||||||
'pl' => 'Polski',
|
'pl' => 'Polski',
|
||||||
'pt-br' => 'Português (Brasil)',
|
'pt-br' => 'Português (Brasil)',
|
||||||
'ro' => 'Română',
|
'ro' => 'Română',
|
||||||
|
'rs' => 'Srpski',
|
||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
'sk' => 'Slovenský',
|
'sk' => 'Slovenský',
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ return [
|
||||||
'pt-br' => 'Português (Brasil)',
|
'pt-br' => 'Português (Brasil)',
|
||||||
'pt-pt' => 'Português (Portugal)',
|
'pt-pt' => 'Português (Portugal)',
|
||||||
'ro' => 'Română',
|
'ro' => 'Română',
|
||||||
|
'rs' => 'Srpski',
|
||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'fi' => 'Suomi',
|
'fi' => 'Suomi',
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
|
|
|
||||||
|
|
@ -276,7 +276,7 @@ return [
|
||||||
'plugin_description' => 'Descrição',
|
'plugin_description' => 'Descrição',
|
||||||
'plugin_version' => 'Versão',
|
'plugin_version' => 'Versão',
|
||||||
'plugin_author' => 'Autor',
|
'plugin_author' => 'Autor',
|
||||||
'plugin_not_found' => 'Plugin encotrado',
|
'plugin_not_found' => 'Plugin não encontrado',
|
||||||
'plugin_version_not_found' => 'Versão do plugin não encontrada',
|
'plugin_version_not_found' => 'Versão do plugin não encontrada',
|
||||||
'core_current_build' => 'Compilação atual',
|
'core_current_build' => 'Compilação atual',
|
||||||
'core_view_changelog' => 'Visualizar Changelog',
|
'core_view_changelog' => 'Visualizar Changelog',
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@ return [
|
||||||
'pt-pt' => 'Português (Portugal)',
|
'pt-pt' => 'Português (Portugal)',
|
||||||
'pt-br' => 'Português (Brasil)',
|
'pt-br' => 'Português (Brasil)',
|
||||||
'ro' => 'Romeno',
|
'ro' => 'Romeno',
|
||||||
|
'rs' => 'Srpski',
|
||||||
'ru' => 'Russo',
|
'ru' => 'Russo',
|
||||||
'sv' => 'Suéco',
|
'sv' => 'Suéco',
|
||||||
'sk' => 'Esloveno',
|
'sk' => 'Esloveno',
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,102 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| Client-side Language Lines
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
| These are messages made available to the client browser via JavaScript.
|
||||||
|
| To compile this file run: php artisan october:util compile lang
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'markdowneditor' => [
|
||||||
|
'formatting' => 'Formatiranje',
|
||||||
|
'quote' => 'Citat',
|
||||||
|
'code' => 'Kod',
|
||||||
|
'header1' => 'Zaglavlje 1',
|
||||||
|
'header2' => 'Zaglavlje 2',
|
||||||
|
'header3' => 'Zaglavlje 3',
|
||||||
|
'header4' => 'Zaglavlje 4',
|
||||||
|
'header5' => 'Zaglavlje 5',
|
||||||
|
'header6' => 'Zaglavlje 6',
|
||||||
|
'bold' => 'Podebljaj',
|
||||||
|
'italic' => 'Ukosi',
|
||||||
|
'unorderedlist' => 'Neuređena lista',
|
||||||
|
'orderedlist' => 'Uređena lista',
|
||||||
|
'video' => 'Video',
|
||||||
|
'image' => 'Slika',
|
||||||
|
'link' => 'Link',
|
||||||
|
'horizontalrule' => 'Ubaci horizontalnu liniju',
|
||||||
|
'fullscreen' => 'Ceo ekran',
|
||||||
|
'preview' => 'Pregled',
|
||||||
|
],
|
||||||
|
'mediamanager' => [
|
||||||
|
'insert_link' => 'Ubaci link',
|
||||||
|
'insert_image' => 'Ubaci sliku',
|
||||||
|
'insert_video' => 'Ubaci video zapis',
|
||||||
|
'insert_audio' => 'Ubaci zvučni zapis',
|
||||||
|
'invalid_file_empty_insert' => 'Odaberi fajl za ubacivanje linkova.',
|
||||||
|
'invalid_file_single_insert' => 'Odaberi jedan fajl za ubacivanje.',
|
||||||
|
'invalid_image_empty_insert' => 'Odaberi sliku/slike za ubacivanje.',
|
||||||
|
'invalid_video_empty_insert' => 'Odaberi video zapis za ubacivanje.',
|
||||||
|
'invalid_audio_empty_insert' => 'Odaberi audio zapis za ubacivanje.',
|
||||||
|
],
|
||||||
|
'alert' => [
|
||||||
|
'confirm_button_text' => 'OK',
|
||||||
|
'cancel_button_text' => 'Otkaži',
|
||||||
|
'widget_remove_confirm' => 'Otkloni ovaj posrednički element?',
|
||||||
|
],
|
||||||
|
'datepicker' => [
|
||||||
|
'previousMonth' => 'Prethodni mesec',
|
||||||
|
'nextMonth' => 'Sledeći mesec',
|
||||||
|
'months' => ['Januar', 'Februar', 'Mart', 'April', 'Maj', 'Juni', 'Juli', 'Avgust', 'Septembar', 'Oktobar', 'Novembar', 'Decembar'],
|
||||||
|
'weekdays' => ['Nedelja', 'Ponedeljak', 'Utorak', 'Sreda', 'Četvrtak', 'Petak', 'Subota'],
|
||||||
|
'weekdaysShort' => ['Ned', 'Pon', 'Uto', 'Sre', 'Čet', 'Pet', 'Sub']
|
||||||
|
],
|
||||||
|
'colorpicker' => [
|
||||||
|
'choose' => 'Ok',
|
||||||
|
],
|
||||||
|
'filter' => [
|
||||||
|
'group' => [
|
||||||
|
'all' => 'sve',
|
||||||
|
],
|
||||||
|
'scopes' => [
|
||||||
|
'apply_button_text' => 'Primeni',
|
||||||
|
'clear_button_text' => 'Očisti',
|
||||||
|
],
|
||||||
|
'dates' => [
|
||||||
|
'all' => 'svi',
|
||||||
|
'filter_button_text' => 'Filtriraj',
|
||||||
|
'reset_button_text' => 'Resetuj',
|
||||||
|
'date_placeholder' => 'Datum',
|
||||||
|
'after_placeholder' => 'Pre',
|
||||||
|
'before_placeholder' => 'Posle',
|
||||||
|
],
|
||||||
|
'numbers' => [
|
||||||
|
'all' => 'svi',
|
||||||
|
'filter_button_text' => 'Filtriraj',
|
||||||
|
'reset_button_text' => 'Resetuj',
|
||||||
|
'min_placeholder' => 'Minimum',
|
||||||
|
'max_placeholder' => 'Maksimum',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'eventlog' => [
|
||||||
|
'show_stacktrace' => 'Prikaži trag',
|
||||||
|
'hide_stacktrace' => 'Sakrij trag',
|
||||||
|
'tabs' => [
|
||||||
|
'formatted' => 'Formatiraj',
|
||||||
|
'raw' => 'Izvorno',
|
||||||
|
],
|
||||||
|
'editor' => [
|
||||||
|
'title' => 'Izvorni kod editora',
|
||||||
|
'description' => 'Vaš operativni sistem treba da bude konfigurisan za osluškivanje ovih URL šema.',
|
||||||
|
'openWith' => 'Otvori sa',
|
||||||
|
'remember_choice' => 'Zapamti izabranu opciju za ovu sesiju',
|
||||||
|
'open' => 'Otvori',
|
||||||
|
'cancel' => 'Otkaži',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
@ -0,0 +1,480 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
'app' => [
|
||||||
|
'name' => 'OctoberCMS',
|
||||||
|
'tagline' => 'Povratak osnovama',
|
||||||
|
],
|
||||||
|
'locale' => [
|
||||||
|
'ar' => 'العربية',
|
||||||
|
'be' => 'Беларуская',
|
||||||
|
'bg' => 'Български',
|
||||||
|
'ca' => 'Català',
|
||||||
|
'cs' => 'Čeština',
|
||||||
|
'da' => 'Dansk',
|
||||||
|
'en' => 'English (United States)',
|
||||||
|
'en-au' => 'English (Australia)',
|
||||||
|
'en-ca' => 'English (Canada)',
|
||||||
|
'en-gb' => 'English (United Kingdom)',
|
||||||
|
'et' => 'Eesti',
|
||||||
|
'de' => 'Deutsch',
|
||||||
|
'el' => 'Ελληνικά',
|
||||||
|
'es' => 'Español',
|
||||||
|
'es-ar' => 'Español (Argentina)',
|
||||||
|
'fa' => 'فارسی',
|
||||||
|
'fr' => 'Français',
|
||||||
|
'fr-ca' => 'Français (Canada)',
|
||||||
|
'hu' => 'Magyar',
|
||||||
|
'id' => 'Bahasa Indonesia',
|
||||||
|
'it' => 'Italiano',
|
||||||
|
'ja' => '日本語',
|
||||||
|
'kr' => '한국어',
|
||||||
|
'lt' => 'Lietuvių',
|
||||||
|
'lv' => 'Latviešu',
|
||||||
|
'nb-no' => 'Norsk (Bokmål)',
|
||||||
|
'nl' => 'Nederlands',
|
||||||
|
'pl' => 'Polski',
|
||||||
|
'pt-br' => 'Português (Brasil)',
|
||||||
|
'pt-pt' => 'Português (Portugal)',
|
||||||
|
'ro' => 'Română',
|
||||||
|
'ru' => 'Русский',
|
||||||
|
'fi' => 'Suomi',
|
||||||
|
'sv' => 'Svenska',
|
||||||
|
'sk' => 'Slovenský',
|
||||||
|
'sl' => 'Slovenščina',
|
||||||
|
'rs' => 'Srpski',
|
||||||
|
'th' => 'ไทย',
|
||||||
|
'tr' => 'Türkçe',
|
||||||
|
'uk' => 'Українська мова',
|
||||||
|
'zh-cn' => '简体中文',
|
||||||
|
'zh-tw' => '繁體中文',
|
||||||
|
'vn' => 'Tiếng việt',
|
||||||
|
],
|
||||||
|
'directory' => [
|
||||||
|
'create_fail' => 'Nije moguće napraviti direktorijum: :name',
|
||||||
|
],
|
||||||
|
'file' => [
|
||||||
|
'create_fail' => 'Nije moguće napraviti fajl: :name',
|
||||||
|
],
|
||||||
|
'combiner' => [
|
||||||
|
'not_found' => "Kombinovani fajl ':name' nije pronađen.",
|
||||||
|
],
|
||||||
|
'system' => [
|
||||||
|
'name' => 'Sistem',
|
||||||
|
'menu_label' => 'Sistem',
|
||||||
|
'categories' => [
|
||||||
|
'cms' => 'CMS',
|
||||||
|
'misc' => 'Ostalo',
|
||||||
|
'logs' => 'Logovi',
|
||||||
|
'mail' => 'Pošta',
|
||||||
|
'shop' => 'Prodavnica',
|
||||||
|
'team' => 'Tim',
|
||||||
|
'users' => 'Korisnici',
|
||||||
|
'system' => 'Sistem',
|
||||||
|
'social' => 'Društvene mreže',
|
||||||
|
'backend' => 'Pozadinski sistem',
|
||||||
|
'events' => 'Događaji',
|
||||||
|
'customers' => 'Mušterije',
|
||||||
|
'my_settings' => 'Moja podešavanja',
|
||||||
|
'notifications' => 'Obaveštenja',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'theme' => [
|
||||||
|
'label' => 'Tema',
|
||||||
|
'unnamed' => 'Tema bez naziva',
|
||||||
|
'name' => [
|
||||||
|
'label' => 'Naziv teme',
|
||||||
|
'help' => 'Imenuj temu po njenom jedinstvenom kodu. Na primer, RainLab.Vanilla',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'themes' => [
|
||||||
|
'install' => 'Instaliraj teme',
|
||||||
|
'search' => 'traži teme za instaliranje...',
|
||||||
|
'installed' => 'Instalirane teme',
|
||||||
|
'no_themes' => 'Nijedna tema nije instalirana sa tržišta.',
|
||||||
|
'recommended' => 'Preporučene',
|
||||||
|
'remove_confirm' => 'Da li zaista želite da uklonite temu?',
|
||||||
|
],
|
||||||
|
'plugin' => [
|
||||||
|
'label' => 'Priključak',
|
||||||
|
'unnamed' => 'Neimenovani priključak',
|
||||||
|
'name' => [
|
||||||
|
'label' => 'Naziv priključka',
|
||||||
|
'help' => 'Imenuj priključak po njegovom jedinstvenom kodu. Na primer, RainLab.Blog',
|
||||||
|
],
|
||||||
|
'by_author' => 'Od :name',
|
||||||
|
],
|
||||||
|
'plugins' => [
|
||||||
|
'manage' => 'Upravljaj priključcima',
|
||||||
|
'install' => 'Instaliraj priključke',
|
||||||
|
'install_products' => 'Instaliraj proizvode',
|
||||||
|
'search' => 'traži priključke za instaliranje...',
|
||||||
|
'installed' => 'Instalirani priključci',
|
||||||
|
'no_plugins' => 'Nijedan priključak nije instaliran sa tržišta.',
|
||||||
|
'recommended' => 'Preporučeni',
|
||||||
|
'plugin_label' => 'Priključak',
|
||||||
|
'unknown_plugin' => 'Priključak je uklonjen sa sistema.',
|
||||||
|
'select_label' => 'Izaberi radnju...',
|
||||||
|
'bulk_actions_label' => 'Više radnji',
|
||||||
|
'check_yes' => 'Da',
|
||||||
|
'check_no' => 'Ne',
|
||||||
|
'unfrozen' => 'Uključeno aužuriranje',
|
||||||
|
'enabled' => 'Priključak uključen',
|
||||||
|
'freeze' => 'isključi ažuriranje za',
|
||||||
|
'unfreeze' => 'uključi ažuriranje za',
|
||||||
|
'enable' => 'uključi',
|
||||||
|
'disable' => 'isključi',
|
||||||
|
'refresh' => 'resetuj',
|
||||||
|
'remove' => 'Ukloni',
|
||||||
|
'freeze_label' => 'Isključi ažuriranje',
|
||||||
|
'unfreeze_label' => 'Uključi ažuriranje',
|
||||||
|
'enable_label' => 'Uključi priključke',
|
||||||
|
'disable_label' => 'Isključi priključke',
|
||||||
|
'refresh_label' => 'Resetuj podatke priključka',
|
||||||
|
'action_confirm' => 'Da li zaista želite da :action ove priključke?',
|
||||||
|
'freeze_success' => 'Uspešno isključeno ažuriranje za izabrane priključke.',
|
||||||
|
'unfreeze_success' => 'Uspešno uključeno ažuriranje za izabrane priključke.',
|
||||||
|
'enable_success' => 'Izabrani priključci su uspešno uključeni.',
|
||||||
|
'disable_success' => 'Izabrani priključci su uspešno isključeni.',
|
||||||
|
'refresh_confirm' => 'Da li zaista želite da resetujete sledeće priključke? Ovo će resetovati podatke svakog priključka vraćajući ih na inicijalno stanje.',
|
||||||
|
'refresh_success' => 'Izabrani priključci su uspešno resetovani.',
|
||||||
|
'remove_confirm' => 'Da li zaista želite da uklonite sledeće priključke? Ovo će takođe ukloniti asocirane podatke.',
|
||||||
|
'remove_success' => 'Izabrani priključci su uspešno uklonjeni.',
|
||||||
|
],
|
||||||
|
'project' => [
|
||||||
|
'name' => 'Projekat',
|
||||||
|
'owner_label' => 'Vlasnik',
|
||||||
|
'attach' => 'Dodaj projekat',
|
||||||
|
'detach' => 'Odvoji projekat',
|
||||||
|
'none' => 'Nijedan',
|
||||||
|
'id' => [
|
||||||
|
'label' => 'ID projekta',
|
||||||
|
'help' => 'Kako pronaći svoj ID projekta',
|
||||||
|
'missing' => 'Specifikuj ID projekta za korišćenje.',
|
||||||
|
],
|
||||||
|
'detach_confirm' => 'Da li zaista želite da odvojite ovaj projekat?',
|
||||||
|
'unbind_success' => 'Projekat je uspešno odvojen.',
|
||||||
|
],
|
||||||
|
'settings' => [
|
||||||
|
'menu_label' => 'Podešavanja',
|
||||||
|
'not_found' => 'Nije moguće pronaći navedena podešavanja.',
|
||||||
|
'missing_model' => 'Na stranici sa podešavanjima nedostaje definicija modela.',
|
||||||
|
'update_success' => 'Podešavanje :name je uspešno ažurirano.',
|
||||||
|
'return' => 'Nazad na sistemska podešavanja',
|
||||||
|
'search' => 'Traži',
|
||||||
|
],
|
||||||
|
'mail' => [
|
||||||
|
'log_file' => 'Fajl sa logovima',
|
||||||
|
'menu_label' => 'Konfiguracija pošte',
|
||||||
|
'menu_description' => 'Upravljaj konfiguracijom pošte.',
|
||||||
|
'general' => 'Generalno',
|
||||||
|
'method' => 'Metod pošte',
|
||||||
|
'sender_name' => 'Ime pošiljaoca',
|
||||||
|
'sender_email' => 'Email pošiljaoca',
|
||||||
|
'php_mail' => 'PHP mejl',
|
||||||
|
'smtp' => 'SMTP',
|
||||||
|
'smtp_address' => 'SMTP adresa',
|
||||||
|
'smtp_authorization' => 'Potrebna SMTP autorizacija',
|
||||||
|
'smtp_authorization_comment' => 'Čekiraj ovo polje ako tvoj server zahteva SMTP autorizaciju.',
|
||||||
|
'smtp_username' => 'Korisničko ime',
|
||||||
|
'smtp_password' => 'Lozinka',
|
||||||
|
'smtp_port' => 'SMTP port',
|
||||||
|
'smtp_ssl' => 'Potrebna SSL konekcija',
|
||||||
|
'smtp_encryption' => 'SMTP šifarski protokol',
|
||||||
|
'smtp_encryption_none' => 'Bez šifrovanja',
|
||||||
|
'smtp_encryption_tls' => 'TLS',
|
||||||
|
'smtp_encryption_ssl' => 'SSL',
|
||||||
|
'sendmail' => 'Sendmail',
|
||||||
|
'sendmail_path' => 'Sendmail putanja',
|
||||||
|
'sendmail_path_comment' => 'Specificiraj putanju Sendmail programa.',
|
||||||
|
'mailgun' => 'Mailgun',
|
||||||
|
'mailgun_domain' => 'Mailgun domen',
|
||||||
|
'mailgun_domain_comment' => 'Specificiraj Mailgun domen.',
|
||||||
|
'mailgun_secret' => 'Mailgun tajna',
|
||||||
|
'mailgun_secret_comment' => 'Unesi svoj Mailgun API ključ.',
|
||||||
|
'mandrill' => 'Mandrill',
|
||||||
|
'mandrill_secret' => 'Mandrill tajna',
|
||||||
|
'mandrill_secret_comment' => 'Unesi svoj Mandrill API ključ.',
|
||||||
|
'ses' => 'SES',
|
||||||
|
'ses_key' => 'SES ključ',
|
||||||
|
'ses_key_comment' => 'Unesi svoj SES API ključ.',
|
||||||
|
'ses_secret' => 'SES tajna',
|
||||||
|
'ses_secret_comment' => 'Unesi svoju SES API tajnu.',
|
||||||
|
'sparkpost' => 'SparkPost',
|
||||||
|
'sparkpost_secret' => 'SparkPost tajna',
|
||||||
|
'sparkpost_secret_comment' => 'Unesi svoju SparkPost API tajnu.',
|
||||||
|
'ses_region' => 'SES region',
|
||||||
|
'ses_region_comment' => 'Unesi svoj SES region. (e.g. us-east-1)',
|
||||||
|
'drivers_hint_header' => 'Drajveri nisu instalirani.',
|
||||||
|
'drivers_hint_content' => 'Ovaj metod pošte zahteva instaliranje ":plugin" priključka.',
|
||||||
|
],
|
||||||
|
'mail_templates' => [
|
||||||
|
'menu_label' => 'Šabloni pošte',
|
||||||
|
'menu_description' => 'Izmeni šablone pošte koji se šalju korisnicima i administratorima.',
|
||||||
|
'new_template' => 'Novi šablon',
|
||||||
|
'new_layout' => 'Novi plan',
|
||||||
|
'new_partial' => 'Novi parcijal',
|
||||||
|
'template' => 'Šablon',
|
||||||
|
'templates' => 'Šabloni',
|
||||||
|
'partial' => 'Parcijal',
|
||||||
|
'partials' => 'Parcijali',
|
||||||
|
'menu_layouts_label' => 'Planovi pošte',
|
||||||
|
'menu_partials_label' => 'Parcijali pošte',
|
||||||
|
'layout' => 'Plan',
|
||||||
|
'layouts' => 'Planovi',
|
||||||
|
'no_layout' => '-- Bez plana --',
|
||||||
|
'name' => 'Naziv',
|
||||||
|
'name_comment' => 'Unikatni naziv za referenciranje ovog šablona.',
|
||||||
|
'code' => 'Kod',
|
||||||
|
'code_comment' => 'Unikatan kod za referenciranje ovog šablona.',
|
||||||
|
'subject' => 'Naslov',
|
||||||
|
'subject_comment' => 'Naslov e-pošte.',
|
||||||
|
'description' => 'Opis',
|
||||||
|
'content_html' => 'HTML',
|
||||||
|
'content_css' => 'CSS',
|
||||||
|
'content_text' => 'Običan tekst',
|
||||||
|
'test_send' => 'Pošalji testnu poruku',
|
||||||
|
'test_success' => 'Test poruka poslata.',
|
||||||
|
'test_confirm' => 'Pošalji test poruku na :email. Nastavi?',
|
||||||
|
'creating' => 'Pravljenje šablona...',
|
||||||
|
'creating_layout' => 'Pravljenje plana...',
|
||||||
|
'saving' => 'Čuvanje šablona...',
|
||||||
|
'saving_layout' => 'Čuvanje plana...',
|
||||||
|
'delete_confirm' => 'Izbriši ovaj šablon?',
|
||||||
|
'delete_layout_confirm' => 'Izbriši ovaj plan?',
|
||||||
|
'deleting' => 'Brisanje šablona...',
|
||||||
|
'deleting_layout' => 'Brisanje plana...',
|
||||||
|
'sending' => 'Slanje testne poruke...',
|
||||||
|
'return' => 'Povratak na listu šablona',
|
||||||
|
'options' => 'Opcije',
|
||||||
|
'disable_auto_inline_css' => 'Isključi automatsko uvođenje CSS-a.',
|
||||||
|
],
|
||||||
|
'mail_brand' => [
|
||||||
|
'menu_label' => 'Brendovanje pošte',
|
||||||
|
'menu_description' => 'Modifikuj boje i izgled šablona pošte.',
|
||||||
|
'page_title' => 'Izmeni izgled pošte',
|
||||||
|
'sample_template' => [
|
||||||
|
'heading' => 'Zaglavlje',
|
||||||
|
'paragraph' => 'Ovo je paragraf ispunjen prozvoljnim tekstom koji ne znači ništa.',
|
||||||
|
'table' => [
|
||||||
|
'item' => 'Element',
|
||||||
|
'description' => 'Opis',
|
||||||
|
'price' => 'Cena',
|
||||||
|
'centered' => 'Centrirana',
|
||||||
|
'right_aligned' => 'Poravnjana na desno',
|
||||||
|
],
|
||||||
|
'buttons' => [
|
||||||
|
'primary' => 'Primarno dugme',
|
||||||
|
'positive' => 'Pozitivno dugme',
|
||||||
|
'negative' => 'Negativno dugme',
|
||||||
|
],
|
||||||
|
'panel' => 'Koliko je fenomenalan ovaj panel?',
|
||||||
|
'more' => 'Još malo teksta',
|
||||||
|
'promotion' => 'Kupon: OKTOBAR',
|
||||||
|
'subcopy' => 'Ovo je podkopija ovog mejla.',
|
||||||
|
'thanks' => 'Hvala',
|
||||||
|
],
|
||||||
|
'fields' => [
|
||||||
|
'_section_background' => 'Pozadina',
|
||||||
|
'body_bg' => 'Pozadina tela',
|
||||||
|
'content_bg' => 'Pozadina sadržaja',
|
||||||
|
'content_inner_bg' => 'Pozadina unutrašnjeg sadržaja',
|
||||||
|
'_section_buttons' => 'Dugmići',
|
||||||
|
'button_text_color' => 'Boja teksta dugmeta',
|
||||||
|
'button_primary_bg' => 'Primarna pozadina dugmeta',
|
||||||
|
'button_positive_bg' => 'Pozitivna pozadina dugmeta',
|
||||||
|
'button_negative_bg' => 'Negativna pozadina dugmeta',
|
||||||
|
'_section_type' => 'Tipografija',
|
||||||
|
'header_color' => 'Boja zaglavlja mejla',
|
||||||
|
'heading_color' => 'Boja zaglavlja',
|
||||||
|
'text_color' => 'Boja teksta',
|
||||||
|
'link_color' => 'Boja linka',
|
||||||
|
'footer_color' => 'Boja podnožja',
|
||||||
|
'_section_borders' => 'Ivice',
|
||||||
|
'body_border_color' => 'Boja ivica tela',
|
||||||
|
'subcopy_border_color' => 'Boja ivica podkopije',
|
||||||
|
'table_border_color' => 'Boja ivica tabele',
|
||||||
|
'_section_components' => 'Komponente',
|
||||||
|
'panel_bg' => 'Pozadina panela',
|
||||||
|
'promotion_bg' => 'Pozadina promocije',
|
||||||
|
'promotion_border_color' => 'Boja ivica promocije',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'install' => [
|
||||||
|
'project_label' => 'Dodaj projektu',
|
||||||
|
'plugin_label' => 'Instaliraj priključak',
|
||||||
|
'theme_label' => 'Instaliraj temu',
|
||||||
|
'missing_plugin_name' => 'Specificiraj naziv priključka za instaliranje.',
|
||||||
|
'missing_theme_name' => 'Specificiraj naziv teme za instaliranje.',
|
||||||
|
'install_completing' => 'Završavanje instalacionog procesa',
|
||||||
|
'install_success' => 'Priključak je instaliran uspešno',
|
||||||
|
],
|
||||||
|
'updates' => [
|
||||||
|
'title' => 'Upravljaj ispravkama',
|
||||||
|
'name' => 'Ažuriraj softver',
|
||||||
|
'menu_label' => 'Ispravke & priključci',
|
||||||
|
'menu_description' => 'Ažuriraj sistem, upravljaj i instaliraj priključke i teme.',
|
||||||
|
'return_link' => 'Povratak na ažuriranje sistema',
|
||||||
|
'check_label' => 'Proveri ispravke',
|
||||||
|
'retry_label' => 'Pokušaj ponovo',
|
||||||
|
'plugin_name' => 'Naziv',
|
||||||
|
'plugin_code' => 'Kod',
|
||||||
|
'plugin_description' => 'Opis',
|
||||||
|
'plugin_version' => 'Verzija',
|
||||||
|
'plugin_author' => 'Autor',
|
||||||
|
'plugin_not_found' => 'Priključak nije pronađen',
|
||||||
|
'core_current_build' => 'Trenutna verzija',
|
||||||
|
'core_view_changelog' => 'Prikaži listu promena',
|
||||||
|
'core_build' => 'Verzija :build',
|
||||||
|
'core_build_help' => 'Novija verzija je dostupna.',
|
||||||
|
'core_downloading' => 'Dopremanje fajlova aplikacije',
|
||||||
|
'core_extracting' => 'Ekstrakcija fajlova aplikacije',
|
||||||
|
'core_set_build' => 'Postavljanje broja verzije',
|
||||||
|
'changelog' => 'Lista izmena',
|
||||||
|
'changelog_view_details' => 'Prikaži detalje',
|
||||||
|
'plugins' => 'Priključci',
|
||||||
|
'themes' => 'Teme',
|
||||||
|
'disabled' => 'Isključeni',
|
||||||
|
'plugin_downloading' => 'Dopremanje priključka: :name',
|
||||||
|
'plugin_extracting' => 'Ektrakcija priključka: :name',
|
||||||
|
'plugin_version_none' => 'Novi priključak',
|
||||||
|
'plugin_current_version' => 'Trenutna verzija',
|
||||||
|
'theme_new_install' => 'Instalacija nove teme.',
|
||||||
|
'theme_downloading' => 'Dopremanje teme: :name',
|
||||||
|
'theme_extracting' => 'Ekstrakcija teme: :name',
|
||||||
|
'update_label' => 'Ažuriranje softvera',
|
||||||
|
'update_completing' => 'Završavanje procesa ažuriranja',
|
||||||
|
'update_loading' => 'Učitavanje mogućih ispravki...',
|
||||||
|
'update_success' => 'Proces ažuriranja je završen',
|
||||||
|
'update_failed_label' => 'Ažuriranje je neuspešno',
|
||||||
|
'force_label' => 'Ažuriraj na silu',
|
||||||
|
'found' => [
|
||||||
|
'label' => 'Nove ispravke su pronađene!',
|
||||||
|
'help' => 'Klikni na ažuriraj softver da bi započeo proces.',
|
||||||
|
],
|
||||||
|
'none' => [
|
||||||
|
'label' => 'Nema ispravki',
|
||||||
|
'help' => 'Nove ispravke nisu pronađene.',
|
||||||
|
],
|
||||||
|
'important_action' => [
|
||||||
|
'empty' => 'Izaberi radnju',
|
||||||
|
'confirm' => 'Potvrdi ispravke',
|
||||||
|
'skip' => 'Preskoči ovu ispravku (samo jednom)',
|
||||||
|
'ignore' => 'Preskoči ovu ispravku (uvek)',
|
||||||
|
],
|
||||||
|
'important_action_required' => 'Akcija neophodna',
|
||||||
|
'important_view_guide' => 'Prikaži vodič za nadogradnju',
|
||||||
|
'important_view_release_notes' => 'Prikaži beleške o izdanju',
|
||||||
|
'important_alert_text' => 'Neke ispravke zahtevaju vašu pažnju.',
|
||||||
|
'details_title' => 'Detalji priključka',
|
||||||
|
'details_view_homepage' => 'Prikaži početnu stranicu',
|
||||||
|
'details_readme' => 'Dokumentacija',
|
||||||
|
'details_readme_missing' => 'Nema dokumentacije.',
|
||||||
|
'details_changelog' => 'Lista izmena',
|
||||||
|
'details_changelog_missing' => 'Nema liste izmena.',
|
||||||
|
'details_upgrades' => 'Vodič za nadogradnju',
|
||||||
|
'details_upgrades_missing' => 'Nema vodiča za nadogradnju.',
|
||||||
|
'details_licence' => 'Licenca',
|
||||||
|
'details_licence_missing' => 'Nema licence.',
|
||||||
|
'details_current_version' => 'Trenutna verzija',
|
||||||
|
'details_author' => 'Autor',
|
||||||
|
],
|
||||||
|
'server' => [
|
||||||
|
'connect_error' => 'Greška pri povezivanju na server.',
|
||||||
|
'response_not_found' => 'Server za ispravke nije pronađen.',
|
||||||
|
'response_invalid' => 'Odgovor servera nije validan.',
|
||||||
|
'response_empty' => 'Odgovor servera je prazan.',
|
||||||
|
'file_error' => 'Server nije uspeo da dopremi paket.',
|
||||||
|
'file_corrupt' => 'Fajl sa servera je korumpiran.',
|
||||||
|
],
|
||||||
|
'behavior' => [
|
||||||
|
'missing_property' => 'Klasa :class mora definisati svojstvo $:property korišćeno od strane :behavior ponašanja.',
|
||||||
|
],
|
||||||
|
'config' => [
|
||||||
|
'not_found' => 'Konfiguracioni fajl :file za definisanu :location lokaciju nije mogao biti pronađen.',
|
||||||
|
'required' => "Konfiguracija korišćena u :location lokaciji mora obezbediti vrednost za ':property' svojstvo.",
|
||||||
|
],
|
||||||
|
'zip' => [
|
||||||
|
'extract_failed' => "Ekstrakcija glavnog fajla ':file' nije moguća.",
|
||||||
|
],
|
||||||
|
'event_log' => [
|
||||||
|
'hint' => 'Ovaj log prikazuje spisak potencijalnih grešaka koje se mogu dogoditi tokom rada aplikacije.',
|
||||||
|
'menu_label' => 'Log događaja',
|
||||||
|
'menu_description' => 'Prikaži sistemske poruke sa vremenom i detaljima.',
|
||||||
|
'empty_link' => 'Isprazni log događaja',
|
||||||
|
'empty_loading' => 'Pražnjenje loga događaja...',
|
||||||
|
'empty_success' => 'Log događaja je ispražnjen',
|
||||||
|
'return_link' => 'Nazad na log događaja',
|
||||||
|
'id' => 'ID',
|
||||||
|
'id_label' => 'ID događaja',
|
||||||
|
'created_at' => 'Datum & vreme',
|
||||||
|
'message' => 'Poruka',
|
||||||
|
'level' => 'Nivo',
|
||||||
|
'preview_title' => 'Događaj',
|
||||||
|
],
|
||||||
|
'request_log' => [
|
||||||
|
'hint' => 'Ovaj log prikazuje listu zahteva koji mogu zahtevati vašu pažnju. Na primer, kada posetilac otvori neku stranicu a ona ne postoji.',
|
||||||
|
'menu_label' => 'Log zahteva',
|
||||||
|
'menu_description' => 'Prikaži loše ili preusmerene zahteve.',
|
||||||
|
'empty_link' => 'Isprazni log zahteva',
|
||||||
|
'empty_loading' => 'Pražnjenje loga zahteva...',
|
||||||
|
'empty_success' => 'Log zahteva je ispražnjen',
|
||||||
|
'return_link' => 'Nazad na log zahteva',
|
||||||
|
'id' => 'ID',
|
||||||
|
'id_label' => 'ID zahteva',
|
||||||
|
'count' => 'Broj',
|
||||||
|
'referer' => 'Reference',
|
||||||
|
'url' => 'URL',
|
||||||
|
'status_code' => 'Status',
|
||||||
|
'preview_title' => 'Zahtev',
|
||||||
|
],
|
||||||
|
'permissions' => [
|
||||||
|
'name' => 'Sistem',
|
||||||
|
'manage_system_settings' => 'Upravljaj sistemskim podešavanjima',
|
||||||
|
'manage_software_updates' => 'Upravljaj softverskim ispravkama',
|
||||||
|
'access_logs' => 'Prikaži sistemske logove',
|
||||||
|
'manage_mail_templates' => 'Upravljaj šablonima pošte',
|
||||||
|
'manage_mail_settings' => 'Upravljaj podešavanjima pošte',
|
||||||
|
'manage_other_administrators' => 'Upravljaj drugim administratorima',
|
||||||
|
'impersonate_users' => 'Oponašaj korisnike',
|
||||||
|
'manage_preferences' => 'Upravljaj preferencama pozadinskog sistema',
|
||||||
|
'manage_editor' => 'Upravljaj preferencama editora za kod',
|
||||||
|
'view_the_dashboard' => 'Prikaži kontrolnu tablu',
|
||||||
|
'manage_default_dashboard' => 'Upravljaj osnovama kontrolne table',
|
||||||
|
'manage_branding' => 'Izmeni pozadinski sistem',
|
||||||
|
],
|
||||||
|
'log' => [
|
||||||
|
'menu_label' => 'Log podešavanja',
|
||||||
|
'menu_description' => 'Specificiraj oblasti koje se trebaju logovati.',
|
||||||
|
'default_tab' => 'Logovanje',
|
||||||
|
'log_events' => 'Log sistemskih događaja',
|
||||||
|
'log_events_comment' => 'Čuvanje sistemskih događaja u bazi podataka pored čuvanja na fajlu.',
|
||||||
|
'log_requests' => 'Log loših zahteva',
|
||||||
|
'log_requests_comment' => 'Zahtevi na koje treba obratiti pažnju.',
|
||||||
|
'log_theme' => 'Log izmena kod tema',
|
||||||
|
'log_theme_comment' => 'Kada je tema promenjena preko pozadinskog sistema.',
|
||||||
|
],
|
||||||
|
'media' => [
|
||||||
|
'invalid_path' => "Specificirana putanja fajla nije validna: ':path'.",
|
||||||
|
'folder_size_items' => 'element(i)',
|
||||||
|
],
|
||||||
|
'page' => [
|
||||||
|
'custom_error' => [
|
||||||
|
'label' => 'Greška kod stranice',
|
||||||
|
'help' => 'Žao nam je, nešto je pošlo po zlu i željena stranica se ne može prikazati.',
|
||||||
|
],
|
||||||
|
'invalid_token' => [
|
||||||
|
'label' => 'Bezbednosni žeton nije validan.',
|
||||||
|
],
|
||||||
|
'maintenance' => [
|
||||||
|
'label' => "Odmah se vraćamo!",
|
||||||
|
'help' => "Sajt je u fazi održavanja, dođite kasnije!",
|
||||||
|
'message' => 'Poruka:',
|
||||||
|
'available_at' => 'Pokušajte ponovo za:',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'pagination' => [
|
||||||
|
'previous' => 'Prošla',
|
||||||
|
'next' => 'Sledeća',
|
||||||
|
],
|
||||||
|
];
|
||||||
|
|
@ -0,0 +1,125 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
return [
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| 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
|
||||||
|
| as the size rules. Feel free to tweak each of these messages here.
|
||||||
|
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
'accepted' => 'Polje :attribute mora biti prihvaćeno.',
|
||||||
|
'active_url' => 'Polje :attribute mora sadržati validan URL.',
|
||||||
|
'after' => 'Polje :attribute mora sadržati datum koji je posle sledećeg: :date.',
|
||||||
|
'after_or_equal' => 'Polje :attribute mora sadržati datum koji je posle sledećeg ili: :date.',
|
||||||
|
'alpha' => 'Polje :attribute mora sadržati samo slova.',
|
||||||
|
'alpha_dash' => 'Polje :attribute može sadržati samo slova, brojeve, i povlake',
|
||||||
|
'alpha_num' => 'Polje :attribute može sadržati samo slova ili brojeve.',
|
||||||
|
'array' => 'Polje :attribute mora sadržati niz.',
|
||||||
|
'before' => 'Polje :attribute mora sadržati datum koji je pre sledećeg: :date.',
|
||||||
|
'before_or_equal' => 'Polje :attribute mora sadržati datum koji je pre sledećeg ili: :date.',
|
||||||
|
'between' => [
|
||||||
|
'numeric' => 'Polje :attribute mora sadržati broj između :min i :max.',
|
||||||
|
'file' => 'Polje :attribute mora sadržati fajl veličine između :min i :max kilobajta.',
|
||||||
|
'string' => 'Polje :attribute mora sadržati tekst dužine između :min i :max karaktera.',
|
||||||
|
'array' => 'Polje :attribute mora imati između :min i :max elemenata.',
|
||||||
|
],
|
||||||
|
'boolean' => 'Polje :attribute mora imati vrednost tačno ili netačno.',
|
||||||
|
'confirmed' => 'Potvrda :attribute nije u odgovarajućem formatu.',
|
||||||
|
'date' => 'Polje :attribute ne sadrži validan datum.',
|
||||||
|
'date_format' => 'Polje :attribute ne sadrži datum u odgovarajućem formatu :format.',
|
||||||
|
'different' => 'Polja :attribute i :other moraju imati različite vrednosti.',
|
||||||
|
'digits' => 'Polje :attribute mora sadržati :digits cifre.',
|
||||||
|
'digits_between' => 'Polje :attribute mora sadržati između :min i :max cifre.',
|
||||||
|
'dimensions' => 'Polje :attribute ne sadrži validne dimenzije.',
|
||||||
|
'distinct' => 'Polje :attribute sadrži vrednost koja je duplikat.',
|
||||||
|
'email' => 'Polje :attribute mora sadržati validnu email adresu.',
|
||||||
|
'exists' => 'Polje :attribute nema validnu vrednost.',
|
||||||
|
'file' => 'Polje :attribute mora sadržati fajl.',
|
||||||
|
'filled' => 'Polje :attribute mora imati vrednost.',
|
||||||
|
'image' => 'Polje :attribute mora sadržati sliku.',
|
||||||
|
'in' => 'Polje :attribute nema validnu vrednost.',
|
||||||
|
'in_array' => 'Polje :attribute ne sadrži vrednost koja postoji u polju :other.',
|
||||||
|
'integer' => 'Polje :attribute mora sadržati ceo broj.',
|
||||||
|
'ip' => 'Polje :attribute mora sadržati validnu IP adresu.',
|
||||||
|
'ipv4' => 'Polje :attribute mora sadržati validnu IPv4 adresu.',
|
||||||
|
'ipv6' => 'Polje :attribute mora sadržati validnu IPv6 adresu.',
|
||||||
|
'json' => 'Polje :attribute mora sadržati validan JSON objekat.',
|
||||||
|
'max' => [
|
||||||
|
'numeric' => 'Polje :attribute ne sme sadržati broj veći od :max.',
|
||||||
|
'file' => 'Polje :attribute ne sme sadržati fajl veći od :max kilobajta.',
|
||||||
|
'string' => 'Polje :attribute ne sme sadržati tekst duži od :max karaktera.',
|
||||||
|
'array' => 'Polje :attribute ne sme imati više od :max elemenata.',
|
||||||
|
],
|
||||||
|
'mimes' => 'Polje :attribute mora sadržati fajl tipa: :values.',
|
||||||
|
'mimetypes' => 'Polje :attribute mora sadržati fajl jednog od sledećih tipova: :values.',
|
||||||
|
'min' => [
|
||||||
|
'numeric' => 'Polje :attribute ne sme sadržati broj manji od :min.',
|
||||||
|
'file' => 'Polje :attribute ne sme sadržati fajl manji od :min kilobajta.',
|
||||||
|
'string' => 'Polje :attribute ne sme sadržati tekst manji od :min karaktera.',
|
||||||
|
'array' => 'Polje :attribute ne sme imati manje od :min elemenata.',
|
||||||
|
],
|
||||||
|
'not_in' => 'Polje :attribute nema validnu vrednost.',
|
||||||
|
'numeric' => 'Polje :attribute mora sadržati broj.',
|
||||||
|
'present' => 'Polje :attribute mora biti prisutno.',
|
||||||
|
'regex' => 'Format polja :attribute nije validan.',
|
||||||
|
'required' => 'Polje :attribute je obavezno.',
|
||||||
|
'required_if' => 'Polje :attribute je obavezno kada :other ima vrednost :value.',
|
||||||
|
'required_unless' => 'Polje :attribute je obavezno kada vrednost polja :other nije deo :values.',
|
||||||
|
'required_with' => 'Polje :attribute je obavezno kada su vrednosti :values prisutne.',
|
||||||
|
'required_with_all' => 'Polje :attribute je obavezno kada su vrednosti :values prisutne.',
|
||||||
|
'required_without' => 'Polje :attribute je obavezno kada vrednosti :values nisu prisutne.',
|
||||||
|
'required_without_all' => 'Polje :attribute je obavezno kada nijedna od vrednosti :values nije prisutna.',
|
||||||
|
'same' => 'Polja :attribute i :other moraju imati iste vrednosti.',
|
||||||
|
'size' => [
|
||||||
|
'numeric' => 'Polje :attribute mora sadržati broj :size.',
|
||||||
|
'file' => 'Polje :attribute mora sadržati fajl od :size kilobajta.',
|
||||||
|
'string' => 'Polje :attribute mora sadržati tekst od :size karaktera.',
|
||||||
|
'array' => 'Polje :attribute mora imati :size elemenata.',
|
||||||
|
],
|
||||||
|
'string' => 'Polje :attribute mora sadržati tekst.',
|
||||||
|
'timezone' => 'Polje :attribute mora sadržati validnu vremensku zonu.',
|
||||||
|
'unique' => 'Polje :attribute mora biti jedinstveno.',
|
||||||
|
'uploaded' => 'Otpremanje fajla iz polja :attribute je neuspešno.',
|
||||||
|
'url' => 'Format polja :attribute nije validan.',
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| 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' => [
|
||||||
|
'attribute-name' => [
|
||||||
|
'rule-name' => 'uobičajena-poruka',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
|
||||||
|
/*
|
||||||
|
|--------------------------------------------------------------------------
|
||||||
|
| 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' => [
|
||||||
|
'name' => 'ime',
|
||||||
|
'password' => 'lozinka',
|
||||||
|
'user' => 'korisnik',
|
||||||
|
],
|
||||||
|
|
||||||
|
];
|
||||||
|
|
@ -11,11 +11,6 @@ return [
|
||||||
'file' => [
|
'file' => [
|
||||||
'create_fail' => 'Невозможно создать файл: :name',
|
'create_fail' => 'Невозможно создать файл: :name',
|
||||||
],
|
],
|
||||||
'page' => [
|
|
||||||
'invalid_token' => [
|
|
||||||
'label' => 'Неверный токен безопасности',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
'combiner' => [
|
'combiner' => [
|
||||||
'not_found' => "Сборщик ресурсов не может найти файл ':name'.",
|
'not_found' => "Сборщик ресурсов не может найти файл ':name'.",
|
||||||
],
|
],
|
||||||
|
|
@ -66,46 +61,40 @@ return [
|
||||||
],
|
],
|
||||||
'plugins' => [
|
'plugins' => [
|
||||||
'manage' => 'Управление плагинами',
|
'manage' => 'Управление плагинами',
|
||||||
'enable_or_disable' => 'Включить или выключить',
|
|
||||||
'enable_or_disable_title' => 'Включение или отключение плагинов',
|
|
||||||
'install' => 'Установить плагины',
|
'install' => 'Установить плагины',
|
||||||
'install_products' => 'Установка расширений',
|
'install_products' => 'Установка расширений',
|
||||||
'search' => 'поиск плагинов для установки...',
|
'search' => 'поиск плагинов для установки...',
|
||||||
'installed' => 'Установленные плагины',
|
'installed' => 'Установленные плагины',
|
||||||
'no_plugins' => 'Нет плагинов, установленных из магазина.',
|
'no_plugins' => 'Нет плагинов, установленных из магазина.',
|
||||||
'recommended' => 'Рекомендуется',
|
'recommended' => 'Рекомендуется',
|
||||||
'remove' => 'Удалить',
|
'plugin_label' => 'Плагин',
|
||||||
'refresh' => 'Обновить',
|
|
||||||
'disabled_label' => 'Отключить',
|
|
||||||
'disabled_help' => 'Отключенные плагины будут игнорироваться.',
|
|
||||||
'frozen_label' => 'Замораживание обновления',
|
|
||||||
'frozen_help' => 'Плагины, которые были заморожены игнорируются в процессе обновления.',
|
|
||||||
'selected_amount' => 'Выбрано плагинов: :amount',
|
|
||||||
'remove_confirm' => 'Вы уверены, что хотите удалить выбранные плагины? Это также удалит все связанные данные.',
|
|
||||||
'remove_success' => 'Выбранные плагины успешно удалены.',
|
|
||||||
'refresh_confirm' => 'Вы уверены, что хотите сбросить данные у выбранных плагинов? Данное действие восстановит их в исходное состояние',
|
|
||||||
'refresh_success' => 'Выбранные плагины успешно обновлены.',
|
|
||||||
'disable_confirm' => 'Вы уверены?',
|
|
||||||
'disable_success' => 'Плагин успешно отключен.',
|
|
||||||
'enable_success' => 'Плагин успешно включен.',
|
|
||||||
'unknown_plugin' => 'Плагин был удален из файловой системы.',
|
'unknown_plugin' => 'Плагин был удален из файловой системы.',
|
||||||
'unfrozen' => 'Обновления включены',
|
'select_label' => 'Выберите действие...',
|
||||||
'enabled' => 'Плагин включен',
|
'bulk_actions_label' => 'Массовые действия',
|
||||||
'check_yes' => 'Да',
|
'check_yes' => 'Да',
|
||||||
'check_no' => 'Нет',
|
'check_no' => 'Нет',
|
||||||
'select_label' => 'Выберите действие...',
|
'unfrozen' => 'Обновления включены',
|
||||||
'freeze_label' => 'Отключить обновления',
|
'enabled' => 'Плагин включен',
|
||||||
|
'freeze' => 'отключить обновления для',
|
||||||
|
'unfreeze' => 'включить обновления для',
|
||||||
|
'enable' => 'включить',
|
||||||
|
'disable' => 'выключить',
|
||||||
|
'refresh' => 'сбросить',
|
||||||
|
'remove' => 'Удалить',
|
||||||
|
'freeze_label' => 'Выключить обновления',
|
||||||
'unfreeze_label' => 'Включить обновления',
|
'unfreeze_label' => 'Включить обновления',
|
||||||
'enable_label' => 'Включить плагины',
|
'enable_label' => 'Включить плагины',
|
||||||
'disable_label' => 'Отключить плагины',
|
'disable_label' => 'Отключить плагины',
|
||||||
'refresh_label' => 'Сбросить данные плагина',
|
'refresh_label' => 'Сбросить данные плагина',
|
||||||
'freeze' => 'отключить обновления',
|
'action_confirm' => 'Вы уверены что хотите :action эти плагины?',
|
||||||
'unfreeze' => 'включить обновления',
|
'freeze_success' => 'Обновления успешно выключены для выбранных плагинов.',
|
||||||
'enable' => 'включить',
|
'unfreeze_success' => 'Обновления успешно включены для выбранных плагинов.',
|
||||||
'disable' => 'отключить',
|
'enable_success' => 'Выбранные плагины успешно включены.',
|
||||||
'action_confirm' => 'Вы действительно хотите :action?',
|
'disable_success' => 'Выбранные плагины успешно выключены.',
|
||||||
'freeze_success' => 'Обновления успешно отключены',
|
'refresh_confirm' => 'Вы уверены, что хотите сбросить данные выбранных плагинов? Это приведет к сбросу данных каждого плагина, восстановив его в исходное состояние.',
|
||||||
'unfreeze_success' => 'Обновления успешно включены',
|
'refresh_success' => 'Выбранные плагины успешно обновлены.',
|
||||||
|
'remove_confirm' => 'Вы уверены, что хотите удалить выбранные Плагины? Это также приведет к удалению всех связанных данных.',
|
||||||
|
'remove_success' => 'Выбранные плагины успешно удалены.',
|
||||||
],
|
],
|
||||||
'project' => [
|
'project' => [
|
||||||
'name' => 'Проект',
|
'name' => 'Проект',
|
||||||
|
|
@ -166,6 +155,9 @@ return [
|
||||||
'ses_key_comment' => 'Введите ваш SES API-ключ',
|
'ses_key_comment' => 'Введите ваш SES API-ключ',
|
||||||
'ses_secret' => 'SES секретный API-ключ',
|
'ses_secret' => 'SES секретный API-ключ',
|
||||||
'ses_secret_comment' => 'Введите ваш секретный SES API-ключ',
|
'ses_secret_comment' => 'Введите ваш секретный SES API-ключ',
|
||||||
|
'sparkpost' => 'SparkPost',
|
||||||
|
'sparkpost_secret' => 'SparkPost secret',
|
||||||
|
'sparkpost_secret_comment' => 'Введите ваш SparkPost API secret key',
|
||||||
'ses_region' => 'SES регион',
|
'ses_region' => 'SES регион',
|
||||||
'ses_region_comment' => 'Введите ваш SES регион (например, us-east-1)',
|
'ses_region_comment' => 'Введите ваш SES регион (например, us-east-1)',
|
||||||
'drivers_hint_header' => 'Драйвера не установлены',
|
'drivers_hint_header' => 'Драйвера не установлены',
|
||||||
|
|
@ -209,6 +201,8 @@ return [
|
||||||
'deleting_layout' => 'Удаление макета...',
|
'deleting_layout' => 'Удаление макета...',
|
||||||
'sending' => 'Отправка тестового сообщения...',
|
'sending' => 'Отправка тестового сообщения...',
|
||||||
'return' => 'Вернуться к списку шаблонов',
|
'return' => 'Вернуться к списку шаблонов',
|
||||||
|
'options' => 'Опции',
|
||||||
|
'disable_auto_inline_css' => 'Выключить автоматический встроенный CSS',
|
||||||
],
|
],
|
||||||
'mail_brand' => [
|
'mail_brand' => [
|
||||||
'menu_label' => 'Почтовый брендинг',
|
'menu_label' => 'Почтовый брендинг',
|
||||||
|
|
@ -273,7 +267,7 @@ return [
|
||||||
'updates' => [
|
'updates' => [
|
||||||
'title' => 'Менеджер обновлений',
|
'title' => 'Менеджер обновлений',
|
||||||
'name' => 'Обновление ПО',
|
'name' => 'Обновление ПО',
|
||||||
'menu_label' => 'Обновления',
|
'menu_label' => 'Обновления и плагины',
|
||||||
'menu_description' => 'Обновление системы, управление и установка плагинов и тем.',
|
'menu_description' => 'Обновление системы, управление и установка плагинов и тем.',
|
||||||
'return_link' => 'Вернуться к системе обновлений',
|
'return_link' => 'Вернуться к системе обновлений',
|
||||||
'check_label' => 'Проверить обновления ',
|
'check_label' => 'Проверить обновления ',
|
||||||
|
|
@ -284,12 +278,16 @@ return [
|
||||||
'plugin_version' => 'Версия',
|
'plugin_version' => 'Версия',
|
||||||
'plugin_author' => 'Автор',
|
'plugin_author' => 'Автор',
|
||||||
'plugin_not_found' => 'Плагин не найден',
|
'plugin_not_found' => 'Плагин не найден',
|
||||||
|
'plugin_version_not_found' => 'Версия плагина не найдена',
|
||||||
'core_current_build' => 'Текущая сборка',
|
'core_current_build' => 'Текущая сборка',
|
||||||
|
'core_view_changelog' => 'Просмотр списка изменений',
|
||||||
'core_build' => 'Сборка :build',
|
'core_build' => 'Сборка :build',
|
||||||
'core_build_help' => 'Последняя доступная сборка.',
|
'core_build_help' => 'Последняя доступная сборка.',
|
||||||
'core_downloading' => 'Загрузка файлов приложения',
|
'core_downloading' => 'Загрузка файлов приложения',
|
||||||
'core_extracting' => 'Распаковка файлов приложения',
|
'core_extracting' => 'Распаковка файлов приложения',
|
||||||
'core_set_build' => 'Установка номера сборки',
|
'core_set_build' => 'Установка номера сборки',
|
||||||
|
'changelog' => 'Список изменений',
|
||||||
|
'changelog_view_details' => 'Просмотр подробностей',
|
||||||
'plugins' => 'Плагины',
|
'plugins' => 'Плагины',
|
||||||
'themes' => 'Темы',
|
'themes' => 'Темы',
|
||||||
'disabled' => 'Отключено',
|
'disabled' => 'Отключено',
|
||||||
|
|
@ -394,9 +392,11 @@ return [
|
||||||
'manage_mail_templates' => 'Управление почтовыми шаблонами',
|
'manage_mail_templates' => 'Управление почтовыми шаблонами',
|
||||||
'manage_mail_settings' => 'Управление настройками почты',
|
'manage_mail_settings' => 'Управление настройками почты',
|
||||||
'manage_other_administrators' => 'Управление другими администраторами',
|
'manage_other_administrators' => 'Управление другими администраторами',
|
||||||
|
'impersonate_users' => 'Выдавать себя за пользователей',
|
||||||
'manage_preferences' => 'Управление настройками бэкенда',
|
'manage_preferences' => 'Управление настройками бэкенда',
|
||||||
'manage_editor' => 'Управление настройками редактора кода',
|
'manage_editor' => 'Управление настройками редактора кода',
|
||||||
'view_the_dashboard' => 'Просмотр панели управления',
|
'view_the_dashboard' => 'Просмотр панели управления',
|
||||||
|
'manage_default_dashboard' => 'Управление панелью управления по умолчанию',
|
||||||
'manage_branding' => 'Персонализация панели управления',
|
'manage_branding' => 'Персонализация панели управления',
|
||||||
],
|
],
|
||||||
'log' => [
|
'log' => [
|
||||||
|
|
@ -414,4 +414,23 @@ return [
|
||||||
'invalid_path' => "Указан недопустимый путь к файлу: ':path'.",
|
'invalid_path' => "Указан недопустимый путь к файлу: ':path'.",
|
||||||
'folder_size_items' => 'объектов',
|
'folder_size_items' => 'объектов',
|
||||||
],
|
],
|
||||||
|
'page' => [
|
||||||
|
'custom_error' => [
|
||||||
|
'label' => 'Ошибка страницы',
|
||||||
|
'help' => 'Приносим извинения, что-то пошло не так и страница не может быть отображена.',
|
||||||
|
],
|
||||||
|
'invalid_token' => [
|
||||||
|
'label' => 'Неверный токен безопасности',
|
||||||
|
],
|
||||||
|
'maintenance' => [
|
||||||
|
'label' => "Мы скоро вернемся!",
|
||||||
|
'help' => "В настоящее время мы находимся на обслуживании, зайдите позже!",
|
||||||
|
'message' => 'Сообщение:',
|
||||||
|
'available_at' => 'Попробуйте еще раз после:',
|
||||||
|
],
|
||||||
|
],
|
||||||
|
'pagination' => [
|
||||||
|
'previous' => 'Предыдущий',
|
||||||
|
'next' => 'Следующий',
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ return [
|
||||||
'pt-br' => 'Português (Brasil)',
|
'pt-br' => 'Português (Brasil)',
|
||||||
'pt-pt' => 'Português (Portugal)',
|
'pt-pt' => 'Português (Portugal)',
|
||||||
'ro' => 'Română',
|
'ro' => 'Română',
|
||||||
|
'rs' => 'Srpski',
|
||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'fi' => 'Suomi',
|
'fi' => 'Suomi',
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ return [
|
||||||
'pt-br' => 'Português (Brasil)',
|
'pt-br' => 'Português (Brasil)',
|
||||||
'pt-pt' => 'Português (Portugal)',
|
'pt-pt' => 'Português (Portugal)',
|
||||||
'ro' => 'Română',
|
'ro' => 'Română',
|
||||||
|
'rs' => 'Srpski',
|
||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'fi' => 'Suomi',
|
'fi' => 'Suomi',
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@ return [
|
||||||
'pt-br' => 'Português (Brasil)',
|
'pt-br' => 'Português (Brasil)',
|
||||||
'pt-pt' => 'Português (Portugal)',
|
'pt-pt' => 'Português (Portugal)',
|
||||||
'ro' => 'Română',
|
'ro' => 'Română',
|
||||||
|
'rs' => 'Srpski',
|
||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'fi' => 'Suomi',
|
'fi' => 'Suomi',
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
|
|
|
||||||
|
|
@ -35,6 +35,7 @@ return [
|
||||||
'pt-br' => 'Português (Brasil)',
|
'pt-br' => 'Português (Brasil)',
|
||||||
'pt-pt' => 'Português (Portugal)',
|
'pt-pt' => 'Português (Portugal)',
|
||||||
'ro' => 'Română',
|
'ro' => 'Română',
|
||||||
|
'rs' => 'Srpski',
|
||||||
'ru' => 'Русский',
|
'ru' => 'Русский',
|
||||||
'fi' => 'Suomi',
|
'fi' => 'Suomi',
|
||||||
'sv' => 'Svenska',
|
'sv' => 'Svenska',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue