├── .github
└── ISSUE_TEMPLATE
│ ├── 1_BUG_REPORT.md
│ └── 2_GENERAL_SUPPORT.md
├── .gitignore
├── DOCS.md
├── LICENCE.md
├── Plugin.php
├── README.md
├── assets
├── css
│ ├── pages.css
│ └── treeview.css
├── images
│ ├── content-icons.png
│ ├── loader-transparent.svg
│ ├── menu-icons.png
│ ├── pages-icon.svg
│ ├── snippet-icons.png
│ ├── treeview-icons.png
│ └── treeview-submenu-tabs.png
├── js
│ ├── october.treeview.js
│ └── pages-page.js
└── less
│ ├── pages.less
│ └── treeview.less
├── classes
├── Content.php
├── Controller.php
├── Menu.php
├── MenuItem.php
├── MenuItemReference.php
├── Page.php
├── PageList.php
├── Router.php
├── content
│ └── fields.yaml
├── menu
│ └── fields.yaml
├── menuitem
│ └── fields.yaml
└── page
│ └── fields.yaml
├── components
├── ChildPages.php
├── StaticBreadcrumbs.php
├── StaticMenu.php
├── StaticPage.php
├── childpages
│ └── default.htm
├── staticbreadcrumbs
│ └── default.htm
├── staticmenu
│ ├── default.htm
│ └── items.htm
└── staticpage
│ └── default.htm
├── composer.json
├── config
└── config.php
├── controllers
├── Index.php
└── index
│ ├── _concurrency_resolve_form.htm
│ ├── _content_toolbar.htm
│ ├── _form_page.htm
│ ├── _menu_toolbar.htm
│ ├── _page_toolbar.htm
│ ├── _sidepanel.htm
│ ├── config_content_list.yaml
│ └── index.htm
├── docs
├── menu-item.png
├── menu-management.png
├── snippets-backend.png
├── snippets-partial.png
├── static-layout.png
└── static-page.png
├── formwidgets
├── Components.php
├── MenuItemSearch.php
├── MenuItems.php
├── MenuPicker.php
├── PagePicker.php
├── components
│ └── partials
│ │ ├── _component.htm
│ │ └── _formcomponents.htm
├── menuitems
│ ├── assets
│ │ └── js
│ │ │ └── menu-items-editor.js
│ └── partials
│ │ ├── _editortemplate.htm
│ │ ├── _item.htm
│ │ ├── _itemlist.htm
│ │ ├── _items.htm
│ │ └── _menuitems.htm
└── menuitemsearch
│ └── partials
│ └── _body.htm
├── lang
├── cs
│ └── lang.php
├── de
│ └── lang.php
├── el
│ └── lang.php
├── en
│ └── lang.php
├── es
│ └── lang.php
├── fa
│ └── lang.php
├── fi
│ └── lang.php
├── fr
│ └── lang.php
├── hu
│ └── lang.php
├── it
│ └── lang.php
├── lv
│ └── lang.php
├── nb-no
│ └── lang.php
├── nl
│ └── lang.php
├── pl
│ └── lang.php
├── pt-br
│ └── lang.php
├── ru
│ └── lang.php
├── sk
│ └── lang.php
├── sl
│ └── lang.php
├── sv
│ └── lang.php
├── tr
│ └── lang.php
├── uk
│ └── lang.php
└── zh-cn
│ └── lang.php
├── rainlab-pages.mix.js
├── updates
└── version.yaml
└── widgets
├── MenuList.php
├── PageList.php
├── TemplateList.php
├── menulist
└── partials
│ ├── _body.htm
│ ├── _items.htm
│ ├── _menus.htm
│ └── _toolbar.htm
├── pagelist
└── partials
│ ├── _body.htm
│ ├── _items.htm
│ ├── _pages.htm
│ ├── _toolbar.htm
│ └── _treebranch.htm
└── templatelist
└── partials
├── _body.htm
├── _items.htm
├── _sorting-options.htm
├── _templates.htm
└── _toolbar.htm
/.github/ISSUE_TEMPLATE/1_BUG_REPORT.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "🐛 Bug Report"
3 | about: 'Report a general Pages Plugin issue'
4 | labels: 'Status: Review Needed, Type: Unconfirmed Bug'
5 | ---
6 |
7 | - OctoberCMS Build: ###
8 | - RainLab Pages Plugin Version: ###
9 | - PHP Version:
10 |
11 | ### Description:
12 |
13 |
14 | ### Steps To Reproduce:
15 |
16 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/2_GENERAL_SUPPORT.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: "⚠️ General Support"
3 | about: 'This repository is only for reporting bugs or problems. If you need help using RainLab Pages, see: https://octobercms.com/support'
4 | ---
5 |
6 | This repository is only for reporting bugs or problems with the RainLab Pages plugin. If you need support, please use
7 | the following options:
8 |
9 | - Forum: https://octobercms.com/forum
10 | - Discord: https://discord.com/invite/gEKgwSZ
11 | - Stack Overflow: https://stackoverflow.com/questions/tagged/octobercms
12 |
13 | Thanks!
14 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .idea
--------------------------------------------------------------------------------
/LICENCE.md:
--------------------------------------------------------------------------------
1 | # MIT license
2 |
3 | Copyright (c) 2014-2022 Responsiv Pty Ltd, October CMS
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
9 | of the Software, and to permit persons to whom the Software is furnished to do
10 | so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/assets/css/pages.css:
--------------------------------------------------------------------------------
1 | .control-filelist.menu-list li>a{position:relative}.control-filelist.menu-list li>a:before{background-image:url(../images/menu-icons.png);background-position:0 0;background-repeat:no-repeat;background-size:36px auto;content:" ";height:18px;left:17px;position:absolute;top:18px;width:18px}.control-filelist.menu-list li.active>a:before,.control-filelist.menu-list li>a:hover:before{background-position:0 -60px}.control-filelist.content li>a{position:relative}.control-filelist.content li>a:before{background-image:url(../images/content-icons.png);background-position:0 0;background-repeat:no-repeat;background-size:34px auto;content:" ";height:22px;left:18px;position:absolute;top:10px;width:18px}.control-filelist.content li.active>a:before,.control-filelist.content li>a:hover:before{background-position:0 -27px}.control-filelist.content li.group ul li>a:before{left:34px}.control-filelist.snippet-list li>a{color:#808c8d;position:relative}.control-filelist.snippet-list li>a:before{background-image:url(../images/snippet-icons.png);background-position:0 0;background-repeat:no-repeat;background-size:34px auto;content:" ";height:19px;left:18px;position:absolute;top:13px;top:12px;width:17px}.control-filelist.snippet-list li>a:hover:before{background-position:0 -21px}.control-filelist.snippet-list li.group ul li>a:before{left:34px}@media only screen and (-moz-min-device-pixel-ratio:1.5),only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-devicepixel-ratio:1.5),only screen and (min-resolution:1.5dppx){.control-filelist.menu-list li>a:before{background-position:0 -11px;background-size:18px auto}.control-filelist.menu-list li.active>a:before,.control-filelist.menu-list li>a:hover:before{background-position:0 -40px}.control-filelist.content li a:before{background-position:0 -27px;background-size:17px auto}.control-filelist.content li a:hover:before,.control-filelist.content li.active a:before{background-position:0 -52px}.control-filelist.snippet-list li a:before{background-position:0 -21px;background-size:17px auto}.control-filelist.snippet-list li a:hover:before{background-position:0 -41px}}.fancy-layout .pagesTextEditor{border-left:1px solid #cfd7e1!important}.control-richeditor [data-snippet]:before{content:attr(data-name)}.control-richeditor [data-snippet]:after{background-image:url(../images/snippet-icons.png);background-position:0 0;background-repeat:no-repeat;background-size:34px auto;content:" ";height:19px;left:18px;left:11px;position:absolute;top:13px;top:12px;width:17px}.control-richeditor [data-snippet].loading:after{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite;background-image:url(../images/loader-transparent.svg);background-position:50% 50%;background-size:15px 15px;content:" ";height:15px;position:absolute;top:13px;width:15px}@media only screen and (-moz-min-device-pixel-ratio:1.5),only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (min-devicepixel-ratio:1.5),only screen and (min-resolution:1.5dppx){.control-richeditor [data-snippet]:after{background-position:0 -21px;background-size:17px auto}}
2 |
--------------------------------------------------------------------------------
/assets/images/content-icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rainlab/pages-plugin/4341db2cf36cc93ac4855e71226cc0215bb5c688/assets/images/content-icons.png
--------------------------------------------------------------------------------
/assets/images/loader-transparent.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
5 | ]>
6 |
21 |
--------------------------------------------------------------------------------
/assets/images/menu-icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rainlab/pages-plugin/4341db2cf36cc93ac4855e71226cc0215bb5c688/assets/images/menu-icons.png
--------------------------------------------------------------------------------
/assets/images/pages-icon.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/images/snippet-icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rainlab/pages-plugin/4341db2cf36cc93ac4855e71226cc0215bb5c688/assets/images/snippet-icons.png
--------------------------------------------------------------------------------
/assets/images/treeview-icons.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rainlab/pages-plugin/4341db2cf36cc93ac4855e71226cc0215bb5c688/assets/images/treeview-icons.png
--------------------------------------------------------------------------------
/assets/images/treeview-submenu-tabs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rainlab/pages-plugin/4341db2cf36cc93ac4855e71226cc0215bb5c688/assets/images/treeview-submenu-tabs.png
--------------------------------------------------------------------------------
/assets/less/pages.less:
--------------------------------------------------------------------------------
1 | @import "../../../../../modules/backend/assets/less/core/boot.less";
2 |
3 | .control-filelist.menu-list {
4 | li {
5 | > a {
6 | position: relative;
7 |
8 | &:before {
9 | position: absolute;
10 | width: 18px;
11 | height: 18px;
12 | left: 17px;
13 | top: 18px;
14 |
15 | content: ' ';
16 |
17 | background-image: url(../images/menu-icons.png);
18 | background-position: 0 0;
19 | background-repeat: no-repeat;
20 | background-size: 36px auto;
21 | }
22 |
23 | &:hover {
24 | &:before {
25 | background-position: 0 -60px;
26 | }
27 | }
28 | }
29 |
30 | &.active > a:before {
31 | background-position: 0 -60px;
32 | }
33 | }
34 | }
35 |
36 | .control-filelist.content {
37 | li > a {
38 | position: relative;
39 |
40 | &:before {
41 | position: absolute;
42 | width: 18px;
43 | height: 22px;
44 | left: 18px;
45 | top: 10px;
46 |
47 | content: ' ';
48 |
49 | background-image: url(../images/content-icons.png);
50 | background-position: 0 0;
51 | background-repeat: no-repeat;
52 | background-size: 34px auto;
53 | }
54 |
55 | &:hover {
56 | &:before {
57 | background-position: 0 -27px;
58 | }
59 | }
60 | }
61 |
62 | li.active > a:before {
63 | background-position: 0 -27px;
64 | }
65 |
66 | li.group ul li > a:before {
67 | left: 34px;
68 | }
69 | }
70 |
71 | .page-snippet-icon() {
72 | position: absolute;
73 | width: 17px;
74 | height: 19px;
75 | left: 18px;
76 | top: 13px;
77 |
78 | content: ' ';
79 |
80 | background-image: url(../images/snippet-icons.png);
81 | background-position: 0 0;
82 | background-repeat: no-repeat;
83 | background-size: 34px auto;
84 | }
85 |
86 | .control-filelist.snippet-list {
87 | li > a {
88 | position: relative;
89 | color: #808c8d;
90 |
91 | &:before {
92 | .page-snippet-icon();
93 |
94 | left: 18px;
95 | top: 12px;
96 | }
97 |
98 | &:hover {
99 | &:before {
100 | background-position: 0 -21px;
101 | }
102 | }
103 | }
104 |
105 | li.group ul li > a:before {
106 | left: 34px;
107 | }
108 | }
109 |
110 | @media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-devicepixel-ratio: 1.5), only screen and (min-resolution: 1.5dppx) {
111 | .control-filelist.menu-list {
112 | li {
113 | > a {
114 | &:before {
115 | background-position: 0px -11px;
116 | background-size: 18px auto;
117 | }
118 |
119 | &:hover {
120 | &:before {
121 | background-position: 0px -40px;
122 | }
123 | }
124 | }
125 |
126 | &.active > a:before {
127 | background-position: 0px -40px;
128 | }
129 | }
130 | }
131 |
132 | .control-filelist.content {
133 | li {
134 | a {
135 | &:before {
136 | background-position: 0px -27px;
137 | background-size: 17px auto;
138 | }
139 |
140 | &:hover {
141 | &:before {
142 | background-position: 0px -52px;
143 | }
144 | }
145 | }
146 |
147 | &.active a:before {
148 | background-position: 0px -52px;
149 | }
150 | }
151 | }
152 |
153 | .control-filelist.snippet-list {
154 | li {
155 | a {
156 | &:before {
157 | background-position: 0px -21px;
158 | background-size: 17px auto;
159 | }
160 |
161 | &:hover {
162 | &:before {
163 | background-position: 0px -41px;
164 | }
165 | }
166 | }
167 | }
168 | }
169 | }
170 |
171 | .fancy-layout {
172 | .pagesTextEditor {
173 | border-left: 1px solid #cfd7e1 !important;
174 | }
175 | }
176 |
177 | .control-richeditor {
178 | [data-snippet] {
179 | &:before {
180 | content: attr(data-name);
181 | }
182 |
183 | &:after {
184 | .page-snippet-icon();
185 |
186 | left: 11px;
187 | top: 12px;
188 | }
189 |
190 | &.loading:after {
191 | background-image:url(../images/loader-transparent.svg);
192 | background-size: 15px 15px;
193 | background-position: 50% 50%;
194 | position: absolute;
195 | width: 15px;
196 | height: 15px;
197 | top: 13px;
198 | content: ' ';
199 | .animation(spin 1s linear infinite);
200 | }
201 | }
202 | }
203 |
204 | @media only screen and (-moz-min-device-pixel-ratio: 1.5), only screen and (-o-min-device-pixel-ratio: 3/2), only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-devicepixel-ratio: 1.5), only screen and (min-resolution: 1.5dppx) {
205 | .control-richeditor [data-snippet]:after {
206 | background-position: 0px -21px;
207 | background-size: 17px auto;
208 | }
209 | }
210 |
--------------------------------------------------------------------------------
/classes/Content.php:
--------------------------------------------------------------------------------
1 | getBaseFileName());
32 | $title = ucwords(str_replace(['-', '_'], ' ', $title));
33 | return $title;
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/classes/Controller.php:
--------------------------------------------------------------------------------
1 | theme = Theme::getActiveTheme();
29 | if (!$this->theme) {
30 | throw new CmsException(Lang::get('cms::lang.theme.active.not_found'));
31 | }
32 | }
33 |
34 | /**
35 | * Creates a CMS page from a static page and configures it.
36 | * @param string $url Specifies the static page URL.
37 | * @return \Cms\Classes\Page Returns the CMS page object or NULL of the requested page was not found.
38 | */
39 | public function initCmsPage($url)
40 | {
41 | $router = new Router($this->theme);
42 | $page = $router->findByUrl($url);
43 |
44 | if (!$page) {
45 | return null;
46 | }
47 |
48 | $viewBag = $page->viewBag;
49 |
50 | $cmsPage = CmsPage::inTheme($this->theme);
51 | $cmsPage->url = $url;
52 | $cmsPage->apiBag['staticPage'] = $page;
53 |
54 | /*
55 | * Transfer specific values from the content view bag to the page settings object.
56 | */
57 | $viewBagToSettings = ['title', 'layout', 'meta_title', 'meta_description', 'is_hidden'];
58 |
59 | foreach ($viewBagToSettings as $property) {
60 | $cmsPage->settings[$property] = array_get($viewBag, $property);
61 | }
62 |
63 | // Transer page ID to CMS page
64 | $cmsPage->settings['id'] = $page->getId();
65 |
66 | return $cmsPage;
67 | }
68 |
69 | public function injectPageTwig($page, $loader, $twig)
70 | {
71 | if (!isset($page->apiBag['staticPage'])) {
72 | return;
73 | }
74 |
75 | $staticPage = $page->apiBag['staticPage'];
76 |
77 | CmsException::mask($staticPage, 400);
78 | $loader->setObject($staticPage);
79 | $template = $twig->load($staticPage->getFilePath());
80 | $template->render([]);
81 | CmsException::unmask();
82 | }
83 |
84 | public function getPageContents($page)
85 | {
86 | if (!isset($page->apiBag['staticPage'])) {
87 | return;
88 | }
89 |
90 | return $page->apiBag['staticPage']->getProcessedMarkup();
91 | }
92 |
93 | public function getPlaceholderContents($page, $placeholderName, $placeholderContents)
94 | {
95 | if (!isset($page->apiBag['staticPage'])) {
96 | return;
97 | }
98 |
99 | return $page->apiBag['staticPage']->getProcessedPlaceholderMarkup($placeholderName, $placeholderContents);
100 | }
101 |
102 | public function parseSyntaxFields($content)
103 | {
104 | try {
105 | return SyntaxParser::parse($content, [
106 | 'varPrefix' => 'extraData.',
107 | 'tagPrefix' => 'page:'
108 | ])->toTwig();
109 | }
110 | catch (Exception $ex) {
111 | return $content;
112 | }
113 | }
114 | }
115 |
--------------------------------------------------------------------------------
/classes/MenuItem.php:
--------------------------------------------------------------------------------
1 | $value) {
109 | if ($name != 'items') {
110 | if (property_exists($obj, $name)) {
111 | $obj->$name = $value;
112 | }
113 | }
114 | else {
115 | $obj->items = self::initFromArray($value);
116 | }
117 | }
118 |
119 | $result[] = $obj;
120 | }
121 |
122 | return $result;
123 | }
124 |
125 | /**
126 | * Returns a list of registered menu item types
127 | * @return array Returns an array of registered item types
128 | */
129 | public function getTypeOptions($keyValue = null)
130 | {
131 | /*
132 | * Baked in types
133 | */
134 | $result = [
135 | 'url' => 'URL',
136 | 'header' => 'Header',
137 | ];
138 |
139 | $apiResult = Event::fire('pages.menuitem.listTypes');
140 |
141 | if (is_array($apiResult)) {
142 | foreach ($apiResult as $typeList) {
143 | if (!is_array($typeList)) {
144 | continue;
145 | }
146 |
147 | foreach ($typeList as $typeCode => $typeName) {
148 | $result[$typeCode] = $typeName;
149 | }
150 | }
151 | }
152 |
153 | return $result;
154 | }
155 |
156 | public function getCmsPageOptions($keyValue = null)
157 | {
158 | return []; // CMS Pages are loaded client-side
159 | }
160 |
161 | public function getReferenceOptions($keyValue = null)
162 | {
163 | return []; // References are loaded client-side
164 | }
165 |
166 | public static function getTypeInfo($type)
167 | {
168 | $result = [];
169 | $apiResult = Event::fire('pages.menuitem.getTypeInfo', [$type]);
170 |
171 | if (is_array($apiResult)) {
172 | foreach ($apiResult as $typeInfo) {
173 | if (!is_array($typeInfo)) {
174 | continue;
175 | }
176 |
177 | foreach ($typeInfo as $name => $value) {
178 | if ($name == 'cmsPages') {
179 | $cmsPages = [];
180 |
181 | foreach ($value as $page) {
182 | $baseName = $page->getBaseFileName();
183 | $pos = strrpos($baseName, '/');
184 |
185 | $dir = $pos !== false ? substr($baseName, 0, $pos).' / ' : null;
186 | $cmsPages[$baseName] = strlen($page->title)
187 | ? $dir.$page->title
188 | : $baseName;
189 | }
190 |
191 | $value = $cmsPages;
192 | }
193 |
194 | $result[$name] = $value;
195 | }
196 | }
197 | }
198 |
199 | return $result;
200 | }
201 |
202 | /**
203 | * Converts the menu item data to an array
204 | * @return array Returns the menu item data as array
205 | */
206 | public function toArray()
207 | {
208 | $result = [];
209 |
210 | foreach ($this->fillable as $property) {
211 | $result[$property] = $this->$property;
212 | }
213 |
214 | return $result;
215 | }
216 | }
217 |
--------------------------------------------------------------------------------
/classes/MenuItemReference.php:
--------------------------------------------------------------------------------
1 | theme = $theme;
42 | }
43 |
44 | /**
45 | * Finds a static page by its URL.
46 | * @param string $url The requested URL string.
47 | * @return \RainLab\Pages\Classes\Page Returns \RainLab\Pages\Classes\Page object or null if the page cannot be found.
48 | */
49 | public function findByUrl($url)
50 | {
51 | $url = Str::lower(RouterHelper::normalizeUrl($url));
52 |
53 | if (array_key_exists($url, self::$cache)) {
54 | return self::$cache[$url];
55 | }
56 |
57 | $urlMap = $this->getUrlMap();
58 | $urlMap = array_key_exists('urls', $urlMap) ? $urlMap['urls'] : [];
59 |
60 | if (!array_key_exists($url, $urlMap)) {
61 | return null;
62 | }
63 |
64 | $fileName = $urlMap[$url];
65 |
66 | if (($page = Page::loadCached($this->theme, $fileName)) === null) {
67 | /*
68 | * If the page was not found on the disk, clear the URL cache
69 | * and try again.
70 | */
71 | $this->clearCache();
72 |
73 | return self::$cache[$url] = Page::loadCached($this->theme, $fileName);
74 | }
75 |
76 | return self::$cache[$url] = $page;
77 | }
78 |
79 | /**
80 | * Autoloads the URL map only allowing a single execution.
81 | * @return array Returns the URL map.
82 | */
83 | protected function getUrlMap()
84 | {
85 | if (!count(self::$urlMap)) {
86 | $this->loadUrlMap();
87 | }
88 |
89 | return self::$urlMap;
90 | }
91 |
92 | /**
93 | * Loads the URL map - a list of page file names and corresponding URL patterns.
94 | * The URL map can is cached. The clearUrlMap() method resets the cache. By default
95 | * the map is updated every time when a page is saved in the back-end, or
96 | * when the interval defined with the cms.urlCacheTtl expires.
97 | * @return boolean Returns true if the URL map was loaded from the cache. Otherwise returns false.
98 | */
99 | protected function loadUrlMap()
100 | {
101 | $key = $this->getCacheKey('static-page-url-map');
102 |
103 | $cacheable = Config::get('cms.enable_route_cache', false);
104 | $cached = $cacheable ? Cache::get($key, false) : false;
105 |
106 | if (!$cached || ($unserialized = @unserialize($cached)) === false) {
107 | /*
108 | * The item doesn't exist in the cache, create the map
109 | */
110 | $pageList = new PageList($this->theme);
111 |
112 | $pages = $pageList->listPages();
113 | $map = [
114 | 'urls' => [],
115 | 'files' => [],
116 | 'titles' => []
117 | ];
118 | foreach ($pages as $page) {
119 | if (!$page) {
120 | continue;
121 | }
122 |
123 | $url = $page->getViewBag()->property('url');
124 | if (!$url) {
125 | continue;
126 | }
127 |
128 | $url = Str::lower(RouterHelper::normalizeUrl($url));
129 | $file = $page->getBaseFileName();
130 |
131 | $map['urls'][$url] = $file;
132 | $map['files'][$file] = $url;
133 | $map['titles'][$file] = $page->getViewBag()->property('title');
134 | }
135 |
136 | self::$urlMap = $map;
137 |
138 | if ($cacheable) {
139 | $comboConfig = Config::get('cms.url_cache_ttl', 10);
140 | $expiresAt = now()->addMinutes($comboConfig);
141 | Cache::put($key, serialize($map), $expiresAt);
142 | }
143 |
144 | return false;
145 | }
146 |
147 | self::$urlMap = $unserialized;
148 |
149 | return true;
150 | }
151 |
152 | /**
153 | * Returns the caching URL key depending on the theme.
154 | * @param string $keyName Specifies the base key name.
155 | * @return string Returns the theme-specific key name.
156 | */
157 | protected function getCacheKey($keyName)
158 | {
159 | $key = crc32($this->theme->getPath()).$keyName;
160 | /**
161 | * @event pages.router.getCacheKey
162 | * Enables modifying the key used to reference cached RainLab.Pages routes
163 | *
164 | * Example usage:
165 | *
166 | * Event::listen('pages.router.getCacheKey', function (&$key) {
167 | * $key = $key . '-' . App::getLocale();
168 | * });
169 | *
170 | */
171 | Event::fire('pages.router.getCacheKey', [&$key]);
172 | return $key;
173 | }
174 |
175 | /**
176 | * Clears the router cache.
177 | */
178 | public function clearCache()
179 | {
180 | self::$cache = [];
181 | self::$urlMap = [];
182 | Cache::forget($this->getCacheKey('static-page-url-map'));
183 | }
184 | }
185 |
--------------------------------------------------------------------------------
/classes/content/fields.yaml:
--------------------------------------------------------------------------------
1 | # ===================================
2 | # Field Definitions
3 | # ===================================
4 |
5 | fields:
6 | fileName:
7 | label: cms::lang.editor.filename
8 | attributes:
9 | default-focus: 1
10 |
11 | toolbar:
12 | type: partial
13 | path: content_toolbar
14 | cssClass: collapse-visible
15 |
16 | components: RainLab\Pages\FormWidgets\Components
17 |
18 | secondaryTabs:
19 | stretch: true
20 | fields:
21 | markup:
22 | tab: cms::lang.editor.content
23 | stretch: true
24 | type: codeeditor
25 | language: html
26 | theme: chrome
27 | showGutter: false
28 | highlightActiveLine: false
29 | fontSize: 13
30 | cssClass: pagesTextEditor
31 | margin: 20
32 |
33 | markup_html:
34 | tab: cms::lang.editor.content
35 | stretch: true
36 | type: richeditor
37 | size: huge
38 | valueFrom: markup
39 |
--------------------------------------------------------------------------------
/classes/menu/fields.yaml:
--------------------------------------------------------------------------------
1 | # ===================================
2 | # Field Definitions
3 | # ===================================
4 |
5 | fields:
6 | name:
7 | span: left
8 | label: rainlab.pages::lang.menu.name
9 | placeholder: rainlab.pages::lang.menu.new_name
10 | attributes:
11 | default-focus: 1
12 |
13 | code:
14 | span: right
15 | placeholder: rainlab.pages::lang.menu.new_code
16 | label: rainlab.pages::lang.menu.code
17 | preset:
18 | field: name
19 | type: file
20 |
21 | toolbar:
22 | type: partial
23 | path: menu_toolbar
24 | cssClass: collapse-visible
25 |
26 | tabs:
27 | stretch: true
28 | cssClass: master-area
29 | paneCssClass: pane-compact
30 | fields:
31 | items:
32 | stretch: true
33 | tab: rainlab.pages::lang.menu.items
34 | type: RainLab\Pages\FormWidgets\MenuItems
35 |
--------------------------------------------------------------------------------
/classes/menuitem/fields.yaml:
--------------------------------------------------------------------------------
1 | # ===================================
2 | # Field Definitions
3 | # ===================================
4 |
5 | fields:
6 |
7 | search:
8 | type: Rainlab\Pages\FormWidgets\MenuItemSearch
9 |
10 | title:
11 | span: left
12 | label: rainlab.pages::lang.menuitem.title
13 |
14 | type:
15 | span: right
16 | label: rainlab.pages::lang.menuitem.type
17 | type: dropdown
18 |
19 | url:
20 | label: rainlab.pages::lang.menuitem.url
21 |
22 | reference:
23 | label: rainlab.pages::lang.menuitem.reference
24 | type: dropdown
25 | cssClass: input-sidebar-control
26 |
27 | cmsPage:
28 | label: rainlab.pages::lang.menuitem.cms_page
29 | comment: rainlab.pages::lang.menuitem.cms_page_comment
30 | type: dropdown
31 | cssClass: input-sidebar-control
32 |
33 | nesting:
34 | label: rainlab.pages::lang.menuitem.allow_nested_items
35 | comment: rainlab.pages::lang.menuitem.allow_nested_items_comment
36 | type: checkbox
37 | default: true
38 |
39 | replace:
40 | label: rainlab.pages::lang.menuitem.replace
41 | comment: rainlab.pages::lang.menuitem.replace_comment
42 | type: checkbox
43 | default: true
44 |
45 | tabs:
46 | fields:
47 | viewBag[isHidden]:
48 | label: rainlab.pages::lang.menuitem.hidden
49 | comment: rainlab.pages::lang.menuitem.hidden_comment
50 | type: checkbox
51 | tab: rainlab.pages::lang.menuitem.display_tab
52 |
53 | code:
54 | label: rainlab.pages::lang.menuitem.code
55 | comment: rainlab.pages::lang.menuitem.code_comment
56 | tab: rainlab.pages::lang.menuitem.attributes_tab
57 | span: auto
58 |
59 | viewBag[cssClass]:
60 | label: rainlab.pages::lang.menuitem.css_class
61 | comment: rainlab.pages::lang.menuitem.css_class_comment
62 | tab: rainlab.pages::lang.menuitem.attributes_tab
63 | span: auto
64 |
65 | viewBag[isExternal]:
66 | label: rainlab.pages::lang.menuitem.external_link
67 | comment: rainlab.pages::lang.menuitem.external_link_comment
68 | type: checkbox
69 | tab: rainlab.pages::lang.menuitem.attributes_tab
70 |
--------------------------------------------------------------------------------
/classes/page/fields.yaml:
--------------------------------------------------------------------------------
1 | # ===================================
2 | # Field Definitions
3 | # ===================================
4 |
5 | fields:
6 | viewBag[title]:
7 | span: left
8 | label: rainlab.pages::lang.editor.title
9 | placeholder: rainlab.pages::lang.editor.new_title
10 | attributes:
11 | default-focus: 1
12 |
13 | viewBag[url]:
14 | span: right
15 | placeholder: /
16 | label: rainlab.pages::lang.editor.url
17 | preset:
18 | field: viewBag[title]
19 | type: url
20 | prefixInput: input[data-parent-url]
21 |
22 | toolbar:
23 | type: partial
24 | path: page_toolbar
25 | cssClass: collapse-visible
26 |
27 | tabs:
28 | cssClass: master-area
29 | fields:
30 | viewBag[layout]:
31 | tab: cms::lang.editor.settings
32 | label: rainlab.pages::lang.page.layout
33 | type: dropdown
34 | options: getLayoutOptions
35 |
36 | viewBag[is_hidden]:
37 | tab: cms::lang.editor.settings
38 | span: left
39 | label: rainlab.pages::lang.editor.hidden
40 | type: checkbox
41 | comment: rainlab.pages::lang.editor.hidden_comment
42 |
43 | viewBag[navigation_hidden]:
44 | tab: cms::lang.editor.settings
45 | span: right
46 | label: rainlab.pages::lang.editor.navigation_hidden
47 | type: checkbox
48 | comment: rainlab.pages::lang.editor.navigation_hidden_comment
49 |
50 | viewBag[meta_title]:
51 | tab: cms::lang.editor.meta
52 | label: cms::lang.editor.meta_title
53 |
54 | viewBag[meta_description]:
55 | tab: cms::lang.editor.meta
56 | label: cms::lang.editor.meta_description
57 | type: textarea
58 | size: tiny
59 |
60 | secondaryTabs:
61 | stretch: true
62 | fields:
63 | markup:
64 | tab: rainlab.pages::lang.editor.content
65 | type: richeditor
66 | stretch: true
67 | size: huge
68 |
--------------------------------------------------------------------------------
/components/ChildPages.php:
--------------------------------------------------------------------------------
1 | '',
21 | * 'title' => '',
22 | * 'page' => \RainLab\Pages\Classes\Page,
23 | * 'viewBag' => array,
24 | * 'is_hidden' => bool,
25 | * 'navigation_hidden' => bool,
26 | * ]
27 | */
28 | public $pages = [];
29 |
30 | public function componentDetails()
31 | {
32 | return [
33 | 'name' => 'rainlab.pages::lang.component.child_pages_name',
34 | 'description' => 'rainlab.pages::lang.component.child_pages_description'
35 | ];
36 | }
37 |
38 | public function onRun()
39 | {
40 | // Check if the staticPage component is attached to the rendering template
41 | $this->staticPageComponent = $this->findComponentByName('staticPage');
42 | if ($this->staticPageComponent->pageObject) {
43 | $this->childPages = $this->staticPageComponent->pageObject->getChildren();
44 |
45 | if ($this->childPages) {
46 | foreach ($this->childPages as $childPage) {
47 | $viewBag = $childPage->viewBag;
48 | $this->pages = array_merge($this->pages, [[
49 | 'url' => @$viewBag['url'],
50 | 'title' => @$viewBag['title'],
51 | 'page' => $childPage,
52 | 'viewBag' => $viewBag,
53 | 'is_hidden' => @$viewBag['is_hidden'],
54 | 'navigation_hidden' => @$viewBag['navigation_hidden'],
55 | ]]);
56 | }
57 | }
58 | }
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/components/StaticBreadcrumbs.php:
--------------------------------------------------------------------------------
1 | 'rainlab.pages::lang.component.static_breadcrumbs_name',
28 | 'description' => 'rainlab.pages::lang.component.static_breadcrumbs_description'
29 | ];
30 | }
31 |
32 | public function onRun()
33 | {
34 | $url = $this->getRouter()->getUrl();
35 |
36 | if (!strlen($url)) {
37 | $url = '/';
38 | }
39 |
40 | $theme = Theme::getActiveTheme();
41 | $router = new Router($theme);
42 | $page = $router->findByUrl($url);
43 |
44 | if ($page) {
45 | $tree = StaticPageClass::buildMenuTree($theme);
46 |
47 | $code = $startCode = $page->getBaseFileName();
48 | $breadcrumbs = [];
49 |
50 | while ($code) {
51 | if (!isset($tree[$code])) {
52 | break;
53 | }
54 |
55 | $pageInfo = $tree[$code];
56 |
57 | if ($pageInfo['navigation_hidden']) {
58 | $code = $pageInfo['parent'];
59 | continue;
60 | }
61 |
62 | $reference = new MenuItemReference();
63 | $reference->title = $pageInfo['title'];
64 | $reference->url = StaticPageClass::url($code);
65 | $reference->isActive = $code == $startCode;
66 |
67 | $breadcrumbs[] = $reference;
68 |
69 | $code = $pageInfo['parent'];
70 | }
71 |
72 | $breadcrumbs = array_reverse($breadcrumbs);
73 |
74 | $this->breadcrumbs = $this->page['breadcrumbs'] = $breadcrumbs;
75 | }
76 | }
77 | }
78 |
--------------------------------------------------------------------------------
/components/StaticMenu.php:
--------------------------------------------------------------------------------
1 | 'rainlab.pages::lang.component.static_menu_name',
32 | 'description' => 'rainlab.pages::lang.component.static_menu_description'
33 | ];
34 | }
35 |
36 | public function defineProperties()
37 | {
38 | return [
39 | 'code' => [
40 | 'title' => 'rainlab.pages::lang.component.static_menu_code_name',
41 | 'description' => 'rainlab.pages::lang.component.static_menu_code_description',
42 | 'type' => 'dropdown'
43 | ]
44 | ];
45 | }
46 |
47 | public function getCodeOptions()
48 | {
49 | $result = [];
50 |
51 | $theme = Theme::getEditTheme();
52 | $menus = PagesMenu::listInTheme($theme, true);
53 |
54 | foreach ($menus as $menu) {
55 | $result[$menu->code] = $menu->name;
56 | }
57 |
58 | return $result;
59 | }
60 |
61 | public function onRun()
62 | {
63 | $this->page['menuItems'] = $this->menuItems();
64 | }
65 |
66 | public function menuItems()
67 | {
68 | if ($this->menuItems !== null) {
69 | return $this->menuItems;
70 | }
71 |
72 | if (!strlen($this->property('code'))) {
73 | return;
74 | }
75 |
76 | $theme = Theme::getActiveTheme();
77 | $menu = PagesMenu::loadCached($theme, $this->property('code'));
78 |
79 | if ($menu) {
80 | $this->menuItems = $menu->generateReferences($this->page);
81 | $this->menuName = $menu->name;
82 | }
83 |
84 | return $this->menuItems;
85 | }
86 |
87 | /**
88 | * Counts the total menu items, including children.
89 | */
90 | public function totalItems()
91 | {
92 | $countAll = function($items) use (&$countAll) {
93 | $count = count($items);
94 |
95 | foreach ($items as $item) {
96 | if (!isset($item->items)) {
97 | continue;
98 | }
99 |
100 | $count += $countAll($item->items);
101 | }
102 |
103 | return $count;
104 | };
105 |
106 | return $countAll($this->menuItems());
107 | }
108 |
109 | /**
110 | * Resets the menu code and rebuilds the menu.
111 | * @param string $code
112 | * @return array
113 | */
114 | public function resetMenu($code)
115 | {
116 | $this->setProperty('code', $code);
117 | $this->menuItems = null;
118 |
119 | return $this->page['menuItems'] = $this->menuItems();
120 | }
121 | }
122 |
--------------------------------------------------------------------------------
/components/StaticPage.php:
--------------------------------------------------------------------------------
1 | 'rainlab.pages::lang.component.static_page_name',
40 | 'description' => 'rainlab.pages::lang.component.static_page_description'
41 | ];
42 | }
43 |
44 | public function defineProperties()
45 | {
46 | return [
47 | 'useContent' => [
48 | 'title' => 'rainlab.pages::lang.component.static_page_use_content_name',
49 | 'description' => 'rainlab.pages::lang.component.static_page_use_content_description',
50 | 'default' => 1,
51 | 'type' => 'checkbox',
52 | 'showExternalParam' => false
53 | ],
54 | 'default' => [
55 | 'title' => 'rainlab.pages::lang.component.static_page_default_name',
56 | 'description' => 'rainlab.pages::lang.component.static_page_default_description',
57 | 'default' => 0,
58 | 'type' => 'checkbox',
59 | 'showExternalParam' => false
60 | ],
61 | 'childLayout' => [
62 | 'title' => 'rainlab.pages::lang.component.static_page_child_layout_name',
63 | 'description' => 'rainlab.pages::lang.component.static_page_child_layout_description',
64 | 'type' => 'string',
65 | 'showExternalParam' => false
66 | ]
67 | ];
68 | }
69 |
70 | public function onRun()
71 | {
72 | $url = $this->getRouter()->getUrl();
73 |
74 | if (!strlen($url)) {
75 | $url = '/';
76 | }
77 |
78 | if ($this->isMaintenanceModeEnabled()) {
79 | return;
80 | }
81 |
82 | $router = new Router(Theme::getActiveTheme());
83 | $this->pageObject = $this->page['page'] = $router->findByUrl($url);
84 |
85 | if ($this->pageObject) {
86 | $this->title = $this->page['title'] = array_get($this->pageObject->viewBag, 'title');
87 | $this->extraData = $this->page['extraData'] = $this->defineExtraData();
88 | }
89 | }
90 |
91 | public function page()
92 | {
93 | return $this->pageObject;
94 | }
95 |
96 | public function parent()
97 | {
98 | return $this->pageObject ? $this->pageObject->getParent() : null;
99 | }
100 |
101 | public function children()
102 | {
103 | return $this->pageObject ? $this->pageObject->getChildren() : null;
104 | }
105 |
106 | public function content()
107 | {
108 | // Evaluate the content property only when it's requested in the
109 | // render time. Calling the page's getProcessedMarkup() method in the
110 | // onRun() handler is too early as it triggers rendering component-based
111 | // snippets defined on the static page too early in the page life cycle. -ab
112 |
113 | if ($this->contentCached !== false) {
114 | return $this->contentCached;
115 | }
116 |
117 | if ($this->pageObject) {
118 | return $this->contentCached = $this->pageObject->getProcessedMarkup();
119 | }
120 |
121 | $this->contentCached = '';
122 | }
123 |
124 | /**
125 | * Find foreign view bag values and add them to
126 | * the component and page vars.
127 | */
128 | protected function defineExtraData()
129 | {
130 | $standardProperties = [
131 | 'title',
132 | 'url',
133 | 'layout',
134 | 'is_hidden',
135 | 'navigation_hidden',
136 | 'meta_title',
137 | 'meta_description'
138 | ];
139 |
140 | $extraData = array_diff_key(
141 | $this->pageObject->viewBag,
142 | array_flip($standardProperties)
143 | );
144 |
145 | foreach ($extraData as $key => $value) {
146 | $this->page[$key] = $value;
147 | }
148 |
149 | return $extraData;
150 | }
151 |
152 | /**
153 | * isMaintenanceModeEnabled will check if maintenance mode is currently enabled.
154 | * Static page logic should be disabled when this occurs.
155 | */
156 | protected function isMaintenanceModeEnabled(): bool
157 | {
158 | // Logic for October CMS v2.0
159 | if (method_exists(MaintenanceSetting::class, 'isEnabled')) {
160 | return MaintenanceSetting::isEnabled();
161 | }
162 |
163 | // Logic for October CMS v1.0
164 | return MaintenanceSetting::isConfigured() &&
165 | MaintenanceSetting::get('is_enabled', false) &&
166 | !\BackendAuth::getUser();
167 | }
168 |
169 | /**
170 | * Implements the getter functionality.
171 | * @param string $name
172 | * @return void
173 | */
174 | public function __get($name)
175 | {
176 | if (array_key_exists($name, $this->extraData)) {
177 | return $this->extraData[$name];
178 | }
179 |
180 | return null;
181 | }
182 |
183 | /**
184 | * Determine if an attribute exists on the object.
185 | * @param string $key
186 | * @return void
187 | */
188 | public function __isset($key)
189 | {
190 | if (array_key_exists($key, $this->extraData)) {
191 | return true;
192 | }
193 |
194 | return false;
195 | }
196 | }
197 |
--------------------------------------------------------------------------------
/components/childpages/default.htm:
--------------------------------------------------------------------------------
1 | {% if __SELF__.pages is not empty %}
2 |
3 | {% for page in __SELF__.pages %}
4 | -
5 | {{ page.title }}
6 |
7 | {% endfor %}
8 |
9 | {% endif %}
10 |
--------------------------------------------------------------------------------
/components/staticbreadcrumbs/default.htm:
--------------------------------------------------------------------------------
1 | {% if breadcrumbs %}
2 |
9 | {% endif %}
10 |
--------------------------------------------------------------------------------
/components/staticmenu/default.htm:
--------------------------------------------------------------------------------
1 | {% if __SELF__.menuItems %}
2 |
3 | {% partial __SELF__ ~ "::items" items=__SELF__.menuItems %}
4 |
5 | {% endif %}
6 |
--------------------------------------------------------------------------------
/components/staticmenu/items.htm:
--------------------------------------------------------------------------------
1 | {% for item in items %}
2 | {% if not item.viewBag.isHidden %}
3 |
4 | {% if item.url %}
5 |
6 | {{ item.title }}
7 |
8 | {% else %}
9 | {{ item.title }}
10 | {% endif %}
11 |
12 | {% if item.items %}
13 | {% partial __SELF__ ~ "::items" items=item.items %}
14 | {% endif %}
15 |
16 | {% endif %}
17 | {% endfor %}
18 |
--------------------------------------------------------------------------------
/components/staticpage/default.htm:
--------------------------------------------------------------------------------
1 | {{ __SELF__.content|raw }}
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "rainlab/pages-plugin",
3 | "type": "october-plugin",
4 | "description": "Pages plugin for October CMS",
5 | "homepage": "https://octobercms.com/plugin/rainlab-pages",
6 | "keywords": ["october", "octobercms", "pages"],
7 | "license": "MIT",
8 | "authors": [
9 | {
10 | "name": "Alexey Bobkov",
11 | "email": "aleksey.bobkov@gmail.com",
12 | "role": "Co-founder"
13 | },
14 | {
15 | "name": "Samuel Georges",
16 | "email": "daftspunky@gmail.com",
17 | "role": "Co-founder"
18 | }
19 | ],
20 | "require": {
21 | "php": "^8.0.2",
22 | "october/rain": ">=3.4",
23 | "composer/installers": "~1.0"
24 | },
25 | "minimum-stability": "dev"
26 | }
27 |
--------------------------------------------------------------------------------
/config/config.php:
--------------------------------------------------------------------------------
1 | false,
16 |
17 | /*
18 | |--------------------------------------------------------------------------
19 | | Sort Menus List By Filename
20 | |--------------------------------------------------------------------------
21 | |
22 | | You can force the menus list to be sorted by filename
23 | | Keep empty to use the default sorting order.
24 | |
25 | */
26 | 'menus_sort_by' => false // fileName, name, mtime
27 | ];
28 |
--------------------------------------------------------------------------------
/controllers/index/_concurrency_resolve_form.htm:
--------------------------------------------------------------------------------
1 | = Form::open(['onsubmit'=>'return false']) ?>
2 |
6 |
7 |
= e(trans('backend::lang.form.concurrency_file_changed_description')) ?>
8 |
9 |
29 | = Form::close() ?>
--------------------------------------------------------------------------------
/controllers/index/_content_toolbar.htm:
--------------------------------------------------------------------------------
1 |
49 |
--------------------------------------------------------------------------------
/controllers/index/_form_page.htm:
--------------------------------------------------------------------------------
1 | = Form::open([
2 | 'class' => 'layout',
3 | 'data-change-monitor' => 'true',
4 | 'data-window-close-confirm' => e(trans('backend::lang.form.confirm_tab_close')),
5 | 'data-object-type' => e($objectType)
6 | ]) ?>
7 | = $form->render() ?>
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 | = Form::close() ?>
--------------------------------------------------------------------------------
/controllers/index/_menu_toolbar.htm:
--------------------------------------------------------------------------------
1 |
49 |
--------------------------------------------------------------------------------
/controllers/index/_page_toolbar.htm:
--------------------------------------------------------------------------------
1 |
59 |
--------------------------------------------------------------------------------
/controllers/index/_sidepanel.htm:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
8 |
9 |
10 |
11 |
14 |
15 |
16 |
17 |
20 |
21 |
22 |
23 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/controllers/index/config_content_list.yaml:
--------------------------------------------------------------------------------
1 | # ===================================
2 | # Configures the layout list widget
3 | # ===================================
4 |
5 | titleProperty: 'nice_title'
6 | noRecordsMessage: 'cms::lang.content.no_list_records'
7 | deleteConfirmation: 'cms::lang.content.delete_confirm_multiple'
8 | itemType: content
9 | controlClass: filelist-hero content
10 | ignoreDirectories:
11 | - static-pages*
12 |
--------------------------------------------------------------------------------
/controllers/index/index.htm:
--------------------------------------------------------------------------------
1 | = Block::put('sidepanel') ?>
2 | fatalError): ?>
3 | = $this->makePartial('sidepanel') ?>
4 |
5 | = Block::endPut() ?>
6 |
7 | = Block::put('body') ?>
8 | fatalError): ?>
9 |
18 |
19 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | = e(trans($this->fatalError)) ?>
31 |
32 | = Block::endPut() ?>
33 |
--------------------------------------------------------------------------------
/docs/menu-item.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rainlab/pages-plugin/4341db2cf36cc93ac4855e71226cc0215bb5c688/docs/menu-item.png
--------------------------------------------------------------------------------
/docs/menu-management.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rainlab/pages-plugin/4341db2cf36cc93ac4855e71226cc0215bb5c688/docs/menu-management.png
--------------------------------------------------------------------------------
/docs/snippets-backend.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rainlab/pages-plugin/4341db2cf36cc93ac4855e71226cc0215bb5c688/docs/snippets-backend.png
--------------------------------------------------------------------------------
/docs/snippets-partial.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rainlab/pages-plugin/4341db2cf36cc93ac4855e71226cc0215bb5c688/docs/snippets-partial.png
--------------------------------------------------------------------------------
/docs/static-layout.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rainlab/pages-plugin/4341db2cf36cc93ac4855e71226cc0215bb5c688/docs/static-layout.png
--------------------------------------------------------------------------------
/docs/static-page.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/rainlab/pages-plugin/4341db2cf36cc93ac4855e71226cc0215bb5c688/docs/static-page.png
--------------------------------------------------------------------------------
/formwidgets/Components.php:
--------------------------------------------------------------------------------
1 | listComponents();
23 |
24 | return $this->makePartial('formcomponents', ['components' => $components]);
25 | }
26 |
27 | /**
28 | * listComponents
29 | */
30 | protected function listComponents()
31 | {
32 | $result = [];
33 |
34 | if (!isset($this->model->settings['components'])) {
35 | return $result;
36 | }
37 |
38 | $manager = ComponentManager::instance();
39 | $manager->listComponents();
40 |
41 | foreach ($this->model->settings['components'] as $name => $properties) {
42 | list($name, $alias) = strpos($name, ' ') ? explode(' ', $name) : [$name, $name];
43 |
44 | try {
45 | $componentObj = $manager->makeComponent($name, null, $properties);
46 | $componentObj->alias = $alias;
47 | $componentObj->pluginIcon = $manager->findComponentOwnerDetails($componentObj)['icon'] ?? 'icon-puzzle-piece';
48 | }
49 | catch (Exception $ex) {
50 | $componentObj = new UnknownComponent(null, $properties, $ex->getMessage());
51 | $componentObj->alias = $alias;
52 | $componentObj->pluginIcon = 'icon-bug';
53 | }
54 |
55 | $result[] = $componentObj;
56 | }
57 |
58 | return $result;
59 | }
60 |
61 | /**
62 | * getComponentName
63 | */
64 | protected function getComponentName($component)
65 | {
66 | return ComponentHelpers::getComponentName($component);
67 | }
68 |
69 | /**
70 | * getComponentDescription
71 | */
72 | protected function getComponentDescription($component)
73 | {
74 | return ComponentHelpers::getComponentDescription($component);
75 | }
76 |
77 | /**
78 | * getComponentsPropertyConfig
79 | */
80 | protected function getComponentsPropertyConfig($component)
81 | {
82 | return ComponentHelpers::getComponentsPropertyConfig($component);
83 | }
84 |
85 | /**
86 | * getComponentPropertyValues
87 | */
88 | protected function getComponentPropertyValues($component)
89 | {
90 | return ComponentHelpers::getComponentPropertyValues($component);
91 | }
92 | }
93 |
--------------------------------------------------------------------------------
/formwidgets/MenuItemSearch.php:
--------------------------------------------------------------------------------
1 | makePartial('body');
31 | }
32 |
33 | /*
34 | * Event handlers
35 | */
36 | public function onSearch()
37 | {
38 | $this->setSearchTerm(Input::get('term'));
39 |
40 | return $this->getData();
41 | }
42 |
43 | /*
44 | * Methods for internal use
45 | */
46 | protected function getData()
47 | {
48 | return [
49 | 'results' => $this->getMatches()
50 | ];
51 | }
52 |
53 | protected function getMatches()
54 | {
55 | $searchTerm = Str::lower($this->getSearchTerm());
56 | if (!strlen($searchTerm)) {
57 | return [];
58 | }
59 |
60 | $words = explode(' ', $searchTerm);
61 |
62 | $iterator = function ($type, $references) use (&$iterator, $words) {
63 | $typeMatches = [];
64 |
65 | foreach ($references as $key => $referenceInfo) {
66 | $title = (is_array($referenceInfo))
67 | ? $referenceInfo['title']
68 | : $referenceInfo;
69 |
70 | if ($this->textMatchesSearch($words, $title)) {
71 | $typeMatches[] = [
72 | 'id' => "$type::$key",
73 | 'text' => $title
74 | ];
75 | }
76 |
77 | if (isset($referenceInfo['items']) && count($referenceInfo['items'])) {
78 | $typeMatches = array_merge($typeMatches, $iterator($type, $referenceInfo['items']));
79 | }
80 | }
81 |
82 | return $typeMatches;
83 | };
84 |
85 | $types = [];
86 | $item = new MenuItem();
87 | foreach ($item->getTypeOptions() as $type => $typeTitle) {
88 | $typeInfo = MenuItem::getTypeInfo($type);
89 | if (empty($typeInfo['references'])) {
90 | continue;
91 | }
92 |
93 | $typeMatches = $iterator($type, $typeInfo['references']);
94 |
95 | if (!empty($typeMatches)) {
96 | $types[] = [
97 | 'text' => trans($typeTitle),
98 | 'children' => $typeMatches
99 | ];
100 | }
101 | }
102 |
103 | return $types;
104 | }
105 | }
106 |
--------------------------------------------------------------------------------
/formwidgets/MenuItems.php:
--------------------------------------------------------------------------------
1 | prepareVars();
49 |
50 | return $this->makePartial('menuitems');
51 | }
52 |
53 | /**
54 | * Prepares the list data
55 | */
56 | public function prepareVars()
57 | {
58 | $menuItem = new MenuItem;
59 |
60 | $this->vars['itemProperties'] = json_encode($menuItem->fillable);
61 | $this->vars['items'] = $this->model->items;
62 |
63 | $emptyItem = new MenuItem;
64 | $emptyItem->title = trans($this->newItemTitle);
65 | $emptyItem->type = 'url';
66 | $emptyItem->url = '/';
67 |
68 | $this->vars['emptyItem'] = $emptyItem;
69 |
70 | $widgetConfig = $this->makeConfig('~/plugins/rainlab/pages/classes/menuitem/fields.yaml');
71 | $widgetConfig->model = $menuItem;
72 | $widgetConfig->alias = $this->alias.'MenuItem';
73 |
74 | $this->vars['itemFormWidget'] = $this->makeWidget('Backend\Widgets\Form', $widgetConfig);
75 | }
76 |
77 | /**
78 | * {@inheritDoc}
79 | */
80 | protected function loadAssets()
81 | {
82 | $this->addJs('js/menu-items-editor.js', 'RainLab.Pages');
83 | }
84 |
85 | /**
86 | * {@inheritDoc}
87 | */
88 | public function getSaveValue($value)
89 | {
90 | return strlen($value) ? $value : null;
91 | }
92 |
93 | //
94 | // Methods for the internal use
95 | //
96 |
97 | /**
98 | * Returns the item reference description.
99 | * @param \RainLab\Pages\Classes\MenuItem $item Specifies the menu item
100 | * @return string
101 | */
102 | protected function getReferenceDescription($item)
103 | {
104 | if ($this->typeListCache === false) {
105 | $this->typeListCache = $item->getTypeOptions();
106 | }
107 |
108 | if (!isset($this->typeInfoCache[$item->type])) {
109 | $this->typeInfoCache[$item->type] = MenuItem::getTypeInfo($item->type);
110 | }
111 |
112 | if (isset($this->typeInfoCache[$item->type])) {
113 | $result = trans(
114 | is_array($this->typeListCache[$item->type])
115 | ? $this->typeListCache[$item->type][0]
116 | : $this->typeListCache[$item->type]
117 | );
118 |
119 | if ($item->type !== 'url') {
120 | if (isset($this->typeInfoCache[$item->type]['references'])) {
121 | $result .= ': '.$this->findReferenceName($item->reference, $this->typeInfoCache[$item->type]['references']);
122 | }
123 | }
124 | else {
125 | $result .= ': '.$item->url;
126 | }
127 |
128 | }
129 | else {
130 | $result = trans('rainlab.pages::lang.menuitem.unknown_type');
131 | }
132 |
133 | return $result;
134 | }
135 |
136 | protected function findReferenceName($search, $typeOptionList)
137 | {
138 | $iterator = function($optionList, $path) use ($search, &$iterator) {
139 | foreach ($optionList as $reference => $info) {
140 | if ($reference == $search) {
141 | $result = $this->getMenuItemTitle($info);
142 |
143 | return strlen($path) ? $path.' / ' .$result : $result;
144 | }
145 |
146 | if (is_array($info) && isset($info['items'])) {
147 | $result = $iterator($info['items'], $path.' / '.$this->getMenuItemTitle($info));
148 |
149 | if (strlen($result)) {
150 | return strlen($path) ? $path.' / '.$result : $result;
151 | }
152 | }
153 | }
154 | };
155 |
156 | $result = $iterator($typeOptionList, null);
157 | if (!strlen($result)) {
158 | $result = trans('rainlab.pages::lang.menuitem.unnamed');
159 | }
160 |
161 | $result = preg_replace('|^\s+\/|', '', $result);
162 |
163 | return $result;
164 | }
165 |
166 | protected function getMenuItemTitle($itemInfo)
167 | {
168 | if (is_array($itemInfo)) {
169 | if (!array_key_exists('title', $itemInfo) || !strlen($itemInfo['title'])) {
170 | return trans('rainlab.pages::lang.menuitem.unnamed');
171 | }
172 |
173 | return $itemInfo['title'];
174 | }
175 |
176 | return strlen($itemInfo) ? $itemInfo : trans('rainlab.pages::lang.menuitem.unnamed');
177 | }
178 |
179 | public function makeEditorTemplate()
180 | {
181 | $regEx = '#
30 |
31 | = $editorScripts ?>
32 |
33 |
36 |
37 |
--------------------------------------------------------------------------------
/formwidgets/menuitemsearch/partials/_body.htm:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/lang/cs/lang.php:
--------------------------------------------------------------------------------
1 | [
3 | 'name' => 'Stránky',
4 | 'description' => 'Funkce pro správu stránek a menu.',
5 | ],
6 | 'page' => [
7 | 'menu_label' => 'Stránky',
8 | 'template_title' => '%s Stránky',
9 | 'delete_confirmation' => 'Opravdu chcete odstranit vybrané stránky? Budou odstraněny i případné podstránky.',
10 | 'no_records' => 'Stránky nenalezeny',
11 | 'delete_confirm_single' => 'Opravu chcete odstranit tuto stránku? Budou odstraněny i případné podstránky.',
12 | 'new' => 'Nová stránka',
13 | 'add_subpage' => 'Přidat podstránku',
14 | 'invalid_url' => 'Neplatný formát URL. URL by mělo začínat lomítkem a může obsahovat čísla, písmena a znaky: _-/',
15 | 'url_not_unique' => 'Toto URL je používáno jinou stránkou.',
16 | 'layout' => 'Layouty',
17 | 'layouts_not_found' => 'Layouts nenalezeny',
18 | 'saved' => 'Stránka byla úspěšně uložena.',
19 | 'tab' => 'Stránky',
20 | 'manage_pages' => 'Spravovat stránky',
21 | 'manage_menus' => 'Spravovat menu',
22 | 'access_snippets' => 'Používat snippety',
23 | 'manage_content' => 'Spravovat obsah',
24 | ],
25 | 'menu' => [
26 | 'menu_label' => 'Menu',
27 | 'delete_confirmation' => 'Opravdu chcete odstranit vybraná menu?',
28 | 'no_records' => 'Položky nenalezeny',
29 | 'new' => 'Nové menu',
30 | 'new_name' => 'Nové menu',
31 | 'new_code' => 'nove-menu',
32 | 'delete_confirm_single' => 'Opravdu chcete odstranit toto menu?',
33 | 'saved' => 'Menu bylo úspěšně uloženo.',
34 | 'name' => 'Název',
35 | 'code' => 'Kód',
36 | 'items' => 'Položky menu',
37 | 'add_subitem' => 'Přidat položku',
38 | 'code_required' => 'Pole kód je povinné.',
39 | 'invalid_code' => 'Pole kód obsahuje neplatné znaky. Může obsahovat pouze číslice, písmena a znaky: _-',
40 | ],
41 | 'menuitem' => [
42 | 'title' => 'Titulek',
43 | 'editor_title' => 'Upravit položku menu',
44 | 'type' => 'Typ',
45 | 'allow_nested_items' => 'Povolit vnořené položky',
46 | 'allow_nested_items_comment' => 'Vnořené položky mohou být automaticky vygenerovány statickými stránkami nebo jinými typy stránek.',
47 | 'url' => 'URL',
48 | 'reference' => 'Odkaz',
49 | 'search_placeholder' => 'Prohledat odkazy...',
50 | 'title_required' => 'Titulek je povinný',
51 | 'unknown_type' => 'Neznámý typ položky',
52 | 'unnamed' => 'Nepojmenovaný typ položky',
53 | 'add_item' => 'Přidat položku',
54 | 'new_item' => 'Nová položka menu',
55 | 'replace' => 'Nahradit tuto položku jejími vygenerovanými vnořenými položkami',
56 | 'replace_comment' => 'Toto pole zaškrtněte, pokud si přejete vnořené položky posunout na stejnou úroveň jako má tato položka. Samotná položka zůstane skryta.',
57 | 'cms_page' => 'CMS stránka',
58 | 'cms_page_comment' => 'Vyberte stránku, která se otevře při kliknutí na tuto položku v menu.',
59 | 'reference_required' => 'Odkaz je povinný.',
60 | 'url_required' => 'URL je povinné',
61 | 'cms_page_required' => 'Prosím vyberte CMS stránku',
62 | 'display_tab' => 'Zobrazení',
63 | 'hidden' => 'Skrytá',
64 | 'hidden_comment' => 'Skrýt tuto položku menu pro celý front-end.',
65 | 'attributes_tab' => 'Vlastnosti',
66 | 'code' => 'Kód',
67 | 'code_comment' => 'Zadejte kód položky menu pokud k ní chcete přistupovat přes API.',
68 | 'css_class' => 'CSS třída',
69 | 'css_class_comment' => 'Vložte název CSS třídy k zajištění specifického vzhledu této položky menu.',
70 | 'external_link' => 'Externí odkaz',
71 | 'external_link_comment' => 'Otevřít odkaz této položky v novém okně.',
72 | 'static_page' => 'Statická stránka',
73 | 'all_static_pages' => 'Všechny statické stránky',
74 | ],
75 | 'content' => [
76 | 'menu_label' => 'Obsah',
77 | 'cant_save_to_dir' => 'Ukládat obsah do složky statických stránek není povoleno.',
78 | ],
79 | 'sidebar' => [
80 | 'add' => 'Přidat',
81 | ],
82 | 'object' => [
83 | 'invalid_type' => 'Neznámý typ objektu',
84 | 'not_found' => 'Požadovaný objekt nebyl nalezen.',
85 | ],
86 | 'editor' => [
87 | 'title' => 'Titulek',
88 | 'new_title' => 'Nový titulek stránky',
89 | 'content' => 'Obsah',
90 | 'url' => 'URL',
91 | 'filename' => 'Název souboru',
92 | 'layout' => 'Layout',
93 | 'description' => 'Popis',
94 | 'preview' => 'Náhled',
95 | 'enter_fullscreen' => 'Vstoupit do režimu celé obrazovky',
96 | 'exit_fullscreen' => 'Opustit režim celé obrazovky',
97 | 'hidden' => 'Skrytá',
98 | 'hidden_comment' => 'Skryté stránky jsou dostupné pouze přihlášeným administrátorům.',
99 | 'navigation_hidden' => 'Skrýt v menu',
100 | 'navigation_hidden_comment' => 'Zaškrtněte toto pole, pokud chcete stránku skrýt z automaticky vygenerovaných menu a drobečkové navigace.',
101 | ],
102 | 'snippet' => [
103 | 'menu_label' => 'Snippety',
104 | ],
105 | ];
106 |
--------------------------------------------------------------------------------
/lang/de/lang.php:
--------------------------------------------------------------------------------
1 | [
3 | 'name' => 'Seiten',
4 | 'description' => 'Pages & menus features.',
5 | ],
6 | 'page' => [
7 | 'menu_label' => 'Seiten',
8 | 'template_title' => '%s Seiten',
9 | 'delete_confirmation' => 'Möchten Sie die ausgewählten Seiten wirklich löschen? Dadurch werden auch mögliche Unterseiten gelöscht.',
10 | 'no_records' => 'Keine Seiten gefunden',
11 | 'delete_confirm_single' => 'Möchten Sie die ausgewählte Seite wirklich löschen? Dadurch werden auch mögliche Unterseiten gelöscht.',
12 | 'new' => 'Neue Seite',
13 | 'add_subpage' => 'Neue Unterseite',
14 | 'invalid_url' => 'Ungültiges URL Format. Die URL sollte mit einem Schrägstrich (Slash) starten und darf Ziffern, Buchstaben und folgenden Symbole enthalten: _-/.',
15 | 'url_not_unique' => 'Die URL wird schon von einer anderen Seite benutzt.',
16 | 'layout' => 'Layout',
17 | 'layouts_not_found' => 'Keine Layouts gefunden',
18 | 'saved' => 'Die Seite wurde erfolgreich gespeichert.',
19 | 'manage_pages' => 'Verwalte statische Seiten',
20 | 'manage_menus' => 'Verwalte statische Menüs',
21 | 'access_snippets' => 'Verwalte Snippets',
22 | 'manage_content' => 'Verwalte den Inhalt',
23 | ],
24 | 'menu' => [
25 | 'menu_label' => 'Menüs',
26 | 'delete_confirmation' => 'Möchten Sie die ausgewählten Menüs wirklich löschen?',
27 | 'no_records' => 'Keine Menüpunkte gefunden',
28 | 'new' => 'Neues Menü',
29 | 'new_name' => 'Menüname',
30 | 'new_code' => 'menuename',
31 | 'delete_confirm_single' => 'Möchten Sie das ausgewählte Menü wirklich löschen?',
32 | 'saved' => 'Das Menü wurde erfolgreich gespeichert.',
33 | 'name' => 'Name',
34 | 'code' => 'Code',
35 | 'items' => 'Menüpunkte',
36 | 'add_subitem' => 'Neuer Menüpunkt',
37 | 'code_required' => 'Ein Code ist erforderlich',
38 | 'invalid_code' => 'Ungültiges Code Format. Der Code darf Ziffern, Buchstaben und folgenden Symbole enthalten: _-/',
39 | ],
40 | 'menuitem' => [
41 | 'title' => 'Titel',
42 | 'editor_title' => 'Menüpunkt bearbeiten',
43 | 'type' => 'Typ',
44 | 'allow_nested_items' => 'Erlaube verschachtelte Menüpunkte',
45 | 'allow_nested_items_comment' => 'Verschachtelte Menüpunkte können dynamisch durch statische Seiten und einigen anderen Menüpunkt-Typen erzeugt werden.',
46 | 'url' => 'URL',
47 | 'reference' => 'Referenz',
48 | 'title_required' => 'Ein Titel ist erforderlich',
49 | 'unknown_type' => 'Unbekannter Menüpunkt-Typ',
50 | 'unnamed' => 'Unbekannter Menüpunkt',
51 | 'add_item' => 'Neuer Menüpunkt',
52 | 'new_item' => 'Neuer Menüpunkt',
53 | 'replace' => 'Ersetze diesen Menüpunkt mit seinen Unterpunkten',
54 | 'replace_comment' => 'Verwenden Sie diese Option, um erzeugte Menüpunkte auf die gleiche Ebene von diesem zu bringen. Dieser Menüpunkt selbst wird ausgeblendet.',
55 | 'cms_page' => 'CMS Seite',
56 | 'cms_page_comment' => 'Wählen Sie eine Seite die geöffnet werden soll, wenn dieser Menüpunkt angeklickt wird.',
57 | 'reference_required' => 'Eine Menüpunkt-Referenz ist erforderlich',
58 | 'url_required' => 'Eine URL ist erforderlich',
59 | 'cms_page_required' => 'Bitten wählen Sie eine CMS Seite',
60 | 'code' => 'Code',
61 | 'code_comment' => 'Geben Sie einen Menüpunkt-Code ein, wenn Sie diesen mit der API ansprechen möchten.',
62 | ],
63 | 'content' => [
64 | 'menu_label' => 'Inhalte',
65 | 'cant_save_to_dir' => 'Das Speichern von Inhaltsdateien in den Statische-Seiten Ordner ist nicht erlaubt.',
66 | ],
67 | 'sidebar' => [
68 | 'add' => 'Neu',
69 | ],
70 | 'object' => [
71 | 'invalid_type' => 'Unbekannter Objekttyp',
72 | 'not_found' => 'Das angeforderte Objekt wurde nicht gefunden.',
73 | ],
74 | 'editor' => [
75 | 'title' => 'Titel',
76 | 'new_title' => 'Titel für die neue Seite',
77 | 'content' => 'Inhalt',
78 | 'url' => 'URL',
79 | 'filename' => 'Dateiname',
80 | 'layout' => 'Layout',
81 | 'description' => 'Beschreibung',
82 | 'preview' => 'Vorschau',
83 | 'enter_fullscreen' => 'Vollbildmodus einschalten',
84 | 'exit_fullscreen' => 'Vollbildmodus verlassen',
85 | 'hidden' => 'Verstecken',
86 | 'hidden_comment' => 'Versteckte Seiten sind nur für eingeloggte administrations Benutzer zugänglich.',
87 | 'navigation_hidden' => 'In der Navigation verstecken',
88 | 'navigation_hidden_comment' => 'Setzen Sie diese Option, um diese Seite von automatisch generierten Menüs und Breadcrumbs zu verstecken.',
89 | ],
90 | 'snippet' => [
91 | 'menu_label' => 'Snippets',
92 | ],
93 | ];
94 |
--------------------------------------------------------------------------------
/lang/el/lang.php:
--------------------------------------------------------------------------------
1 | [
3 | 'name' => 'Σελίδες',
4 | 'description' => 'Σελίδες και Μενού.',
5 | ],
6 | 'page' => [
7 | 'menu_label' => 'Σελίδες',
8 | 'template_title' => '%s Σελίδες',
9 | 'delete_confirmation' => 'Θέλετε πραγματικά να διαγράψετε τις επιλεγμένες σελίδες; Αυτό θα διαγράψει και τις υποσελίδες, εάν υπάρχουν.',
10 | 'no_records' => 'Δεν βρέθηκαν σελίδες',
11 | 'delete_confirm_single' => 'Θέλετε πραγματικά να διαγράψετε αυτή την σελίδα; Αυτό θα διαγράψει και τις υποσελίδες, εάν υπάρχουν.',
12 | 'new' => 'Νέα σελίδα',
13 | 'add_subpage' => 'Προσθήκη υποσελίδας',
14 | 'invalid_url' => 'Μή έγκυρη μορφή URL. Το URL πρέπει να αρχίζει με το σύμβολο μπροστινής καθέτου και μπορεί να περιέχει αριθμητικά ψηφία, Λατινικούς χαρακτήρες και τα ακόλουθα σύμβολα: _-/.',
15 | 'url_not_unique' => 'Αυτό το URL χρησιμοποιήται ήδη από άλλη σελίδα.',
16 | 'layout' => 'Σχέδιο',
17 | 'layouts_not_found' => 'Δεν βρέθηκαν σχέδια',
18 | 'saved' => 'Η σελίδα αποθηκεύτηκε επιτυχώς.',
19 | 'tab' => 'Σελίδες',
20 | 'manage_pages' => 'Διαχείριση στατικών σελίδων',
21 | 'manage_menus' => 'Διαχείριση στατικών μενού',
22 | 'access_snippets' => 'Πρόσβαση στα αποσπάσματα',
23 | 'manage_content' => 'Διαχείριση στατικού περιεχομένου',
24 | ],
25 | 'menu' => [
26 | 'menu_label' => 'Μενού',
27 | 'delete_confirmation' => 'Θέλετε πραγματικά να διαγράψετε τα επιλεγμένα μενού;',
28 | 'no_records' => 'Δεν βρέθηκανε μενού',
29 | 'new' => 'Νέο μενού',
30 | 'new_name' => 'Νέο μενού',
31 | 'new_code' => 'new-menu',
32 | 'delete_confirm_single' => 'Θέλετε πραγματικά να διαγράψετε αυτό το μενού;',
33 | 'saved' => 'Αυτό το μενού αποθηκεύτηκε επιτυχώς.',
34 | 'name' => 'Όνομα',
35 | 'code' => 'Κωδικός',
36 | 'items' => 'Στοιχεία μενού',
37 | 'add_subitem' => 'Προσθήκη υποστοιχείου',
38 | 'code_required' => 'Ο Κωδικός είναι απαραίτητος',
39 | 'invalid_code' => 'Μή έγκυρη μορφή Κωδικού. Ο Κωδικός μπορεί να περιέχει αριθμητικά ψηφία, Λατινικούς χαρακτήρες και τα ακόλουθα σύμβολα: _-',
40 | ],
41 | 'menuitem' => [
42 | 'title' => 'Τίτλος',
43 | 'editor_title' => 'Επεξεργασία στοιχείου μενού',
44 | 'type' => 'Τύπος',
45 | 'allow_nested_items' => 'Να επιτρέπονται ένθετα στοιχεία',
46 | 'allow_nested_items_comment' => 'Τα ένθετα στοιχεία μπορούν να δημιουργηθούν δυναμικά από στατικές σελίδες και κάποιους άλλους τύπους στοιχείων',
47 | 'url' => 'URL',
48 | 'reference' => 'Αναφορά',
49 | 'search_placeholder' => 'Αναζήτηση αναφορών...',
50 | 'title_required' => 'Ο Τίτλος είναι απαραίτητος',
51 | 'unknown_type' => 'Άγνωστος τύπος στοιχείου μενού',
52 | 'unnamed' => 'Στοιχείο μενού χωρίς όνομα',
53 | 'add_item' => 'Προσθήκη Στοιχείου',
54 | 'new_item' => 'Νέο στοιχείο μενού',
55 | 'replace' => 'Αντικατάσταση του στοιχείου με τα παραγμένα υποστοιχεία',
56 | 'replace_comment' => 'Χρησιμοποιήστε αυτό το πλαίσιο για να ωθήσετε τα παραγμένα στοιχεία μενού στο ίδιο επίπεδο με αυτό το στοιχείο. Το ίδιο το στοιχείο θα γίνει κρυφό.',
57 | 'cms_page' => 'Σελίδα CMS',
58 | 'cms_page_comment' => 'Επιλέξτε σελίδα που θα ανοίγει όταν αυτό το μενού πατηθεί.',
59 | 'reference_required' => 'Η αναφορά του στοιχείου μενού είναι απαραίτητη.',
60 | 'url_required' => 'Το URL είναι απαραίτητο',
61 | 'cms_page_required' => 'Παρακαλώ διαλέξτε μία σελίδα CMS',
62 | 'code' => 'Κωδικός',
63 | 'code_comment' => 'Εισάγετε το κωδικό του μενού εάν θέλετε να έχετε πρόσβαση μέσω του API.',
64 | 'static_page' => 'Στατική σελίδα',
65 | 'all_static_pages' => 'Όλες οι Στατικές Σελίδες',
66 | ],
67 | 'content' => [
68 | 'menu_label' => 'Περιεχόμενο',
69 | 'cant_save_to_dir' => 'Η αποθήκευση των αρχείων περιεχομένου στο φάκελο στατικών σελίδων δεν επιτρέπεται.',
70 | ],
71 | 'sidebar' => [
72 | 'add' => 'Προσθήκη',
73 | ],
74 | 'object' => [
75 | 'invalid_type' => 'Άγνωστος τύπος αντικειμένου',
76 | 'not_found' => 'Το ζητούμενο αντικείμενο δεν βρέθηκε.',
77 | ],
78 | 'editor' => [
79 | 'title' => 'Τίτλος',
80 | 'new_title' => 'Νέος τίτλος σελίδας',
81 | 'content' => 'Περιεχόμενο',
82 | 'url' => 'URL',
83 | 'filename' => 'Όνομα αρχείου',
84 | 'layout' => 'Σχέδιο',
85 | 'description' => 'Περιγραφή',
86 | 'preview' => 'Προεπισκόπηση',
87 | 'enter_fullscreen' => 'Πλήρης οθόνη',
88 | 'exit_fullscreen' => 'Έξοδος πλήρους οθόνης',
89 | 'hidden' => 'Κρυφό',
90 | 'hidden_comment' => 'Κρυφές σελίδες είναι προσβάσιμες μόνο στους συνδεδεμένους χρήστες back-end.',
91 | 'navigation_hidden' => 'Απόκρυψη στην πλοήγηση',
92 | 'navigation_hidden_comment' => 'Επιλέξτε αυτό το πλαίσιο για να κρύψετε αυτή την σελίδα από αυτοματοποιημένα μενού και breadcrumbs.',
93 | ],
94 | 'snippet' => [
95 | 'menu_label' => 'Αποσπάσματα',
96 | ],
97 | 'component' => [
98 | 'static_page_name' => 'Στατική σελίδα',
99 | 'static_page_description' => 'Παράγει μία στατική σελίδα ενσωματωμένη σε ένα σχέδιο CMS.',
100 | 'static_page_use_content_name' => 'Χρησιμοποιήστε το πεδίο περιεχομένου σελίδας',
101 | 'static_page_use_content_description' => 'Εάν δεν είναι επιλεγμένο, η περιοχή περιεχομένου δεν θα εμφανίζεται όταν επεξεργάζεται η στατική σελίδα. Το περιεχόμενο της σελίδας θα ορίζεται αποκλειστικά μέσω αντικαταστατών και μεταβλητών.',
102 | 'static_page_default_name' => 'Προεπιλεγμένο σχέδιο',
103 | 'static_page_default_description' => 'Ορίζει αυτό το σχέδιο σαν το προεπιλεγμένο για καινούργιες σελίδες',
104 | 'static_page_child_layout_name' => 'Σχέδιο υποσελίδων',
105 | 'static_page_child_layout_description' => 'Το προεπιλεγμένο σχέδιο για καινούργιες υποσελίδες',
106 | 'static_menu_name' => 'Στατικό μενού',
107 | 'static_menu_description' => 'Παράγει ένα μενού σε ένα σχέδιο CMS.',
108 | 'static_menu_code_name' => 'Μενού',
109 | 'static_menu_code_description' => 'Ορίστε ένα κωδικό του μενού που το Δομικό Στοιχείο θα πρέπει να εξάγει.',
110 | 'static_breadcrumbs_name' => 'Στατικά breadcrumbs',
111 | 'static_breadcrumbs_description' => 'Παράγει breadcrumbs για μία στατική σελίδα.',
112 | ],
113 | ];
114 |
--------------------------------------------------------------------------------
/lang/es/lang.php:
--------------------------------------------------------------------------------
1 | [
3 | 'name' => 'Páginas',
4 | 'description' => 'Páginas & menus',
5 | ],
6 | 'page' => [
7 | 'menu_label' => 'Páginas',
8 | 'template_title' => '%s Páginas',
9 | 'delete_confirmation' => 'Estas seguro de querer borrar las páginas seleccionadas? Esto también borrará las sub-páginas que existan.',
10 | 'no_records' => 'No se ha encontrado ninguna página',
11 | 'delete_confirm_single' => 'Estas seguro de querer borrar esta página? Esto también borrará las sub-páginas que existan.',
12 | 'new' => 'Nueva página',
13 | 'add_subpage' => 'Añadir sub-página',
14 | 'invalid_url' => 'Formato de URL no válido. La URL debería comenzar por una barra (\'/\'). Puede contener letras, números, y los siguientes símbolos _ - / ',
15 | 'url_not_unique' => 'Esta URL ya está siendo utilizada por otra página.',
16 | 'layout' => 'Plantilla',
17 | 'layouts_not_found' => 'No se han encontrado plantillas',
18 | 'saved' => 'La página se ha guardado correctamente.',
19 | 'tab' => 'Páginas',
20 | 'manage_pages' => 'Administrar páginas',
21 | 'manage_menus' => 'Administrar menús',
22 | 'access_snippets' => 'Acceder a fragmentos',
23 | 'manage_content' => 'Administrar contenidos',
24 | ],
25 | 'menu' => [
26 | 'menu_label' => 'Menus',
27 | 'delete_confirmation' => 'Estas seguro de querer borrar los menus seleccionados?',
28 | 'no_records' => 'No se han encontrado elementos.',
29 | 'new' => 'Nuevo menu',
30 | 'new_name' => 'Nuevo menu',
31 | 'new_code' => 'nuevo-menu',
32 | 'delete_confirm_single' => 'Estas seguro de querer borrar este menu?',
33 | 'saved' => 'El menú se ha guardado correctamente.',
34 | 'name' => 'Nombre',
35 | 'code' => 'Código',
36 | 'items' => 'Elementos del menu',
37 | 'add_subitem' => 'Añadir sub-elemento',
38 | 'code_required' => 'El código es obligatorio',
39 | 'invalid_code' => 'El formato del código no es válido. Puede contener letras, números y los siguientes símbolos: _ - ',
40 | ],
41 | 'menuitem' => [
42 | 'title' => 'Título',
43 | 'editor_title' => 'Editar elemento del menu',
44 | 'type' => 'Tipo',
45 | 'allow_nested_items' => 'Permitir elementos anidados',
46 | 'allow_nested_items_comment' => 'Los elementos anidados se pueden generar automáticamente mediante las páginas y otros tipos de elementos.',
47 | 'url' => 'URL',
48 | 'reference' => 'Referencia',
49 | 'title_required' => 'El título es obligatorio',
50 | 'unknown_type' => 'Este tipo de elemento del menú es desconocido.',
51 | 'unnamed' => 'Elemento del menú sin nombre',
52 | 'add_item' => 'Añadir elemento',
53 | 'new_item' => 'Nuevo elemento',
54 | 'replace' => 'Sustituye este elemento por los sub-elementos que contenga.',
55 | 'replace_comment' => 'Marca esta casilla sustituir este elemento por los sub-elementos que contenga. El elemento proncipal quedará oculto.',
56 | 'cms_page' => 'Página del CMS',
57 | 'cms_page_comment' => 'Selecciona una página a la que enlazar cuando se haga click en este elemento del menu.',
58 | 'reference_required' => 'La referencia al elemento del menú es obligatoria.',
59 | 'url_required' => 'La URL es obligatoria',
60 | 'cms_page_required' => 'Selecciona una página del CMS',
61 | 'code' => 'Código',
62 | 'code_comment' => 'Introduce el código del elemento para acceder mediante la API.',
63 | ],
64 | 'content' => [
65 | 'menu_label' => 'Contenido',
66 | 'cant_save_to_dir' => 'No está permitido guardar archivos de contenido en el directorio de las páginas.',
67 | ],
68 | 'sidebar' => [
69 | 'add' => 'Añadir',
70 | ],
71 | 'object' => [
72 | 'invalid_type' => 'Tipo de objeto desconocido',
73 | 'not_found' => 'No se ha encontrado el objeto solicitado.',
74 | ],
75 | 'editor' => [
76 | 'title' => 'Título',
77 | 'new_title' => 'Título de la nueva página',
78 | 'content' => 'Contenido',
79 | 'url' => 'URL',
80 | 'filename' => 'Nombre de archivo',
81 | 'layout' => 'Plantilla',
82 | 'description' => 'Descripción',
83 | 'preview' => 'Vista previa',
84 | 'enter_fullscreen' => 'Entrar en modo de pantalla completa',
85 | 'exit_fullscreen' => 'Salir del modo de pantalla completa',
86 | 'hidden' => 'Oculto',
87 | 'hidden_comment' => 'Las páginas ocultas solo son visibles para los administradores que hayan iniciado sesión.',
88 | 'navigation_hidden' => 'No mostrar en el menu',
89 | 'navigation_hidden_comment' => 'Marca esta casilla para ocultar esta página en los menus generados automáticamente.',
90 | ],
91 | 'snippet' => [
92 | 'menu_label' => 'Fragmentos',
93 | ],
94 | ];
95 |
--------------------------------------------------------------------------------
/lang/fa/lang.php:
--------------------------------------------------------------------------------
1 | [
3 | 'name' => 'صفحات',
4 | 'description' => 'مدیریت صفحات و فهرست ها',
5 | ],
6 | 'page' => [
7 | 'menu_label' => 'صفحات',
8 | 'template_title' => 'صفحات %s',
9 | 'delete_confirmation' => 'آیا از حذف صفحات انتخاب شده اطمینان دارید؟ اگر صفحات دارای زیر صفحه باشند آنها نیز حذف خواهند شد.',
10 | 'no_records' => 'صفحه ای یافت نشد',
11 | 'delete_confirm_single' => 'آیا از حذف این صفحه اطمینان دارید؟ اگر این صفحه دارای زیر مجموعه باشد آنها نیز حذف خواهند شد.',
12 | 'new' => 'صفحه ی جدید',
13 | 'add_subpage' => 'افزودن زیر مجموعه',
14 | 'invalid_url' => 'قالب آدرس نا معتبر است. آدرس باید با اسلش شروع شود و میتواند شامل حروف لاتین، حروف فارسی، اعداد و این کاراکتر ها باشد: _-/.',
15 | 'url_not_unique' => 'این آدرس توسط صفحه ی دیگری استفاده شده است.',
16 | 'layout' => 'طرح بندی',
17 | 'layouts_not_found' => 'طرح بندی برای صفحات استاتیک یافت نشد.',
18 | 'saved' => 'صفحه با موفقیت ذخیره شد.',
19 | 'tab' => 'صفحات',
20 | 'manage_pages' => 'مدیریت صفحات استاتیک',
21 | 'manage_menus' => 'مدیریت فهرست های استاتیک',
22 | 'access_snippets' => 'دسترسی به تکه کد ها',
23 | 'manage_content' => 'مدیریت محتوی استاتیک',
24 | ],
25 | 'menu' => [
26 | 'menu_label' => 'فهرست ها',
27 | 'delete_confirmation' => 'آیا از حذف فهرست انتخاب شده اطمینان دارید؟',
28 | 'no_records' => 'موردی یافت نشد',
29 | 'new' => 'فهرست جدید',
30 | 'new_name' => 'فهرست جدید',
31 | 'new_code' => 'new-menu',
32 | 'delete_confirm_single' => 'آیا از حذف این فهرست اطمینان دارید؟',
33 | 'saved' => 'فهرست با موفقیت ذخیره شد.',
34 | 'name' => 'نام',
35 | 'code' => 'کد',
36 | 'items' => 'موارد فهرست',
37 | 'add_subitem' => 'افزودن زیر فهرست',
38 | 'code_required' => 'وارد کردن کد اجباریست',
39 | 'invalid_code' => 'قالب کد نا معتبر است. کد میتواند شامل اعداد، حروف لاتین و این کاراکتر ها باشد: _-',
40 | ],
41 | 'menuitem' => [
42 | 'title' => 'عنوان',
43 | 'editor_title' => 'ویرایش فهرست',
44 | 'type' => 'نوع',
45 | 'allow_nested_items' => 'استفاده از موارد تو در تو',
46 | 'allow_nested_items_comment' => 'موارد تو در تو به صورت خودکار توسط صفحات استاتیک و برخی از دیگر موارد ایجاد می شوند',
47 | 'url' => 'آدرس',
48 | 'reference' => 'مرجع',
49 | 'search_placeholder' => 'جستجوی همه موارد...',
50 | 'title_required' => 'وارد کردن عنوان اجباریست',
51 | 'unknown_type' => 'نوع نامشخص فهرست',
52 | 'unnamed' => 'فهرست بدون نام',
53 | 'add_item' => 'افزودن فهرست',
54 | 'new_item' => 'مورد جدید برای فهرست',
55 | 'replace' => 'جایگرینی این مورد با زیر مورد های ایجاد شده',
56 | 'replace_comment' => 'اگر میخواهید زیر فهرست های ایجاد شده هم سطح با این مورد قرار بگیرند این گزینه را فعال نمایید. خود فهرست بصورت خودکار مخفی خواهد شد.',
57 | 'cms_page' => 'صفحه ی مدیریت محتوی',
58 | 'cms_page_comment' => 'صفحه ای را که میخواهید به هنگام انتخاب این فهرست باز شود را انتخاب نمایید.',
59 | 'reference_required' => 'وارد کردن مرجع برای فهرست الزامیست.',
60 | 'url_required' => 'وارد کردن آدرس الزامیست',
61 | 'cms_page_required' => 'لطفا یک صفحه را انتخاب کنید',
62 | 'code' => 'کد',
63 | 'code_comment' => 'اگر میخواهید از طریق کد ها به این مورد از فهرست دسترسی پیدا کنید کد آن را وارد نمایید.',
64 | 'static_page' => 'صفحات استاتیک',
65 | 'all_static_pages' => 'تمام صفحات استاتیک',
66 | ],
67 | 'content' => [
68 | 'menu_label' => 'محتوی',
69 | 'cant_save_to_dir' => 'مجوز ذخیره ی داده ها در پوشه ی صفحات استاتسک وجود ندارد.',
70 | ],
71 | 'sidebar' => [
72 | 'add' => 'افزودن',
73 | ],
74 | 'object' => [
75 | 'invalid_type' => 'نوع شیء نا مشخص است',
76 | 'not_found' => 'شیء درخواستی یافت نشد.',
77 | ],
78 | 'editor' => [
79 | 'title' => 'عنوان',
80 | 'new_title' => 'عنوان صفحه ی جدید',
81 | 'content' => 'محتوی',
82 | 'url' => 'آدرس',
83 | 'filename' => 'نام فایل',
84 | 'layout' => 'طرح بندی',
85 | 'description' => 'توضیحات',
86 | 'preview' => 'پیش نمایش',
87 | 'enter_fullscreen' => 'حالت تمام صفحه',
88 | 'exit_fullscreen' => 'خروج از حالت تمام صفحه',
89 | 'hidden' => 'مخفی',
90 | 'hidden_comment' => 'صفحات مخفی توسط کاربران وارد شده به سایت قابل دسترس می باشند.',
91 | 'navigation_hidden' => 'مخفی کردن در فهرست',
92 | 'navigation_hidden_comment' => 'اگر میخواهید صفحه مورد نظر در فهرست هایی که خودکار ایجاد می شوند و یا نشان گرهای صفحه دیده نشوند این گزینه را انتخاب نمایید.',
93 | ],
94 | 'snippet' => [
95 | 'menu_label' => 'تکه کدها',
96 | ],
97 | 'component' => [
98 | 'static_page_name' => 'صفحات استاتیک',
99 | 'static_page_description' => 'نمایش یک صفحه استاتیک در طرح بندی.',
100 | 'static_page_use_content_name' => 'استفاده از گرینه ها در محتوی.',
101 | 'static_page_use_content_description' => 'اگر غیر فعال باشد، فیلد ها به هنگام ویرایش صفحات استاتیک در بخش محتوی نمایش داده نخواهند شد. محتوی صفحه با استفاده از متغییر های تعریف شده قابل کنتل می باشند.',
102 | 'static_page_default_name' => 'طرح بندی پیش فرض',
103 | 'static_page_default_description' => 'این طرح بندی به عنوان طرح بندی پیشفرض به هنگام ایجاد صفحه جدید در نظر گرفته شود؟',
104 | 'static_page_child_layout_name' => 'طرح بندی صفحات زیرمجموعه',
105 | 'static_page_child_layout_description' => 'این طرح بندی به عنوان طرح بندی تمام صفحات زیر مجموعه در نظر گرفنه شود؟',
106 | 'static_menu_name' => 'فهرست استاتیک',
107 | 'static_menu_description' => 'نمایش فهرست استاتیک در طرح بندی.',
108 | 'static_menu_code_name' => 'فهرست',
109 | 'static_menu_code_description' => 'کد فهرستی را که میخواهید به نمایش درآید انتخاب نمایید.',
110 | 'static_breadcrumbs_name' => 'نشان گرها',
111 | 'static_breadcrumbs_description' => 'نمایش نشان گرهای صفحه.',
112 | ],
113 | ];
114 |
--------------------------------------------------------------------------------
/lang/hu/lang.php:
--------------------------------------------------------------------------------
1 | [
3 | 'name' => 'Oldalak',
4 | 'description' => 'Oldalak, menük, tartalmak és kódrészletek menedzselése.',
5 | ],
6 | 'page' => [
7 | 'menu_label' => 'Oldalak',
8 | 'template_title' => '%s Oldalak',
9 | 'delete_confirmation' => 'Valóban törölni akarja a kijelölt oldalakat és azok aloldalait?',
10 | 'no_records' => 'Nincs létrehozva oldal',
11 | 'delete_confirm_single' => 'Valóban törölni akarja ezt az oldalt és aloldalait?',
12 | 'new' => 'Új oldal',
13 | 'add_subpage' => 'Aloldal hozzáadása',
14 | 'invalid_url' => 'Érvénytelen a webcím formátuma. Perjellel kell kezdődnie, és számokat, latin betűket, valamint a következő szimbólumokat tartalmazhatja: _-/.',
15 | 'url_not_unique' => 'Egy másik oldal már használja ezt a webcímet.',
16 | 'layout' => 'Elrendezés',
17 | 'layouts_not_found' => 'Nincs létrehozva elrendezés.',
18 | 'saved' => 'Az oldal mentése sikerült.',
19 | 'tab' => 'Oldalak',
20 | 'manage_pages' => 'Oldalak kezelése',
21 | 'manage_menus' => 'Menük kezelése',
22 | 'access_snippets' => 'Kódrészletek kezelése',
23 | 'manage_content' => 'Tartalom kezelése',
24 | ],
25 | 'menu' => [
26 | 'menu_label' => 'Menük',
27 | 'delete_confirmation' => 'Valóban törölni akarja a kijelölt menüket?',
28 | 'no_records' => 'Nincs létrehozva menü',
29 | 'new' => 'Új menü',
30 | 'new_name' => 'Új menü',
31 | 'new_code' => 'uj-menu',
32 | 'delete_confirm_single' => 'Valóban törölni akarja ezt a menüt?',
33 | 'saved' => 'A menü mentése sikerült.',
34 | 'name' => 'Név',
35 | 'code' => 'Kód',
36 | 'items' => 'Menüpont',
37 | 'add_subitem' => 'Almenü hozzáadása',
38 | 'code_required' => 'A Kód kötelező',
39 | 'invalid_code' => 'Érvénytelen a kód formátuma. Csak számokat, latin betűket és a következő szimbólumokat tartalmazhatja: _-',
40 | ],
41 | 'menuitem' => [
42 | 'title' => 'Cím',
43 | 'editor_title' => 'Menüpont szerkesztése',
44 | 'type' => 'Típus',
45 | 'allow_nested_items' => 'Beágyazott menüpontok engedélyezése',
46 | 'allow_nested_items_comment' => 'A beágyazott menüpontokat az oldal és néhány más menüpont típus dinamikusan generálhatja',
47 | 'url' => 'Webcím',
48 | 'reference' => 'Hivatkozás',
49 | 'search_placeholder' => 'Keresés...',
50 | 'title_required' => 'A cím megadása kötelező',
51 | 'unknown_type' => 'Ismeretlen menüponttípus',
52 | 'unnamed' => 'Névtelen menüpont',
53 | 'add_item' => 'Menüpont hozzáadása',
54 | 'new_item' => 'Új menüpont',
55 | 'replace' => 'A menüpont kicserélése a generált gyermekeire',
56 | 'replace_comment' => 'Ennek a jelölőnégyzetnek a használatával viheti a generált menüpontokat az ezen menüpont által azonos szintre. Maga ez a menüpont rejtett marad.',
57 | 'cms_page' => 'Oldal',
58 | 'cms_page_comment' => 'Válassza ki a menüre kattintáskor megnyitni kívánt oldalt.',
59 | 'reference_required' => 'A menüpont hivatkozás kitöltése kötelező.',
60 | 'url_required' => 'A webcím megadása kötelező',
61 | 'cms_page_required' => 'Válasszon egy oldalt',
62 | 'display_tab' => 'Megjelenés',
63 | 'hidden' => 'Rejtett',
64 | 'hidden_comment' => 'Nem jelenik meg a felhasználói felületen.',
65 | 'attributes_tab' => 'Tulajdonságok',
66 | 'code' => 'Kód',
67 | 'code_comment' => 'Az API eléréshez szükséges egyedi azonosító.',
68 | 'css_class' => 'CSS osztály',
69 | 'css_class_comment' => 'Egyedi megjelenés esetén szükséges megadni.',
70 | 'external_link' => 'Külső hivatkozás',
71 | 'external_link_comment' => 'A link új ablakban fog megjelenni.',
72 | 'static_page' => 'Oldalak',
73 | 'all_static_pages' => 'Összes oldal',
74 | ],
75 | 'content' => [
76 | 'menu_label' => 'Tartalom',
77 | 'saved' => 'A tartalom mentése sikerült.',
78 | 'cant_save_to_dir' => 'A fájlok mentése a "static-pages" könyvtárba nem engedélyezett.',
79 | ],
80 | 'sidebar' => [
81 | 'add' => 'Hozzáadás',
82 | ],
83 | 'object' => [
84 | 'invalid_type' => 'Ismeretlen objektumtípus',
85 | 'unauthorized_type' => 'Nem jogosult a következő objektum(ok) kezelésére: :type',
86 | 'not_found' => 'A kért objektum nem található.',
87 | ],
88 | 'editor' => [
89 | 'title' => 'Cím',
90 | 'new_title' => 'Új oldal címe',
91 | 'content' => 'Tartalom',
92 | 'url' => 'Webcím',
93 | 'filename' => 'Fájlnév',
94 | 'layout' => 'Elrendezés',
95 | 'description' => 'Leírás',
96 | 'preview' => 'Előnézet',
97 | 'enter_fullscreen' => 'Váltás teljes képernyős módra',
98 | 'exit_fullscreen' => 'Kilépés a teljes képernyős módból',
99 | 'hidden' => 'Rejtett',
100 | 'hidden_comment' => 'A rejtett oldalakhoz csak a bejelentkezett kiszolgáló oldali felhasználók férhetnek hozzá.',
101 | 'navigation_hidden' => 'Elrejtés a navigációban',
102 | 'navigation_hidden_comment' => 'Jelölje be ezt a jelölőnégyzetet ennek a oldalnak az automatikusan generált menükből és útkövetésekből való elrejtéséhez.',
103 | ],
104 | 'snippet' => [
105 | 'menu_label' => 'Kódrészletek',
106 | ],
107 | 'component' => [
108 | 'static_page_name' => 'Statikus oldal',
109 | 'static_page_description' => 'Oldalak megjelenítése.',
110 | 'static_page_use_content_name' => 'Tartalom mező használata',
111 | 'static_page_use_content_description' => 'Ha nem engedélyezi ezt, akkor a tartalmi rész nem fog megjelenni az oldal szerkesztésénél. Az oldal tartalmát kizárólag a változók fogják meghatározni.',
112 | 'static_page_default_name' => 'Alapértelmezett elrendezés',
113 | 'static_page_default_description' => 'Minden új oldal ezt az elrendezést fogja hasznáni alapértelmezettként.',
114 | 'static_page_child_layout_name' => 'Aloldal elrendezés',
115 | 'static_page_child_layout_description' => 'Minden új aloldal ezt az elrendezést fogja használni alapértelmezettként.',
116 | 'static_menu_name' => 'Statikus menü',
117 | 'static_menu_description' => 'Menük megjelenítése.',
118 | 'static_menu_code_name' => 'Menü',
119 | 'static_menu_code_description' => 'Speciális kód a megjelenő menünek.',
120 | 'static_breadcrumbs_name' => 'Statikus kenyérmorzsa',
121 | 'static_breadcrumbs_description' => 'Kenyérmorzsa megjelenítése.',
122 | 'child_pages_name' => 'Aloldalak',
123 | 'child_pages_description' => 'Megjeleníti az aktuális oldal aloldalainak listáját.',
124 | ],
125 | ];
126 |
--------------------------------------------------------------------------------
/lang/it/lang.php:
--------------------------------------------------------------------------------
1 | [
3 | 'name' => 'Pages',
4 | 'description' => 'Funzionalità di pagine & menu.',
5 | ],
6 | 'page' => [
7 | 'menu_label' => 'Pagine',
8 | 'template_title' => '%s Pagine',
9 | 'delete_confirmation' => 'Vuoi davvero eliminare le pagine selezionate? L\'operazione cancellerà anche le sottopagine, se presenti.',
10 | 'no_records' => 'Nessuna pagina trovata',
11 | 'delete_confirm_single' => 'Vuoi davvero eliminare questa pagina? L\'operazione cancellerà anche le sottopagine, se presenti.',
12 | 'new' => 'Nuova pagina',
13 | 'add_subpage' => 'Aggiungi sottopagina',
14 | 'invalid_url' => 'Formato dell\'URL non valido. L\'URL deve iniziare con una barra e può contenere numeri, lettere latine e i seguenti simboli: _-/.',
15 | 'url_not_unique' => 'L\'URL è già utilizzato da un\'altra pagina.',
16 | 'layout' => 'Layout',
17 | 'layouts_not_found' => 'Layouts non trovato',
18 | 'saved' => 'Pagina salvata con successo.',
19 | 'tab' => 'Pagine',
20 | 'manage_pages' => 'Gestisci pagine',
21 | 'manage_menus' => 'Gestisci menu',
22 | 'access_snippets' => 'Accedi agli snippet',
23 | 'manage_content' => 'Gestisci contenuti',
24 | ],
25 | 'menu' => [
26 | 'menu_label' => 'Menu',
27 | 'delete_confirmation' => 'Vuoi davvero eliminare i menu selezionati?',
28 | 'no_records' => 'Nessun menu trovato',
29 | 'new' => 'Nuovo menu',
30 | 'new_name' => 'Nuovo menu',
31 | 'new_code' => 'nuovo-menu',
32 | 'delete_confirm_single' => 'Vuoi davvero eliminare questo menu?',
33 | 'saved' => 'Menu salvato con successo.',
34 | 'name' => 'Nome',
35 | 'code' => 'Codice',
36 | 'items' => 'Voci di menu',
37 | 'add_subitem' => 'Aggiungi sottomenu',
38 | 'code_required' => 'Il Codice è obbligatorio',
39 | 'invalid_code' => 'Formato del Codice non valido. Il Codice può contenere numeri, lettere latine e i seguenti simboli: _-',
40 | ],
41 | 'menuitem' => [
42 | 'title' => 'Titolo',
43 | 'editor_title' => 'Modifica voce di menu',
44 | 'type' => 'Tipo',
45 | 'allow_nested_items' => 'Consenti elementi nidificati',
46 | 'allow_nested_items_comment' => 'Gli elementi nidificati possono essere generati dinamicamente dalle pagine e altre tipologie di elementi',
47 | 'url' => 'URL',
48 | 'reference' => 'Riferimento',
49 | 'title_required' => 'Il Titolo è obbligatorio',
50 | 'unknown_type' => 'Tipologia di menu sconosciuta',
51 | 'unnamed' => 'Voce di menu senza nome',
52 | 'add_item' => 'Aggiungi elemento',
53 | 'new_item' => 'Nuova voce di menu',
54 | 'replace' => 'Sostituisci questo elemento con i figli generati',
55 | 'replace_comment' => 'Usa questa checkbox per inserire le voci di menu generate allo stesso livello di questo elemento. Questa voce verrà nascosta.',
56 | 'cms_page' => 'Pagine CMS',
57 | 'cms_page_comment' => 'Seleziona una pagina del CMS da aprire quando viene selezionata la voce di menu.',
58 | 'reference_required' => 'Il riferimento della voce di menu è obbligatorio.',
59 | 'url_required' => 'L\'URL è obbligatorio',
60 | 'cms_page_required' => 'Seleziona una pagina CMS',
61 | 'code' => 'Codice',
62 | 'code_comment' => 'Inserisci il codice della voce di menu se vuoi accedervi con l\'API.',
63 | 'static_page' => 'Pagine',
64 | 'all_static_pages' => 'Tutte le pagine',
65 | ],
66 | 'content' => [
67 | 'menu_label' => 'Contenuti',
68 | 'cant_save_to_dir' => 'Salvataggio dei file di contenuto nella directory static-pages non consentito.',
69 | ],
70 | 'sidebar' => [
71 | 'add' => 'Aggiungi',
72 | ],
73 | 'object' => [
74 | 'invalid_type' => 'Tipo di oggetto sconosciuto',
75 | 'not_found' => 'Oggetto richiesto non trovato.',
76 | ],
77 | 'editor' => [
78 | 'title' => 'Titolo',
79 | 'new_title' => 'Titolo nuova pagina',
80 | 'content' => 'Contenuto',
81 | 'url' => 'URL',
82 | 'filename' => 'Nome file',
83 | 'layout' => 'Layout',
84 | 'description' => 'Descrizione',
85 | 'preview' => 'Anteprima',
86 | 'enter_fullscreen' => 'Abilita visualizzazione a schermo intero',
87 | 'exit_fullscreen' => 'Esci dalla visualizzazione a schermo intero',
88 | 'hidden' => 'Nascosto',
89 | 'hidden_comment' => 'Le pagine nascoste sono accessibili soltanto dagli utenti che hanno effettuato l\'accesso al pannello di controllo.',
90 | 'navigation_hidden' => 'Nascondi dalla navigazione',
91 | 'navigation_hidden_comment' => 'Seleziona questa checkbox per nascondere questa pagina dai menu e dalle barre di navigazione generate automaticamente.',
92 | ],
93 | 'snippet' => [
94 | 'menu_label' => 'Snippet',
95 | ],
96 | ];
97 |
--------------------------------------------------------------------------------
/lang/lv/lang.php:
--------------------------------------------------------------------------------
1 | [
3 | 'name' => 'Lapas',
4 | 'description' => 'Lapu un izvēļņu funkcijas.',
5 | ],
6 | 'page' => [
7 | 'menu_label' => 'Lapas',
8 | 'template_title' => '%s Lapas',
9 | 'delete_confirmation' => 'Vai tu tiešām vēlies dzēst izvēlētās lapas? Šī operācija izdzēsīs arī apakšlapas (ja tādas ir).',
10 | 'no_records' => 'Neviena lapa netika atrasta',
11 | 'delete_confirm_single' => 'Vai tu tiešām vēlies dzēst izvēlēto lapu? Šī operācija izdzēsīs arī apakšlapas (ja tādas ir).',
12 | 'new' => 'Jauna lapa',
13 | 'add_subpage' => 'Pievienot apakšlapu',
14 | 'invalid_url' => 'Nekorekts saites formāts. Saitei vajadzētu sākties ar slīpsvītru un tā var saturēt ciparus, latīnu alfabēta burtus, slīpsvītras un sekojošos sibolus: _-/.',
15 | 'url_not_unique' => 'Šādu saiti izmanto jau kāda cita lapa.',
16 | 'layout' => 'Izkārtojums',
17 | 'layouts_not_found' => 'Izkārtojumi netika atrasti',
18 | 'saved' => 'Lapa tika veiksmīgi saglabāta.',
19 | 'tab' => 'Lapas',
20 | 'manage_pages' => 'Pieeja labot statiskās lapas',
21 | 'manage_menus' => 'Pieeja labot statiskās izvēlnes',
22 | 'access_snippets' => 'Pieeja koda fragmentiem',
23 | 'manage_content' => 'Pieeja labot statisko saturu',
24 | ],
25 | 'menu' => [
26 | 'menu_label' => 'Izvēlnes',
27 | 'delete_confirmation' => 'Vai tu tiešām vēlies dzēst izvēlētās izvēlnes?',
28 | 'no_records' => 'Izvēlnes netika atrastas',
29 | 'new' => 'Jauna izvēlne',
30 | 'new_name' => 'Jauna izvēlne',
31 | 'new_code' => 'jauna-izvelne',
32 | 'delete_confirm_single' => 'Vai tu tiešām vēlies dzēst šo izvēlni?',
33 | 'saved' => 'Izvēlne tika veiksmīgi saglabāta',
34 | 'name' => 'Vārds',
35 | 'code' => 'Kods',
36 | 'items' => 'Izvēlnes priekšmeti',
37 | 'add_subitem' => 'Pievienot apakšpriekšmetu',
38 | 'code_required' => 'Kods ir obligāts lauks.',
39 | 'invalid_code' => 'Nepreaizs koda formāts. Kods var saturēt ciparus, latīnu alfabēta burtus un sekojošos simbolus: _-',
40 | ],
41 | 'menuitem' => [
42 | 'title' => 'Nosaukums',
43 | 'editor_title' => 'Labot izvēlnes priekšmetu',
44 | 'type' => 'Tips',
45 | 'allow_nested_items' => 'Atļaut iegultos priekšmetus',
46 | 'allow_nested_items_comment' => 'Iegultie priekšmeti var tikt dinamiski ģenerēti',
47 | 'url' => 'Saite',
48 | 'reference' => 'Atsauce',
49 | 'title_required' => 'Nosaukuma lauks ir obligāts',
50 | 'unknown_type' => 'Nezināms izvēlnes tips',
51 | 'unnamed' => 'Izvēlnes priekšmets bez nosaukums',
52 | 'add_item' => 'Pievienot Priekšmetu',
53 | 'new_item' => 'Jauns izvēlnes priekšmets',
54 | 'replace' => 'Aizvietot šo priekšmetu ar tā ģenerētajiem bērniem',
55 | 'cms_page' => 'CMS lapa',
56 | 'cms_page_comment' => 'Izvēlies lapu, kas atvērsies, kad tiks noklikšķiāts uz šī izvēlnes priekšmeta.',
57 | 'reference_required' => 'Izvēlnes priekšmeta atsauce ir obligāts lauks.',
58 | 'url_required' => 'Saite ir obligāti jāievada',
59 | 'cms_page_required' => 'Lūdzu, izvēlies CMS lapu',
60 | 'code' => 'Kods',
61 | 'code_comment' => 'Ievadi izvēlnes priekšmeta kodu, ja tam vēlies piekļūt izmantojot API.',
62 | 'static_page' => 'Statiska lapa',
63 | 'all_static_pages' => 'Visas statiskās lapas',
64 | ],
65 | 'content' => [
66 | 'menu_label' => 'Saturs',
67 | 'cant_save_to_dir' => 'Satura failu saglabāšana statisko lapu direktorijā nav atļauta.S',
68 | ],
69 | 'sidebar' => [
70 | 'add' => 'Pievienot',
71 | ],
72 | 'object' => [
73 | 'invalid_type' => 'Nezināms objekta tips',
74 | 'not_found' => 'Pieprasītais objekts netika atrasts.',
75 | ],
76 | 'editor' => [
77 | 'title' => 'Nosaukums',
78 | 'new_title' => 'Jaunās lapas nosaukums',
79 | 'content' => 'Saturs',
80 | 'url' => 'Saite',
81 | 'filename' => 'Faila nosaukums',
82 | 'layout' => 'Izkārtojums',
83 | 'description' => 'Skaidrojums',
84 | 'preview' => 'Priekšskats',
85 | 'enter_fullscreen' => 'Atvērt pilnekrāna režīmu',
86 | 'exit_fullscreen' => 'Aizvērt pilnekrāna režīmu',
87 | 'hidden' => 'Paslēpts',
88 | 'hidden_comment' => 'Paslēptās lapas varēs redzēt tikai ielogojušies back-end lietotāji.',
89 | 'navigation_hidden' => 'Paslēpt navigācijā',
90 | 'navigation_hidden_comment' => 'Atķeksē šo kasti, lai automātiski ģenerētu izvēlnes un breadcrumbus.',
91 | ],
92 | 'snippet' => [
93 | 'menu_label' => 'Koda fragmenti',
94 | ],
95 | 'component' => [
96 | 'static_page_description' => 'Izvada statisku lapu CMS iegultnē.',
97 | 'static_menu_description' => 'Izvada izvēlni CMS iegultnē.',
98 | 'static_menu_menu_code' => 'Specificē komponentes kodu, ko izvadīt',
99 | 'static_breadcrumbs_description' => 'Izvada breadcrumbus CMS iegultnē.',
100 | ],
101 | ];
102 |
--------------------------------------------------------------------------------
/lang/nb-no/lang.php:
--------------------------------------------------------------------------------
1 | [
3 | 'name' => 'Sider',
4 | 'description' => 'Side- og menyfunksjoner.',
5 | ],
6 | 'page' => [
7 | 'menu_label' => 'Sider',
8 | 'template_title' => '%s Sider',
9 | 'delete_confirmation' => 'Vil du virkelig slette de valgte sidene? Hvis siden har undersider, blir de også slettet.',
10 | 'no_records' => 'Ingen sider funnet',
11 | 'delete_confirm_single' => 'Vil du virkelig slette denne siden? Hvis siden har undersider, blir de også slettet.',
12 | 'new' => 'Ny side',
13 | 'add_subpage' => 'Ny underside',
14 | 'invalid_url' => 'Ugyldig URL-format. URL-en skal starte med en skråstrek og kan bare inneholde tall, latinske bokstaver og følgende symboler: _-/.',
15 | 'url_not_unique' => 'URL-en er allerede i bruk av en annen side.',
16 | 'layout' => 'Layout',
17 | 'layouts_not_found' => 'Ingen layouts funnet',
18 | 'saved' => 'Siden har blitt lagret.',
19 | 'manage_pages' => 'Administrer statiske sider',
20 | 'manage_menus' => 'Administrer statiske menyer',
21 | 'access_snippets' => 'Tilgang til snippets',
22 | 'manage_content' => 'Administrer statisk innhold',
23 | ],
24 | 'menu' => [
25 | 'menu_label' => 'Menyer',
26 | 'delete_confirmation' => 'Vil du virkelig slette valgte menyer?',
27 | 'no_records' => 'Ingen elementer funnet',
28 | 'new' => 'Ny meny',
29 | 'new_name' => 'Ny meny',
30 | 'new_code' => 'new-menu',
31 | 'delete_confirm_single' => 'Vil du virkelig slette denne menyen?',
32 | 'saved' => 'Menyen har blitt lagret.',
33 | 'name' => 'Navn',
34 | 'code' => 'Kode',
35 | 'items' => 'Elementer',
36 | 'add_subitem' => 'Nytt underelement',
37 | 'code_required' => 'En kode kreves.',
38 | 'invalid_code' => 'Ugyldig kode-format. Koden kan inneholde tall, latinske bokstaver og følgende symboler: _-',
39 | ],
40 | 'menuitem' => [
41 | 'title' => 'Tittel',
42 | 'editor_title' => 'Endre element',
43 | 'type' => 'Type',
44 | 'allow_nested_items' => 'Tillat underelementer',
45 | 'allow_nested_items_comment' => 'Underelementer kan bli generert dynamisk av statiske sider og andre elementtyper',
46 | 'url' => 'URL',
47 | 'reference' => 'Referanse',
48 | 'title_required' => 'Tittel kreves.',
49 | 'unknown_type' => 'Ukjent elementtype',
50 | 'unnamed' => 'Navnløs elementtype',
51 | 'add_item' => 'Legg til element',
52 | 'new_item' => 'Nytt element',
53 | 'replace' => 'Erstatt dette elementet med sine underelementer',
54 | 'replace_comment' => 'Huk av denne boksen for å skjule dette elementet. Underelementer blir fremdeles synlige.',
55 | 'cms_page' => 'CMS-side',
56 | 'cms_page_comment' => 'Velg hvilken side som skal åpnes når man trykker på linken.',
57 | 'reference_required' => 'En referanse kreves.',
58 | 'url_required' => 'En URL kreves.',
59 | 'cms_page_required' => 'Vennligst velg en CMS-side',
60 | 'code' => 'Kode',
61 | 'code_comment' => 'Velg en elementkode hvis du trenger tilgang via API-en. (valgfritt)',
62 | ],
63 | 'content' => [
64 | 'menu_label' => 'Innhold',
65 | 'cant_save_to_dir' => 'Å lagre innhold til files i static-pages-mappen er ikke tillatt.',
66 | ],
67 | 'sidebar' => [
68 | 'add' => 'Legg til',
69 | ],
70 | 'object' => [
71 | 'invalid_type' => 'Ukjent objekttype',
72 | 'not_found' => 'Det forespurte objektet ble ikke funnet.',
73 | ],
74 | 'editor' => [
75 | 'title' => 'Tittel',
76 | 'new_title' => 'Tittel på siden',
77 | 'content' => 'Innhold',
78 | 'url' => 'URL',
79 | 'filename' => 'Filnavn',
80 | 'layout' => 'Layout',
81 | 'description' => 'Beskrivelse',
82 | 'preview' => 'Forhåndsvis',
83 | 'enter_fullscreen' => 'Fullskjermmodus',
84 | 'exit_fullscreen' => 'Avslutt fullskjermmodus',
85 | 'hidden' => 'Skjult',
86 | 'hidden_comment' => 'Kun backend-brukere har tilgang til skjulte sider.',
87 | 'navigation_hidden' => 'Gjem i menyer',
88 | 'navigation_hidden_comment' => 'Huk av denne boksen for å skjule denne siden i genererte menyer',
89 | ],
90 | 'snippet' => [
91 | 'menu_label' => 'Snippets',
92 | ],
93 | ];
94 |
--------------------------------------------------------------------------------
/lang/nl/lang.php:
--------------------------------------------------------------------------------
1 | [
3 | 'name' => 'Pagina\'s',
4 | 'description' => 'Pagina & menu functionaliteit.',
5 | ],
6 | 'page' => [
7 | 'menu_label' => 'Pagina\'s',
8 | 'template_title' => '%s Pagina\'s',
9 | 'delete_confirmation' => 'Weet u zeker dat u de geselecteerde pagina\'s wilt verwijderen? Ook eventuele subpagina\'s zullen hierdoor verwijderd worden.',
10 | 'no_records' => 'Geen pagina\'s gevonden',
11 | 'delete_confirm_single' => 'Weet u zeker dat u deze pagina wilt verwijderen? Ook eventuele subpagina\'s zullen hierdoor verwijderd worden.',
12 | 'new' => 'Nieuwe pagina',
13 | 'add_subpage' => 'Subpagina toevoegen',
14 | 'invalid_url' => 'Ongeldige URL-structuur. De URL moet beginnen met een slash en kan enkel cijfers, Latijnse letters en deze symbolen bevatten: _-/.',
15 | 'url_not_unique' => 'Deze URL wordt al gebruikt door een andere pagina.',
16 | 'layout' => 'Layout',
17 | 'layouts_not_found' => 'Geen layouts gevonden',
18 | 'saved' => 'De pagina is succesvol opgeslagen.',
19 | 'tab' => 'Pagina\'s',
20 | 'manage_pages' => 'Beheer statische pagina\'s',
21 | 'manage_menus' => 'Beheer statische menu\'s',
22 | 'access_snippets' => 'Toegang tot blokken',
23 | 'manage_content' => 'Beheer statische inhoud',
24 | ],
25 | 'menu' => [
26 | 'menu_label' => 'Menu\'s',
27 | 'delete_confirmation' => 'Weet u zeker dat u de geselecteerde menu\'s wilt verwijderen?',
28 | 'no_records' => 'Geen menu\'s gevonden',
29 | 'new' => 'Nieuw menu',
30 | 'new_name' => 'Nieuw menu',
31 | 'new_code' => 'nieuw-menu',
32 | 'delete_confirm_single' => 'Weet u zeker dat u dit menu wilt verwijderen?',
33 | 'saved' => 'Het menu is opgeslagen.',
34 | 'name' => 'Naam',
35 | 'code' => 'Code',
36 | 'items' => 'Menu items',
37 | 'add_subitem' => 'Subitem toevoegen',
38 | 'code_required' => 'Code is verplicht',
39 | 'invalid_code' => 'Ongeldige code-structuur. De Code kan enkel cijfers, Latijnse letters en deze symbolen bevatten: _-',
40 | ],
41 | 'menuitem' => [
42 | 'title' => 'Titel',
43 | 'editor_title' => 'Bewerk Menu Item',
44 | 'type' => 'Type',
45 | 'allow_nested_items' => 'Accepteer geneste items',
46 | 'allow_nested_items_comment' => 'Geneste items worden dynamisch gegenereerd door statische pagina\'s en sommige andere types.',
47 | 'url' => 'URL',
48 | 'reference' => 'Referentie',
49 | 'title_required' => 'Titel is verplicht',
50 | 'unknown_type' => 'Onbekend menu item type',
51 | 'unnamed' => 'Onbenoemd menu item',
52 | 'add_item' => 'Item toevoegen',
53 | 'new_item' => 'Nieuw menu item',
54 | 'replace' => 'Vervang dit item door de gegenereerde subitems',
55 | 'replace_comment' => 'Wanneer u deze optie aanvinkt, zullen de gegenereerd menu items worden getoond op het niveau van dit item. Dit item zelf zal verborgen blijven.',
56 | 'cms_page' => 'CMS Pagina',
57 | 'cms_page_comment' => 'Selecteer een pagina om te openen wanneer op het menu item geklikt wordt.',
58 | 'reference_required' => 'Een referentie is verplicht.',
59 | 'url_required' => 'Een URL is verplicht',
60 | 'cms_page_required' => 'Gelieve een CMS Pagina te selecteren',
61 | 'code' => 'Code',
62 | 'code_comment' => 'Geef de menu item code op indien u deze wilt benaderen via de API.',
63 | 'static_page' => 'Statische pagina',
64 | 'all_static_pages' => 'Alle statische pagina\'s',
65 | ],
66 | 'content' => [
67 | 'menu_label' => 'Inhoud',
68 | 'cant_save_to_dir' => 'Het is niet toegelaten bestanden met inhoud op te slaan in de static-pages map.',
69 | ],
70 | 'sidebar' => [
71 | 'add' => 'Toevoegen',
72 | ],
73 | 'object' => [
74 | 'invalid_type' => 'Onbekend object type',
75 | 'not_found' => 'Het gevraagde object is niet gevonden.',
76 | ],
77 | 'editor' => [
78 | 'title' => 'Titel',
79 | 'new_title' => 'Nieuwe pagina titel',
80 | 'content' => 'Inhoud',
81 | 'url' => 'URL',
82 | 'filename' => 'Bestandsnaam',
83 | 'layout' => 'Layout',
84 | 'description' => 'Beschrijving',
85 | 'preview' => 'Voorbeeld',
86 | 'enter_fullscreen' => 'Volledig scherm openen',
87 | 'exit_fullscreen' => 'Volledig scherm afsluiten',
88 | 'hidden' => 'Verborgen',
89 | 'hidden_comment' => 'Verborgen pagina\'s zijn alleen toegankelijk voor ingelogde gebruikers.',
90 | 'navigation_hidden' => 'Verbergen in de navigatie',
91 | 'navigation_hidden_comment' => 'Indien aangevinkt, zal deze pagina niet weergegeven worden in automatisch gegenereerde menu\'s en kruimelpaden (breadcrumbs).',
92 | ],
93 | 'snippet' => [
94 | 'menu_label' => 'Blokken',
95 | ],
96 | ];
97 |
--------------------------------------------------------------------------------
/lang/pl/lang.php:
--------------------------------------------------------------------------------
1 | [
3 | 'name' => 'Strony',
4 | 'description' => 'Strony statyczne oraz menu.',
5 | ],
6 | 'page' => [
7 | 'menu_label' => 'Strony',
8 | 'template_title' => '%s Strony',
9 | 'delete_confirmation' => 'Czy na pewno chcesz usunąć wybrane strony? Podstrony również zostaną usnięte.',
10 | 'no_records' => 'Nie znaleziono stron',
11 | 'delete_confirm_single' => 'Czy na pewno chcesz usunąć stronę? Podstrony również zostaną usnięte.',
12 | 'new' => 'Nowa strona',
13 | 'add_subpage' => 'Dodaj podstronę',
14 | 'invalid_url' => 'Niewprawidłowy format URL lub niedozwolone znaki.',
15 | 'url_not_unique' => 'Podany URL istnieje już w bazie.',
16 | 'layout' => 'Układ',
17 | 'layouts_not_found' => 'Brak układów',
18 | 'saved' => 'Strona została zapisana poprawnie.',
19 | 'tab' => 'Strony',
20 | 'manage_pages' => 'Zarządzaj stronami statycznymi',
21 | 'manage_menus' => 'Zarządzaj menu statycznymi',
22 | 'access_snippets' => 'Fragmenty',
23 | 'manage_content' => 'Zarządzaj treścią statyczną',
24 | ],
25 | 'menu' => [
26 | 'menu_label' => 'Menu',
27 | 'delete_confirmation' => 'Czy na pewno chcesz usunąć wybrane menu?',
28 | 'no_records' => 'Nie znaleziono menu',
29 | 'new' => 'Nowe menu',
30 | 'new_name' => 'Nowe menu',
31 | 'new_code' => 'nowe-menu',
32 | 'delete_confirm_single' => 'Czy na pewno chcesz usunąć wybrane menu?',
33 | 'saved' => 'Menu zostało zapisane poprawnie.',
34 | 'name' => 'Nazwa',
35 | 'code' => 'Kod systemowy',
36 | 'items' => 'Elementy menu',
37 | 'add_subitem' => 'Dodaj element',
38 | 'code_required' => 'Kod systemowy jest wymagany',
39 | 'invalid_code' => 'Nieprawidłowy kod systemowy. Nie może zawierać znaków specjalnych',
40 | ],
41 | 'menuitem' => [
42 | 'title' => 'Tytuł',
43 | 'editor_title' => 'Edytuj element',
44 | 'type' => 'Typ',
45 | 'allow_nested_items' => 'Pozwól na zagnieżdżanie elementów',
46 | 'allow_nested_items_comment' => 'Zagnieżdżone elementy mogą być utworzone dynamicznie np ze stron statycznych',
47 | 'url' => 'URL',
48 | 'reference' => 'Referencja',
49 | 'search_placeholder' => 'Przeszukaj wszystkie referencje...',
50 | 'title_required' => 'Tytuł jest wymagany',
51 | 'unknown_type' => 'Nieznany typ elementu',
52 | 'unnamed' => 'Brak nazwy typu elementu',
53 | 'add_item' => 'Dodaj Element',
54 | 'new_item' => 'Nowy element menu',
55 | 'replace' => 'Zamień element na elementy wenątrz tego elementu',
56 | 'replace_comment' => 'Użyj tej opcji aby elementy znajdujące sie w tym elemencie były wygenerowane na poziomie tego elementu a sam element zostanie ukryty.',
57 | 'cms_page' => 'Strona CMS',
58 | 'cms_page_comment' => 'Wybierz stronę z cms do której ma kierować',
59 | 'reference_required' => 'Referencja jest wymagana',
60 | 'url_required' => 'URL jest wymagany',
61 | 'cms_page_required' => 'Wybierz stronę z CMS',
62 | 'display_tab' => 'Wyświetlanie',
63 | 'hidden' => 'Ukryj',
64 | 'hidden_comment' => 'Ukryj ten element menu na stronie',
65 | 'attributes_tab' => 'Atrybuty',
66 | 'code' => 'Kod systemowy',
67 | 'code_comment' => 'Wprowadź kod systemowy aby móc go używać w API.',
68 | 'css_class' => 'Klasa CSS',
69 | 'css_class_comment' => 'Wprowadź klasę CSS, aby nadać temu elementowi niestandardowy wygląd',
70 | 'external_link' => 'Zewnętrzny link',
71 | 'external_link_comment' => 'Adres linku zostanie otworzony w nowym oknie',
72 | 'static_page' => 'Strona statyczna',
73 | 'all_static_pages' => 'Wszystkie strony statyczne',
74 | ],
75 | 'content' => [
76 | 'menu_label' => 'Treść',
77 | 'cant_save_to_dir' => 'Zapis treści jest niemożliwy. Sprawdź dostęp do folderu treści statycznych.',
78 | ],
79 | 'sidebar' => [
80 | 'add' => 'Dodaj',
81 | ],
82 | 'object' => [
83 | 'invalid_type' => 'Nieznany typ obiektu',
84 | 'not_found' => 'Nie znaleziono objektu.',
85 | ],
86 | 'editor' => [
87 | 'title' => 'Tytuł',
88 | 'new_title' => 'Nowy tytuł strony',
89 | 'content' => 'Treść',
90 | 'url' => 'URL',
91 | 'filename' => 'Nazwa pliku',
92 | 'layout' => 'Układ',
93 | 'description' => 'Opis',
94 | 'preview' => 'Podgląd',
95 | 'enter_fullscreen' => 'Pełny ekran',
96 | 'exit_fullscreen' => 'Zamknij pełny ekran',
97 | 'hidden' => 'Ukryta',
98 | 'hidden_comment' => 'Ukryte strony są dostępne tylko dla zalogowanych administratorów.',
99 | 'navigation_hidden' => 'Ukryj stronę w nawigacji',
100 | 'navigation_hidden_comment' => 'Zaznacz aby usunąć strone z automatycznego generowania menu oraz ścieżek (breadcrumbs).',
101 | ],
102 | 'snippet' => [
103 | 'menu_label' => 'Fragmenty',
104 | ],
105 | 'component' => [
106 | 'static_page_name' => 'Strona statyczna',
107 | 'static_page_description' => 'Dodaje zawartość statycznej strony.',
108 | 'static_page_use_content_name' => 'Użyj pola zawartości strony',
109 | 'static_page_use_content_description' => 'Jeżeli odznaczone, sekcja treści nie pojawi się podczas edycji strony statycznej. Zawartość strony będzie ustalana wyłącznie na podstawie symboli zastępczych i zmiennych',
110 | 'static_page_default_name' => 'Domyślny układ',
111 | 'static_page_default_description' => 'Definiuje ten układ jako domyślny dla nowych stron',
112 | 'static_page_child_layout_name' => 'Układ podstrony',
113 | 'static_page_child_layout_description' => 'Układ, który będzie używany jako domyślny dla każdej nowej podstrony',
114 | 'static_menu_name' => 'Menu',
115 | 'static_menu_description' => 'Dodaje menu do strony.',
116 | 'static_menu_code_name' => 'Menu',
117 | 'static_menu_code_description' => 'Podaj kod systemowy menu, które ma zostać wyświetlone.',
118 | 'static_breadcrumbs_name' => 'Okruszki (Breadcrumbs)',
119 | 'static_breadcrumbs_description' => 'Zwraca ścieżkę stron statycznych.',
120 | 'child_pages_name' => 'Strony podrzędne',
121 | 'child_pages_description' => 'Wyświetla listę stron podrzędnych dla aktualnej strony',
122 | 'static_menu_menu_code' => 'Podaj kod systemowy menu',
123 | ],
124 | ];
125 |
--------------------------------------------------------------------------------
/lang/pt-br/lang.php:
--------------------------------------------------------------------------------
1 | [
3 | 'name' => 'Páginas',
4 | 'description' => 'Gerenciar páginas e menus.',
5 | ],
6 | 'page' => [
7 | 'menu_label' => 'Páginas',
8 | 'template_title' => '%s Páginas',
9 | 'delete_confirmation' => 'Tem certeza que deseja excluir as páginas selecionadas? Todas as subpáginas também serão excluídas.',
10 | 'no_records' => 'Nenhuma página encontrada',
11 | 'delete_confirm_single' => 'Tem certeza que deseja excluir a página selecionada? Todas as subpáginas também serão excluídas.',
12 | 'new' => 'Nova página',
13 | 'add_subpage' => 'Adicionar subpágina',
14 | 'invalid_url' => 'Formato inválido de URL. A URL deve iniciar com o símbolo / e pode conter apenas dígitos, letras latinas e os seguintes símbolos: _-/.',
15 | 'url_not_unique' => 'Esta URL já está sendo utilizada por outra página.',
16 | 'layout' => 'Layout',
17 | 'layouts_not_found' => 'Nenhum layout encontrado',
18 | 'saved' => 'Página salva com sucesso.',
19 | 'tab' => 'Páginas',
20 | 'manage_pages' => 'Gerenciar páginas estáticas',
21 | 'manage_menus' => 'Gerenciar menus estáticos',
22 | 'access_snippets' => 'Acessar fragmentos',
23 | 'manage_content' => 'Gerenciar conteúdos estáticos',
24 | ],
25 | 'menu' => [
26 | 'menu_label' => 'Menus',
27 | 'delete_confirmation' => 'Tem certeza que deseja excluir os menus selecionados?',
28 | 'no_records' => 'Nenhum item encontrado',
29 | 'new' => 'Novo menu',
30 | 'new_name' => 'Novo menu',
31 | 'new_code' => 'novo-menu',
32 | 'delete_confirm_single' => 'Tem certeza que deseja excluir este menu?',
33 | 'saved' => 'Menu salvo com sucesso.',
34 | 'name' => 'Nome',
35 | 'code' => 'Código',
36 | 'items' => 'Itens do menu',
37 | 'add_subitem' => 'Adicionar subitem',
38 | 'code_required' => 'O código é necessário',
39 | 'invalid_code' => 'Formato inválido de código. O código pode conter dígitos, letras latinas e os seguintes símbolos: _-',
40 | ],
41 | 'menuitem' => [
42 | 'title' => 'Título',
43 | 'editor_title' => 'Editar item',
44 | 'type' => 'Tipo',
45 | 'allow_nested_items' => 'Permitir itens aninhados',
46 | 'allow_nested_items_comment' => 'Itens aninhados podem ser gerados dinamicamente por páginas estáticas e outros tipos de itens',
47 | 'url' => 'URL',
48 | 'reference' => 'Referência',
49 | 'title_required' => 'O título é necessário',
50 | 'unknown_type' => 'Tipo de item desconhecido',
51 | 'unnamed' => 'Item de menu sem nome',
52 | 'add_item' => 'Adicionar item',
53 | 'new_item' => 'Novo item',
54 | 'replace' => 'Substituir este item com seus filhos gerados',
55 | 'replace_comment' => 'Use esta opção para empurrar os itens de menu gerados para o mesmo nível que este item. Este item em si será ocultado.',
56 | 'cms_page' => 'Página CMS',
57 | 'cms_page_comment' => 'Selecione uma página para abrir quando o item for clicado.',
58 | 'reference_required' => 'A referência do item é necessária.',
59 | 'url_required' => 'A URL é necessária',
60 | 'cms_page_required' => 'Por favor, selecione uma página CMS',
61 | 'code' => 'Código',
62 | 'code_comment' => 'Entre com o código do item se deseja acessar com a API.',
63 | ],
64 | 'content' => [
65 | 'menu_label' => 'Conteúdo',
66 | 'cant_save_to_dir' => 'Não é permitido salvar arquivos de conteúdo no diretório de páginas estáticas.',
67 | ],
68 | 'sidebar' => [
69 | 'add' => 'Adicionar',
70 | ],
71 | 'object' => [
72 | 'invalid_type' => 'Tipo de objeto desconhecido',
73 | 'not_found' => 'O objeto requisitado não foi encontrado.',
74 | ],
75 | 'editor' => [
76 | 'title' => 'Título',
77 | 'new_title' => 'Título da nova página',
78 | 'content' => 'Conteúdo',
79 | 'url' => 'URL',
80 | 'filename' => 'Nome do arquivo',
81 | 'layout' => 'Layout',
82 | 'description' => 'Descrição',
83 | 'preview' => 'Visualizar',
84 | 'enter_fullscreen' => 'Entrar no modo tela cheia',
85 | 'exit_fullscreen' => 'Sair do modo tela cheia',
86 | 'hidden' => 'Ocultar',
87 | 'hidden_comment' => 'Páginas ocultas são acessíveis apenas para administradores.',
88 | 'navigation_hidden' => 'Ocultar na navegação',
89 | 'navigation_hidden_comment' => 'Marque esta opção para ocultar esta página de menus gerados automaticamente e itens de hierarquia de navegação.',
90 | ],
91 | 'snippet' => [
92 | 'menu_label' => 'Fragmentos',
93 | ],
94 | ];
95 |
--------------------------------------------------------------------------------
/lang/ru/lang.php:
--------------------------------------------------------------------------------
1 | [
3 | 'name' => 'Страницы',
4 | 'description' => 'Страницы и меню.',
5 | ],
6 | 'page' => [
7 | 'menu_label' => 'Страницы',
8 | 'template_title' => '%s Страницы',
9 | 'delete_confirmation' => 'Вы действительно хотите удалить выбранные страницы? Это также удалит имеющиеся подстраницы.',
10 | 'no_records' => 'Страниц не найдено',
11 | 'delete_confirm_single' => 'Вы действительно хотите удалить эту страницу? Это также удалит имеющиеся подстраницы.',
12 | 'new' => 'Новая страница',
13 | 'add_subpage' => 'Добавить подстраницу',
14 | 'invalid_url' => 'Некорректный формат URL. URL должен начинаться с прямого слеша и может содержать цифры, латинские буквы и следующие символы: _-/.',
15 | 'url_not_unique' => 'Это URL уже используется другой страницей.',
16 | 'layout' => 'Шаблон',
17 | 'layouts_not_found' => 'Шаблоны не найдены',
18 | 'saved' => 'Страница была успешно сохранена.',
19 | 'tab' => 'Страницы',
20 | 'manage_pages' => 'Управление страницами',
21 | 'manage_menus' => 'Управление меню',
22 | 'access_snippets' => 'Доступ к сниппетами',
23 | 'manage_content' => 'Управление содержимым',
24 | ],
25 | 'menu' => [
26 | 'menu_label' => 'Меню',
27 | 'delete_confirmation' => 'Вы действительно хотите удалить выбранные пункты меню?',
28 | 'no_records' => 'Меню не найдены',
29 | 'new' => 'Новое меню',
30 | 'new_name' => 'Новое меню',
31 | 'new_code' => 'novoe-menyu',
32 | 'delete_confirm_single' => 'Вы действительно хотите удалить это меню?',
33 | 'saved' => 'Меню было успешно сохранено.',
34 | 'name' => 'Имя',
35 | 'code' => 'Код',
36 | 'items' => 'Пункты меню',
37 | 'add_subitem' => 'Добавить подменю',
38 | 'code_required' => 'Поле Код обязательно',
39 | 'invalid_code' => 'Некорректный формат Кода. Код может содержать цифры, латинские буквы и следующие символы: _-/',
40 | ],
41 | 'menuitem' => [
42 | 'title' => 'Название',
43 | 'editor_title' => 'Редактировать пункт меню',
44 | 'type' => 'Тип',
45 | 'allow_nested_items' => 'Разрешить вложенные',
46 | 'allow_nested_items_comment' => 'Вложенные пункты могут быть динамически сгенерированы статической страницей или другими типами элементов',
47 | 'url' => 'URL',
48 | 'reference' => 'Ссылка',
49 | 'title_required' => 'Название обязательно',
50 | 'unknown_type' => 'Неизвестный тип меню',
51 | 'unnamed' => 'Безымянный пункт',
52 | 'add_item' => 'Добавить пункт (i)',
53 | 'new_item' => 'Новый пункт',
54 | 'replace' => 'Заменять этот пункт его сгенерированными потомками',
55 | 'replace_comment' => 'Отметьте для переноса генерируемых пунктов меню на один уровень с этим пунктом. Сам этот пункт будет скрыт.',
56 | 'cms_page' => 'Страницы CMS',
57 | 'cms_page_comment' => 'Выберите открываемую по клику страницу.',
58 | 'reference_required' => 'Необходима ссылка для пункта меню.',
59 | 'url_required' => 'Необходим URL',
60 | 'cms_page_required' => 'Пожалуйста, выберите страницу CMS',
61 | 'code' => 'Код',
62 | 'code_comment' => 'Введите код пункта меню, если хотите иметь к нему доступ через API.',
63 | ],
64 | 'content' => [
65 | 'menu_label' => 'Содержимое',
66 | 'cant_save_to_dir' => 'Сохранение файлов содержимого в директорию static-pages запрещено.',
67 | ],
68 | 'sidebar' => [
69 | 'add' => 'Добавить',
70 | ],
71 | 'object' => [
72 | 'invalid_type' => 'Неизвестный тип объекта',
73 | 'not_found' => 'Запрашиваемый объект не найден.',
74 | ],
75 | 'editor' => [
76 | 'title' => 'Название',
77 | 'new_title' => 'Название новой страницы',
78 | 'content' => 'Содержимое',
79 | 'url' => 'URL',
80 | 'filename' => 'Имя Файла',
81 | 'layout' => 'Шаблон',
82 | 'description' => 'Описание',
83 | 'preview' => 'Предпросмотр',
84 | 'enter_fullscreen' => 'Войти в полноэкранный режим',
85 | 'exit_fullscreen' => 'Выйти из полноэкранного режима',
86 | 'hidden' => 'Скрытый',
87 | 'hidden_comment' => 'Скрытые страницы доступны только вошедшим администраторам.',
88 | 'navigation_hidden' => 'Спрятать в навигации',
89 | 'navigation_hidden_comment' => 'Отметьте, чтобы скрыть эту страницу в генерируемых меню и хлебных крошках.',
90 | ],
91 | 'snippet' => [
92 | 'menu_label' => 'Сниппеты',
93 | ],
94 | 'component' => [
95 | 'static_page_description' => 'Выводит страницу в CMS шаблоне.',
96 | 'static_menu_description' => 'Выводит меню в CMS шаблоне.',
97 | 'static_menu_menu_code' => 'Укажите код меню, которое должно быть показано',
98 | 'static_breadcrumbs_description' => 'Выводит хлебные крошки для страницы.',
99 | ],
100 | ];
101 |
--------------------------------------------------------------------------------
/lang/sk/lang.php:
--------------------------------------------------------------------------------
1 | [
3 | 'name' => 'Stránky',
4 | 'description' => 'Funkcie pre správu stránok a menu.',
5 | ],
6 | 'page' => [
7 | 'menu_label' => 'Stránky',
8 | 'template_title' => '%s Stránky',
9 | 'delete_confirmation' => 'Naozaj chcete odstrániť vybrané stránky? Ak existujú nejaké podstránky, budú taktiež odstránené.',
10 | 'no_records' => 'Neboli nájdené žiadne stránky',
11 | 'delete_confirm_single' => 'Naozaj chcete odstrániť túto stránku? Ak existujú nejaké podstránky, budú taktiež odstránené.',
12 | 'new' => 'Nová stránka',
13 | 'add_subpage' => 'Pridať podstránku',
14 | 'invalid_url' => 'Neplatný formát URL adresy. URL by mala začínať symbolom lomítka a môže obsahovať číslice, latinské písmená a nasledujúce znaky: _- /.',
15 | 'url_not_unique' => 'Túto URL adresu už používa iná stránka.',
16 | 'layout' => 'Layout',
17 | 'layouts_not_found' => 'Žiadne layouty neboli nájdené',
18 | 'saved' => 'Stránka bola úspešne uložená.',
19 | 'tab' => 'Stránky',
20 | 'manage_pages' => 'Správa stránok',
21 | 'manage_menus' => 'Správa menu',
22 | 'access_snippets' => 'Správa snippetov',
23 | 'manage_content' => 'Správa obsahu',
24 | ],
25 | 'menu' => [
26 | 'menu_label' => 'Menu',
27 | 'delete_confirmation' => 'Naozaj chcete odstrániť vybrané menu?',
28 | 'no_records' => 'Neboli nájdené žiadne položky',
29 | 'new' => 'Nové menu',
30 | 'new_name' => 'Nové menu',
31 | 'new_code' => 'nove-menu',
32 | 'delete_confirm_single' => 'Naozaj chcete odstrániť toto menu?',
33 | 'saved' => 'Menu bolo úspešne uložené',
34 | 'name' => 'Názov',
35 | 'code' => 'Kód',
36 | 'items' => 'Položky menu',
37 | 'add_subitem' => 'Pridať vnorenú položku',
38 | 'code_required' => 'Pole kód je povinné.',
39 | 'invalid_code' => 'Neplatný formát kódu. Kód môže obsahovať číslice, latinské písmená a nasledujúce znaky: _-',
40 | ],
41 | 'menuitem' => [
42 | 'title' => 'Názov',
43 | 'editor_title' => 'Upraviť položku menu',
44 | 'type' => 'Typ',
45 | 'allow_nested_items' => 'Povoliť vnorené položky',
46 | 'allow_nested_items_comment' => 'Vnorené položky môžu byť automaticky generované statickou stránkou alebo niektorými ďalšími typmi položiek',
47 | 'url' => 'URL adresa',
48 | 'reference' => 'Odkaz',
49 | 'search_placeholder' => 'Prehľadať všetky odkazy...',
50 | 'title_required' => 'Názov je povinný',
51 | 'unknown_type' => 'Neznámy typ položky menu',
52 | 'unnamed' => 'Nepomenovaná položka menu',
53 | 'add_item' => 'Pridať Položku',
54 | 'new_item' => 'Nová položka menu',
55 | 'replace' => 'Nahradiť túto položku jej generovanými vnorenými položkami',
56 | 'replace_comment' => 'Zaškrtnite toto pole pokiaľ si prajete vnorené položky menu posunúť na rovnakú úroveň akú má táto položka. Samotná položka zostane skrytá.',
57 | 'cms_page' => 'CMS stránka',
58 | 'cms_page_comment' => 'Vyberte stránku, ktorá sa má otvoriť po kliknutí na položku v menu.',
59 | 'reference_required' => 'Odkaz na položku menu je povinný.',
60 | 'url_required' => 'Adresa URL je povinná',
61 | 'cms_page_required' => 'Prosím vyberte CMS stránku',
62 | 'display_tab' => 'Zobrazenie',
63 | 'hidden' => 'Skrytá',
64 | 'hidden_comment' => 'Skryť túto položku menu pre celú webovú stránku.',
65 | 'attributes_tab' => 'Vlastnosti',
66 | 'code' => 'Kód',
67 | 'code_comment' => 'Zadajte kód položky menu ak k nej chcete pristupovať prostredníctvom API.',
68 | 'css_class' => 'CSS trieda',
69 | 'css_class_comment' => 'Zadajte názov CSS triedy, ktorá sa ma aplikovať pre túto položku menu.',
70 | 'external_link' => 'Externý odkaz',
71 | 'external_link_comment' => 'Otvoriť odkaz tejto položky menu v novom okne.',
72 | 'static_page' => 'Statická stránka',
73 | 'all_static_pages' => 'Všetky statické stránky',
74 | ],
75 | 'content' => [
76 | 'menu_label' => 'Obsah',
77 | 'cant_save_to_dir' => 'Ukladanie súborov s obsahom do adresára statických stránok nie je povolené.',
78 | ],
79 | 'sidebar' => [
80 | 'add' => 'Pridať',
81 | ],
82 | 'object' => [
83 | 'invalid_type' => 'Neznámy typ objektu',
84 | 'not_found' => 'Požadovaný objekt nebol nájdený.',
85 | ],
86 | 'editor' => [
87 | 'title' => 'Názov',
88 | 'new_title' => 'Názov novej stránky',
89 | 'content' => 'Obsah',
90 | 'url' => 'URL adresa',
91 | 'filename' => 'Názov súboru',
92 | 'layout' => 'Layout',
93 | 'description' => 'Popis',
94 | 'preview' => 'Náhľad',
95 | 'enter_fullscreen' => 'Zapnúť režim celej obrazovky',
96 | 'exit_fullscreen' => 'Vypnúť režim celej obrazovky',
97 | 'hidden' => 'Skrytá',
98 | 'hidden_comment' => 'Skryté stránky sú prístupné iba prihláseným používateľom.',
99 | 'navigation_hidden' => 'Skryť v menu',
100 | 'navigation_hidden_comment' => 'Začiarknutím tohto poľa skryjete túto stránku z automaticky generovaných menu a navigačnej cesty.',
101 | ],
102 | 'snippet' => [
103 | 'menu_label' => 'Snippety',
104 | ],
105 | 'component' => [
106 | 'static_page_name' => 'Statická stránka',
107 | 'static_page_description' => 'Zobrazí obsah statickej stránky',
108 | 'static_page_use_content_name' => 'Použiť pole obsah stránky',
109 | 'static_page_use_content_description' => 'Ak nie je začiarknuté, sekcia obsahu sa nezobrazí pri úprave statickej stránky. Obsah stránky bude určený výhradne prostredníctvom zástupcov a premenných.',
110 | 'static_page_default_name' => 'Predvolený layout',
111 | 'static_page_default_description' => 'Nastaví tento layout ako predvolený pre nové stránky',
112 | 'static_page_child_layout_name' => 'Layout podstránky',
113 | 'static_page_child_layout_description' => 'Layout ktorý sa má použiť ako predvolený pre všetky nové podstránky',
114 | 'static_menu_name' => 'Statické menu',
115 | 'static_menu_description' => 'Zobrazí menu na stránke',
116 | 'static_menu_code_name' => 'Menu',
117 | 'static_menu_code_description' => 'Zadajte kód menu, ktoré má komponent zobraziť.',
118 | 'static_breadcrumbs_name' => 'Statická navigačná cesta',
119 | 'static_breadcrumbs_description' => 'Zobrazí navigačnú cestu na stránke.',
120 | ],
121 | ];
122 |
--------------------------------------------------------------------------------
/lang/sv/lang.php:
--------------------------------------------------------------------------------
1 | [
3 | 'name' => 'Sidor',
4 | 'description' => 'Sidor & menyer.',
5 | ],
6 | 'page' => [
7 | 'menu_label' => 'Sidor',
8 | 'template_title' => '%s Sidor',
9 | 'delete_confirmation' => 'Vill du verkligen ta bort de valda sidorna? Detta kommer också ta bort undersidorna, ifall det finns några.',
10 | 'no_records' => 'Inga sidor hittades',
11 | 'delete_confirm_single' => 'Vill du verkligen ta bort den valda sidan? Detta kommer också ta bort sidans undersidor, ifall det finns några.',
12 | 'new' => 'Ny sida',
13 | 'add_subpage' => 'Lägg till undersida',
14 | 'invalid_url' => 'Ogiltigt format på URL. URL:en ska börja med slash och kan innehålla siffror, latinska bokstäver och följande symboler: _-/',
15 | 'url_not_unique' => 'Denna URL används redan av en annan sida.',
16 | 'layout' => 'Layout',
17 | 'layouts_not_found' => 'Layouter kan inte hittas',
18 | 'saved' => 'Sidan har sparats.',
19 | 'tab' => 'Sidor',
20 | 'manage_pages' => 'Hantera statiska sidor',
21 | 'manage_menus' => 'Hantera statiska menyer',
22 | 'access_snippets' => 'Hantera stumpar',
23 | 'manage_content' => 'Hantera statiskt innehåll',
24 | ],
25 | 'menu' => [
26 | 'menu_label' => 'Menyer',
27 | 'delete_confirmation' => 'Vill du verkligen ta bort valda de menyerna?',
28 | 'no_records' => 'Inga föremål kunde finnas',
29 | 'new' => 'Ny meny',
30 | 'new_name' => 'Ny meny',
31 | 'new_code' => 'ny-meny',
32 | 'delete_confirm_single' => 'Vill du verkligen ta bort denna menyn?',
33 | 'saved' => 'Menyn har sparats.',
34 | 'name' => 'Namn',
35 | 'code' => 'Kod',
36 | 'items' => 'Menyföremål',
37 | 'add_subitem' => 'Lägg till underföremål',
38 | 'code_required' => 'Koden är obligatorisk',
39 | 'invalid_code' => 'Ogiltigt kodformat. Koden kan innehålla siffror, latinska bokstäver och följande symboler: _-',
40 | ],
41 | 'menuitem' => [
42 | 'title' => 'Rubrik',
43 | 'editor_title' => 'Redigera menyföremål',
44 | 'type' => 'Typ',
45 | 'allow_nested_items' => 'Tillåt underliggande föremål',
46 | 'allow_nested_items_comment' => 'Underliggande föremål kan skapas dynamiskt av en etatisk sida och några andra föremålstyper',
47 | 'url' => 'URL',
48 | 'reference' => 'Referens',
49 | 'title_required' => 'Rubriken är obligatorisk',
50 | 'unknown_type' => 'Okänd menyföremålstyp',
51 | 'unnamed' => 'Namnlöst menyföremål',
52 | 'add_item' => 'Lägg till föremål',
53 | 'new_item' => 'Nytt menyföremål',
54 | 'replace' => 'Ersätt detta föremål med dens skapade underföremål',
55 | 'replace_comment' => 'Använd denna kryssruta för att föra skapade menyföremål till samma nivå som detta föremålet. Detta föremålet kommer att gömmas.',
56 | 'cms_page' => 'CMS-sida',
57 | 'cms_page_comment' => 'Välj en sida som ska öppnas när menyföremålet klickas.',
58 | 'reference_required' => 'Menyföremålets referens är obligatorisk.',
59 | 'url_required' => 'URL:en är obligatorisk',
60 | 'cms_page_required' => 'Vänligen välj en CMS-sida',
61 | 'code' => 'Kod',
62 | 'code_comment' => 'Fyll i menyföremålets kod om du vill få tillgång till det i API:t.',
63 | ],
64 | 'content' => [
65 | 'menu_label' => 'Innehåll',
66 | 'cant_save_to_dir' => 'Att sparar innehållsfiler till mappen för statiska sidor är inte tillåtet.',
67 | ],
68 | 'sidebar' => [
69 | 'add' => 'Lägg till',
70 | ],
71 | 'object' => [
72 | 'invalid_type' => 'Ogiltig objekttyp',
73 | 'not_found' => 'Det begärda objektet kunde inte finnas.',
74 | ],
75 | 'editor' => [
76 | 'title' => 'Rubrik',
77 | 'new_title' => 'Ny sidrubrik',
78 | 'content' => 'Innehåll',
79 | 'url' => 'URL',
80 | 'filename' => 'Filnamn',
81 | 'layout' => 'Layout',
82 | 'description' => 'Beskrivning',
83 | 'preview' => 'Förhandsgranska',
84 | 'enter_fullscreen' => 'Gå in i fullskärmsläge',
85 | 'exit_fullscreen' => 'Gå ut ur fullskärmsläge',
86 | 'hidden' => 'Gömd',
87 | 'hidden_comment' => 'Gömda sidor är bara tillgängliga för inloggande back-endanvändare.',
88 | 'navigation_hidden' => 'Göm i navigation',
89 | 'navigation_hidden_comment' => 'Fyll i denna rutan för att gömma sidan från automatiskt skapade menyer och sökvägar.',
90 | ],
91 | 'snippet' => [
92 | 'menu_label' => 'Stumpar',
93 | ],
94 | ];
95 |
--------------------------------------------------------------------------------
/lang/tr/lang.php:
--------------------------------------------------------------------------------
1 | [
3 | 'name' => 'Sayfalar',
4 | 'description' => 'Sayfalar & menüler modülü.',
5 | ],
6 | 'page' => [
7 | 'menu_label' => 'Sayfalar',
8 | 'template_title' => '%s Sayfalar',
9 | 'delete_confirmation' => 'Seçili sayfaları silmek istiyor musunuz? Alt sayfalar da silinecektir.',
10 | 'no_records' => 'Sayfa bulunamadı',
11 | 'delete_confirm_single' => 'Bu sayfayı silmek istiyor musunuz? Alt sayfalar da silinecektir',
12 | 'new' => 'Yeni sayfa',
13 | 'add_subpage' => 'Altsayfa ekle',
14 | 'invalid_url' => 'Geçersiz URL formatı. URL eğik çizgi sembolü ile başlamalıdır ve rakam, latin harfleri ve bu sembolleri: _-/. içerebilir.',
15 | 'url_not_unique' => 'Bu URL başka bir sayfa tarafından kullanılıyor',
16 | 'layout' => 'Şablon',
17 | 'layouts_not_found' => 'Şablon bulunamadı',
18 | 'saved' => 'Sayfa başarıyla kaydedildi.',
19 | 'tab' => 'Sayfalar',
20 | 'manage_pages' => 'Sayfaları yönetebilsin',
21 | 'manage_menus' => 'Menüleri yönetebilsin',
22 | 'access_snippets' => 'Snippetleri yönetebilsin',
23 | 'manage_content' => 'Sabit içerikleri yönetebilsin',
24 | ],
25 | 'menu' => [
26 | 'menu_label' => 'Menüler',
27 | 'delete_confirmation' => 'Seçili menüleri silmek istiyor musunuz?',
28 | 'no_records' => 'Menü bulunamadı',
29 | 'new' => 'Yeni Menü',
30 | 'new_name' => 'Yeni menü',
31 | 'new_code' => 'yeni-menu',
32 | 'delete_confirm_single' => 'Bu menüyü silmek istiyor musunuz?',
33 | 'saved' => 'Menü başarıyla kaydedildi.',
34 | 'name' => 'İsim',
35 | 'code' => 'Kod',
36 | 'items' => 'Menü Ögeleri',
37 | 'add_subitem' => 'Altöge ekle',
38 | 'code_required' => 'Kod gerekli',
39 | 'invalid_code' => 'Geçersiz KOD formatı. Kod yalnızca rakam, Latin harfleri ve bu sembolleri: _- içerebilir.',
40 | ],
41 | 'menuitem' => [
42 | 'title' => 'Başlık',
43 | 'editor_title' => 'Menü Ögesini Düzenle',
44 | 'type' => 'Tür',
45 | 'allow_nested_items' => 'İçiçe ögelere izin ver',
46 | 'allow_nested_items_comment' => 'İç içe öğeler statik sayfa ve bazı diğer öğe türlerine göre dinamik olarak üretilen olabilir',
47 | 'url' => 'URL',
48 | 'reference' => 'Referans',
49 | 'search_placeholder' => 'Referansları ara...',
50 | 'title_required' => 'Başlık gerekli',
51 | 'unknown_type' => 'Geçersiz menü ögesi türü',
52 | 'unnamed' => 'İsimsiz menü ögesi',
53 | 'add_item' => 'Öge Ekle',
54 | 'new_item' => 'Yeni menü ögesi',
55 | 'replace' => 'Bu ögeyi oluşturulan çocuklarıyla değiştir',
56 | 'replace_comment' => 'Use this checkbox to push generated menu items to the same level with this item. This item itself will be hidden.',
57 | 'cms_page' => 'CMS Sayfası',
58 | 'cms_page_comment' => 'Menü ögesine tıklandığında açılacak sayfayı seçin',
59 | 'reference_required' => 'Menü ögesi referansı gereklidir.',
60 | 'url_required' => 'URL gereklidir',
61 | 'cms_page_required' => 'Lütfen bir CMS sayfası seçin',
62 | 'display_tab' => 'Görünüm',
63 | 'hidden' => 'Gizli',
64 | 'hidden_comment' => 'Bu menüyü önyüzde gizle.',
65 | 'attributes_tab' => 'Öznitellikler',
66 | 'code' => 'Kod',
67 | 'code_comment' => 'API ile giriş yapabilmek için menü ögesi kodunu girin.',
68 | 'css_class' => 'CSS Class',
69 | 'css_class_comment' => 'Bu menüye özel bir görünüm vermek için bir CSS sınıfı adı girin.',
70 | 'external_link' => 'Dış link',
71 | 'external_link_comment' => 'Bu menü için bağlantıları yeni sekmede aç.',
72 | 'static_page' => 'Sayfa',
73 | 'all_static_pages' => 'Tüm sayfalar',
74 | ],
75 | 'content' => [
76 | 'menu_label' => 'İçerik',
77 | 'cant_save_to_dir' => 'Statik sayfalar dizinine içerik dosyalarını kaydetme izni verilmez.',
78 | ],
79 | 'sidebar' => [
80 | 'add' => 'Ekle',
81 | ],
82 | 'object' => [
83 | 'invalid_type' => 'Bilineyen nesne türü',
84 | 'not_found' => 'İstenen nesne bulunamadı',
85 | ],
86 | 'editor' => [
87 | 'title' => 'Başlık',
88 | 'new_title' => 'Yeni sayfa başlığı',
89 | 'content' => 'İçerik',
90 | 'url' => 'URL',
91 | 'filename' => 'Dosya Adı',
92 | 'layout' => 'Layout',
93 | 'description' => 'Tanımlama',
94 | 'preview' => 'Önizleme',
95 | 'enter_fullscreen' => 'Tam Ekran moduna geç',
96 | 'exit_fullscreen' => 'Tam Ekran modundan çık',
97 | 'hidden' => 'Gizli',
98 | 'hidden_comment' => 'Gizli sayfalar yalnızca yönetim paneline giriş yapmış kullanıcılar tarafından görüntülenebilir.',
99 | 'navigation_hidden' => 'Menüde Gizle',
100 | 'navigation_hidden_comment' => 'Otomatik olarak oluşturulan menüler ve kırıntıları gizlemek için bu kutuyu işaretleyin.',
101 | ],
102 | 'snippet' => [
103 | 'menu_label' => 'Snippetlar',
104 | ],
105 | 'component' => [
106 | 'static_page_name' => 'Sabit sayfa',
107 | 'static_page_description' => 'CMS bölümüne sabit sayfa içeriği ekler.',
108 | 'static_page_use_content_name' => 'Sayfa içeriği alanını kullan',
109 | 'static_page_use_content_description' => 'Seçilmezse, statik sayfa düzenlenirken içerik bölümü görünmez. Sayfa içeriği yalnızca placeholderlar ve değişkenler aracılığıyla belirlenir.',
110 | 'static_page_default_name' => 'Varsayılan şablon',
111 | 'static_page_default_description' => 'Bu şablonu yeni sayfalar için varsayılan olarak tanımlar.',
112 | 'static_page_child_layout_name' => 'Alt sayfa şablobu',
113 | 'static_page_child_layout_description' => 'Yeni alt sayfalar için varsayılan olarak kullanılacak şablon',
114 | 'static_menu_name' => 'Statik (sabit) menü',
115 | 'static_menu_description' => 'CMS bölümüne sabit menü içeriği ekler.',
116 | 'static_menu_code_name' => 'Menü',
117 | 'static_menu_code_description' => 'Component in göstereceği menünün kodunu belirtin.',
118 | 'static_breadcrumbs_name' => 'Sabit breadcrumbs',
119 | 'static_breadcrumbs_description' => 'Sabit sayfaya breadcrumbs ekler.',
120 | ],
121 | ];
122 |
--------------------------------------------------------------------------------
/lang/uk/lang.php:
--------------------------------------------------------------------------------
1 | [
3 | 'name' => 'Сторінки',
4 | 'description' => 'Сторінки і меню.',
5 | ],
6 | 'page' => [
7 | 'menu_label' => 'Сторінки',
8 | 'template_title' => '%s Сторінки',
9 | 'delete_confirmation' => 'Ви дійсно хочете видалити вибрані сторінки? Це також видалить наявні підсторінки.',
10 | 'no_records' => 'Сторінок не знайдено',
11 | 'delete_confirm_single' => 'Ви дійсно хочете видалити цю сторінку? Це також видалить наявні підсторінки.',
12 | 'new' => 'Нова сторінка',
13 | 'add_subpage' => 'Додати підсторінку',
14 | 'invalid_url' => 'Некоректний формат URL. URL повинен починатися з прямого слеша і може містити цифри, латинські літери і такі символи: _-/.',
15 | 'url_not_unique' => 'Цей URL вже використовується іншою сторінкою.',
16 | 'layout' => 'Шаблон',
17 | 'layouts_not_found' => 'Шаблони не знайдені',
18 | 'saved' => 'Сторінка була успішно збережена.',
19 | 'tab' => 'Сторінки',
20 | 'manage_pages' => 'Управління сторінками',
21 | 'manage_menus' => 'Управління меню',
22 | 'access_snippets' => 'Доступ до сніппетів',
23 | 'manage_content' => 'Управління змістом',
24 | ],
25 | 'menu' => [
26 | 'menu_label' => 'Меню',
27 | 'delete_confirmation' => 'Ви дійсно хочете видалити вибрані пункти меню?',
28 | 'no_records' => 'Меню не знайдені',
29 | 'new' => 'Нове меню',
30 | 'new_name' => 'Новое меню',
31 | 'new_code' => 'nove-menu',
32 | 'delete_confirm_single' => 'Ви дійсно хочете видалити це меню?',
33 | 'saved' => 'Меню було успішно збережено.',
34 | 'name' => 'Ім`я',
35 | 'code' => 'Код',
36 | 'items' => 'Пункти меню',
37 | 'add_subitem' => 'Додати підменю',
38 | 'code_required' => 'Поле Код обов\'язкове',
39 | 'invalid_code' => 'Некоректний формат Коду. Код може містити цифри, латинські літери і такі символи: _-/',
40 | ],
41 | 'menuitem' => [
42 | 'title' => 'Назва',
43 | 'editor_title' => 'Редагувати пункт меню',
44 | 'type' => 'Тип',
45 | 'allow_nested_items' => 'Дозволити вкладені',
46 | 'allow_nested_items_comment' => 'Вкладені пункти можуть бути динамічно згенеровані статичною сторінкою або іншими типами елементів',
47 | 'url' => 'URL',
48 | 'reference' => 'Посилання',
49 | 'title_required' => 'Назва обов\'язково',
50 | 'unknown_type' => 'Невідомий тип меню',
51 | 'unnamed' => 'Безіменний пункт',
52 | 'add_item' => 'Додати пункт ( i )',
53 | 'new_item' => 'Новий пункт',
54 | 'replace' => 'Замінювати цей пункт його згенеруванними нащадками',
55 | 'replace_comment' => 'Відмітьте для перенесення згенерованних пунктів меню на один рівень з цим пунктом. Сам цей пункт буде приховано.',
56 | 'cms_page' => 'Сторінки CMS',
57 | 'cms_page_comment' => 'Оберіть відкриваючу при натисканні сторінку.',
58 | 'reference_required' => 'Необхідне посилання для пункту меню.',
59 | 'url_required' => 'Необхідний URL',
60 | 'cms_page_required' => 'Будь ласка, виберіть сторінку CMS',
61 | 'code' => 'Код',
62 | 'code_comment' => 'Введіть код пункту меню, якщо хочете мати до нього доступ через API.',
63 | ],
64 | 'content' => [
65 | 'menu_label' => 'Зміст',
66 | 'cant_save_to_dir' => 'Збереження файлів змісту в директорію static-pages заборонено.',
67 | ],
68 | 'sidebar' => [
69 | 'Add' => 'Додати',
70 | ],
71 | 'object' => [
72 | 'invalid_type' => 'Невідомий тип об\'єкту',
73 | 'not_found' => 'Запитуваний об\'єкт не знайдено.',
74 | ],
75 | 'editor' => [
76 | 'title' => 'Назва',
77 | 'new_title' => 'Назва нової сторінки',
78 | 'content' => 'Зміст',
79 | 'url' => 'URL',
80 | 'filename' => 'Ім\'я файлу',
81 | 'layout' => 'Шаблон',
82 | 'description' => 'Опис',
83 | 'preview' => 'Попередній огляд',
84 | 'enter_fullscreen' => 'Увійти в повноекранний режим',
85 | 'exit_fullscreen' => 'Вийти з повноекранного режиму',
86 | 'hidden' => 'Прихований',
87 | 'hidden_comment' => 'Приховані сторінки доступні тільки увійшовшим адміністраторам.',
88 | 'navigation_hidden' => 'Сховати в навігації',
89 | 'navigation_hidden_comment' => 'Відмітьте, щоб приховати цю сторінку в генеруючих меню і хлібних крихтах.',
90 | ],
91 | 'snippet' => [
92 | 'menu_label' => 'Сніппети',
93 | ],
94 | 'component' => [
95 | 'static_page_description' => 'Виводити сторінку в CMS шаблоні.',
96 | 'static_menu_description' => 'Виводити меню в CMS шаблоні.',
97 | 'static_menu_menu_code' => 'Вкажіть код меню, яке повинно бути показано',
98 | 'static_breadcrumbs_description' => 'Виводити хлібні крихти для сторінки.',
99 | ],
100 | ];
101 |
--------------------------------------------------------------------------------
/lang/zh-cn/lang.php:
--------------------------------------------------------------------------------
1 | [
3 | 'name' => '页面',
4 | 'description' => '页面和菜单功能拓展',
5 | ],
6 | 'page' => [
7 | 'menu_label' => '页面',
8 | 'template_title' => '%s 页面',
9 | 'delete_confirmation' => '你真的要删除所选页面吗? 如果有子页面,也将被删除。',
10 | 'no_records' => '找不到页面',
11 | 'delete_confirm_single' => '你真的要删除这个页面吗? 如果有子页面,也将被删除。',
12 | 'new' => '新建',
13 | 'add_subpage' => '插入子页面',
14 | 'invalid_url' => 'URL 格式无效,应以 \'/\' 开头,可以包含数字,字母和以下符号:_-/',
15 | 'url_not_unique' => 'URL 已存在',
16 | 'layout' => '布局',
17 | 'layouts_not_found' => '找不到布局文件',
18 | 'saved' => '保存成功!',
19 | 'tab' => '页面',
20 | 'manage_pages' => '管理静态页面',
21 | 'manage_menus' => '管理静态菜单',
22 | 'access_snippets' => '代码片段',
23 | 'manage_content' => '管理静态内容',
24 | ],
25 | 'menu' => [
26 | 'menu_label' => '菜单',
27 | 'delete_confirmation' => '你真的要删除所选菜单吗?',
28 | 'no_records' => '找不到菜单',
29 | 'new' => '新建',
30 | 'new_name' => '未命名的菜单',
31 | 'new_code' => 'new-menu',
32 | 'delete_confirm_single' => '你真的要删除这个菜单吗?',
33 | 'saved' => '保存成功!',
34 | 'name' => '名称',
35 | 'code' => '编码',
36 | 'items' => '菜单项',
37 | 'add_subitem' => '插入子项',
38 | 'code_required' => '编码是必要的!',
39 | 'invalid_code' => '编码格式无效,该编码可以包含数字,字母和以下符号:_-',
40 | ],
41 | 'menuitem' => [
42 | 'title' => '标题',
43 | 'editor_title' => '编辑菜单项',
44 | 'type' => '类型',
45 | 'allow_nested_items' => '允许嵌套',
46 | 'allow_nested_items_comment' => '嵌套项目可以通过静态页面和其他一些项目类型动态生成',
47 | 'url' => 'URL',
48 | 'reference' => '参考',
49 | 'search_placeholder' => '搜索所有参考...',
50 | 'title_required' => '标题是必需的',
51 | 'unknown_type' => '未知的菜单项类型',
52 | 'unnamed' => '未命名的菜单项',
53 | 'add_item' => '掺入菜单项I',
54 | 'new_item' => '新菜单项',
55 | 'replace' => '将此项目替换为生成的子项',
56 | 'replace_comment' => '使用此复选框产生的菜单项推到与本项目同一层级。 该项目本身将被隐藏。',
57 | 'cms_page' => 'CMS 页面',
58 | 'cms_page_comment' => '当单击菜单项时,选择要打开的页面。',
59 | 'reference_required' => '菜单项参考 是必需的。',
60 | 'url_required' => 'URL 是必需的。',
61 | 'cms_page_required' => '请选择 CMS 页面',
62 | 'code' => '编码',
63 | 'code_comment' => '如果要使用 API 访问菜单项代码,请输入。',
64 | 'static_page' => '静态页面',
65 | 'all_static_pages' => '所有静态页',
66 | ],
67 | 'content' => [
68 | 'menu_label' => '内容',
69 | 'cant_save_to_dir' => '将内容文件保存到 \'static-pages\' 目录是不允许的。',
70 | ],
71 | 'sidebar' => [
72 | 'add' => '插入',
73 | ],
74 | 'object' => [
75 | 'invalid_type' => '未知的对象类型',
76 | 'not_found' => '找不到请求的对象。',
77 | ],
78 | 'editor' => [
79 | 'title' => '标题',
80 | 'new_title' => '未命名',
81 | 'content' => '内容',
82 | 'url' => 'URL',
83 | 'filename' => '文件名',
84 | 'layout' => '布局',
85 | 'description' => '描述',
86 | 'preview' => '预览',
87 | 'enter_fullscreen' => '全屏编辑',
88 | 'exit_fullscreen' => '退出全屏',
89 | 'hidden' => '隐藏',
90 | 'hidden_comment' => '隐藏的页面只能由登录的后台用户访问。',
91 | 'navigation_hidden' => '在导航中隐藏',
92 | 'navigation_hidden_comment' => '选中此框可将该页面在自动生成的菜单和面包屑导航中隐藏起来。',
93 | ],
94 | 'snippet' => [
95 | 'menu_label' => '代码片段',
96 | ],
97 | 'component' => [
98 | 'static_page_name' => '静态页',
99 | 'static_page_description' => '在 CMS 布局中输出静态页。',
100 | 'static_page_use_content_name' => '使用页面内容字段',
101 | 'static_page_use_content_description' => '如果未选中,编辑静态页面时内容部分将不会出现。 页面内容将仅通过占位符和变量来确定。',
102 | 'static_page_default_name' => '默认布局',
103 | 'static_page_default_description' => '将此布局定义为新页面的默认设置',
104 | 'static_page_child_layout_name' => '子页面布局',
105 | 'static_page_child_layout_description' => '该布局用作任何新子页面的默认布局',
106 | 'static_menu_name' => '静态菜单',
107 | 'static_menu_description' => '输出 CMS 布局中的菜单。',
108 | 'static_menu_code_name' => '菜单',
109 | 'static_menu_code_description' => '指定组件应输出的菜单代码。',
110 | 'static_breadcrumbs_name' => '静态面包屑导航',
111 | 'static_breadcrumbs_description' => '输出静态页面的面包屑导航。',
112 | ],
113 | ];
114 |
--------------------------------------------------------------------------------
/rainlab-pages.mix.js:
--------------------------------------------------------------------------------
1 | /*
2 | |--------------------------------------------------------------------------
3 | | Mix Asset Management
4 | |--------------------------------------------------------------------------
5 | |
6 | | Mix provides a clean, fluent API for defining some Webpack build steps
7 | | for your theme assets. By default, we are compiling the CSS
8 | | file for the application as well as bundling up all the JS files.
9 | |
10 | */
11 |
12 | module.exports = (mix) => {
13 | mix.less('plugins/rainlab/pages/assets/less/pages.less', 'plugins/rainlab/pages/assets/css/');
14 | mix.less('plugins/rainlab/pages/assets/less/treeview.less', 'plugins/rainlab/pages/assets/css/');
15 | }
16 |
--------------------------------------------------------------------------------
/updates/version.yaml:
--------------------------------------------------------------------------------
1 | v1.0.1: Implemented the static pages management and the Static Page component.
2 | v1.0.2: Fixed the page preview URL.
3 | v1.0.3: Implemented menus.
4 | v1.0.4: Implemented the content block management and placeholder support.
5 | v1.0.5: Added support for the Sitemap plugin.
6 | v1.0.6: Minor updates to the internal API.
7 | v1.0.7: Added the Snippets feature.
8 | v1.0.8: Minor improvements to the code.
9 | v1.0.9: Fixes issue where Snippet tab is missing from the Partials form.
10 | v1.0.10: Add translations for various locales.
11 | v1.0.11: Fixes issue where placeholders tabs were missing from Page form.
12 | v1.0.12: Implement Media Manager support.
13 | v1.1.0: Adds meta title and description to pages. Adds |staticPage filter.
14 | v1.1.1: Add support for Syntax Fields.
15 | v1.1.2: Static Breadcrumbs component now respects the hide from navigation setting.
16 | v1.1.3: Minor back-end styling fix.
17 | v1.1.4: Minor fix to the StaticPage component API.
18 | v1.1.5: Fixes bug when using syntax fields.
19 | v1.1.6: Minor styling fix to the back-end UI.
20 | v1.1.7: Improved menu item form to include CSS class, open in a new window and hidden flag.
21 | v1.1.8: Improved the output of snippet partials when saved.
22 | v1.1.9: Minor update to snippet inspector internal API.
23 | v1.1.10: Fixes a bug where selecting a layout causes permanent unsaved changes.
24 | v1.1.11: Add support for repeater syntax field.
25 | v1.2.0: Added support for translations, UI updates.
26 | v1.2.1: Use nice titles when listing the content files.
27 | v1.2.2: Minor styling update.
28 | v1.2.3: Snippets can now be moved by dragging them.
29 | v1.2.4: Fixes a bug where the cursor is misplaced when editing text files.
30 | v1.2.5: Fixes a bug where the parent page is lost upon changing a page layout.
31 | v1.2.6: Shared view variables are now passed to static pages.
32 | v1.2.7: Fixes issue with duplicating properties when adding multiple snippets on the same page.
33 | v1.2.8: Fixes a bug where creating a content block without extension doesn't save the contents to file.
34 | v1.2.9: Add conditional support for translating page URLs.
35 | v1.2.10: Streamline generation of URLs to use the new Cms::url helper.
36 | v1.2.11: Implements repeater usage with translate plugin.
37 | v1.2.12: Fixes minor issue when using snippets and switching the application locale.
38 | v1.2.13: Fixes bug when AJAX is used on a page that does not yet exist.
39 | v1.2.14: Add theme logging support for changes made to menus.
40 | v1.2.15: Back-end navigation sort order updated.
41 | v1.2.16: Fixes a bug when saving a template that has been modified outside of the CMS (mtime mismatch).
42 | v1.2.17: Changes locations of custom fields to secondary tabs instead of the primary Settings area. New menu search ability on adding menu items
43 | v1.2.18: Fixes cache-invalidation issues when RainLab.Translate is not installed. Added Greek & Simplified Chinese translations. Removed deprecated calls. Allowed saving HTML in snippet properties. Added support for the MediaFinder in menu items.
44 | v1.2.19: Catch exception with corrupted menu file.
45 | v1.2.20: StaticMenu component now exposes menuName property; added pages.menu.referencesGenerated event.
46 | v1.2.21: Fixes a bug where last Static Menu item cannot be deleted. Improved Persian, Slovak and Turkish translations.
47 | v1.3.0: Added support for using Database-driven Themes when enabled in the CMS configuration.
48 | v1.3.1: Added ChildPages Component, prevent hidden pages from being returned via menu item resolver.
49 | v1.3.2: Fixes error when creating a subpage whose parent has no layout set.
50 | v1.3.3: Improves user experience for users with only partial access through permissions
51 | v1.3.4: Fix error where large menus were being truncated due to the PHP "max_input_vars" configuration value. Improved Slovenian translation.
52 | v1.3.5: Minor fix to bust the browser cache for JS assets. Prevent duplicate property fields in snippet inspector.
53 | v1.3.6: ChildPages component now displays localized page titles from Translate plugin.
54 | v1.3.7: Adds MenuPicker formwidget. Adds future support for v2.0 of October CMS.
55 | v1.4.0: Fixes bug when adding menu items in October CMS v2.0.
56 | v1.4.1: Fixes support for configuration values.
57 | v1.4.3: Fixes page deletion is newer platform builds.
58 | v1.4.4: Disable touch device detection
59 | v1.4.5: Minor styling improvements
60 | v1.4.6: Minor styling improvements
61 | v1.4.7: Minor layout fix in the Page editor
62 | v1.4.8: Fixes rich editor usage inside repeaters. Adds getProcessedMarkup event.
63 | v1.4.9: Fixes a lifecycle issue when switching the page layout.
64 | v1.4.10: Fixes maintenance mode when using static pages.
65 | v1.4.11: Adds type hidden to content placeholders.
66 | v1.4.12: Improve support with October v2.2
67 | v1.5.0: Improve support with October v3.0
68 | v1.5.4: Compatibility updates
69 | v1.5.5: Fixes media finder added to menu in October v2
70 | v1.5.6: Fixes concurrency save form in October v3
71 | v1.5.7: Adds page finder support for October v3.2
72 | v1.5.8: Fixes resolving links used in static pages
73 | v1.5.9: Fixes fancy layout with nested forms
74 | v1.5.10: Adds forward compatibility with October CMS v3.4
75 | v1.5.12: Fixes more areas of forward compatibility
76 | v2.0.1: Compatibility with core snippets
77 | v2.0.2: Fixes bug opening menu with tailor list menu items
78 | v2.0.3: Fixes bug showing wrong placeholder code
79 | v2.0.4: Fixes sidebar delete button in October v3.5
80 | v2.0.5: Compatibility fixes for October v3.6
81 | v2.1.0: Tabs are now stored and reopened on page load
82 | v2.1.1: Fixes index page spamming event log
83 | v2.1.2: Fixes clearing cache
84 | v2.1.3: Compatibility fixes for October v3.7
85 | v2.2.0: Adds sort configuration to page list
86 |
--------------------------------------------------------------------------------
/widgets/MenuList.php:
--------------------------------------------------------------------------------
1 | alias = $alias;
38 | $this->theme = Theme::getEditTheme();
39 | $this->dataIdPrefix = 'page-'.$this->theme->getDirName();
40 |
41 | parent::__construct($controller, []);
42 | $this->bindToController();
43 | }
44 |
45 | /**
46 | * Renders the widget.
47 | * @return string
48 | */
49 | public function render()
50 | {
51 | return $this->makePartial('body', [
52 | 'data' => $this->getData()
53 | ]);
54 | }
55 |
56 | //
57 | // Event handlers
58 | //
59 |
60 | public function onUpdate()
61 | {
62 | $this->extendSelection();
63 |
64 | return $this->updateList();
65 | }
66 |
67 | public function onSearch()
68 | {
69 | $this->setSearchTerm(Input::get('search'));
70 | $this->extendSelection();
71 |
72 | return $this->updateList();
73 | }
74 |
75 | //
76 | // Methods for the internal use
77 | //
78 |
79 | protected function getData()
80 | {
81 | $menus = Menu::listInTheme($this->theme, true);
82 |
83 | $searchTerm = Str::lower($this->getSearchTerm());
84 |
85 | if (strlen($searchTerm)) {
86 | $words = explode(' ', $searchTerm);
87 | $filteredMenus = [];
88 |
89 | foreach ($menus as $menu) {
90 | if ($this->textMatchesSearch($words, $menu->name.' '.$menu->fileName)) {
91 | $filteredMenus[] = $menu;
92 | }
93 | }
94 |
95 | $menus = $filteredMenus;
96 | }
97 |
98 | if ($sortMenusBy = Config::get('rainlab.pages::menus_sort_by', false)) {
99 | return $menus->sortBy($sortMenusBy);
100 | }
101 |
102 | return $menus;
103 | }
104 |
105 | protected function updateList()
106 | {
107 | $vars = ['items' => $this->getData()];
108 | return ['#'.$this->getId('menu-list') => $this->makePartial('items', $vars)];
109 | }
110 |
111 | protected function getThemeSessionKey($prefix)
112 | {
113 | return $prefix . $this->theme->getDirName();
114 | }
115 |
116 | protected function getSession($key = null, $default = null)
117 | {
118 | $key = strlen($key) ? $this->getThemeSessionKey($key) : $key;
119 |
120 | return parent::getSession($key, $default);
121 | }
122 |
123 | protected function putSession($key, $value)
124 | {
125 | return parent::putSession($this->getThemeSessionKey($key), $value);
126 | }
127 | }
128 |
--------------------------------------------------------------------------------
/widgets/PageList.php:
--------------------------------------------------------------------------------
1 | alias = $alias;
38 | $this->theme = Theme::getEditTheme();
39 | $this->dataIdPrefix = 'page-'.$this->theme->getDirName();
40 |
41 | parent::__construct($controller, []);
42 | $this->bindToController();
43 | }
44 |
45 | /**
46 | * Renders the widget.
47 | * @return string
48 | */
49 | public function render()
50 | {
51 | return $this->makePartial('body', [
52 | 'data' => $this->getData()
53 | ]);
54 | }
55 |
56 | /*
57 | * Event handlers
58 | */
59 |
60 | public function onReorder()
61 | {
62 | $structure = json_decode(Input::get('structure'), true);
63 | if (!$structure) {
64 | throw new SystemException('Invalid structure data posted.');
65 | }
66 |
67 | $pageList = new StaticPageList($this->theme);
68 | $pageList->updateStructure($structure);
69 | }
70 |
71 | public function onUpdate()
72 | {
73 | $this->extendSelection();
74 |
75 | return $this->updateList();
76 | }
77 |
78 | public function onSearch()
79 | {
80 | $this->setSearchTerm(Input::get('search'));
81 | $this->extendSelection();
82 |
83 | return $this->updateList();
84 | }
85 |
86 | /*
87 | * Methods for internal use
88 | */
89 |
90 | protected function getData()
91 | {
92 | $pageList = new StaticPageList($this->theme);
93 | $pages = $pageList->getPageTree(true);
94 |
95 | $searchTerm = Str::lower($this->getSearchTerm());
96 |
97 | if (strlen($searchTerm)) {
98 | $words = explode(' ', $searchTerm);
99 |
100 | $iterator = function($pages) use (&$iterator, $words) {
101 | $result = [];
102 |
103 | foreach ($pages as $page) {
104 | if ($this->textMatchesSearch($words, $this->subtreeToText($page))) {
105 | $result[] = (object) [
106 | 'page' => $page->page,
107 | 'subpages' => $iterator($page->subpages)
108 | ];
109 | }
110 | }
111 |
112 | return $result;
113 | };
114 |
115 | $pages = $iterator($pages);
116 | }
117 |
118 | return $pages;
119 | }
120 |
121 | protected function getThemeSessionKey($prefix)
122 | {
123 | return $prefix.$this->theme->getDirName();
124 | }
125 |
126 | protected function updateList()
127 | {
128 | return ['#'.$this->getId('page-list') => $this->makePartial('items', ['items' => $this->getData()])];
129 | }
130 |
131 | protected function subtreeToText($page)
132 | {
133 | $result = $this->pageToText($page->page);
134 |
135 | $iterator = function($pages) use (&$iterator, &$result) {
136 | foreach ($pages as $page) {
137 | $result .= ' '.$this->pageToText($page->page);
138 | $iterator($page->subpages);
139 | }
140 | };
141 |
142 | $iterator($page->subpages);
143 |
144 | return $result;
145 | }
146 |
147 | protected function pageToText($page)
148 | {
149 | $viewBag = $page->getViewBag();
150 |
151 | return $page->getViewBag()->property('title').' '.$page->getViewBag()->property('url');
152 | }
153 |
154 | protected function getSession($key = null, $default = null)
155 | {
156 | $key = strlen($key) ? $this->getThemeSessionKey($key) : $key;
157 |
158 | return parent::getSession($key, $default);
159 | }
160 |
161 | protected function putSession($key, $value)
162 | {
163 | return parent::putSession($this->getThemeSessionKey($key), $value);
164 | }
165 | }
166 |
--------------------------------------------------------------------------------
/widgets/menulist/partials/_body.htm:
--------------------------------------------------------------------------------
1 |
2 | = $this->makePartial('toolbar') ?>
3 |
4 |
5 |
6 |
7 | = $this->makePartial('menus', ['data' => $data]) ?>
8 |
9 |
10 |
--------------------------------------------------------------------------------
/widgets/menulist/partials/_items.htm:
--------------------------------------------------------------------------------
1 |
2 |
33 |
34 | = e(trans($this->noRecordsMessage)) ?>
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/widgets/menulist/partials/_menus.htm:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/widgets/menulist/partials/_toolbar.htm:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/widgets/pagelist/partials/_body.htm:
--------------------------------------------------------------------------------
1 |
2 | = $this->makePartial('toolbar') ?>
3 |
4 |
5 |
6 |
7 | = $this->makePartial('pages', ['data' => $data]) ?>
8 |
9 |
10 |
--------------------------------------------------------------------------------
/widgets/pagelist/partials/_items.htm:
--------------------------------------------------------------------------------
1 |
2 |
3 | = $this->makePartial('treebranch', ['items' => $items]) ?>
4 |
5 |
6 | = trans($this->noRecordsMessage) ?>
7 |
8 |
9 |
--------------------------------------------------------------------------------
/widgets/pagelist/partials/_pages.htm:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/widgets/pagelist/partials/_toolbar.htm:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/widgets/pagelist/partials/_treebranch.htm:
--------------------------------------------------------------------------------
1 |
2 | page->getBaseFileName();
4 | $groupStatus = $this->getCollapseStatus($fileName);
5 | $dataId = $this->dataIdPrefix.'-'.$fileName;
6 | $searchMode = strlen($this->getSearchTerm()) > 0;
7 | $cbId = 'cb'.md5($fileName);
8 |
9 | $pageTitle = $pageObj->page->getViewBag()->property('title');
10 | $pageUrl = $pageObj->page->getViewBag()->property('url');
11 |
12 | if (class_exists('\RainLab\Translate\Behaviors\TranslatableModel')) {
13 | $locale = \RainLab\Translate\Classes\Translator::instance()->getLocale();
14 | $pageTitle = isset($pageObj->page->viewBag['title']) ? $pageObj->page->viewBag['title'] : $pageTitle;
15 | $pageUrl = isset($pageObj->page->getViewBag()->property('localeUrl')[$locale]) ? $pageObj->page->getViewBag()->property('localeUrl')[$locale] : $pageUrl;
16 | }
17 |
18 | ?>
19 | data-no-drag-mode
25 | data-id="= e($dataId) ?>"
26 | >
27 |
28 |
29 | = e($pageTitle) ?>
30 |
31 |
32 |
33 |
34 |
35 | isItemSelected($fileName) ? 'checked' : null ?>
40 | data-request="= $this->getEventHandler('onSelect') ?>"
41 | value="1">
42 |
43 |
44 |
45 |
57 |
58 |
59 |
60 | subpages): ?>
61 | = $this->makePartial('treebranch', ['items' => $subpages]) ?>
62 |
63 |
64 |
65 |
66 |
--------------------------------------------------------------------------------
/widgets/templatelist/partials/_body.htm:
--------------------------------------------------------------------------------
1 | = $this->makePartial('toolbar') ?>
2 |
3 |
4 |
5 | = $this->makePartial('templates', ['data' => $data]) ?>
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/widgets/templatelist/partials/_items.htm:
--------------------------------------------------------------------------------
1 |
2 |
53 |
54 | = e(trans($this->noRecordsMessage)) ?>
55 |
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/widgets/templatelist/partials/_sorting-options.htm:
--------------------------------------------------------------------------------
1 | sortingProperties as $propertyName=>$propertyTitle): ?>
2 | getSortingProperty() == $propertyName): ?>class="active">
3 |
4 | = e(trans($propertyTitle)) ?>
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/widgets/templatelist/partials/_templates.htm:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/widgets/templatelist/partials/_toolbar.htm:
--------------------------------------------------------------------------------
1 |
52 |
--------------------------------------------------------------------------------