1
0
mirror of https://github.com/monstra-cms/monstra.git synced 2025-08-02 19:27:52 +02:00

648 Commits

Author SHA1 Message Date
Awilum
2dd6faceed Merge branch 'dev' 2014-08-01 18:06:25 +04:00
Awilum
ac8ba8a6dc Monstra 3.0.0 2014-08-01 18:03:17 +04:00
Sergey Romanenko
19e0e36eec Markdown plugin filter disabled for site content by default 2014-08-01 09:19:46 +04:00
Sergey Romanenko
009e32e635 Blog Plugin - Pager Issue #326 2014-07-31 14:25:53 +04:00
Sergey Romanenko
7ff4ff29d9 Blog Plugin: fix for notice 2014-07-31 14:22:56 +04:00
Sergey Romanenko
31b103d9d3 Update default.css 2014-07-27 23:13:48 +04:00
Awilum
6b7f1fce17 MinifyCSS line 114 commented for now 2014-07-26 23:08:24 +04:00
Awilum
a4af90a72e Fix Users Frontend Registration 2014-07-26 14:45:05 +04:00
Awilum
eaccc1056d Repository Fix 2014-07-26 14:33:40 +04:00
Awilum
728f6509a6 Missing Translates added 2014-07-26 14:32:07 +04:00
Awilum
169803c85a FilesManager: fix translates 2014-07-26 12:25:28 +04:00
Awilum
3fddfa8d06 Layoyt Fixes 2014-07-26 12:21:07 +04:00
Awilum
5d696d9a47 Fix for Frontend User Reset Password page 2014-07-26 11:58:11 +04:00
Awilum
1c43b78d71 Fix for Frontend User Auth page 2014-07-26 11:52:07 +04:00
Awilum
d58e1c2f92 Monstra 3.0.0 will be! 2014-07-26 01:20:03 +04:00
Awilum
ab471b9555 UI Defect: Filesmanager Index View looks broken on iPhone #321 #320 2014-07-26 01:16:13 +04:00
Awilum
9f5516233d UI Defect: Pages Index View looks broken for portrait view on iPhone #319 2014-07-26 01:07:59 +04:00
Awilum
f8fa3f966b UI Defect: Plugins View looks broken for on iPhone #322 2014-07-26 01:05:56 +04:00
Awilum
7c548aa5b4 UI Defect: Backups View looks broken for portrait view on iPhone #323 2014-07-26 01:02:36 +04:00
Awilum
3592d3342a UI Defect: Information View looks broken for portrait view on iPhone #324 2014-07-26 00:59:02 +04:00
Awilum
4743f4e6e1 UI Defect: Navigation looks broken for portrait view on IPAD #318 2014-07-21 23:52:03 +04:00
Sergey Romanenko
55324b20a0 Update CHANGELOG.md 2014-07-21 23:02:01 +04:00
Sergey Romanenko
c11ee609bc Merge pull request #315 from ravilrrr/patch-6
FIX breadcrumbs only pages
2014-06-22 11:32:26 +04:00
Sergey Romanenko
43655828c9 Update layout.email.php 2014-06-19 13:31:23 +04:00
Sergey Romanenko
19afcbd9e8 Update layout.email.php 2014-06-19 11:53:22 +04:00
Sergey Romanenko
2643a33820 Merge pull request #317 from ravilrrr/patch-1
add robots
2014-06-18 22:26:23 +04:00
ravilrrr
4fb4de67d4 add robots
добавил список роботов для России и не только
2014-06-18 16:45:50 +04:00
Sergey Romanenko
b9d3292899 Merge pull request #316 from ravilrrr/dev
Ссылка на русскоязычный форум при русском языке в настройках.
2014-06-18 00:55:55 +04:00
ravilrrr
3470c28c03 Ссылка на русскоязычный форум при русском языке в настройках. 2014-06-18 00:02:11 +04:00
ravilrrr
3e7f381fc0 Update pages.plugin.php 2014-06-17 15:19:39 +04:00
Sergey Romanenko
392d8c253f Merge pull request #314 from ravilrrr/patch-4
Update registration.view.php vs Captcha
2014-06-16 21:53:28 +04:00
ravilrrr
c7133368d1 Update registration.view.php
Если не включена каптча, то кнопка Регистрация смещается т.к остается тег div
2014-06-15 19:11:31 +04:00
Sergey Romanenko
c5534d26ad Update codemirror.plugin.php 2014-06-05 14:30:04 +04:00
Sergey Romanenko
17569174aa Pages Shortcode issue #308 2014-06-04 09:56:33 +04:00
Sergey Romanenko
90057e13d0 Merge pull request #308 from ravilrrr/patch-1
Update pages.plugin.php
2014-06-04 09:53:06 +04:00
Sergey Romanenko
5abc71089e Merge pull request #310 from ravilrrr/patch-2
Update Html.php
2014-06-03 06:59:31 +04:00
ravilrrr
a078ba2ad1 Update Html.php 2014-05-31 18:19:07 +00:00
ravilrrr
5bbb9a7871 Update pages.plugin.php 2014-05-30 17:30:33 +03:00
Sergey Romanenko
ad5d92bbff Merge pull request #307 from archi-mobile/patch-5
Update login.template.php
2014-05-28 14:41:36 +03:00
archi-mobile
00f4c551a1 Update login.template.php 2014-05-28 01:35:47 -07:00
Sergey Romanenko
1d2c4cd068 Merge pull request #303 from archi-mobile/patch-1
Update header.chunk.php
2014-05-28 10:56:33 +03:00
Sergey Romanenko
0414e887e1 Merge pull request #300 from ravilrrr/dev
Fix plugin Codemirror
2014-05-28 10:54:28 +03:00
Sergey Romanenko
49347e80b6 Merge pull request #305 from archi-mobile/patch-3
Update index.view.php
2014-05-28 10:50:27 +03:00
Sergey Romanenko
1bb101edef Merge pull request #304 from archi-mobile/patch-2
Update ru.lang.php
2014-05-28 10:49:51 +03:00
archi-mobile
918f0470e0 Update index.view.php 2014-05-28 00:46:42 -07:00
archi-mobile
aaae5c723f Update ru.lang.php 2014-05-28 00:42:50 -07:00
archi-mobile
ed9490042d Update header.chunk.php 2014-05-28 00:36:42 -07:00
Sergey Romanenko
1ef144ba21 Merge pull request #299 from Kibele/dev
Update tr.lang.php files in plugins
2014-05-28 07:45:05 +03:00
ravilrrr
970ce69cfa Update codemirror.plugin.php 2014-05-27 19:39:14 +03:00
ravilrrr
33eedc9481 1.Изменил тему по умолчанию на более удобную/красивую
2.FIX Добавил правильную подсветку html и php в сниппетах и темах
3.Добавил подсветку в CSS файлах
4.Скорректировал шрифт
2014-05-27 19:24:21 +03:00
Ali Galip Çamlı
5bf01e01ca Update tr.lang.php in box/dashboard plugin
Merhaba...
2014-05-24 18:17:17 +03:00
Ali Galip Çamlı
8c66bac570 Update tr.lang.php in box/filesmanager plugin
'Maximum upload file size: :upload_max_filesize'
2014-05-24 18:14:06 +03:00
Ali Galip Çamlı
cd6cd24ed2 Update en.lang.php in box/filesmanager plugin
'Maximum upload file size: :upload_max_filesize'
2014-05-24 18:13:06 +03:00
Ali Galip Çamlı
d293b649b8 Update tr.lang.php in box/filesmanager plugin
'Drop File Here' is missed.
2014-05-24 18:11:13 +03:00
Ali Galip Çamlı
a27564c317 Update en.lang.php in box/filesmanager plugin
'Drop File Here' is missed.
2014-05-24 18:10:18 +03:00
Ali Galip Çamlı
c713cf40d2 Update tr.lang.php in box/filesmanager plugin
'Directory:' and 'File:' are missed.
2014-05-24 18:08:19 +03:00
Ali Galip Çamlı
abdde2411a Update en.lang.php in box/filesmanager plugin
'File:' and 'Directory:' are missed.
2014-05-24 18:07:18 +03:00
Ali Galip Çamlı
d9ee6c89d9 Update tr.lang.php in box/filesmanager plugin
'Rename' is missed.
2014-05-24 18:05:04 +03:00
Ali Galip Çamlı
f871958e51 Update en.lang.php in box/filesmanager plugin
'Rename' is missed.
2014-05-24 18:04:20 +03:00
Ali Galip Çamlı
552c84c7b2 Update tr.lang.php in box/filesmanager plugin
Some missed entries...
2014-05-24 18:02:11 +03:00
Ali Galip Çamlı
b9408b3522 Update en.lang.php in box/filesmanager plugin
Some missed entries...
2014-05-24 17:59:25 +03:00
Ali Galip Çamlı
c4895264de Update tr.lang.php in box/filesmanager plugin
'Select file' is missed.
2014-05-24 17:46:11 +03:00
Ali Galip Çamlı
3834f931d9 Update tr.lang.php in box/themes plugin
'Site Theme' is missed.
2014-05-24 17:44:06 +03:00
Ali Galip Çamlı
dba81f723e Update tr.lang.php in box/themes plugin
'Cancel' is missed.
2014-05-24 17:42:01 +03:00
Ali Galip Çamlı
c2e00b3f81 Update en.lang.php in box/themes plugin
'Cancel' is missed.
2014-05-24 17:41:18 +03:00
Ali Galip Çamlı
7a89ba8a9b Update tr.lang.php in box/backup plugin
Some missed entries...
2014-05-24 17:37:27 +03:00
Ali Galip Çamlı
45f6c4952e Update en.lang.php in box/backup plugin
Some missed entries...
2014-05-24 17:34:28 +03:00
Ali Galip Çamlı
b758b6e503 Update tr.lang.php in box/backup plugin
'Restore' is missed.
2014-05-24 17:30:14 +03:00
Ali Galip Çamlı
2b3bbd247b Update en.lang.php in box/backup plugin
'Restore' is missed.
2014-05-24 17:28:59 +03:00
Ali Galip Çamlı
3c79bc2a45 Update tr.lang.php in box/filesmanager plugin
"Cancel" and "Create" are missed.
2014-05-24 13:09:24 +03:00
Ali Galip Çamlı
29d11febfd Update tr.lang.php in box/filesmanager plugin
"Directory Name" is missed.
2014-05-24 13:06:37 +03:00
Ali Galip Çamlı
33d8024866 Update tr.lang.php in box/menu plugin
'Cancel' is missed.
2014-05-24 13:03:41 +03:00
Ali Galip Çamlı
9e92cc5372 Update tr.lang.php in box/snippets plugin
'Cancel' is missed.
2014-05-24 13:01:56 +03:00
Ali Galip Çamlı
cc3ca4476f Update tr.lang.php in box/pages plugin
Minor changes...
2014-05-24 13:00:22 +03:00
Ali Galip Çamlı
7dc755db99 Update tr.lang.php in box/pages plugin
'Name (slug)' => 'Ad (makine adı)', // check whether in use or not
'Slug (url)' is missed.
2014-05-24 12:58:38 +03:00
Ali Galip Çamlı
bacfb156f4 Update en.lang.php in box/pages plugin
'Name (slug)' => 'Name (slug)', // check whether in use or not
'Slug (url)' is missed
2014-05-24 12:56:46 +03:00
Ali Galip Çamlı
d469da3b2d Update tr.lang.php in box/pages plugin
'Cancel' is missed.
2014-05-24 12:53:18 +03:00
Ali Galip Çamlı
de90f501b6 Update en.lang.php in box/pages plugin
'Tags' is missed.
2014-05-24 12:51:39 +03:00
Ali Galip Çamlı
11ec340a15 Update tr.lang.php in box/pages plugin
'Tags' is missed.
2014-05-24 12:50:23 +03:00
Ali Galip Çamlı
5c8b3a2da1 Update tr.lang.php in box/information plugin 2014-05-24 12:46:19 +03:00
Ali Galip Çamlı
4eaa1165b0 Update tr.lang.php in box/blocks plugin 2014-05-24 12:36:53 +03:00
Ali Galip Çamlı
0285dabee3 Update edit.view.php in box/emails plugin
The word here is in no more blocks plugin, it is in emails plugin now.
2014-05-24 12:36:00 +03:00
Ali Galip Çamlı
a8000d167d Update tr.lang.php in box/backup plugin 2014-05-24 12:31:28 +03:00
Ali Galip Çamlı
2a35099a83 Update en.lang.php in box/backup plugin
'Backup' is missed.
2014-05-24 12:30:42 +03:00
Ali Galip Çamlı
fcf349d0a1 Update tr.lang.php in box/users plugin 2014-05-24 12:27:56 +03:00
Ali Galip Çamlı
44f1fd2e0a Update en.lang.php in box/users plugin 2014-05-24 12:22:49 +03:00
Ali Galip Çamlı
acb88579c8 Update tr.lang.php in box/users plugin
'Register New user' does not match 'Register New User'. "u" in "user" should be capitalized.
2014-05-24 12:21:54 +03:00
Ali Galip Çamlı
e18c4912b5 Update tr.lang.php in box/filesmanager plugin
"Create New Directory" entry...
2014-05-24 11:39:17 +03:00
Ali Galip Çamlı
b7ce4670ec Update tr.lang.php in box/system plugin
"Aç" instead of "Açık". It should be a verb as in "Open Maintenance Mode" for saying "Maintenance Mode On".
2014-05-24 11:25:45 +03:00
Ali Galip Çamlı
ff18aba1b5 Create tr.lang.php in sandbox plugin 2014-05-24 11:00:40 +03:00
Ali Galip Çamlı
bf7e12b16d Create tr.lang.php in captcha plugin 2014-05-24 10:58:30 +03:00
Ali Galip Çamlı
418f89f64d Create tr.lang.php in blog plugin 2014-05-24 10:56:45 +03:00
Ali Galip Çamlı
b1455d63af Update tr.lang.php in box/information plugin 2014-05-24 10:52:14 +03:00
Ali Galip Çamlı
7089970cf6 Update tr.lang.php in box/menu plugin 2014-05-24 10:11:02 +03:00
Ali Galip Çamlı
91dec98620 Update tr.lang.php in box/pages plugin 2014-05-24 10:07:39 +03:00
Ali Galip Çamlı
6d682b3d7f Update tr.lang.php box/plugins plugin 2014-05-24 10:02:05 +03:00
Ali Galip Çamlı
91d769a1c4 Create tr.lang.php in box/sitemap plugin 2014-05-24 09:59:40 +03:00
Ali Galip Çamlı
3a58e39f5c Update tr.lang.php in box/snippets plugin 2014-05-24 09:57:22 +03:00
Ali Galip Çamlı
fc685e0514 Update tr.lang.php in box/themes plugin 2014-05-23 12:53:58 +03:00
Ali Galip Çamlı
f15766ee86 Update tr.lang.php in box/users plugin 2014-05-23 12:44:12 +03:00
Ali Galip Çamlı
e78cce729b Update tr.lang.php in box/filemanager plugin 2014-05-23 10:25:06 +03:00
Ali Galip Çamlı
fc0a4cf3b3 Create tr.lang.php in box/emails plugin 2014-05-23 10:23:19 +03:00
Ali Galip Çamlı
8a905b9481 Create tr.lang.php in box/editor plugin 2014-05-23 10:17:14 +03:00
Ali Galip Çamlı
fb5e278073 Create tr.lang.php in box/dashboard plugin 2014-05-23 10:14:05 +03:00
Ali Galip Çamlı
dc6a689013 Update tr.lang.php in box/blocks plugin 2014-05-23 10:10:54 +03:00
Ali Galip Çamlı
b91e746c09 Update tr.lang.php in box/backup plugin 2014-05-23 10:05:31 +03:00
Ali Galip Çamlı
6be93036ae Update tr.lang.php in system (box) plugin 2014-05-22 18:33:59 +03:00
Awilum
ac1a4b4a6c Translation Updates 2014-05-21 23:54:16 +04:00
Awilum
cbacd6db91 Translation Updates 2014-05-21 23:46:19 +04:00
Awilum
f5566ef2b4 Translation Updates 2014-05-21 23:43:37 +04:00
Awilum
a2596a13a8 Translation Updates 2014-05-21 23:43:36 +04:00
Sergey Romanenko
054cb8ec65 Merge pull request #298 from DmitriyMX/dev-fix295
#295 Backup plugin: fix notification
2014-05-17 08:29:48 +03:00
DmitriyMX
99a22cf36e #295 Backup plugin: fix notification 2014-05-17 01:05:32 +04:00
Awilum
daf306bcb3 #64 Admin Responsive - Next Round 2014-05-16 16:33:43 +04:00
Sergey Romanenko
b386055643 Merge pull request #297 from DmitriyMX/dev-fix296
Fixed #296
2014-05-14 08:04:46 +03:00
DmitriyMX
d7510e699e Fix #296 2014-05-13 22:46:06 +04:00
Awilum
b9fb53820e Translation Updates 2014-05-12 23:31:18 +04:00
Awilum
b6be58ba07 Monstra 2.4.0 Release Candidate 2014-05-11 23:27:07 +04:00
Awilum
947ebb4a3d #64 Admin Responsive - Next Round 2014-05-10 22:12:06 +04:00
Awilum
e816be56a4 #64 Admin Responsive - Next Round 2014-05-09 00:33:43 +04:00
Awilum
531e81b2ac #64 Admin Responsive - Next Round 2014-05-08 23:35:38 +04:00
Awilum
7357d1c26a #64 Admin Responsive - Next Round 2014-05-08 23:30:00 +04:00
Awilum
fd3a16d72f #64 Admin Responsive - Next Round 2014-05-08 23:20:14 +04:00
Awilum
b697274f86 #64 Admin Responsive - Next Round 2014-05-08 22:54:13 +04:00
Awilum
a01ef33951 #64 Admin Responsive - Next Round 2014-05-08 22:53:27 +04:00
Awilum
a17ee5f09c #64 Admin Responsive - Next Round 2014-05-08 22:52:08 +04:00
Awilum
635eb98c4e #64 Admin Responsive - Next Round 2014-05-08 22:46:14 +04:00
Awilum
ea574a1d40 #64 Admin Responsive - Next Round 2014-05-02 23:30:55 +04:00
Awilum
a115a51fd9 Users Plugin: fixes 2014-05-02 21:32:57 +04:00
Sergey Romanenko
23360d4c42 Merge pull request #294 from DmitriyMX/dev-translate
Plugins: fix translate
2014-04-30 14:03:30 +03:00
DmitriyMX
58bedf57e7 Plugins: fix translate 2014-04-30 10:48:46 +04:00
Awilum
b52ff6abb7 Admin: login page fixes 2014-04-28 23:46:52 +04:00
Awilum
745c06df7f Gelato: Minify CSS try to fix bug 2014-04-28 11:50:50 +04:00
Awilum
a62a1e7ef5 Fix Translates 2014-04-28 11:47:52 +04:00
Awilum
9741538fb2 Pages Plugins fixes 2014-04-27 14:07:31 +04:00
Awilum
48b7be3ecc Fix Translates 2014-04-27 14:00:20 +04:00
Awilum
fe4caf0802 Sandbox Plugin: small fixes 2014-04-27 09:21:18 +04:00
Awilum
30f5a5969f Blog Plugin as a part of Monstra CMS - Layout Updates #188 2014-04-27 08:26:43 +04:00
Awilum
47af0a0d4b Menu Manager: js is broken #293 2014-04-13 22:21:23 +04:00
Awilum
b39381990a Monstra 2.4.0 beta 2014-04-13 13:49:00 +04:00
Awilum
1a335cfaad google analytics hide for now 2014-04-13 10:58:41 +04:00
Awilum
ab647fdce5 google analytics hide for now 2014-04-13 10:57:24 +04:00
Awilum
a3c75d72fb UI Improvements - Default Theme - Updates #194 2014-04-13 10:41:48 +04:00
Awilum
c60cd592c4 UI Improvements - Default Theme - Updates #194 2014-04-13 10:36:36 +04:00
Awilum
a36b72f32f Email Templates Plugin - Updates #2 2014-04-11 09:36:42 +04:00
Awilum
4803e3285e UI Improvements - Admin Default Theme - Updates #194 2014-04-03 00:21:49 +04:00
Awilum
312d79c2c9 UI Improvements - Admin Default Theme - Updates #194 2014-04-03 00:20:59 +04:00
Sergey Romanenko
5bea8e2b72 Update CHANGELOG.md 2014-04-01 13:32:35 +03:00
Oleg Gatseluk
b5a9b3f49a Merge branch 'dev' of https://github.com/Awilum/monstra-cms into dev 2014-03-31 09:36:49 +03:00
Oleg Gatseluk
a9c720659d Uploading new plugins via the admin panel #215 2014-03-31 09:36:43 +03:00
Awilum
ae587082ac Turkish Language 2014-03-30 00:03:51 +04:00
Awilum
ee168a2aa0 Files Manager: File Info Popup #232 2014-03-30 00:03:51 +04:00
Awilum
144a3e7cc3 Plugins. README.MD #167 2014-03-30 00:03:50 +04:00
Sergey Romanenko
295e2cb873 Update CHANGELOG.md 2014-03-29 21:39:54 +02:00
Awilum
f2b9975eca Pages - Meta Title #165 2014-03-29 00:20:09 +04:00
Awilum
12d4be693b DB Update 2014-03-29 00:12:25 +04:00
Awilum
616e3a3608 Update CHANGELOG.md 2014-03-28 23:53:56 +04:00
Awilum
34cade84cf Turkish Language 2014-03-27 23:50:38 +04:00
Awilum
a898a84739 Turkish Language 2014-03-27 23:50:38 +04:00
Awilum
6a7c3a3462 Turkish Language 2014-03-27 23:50:37 +04:00
Awilum
eb5f918f5d Monstra automatically rename files Issue #231 2014-03-27 23:50:37 +04:00
Oleg Gatseluk
6c68b1023c merge 2014-03-25 17:37:52 +02:00
Oleg Gatseluk
9cdf1a3d71 Files Manager: File Info Popup #232 2014-03-25 17:29:21 +02:00
metal_gvc
cec57dc108 Sitemap Errors - ERROR 2 #175 2014-03-18 21:31:46 +02:00
Awilum
bd3df9598a Monstra Dashboard #204 2014-03-16 01:42:20 +04:00
Awilum
798c121e51 Chinese Language 2014-03-16 01:33:15 +04:00
Awilum
4f2fb1a319 Plugins Table Updates 2014-03-16 01:29:37 +04:00
Awilum
79e8c94468 General Updates 2014-03-16 01:28:47 +04:00
Awilum
de4b0eff15 Monstra Dashboard #204 2014-03-16 01:27:17 +04:00
Awilum
0fa5c3c91d Themes component of Box plugin not updated to support the new UI #203 2014-03-15 22:24:21 +04:00
Awilum
ab69a6128b Themes component of Box plugin not updated to support the new UI #203 2014-03-15 22:23:14 +04:00
Awilum
9981219800 Pages - Meta Title #165 2014-03-15 12:49:28 +04:00
Awilum
cd2b94c7cc Pages - Meta Title - DB update #165 2014-03-15 11:51:55 +04:00
Awilum
926b99b2fa Pages - Meta Title #165 2014-03-15 11:49:48 +04:00
Awilum
eeffcca348 Blog Plugin as a part of Monstra CMS #188 2014-03-15 01:13:20 +04:00
Awilum
1f3ed549d5 Chinese Language 2014-03-15 01:09:59 +04:00
Awilum
fea6350416 Chinese Language 2014-03-14 20:10:36 +04:00
Awilum
01cef7e8e9 Chinese Language 2014-03-14 20:09:22 +04:00
Awilum
efb026013e Chinese Language 2014-03-14 20:09:09 +04:00
Sergey Romanenko
56562942cd Merge pull request #236 from bernte/patch-3
Update header.chunk.php
2014-03-01 15:01:51 +02:00
Sergey Romanenko
8b63ae4c39 Merge pull request #286 from bernte/patch-52
Update index.view.php
2014-03-01 15:00:14 +02:00
Sergey Romanenko
a98ae9bbc2 Merge pull request #251 from bernte/patch-16
Update de.lang.php
2014-03-01 14:59:16 +02:00
Sergey Romanenko
431337e138 Merge pull request #249 from bernte/patch-14
Update de.lang.php
2014-03-01 14:58:24 +02:00
Sergey Romanenko
7a9aa577dd Merge pull request #248 from bernte/patch-13
Update de.lang.php
2014-03-01 14:56:30 +02:00
Sergey Romanenko
9ea7b09e15 Merge pull request #247 from bernte/patch-12
Update de.lang.php
2014-03-01 14:56:18 +02:00
Sergey Romanenko
c3a1a33c73 Merge pull request #246 from bernte/patch-11
Update de.lang.php
2014-03-01 14:55:00 +02:00
Sergey Romanenko
44e3f5f31c Merge pull request #245 from bernte/patch-10
Update de.lang.php
2014-03-01 14:54:47 +02:00
Sergey Romanenko
4e2f2b6528 Merge pull request #271 from bernte/patch-37
Update es.lang.php
2014-03-01 14:52:05 +02:00
Sergey Romanenko
9594f0d48b Merge pull request #272 from bernte/patch-38
Update fa.lang.php
2014-03-01 14:51:42 +02:00
Sergey Romanenko
8ea46eac2c Merge pull request #273 from bernte/patch-39
Update fr.lang.php
2014-03-01 14:51:28 +02:00
Sergey Romanenko
961f03a7a4 Merge pull request #274 from bernte/patch-40
Update hu.lang.php
2014-03-01 14:50:41 +02:00
Sergey Romanenko
a23885d619 Merge pull request #275 from bernte/patch-41
Update id.lang.php
2014-03-01 14:50:21 +02:00
Sergey Romanenko
71d0244a01 Merge pull request #277 from bernte/patch-43
Update ja.lang.php
2014-03-01 14:49:39 +02:00
Sergey Romanenko
90f8020d92 Merge pull request #276 from bernte/patch-42
Update it.lang.php
2014-03-01 14:49:09 +02:00
Sergey Romanenko
369eb76f09 Merge pull request #278 from bernte/patch-44
Update lt.lang.php
2014-03-01 14:48:58 +02:00
Sergey Romanenko
5e1a5f9150 Merge pull request #279 from bernte/patch-45
Update nl.lang.php
2014-03-01 14:48:44 +02:00
Sergey Romanenko
e4ed4a3e00 Merge pull request #280 from bernte/patch-46
Update pl.lang.php
2014-03-01 14:47:51 +02:00
Sergey Romanenko
8c20dd5155 Merge pull request #281 from bernte/patch-47
Update pt-br.lang.php
2014-03-01 14:47:35 +02:00
Sergey Romanenko
80ea7dbc3a Merge pull request #282 from bernte/patch-48
Update ru.lang.php
2014-03-01 14:47:22 +02:00
Sergey Romanenko
5f79f19542 Merge pull request #283 from bernte/patch-49
Update sk.lang.php
2014-03-01 14:46:53 +02:00
Sergey Romanenko
3624af6371 Merge pull request #284 from bernte/patch-50
Update sr-yu.lang.php
2014-03-01 14:21:35 +02:00
Sergey Romanenko
11eaf2702a Merge pull request #285 from bernte/patch-51
Update uk.lang.php
2014-03-01 14:20:40 +02:00
Sergey Romanenko
69b23097e1 Merge pull request #287 from bernte/patch-53
Update en.lang.php
2014-03-01 14:20:23 +02:00
Sergey Romanenko
66b331c8a6 Merge pull request #288 from bernte/patch-54
Update pl.lang.php
2014-03-01 14:19:59 +02:00
Sergey Romanenko
faad94b51f Merge pull request #240 from bernte/patch-5
Update de.lang.php
2014-03-01 14:19:14 +02:00
Sergey Romanenko
92afccf4f8 Merge pull request #241 from bernte/patch-7
Create de.lang.php
2014-03-01 14:18:57 +02:00
Sergey Romanenko
9d48963513 Merge pull request #289 from bernte/patch-55
Update ru.lang.php
2014-03-01 14:17:54 +02:00
Sergey Romanenko
43925eaf54 Merge pull request #253 from bernte/patch-18
Update en.lang.php
2014-03-01 14:01:57 +02:00
Sergey Romanenko
80fcdb20f9 Merge pull request #290 from bernte/patch-56
Update uk.lang.php
2014-03-01 14:01:41 +02:00
Sergey Romanenko
b71b0a422a Merge pull request #291 from bernte/patch-57
Create de.lang.php
2014-03-01 13:51:56 +02:00
bernte
2e51c5ecf9 Update de.lang.php 2014-03-01 11:56:57 +01:00
bernte
253cb63630 Update de.lang.php 2014-03-01 11:52:01 +01:00
bernte
2070d0ab32 Create de.lang.php 2014-03-01 11:36:40 +01:00
bernte
f84ce335c7 Update uk.lang.php 2014-03-01 11:34:34 +01:00
bernte
507142df0a Update ru.lang.php 2014-03-01 11:34:05 +01:00
bernte
fa7fdfce56 Update pl.lang.php 2014-03-01 11:33:35 +01:00
bernte
c462909f0d Update en.lang.php 2014-03-01 11:32:33 +01:00
bernte
de3ad26ece Update index.view.php
changed it to new language file!
2014-03-01 01:28:47 +01:00
bernte
84d1fffc71 Update uk.lang.php 2014-03-01 01:26:52 +01:00
bernte
6b55dd36e5 Update sr-yu.lang.php 2014-03-01 01:26:37 +01:00
bernte
d046e53ef9 Update sk.lang.php 2014-03-01 01:26:22 +01:00
bernte
2031d25253 Update ru.lang.php 2014-03-01 01:26:05 +01:00
bernte
57544b6740 Update pt-br.lang.php 2014-03-01 01:25:52 +01:00
bernte
c5b8ad8c3d Update pl.lang.php 2014-03-01 01:25:36 +01:00
bernte
059ad82591 Update nl.lang.php 2014-03-01 01:25:23 +01:00
bernte
febd1e7e71 Update lt.lang.php 2014-03-01 01:25:10 +01:00
bernte
616c8a18af Update ja.lang.php 2014-03-01 01:24:50 +01:00
bernte
e442d4debd Update it.lang.php 2014-03-01 01:24:34 +01:00
bernte
5a876fddb1 Update id.lang.php 2014-03-01 01:24:14 +01:00
bernte
6658500691 Update hu.lang.php 2014-03-01 01:24:01 +01:00
bernte
4756be2309 Update fr.lang.php 2014-03-01 01:23:43 +01:00
bernte
16dbbcdb16 Update fa.lang.php 2014-03-01 01:23:03 +01:00
bernte
5c1ea1f819 Update es.lang.php 2014-03-01 01:22:24 +01:00
bernte
b2ca81e9d6 Update en.lang.php 2014-02-28 23:51:55 +01:00
bernte
dfb4c01ffd Update de.lang.php 2014-02-28 23:11:35 +01:00
bernte
45cb0e69d8 Update de.lang.php 2014-02-28 22:58:57 +01:00
bernte
ca43003293 Update de.lang.php 2014-02-28 22:56:07 +01:00
bernte
4bddfae60f Update de.lang.php 2014-02-28 22:45:26 +01:00
bernte
314996be6b Update de.lang.php 2014-02-28 22:42:03 +01:00
bernte
32472a1a0e Update de.lang.php 2014-02-28 22:37:39 +01:00
bernte
ec6e4bba27 Create de.lang.php 2014-02-28 22:12:24 +01:00
bernte
438a81af8f Update de.lang.php 2014-02-28 22:06:05 +01:00
bernte
e51ed4c587 Update header.chunk.php
validation: removed ul
2014-02-28 19:44:02 +01:00
Sergey Romanenko
a8c163a535 Merge pull request #234 from mwidz/dev
Updated language files and adding translations.
2014-02-27 00:06:50 +02:00
Mirosław Widz
0102715cf3 Adding translation of the word 'Continue' in the file install.php and the related update language files 'en' and 'pl'. 2014-02-26 22:23:26 +01:00
Mirosław Widz
d68a4c5e28 Updated and added 'pl' language files
--HG--
rename : plugins/blog/languages/en.lang.php => plugins/blog/languages/pl.lang.php
rename : plugins/box/dashboard/languages/en.lang.php => plugins/box/dashboard/languages/pl.lang.php
rename : plugins/box/emails/languages/en.lang.php => plugins/box/emails/languages/pl.lang.php
2014-02-26 21:35:58 +01:00
Oleg Gatseluk
9c54a443d9 Uploading new plugins via the admin panel - active tab 'Install New' after plugin uploading #215 2014-02-26 17:43:04 +02:00
Oleg Gatseluk
2178b7d406 Uploading new plugins via the admin panel - active tab 'Install New' after plugin uploading #215 2014-02-26 17:22:13 +02:00
Oleg Gatseluk
34d4482911 Unzip Functionality - hide on Windows #229 2014-02-20 17:02:49 +02:00
Awilum
a0719eac94 UI Improvements - Admin Default Theme - Updates #194 2014-02-18 23:02:59 +02:00
Awilum
32e2890b37 UI Improvements - Admin Default Theme - Updates #194 2014-02-18 23:02:26 +02:00
Awilum
e449381555 UI Improvements - Admin Default Theme - Updates #194 2014-02-18 00:45:31 +02:00
Awilum
ac3c4e6ac8 Update CHANGELOG.md 2014-02-18 00:00:18 +02:00
Awilum
06981a768e UI Improvements - Default Theme - Updates #194 2014-02-17 23:54:50 +02:00
Awilum
e5af6b060a UI Improvements - Default Theme - Updates #194 2014-02-17 23:54:23 +02:00
Awilum
f0899e9358 Ink Framework #192 2014-02-17 21:58:31 +02:00
Awilum
e3bc818348 Ink Framework #192 2014-02-17 21:48:40 +02:00
Awilum
b32452a815 UI Improvements - Admin Default Theme - Updates #194 2014-02-17 20:44:20 +02:00
Awilum
a242cd8804 Pages Plugin: add tags field #4 2014-02-17 20:42:38 +02:00
Awilum
9fc9843639 Translation string missing in Themes plugin #137 2014-02-17 19:24:33 +02:00
Awilum
190bbe05b1 MarkItUp Color Pallete #141 2014-02-17 19:22:27 +02:00
Awilum
b0c19f7c81 Pages Plugins Select - get 'template' field 2014-02-17 19:09:04 +02:00
Awilum
cae9c77d0a Installer Flags Order #105 2014-02-17 18:50:50 +02:00
Sergey Romanenko
8b58e1536f Update CHANGELOG.md 2014-02-17 15:04:04 +02:00
Awilum
3339ad0ce5 Update datarangepicker to 1.3.2 2014-02-16 01:01:08 +02:00
Awilum
c003072a5d Update CHANGELOG.md 2014-02-16 00:51:28 +02:00
Awilum
710f86ffc6 Update jQuery to 2.1.0 2014-02-16 00:50:33 +02:00
Awilum
c1a20a5f6e Update Twitter Bootstrap to 3.1.1 2014-02-16 00:42:43 +02:00
Awilum
207a13904d Update CHANGELOG.md 2014-02-16 00:39:30 +02:00
Awilum
5942c29fe9 Plugins. README.MD #167 2014-02-16 00:22:48 +02:00
Awilum
2a3d9720d1 Monstra automatically rename files Issue #231 2014-02-15 22:56:10 +02:00
Awilum
163914b579 Monstra automatically rename files Issue #231 2014-02-15 22:55:51 +02:00
Awilum
41076ede4a UI Improvements - Admin Default Theme - Updates #194 2014-02-15 14:27:42 +02:00
Awilum
44451af610 UI Improvements - Admin Default Theme - Updates #194 2014-02-15 14:27:29 +02:00
Awilum
e3d0da1047 UI Improvements - Admin Default Theme - Updates #194 2014-02-14 21:35:56 +02:00
Awilum
e436317d7e UI Improvements - Admin Default Theme - Updates #194 2014-02-14 21:35:24 +02:00
Awilum
3b7288cbdb UI Improvements - Admin Default Theme - Updates #194 2014-02-14 19:54:19 +02:00
Awilum
9896ea7c31 UI Improvements - Default Theme - Updates #194 2014-02-14 19:41:20 +02:00
Awilum
5e2984e448 UI Improvements - Plugins Views without Headers #194 2014-02-14 19:41:19 +02:00
Awilum
82a516d431 UI Improvements - Default Theme - Updates #194 2014-02-14 19:41:19 +02:00
metal_gvc
f7bc03ef91 Merge branch 'dev' of https://github.com/Awilum/monstra-cms into dev 2014-02-14 17:21:28 +02:00
metal_gvc
7ca3946f8a Uploading new plugins via the admin panel - fileuploader refactoring: drag&drop uploader multiple instances support #215 2014-02-14 17:21:18 +02:00
Sergey Romanenko
80582f2c9f Update default.css 2014-02-14 10:24:16 +02:00
Awilum
3e4bd66e16 UI Improvements - Default Theme - Updates #194 2014-02-14 01:19:42 +02:00
Awilum
3bd33ab305 Restore Site from Backup - Updates #228 2014-02-13 23:52:40 +02:00
Awilum
608c987e6d Uploading new plugins via the admin panel #215 2014-02-13 23:29:14 +02:00
Awilum
582f49418e UI Improvements - Admin Default Theme - Updates #194 2014-02-13 23:12:19 +02:00
Awilum
1b77c928f4 UI Improvements - Admin Default Theme - Updates #194 2014-02-13 23:03:48 +02:00
Awilum
f2d0bd2745 UI Improvements - Default Theme - Updates #194 2014-02-13 22:28:20 +02:00
metal_gvc
1085953b3b Restore Site from Backup - Remove checkboxes #228 2014-02-13 21:31:05 +02:00
metal_gvc
8ac3b92248 Restore Site from Backup - backup all except plugins/box #228 2014-02-13 21:22:37 +02:00
Awilum
37ec41199d Blog Plugin as a part of Monstra CMS #188 2014-02-12 23:56:40 +02:00
Awilum
9ea4477bd8 Blog Plugin as a part of Monstra CMS #188 2014-02-12 23:53:31 +02:00
Awilum
81ffb867be Gelato: ErroHandler styles updates 2014-02-12 23:53:31 +02:00
Awilum
eea5606985 Gelato: ErroHandler styles updates 2014-02-12 23:53:30 +02:00
metal_gvc
c01e03e139 Restore Site from Backup - tmp directory fix #228 2014-02-12 21:35:04 +02:00
metal_gvc
071595fd61 Merge branch 'dev' of https://github.com/Awilum/monstra-cms into dev 2014-02-12 21:29:53 +02:00
metal_gvc
847af54c11 Restore Site from Backup - tmp directory fix #228 2014-02-12 21:13:35 +02:00
Awilum
308483f167 Admin Default Theme Updates 2014-02-12 00:55:54 +02:00
Awilum
1a5d05bfaa Plugins. README.MD #167 2014-02-12 00:33:08 +02:00
Awilum
e17bc2454d Plugins. README.MD #167 2014-02-12 00:32:53 +02:00
Awilum
e662a9937b Plugins. README.MD #167 2014-02-12 00:08:13 +02:00
Awilum
d8a9c746b4 Plugins. README.MD #167 2014-02-11 23:16:41 +02:00
Awilum
0a08b4131d Plugins. README.MD #167 2014-02-11 23:15:34 +02:00
Awilum
ba78201812 Update CHANGELOG.md 2014-02-11 23:14:59 +02:00
Awilum
36bb23db5b Plugins. README.MD #167 2014-02-11 23:12:28 +02:00
Awilum
6713282196 Blog Plugin as a part of Monstra CMS #188 2014-02-11 23:11:28 +02:00
Awilum
bcf3d58c14 Update CHANGELOG.md 2014-02-11 22:27:13 +02:00
Awilum
3f7e3e5b98 Markdown Plugin #230 2014-02-11 22:17:14 +02:00
Awilum
baefbef8ab Plugins. README.MD #167 2014-02-09 21:50:47 +02:00
Awilum
f5ff259344 UI Improvements - Admin Theme Updates #194 2014-02-09 21:50:46 +02:00
metal_gvc
8380ec5b7d Restore Site from Backup #228 2014-02-09 21:48:07 +02:00
metal_gvc
44c274cf8c Merge branch 'dev' of https://github.com/Awilum/monstra-cms into dev 2014-02-09 21:10:51 +02:00
metal_gvc
bcac217db3 Uploading new plugins via the admin panel #215 2014-02-09 21:09:40 +02:00
Awilum
a1c7aa1d46 Plugins. README.MD #167 2014-02-08 14:09:41 +02:00
Awilum
594d6fd51d Monstra Dashboard #204 2014-02-08 14:09:40 +02:00
metal_gvc
9a6329a6cd Merge branch 'dev' of https://github.com/Awilum/monstra-cms into dev 2014-02-08 13:27:19 +02:00
metal_gvc
1350491545 Unzip Functionality #229 2014-02-08 13:25:58 +02:00
Awilum
61317e99fe UI Improvements - Installer - updates #194 2014-02-01 20:57:38 +02:00
Awilum
46c2d5e93d UI Improvements - Admin - updates #194 2014-02-01 18:08:56 +02:00
Awilum
35029b1e24 New Flags Added 2014-02-01 17:43:03 +02:00
Awilum
8a107d190c UI Improvements - Admin - updates #194 2014-02-01 17:03:57 +02:00
Awilum
ff26fc105c UI Improvements - Admin - updates #194 2014-02-01 17:03:39 +02:00
Awilum
2e19f5c1a7 Files Manager Improvements - fixes #94 2014-02-01 14:47:08 +02:00
Awilum
0bbf9544da UI Improvements - Admin - Login page updates #194 2014-02-01 13:09:13 +02:00
Awilum
27cf070816 Update Changelog 2014-02-01 01:07:45 +02:00
Awilum
66eb4fd120 Idiorm Updated to 1.4.1 2014-02-01 01:07:27 +02:00
Awilum
3aad8db409 Update Changelog 2014-02-01 01:01:35 +02:00
Awilum
6d703b1286 Update Twitter Bootstrap to 3.1.0 2014-02-01 01:00:50 +02:00
Awilum
948bf57a1c Box Plugins: .htaccess added 2014-01-31 21:54:43 +02:00
Awilum
ef63bda6da DB Updates 2014-01-31 21:48:34 +02:00
Awilum
87135d00ae Email Templates Plugin - Updates #2 2014-01-31 21:28:33 +02:00
Awilum
350dd8ed8b Email Templates Plugin - Updates #2 2014-01-31 21:27:27 +02:00
Awilum
b8ebd53272 CodeMirror Plugin as a part of Monstra CMS #187 2014-01-31 21:23:34 +02:00
Awilum
358c7fdefe Update users.plugin.php 2014-01-31 20:42:47 +02:00
Awilum
062460895d Email Templates Plugin - Updates #2 2014-01-31 20:24:46 +02:00
Awilum
7113f09937 Restore Site from Backup #228 2014-01-31 20:24:07 +02:00
Awilum
918820da3e UI Improvements - Admin - Login page updates #194 2014-01-31 20:18:20 +02:00
Awilum
8f0e576f99 Files Manager Improvements - Bootstrap: fileinput.js v3.0.0-p7 #94 2014-01-31 19:02:44 +02:00
Awilum
eecf2e85a4 Files Manager Improvements - Bootstrap: fileinput.js v3.0.0-p7 #94 2014-01-31 19:02:44 +02:00
metal_gvc
933c1df4f6 Monstra Dashboard - GA - hide settings link on GA settings page #204 2014-01-29 21:31:51 +02:00
Awilum
28ec930671 Files Manager Improvements - Maximum upload file size message - added #94 2014-01-29 20:56:39 +02:00
Awilum
e74111fb7d Gelato: Number Class new method convertToBytes() added. 2014-01-29 20:56:39 +02:00
Awilum
551ce3be6b Gelato: Number Class new method convertToBytes() added. 2014-01-29 20:56:39 +02:00
Sergey Romanenko
ceb19b2e83 Update CHANGELOG.md 2014-01-29 15:36:33 +02:00
Sergey Romanenko
38efadd6bf Update CHANGELOG.md 2014-01-29 15:35:17 +02:00
Sergey Romanenko
97dc6a8f69 Plugin API - Filters - Closure support added. 2014-01-29 15:34:58 +02:00
Sergey Romanenko
1e3689204e Update CHANGELOG.md 2014-01-29 15:33:12 +02:00
Sergey Romanenko
fee8dc34e9 Update CHANGELOG.md 2014-01-29 15:30:53 +02:00
Sergey Romanenko
a5dbfaee85 Update install.php 2014-01-29 11:44:35 +02:00
Sergey Romanenko
e72dcc3a94 Merge pull request #227 from Awilum/master
Merge with master branch
2014-01-29 01:14:49 -08:00
Awilum
106c7b2c56 Files Manager Improvements - Updates #94 2014-01-29 00:13:48 +02:00
Awilum
6749608a17 Monstra Dashboard - Updates #204 2014-01-29 00:05:29 +02:00
Awilum
4b381efb10 Files Manager Improvements - Updates #94 2014-01-29 00:05:29 +02:00
metal_gvc
8d16632454 Prefetch DNS to reduce look up times #202 2014-01-28 20:12:16 +02:00
Awilum
67bf91a872 Files Manager Improvements - fixes #94 2014-01-25 13:17:28 +02:00
Awilum
482e865358 Files Manager Improvements - fixes #94 2014-01-25 11:12:01 +02:00
metal_gvc
fb906708b9 Merge branch 'dev' of https://github.com/Awilum/monstra-cms into dev 2014-01-25 00:24:26 +02:00
metal_gvc
76c71c8174 Monstra Dashboard - GA update #204 2014-01-25 00:24:02 +02:00
Awilum
6d20d97c86 Chocolat Fixes 2014-01-24 23:15:51 +02:00
metal_gvc
2ba945313f Files Manager Improvements - Ability to rename Files & Directories #94 2014-01-24 22:56:13 +02:00
Sergey Romanenko
52192f9dea Update style.css 2014-01-24 12:15:00 +02:00
Sergey Romanenko
054aa46635 Update I18n.php 2014-01-23 11:15:52 +02:00
Sergey Romanenko
cff06f5564 Merge pull request #223 from ANISSA90/master
language
2014-01-23 01:10:41 -08:00
Sergey Romanenko
14dfc59b9e Merge pull request #226 from gracix/master
Create japanese language files
2014-01-23 01:08:40 -08:00
metal_gvc
03045d03ae Files Manager Improvements - Drug'n'Drop uploader - error handler updates #94 2014-01-23 00:27:33 +02:00
Takefumi Ota
5d8a4abcb9 Add Japanese language files. 2014-01-22 10:59:38 +09:00
Takefumi Ota
3ad2cf7a56 Create Japanese language file 2014-01-22 09:56:23 +09:00
Sergey Romanenko
474fddd803 Email Templates Plugin - Updates #2 2014-01-21 15:06:57 +02:00
Sergey Romanenko
a1942f55dc Update codemirror.plugin.php 2014-01-21 15:05:55 +02:00
Sergey Romanenko
38e6961a91 Email Templates Plugin - Updates #2 2014-01-21 15:05:31 +02:00
Sergey Romanenko
73d78f0585 Email Templates Plugin - Updates #2 2014-01-21 15:04:58 +02:00
Sergey Romanenko
bd84514fce Email Templates Plugin - Updates #2 2014-01-21 15:04:08 +02:00
Sergey Romanenko
9d66c5ca32 Update users.plugin.php 2014-01-21 14:40:09 +02:00
Sergey Romanenko
54660eb5c1 Rename reset_password.email.php to reset-password.email.php 2014-01-21 14:39:12 +02:00
Sergey Romanenko
ea3f059a41 Rename new_user.email.php to new-user.email.php 2014-01-21 14:39:02 +02:00
Sergey Romanenko
1e2fe718c1 Rename new_password.email.php to new-password.email.php 2014-01-21 14:38:51 +02:00
Sergey Romanenko
aaba7cef27 Email Templates Plugin - Updates #2 2014-01-21 14:37:32 +02:00
Sergey Romanenko
2afaba814b Email Templates Plugin - Updates #2 2014-01-21 14:36:52 +02:00
Sergey Romanenko
2a465bab1b Email Templates Plugin - Updates #2 2014-01-21 14:36:01 +02:00
Sergey Romanenko
fff6890205 Update LICENSE.md 2014-01-21 13:38:18 +02:00
Sergey Romanenko
9a5f0a99ba Update LICENSE.md 2014-01-21 13:37:26 +02:00
Sergey Romanenko
2c4d1c36f9 Rename license.txt to LICENSE.md 2014-01-21 13:34:54 +02:00
Sergey Romanenko
7b397ddfaa Rename changelog.txt to CHANGELOG.md 2014-01-21 13:33:33 +02:00
Sergey Romanenko
0cecc2e9a6 Users Plugin - Email Templates - Updates #2 2014-01-21 13:01:04 +02:00
Awilum
a8b2725721 Email Templates Plugin - Email Templates - Updates #2 2014-01-21 00:11:12 +02:00
Awilum
274e9a1849 Files Manager Improvements - Drop Files section fixes #94 2014-01-20 22:14:07 +02:00
Awilum
a76207ae96 Files Manager Improvements - Drop Files section fixes #94 2014-01-20 21:44:15 +02:00
Sergey Romanenko
0bb9915708 Admin Default Theme Updates 2014-01-20 15:58:24 +02:00
Sergey Romanenko
f7a716cb76 Update changelog.txt 2014-01-20 15:19:42 +02:00
Awilum
dfb0b41467 iCheck for checkboxes #225 2014-01-20 01:07:42 +02:00
Awilum
ad5c1802d0 Blog Plugin as a part of Monstra CMS #188 2014-01-20 00:25:00 +02:00
Awilum
390c5a1354 iCheck for checkboxes #225 2014-01-19 18:03:45 +02:00
Awilum
3f4a04e03a iCheck for checkboxes #225 2014-01-19 18:02:48 +02:00
Sergey Romanenko
669289af32 Merge pull request #224 from DmitriyMX/dev
Fix: JSON.parse: unexpected character
2014-01-19 07:00:47 -08:00
DmitriyMX
d4f57e35d3 Fix: JSON.parse: unexpected character 2014-01-19 18:51:29 +04:00
ANISSA90
cc7d270bfb Create id.lang.php 2014-01-19 16:25:59 +07:00
ANISSA90
caecc6df07 Create id.lang.php 2014-01-19 16:17:33 +07:00
ANISSA90
0f357ec80b Create id.lang.php 2014-01-19 16:12:34 +07:00
ANISSA90
57c43319f7 Create id.lang.php 2014-01-19 15:32:53 +07:00
ANISSA90
00ac33e273 Create id.lang.php 2014-01-19 15:13:47 +07:00
ANISSA90
3947d3560d Create id.lang.php 2014-01-19 14:20:01 +07:00
ANISSA90
4907964484 Create id.lang.php 2014-01-19 13:58:13 +07:00
ANISSA90
38c8a3340c Create id.lang.php 2014-01-19 13:39:28 +07:00
Awilum
7532ad1127 Fixes for #94 and #204 2014-01-18 12:06:39 +02:00
Awilum
cc613247f3 UI Improvements - Admin Theme Fixes #194 2014-01-18 11:40:00 +02:00
Awilum
92064df622 Files Manager Improvements #94 2014-01-18 11:22:30 +02:00
Awilum
fb121a88d1 Merge branch 'dev' of https://github.com/metalgvc/monstra-cms into metalgvc-dev
Conflicts:
	plugins/box/filesmanager/views/backend/index.view.php
2014-01-18 11:14:21 +02:00
Awilum
abc04ee218 UI Improvements - Admin Theme Updates #194 2014-01-18 00:15:54 +02:00
Awilum
0faba762ba UI Improvements - Admin Theme Updates #194 2014-01-18 00:15:53 +02:00
Awilum
fed3aa5664 Files Manager Improvements - Drop Files section added #94 2014-01-18 00:15:53 +02:00
Sergey Romanenko
6e3a2a63e7 Merge pull request #221 from metalgvc/dev
Monstra Dashboard - Google Analytics #204
2014-01-17 14:13:34 -08:00
metal_gvc
c119c9f84a Monstra Dashboard #204 2014-01-17 23:50:14 +02:00
ANISSA90
3eae0d2114 Create id.lang.php 2014-01-18 00:15:45 +07:00
ANISSA90
955ba2a9ca Create id.lang.php 2014-01-18 00:07:21 +07:00
Sergey Romanenko
25bee212a8 Merge pull request #220 from metalgvc/dev
Dashboard google analytics #204
2014-01-17 01:26:46 -08:00
Sergey Romanenko
e5f319a961 Update changelog.txt 2014-01-17 10:26:51 +02:00
Oleg Gatseluk
251acd4949 google analytics dashboard init fix 2014-01-17 10:20:46 +02:00
Sergey Romanenko
bc429ac098 Update changelog.txt 2014-01-17 10:18:11 +02:00
Sergey Romanenko
a76590930f Update changelog.txt 2014-01-17 10:15:07 +02:00
Sergey Romanenko
2f873985a8 Update changelog.txt 2014-01-17 10:14:02 +02:00
metal_gvc
ffc0bf62c2 google analytics init 2014-01-17 09:11:03 +02:00
Sergey Romanenko
678573b91a Plugin API - Actions - Closure support added. 2014-01-16 12:17:07 +02:00
ANISSA90
83abaae0af Create id.lang.php 2014-01-16 07:29:31 +07:00
ANISSA90
bd310d6c7c Create id.lang.php 2014-01-16 07:15:30 +07:00
ANISSA90
9fabc679b4 Create id.lang.php 2014-01-16 07:05:14 +07:00
Awilum
5e06c10ef9 Users Plugin: Improvements 2014-01-15 00:39:00 +02:00
Awilum
fa00499d93 CodeMirror Plugin as a part of Monstra CMS #187 2014-01-15 00:18:15 +02:00
Awilum
ed323cfe7b Blog Plugin as a part of Monstra CMS #188 2014-01-14 23:56:52 +02:00
Awilum
5dc4c65f76 Blog Plugin as a part of Monstra CMS #188 2014-01-14 23:56:07 +02:00
Awilum
3dfef0e3a3 Gelato Html - W3 Fixes #189 2014-01-14 23:49:29 +02:00
Awilum
87a55ed5bb Users Plugin: Notifications Updates 2014-01-14 23:44:16 +02:00
Awilum
40afdaccc7 Email Templates Plugin and Ink Framework integration #2 #192 2014-01-14 20:15:34 +02:00
Awilum
290ab4bec2 Backup Plugin: Improvements 2014-01-14 20:11:42 +02:00
Awilum
14baa34888 Backup Plugin: Notifications added 2014-01-14 20:11:41 +02:00
Sergey Romanenko
5c03f0cfab Update filesmanager.admin.php 2014-01-13 12:22:43 +02:00
Awilum
f9ec0b9e18 Email Templates Plugin - Email Templates - Added #2 2014-01-12 20:39:25 +02:00
Awilum
d2ab853939 minify.[css|js] cached by the browser #212 2014-01-12 17:59:54 +02:00
Awilum
fae12cefda UI Improvements - Plugins - Layout fixes #194 2014-01-12 15:12:45 +02:00
Awilum
1dbd208832 UI Improvements - Plugins - Layout fixes #194 2014-01-11 23:05:33 +02:00
Awilum
2b1e28a0d5 minify.[css|js] cached by the browser #212 2014-01-11 11:31:30 +02:00
Awilum
2c268fc873 UI Improvements - Admin Theme - Styles fixes #194 2014-01-11 01:18:33 +02:00
Awilum
15535a460c UI Improvements - Admin Theme - Styles fixes #194 2014-01-11 01:18:17 +02:00
Awilum
c2a2dba621 Twitter Bootsrap 3 - Admin - Fixes #185 2014-01-11 00:56:21 +02:00
Awilum
f340fcd3a2 Files Manager Improvements - Breadcrumbs fixes #94 2014-01-11 00:52:52 +02:00
Awilum
7f71f3e3bc Blog Plugin as a part of Monstra CMS #188 2014-01-10 22:48:01 +02:00
Awilum
0170c3015e Localization fixes 2014-01-10 22:14:56 +02:00
Awilum
141df2033d Localization fixes 2014-01-10 22:12:54 +02:00
Awilum
a8c9f864e5 minify.[css|js] cached by the browser #212 2014-01-10 22:06:59 +02:00
Awilum
8b5bdd266f minify.[css|js] cached by the browser - Added abblity to increment js and css version #212 2014-01-10 22:06:58 +02:00
Sergey Romanenko
97a5dcf317 Merge pull request #218 from metalgvc/dev
Files Manager Improvements - create directory #94
2014-01-10 10:02:39 -08:00
metal_gvc
e78f59126a Files Manager Improvements - create directory #94 2014-01-10 20:00:21 +02:00
Awilum
81b070322e UI Improvements - Admin Theme - Styles fixes #194 2014-01-10 19:40:30 +02:00
Awilum
aabbb4461e Blog Plugin as a part of Monstra CMS - Layout Updates #188 2014-01-09 23:05:09 +02:00
Awilum
e08c17df4b Blog Plugin as a part of Monstra CMS - getPostAuthor() - added #188 2014-01-09 22:20:41 +02:00
Awilum
01be9f66e4 Blog Plugin as a part of Monstra CMS - Layout Updates #188 2014-01-09 22:19:33 +02:00
Awilum
4381179378 Blog Plugin as a part of Monstra CMS - getPostDate() - added #188 2014-01-09 20:53:28 +02:00
Awilum
015aff3cb3 Blog Plugin as a part of Monstra CMS - Layout Updates #188 2014-01-09 20:50:17 +02:00
Awilum
fb44416902 Blog Plugin as a part of Monstra CMS #188 2014-01-09 20:30:39 +02:00
Awilum
6721c7829f Blog Plugin as a part of Monstra CMS #188 2014-01-09 20:30:20 +02:00
Awilum
df745f597c Monstra Dashboard - Fixes #204 2014-01-09 19:21:37 +02:00
Awilum
95a791e871 Monstra Dashboard - Fixes #204 2014-01-09 19:19:24 +02:00
Sergey Romanenko
7196ac5067 Update Monstra.php 2014-01-09 12:27:51 +02:00
Sergey Romanenko
1db7253e63 Twitter Bootsrap 3 - Admin - Fixes #185 2014-01-09 12:22:05 +02:00
Sergey Romanenko
1998674217 Twitter Bootsrap 3 - Admin - Fixes #185 2014-01-09 12:19:31 +02:00
Sergey Romanenko
d6e269a7fa Update index.template.php 2014-01-09 12:16:30 +02:00
Sergey Romanenko
bd1b9d24d6 Merge pull request #213 from promo360/dev
Localization fixes
2014-01-08 23:42:57 -08:00
Евгений
1c42312010 Themes - boostrap 3 fixes 2014-01-09 07:46:15 +06:00
Евгений
31e0616a42 Localization fixes 2014-01-09 07:33:27 +06:00
Awilum
b3767f9f59 Email Templates Plugin - fixes #2 2014-01-09 01:45:39 +02:00
Awilum
c68ac3f03a Email Templates Plugin - Skeleton Added #2 2014-01-09 01:43:52 +02:00
Awilum
e8f79e99b5 Email Templates Plugin - DB Updates #2 2014-01-09 01:40:36 +02:00
Awilum
5433a17aa5 Information Plugin set menu priority 6 2014-01-09 01:36:52 +02:00
Awilum
0ab72c4208 UI Improvements - Admin Theme - .error-message class added #194 2014-01-09 00:59:27 +02:00
Awilum
e71bb980a5 UI Improvements - Menu Plugin - Fixes #194 2014-01-09 00:58:45 +02:00
Awilum
7c0a4d7a50 UI Improvements - Menu Plugin - Fixes #194 2014-01-09 00:52:37 +02:00
Awilum
ca65abd10c UI Improvements - Users Client Side - Fixes #194 2014-01-09 00:27:18 +02:00
Awilum
26f1abd717 UI Improvements - Admin - Cancel Button Added #194 2014-01-09 00:11:19 +02:00
Awilum
281894d08a Monstra Dashboard - localization - fixes #204 2014-01-08 22:31:51 +02:00
Awilum
b2f3d3d526 jQuery in head #211 2014-01-08 21:54:44 +02:00
Awilum
1bc19bc850 jQuery in head #211 2014-01-08 21:54:17 +02:00
Awilum
73b20836c8 Alert #208 2014-01-08 21:30:06 +02:00
Awilum
aef599de95 Alert #208 2014-01-08 21:22:18 +02:00
Sergey Romanenko
0fcae326cb UI Improvements - Admin Theme - Styles fixes #194 2014-01-08 16:43:21 +02:00
Sergey Romanenko
6d38fb9c39 Update changelog.txt 2014-01-08 09:22:52 +02:00
Awilum
64d13302d5 Monstra Dashboard #204 2014-01-08 01:17:33 +02:00
Awilum
cc9ce84648 Monstra Dashboard - Set as default Plugin for Admin Panel #204 2014-01-08 01:08:45 +02:00
Awilum
9d6d3dec95 Monstra Dashboard - DB Updates #204 2014-01-08 01:02:52 +02:00
Awilum
365dbafcc9 UI Improvements - Admin Login Page - Fixes #194 2014-01-08 01:00:49 +02:00
Sergey Romanenko
da4e3b60c0 Merge pull request #207 from promo360/dev
Modal. Bootstrap 3
2014-01-07 14:49:51 -08:00
Евгений
ed1edc32db Merge branch 'dev' of https://github.com/Awilum/monstra-cms into dev 2014-01-08 04:47:04 +06:00
Евгений
dbb3db8e6b Merge branch 'master' of https://github.com/Awilum/monstra-cms into dev 2014-01-08 04:46:27 +06:00
Awilum
27d55c2e51 Monstra Dashboard #204 2014-01-08 00:44:05 +02:00
Awilum
2bc94dbe6a Monstra Dashboard #204 2014-01-08 00:43:29 +02:00
Евгений
d3b00d894b Modal. Bootstrap 3 2014-01-08 04:39:53 +06:00
Awilum
5a142a2353 UI Improvements - Admin - Updates #194 2014-01-07 23:39:15 +02:00
Awilum
88b244a6df HubSpot Messaging Library #195 2014-01-07 20:39:06 +02:00
Awilum
1fd4892969 Core: Javascript may be broken if there is no break line - fixed 2014-01-07 20:35:58 +02:00
Awilum
a48a587fcd UI Improvements - Admin - Cleanup #194 2014-01-07 20:17:16 +02:00
Awilum
30f5aae0be UI Improvements - Admin - Updates #194 2014-01-07 20:10:09 +02:00
Awilum
14d7d93373 Monstra Dashboard - Plugin Skeleton #204 2014-01-07 20:10:08 +02:00
Sergey Romanenko
4f92cb32c2 Merge pull request #205 from EuanMead/dev
Numerous Improvements & Tweaks
2014-01-07 10:01:13 -08:00
Awilum
1e3e3ce8b3 Sandbox Plugin - cleanup 2014-01-07 19:56:56 +02:00
EuanMead
e3c80959f8 Lossless Compression of Images 2014-01-07 16:55:59 +00:00
EuanMead
b36a30c4c3 Lossless Compression of Images 2014-01-07 16:55:56 +00:00
EuanMead
7f8833286c Lossless Compression of Images 2014-01-07 16:55:47 +00:00
EuanMead
3bfee0107d Lossless Compression of Images 2014-01-07 16:55:42 +00:00
EuanMead
9d263cb2c9 Lossless Compression of Images 2014-01-07 16:55:37 +00:00
EuanMead
01a1b5d62d Lossless Compression of Images 2014-01-07 16:55:33 +00:00
EuanMead
1286de90ae Lossless Compression of Images 2014-01-07 16:55:18 +00:00
EuanMead
b6de5a3261 Lossless Compression of Images 2014-01-07 16:55:13 +00:00
EuanMead
5abc7c89db Lossless Compression of Images 2014-01-07 16:55:08 +00:00
EuanMead
32165e0b18 Lossless Compression of Images 2014-01-07 16:54:55 +00:00
EuanMead
bdb27de2f1 Lossless Compression of Images 2014-01-07 16:54:51 +00:00
EuanMead
70f3338470 Lossless Compression of Images 2014-01-07 16:54:42 +00:00
EuanMead
f82f677f79 Lossless Compression of Images 2014-01-07 16:53:26 +00:00
EuanMead
a8a425bec1 Lossless Compression of Images 2014-01-07 16:53:22 +00:00
EuanMead
4bb991ebe8 Lossless Compression of Images 2014-01-07 16:53:11 +00:00
EuanMead
2c87b85daa Lossless Compression of Images 2014-01-07 16:53:07 +00:00
EuanMead
fabf51c624 Lossless Compression of Images 2014-01-07 16:52:52 +00:00
EuanMead
5655dd70a8 Lossless Compression of Images 2014-01-07 16:52:43 +00:00
EuanMead
4d7383637a Use CDNJS For Hosting Scripts. 2014-01-07 16:33:43 +00:00
EuanMead
8ee7c234e1 Use CDNJS For Hosting Scripts. 2014-01-07 16:33:37 +00:00
EuanMead
b757c19778 Update to use Bootstrap V3
Minor changes to structure and changes to classes to provide UI
consistent with pages.
2014-01-07 16:15:45 +00:00
Awilum
2574431dd8 Admin Navbar Increase Gravatar size #193 2014-01-07 15:36:31 +02:00
Awilum
b43422f090 No Bootstrap.min.css - Fixed #200 2014-01-07 15:34:11 +02:00
Awilum
450a7f3c2f Site Url without trailing slashes #186 2014-01-07 01:26:13 +02:00
Awilum
79f0ef2701 UI Improvements - Admin - Navbar Updates #194 2014-01-07 01:23:02 +02:00
Awilum
ce14f9b241 Core: Store user_email in Session 2014-01-07 01:21:12 +02:00
Awilum
843b460614 Core: Store user_email in Session 2014-01-07 01:19:33 +02:00
Awilum
15b089f043 Users Plugin - Improve getGravatarURL() #193 2014-01-06 23:59:12 +02:00
Awilum
2baee12915 UI Improvements - Users Client Side - Fixes #194 2014-01-06 22:54:04 +02:00
Awilum
1d13ebe490 Gelato Form - W3 Fixes #189 2014-01-06 22:47:27 +02:00
Awilum
dee1b7ba75 UI Improvements - Users Client Side - Fixes #194 2014-01-06 22:44:10 +02:00
Awilum
469a015b8b DUI Improvements - Default Theme is Flat - Fixes #194 2014-01-06 22:43:16 +02:00
Awilum
44860b5cba UI Improvements - Users Client Side - Fixes #194 2014-01-06 22:36:24 +02:00
Awilum
dd2e241207 Changelog - updates 2014-01-06 22:24:47 +02:00
Sergey Romanenko
986353aa88 Merge pull request #197 from promo360/dev
Site Url without trailing slashes
2014-01-06 11:53:13 -08:00
Awilum
5b4a0c3bbf UI Improvements - Installer Fixes #194 2014-01-06 21:50:56 +02:00
Евгений
e60fb9921e Site Url without trailing slashes 2014-01-07 01:32:50 +06:00
Sergey Romanenko
5cb23c76c3 Merge pull request #196 from promo360/dev
Dev
2014-01-06 11:09:59 -08:00
Awilum
02fa169760 Files Manager Improvements #94 2014-01-06 21:05:12 +02:00
Евгений
3d83dc775f Site Url without trailing slashes 2014-01-07 01:02:23 +06:00
Евгений
432942abf8 W3 Fixes <br/> > <br> 2014-01-07 00:44:58 +06:00
Евгений
29d506a862 W3 2014-01-07 00:39:31 +06:00
Awilum
83f7be1c7d Site Url without trailing slashes #186 #188 2014-01-06 19:49:39 +02:00
Awilum
bbc74df954 #187 #188 - DataBase Updates 2014-01-06 19:43:47 +02:00
Евгений
fbb65d4568 Merge pull request #1 from Awilum/dev
Dev
2014-01-06 09:41:09 -08:00
Awilum
543b8ae883 Site Url without trailing slashes #186 2014-01-06 19:35:20 +02:00
Awilum
51e2cd0a45 Site Url without trailing slashes #186 2014-01-06 19:17:23 +02:00
Awilum
aa3d785b97 Site Url without trailing slashes 2014-01-04 23:52:28 +02:00
Awilum
cd40c09496 Site Url without trailing slashes 2014-01-04 23:21:56 +02:00
Awilum
7c0fcf42cf Site Url without trailing slashes 2014-01-04 01:14:54 +02:00
Awilum
a32056db45 Site Url without trailing slashes 2014-01-04 00:58:34 +02:00
Awilum
de0c1da61c Default Theme on Twitter Bootstrap 3 2014-01-03 23:46:12 +02:00
Awilum
8b0ba10a5a Site Url without trailing slashes 2014-01-03 23:45:28 +02:00
Awilum
8d681709d2 CodeMirror Plugin as a part of Monstra CMS 2014-01-03 20:56:46 +02:00
Awilum
7f0cdeba25 Frontend Improvements 2014-01-03 20:56:33 +02:00
Awilum
f4d9b9c53d CodeMirror Plugin as a part of Monstra CMS 2014-01-03 20:49:25 +02:00
Awilum
7b8949dc2b Site Url without trailing slashes 2014-01-03 20:38:29 +02:00
Awilum
108581e4ef Frontend Improvements 2014-01-03 20:38:11 +02:00
Awilum
83264e41f3 Blog Plugin as a part of Monstra CMS 2014-01-03 19:07:05 +02:00
Awilum
79f4abe6bd Site Url without trailing slashes 2014-01-03 19:04:03 +02:00
Awilum
9da99040e1 Site Url without trailing slashes 2014-01-03 18:39:03 +02:00
Awilum
c3fe4d16bc FilesManager Improvements 2014-01-03 02:56:01 +02:00
Awilum
c1a523acf6 jQuery v1.10.2 2014-01-03 02:55:43 +02:00
Awilum
03653831c8 FilesManager Improvements 2014-01-03 02:44:48 +02:00
Awilum
fb12bc8d85 Frontend Improvements 2014-01-03 02:43:22 +02:00
Awilum
6bbf1ffd51 bootstrap-confirm.js - Removed 2014-01-03 02:41:35 +02:00
Awilum
0c118fb984 bootstrap-confirm.js - Added 2014-01-03 02:17:53 +02:00
Awilum
b33b85860f FilesManager Improvements 2014-01-03 01:44:00 +02:00
Awilum
d1ef0e47f9 Chocolat Added 2014-01-03 01:43:32 +02:00
Awilum
5466099cae Project Assets - CleanUp 2014-01-03 00:06:38 +02:00
Awilum
2df64961e6 Monstra Logo 256px - Added 2014-01-03 00:05:37 +02:00
Awilum
d01a5e36fb Chocolat Added 2014-01-03 00:05:13 +02:00
Awilum
97b9982ba0 Frontend Improvements 2014-01-02 22:22:04 +02:00
Awilum
cac3aeb813 default.js - old js removed 2014-01-02 22:11:59 +02:00
Awilum
7b24e315b7 Frontend Improvements 2014-01-02 19:56:08 +02:00
Awilum
73abb00785 Frontend Improvements 2014-01-02 19:54:18 +02:00
Awilum
4d16d07b2c Frontend Improvements 2014-01-02 02:37:11 +02:00
Awilum
54be2aa7d0 Frontend Improvements 2014-01-02 02:37:00 +02:00
Awilum
42e807db22 Monstra Installer - Frontend Improvements 2014-01-02 02:29:14 +02:00
Awilum
76f216f516 Frontend Improvements - FlatUI & Foundation inspiration 2014-01-02 02:29:01 +02:00
Awilum
5def336ff9 Frontend Improvements 2014-01-02 02:16:33 +02:00
Awilum
b90f3ec00d Frontend Improvements 2014-01-02 02:12:49 +02:00
Awilum
e58399298f Admin Help Section - Added 2014-01-02 02:02:28 +02:00
Awilum
e31c081732 Frontend Improvements - FlatUI & Foundation inspiration 2014-01-02 01:44:40 +02:00
Awilum
588f67b2e9 Frontend Improvements - FlatUI & Foundation inspiration 2014-01-02 01:34:41 +02:00
Awilum
e3a623b31f Monstra Installer - Frontend Improvements 2014-01-02 00:59:56 +02:00
Awilum
8cacd03c40 Merge fixes 2014-01-01 21:35:04 +02:00
Awilum
5ea80e31e0 Merge branch 'origin/dev'
Conflicts:
	engine/Monstra.php
	public/assets/js/bootstrap.js
2014-01-01 21:32:20 +02:00
Awilum
83f80306d3 Frontend Improvements 2014-01-01 21:29:40 +02:00
Awilum
bfc41e03ea W3 Fixes 2014-01-01 21:21:26 +02:00
Awilum
7241410c2d Monstra 2.4.0 pre-alpha in progress 2014-01-01 21:15:35 +02:00
Awilum
8284902d57 Frontend Improvements 2014-01-01 21:06:06 +02:00
Awilum
791e73c1b6 Frontend Improvements 2014-01-01 19:46:52 +02:00
Awilum
80d1439471 Frontend Improvements 2014-01-01 19:46:23 +02:00
Awilum
197cd7afde Frontend Improvements 2013-12-30 23:38:45 +02:00
Sergey Romanenko
326a846be3 Merge pull request #184 from mwidz/master
Updated 'pl' language files
2013-12-27 04:37:08 -08:00
Mirosław Widz
97542ada1b Adding a newline 2013-12-25 21:56:50 +01:00
Mirosław Widz
db5e6b7868 Updated 'pl' language files 2013-12-25 21:50:44 +01:00
Awilum
81ff2288b9 Merge branch 'dev' 2013-12-25 00:32:50 +02:00
Awilum
cd0d8296a5 Monstra 2.3.1 2013-12-25 00:32:27 +02:00
Awilum
03e5fc320c Email Layout: footer fixes 2013-12-25 00:24:00 +02:00
Awilum
b29abf8da1 Gelato: Number Class - updated bytes format (JEDEC & IEC 60027) by mbarzda 2013-12-25 00:08:56 +02:00
Awilum
6f55f9238b Readme Updated 2013-12-25 00:04:14 +02:00
Awilum
ad870b2120 new favicon added #182 2013-12-24 23:58:57 +02:00
Awilum
d9ea1c3d7c Merge branch 'master' 2013-12-24 23:52:02 +02:00
Sergey Romanenko
6531d3ee87 Update Image.php 2013-12-24 21:01:55 +02:00
Sergey Romanenko
c7935e6636 Update README.md 2013-12-24 14:19:42 +02:00
Sergey Romanenko
a33d1a39d9 Update README.md 2013-12-24 10:24:04 +02:00
Sergey Romanenko
cbaa84f50e Update README.md 2013-12-24 10:22:14 +02:00
Sergey Romanenko
339413581d Update README.md 2013-12-24 10:21:45 +02:00
Sergey Romanenko
7696d90752 Installer: SERVER_PORT issue - fixed by KANekT 2013-12-23 16:44:08 +02:00
Sergey Romanenko
c83bb55df3 Merge pull request #179 from bernte/patch-1
Update login.template.php
2013-12-23 00:15:46 -08:00
Sergey Romanenko
e76cd74d5b Merge pull request #181 from bernte/patch-3
Update index.template.php
2013-12-23 00:13:31 -08:00
bernte
099b206e66 Update index.template.php 2013-12-23 03:47:11 +01:00
bernte
10a6b56b34 Update login.template.php
added year
2013-12-22 23:49:47 +01:00
Sergey Romanenko
8e83ca5bd1 Merge pull request #178 from bernte/patch-2
Update Javascript.php
2013-12-22 14:41:55 -08:00
bernte
524052b4bf Update Javascript.php
adding a linebreak for sourcecode after <script> ... </script>
2013-12-22 23:23:32 +01:00
Sergey Romanenko
f4eaded4f3 Merge pull request #177 from bernte/patch-1
Update actions.php
2013-12-22 14:20:40 -08:00
bernte
2efff484fc Update actions.php
adding a linebreak for sourcecode after
`
<meta name="generator" content="Powered by Monstra 2.3.0" />`
2013-12-22 23:16:49 +01:00
Awilum
b134abb96e Merge branch 'master' 2013-12-22 23:34:50 +02:00
Awilum
1a1bfabda0 Sitemap Errors #175 - fixes 2013-12-22 23:31:38 +02:00
Sergey Romanenko
a8ea2d4e02 Merge pull request #176 from bernte/patch-20
Update install.php
2013-12-22 11:43:44 -08:00
Sergey Romanenko
ce571b6ef3 Merge pull request #173 from bernte/patch-18
Update 2.page.txt
2013-12-22 11:41:39 -08:00
Sergey Romanenko
ac3eeb1508 Merge pull request #172 from bernte/patch-17
Update bootstrap.js
2013-12-22 11:38:59 -08:00
Sergey Romanenko
e9691d6b71 Merge pull request #174 from bernte/patch-19
Update footer.chunk.php
2013-12-22 11:38:08 -08:00
Sergey Romanenko
7734822789 Merge pull request #171 from bernte/patch-16
Update de.lang.php
2013-12-22 11:37:23 -08:00
Sergey Romanenko
75af5452bc Merge pull request #170 from bernte/patch-15
Update de.lang.php
2013-12-22 11:37:06 -08:00
Sergey Romanenko
c9019ca5fa Merge pull request #169 from bernte/patch-13
Update login.template.php
2013-12-22 10:39:08 -08:00
bernte
ee8e1abfd4 Update install.php
replaced invalid code
2013-12-22 19:27:03 +01:00
bernte
6b576be9a5 Update footer.chunk.php
made validation fixes for demo site
2013-12-22 15:13:06 +01:00
bernte
e823494ab5 Update 2.page.txt
made validation fixes for demo site
2013-12-22 15:07:39 +01:00
bernte
f7f3b91f46 Update bootstrap.js 2013-12-22 02:46:46 +01:00
bernte
0c90ab6bfe Update de.lang.php 2013-12-22 02:41:36 +01:00
bernte
35b75e9027 Update de.lang.php 2013-12-22 02:39:17 +01:00
bernte
2d5eb31569 Update login.template.php
added alt tag and backslash
2013-12-22 02:32:56 +01:00
Awilum
2c3d224e62 Frontend Improvements 2013-12-17 11:01:24 +02:00
Awilum
2fbb4c30c3 Frontend Improvements 2013-12-16 10:03:24 +02:00
Awilum
0dfc0e5951 Engine Alert: use Messenger Library 2013-12-15 16:36:19 +02:00
Awilum
fc4d4cde4f Frontend Improvements 2013-12-15 16:35:26 +02:00
Awilum
b23f2b9c5a Messenger Library - Admin integration 2013-12-15 16:34:40 +02:00
Awilum
4f35153ac2 Messenger Library - Added 2013-12-15 16:31:48 +02:00
Awilum
82f02a7ab5 Default Theme - use Twitter Bootstrap 3.x.x 2013-12-14 00:43:06 +02:00
Awilum
16975a3062 Update Twitter Bootstrap to 3.0.3 2013-12-14 00:42:43 +02:00
Awilum
9b4ff3e2e3 Frontend Improvements 2013-12-14 00:40:55 +02:00
Awilum
798f558558 Frontend Improvements 2013-12-14 00:38:58 +02:00
719 changed files with 69669 additions and 12121 deletions

View File

@@ -1,3 +1,63 @@
Monstra 3.0.0, 2014-08-01
------------------------
- Mobile Ready! Monstra fully responsive for mobile devices, tablets, and normal computer screens.
- Twitter Bootstrap updated to 3.1.1
- Idiorm updated to 1.4.1
- jQuery updated to 2.1.0
- Admin: New Modern User Interface
- Site: New default theme
- Layout fixes according to World Wide Web Consortium (W3C) Standards
- Prefetch DNS to reduce look up times
- Files Manager: added ability to create & rename directories.
- Files Manager: Maximum upload file size message - added.
- Files Manager: Bootstrap fileinput.js updated to 3.0.0
- Files Manager: File Info Popup
- Backup: Restore Site from Backup added
- Plugins Manager: Uploading new plugins via the admin panel added
- Plugins Manager: Read plugin help(README.MD) ability added.
- Responsive Chocolat Lightbox instead of TB Lightbox
- Blog Plugin as a part of Monstra CMS
- CodeMirror Plugin as a part of Monstra CMS
- Markdown Plugin as a part of Monstra CMS
- MarkItUp Color Pallete fixes
- Site Url without trailing slashes
- Admin Help Section - added.
- Pages Plugin: tags field added.
- Pages Plugin: Meta Title added.
- Sitemap Errors Fixes.
- Monstra automatically renames files - fixed
- Monstra Dashboard created and set as default Plugin for Admin Panel
- Ink Framework for Monstra Email Templates
- iCheck plugin for checkboxes added.
- Emails Manager Plugin added.
- HubSpot Messaging Library added for notifications
- Gelato: Unzip Functionality added.
- Gelato: Number Class new method convertToBytes() added.
- Gelato: ErroHandler styles updates
- Users Plugin getGravatarURL() improve
- Plugin API - Actions - Closure support added.
- Plugin API - Filters - Closure support added.
- Core: Better statuses notification (error,success,warning)
- Core: Store user_email in Session
- Core: Javascript may be broken if there is no break line - fixed
- Core: Added ability to avoid caching JS/CSS by the browser.
- Core: Monstra automatically rename files Issue - fixed
- Sandbox Plugin cleanup
- New Flags: Japanese(JA), Indonesian(ID), Chinese(ZH-CN), Turkish(TR) added.
- Localization: Japanese(JA), Indonesian(ID), Chinese(ZH-CN), Turkish(TR) translations added.
- Localization: Major Fixes
Monstra 2.3.1, 2013-12-25
------------------------
- Localization: Major Fixes
- Gelato: Image.php Major Fixes
- Sitemap: Errors #175 - fixes
- New favicon added #182 - by bernte
- Layouts: General Fixes - by bernte
- Installer: SERVER_PORT issue - fixed by KANekT
- Gelato: Number Class - updated bytes format (JEDEC & IEC 60027) by mbarzda
- Email Layout: footer fixes
Monstra 2.3.0, 2013-12-19
------------------------
- Update Twitter Bootstrap to 2.3.2
@@ -238,7 +298,7 @@ Monstra 1.1.4, 2012-06-09
------------------------
- Improve Monstra Error Handler
Monstra 1.1.3, 2012-06-06
Monstra 1.1.3, 2012-06-06
------------------------
- Improve Monstra Error Handler

View File

@@ -218,4 +218,4 @@ The hypothetical commands `show w' and `show c' should show the appropriate part
You should also get your employer (if you work as a programmer) or school, if any, to sign a <20>copyright disclaimer<65> for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see <http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read <http://www.gnu.org/philosophy/why-not-lgpl.html>.
The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read <http://www.gnu.org/philosophy/why-not-lgpl.html>.

View File

@@ -1,12 +1,10 @@
# Monstra CMS
Fast and small content management system written in PHP!
Monstra is a modern and lightweight Content Management System.
## System Requirements
- UNIX/Linux host
- PHP 5.2.3 or higher
- SimpleXML Module
- Apache Mod Rewrite
- Multibyte String
Operation system: Unix, Linux, Windows, Mac OS
Middleware: PHP 5.2.3 or higher with PHP's [SimpleXML module](http://php.net/simplexml) and [Multibyte String module](http://php.net/mbstring)
Webserver: Apache with [Mod Rewrite](http://httpd.apache.org/docs/current/mod/mod_rewrite.html) or Ngnix with [Rewrite Module](http://wiki.nginx.org/HttpRewriteModule)
## Steps to Install
1. [Download the latest version.](http://monstra.org/download)
@@ -30,4 +28,4 @@ Fast and small content management system written in PHP!
- [Documentation](http://monstra.org/documentation)
- [Github Repository](https://github.com/Awilum/monstra-cms)
Copyright (C) 2012-2014 Romanenko Sergey / Awilum [awilum@msn.com]
Copyright (C) 2012-2014 Romanenko Sergey / Awilum [awilum@msn.com]

View File

@@ -48,6 +48,7 @@ if (Request::post('login_submit')) {
Session::set('user_id', (int) $user['id']);
Session::set('user_login', (string) $user['login']);
Session::set('user_role', (string) $user['role']);
Session::set('user_email', (string) $user['email']);
Request::redirect('index.php');
}
} else {
@@ -81,6 +82,9 @@ if (Request::post('login_submit')) {
}
}
}
Notification::setNow('error', $login_error);
}
// Errors
@@ -116,13 +120,13 @@ if (Request::post('reset_password_submit')) {
$mail->AddReplyTo(Option::get('system_email'));
$mail->AddAddress($user['email'], $user['login']);
$mail->Subject = __('Your login details for :site_name', 'users', array(':site_name' => $site_name));
$mail->MsgHTML(View::factory('box/users/views/emails/layout_email')
$mail->MsgHTML(View::factory('box/emails/views/emails/email_layout')
->assign('site_url', $site_url)
->assign('site_name', $site_name)
->assign('user_id', $user['id'])
->assign('user_login', $user['login'])
->assign('new_hash', $new_hash)
->assign('view', 'reset_password_email')
->assign('email_template', 'reset-password')
->render());
$mail->Send();
@@ -131,7 +135,7 @@ if (Request::post('reset_password_submit')) {
Notification::set('reset_password', 'reset_password');
// Redirect to password-reset page
Request::redirect(Site::url().'admin');
Request::redirect(Site::url().'/admin');
}
@@ -157,7 +161,7 @@ if ($is_admin) {
if (Request::get('id')) {
$area = Request::get('id');
} else {
Request::redirect('index.php?id=pages');
Request::redirect('index.php?id=dashboard');
}
$plugins_registered = Plugin::$plugins;

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

View File

@@ -2,135 +2,169 @@
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-dns-prefetch-control" content="on">
<link rel="dns-prefetch" href="<?php echo Site::url(); ?>" />
<link rel="dns-prefetch" href="//www.google-analytics.com" />
<link rel="dns-prefetch" href="//www.gravatar.com" />
<title>Monstra :: <?php echo __('Administration', 'system'); ?></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Monstra admin area" />
<link rel="icon" href="<?php echo Option::get('siteurl'); ?>favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="<?php echo Option::get('siteurl'); ?>favicon.ico" type="image/x-icon" />
<meta name="description" content="Monstra Admin Area" />
<link rel="icon" href="<?php echo Option::get('siteurl'); ?>/favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="<?php echo Option::get('siteurl'); ?>/favicon.ico" type="image/x-icon" />
<!-- Styles -->
<?php Stylesheet::add('public/assets/css/bootstrap.css', 'backend', 1); ?>
<?php Stylesheet::add('public/assets/css/bootstrap-lightbox.css', 'backend', 2); ?>
<link rel="stylesheet" href="<?php echo Site::url(); ?>/public/assets/css/bootstrap.css" type="text/css" />
<link rel="stylesheet" href="<?php echo Site::url(); ?>/public/assets/css/messenger.css" type="text/css" />
<link rel="stylesheet" href="<?php echo Site::url(); ?>/public/assets/css/messenger-theme-flat.css" type="text/css" />
<?php Stylesheet::add('public/assets/css/chocolat.css', 'backend', 2); ?>
<?php Stylesheet::add('public/assets/css/bootstrap-fileupload.css', 'backend', 3); ?>
<?php Stylesheet::add('public/assets/css/bootstrap-responsive.css', 'backend', 4); ?>
<?php Stylesheet::add('public/assets/css/icheck-blue.css', 'backend', 4); ?>
<?php Stylesheet::add('admin/themes/default/css/default.css', 'backend', 5); ?>
<?php Stylesheet::load(); ?>
<!-- JavaScripts -->
<?php Javascript::add('public/assets/js/jquery.js', 'backend', 1); ?>
<?php Javascript::add('public/assets/js/bootstrap.js', 'backend', 2); ?>
<?php Javascript::add('public/assets/js/bootstrap-lightbox.js', 'backend', 3); ?>
<script src="<?php echo Site::url(); ?>/public/assets/js/jquery.min.js"></script>
<script src="<?php echo Site::url(); ?>/public/assets/js/bootstrap.min.js"></script>
<script src="<?php echo Site::url(); ?>/public/assets/js/messenger.min.js"></script>
<script src="<?php echo Site::url(); ?>/public/assets/js/icheck.min.js"></script>
<?php Javascript::add('public/assets/js/jquery.chocolat.js', 'backend', 3); ?>
<?php Javascript::add('public/assets/js/bootstrap-fileupload.js', 'backend', 4); ?>
<?php Javascript::add('admin/themes/default/js/default.js', 'backend', 5); ?>
<?php Javascript::load(); ?>
<?php Action::run('admin_header'); ?>
<script>
$(document).ready(function() {
$('.chocolat').Chocolat({
overlayColor : '#000',
leftImg : "<?php echo Option::get('siteurl'); ?>/public/assets/img/chocolat/left.gif",
rightImg : "<?php echo Option::get('siteurl'); ?>/public/assets/img/chocolat/right.gif",
closeImg : "<?php echo Option::get('siteurl'); ?>/public/assets/img/chocolat/close.gif",
loadingImg : "<?php echo Option::get('siteurl'); ?>/public/assets/img/chocolat/loading.gif"
});
$('input').iCheck({
checkboxClass: 'icheckbox_square-blue',
radioClass: 'iradio_square-blue',
increaseArea: '20%'
});
});
</script>
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<link rel="stylesheet" href="css/ie.css" type="text/css" media="screen" />
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7/html5shiv.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.js"></script>
<![endif]-->
</head>
</head>
<body>
<body class="page-<?php echo Request::get('id'); ?>">
<!-- Block_topbar -->
<div class="monstra-header">
<div class="monstra-header-inner">
<div class="container-fluid">
<a class="brand" href="<?php echo Option::get('siteurl'); ?>admin"><img src="<?php echo Option::get('siteurl'); ?>public/assets/img/monstra-logo.png" height="27" width="171"></a>
<p class="pull-right">
<?php Navigation::draw('top', Navigation::TOP); ?>
</p>
</div>
</div>
</div>
<!-- /Block_topbar -->
<nav class="navbar navbar-default navbar-inverse" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="<?php echo Site::url(); ?>/admin/index.php?id=dashboard">MONSTRA</a>
</div>
<!-- Block_container -->
<div class="container-fluid">
<div class="row-fluid">
<!-- Block_sidebar -->
<div class="span2 monstra-menu-sidebar">
<div class="hidden-desktop">
<select class="input-block-level" name="sections" id="sections">
<?php
Navigation::getDropdown('content');
Navigation::getDropdown('extends');
Navigation::getDropdown('system');
?>
</select>
</div>
<div class="hidden-phone hidden-tablet">
<h3><?php echo __('Content', 'pages'); ?></h3>
<ul>
<?php Navigation::draw('content'); ?>
</ul>
<div class="monstra-menu-category-separator"></div>
<?php if (Session::exists('user_role') && in_array(Session::get('user_role'), array('admin'))) { ?>
<h3><?php echo __('Extends', 'system'); ?></h3>
<ul>
<?php Navigation::draw('extends'); ?>
</ul>
<div class="monstra-menu-category-separator"></div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
<li<?php if (Request::get('id') == 'dashboard') { ?> class="active"<?php } ?>><a href="<?php echo Site::url(); ?>/admin/index.php?id=dashboard"><?php echo __('Dashboard', 'dashboard'); ?></a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><?php echo __('Content', 'pages'); ?> <b class="caret"></b></a>
<ul class="dropdown-menu">
<?php Navigation::draw('content'); ?>
</ul>
</li>
<?php if (Session::exists('user_role') && in_array(Session::get('user_role'), array('admin'))) { ?>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><?php echo __('Extends', 'system'); ?> <b class="caret"></b></a>
<ul class="dropdown-menu">
<?php Navigation::draw('extends'); ?>
</ul>
</li>
<?php } ?>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><?php echo __('System', 'system'); ?> <b class="caret"></b></a>
<ul class="dropdown-menu">
<?php Navigation::draw('system'); ?>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><?php echo __('Help', 'system'); ?> <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="http://monstra.org/documentation" target="_blank"><?php echo __('Documentation', 'system'); ?></a></li>
<?php if (Option::get('language') == 'ru') { ?>
<li><a href="http://ru.forum.monstra.org" target="_blank"><?php echo __('Official Support Forum', 'system'); ?></a></li>
<?php } else { ?>
<li><a href="http://forum.monstra.org" target="_blank"><?php echo __('Official Support Forum', 'system'); ?></a></li>
<?php } ?>
<h3><?php echo __('System', 'system'); ?></h3>
<ul>
<?php Navigation::draw('system'); ?>
</ul>
</ul>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li><a href="<?php echo Site::url(); ?>" target="_blank"><?php echo __('View Site', 'system'); ?></a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><?php echo Session::get('user_login'); ?> <img src="<?php echo Users::getGravatarURL(Session::get('user_email'), 28); ?>" alt=""> <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="<?php echo Site::url(); ?>/admin/index.php?id=users&action=edit&user_id=<?php echo Session::get('user_id'); ?>"><?php echo __('Profile', 'users')?></a></li>
<li><a href="<?php echo Site::url(); ?>/admin/?logout=do"><?php echo __('Log Out', 'users'); ?></a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
</div>
</div>
<!-- /Block_sidebar -->
<!-- Block_content -->
<div class="span10 monstra-content">
<div id="update-monstra"></div>
<div><?php Action::run('admin_pre_template'); ?></div>
<div>
<?php
if ($plugin_admin_area) {
if (is_callable(ucfirst(Plugin::$plugins[$area]['id']).'Admin::main')) {
call_user_func(ucfirst(Plugin::$plugins[$area]['id']).'Admin::main');
} else {
echo '<div class="message-error">'.__('Plugin main admin function does not exist', 'system').'</div>';
}
} else {
echo '<div class="message-error">'.__('Plugin does not exist', 'system').'</div>';
}
?>
</div>
<div><?php Action::run('admin_post_template'); ?></div>
</div>
<!-- /Block_content -->
<div class="container">
<?php
// Monstra Notifications
Notification::get('success') AND Alert::success(Notification::get('success'));
Notification::get('warning') AND Alert::warning(Notification::get('warning'));
Notification::get('error') AND Alert::error(Notification::get('error'));
?>
<div id="update-monstra"></div>
<div><?php Action::run('admin_pre_template'); ?></div>
<div>
<?php
if ($plugin_admin_area) {
if (is_callable(ucfirst(Plugin::$plugins[$area]['id']).'Admin::main')) {
call_user_func(ucfirst(Plugin::$plugins[$area]['id']).'Admin::main');
} else {
echo '<div class="message-error">'.__('Plugin main admin function does not exist', 'system').'</div>';
}
} else {
echo '<div class="message-error">'.__('Plugin does not exist', 'system').'</div>';
}
?>
</div>
<!-- Block_footer -->
<footer>
<p class="pull-right">
<span style="border-top:1px solid #E0E0E0; padding-top:10px;">
<span class="hidden-phone">
<a href="http://forum.monstra.org" target="_blank"><?php echo __('Official Support Forum', 'system'); ?></a> /
<a href="http://monstra.org/documentation" target="_blank"><?php echo __('Documentation', 'system'); ?></a> /
</span>
© 2012 - 2014 <a href="http://monstra.org" target="_blank">Monstra</a> <?php echo __('Version', 'system'); ?> <?php echo Monstra::VERSION; ?>
</span>
</p>
</footer>
<!-- /Block_footer -->
</div>
<!-- /Block_container -->
<div><?php Action::run('admin_post_template'); ?></div>
</div>
<div class="margin-top-1 margin-bottom-1 hidden-md"></div>
<footer class="container visible-md visible-lg">
<p class="pull-right">
<span>
<?php if (Option::get('language') == 'ru') { ?>
<a href="http://ru.forum.monstra.org" target="_blank"><?php echo __('Official Support Forum', 'system'); ?></a> /
<?php } else { ?>
<a href="http://forum.monstra.org" target="_blank"><?php echo __('Official Support Forum', 'system'); ?></a> /
<?php } ?>
<a href="http://monstra.org/documentation" target="_blank"><?php echo __('Documentation', 'system'); ?></a> /
© 2012 - 2014 <a href="http://monstra.org" target="_blank">Monstra</a> <?php echo __('Version', 'system'); ?> <?php echo Monstra::VERSION; ?>
</span>
</p>
</footer>
</body>
</html>

View File

@@ -1,26 +1,23 @@
/**
* Monstra JS module
* @package Monstra
* @author Romanenko Sergey / Awilum
* @copyright 2012 Romanenko Sergey / Awilum
* @version $Id$
* @since 1.0.0
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
* Monstra is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYING.txt for copyright notices and details.
* @filesource
* Monstra JS module
*
* This source file is part of the Monstra Engine. More information,
* documentation and tutorials can be found at http://monstra.org
*
* @package Monstra
*
* @author Romanenko Sergey / Awilum <awilum@msn.com>
* @copyright 2012-2014 Romanenko Sergey / Awilum <awilum@msn.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
/* Confirm delete */
function confirmDelete(msg){var data=confirm(msg+" ?"); return data;}
$(document).ready(function() {
/* DropDown Menu for Mobile Devices */
$("#sections").change(function(){
window.location = $('#sections option:selected').attr('rel');
});
});
/* Messanger */
Messenger.options = {
extraClasses: 'messenger-fixed messenger-on-bottom messenger-on-right',
theme: 'flat'
}

View File

@@ -5,22 +5,28 @@
<title>Monstra :: <?php echo __('Administration', 'system'); ?></title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Monstra Admin Area">
<link rel="icon" href="<?php echo Option::get('siteurl'); ?>favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="<?php echo Option::get('siteurl'); ?>favicon.ico" type="image/x-icon" />
<link rel="icon" href="<?php echo Option::get('siteurl'); ?>/favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="<?php echo Option::get('siteurl'); ?>/favicon.ico" type="image/x-icon" />
<!-- Styles -->
<?php Stylesheet::add('public/assets/css/bootstrap.css', 'backend', 1); ?>
<link rel="stylesheet" href="<?php echo Site::url(); ?>/public/assets/css/bootstrap.css" type="text/css" />
<link rel="stylesheet" href="<?php echo Site::url(); ?>/public/assets/css/messenger.css" type="text/css" />
<link rel="stylesheet" href="<?php echo Site::url(); ?>/public/assets/css/messenger-theme-flat.css" type="text/css" />
<?php Stylesheet::add('public/assets/css/bootstrap-lightbox.css', 'backend', 2); ?>
<?php Stylesheet::add('public/assets/css/bootstrap-responsive.css', 'backend', 3); ?>
<?php Stylesheet::add('admin/themes/default/css/default.css', 'backend', 4); ?>
<?php Stylesheet::add('public/assets/css/bootstrap-fileupload.css', 'backend', 3); ?>
<?php Stylesheet::add('admin/themes/default/css/default.css', 'backend', 5); ?>
<?php Stylesheet::load(); ?>
<!-- JavaScripts -->
<?php Javascript::add('public/assets/js/jquery.js', 'backend', 1); ?>
<?php Javascript::add('public/assets/js/bootstrap.js', 'backend', 2); ?>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="<?php echo Site::url(); ?>/public/assets/js/bootstrap.min.js"></script>
<script src="<?php echo Site::url(); ?>/public/assets/js/messenger.min.js"></script>
<script src="<?php echo Site::url(); ?>/public/assets/js/messenger-theme-flat.js"></script>
<?php Javascript::add('public/assets/js/bootstrap-lightbox.js', 'backend', 3); ?>
<?php Javascript::add('admin/themes/default/js/default.js', 'backend', 4); ?>
<?php Javascript::add('public/assets/js/bootstrap-fileupload.js', 'backend', 4); ?>
<?php Javascript::add('admin/themes/default/js/default.js', 'backend', 5); ?>
<?php Javascript::load(); ?>
<script type="text/javascript">
$().ready(function () {
<?php if (Notification::get('reset_password') == 'reset_password') { ?>
@@ -45,47 +51,56 @@
<?php Action::run('admin_header'); ?>
<!--[if lt IE 9]>
<link rel="stylesheet" href="css/ie.css" type="text/css" media="screen" />
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7/html5shiv.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.js"></script>
<![endif]-->
</head>
<body class="login-body">
<?php
// Monstra Notifications
Notification::get('success') AND Alert::success(Notification::get('success'));
Notification::get('warning') AND Alert::warning(Notification::get('warning'));
Notification::get('error') AND Alert::error(Notification::get('error'));
?>
<div class="container form-signin">
<div style="text-align:center;"><a class="brand" href="<?php echo Option::get('siteurl'); ?>admin"><img src="<?php echo Option::get('siteurl'); ?>public/assets/img/monstra-logo.png" height="27" width="171"></a></div>
<div class="administration-area">
<hr>
<div class="text-center"><a class="brand" href="<?php echo Option::get('siteurl'); ?>/admin"><img src="<?php echo Option::get('siteurl'); ?>/public/assets/img/monstra-logo-256px.png" alt="monstra" /></a></div>
<div class="administration-area well">
<div>
<h2 style="text-align:center;"><?php echo __('Administration', 'system'); ?></h2><br />
<form method="post">
<label><?php echo __('Username', 'users'); ?></label>
<input class="input-xlarge" name="login" type="text" />
<label><?php echo __('Password', 'users'); ?></label>
<input class="input-xlarge" name="password" type="password" />
<br />
<?php if (isset($login_error) && $login_error !== '') { ?><div class="alert alert-error"><?php echo $login_error; ?></div><?php } ?>
<input type="submit" name="login_submit" class="btn" value="<?php echo __('Log In', 'users'); ?>" />
<div class="form-group">
<label><?php echo __('Username', 'users'); ?></label>
<input class="form-control" name="login" type="text" />
</div>
<div class="form-group">
<label><?php echo __('Password', 'users'); ?></label>
<input class="form-control" name="password" type="password" />
</div>
<div class="form-group">
<input type="submit" name="login_submit" class="btn btn-primary" value="<?php echo __('Log In', 'users'); ?>" />
</div>
</form>
</div>
</div>
<div class="reset-password-area">
<hr>
<div class="reset-password-area well">
<div>
<h2 style="text-align:center;"><?php echo __('Reset Password', 'users'); ?></h2><br />
<?php if (Notification::get('success')) Alert::success(Notification::get('success')); ?>
<form method="post">
<div class="form-group">
<label><?php echo __('Username', 'users'); ?></label>
<input name="login" class="input-xlarge" type="text" value="<?php echo $user_login; ?>" />
<input name="login" class="form-control" type="text" value="<?php echo $user_login; ?>" />
</div>
<?php if (Option::get('captcha_installed') == 'true') { ?>
<div class="form-group">
<label><?php echo __('Captcha', 'users'); ?></label>
<input type="text" name="answer" class="input-xlarge">
<input type="text" name="answer" class="form-control">
<br>
<?php CryptCaptcha::draw(); ?>
</div>
<?php } ?>
<br>
<?php
@@ -95,24 +110,29 @@
}
}
?>
<input type="submit" name="reset_password_submit" class="btn" value="<?php echo __('Send New Password', 'users')?>" />
<div class="form-group">
<input type="submit" name="reset_password_submit" class="btn btn-primary" value="<?php echo __('Send New Password', 'users')?>" />
</div>
</form>
</div>
</div>
<hr>
<div>
<div style="text-align:center;">
<a class="small-grey-text" href="<?php echo Option::get('siteurl'); ?>"><?php echo __('< Back to Website', 'system');?></a> -
<a class="small-grey-text reset-password-btn" href="javascript:;"><?php echo __('Forgot your password? >', 'system');?></a>
<a class="small-grey-text administration-btn" href="javascript:;"><?php echo __('Administration >', 'system');?></a>
</div>
</div>
</div>
<div style="text-align:center">
<span class="small-grey-text">© 2012 <a href="http://monstra.org" class="small-grey-text" target="_blank">Monstra</a> <?php echo __('Version', 'system'); ?> <?php echo Monstra::VERSION; ?></span>
<div class="login-footer">
<div class="text-center">
<a href="<?php echo Option::get('siteurl'); ?>"><?php echo __('Back to Website', 'system');?></a> -
<a class="reset-password-btn" href="javascript:;"><?php echo __('Forgot your password ?', 'system');?></a>
<a class="administration-btn" href="javascript:;"><?php echo __('Log In', 'users');?></a>
</div>
<div class="text-center">
<span>© 2012 - 2014 <a href="http://monstra.org" class="small-grey-text" target="_blank">Monstra</a> <?php echo __('Version', 'system'); ?> <?php echo Monstra::VERSION; ?></span>
</div>
</div>
</body>
</html>

View File

@@ -35,16 +35,21 @@ class Alert
* </code>
*
* @param string $message Message
* @param integer $time Time
* @param integer $seconds Seconds
*/
public static function success($message, $time = 3000)
public static function success($message, $seconds = 3)
{
// Redefine vars
$message = (string) $message;
$time = (int) $time;
$seconds = (int) $seconds;
echo '<div class="alert alert-info">'.$message.'</div>
<script type="text/javascript">setTimeout(\'$(".alert").slideUp("slow")\', '.$time.'); </script>';
echo '<script type="text/javascript">
Messenger().post({
type: "success",
message : "'.$message.'",
hideAfter: '.$seconds.'
});
</script>';
}
/**
@@ -55,16 +60,21 @@ class Alert
* </code>
*
* @param string $message Message
* @param integer $time Time
* @param integer $seconds Seconds
*/
public static function warning($message, $time = 3000)
public static function warning($message, $seconds = 3)
{
// Redefine vars
$message = (string) $message;
$time = (int) $time;
$seconds = (int) $seconds;
echo '<div class="alert alert-warning">'.$message.'</div>
<script type="text/javascript">setTimeout(\'$(".alert").slideUp("slow")\', '.$time.'); </script>';
echo '<script type="text/javascript">
Messenger().post({
type: "info",
message : "'.$message.'",
hideAfter: '.$seconds.'
});
</script>';
}
/**
@@ -75,16 +85,21 @@ class Alert
* </code>
*
* @param string $message Message
* @param integer $time Time
* @param integer $seconds Seconds
*/
public static function error($message, $time = 3000)
public static function error($message, $seconds = 3)
{
// Redefine vars
$message = (string) $message;
$time = (int) $time;
$seconds = (int) $seconds;
echo '<div class="alert alert-error">'.$message.'</div>
<script type="text/javascript">setTimeout(\'$(".alert").slideUp("slow")\', '.$time.'); </script>';
echo '<script type="text/javascript">
Messenger().post({
type: "error",
message : "'.$message.'",
hideAfter: '.$seconds.'
});
</script>';
}
}

View File

@@ -39,7 +39,8 @@ class Monstra
/**
* The version of Monstra
*/
const VERSION = '2.3.0';
const VERSION = '3.0.0';
/**
* Monstra environment
@@ -188,7 +189,7 @@ class Monstra
}
/**
* Auto cleanup if MONSTRA_DEBUG is TRUE
* Auto cleanup if DEVELOPMENT environment
*/
if (Monstra::$environment == Monstra::DEVELOPMENT) {
Monstra::cleanTmp();

View File

@@ -47,7 +47,7 @@ class Action
* </code>
*
* @param string $action_name Action name
* @param string $added_function Added function
* @param mixed $added_function Added function
* @param integer $priority Priority. Default is 10
* @param array $args Arguments
*/
@@ -56,7 +56,7 @@ class Action
// Hooks a function on to a specific action.
Action::$actions[] = array(
'action_name' => (string) $action_name,
'function' => (string) $added_function,
'function' => $added_function,
'priority' => (int) $priority,
'args' => $args
);

View File

@@ -91,7 +91,7 @@ class Filter
* </code>
*
* @param string $filter_name The name of the filter to hook the $function_to_add to.
* @param string $function_to_add The name of the function to be called when the filter is applied.
* @param mixed $function_to_add The name of the function to be called when the filter is applied.
* @param integer $priority Function to add priority - default is 10.
* @param integer $accepted_args The number of arguments the function accept default is 1.
* @return boolean
@@ -100,7 +100,7 @@ class Filter
{
// Redefine arguments
$filter_name = (string) $filter_name;
$function_to_add = (string) $function_to_add;
$function_to_add = $function_to_add;
$priority = (int) $priority;
$accepted_args = (int) $accepted_args;

View File

@@ -38,6 +38,7 @@ class I18n
'gl' => 'Galego',
'hu' => 'Magyar',
'it' => 'Italiano',
'id' => 'Bahasa Indonesia',
'ja' => '日本語',
'lt' => 'Lietuvių',
'nl' => 'Nederlands',
@@ -52,7 +53,7 @@ class I18n
'sr-yu' => 'Serbian',
'tr' => 'Türkçe',
'uk' => 'Українська',
'zh' => '中文',
'zh-cn' => '中文',
);
/**

View File

@@ -92,7 +92,7 @@ class Javascript
if ($backend_regenerate) {
foreach ($javascripts as $javascript) {
if ((file_exists(ROOT . DS . $javascript['file'])) and (($javascript['load'] == 'backend') or ($javascript['load'] == 'both')) ) {
$backend_buffer .= file_get_contents(ROOT . DS . $javascript['file']);
$backend_buffer .= file_get_contents(ROOT . DS . $javascript['file'])."\n";
}
}
file_put_contents($backend_site_js_path, $backend_buffer);
@@ -115,7 +115,7 @@ class Javascript
if ($frontend_regenerate) {
foreach ($javascripts as $javascript) {
if ((file_exists(ROOT . DS . $javascript['file'])) and (($javascript['load'] == 'frontend') or ($javascript['load'] == 'both')) ) {
$frontend_buffer .= file_get_contents(ROOT . DS . $javascript['file']);
$frontend_buffer .= file_get_contents(ROOT . DS . $javascript['file'])."\n";
}
}
file_put_contents($frontend_site_js_path, $frontend_buffer);
@@ -126,11 +126,19 @@ class Javascript
// Render
if (BACKEND) {
echo '<script type="text/javascript" src="'.Option::get('siteurl').'tmp/minify/backend_site.minify.js"></script>';
echo '<script type="text/javascript" src="'.Option::get('siteurl').'/tmp/minify/backend_site.minify.js?'.Option::get('javascript_version').'"></script>';
} else {
echo '<script type="text/javascript" src="'.Option::get('siteurl').'tmp/minify/frontend_site.minify.js"></script>';
echo '<script type="text/javascript" src="'.Option::get('siteurl').'/tmp/minify/frontend_site.minify.js?'.Option::get('javascript_version').'"></script>'."\n";
}
}
}
/**
* javascriptVersionIncrement
*/
public static function javascriptVersionIncrement() {
Option::update('javascript_version', (int) Option::get('javascript_version') + 1);
}
}

View File

@@ -128,9 +128,9 @@ class Stylesheet
// Render
if (BACKEND) {
echo '<link rel="stylesheet" href="'.Option::get('siteurl').'tmp/minify/backend_site.minify.css'.'" type="text/css" />';
echo '<link rel="stylesheet" href="'.Option::get('siteurl').'/tmp/minify/backend_site.minify.css?'.Option::get('styles_version').'" type="text/css" />';
} else {
echo '<link rel="stylesheet" href="'.Option::get('siteurl').'tmp/minify/frontend_site.minify.css'.'" type="text/css" />'."\n";
echo '<link rel="stylesheet" href="'.Option::get('siteurl').'/tmp/minify/frontend_site.minify.css?'.Option::get('styles_version').'" type="text/css" />'."\n";
}
}
}
@@ -144,9 +144,16 @@ class Stylesheet
'@theme_site_url',
'@theme_admin_url'),
array(Option::get('siteurl'),
Option::get('siteurl').'public/themes/'.Option::get('theme_site_name'),
Option::get('siteurl').'admin/themes/'.Option::get('theme_admin_name')),
Option::get('siteurl').'/public/themes/'.Option::get('theme_site_name'),
Option::get('siteurl').'/admin/themes/'.Option::get('theme_admin_name')),
$frontend_buffer);
}
/**
* stylesVersionIncrement
*/
public static function stylesVersionIncrement() {
Option::update('styles_version', (int) Option::get('styles_version') + 1);
}
}

View File

@@ -111,7 +111,7 @@ class Security
* </code>
*
* @param string $str String
* @param string $delimiter String delimiter
* @param mixed $delimiter String delimiter
* @param boolean $lowercase String Lowercase
* @return string
*/
@@ -119,9 +119,9 @@ class Security
{
// Redefine vars
$str = (string) $str;
$delimiter = (string) $delimiter;
$delimiter = $delimiter;
$lowercase = (bool) $lowercase;
$delimiter = (string) $delimiter;
$delimiter = $delimiter;
// Remove tags
$str = filter_var($str, FILTER_SANITIZE_STRING);
@@ -149,9 +149,11 @@ class Security
$str = iconv('UTF-8', 'ASCII//TRANSLIT', $str);
// Remove characters
$str = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $str );
$str = preg_replace("/[\/_|+ -]+/", $delimiter, $str );
$str = trim($str, $delimiter);
$str = preg_replace("/[^a-zA-Z0-9\/_|+ -]/", '', $str);
if ($delimiter != null) {
$str = preg_replace("/[\/_|+ -]+/", $delimiter, $str);
$str = trim($str, $delimiter);
}
// Lowercase
if ($lowercase === true) $str = Text::lowercase($str);

View File

@@ -4,4 +4,4 @@
* Set meta generator
*/
Action::add('theme_meta', 'setMetaGenerator');
function setMetaGenerator() { echo '<meta name="generator" content="Powered by Monstra '.Monstra::VERSION.'" />'; }
function setMetaGenerator() { echo '<meta name="generator" content="Powered by Monstra '.Monstra::VERSION.'" />'."\n"; }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -16,8 +16,14 @@
// Get array with the names of all modules compiled and loaded
$php_modules = get_loaded_extensions();
// Get server port
if ($_SERVER["SERVER_PORT"] == "80") $port = ""; else $port = ':'.$_SERVER["SERVER_PORT"];
// Get site URL
$site_url = 'http://'.$_SERVER["SERVER_NAME"].str_replace(array("index.php", "install.php"), "", $_SERVER['PHP_SELF']);
$site_url = 'http://'.$_SERVER["SERVER_NAME"].$port.str_replace(array("index.php", "install.php"), "", $_SERVER['PHP_SELF']);
// Replace last slash in site_url
$site_url = rtrim($site_url, '/');
// Rewrite base
$rewrite_base = str_replace(array("index.php", "install.php"), "", $_SERVER['PHP_SELF']);
@@ -29,16 +35,21 @@
$dir_array = array('public', 'storage', 'backups', 'tmp');
// Languages array
$languages_array = array('en', 'fr', 'de', 'it', 'es', 'lt', 'pl', 'pt-br', 'ru', 'uk', 'hu', 'fa' , 'sk', 'nl', 'sr-yu');
$languages_array = array('en', 'ru', 'fr', 'de', 'it', 'es', 'lt', 'pl', 'pt-br', 'hu', 'fa' , 'sk', 'uk', 'nl', 'sr-yu', 'id', 'ja', 'zh-cn', 'tr');
// Select Monstra language
if (Request::get('language')) {
if (Request::get('action') && Request::get('action') == 'install') {
$action = '?action=install';
} else {
$action = '';
}
if (in_array(Request::get('language'), $languages_array)) {
if (Option::update('language', Request::get('language'))) {
Request::redirect($site_url);
Request::redirect($site_url.$action);
}
} else {
Request::redirect($site_url);
Request::redirect($site_url.$action);
}
}
@@ -99,6 +110,8 @@
// Installation done :)
header("location: index.php?install=done");
} else {
Notification::setNow('errors', $errors);
}
}
?>
@@ -109,60 +122,75 @@
<title>Monstra :: Install</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Monstra Install Area">
<link rel="icon" href="<?php echo $site_url; ?>favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="<?php echo $site_url; ?>favicon.ico" type="image/x-icon" />
<link rel="stylesheet" href="<?php echo $site_url; ?>public/assets/css/bootstrap.css" media="all" type="text/css" />
<link rel="stylesheet" href="<?php echo $site_url; ?>public/assets/css/bootstrap-responsive.css" media="all" type="text/css" />
<link rel="stylesheet" href="<?php echo $site_url; ?>admin/themes/default/css/default.css" media="all" type="text/css" />
<link rel="icon" href="<?php echo $site_url; ?>/favicon.ico" type="image/x-icon" />
<link rel="shortcut icon" href="<?php echo $site_url; ?>/favicon.ico" type="image/x-icon" />
<link rel="stylesheet" href="<?php echo $site_url; ?>/public/assets/css/bootstrap.css" media="all" type="text/css" />
<link rel="stylesheet" href="<?php echo $site_url; ?>/admin/themes/default/css/default.css" media="all" type="text/css" />
<style>
.input-xlarge {
width: 285px;
.install-body {
margin-top: 40px;
background: #FAFAFA;
}
.install-languages {
margin: 0 auto 15px;
margin: 20px auto 20px;
text-align: center;
width: 390px;
width: 600px;
}
.install-block {
.install-block,
.monstra-dialog,
.install-block-footer {
margin: 0 auto;
float: none!important;
max-width: 300px;
padding: 19px 29px 29px;
background: none repeat scroll 0 0 #fff;
-webkit-box-shadow: 0 1px 5px rgba(0,0,0,.15);
-moz-box-shadow: 0 1px 5px rgba(0,0,0,.15);
box-shadow: 0 1px 5px rgba(0,0,0,.15);
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
width: 600px;
}
.install-block-footer {
margin: 0 auto;
float: none!important;
margin-top:10px;
margin-bottom:10px;
max-width: 300px;
margin-top: 20px;
margin-bottom: 20px;
}
.install-body {
background-color: #FBFBFB;
padding-top:40px;
.well {
border: none;
border-radius: 0px;
background: #fff;
color: #555;
-webkit-font-smoothing: subpixel-antialiased;
-webkit-box-shadow: 0 1px 3px rgba(0,0,0,.13);
box-shadow: 0 1px 3px rgba(0,0,0,.13);
}
.form-control {
border-radius: 0px;
}
.monstra-says {
margin: 20px;
}
.error {
color:#8E0505;
padding-top: 5px;
padding-bottom: 5px;
padding-top: 5px;
padding-bottom: 5px;
margin-bottom: 5px;
}
.ok {
color:#00853F;
padding-top: 5px;
padding-bottom: 5px;
margin-bottom: 5px;
}
.warn {
color: #F74C18;
padding-top: 5px;
padding-bottom: 5px;
}
.install-languages a {
@@ -172,13 +200,13 @@
.language-link img {
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";
filter: alpha(opacity=30);
-moz-opacity:0.3;
filter: alpha(opacity=30);
-khtml-opacity: 0.3;
opacity: 0.3;
-moz-opacity:0.3;
opacity: 0.3;
}
.language-link-current img{
.language-link-current img {
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
filter: alpha(opacity=100);
-moz-opacity:1.0;
@@ -194,30 +222,19 @@
opacity: 1.0;
}
@media (max-width: 480px) {
.input-xlarge {
width: 100%;
}
.install-languages {
text-align: left;
}
.install-languages a {
padding: 0;
}
.continue {
width: 100%;
}
</style>
<script type="text/javascript" src="<?php echo $site_url; ?>public/assets/js/jquery.js"></script>
<script type="text/javascript" src="<?php echo $site_url; ?>public/assets/js/bootstrap.js"></script>
<script src="<?php echo $site_url; ?>/public/assets/js/jquery.min.js"></script>
<script src="<?php echo $site_url; ?>/public/assets/js/bootstrap.min.js"></script>
</head>
<body class="install-body">
<?php
if (version_compare(PHP_VERSION, "5.2.0", "<")) {
if (version_compare(PHP_VERSION, "5.2.3", "<")) {
$errors['php'] = 'error';
} else {
$errors['php'] = '';
@@ -265,215 +282,260 @@
$errors[$dir] = 'error';
}
}
?>
?>
<div class="install-languages">
<?php foreach ($languages_array as $lang_code) { ?>
<a data-placement="top" class="language-link<?php if (Option::get('language') == $lang_code) echo ' language-link-current';?>" title="<?php echo I18n::$locales[$lang_code]; ?>" href="<?php echo $site_url.'?language=' . $lang_code; ?>"><img src="<?php echo $site_url; ?>public/assets/img/flags/<?php echo $lang_code?>.png" alt="<?php echo $lang_code?>"></a>
<?php } ?>
</div>
<div class="install-block">
<div style="text-align:center;"><a class="brand" href="<?php echo Html::toText($site_url); ?>"><img src="<?php echo $site_url; ?>public/assets/img/monstra-logo.png" height="27" width="171" alt="Monstra"></a></div>
<hr>
<div>
<form action="install.php" method="post">
<input type="hidden" name="php" value="<?php echo $errors['php']; ?>" />
<input type="hidden" name="simplexml" value="<?php echo $errors['simplexml']; ?>" />
<input type="hidden" name="mod_rewrite" value="<?php echo $errors['mod_rewrite']; ?>" />
<input type="hidden" name="install" value="<?php echo $errors['install']; ?>" />
<input type="hidden" name="sitemap" value="<?php echo $errors['sitemap']; ?>" />
<input type="hidden" name="htaccess" value="<?php echo $errors['htaccess']; ?>" />
<input type="hidden" name="public" value="<?php echo $errors['public']; ?>" />
<input type="hidden" name="storage" value="<?php echo $errors['storage']; ?>" />
<input type="hidden" name="backups" value="<?php echo $errors['backups']; ?>" />
<input type="hidden" name="tmp" value="<?php echo $errors['tmp']; ?>" />
<div class="text-center"><a class="brand" href="<?php echo Html::toText($site_url); ?>"><img src="<?php echo $site_url; ?>/public/assets/img/monstra-logo-256px.png" alt="Monstra"></a></div>
<label><?php echo __('Site Name', 'system'); ?></label>
<input class="input-xlarge" name="sitename" type="text" value="<?php if (Request::post('sitename')) echo Html::toText(Request::post('sitename')); ?>" />
<br />
<label><?php echo __('Site Url', 'system'); ?></label>
<input class="input-xlarge" name="siteurl" type="text" value="<?php echo Html::toText($site_url); ?>" />
<br />
<label><?php echo __('Username', 'users'); ?></label>
<input class="input-xlarge" class="login" name="login" value="<?php if(Request::post('login')) echo Html::toText(Request::post('login')); ?>" type="text" />
<br />
<label><?php echo __('Password', 'users'); ?></label>
<input class="input-xlarge" name="password" type="password" />
<br />
<label><?php echo __('Time zone', 'system'); ?></label>
<select class="input-xlarge" name="timezone">
<option value="Kwajalein">(GMT-12:00) International Date Line West</option>
<option value="Pacific/Samoa">(GMT-11:00) Midway Island, Samoa</option>
<option value="Pacific/Honolulu">(GMT-10:00) Hawaii</option>
<option value="America/Anchorage">(GMT-09:00) Alaska</option>
<option value="America/Los_Angeles">(GMT-08:00) Pacific Time (US &amp; Canada)</option>
<option value="America/Tijuana">(GMT-08:00) Tijuana, Baja California</option>
<option value="America/Denver">(GMT-07:00) Mountain Time (US &amp; Canada)</option>
<option value="America/Chihuahua">(GMT-07:00) Chihuahua, La Paz, Mazatlan</option>
<option value="America/Phoenix">(GMT-07:00) Arizona</option>
<option value="America/Regina">(GMT-06:00) Saskatchewan</option>
<option value="America/Tegucigalpa">(GMT-06:00) Central America</option>
<option value="America/Chicago">(GMT-06:00) Central Time (US &amp; Canada)</option>
<option value="America/Mexico_City">(GMT-06:00) Guadalajara, Mexico City, Monterrey</option>
<option value="America/New_York">(GMT-05:00) Eastern Time (US &amp; Canada)</option>
<option value="America/Bogota">(GMT-05:00) Bogota, Lima, Quito, Rio Branco</option>
<option value="America/Indiana/Indianapolis">(GMT-05:00) Indiana (East)</option>
<option value="America/Caracas">(GMT-04:30) Caracas</option>
<option value="America/Halifax">(GMT-04:00) Atlantic Time (Canada)</option>
<option value="America/Manaus">(GMT-04:00) Manaus</option>
<option value="America/Santiago">(GMT-04:00) Santiago</option>
<option value="America/La_Paz">(GMT-04:00) La Paz</option>
<option value="America/St_Johns">(GMT-03:30) Newfoundland</option>
<option value="America/Argentina/Buenos_Aires">(GMT-03:00) Buenos Aires</option>
<option value="America/Sao_Paulo">(GMT-03:00) Brasilia</option>
<option value="America/Godthab">(GMT-03:00) Greenland</option>
<option value="America/Montevideo">(GMT-03:00) Montevideo</option>
<option value="America/Argentina/Buenos_Aires">(GMT-03:00) Georgetown</option>
<option value="Atlantic/South_Georgia">(GMT-02:00) Mid-Atlantic</option>
<option value="Atlantic/Azores">(GMT-01:00) Azores</option>
<option value="Atlantic/Cape_Verde">(GMT-01:00) Cape Verde Is.</option>
<option value="Europe/London">(GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London</option>
<option value="Atlantic/Reykjavik">(GMT) Monrovia, Reykjavik</option>
<option value="Africa/Casablanca">(GMT) Casablanca</option>
<option value="Europe/Belgrade">(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague</option>
<option value="Europe/Sarajevo">(GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb</option>
<option value="Europe/Brussels">(GMT+01:00) Brussels, Copenhagen, Madrid, Paris</option>
<option value="Africa/Algiers">(GMT+01:00) West Central Africa</option>
<option value="Europe/Amsterdam">(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna</option>
<option value="Africa/Cairo">(GMT+02:00) Cairo</option>
<option value="Europe/Helsinki">(GMT+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius</option>
<option value="Europe/Athens">(GMT+02:00) Athens, Bucharest, Istanbul</option>
<option value="Asia/Jerusalem">(GMT+02:00) Jerusalem</option>
<option value="Asia/Amman">(GMT+02:00) Amman</option>
<option value="Asia/Beirut">(GMT+02:00) Beirut</option>
<option value="Africa/Windhoek">(GMT+02:00) Windhoek</option>
<option value="Africa/Harare">(GMT+02:00) Harare, Pretoria</option>
<option value="Asia/Kuwait">(GMT+03:00) Kuwait, Riyadh</option>
<option value="Asia/Baghdad">(GMT+03:00) Baghdad</option>
<option value="Europe/Minsk">(GMT+03:00) Minsk</option>
<option value="Africa/Nairobi">(GMT+03:00) Nairobi</option>
<option value="Asia/Tbilisi">(GMT+03:00) Tbilisi</option>
<option value="Asia/Tehran">(GMT+03:30) Tehran</option>
<option value="Asia/Muscat">(GMT+04:00) Abu Dhabi, Muscat</option>
<option value="Asia/Baku">(GMT+04:00) Baku</option>
<option value="Europe/Moscow">(GMT+04:00) Moscow, St. Petersburg, Volgograd</option>
<option value="Asia/Yerevan">(GMT+04:00) Yerevan</option>
<option value="Asia/Karachi">(GMT+05:00) Islamabad, Karachi</option>
<option value="Asia/Tashkent">(GMT+05:00) Tashkent</option>
<option value="Asia/Kolkata">(GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi</option>
<option value="Asia/Colombo">(GMT+05:30) Sri Jayawardenepura</option>
<option value="Asia/Katmandu">(GMT+05:45) Kathmandu</option>
<option value="Asia/Dhaka">(GMT+06:00) Astana, Dhaka</option>
<option value="Asia/Yekaterinburg">(GMT+06:00) Ekaterinburg</option>
<option value="Asia/Rangoon">(GMT+06:30) Yangon (Rangoon)</option>
<option value="Asia/Novosibirsk">(GMT+07:00) Almaty, Novosibirsk</option>
<option value="Asia/Bangkok">(GMT+07:00) Bangkok, Hanoi, Jakarta</option>
<option value="Asia/Beijing">(GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi</option>
<option value="Asia/Krasnoyarsk">(GMT+08:00) Krasnoyarsk</option>
<option value="Asia/Ulaanbaatar">(GMT+08:00) Irkutsk, Ulaan Bataar</option>
<option value="Asia/Kuala_Lumpur">(GMT+08:00) Kuala Lumpur, Singapore</option>
<option value="Asia/Taipei">(GMT+08:00) Taipei</option>
<option value="Australia/Perth">(GMT+08:00) Perth</option>
<option value="Asia/Seoul">(GMT+09:00) Seoul</option>
<option value="Asia/Tokyo">(GMT+09:00) Osaka, Sapporo, Tokyo</option>
<option value="Australia/Darwin">(GMT+09:30) Darwin</option>
<option value="Australia/Adelaide">(GMT+09:30) Adelaide</option>
<option value="Australia/Sydney">(GMT+10:00) Canberra, Melbourne, Sydney</option>
<option value="Australia/Brisbane">(GMT+10:00) Brisbane</option>
<option value="Australia/Hobart">(GMT+10:00) Hobart</option>
<option value="Asia/Yakutsk">(GMT+10:00) Yakutsk</option>
<option value="Pacific/Guam">(GMT+10:00) Guam, Port Moresby</option>
<option value="Asia/Vladivostok">(GMT+11:00) Vladivostok</option>
<option value="Pacific/Fiji">(GMT+12:00) Fiji, Kamchatka, Marshall Is.</option>
<option value="Asia/Magadan">(GMT+12:00) Magadan, Solomon Is., New Caledonia</option>
<option value="Pacific/Auckland">(GMT+12:00) Auckland, Wellington</option>
<option value="Pacific/Tongatapu">(GMT+13:00) Nukualofa</option>
</select>
<div class="install-languages">
<?php
if (Request::get('action') && Request::get('action') == 'install') {
$action = '&action=install';
} else {
$action = '';
}
?>
<?php foreach ($languages_array as $lang_code) { ?>
<a data-placement="top" data-toggle="tooltip" class="language-link<?php if (Option::get('language') == $lang_code) echo ' language-link-current';?>" title="<?php echo I18n::$locales[$lang_code]; ?>" href="<?php echo $site_url.'/?language=' . $lang_code.$action; ?>"><img src="<?php echo $site_url; ?>/public/assets/img/flags/<?php echo $lang_code?>.png" alt="<?php echo $lang_code?>"></a>
<?php } ?>
</div>
<div class="install-block <?php if(Request::get('action') && Request::get('action') == 'install') { ?><?php } else { ?> hide <?php } ?>">
<label><?php echo __('Email', 'users'); ?></label>
<input name="email" class="input-xlarge" value="<?php if (Request::post('email')) echo Html::toText(Request::post('email')); ?>" type="text" />
<br /><br />
<input type="submit" class="btn" name="install_submit" value="<?php echo __('Install', 'system'); ?>" />
</form>
<ul class="list-unstyled">
<?php
// Monstra Notifications
if (Notification::get('errors') && count(Notification::get('errors') > 0)) {
foreach (Notification::get('errors') as $error) {
?>
<li class="error alert alert-danger"><?php echo $error; ?></li>
<?php
}
}
?>
</ul>
<div class="well">
<form action="install.php?action=install" method="post">
<input type="hidden" name="php" value="<?php echo $errors['php']; ?>">
<input type="hidden" name="simplexml" value="<?php echo $errors['simplexml']; ?>">
<input type="hidden" name="mod_rewrite" value="<?php echo $errors['mod_rewrite']; ?>">
<input type="hidden" name="install" value="<?php echo $errors['install']; ?>">
<input type="hidden" name="sitemap" value="<?php echo $errors['sitemap']; ?>">
<input type="hidden" name="htaccess" value="<?php echo $errors['htaccess']; ?>">
<input type="hidden" name="public" value="<?php echo $errors['public']; ?>">
<input type="hidden" name="storage" value="<?php echo $errors['storage']; ?>">
<input type="hidden" name="backups" value="<?php echo $errors['backups']; ?>">
<input type="hidden" name="tmp" value="<?php echo $errors['tmp']; ?>">
<div class="form-group">
<label><?php echo __('Site Name', 'system'); ?></label>
<input class="form-control" name="sitename" type="text" value="<?php if (Request::post('sitename')) echo Html::toText(Request::post('sitename')); ?>" />
</div>
<hr>
<p align="center"><strong><?php echo __('...Monstra says...', 'system'); ?></strong></p>
<div>
<ul>
<?php
if (version_compare(PHP_VERSION, "5.2.0", "<")) {
echo '<span class="error"><li>'.__('PHP 5.2 or greater is required', 'system').'</li></span>';
} else {
echo '<span class="ok"><li>'.__('PHP Version', 'system').' '.PHP_VERSION.'</li></span>';
}
if (in_array('SimpleXML', $php_modules)) {
echo '<span class="ok"><li>'.__('Module SimpleXML is installed', 'system').'</li></span>';
} else {
echo '<span class="error"><li>'.__('SimpleXML module is required', 'system').'</li></span>';
}
if (in_array('dom', $php_modules)) {
echo '<span class="ok"><li>'.__('Module DOM is installed', 'system').'</li></span>';
} else {
echo '<span class="error"><li>'.__('Module DOM is required', 'system').'</li></span>';
}
if (function_exists('apache_get_modules')) {
if ( ! in_array('mod_rewrite',apache_get_modules())) {
echo '<span class="error"><li>'.__('Apache Mod Rewrite is required', 'system').'</li></span>';
} else {
echo '<span class="ok"><li>'.__('Module Mod Rewrite is installed', 'system').'</li></span>';
}
} else {
echo '<span class="ok"><li>'.__('Module Mod Rewrite is installed', 'system').'</li></span>';
}
foreach ($dir_array as $dir) {
if (is_writable($dir.'/')) {
echo '<span class="ok"><li>'.__('Directory: <b> :dir </b> writable', 'system', array(':dir' => $dir)).'</li></span>';
} else {
echo '<span class="error"><li>'.__('Directory: <b> :dir </b> not writable', 'system', array(':dir' => $dir)).'</li></span>';
}
}
if (is_writable(__FILE__)) {
echo '<span class="ok"><li>'.__('Install script writable', 'system').'</li></span>';
} else {
echo '<span class="error"><li>'.__('Install script not writable', 'system').'</li></span>';
}
if (is_writable('sitemap.xml')) {
echo '<span class="ok"><li>'.__('Sitemap file writable', 'system').'</li></span>';
} else {
echo '<span class="error"><li>'.__('Sitemap file not writable', 'system').'</li></span>';
}
if (is_writable('.htaccess')) {
echo '<span class="ok"><li>'.__('Main .htaccess file writable', 'system').'</li></span>';
} else {
echo '<span class="error"><li>'.__('Main .htaccess file not writable', 'system').'</li></span>';
}
if (isset($errors['sitename'])) echo '<span class="error"><li>'.$errors['sitename'].'</li></span>';
if (isset($errors['siteurl'])) echo '<span class="error"><li>'.$errors['siteurl'].'</li></span>';
if (isset($errors['login'])) echo '<span class="error"><li>'.$errors['login'].'</li></span>';
if (isset($errors['password'])) echo '<span class="error"><li>'.$errors['password'].'</li></span>';
if (isset($errors['email'])) echo '<span class="error"><li>'.$errors['email'].'</li></span>';
if (isset($errors['email_valid'])) echo '<span class="error"><li>'.$errors['email_valid'].'</li></span>';
?>
</ul>
<div class="form-group">
<label><?php echo __('Site Url', 'system'); ?></label>
<input class="form-control" name="siteurl" type="text" value="<?php echo Html::toText($site_url); ?>" />
</div>
</div>
<div class="install-block-footer">
<div style="text-align:center;">
<span class="small-grey-text">© 2012 - 2014 <a href="http://monstra.org" class="small-grey-text" target="_blank">Monstra</a> <?php echo __('Version', 'system'); ?> <?php echo Monstra::VERSION; ?></span>
<div class="form-group">
<label><?php echo __('Username', 'users'); ?></label>
<input class="form-control login" name="login" value="<?php if(Request::post('login')) echo Html::toText(Request::post('login')); ?>" type="text" />
</div>
<div class="form-group">
<label><?php echo __('Password', 'users'); ?></label>
<input class="form-control" name="password" type="password" />
</div>
<div class="form-group">
<label><?php echo __('Time zone', 'system'); ?></label>
<select class="form-control" name="timezone">
<option value="Kwajalein">(GMT-12:00) International Date Line West</option>
<option value="Pacific/Samoa">(GMT-11:00) Midway Island, Samoa</option>
<option value="Pacific/Honolulu">(GMT-10:00) Hawaii</option>
<option value="America/Anchorage">(GMT-09:00) Alaska</option>
<option value="America/Los_Angeles">(GMT-08:00) Pacific Time (US &amp; Canada)</option>
<option value="America/Tijuana">(GMT-08:00) Tijuana, Baja California</option>
<option value="America/Denver">(GMT-07:00) Mountain Time (US &amp; Canada)</option>
<option value="America/Chihuahua">(GMT-07:00) Chihuahua, La Paz, Mazatlan</option>
<option value="America/Phoenix">(GMT-07:00) Arizona</option>
<option value="America/Regina">(GMT-06:00) Saskatchewan</option>
<option value="America/Tegucigalpa">(GMT-06:00) Central America</option>
<option value="America/Chicago">(GMT-06:00) Central Time (US &amp; Canada)</option>
<option value="America/Mexico_City">(GMT-06:00) Guadalajara, Mexico City, Monterrey</option>
<option value="America/New_York">(GMT-05:00) Eastern Time (US &amp; Canada)</option>
<option value="America/Bogota">(GMT-05:00) Bogota, Lima, Quito, Rio Branco</option>
<option value="America/Indiana/Indianapolis">(GMT-05:00) Indiana (East)</option>
<option value="America/Caracas">(GMT-04:30) Caracas</option>
<option value="America/Halifax">(GMT-04:00) Atlantic Time (Canada)</option>
<option value="America/Manaus">(GMT-04:00) Manaus</option>
<option value="America/Santiago">(GMT-04:00) Santiago</option>
<option value="America/La_Paz">(GMT-04:00) La Paz</option>
<option value="America/St_Johns">(GMT-03:30) Newfoundland</option>
<option value="America/Argentina/Buenos_Aires">(GMT-03:00) Buenos Aires</option>
<option value="America/Sao_Paulo">(GMT-03:00) Brasilia</option>
<option value="America/Godthab">(GMT-03:00) Greenland</option>
<option value="America/Montevideo">(GMT-03:00) Montevideo</option>
<option value="America/Argentina/Buenos_Aires">(GMT-03:00) Georgetown</option>
<option value="Atlantic/South_Georgia">(GMT-02:00) Mid-Atlantic</option>
<option value="Atlantic/Azores">(GMT-01:00) Azores</option>
<option value="Atlantic/Cape_Verde">(GMT-01:00) Cape Verde Is.</option>
<option value="Europe/London">(GMT) Greenwich Mean Time : Dublin, Edinburgh, Lisbon, London</option>
<option value="Atlantic/Reykjavik">(GMT) Monrovia, Reykjavik</option>
<option value="Africa/Casablanca">(GMT) Casablanca</option>
<option value="Europe/Belgrade">(GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague</option>
<option value="Europe/Sarajevo">(GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb</option>
<option value="Europe/Brussels">(GMT+01:00) Brussels, Copenhagen, Madrid, Paris</option>
<option value="Africa/Algiers">(GMT+01:00) West Central Africa</option>
<option value="Europe/Amsterdam">(GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna</option>
<option value="Africa/Cairo">(GMT+02:00) Cairo</option>
<option value="Europe/Helsinki">(GMT+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius</option>
<option value="Europe/Athens">(GMT+02:00) Athens, Bucharest, Istanbul</option>
<option value="Asia/Jerusalem">(GMT+02:00) Jerusalem</option>
<option value="Asia/Amman">(GMT+02:00) Amman</option>
<option value="Asia/Beirut">(GMT+02:00) Beirut</option>
<option value="Africa/Windhoek">(GMT+02:00) Windhoek</option>
<option value="Africa/Harare">(GMT+02:00) Harare, Pretoria</option>
<option value="Asia/Kuwait">(GMT+03:00) Kuwait, Riyadh</option>
<option value="Asia/Baghdad">(GMT+03:00) Baghdad</option>
<option value="Europe/Minsk">(GMT+03:00) Minsk</option>
<option value="Africa/Nairobi">(GMT+03:00) Nairobi</option>
<option value="Asia/Tbilisi">(GMT+03:00) Tbilisi</option>
<option value="Asia/Tehran">(GMT+03:30) Tehran</option>
<option value="Asia/Muscat">(GMT+04:00) Abu Dhabi, Muscat</option>
<option value="Asia/Baku">(GMT+04:00) Baku</option>
<option value="Europe/Moscow">(GMT+04:00) Moscow, St. Petersburg, Volgograd</option>
<option value="Asia/Yerevan">(GMT+04:00) Yerevan</option>
<option value="Asia/Karachi">(GMT+05:00) Islamabad, Karachi</option>
<option value="Asia/Tashkent">(GMT+05:00) Tashkent</option>
<option value="Asia/Kolkata">(GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi</option>
<option value="Asia/Colombo">(GMT+05:30) Sri Jayawardenepura</option>
<option value="Asia/Katmandu">(GMT+05:45) Kathmandu</option>
<option value="Asia/Dhaka">(GMT+06:00) Astana, Dhaka</option>
<option value="Asia/Yekaterinburg">(GMT+06:00) Ekaterinburg</option>
<option value="Asia/Rangoon">(GMT+06:30) Yangon (Rangoon)</option>
<option value="Asia/Novosibirsk">(GMT+07:00) Almaty, Novosibirsk</option>
<option value="Asia/Bangkok">(GMT+07:00) Bangkok, Hanoi, Jakarta</option>
<option value="Asia/Beijing">(GMT+08:00) Beijing, Chongqing, Hong Kong, Urumqi</option>
<option value="Asia/Krasnoyarsk">(GMT+08:00) Krasnoyarsk</option>
<option value="Asia/Ulaanbaatar">(GMT+08:00) Irkutsk, Ulaan Bataar</option>
<option value="Asia/Kuala_Lumpur">(GMT+08:00) Kuala Lumpur, Singapore</option>
<option value="Asia/Taipei">(GMT+08:00) Taipei</option>
<option value="Australia/Perth">(GMT+08:00) Perth</option>
<option value="Asia/Seoul">(GMT+09:00) Seoul</option>
<option value="Asia/Tokyo">(GMT+09:00) Osaka, Sapporo, Tokyo</option>
<option value="Australia/Darwin">(GMT+09:30) Darwin</option>
<option value="Australia/Adelaide">(GMT+09:30) Adelaide</option>
<option value="Australia/Sydney">(GMT+10:00) Canberra, Melbourne, Sydney</option>
<option value="Australia/Brisbane">(GMT+10:00) Brisbane</option>
<option value="Australia/Hobart">(GMT+10:00) Hobart</option>
<option value="Asia/Yakutsk">(GMT+10:00) Yakutsk</option>
<option value="Pacific/Guam">(GMT+10:00) Guam, Port Moresby</option>
<option value="Asia/Vladivostok">(GMT+11:00) Vladivostok</option>
<option value="Pacific/Fiji">(GMT+12:00) Fiji, Kamchatka, Marshall Is.</option>
<option value="Asia/Magadan">(GMT+12:00) Magadan, Solomon Is., New Caledonia</option>
<option value="Pacific/Auckland">(GMT+12:00) Auckland, Wellington</option>
<option value="Pacific/Tongatapu">(GMT+13:00) Nukualofa</option>
</select>
</div>
<div class="form-group">
<label><?php echo __('Email', 'users'); ?></label>
<input name="email" class="form-control" value="<?php if (Request::post('email')) echo Html::toText(Request::post('email')); ?>" type="text" />
</div>
<div class="form-group">
<input type="submit" class="btn btn-primary" name="install_submit" value="<?php echo __('Install', 'system'); ?>" />
</div>
</form>
</div>
</div>
<div class="monstra-dialog <?php if(Request::get('action') && Request::get('action') == 'install') { ?>hide<?php } ?>">
<ul class="list-unstyled">
<?php
if (version_compare(PHP_VERSION, "5.2.0", "<")) {
echo '<li class="error alert alert-danger">'.__('PHP 5.2 or greater is required', 'system').'</li>';
} else {
echo '<li class="ok alert alert-success">'.__('PHP Version', 'system').' '.PHP_VERSION.'</li>';
}
if (in_array('SimpleXML', $php_modules)) {
echo '<li class="ok alert alert-success">'.__('Module SimpleXML is installed', 'system').'</li>';
} else {
echo '<li class="error alert alert-danger">'.__('SimpleXML module is required', 'system').'</li>';
}
if (in_array('dom', $php_modules)) {
echo '<li class="ok alert alert-success">'.__('Module DOM is installed', 'system').'</li>';
} else {
echo '<li class="error alert alert-danger">'.__('Module DOM is required', 'system').'</li>';
}
if (function_exists('apache_get_modules')) {
if ( ! in_array('mod_rewrite',apache_get_modules())) {
echo '<li class="error alert alert-danger">'.__('Apache Mod Rewrite is required', 'system').'</li>';
} else {
echo '<li class="ok alert alert-success">'.__('Module Mod Rewrite is installed', 'system').'</li>';
}
} else {
echo '<li class="ok alert alert-success">'.__('Module Mod Rewrite is installed', 'system').'</li>';
}
foreach ($dir_array as $dir) {
if (is_writable($dir.'/')) {
echo '<li class="ok alert alert-success">'.__('Directory: <b> :dir </b> writable', 'system', array(':dir' => $dir)).'</li>';
} else {
echo '<li class="error alert alert-danger">'.__('Directory: <b> :dir </b> not writable', 'system', array(':dir' => $dir)).'</li>';
}
}
if (is_writable(__FILE__)) {
echo '<li class="ok alert alert-success">'.__('Install script writable', 'system').'</li>';
} else {
echo '<li class="error alert alert-danger">'.__('Install script not writable', 'system').'</li>';
}
if (is_writable('sitemap.xml')) {
echo '<li class="ok alert alert-success">'.__('Sitemap file writable', 'system').'</li>';
} else {
echo '<li class="error alert alert-danger">'.__('Sitemap file not writable', 'system').'</li>';
}
if (is_writable('.htaccess')) {
echo '<li class="ok alert alert-success">'.__('Main .htaccess file writable', 'system').'</li>';
} else {
echo '<li class="error alert alert-danger">'.__('Main .htaccess file not writable', 'system').'</li>';
}
if (isset($errors['sitename'])) echo '<li class="error">'.$errors['sitename'].'</li>';
if (isset($errors['siteurl'])) echo '<li class="error">'.$errors['siteurl'].'</li>';
if (isset($errors['login'])) echo '<li class="error">'.$errors['login'].'</li>';
if (isset($errors['password'])) echo '<li class="error">'.$errors['password'].'</li>';
if (isset($errors['email'])) echo '<li class="error">'.$errors['email'].'</li>';
if (isset($errors['email_valid'])) echo '<li class="error">'.$errors['email_valid'].'</li>';
?>
</ul>
<a href="install.php?action=install" class="btn btn-primary continue"><?php echo __('Continue', 'system'); ?></a>
</div>
<div class="install-block-footer login-footer">
<div class="text-center">
<span>© 2012 - 2014 <a href="http://monstra.org" class="small-grey-text" target="_blank">Monstra</a> <?php echo __('Version', 'system'); ?> <?php echo Monstra::VERSION; ?></span>
</div>
</div>
<script type="text/javascript">
$('.language-link').tooltip();
$(document).ready(function() {
$('.continue').click(function() {
$('.monstra-dialog').addClass('hide');
$('.install-block').removeClass('hide');
});
});
</script>
</body>
</html>

View File

@@ -71,6 +71,12 @@ class Agent
'infoseek',
'lycos',
'ia_archiver',
'yandex',
'mail.ru',
'ask.com',
'Copyscape.com',
'bing.com',
);
/**

View File

@@ -4,23 +4,17 @@
<meta charset="utf-8">
<title>Error</title>
<style type="text/css">
body {
background: #F5F5F5;
padding: 0;
margin: 0;
}
#gelato-error {
background:#eee;
background:#F5F5F5;
color:0;
width:95%;
width:100%;
font-size:14px;
font-family:Verdana, Arial, Helvetica, "Nimbus Sans", FreeSans, Malayalam, sans-serif;
margin:20px auto;
-webkit-box-shadow: 1px 1px 18px rgba(50, 50, 50, 0.75);
-moz-box-shadow: 1px 1px 18px rgba(50, 50, 50, 0.75);
box-shadow: 1px 1px 18px rgba(50, 50, 50, 0.75);
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
border-radius: 5px;
}
#gelato-error pre {
@@ -31,23 +25,17 @@
}
#gelato-error a {
color:#cc0a0a;
color:#DC143C;
text-decoration:none;
}
#gelato-error .error {
background:#cc0a0a;
background:#DC143C;
color:#fff;
font-size:24px;
font-weight:700;
padding:10px;
-moz-border-radius-topleft: 5px;
-webkit-border-top-left-radius: 5px;
border-top-left-radius: 5px;
-moz-border-radius-topright: 5px;
-webkit-border-top-right-radius: 5px;
border-top-right-radius: 5px;
}
#gelato-error .body {
@@ -288,7 +276,10 @@
<?php endforeach; ?>
</table>
</div>
<div style="padding-top:20px;padding-bottom:20px; padding-left:10px;"><a href="http://gelato.monstra.org">Gelato Library</a></div>
<div style="padding-top:20px;padding-bottom:20px; padding-left:10px;">
<a href="http://monstra.org">MONSTRA</a>
<a href="http://gelato.monstra.org">GELATO</a>
</div>
</div>
<script type="text/javascript">

View File

@@ -203,4 +203,26 @@ class Dir
return $total_size;
}
/**
* Copy directory.
* <code>
* Dir::copy('source_folder_path', 'destination_folder_path);
* </code>
* @param $src
* @param $dst
*/
public static function copy($src, $dst) {
$dir = opendir($src);
@mkdir($dst);
while(false !== ( $file = readdir($dir)) ) {
if (( $file != '.' ) && ( $file != '..' )) {
if ( is_dir($src .'/'. $file) ) {
self::copy($src .'/'. $file, $dst .'/'. $file);
} else {
copy($src .'/'. $file,$dst .'/'. $file);
}
}
}
closedir($dir);
}
}

View File

@@ -141,7 +141,7 @@ class Form
$attributes['type'] = 'text';
}
return '<input'.Html::attributes($attributes).' />';
return '<input'.Html::attributes($attributes).'>';
}
/**

View File

@@ -51,7 +51,7 @@ class Html
*
* <code>
*
* // Registering a Htmlk macro
* // Registering a Html macro
* Html::macro('my_element', function() {
* return '<element id="monstra">';
* });
@@ -61,7 +61,7 @@ class Html
*
*
* // Registering a Html macro with parameters
* Html::macro('my_element', function(id = '') {
* Html::macro('my_element', function($id = '') {
* return '<element id="'.$id.'">';
* });
*
@@ -157,7 +157,7 @@ class Html
*/
public static function br($num = 1)
{
return str_repeat("<br />",(int) $num);
return str_repeat("<br>",(int) $num);
}
/**
@@ -285,7 +285,7 @@ class Html
$attributes['src'] = $file;
$attributes['alt'] = (isset($attributes['alt'])) ? $attributes['alt'] : pathinfo($file, PATHINFO_FILENAME);
return '<img'.Html::attributes($attributes).' />';
return '<img'.Html::attributes($attributes).'>';
}
/**

View File

@@ -659,4 +659,3 @@ class Image
}
}
code

View File

@@ -109,23 +109,9 @@ class MinifyCSS
(\\b|[#\'"-]) # 3 = first character of a value
/x', '$1$2:$3', $css);
// remove ws in selectors
$css = preg_replace_callback('/
(?: # non-capture
\\s*
[^~>+,\\s]+ # selector part
\\s*
[,>+~] # combinators
)+
\\s*
[^~>+,\\s]+ # selector part
{ # open declaration block
/x'
,array($this, '_selectorsCB'), $css);
// minimize hex colors
$css = preg_replace('/([^=])#([a-f\\d])\\2([a-f\\d])\\3([a-f\\d])\\4([\\s;\\}])/i'
, '$1#$2$3$4$5', $css);
/*$css = preg_replace('/([^=])#([a-f\\d])\\2([a-f\\d])\\3([a-f\\d])\\4([\\s;\\}])/i'
, '$1#$2$3$4$5', $css);*/
// remove spaces between font families
$css = preg_replace_callback('/font-family:([^;}]+)([;}])/'

View File

@@ -28,7 +28,7 @@ class Number
}
/**
* Convert bytes in 'kb','mb','gb','tb','pb'
* Convert bytes in 'KB','MB','GB','TiB','PiB'
*
* <code>
* echo Number::byteFormat(10000);
@@ -42,11 +42,33 @@ class Number
// Redefine vars
$size = (int) $size;
$unit = array('b', 'kb', 'mb', 'gb', 'tb', 'pb');
$unit = array('B', 'KB', 'MB', 'GB', 'TiB', 'PiB');
return @round($size/pow(1024, ($i=floor(log($size, 1024)))), 2).' '.$unit[($i < 0 ? 0 : $i)];
}
/**
* Convert 'KB','MB','GB' in bytes
*
* <code>
* echo Number::convertToBytes('10MB');
* </code>
*
* @param string $num Number to convert
* @return int
*/
public static function convertToBytes( $num ) {
$num = strtolower( $num );
$bytes = (int) $num;
if ( strpos( $num, 'k' ) !== false )
$bytes = intval( $num ) * 1024;
elseif ( strpos( $num, 'm' ) !== false )
$bytes = intval($num) * 1024 * 1024;
elseif ( strpos( $num, 'g' ) !== false )
$bytes = intval( $num ) * 1024 * 1024 * 1024;
return $bytes;
}
/**
* Converts a number into a more readable human-type number.
*

View File

@@ -24,6 +24,12 @@ class Zip
public $offset = 0;
public $now;
private $_archive_info = array();
private $_zip_signature = "\x50\x4b\x03\x04";
private $_dir_signature = "\x50\x4b\x01\x02";
private $_central_signature_end = "\x50\x4b\x05\x06";
private $farc = null;
/**
* Constructor
*/
@@ -264,7 +270,7 @@ class Zip
* @param string $root_path Root path
* @return mixed
*/
public function readDir($path, $preserve_filepath = true, $root_path = null)
public function readDir($path, $preserve_filepath = true, $root_path = null, $exclude_files = array())
{
if ( ! $fp = @opendir($path)) {
return false;
@@ -277,12 +283,12 @@ class Zip
while (false !== ($file = readdir($fp))) {
if (substr($file, 0, 1) == '.') {
if (substr($file, 0, 1) == '.' || in_array($path.$file, $exclude_files)) {
continue;
}
if (@is_dir($path.$file)) {
$this->readDir($path.$file."/", $preserve_filepath, $root_path);
$this->readDir($path.$file."/", $preserve_filepath, $root_path, $exclude_files);
} else {
if (false !== ($data = file_get_contents($path.$file))) {
$name = str_replace("\\", "/", $path);
@@ -372,4 +378,302 @@ class Zip
$this->offset = 0;
}
public function extract($zip_file, $target_dir = null)
{
$chmod = 0777;
$this->_archive_info = array();
$files = $this->_read_archive($zip_file);
if (!$files) {
return false;
}
$file_locations = array();
foreach ($files as $file => $trash) {
$dirname = pathinfo($file, PATHINFO_DIRNAME);
$folders = explode('/', $dirname);
$out_dn = $target_dir . '/' . $dirname;
if ( !is_dir($out_dn)) {
$str = '';
foreach ($folders as $folder) {
$str = $str ? $str . '/' . $folder : $folder;
if ( !is_dir($target_dir . '/' . $str)) {
if ( ! @mkdir($target_dir . '/' . $str)) {
return false;
}
chmod($target_dir . '/' . $str, $chmod);
}
}
}
if (substr($file, -1, 1) == '/') {
continue;
}
$file_locations[] = $file_location = $target_dir . '/' . $file;
$this->_extract_file($file, $file_location);
}
$this->_archive_info = array();
return $file_locations;
}
private function _read_archive($zip_file)
{
if (sizeof($this->_archive_info)) {
return $this->_archive_info;
}
$fh = fopen($zip_file, 'r');
$this->farc = &$fh;
if ( !$fh) {
return false;
}
if ( !$this->_read_file_list_by_eof($fh)) {
if ( !$this->_read_files_by_signatures($fh)) {
return false;
}
}
return $this->_archive_info;
}
private function _read_file_list_by_eof(&$fh)
{
for ($x = 0; $x < 1024; $x++) {
fseek($fh, -22 - $x, SEEK_END);
$signature = fread($fh, 4);
if ($signature == $this->_central_signature_end) {
$eodir['disk_number_this'] = unpack("v", fread($fh, 2));
$eodir['disk_number'] = unpack("v", fread($fh, 2));
$eodir['total_entries_this'] = unpack("v", fread($fh, 2));
$eodir['total_entries'] = unpack("v", fread($fh, 2));
$eodir['size_of_cd'] = unpack("V", fread($fh, 4));
$eodir['offset_start_cd'] = unpack("V", fread($fh, 4));
$zip_comment_lenght = unpack("v", fread($fh, 2));
$eodir['zipfile_comment'] = $zip_comment_lenght[1] ? fread($fh, $zip_comment_lenght[1]) : '';
fseek($fh, $eodir['offset_start_cd'][1]);
$signature = fread($fh, 4);
while ($signature == $this->_dir_signature) {
$dir['version_madeby'] = unpack("v", fread($fh, 2));
$dir['version_needed'] = unpack("v", fread($fh, 2));
$dir['general_bit_flag'] = unpack("v", fread($fh, 2));
$dir['compression_method'] = unpack("v", fread($fh, 2));
$dir['lastmod_time'] = unpack("v", fread($fh, 2));
$dir['lastmod_date'] = unpack("v", fread($fh, 2));
$dir['crc-32'] = fread($fh, 4);
$dir['compressed_size'] = unpack("V", fread($fh, 4));
$dir['uncompressed_size'] = unpack("V", fread($fh, 4));
$zip_file_length = unpack("v", fread($fh, 2));
$extra_field_length = unpack("v", fread($fh, 2));
$fileCommentLength = unpack("v", fread($fh, 2));
$dir['disk_number_start'] = unpack("v", fread($fh, 2));
$dir['internal_attributes'] = unpack("v", fread($fh, 2));
$dir['external_attributes1'] = unpack("v", fread($fh, 2));
$dir['external_attributes2'] = unpack("v", fread($fh, 2));
$dir['relative_offset'] = unpack("V", fread($fh, 4));
$dir['file_name'] = fread($fh, $zip_file_length[1]);
$dir['extra_field'] = $extra_field_length[1] ? fread($fh, $extra_field_length[1]) : '';
$dir['file_comment'] = $fileCommentLength[1] ? fread($fh, $fileCommentLength[1]) : '';
$binary_mod_date = str_pad(decbin($dir['lastmod_date'][1]), 16, '0', STR_PAD_LEFT);
$binary_mod_time = str_pad(decbin($dir['lastmod_time'][1]), 16, '0', STR_PAD_LEFT);
$last_mod_year = bindec(substr($binary_mod_date, 0, 7)) + 1980;
$last_mod_month = bindec(substr($binary_mod_date, 7, 4));
$last_mod_day = bindec(substr($binary_mod_date, 11, 5));
$last_mod_hour = bindec(substr($binary_mod_time, 0, 5));
$last_mod_minute = bindec(substr($binary_mod_time, 5, 6));
$last_mod_second = bindec(substr($binary_mod_time, 11, 5));
$central_dir_list[$dir['file_name']] = array(
'version_madeby' => $dir['version_madeby'][1],
'version_needed' => $dir['version_needed'][1],
'general_bit_flag' => str_pad(decbin($dir['general_bit_flag'][1]), 8, '0', STR_PAD_LEFT),
'compression_method' => $dir['compression_method'][1],
'lastmod_datetime' => mktime($last_mod_hour, $last_mod_minute, $last_mod_second, $last_mod_month, $last_mod_day, $last_mod_year),
'crc-32' => str_pad(dechex(ord($dir['crc-32'][3])), 2, '0', STR_PAD_LEFT) .
str_pad(dechex(ord($dir['crc-32'][2])), 2, '0', STR_PAD_LEFT) .
str_pad(dechex(ord($dir['crc-32'][1])), 2, '0', STR_PAD_LEFT) .
str_pad(dechex(ord($dir['crc-32'][0])), 2, '0', STR_PAD_LEFT),
'compressed_size' => $dir['compressed_size'][1],
'uncompressed_size' => $dir['uncompressed_size'][1],
'disk_number_start' => $dir['disk_number_start'][1],
'internal_attributes' => $dir['internal_attributes'][1],
'external_attributes1' => $dir['external_attributes1'][1],
'external_attributes2' => $dir['external_attributes2'][1],
'relative_offset' => $dir['relative_offset'][1],
'file_name' => $dir['file_name'],
'extra_field' => $dir['extra_field'],
'file_comment' => $dir['file_comment'],
);
$signature = fread($fh, 4);
}
if (isset($central_dir_list)) {
foreach ($central_dir_list as $filename => $details) {
$i = $this->_get_file_header($fh, $details['relative_offset']);
$this->_archive_info[$filename]['file_name'] = $filename;
$this->_archive_info[$filename]['compression_method'] = $details['compression_method'];
$this->_archive_info[$filename]['version_needed'] = $details['version_needed'];
$this->_archive_info[$filename]['lastmod_datetime'] = $details['lastmod_datetime'];
$this->_archive_info[$filename]['crc-32'] = $details['crc-32'];
$this->_archive_info[$filename]['compressed_size'] = $details['compressed_size'];
$this->_archive_info[$filename]['uncompressed_size'] = $details['uncompressed_size'];
$this->_archive_info[$filename]['lastmod_datetime'] = $details['lastmod_datetime'];
$this->_archive_info[$filename]['extra_field'] = $i['extra_field'];
$this->_archive_info[$filename]['contents_start_offset'] = $i['contents_start_offset'];
}
}
return true;
}
}
return true;
}
private function _read_files_by_signatures(&$fh)
{
fseek($fh, 0);
$return = false;
for (;;) {
$details = $this->_get_file_header($fh);
if ( !$details) {
fseek($fh, 12 - 4, SEEK_CUR);
$details = $this->_get_file_header($fh);
}
if ( !$details) {
break;
}
$filename = $details['file_name'];
$this->_archive_info[$filename] = $details;
$return = true;
}
return $return;
}
private function _get_file_header(&$fh, $start_offset = FALSE)
{
if ($start_offset !== false) {
fseek($fh, $start_offset);
}
$signature = fread($fh, 4);
if ($signature == $this->_zip_signature) {
$file['version_needed'] = unpack("v", fread($fh, 2));
$file['general_bit_flag'] = unpack("v", fread($fh, 2));
$file['compression_method'] = unpack("v", fread($fh, 2));
$file['lastmod_time'] = unpack("v", fread($fh, 2));
$file['lastmod_date'] = unpack("v", fread($fh, 2));
$file['crc-32'] = fread($fh, 4);
$file['compressed_size'] = unpack("V", fread($fh, 4));
$file['uncompressed_size'] = unpack("V", fread($fh, 4));
$zip_file_length = unpack("v", fread($fh, 2));
$extra_field_length = unpack("v", fread($fh, 2));
$file['file_name'] = fread($fh, $zip_file_length[1]);
$file['extra_field'] = $extra_field_length[1] ? fread($fh, $extra_field_length[1]) : '';
$file['contents_start_offset'] = ftell($fh);
fseek($fh, $file['compressed_size'][1], SEEK_CUR);
$binary_mod_date = str_pad(decbin($file['lastmod_date'][1]), 16, '0', STR_PAD_LEFT);
$binary_mod_time = str_pad(decbin($file['lastmod_time'][1]), 16, '0', STR_PAD_LEFT);
$last_mod_year = bindec(substr($binary_mod_date, 0, 7)) + 1980;
$last_mod_month = bindec(substr($binary_mod_date, 7, 4));
$last_mod_day = bindec(substr($binary_mod_date, 11, 5));
$last_mod_hour = bindec(substr($binary_mod_time, 0, 5));
$last_mod_minute = bindec(substr($binary_mod_time, 5, 6));
$last_mod_second = bindec(substr($binary_mod_time, 11, 5));
return array(
'file_name' => $file['file_name'],
'compression_method' => $file['compression_method'][1],
'version_needed' => $file['version_needed'][1],
'lastmod_datetime' => mktime($last_mod_hour, $last_mod_minute, $last_mod_second, $last_mod_month, $last_mod_day, $last_mod_year),
'crc-32' => str_pad(dechex(ord($file['crc-32'][3])), 2, '0', STR_PAD_LEFT) .
str_pad(dechex(ord($file['crc-32'][2])), 2, '0', STR_PAD_LEFT) .
str_pad(dechex(ord($file['crc-32'][1])), 2, '0', STR_PAD_LEFT) .
str_pad(dechex(ord($file['crc-32'][0])), 2, '0', STR_PAD_LEFT),
'compressed_size' => $file['compressed_size'][1],
'uncompressed_size' => $file['uncompressed_size'][1],
'extra_field' => $file['extra_field'],
'general_bit_flag' => str_pad(decbin($file['general_bit_flag'][1]), 8, '0', STR_PAD_LEFT),
'contents_start_offset' => $file['contents_start_offset']
);
}
return false;
}
private function _extract_file($compressed_file_name, $target_file_name = false)
{
if ( !sizeof($this->_archive_info)) {
return false;
}
$fdetails = &$this->_archive_info[$compressed_file_name];
if ( ! isset($this->_archive_info[$compressed_file_name])) {
return false;
}
if (substr($compressed_file_name, -1) == '/') {
return false;
}
if ( !$fdetails['uncompressed_size']) {
return $target_file_name ? file_put_contents($target_file_name, '') : '';
}
fseek($this->farc, $fdetails['contents_start_offset']);
$ret = $this->_uncompress(
fread($this->farc, $fdetails['compressed_size']),
$fdetails['compression_method'],
$fdetails['uncompressed_size'],
$target_file_name
);
if ($target_file_name) {
chmod($target_file_name, 0644);
}
return $ret;
}
private function _uncompress($content, $mode, $uncompressed_size, $target_file_name = false)
{
switch ($mode) {
case 0:
return $target_file_name ? file_put_contents($target_file_name, $content) : $content;
case 8:
return $target_file_name
? file_put_contents($target_file_name, gzinflate($content, $uncompressed_size))
: gzinflate($content, $uncompressed_size);
case 12:
return $target_file_name
? file_put_contents($target_file_name, bzdecompress($content)) : bzdecompress($content);
default:
return false;
}
}
}

File diff suppressed because it is too large Load Diff

40
plugins/blog/README.md Normal file
View File

@@ -0,0 +1,40 @@
Blog
================
### Usage
#### Get Post
<?php echo Blog::getPost(); ?>
#### Get Posts
<?php echo Blog::getPosts(); ?>
#### Get 5 Posts (could be any amount, 5 or 1 or 25):
<?php echo Blog::getPosts(5); ?>
#### Get related Posts
<?php echo Blog::getRelatedPosts(); ?>
#### Get 4 latest posts from Blog
<?php echo Blog::getPostsBlock(4); ?>
#### Get Tags&Keywords
<?php Blog::getTags(); ?>
#### Get Tags&Keywords for current page
<?php Blog::getTags(Page::slug()); ?>
Get Post Title
<?php echo Blog::getPostTitle(); ?>
### Shortcode for content
#### Divided post into 2 parts (short and full)
{cut}
Example:
<p>Best free themes for Monstra CMS at monstrathemes.com</p>
{cut}
<p>There is going to display your content as blog post =)</p>

View File

@@ -0,0 +1,399 @@
<?php
/**
* Blog plugin
*
* @package Monstra
* @subpackage Plugins
* @author Romanenko Sergey / Awilum
* @copyright 2012 Romanenko Sergey / Awilum
* @version 1.7.3
*
*/
// Register plugin
Plugin::register( __FILE__,
__('Blog', 'blog'),
__('Blog plugin for Monstra', 'blog'),
'1.7.3',
'Awilum',
'http://monstra.org/');
// Add action
Action::add('frontend_pre_render', 'Blog::_rss');
/**
* Blog Class
*/
class Blog {
/**
* Parrent page name(slug)
*
* @var string
*/
public static $parent_page_name = 'blog';
/**
* Get tags
*
* <code>
* echo Blog::getTags();
* </code>
*
* @return string
*/
public static function getTags($slug = null) {
// Display view
return View::factory('blog/views/frontend/tags')
->assign('tags', Blog::getTagsArray($slug))
->render();
}
/**
* Get breadcrumbs
*
* <code>
* echo Blog::breadcrumbs();
* </code>
*
* @return string
*/
public static function breadcrumbs() {
$current_page = Pages::$requested_page;
$parent_page = '';
if ($current_page !== 'error404') {
$page = Pages::$pages->select('[slug="'.$current_page.'"]', null);
if (trim($page['parent']) !== '') {
$parent = true;
$parent_page = Pages::$pages->select('[slug="'.$page['parent'].'"]', null);
} else {
$parent = false;
}
// Display view
View::factory('blog/views/frontend/breadcrumbs')
->assign('current_page', $current_page)
->assign('page', $page)
->assign('parent', $parent)
->assign('parent_page', $parent_page)
->display();
}
}
/**
* Get tags array
*
* <code>
* echo Blog::getTagsArray();
* </code>
*
* @return array
*/
public static function getTagsArray($slug = null) {
// Init vars
$tags = array();
$tags_string = '';
if ($slug == null) {
$posts = Pages::$pages->select('[parent="'.Blog::$parent_page_name.'" and status="published"]', 'all');
} else {
$posts = Pages::$pages->select('[parent="'.Blog::$parent_page_name.'" and status="published" and slug="'.$slug.'"]', 'all');
}
foreach($posts as $post) {
if (isset($post['tags'])) {
$tags_string .= $post['tags'].',';
}
}
$tags_string = substr($tags_string, 0, strlen($tags_string)-1);
// Explode tags in tags array
$tags = explode(',', $tags_string);
// Remove empty array elementss
foreach ($tags as $key => $value) {
if ($tags[$key] == '') {
unset($tags[$key]);
}
}
// Trim tags
array_walk($tags, create_function('&$val', '$val = trim($val);'));
// Get unique tags
$tags = array_unique($tags);
// Return tags
return $tags;
}
/**
* Get posts
*
* <code>
* // Get all posts
* echo Blog::getPosts();
*
* // Get last 5 posts
* echo Blog::getPosts(5);
* </code>
*
* @param integer $num Number of posts to show
* @return string
*/
public static function getPosts($nums = 10) {
// Get page param
$page = (Request::get('page')) ? (int)Request::get('page') : 1;
if (Request::get('tag')) {
$query = '[parent="'.Blog::$parent_page_name.'" and status="published" and contains(tags, "'.Request::get('tag').'")]';
Notification::set('tag', Request::get('tag'));
} else {
$query = '[parent="'.Blog::$parent_page_name.'" and status="published"]';
Notification::clean();
}
// Get Elements Count
$elements = count(Pages::$pages->select($query, 'all'));
// Get Pages Count
$pages = ceil($elements/$nums);
if ($page < 1) {
$page = 1;
} elseif ($page > $pages) {
$page = $pages;
}
$start = ($page-1)*$nums;
// If there is no posts
if ($start < 0) $start = 0;
// Get posts and sort by DESC
$posts = Pages::$pages->select($query, $nums, $start, array('slug', 'title', 'author', 'date'), 'date', 'DESC');
// Loop
foreach($posts as $key => $post) {
$post_short = explode("{cut}", Text::toHtml(File::getContent(STORAGE . DS . 'pages' . DS . $post['id'] . '.page.txt')));
$posts[$key]['content'] = Filter::apply('content', $post_short[0]);
}
// Display view
return View::factory('blog/views/frontend/index')
->assign('posts', $posts)
->render().
View::factory('blog/views/frontend/pager')
->assign('pages', $pages)
->assign('page', $page)
->render();
}
/**
* Get posts block
*
* <code>
* // Get all posts
* echo Blog::getPostsBlock();
*
* // Get last 5 posts
* echo Blog::getPostsBlock(5);
* </code>
*
* @param integer $num Number of posts to show
* @return string
*/
public static function getPostsBlock($nums = 10) {
// XPath Query
$query = '[parent="'.Blog::$parent_page_name.'" and status="published"]';
// Get posts and sort by DESC
$posts = Pages::$pages->select($query, $nums, 0, array('slug', 'title', 'author', 'date'), 'date', 'DESC');
// Loop
foreach($posts as $key => $post) {
$post_short = explode("{cut}", Text::toHtml(File::getContent(STORAGE . DS . 'pages' . DS . $post['id'] . '.page.txt')));
$posts[$key]['content'] = Filter::apply('content', $post_short[0]);
}
// Display view
return View::factory('blog/views/frontend/block')
->assign('posts', $posts)
->render();
}
/**
* Get related posts
*
* <code>
* echo Blog::getRelatedPosts();
* </code>
*
* @return string
*/
public static function getRelatedPosts($limit = null) {
$related_posts = array();
$tags = Blog::getTagsArray(Page::slug());
foreach($tags as $tag) {
$query = '[parent="'.Blog::$parent_page_name.'" and status="published" and contains(tags, "'.$tag.'") and slug!="'.Page::slug().'"]';
if ($result = Arr::subvalSort(Pages::$pages->select($query, ($limit == null) ? 'all' : (int)$limit), 'date', 'DESC')) {
$related_posts = $result;
}
}
// Display view
return View::factory('blog/views/frontend/related_posts')
->assign('related_posts', $related_posts)
->render();
}
/**
* Get post content
*
* <code>
* echo Blog::getPost();
* </code>
*
* @return string
*/
public static function getPost() {
// Get post
$post = Text::toHtml(File::getContent(STORAGE . DS . 'pages' . DS . Pages::$page['id'] . '.page.txt'));
// Apply content filter
$post = Filter::apply('content', $post);
// Remove {cut} shortcode
$post = strtr($post, array('{cut}' => ''));
// Return post
return $post;
}
/**
* Get post content before cut
*
* <code>
* echo Blog::getPostBeforeCut('home');
* </code>
*
* @return string
*/
public static function getPostBeforeCut($slug) {
$page = Pages::$pages->select('[slug="'.$slug.'"]', null);
// Get post
$post = explode("{cut}", Text::toHtml(File::getContent(STORAGE . DS . 'pages' . DS . $page['id'] . '.page.txt')));
// Apply content filter
$post_content = Filter::apply('content', $post[0]);
// Return post
return $post_content;
}
/**
* Get post content after cut
*
* <code>
* echo Blog::getPostAfterCut('home');
* </code>
*
* @return string
*/
public static function getPostAfterCut($slug) {
$page = Pages::$pages->select('[slug="'.$slug.'"]', null);
// Get post
$post = explode("{cut}", Text::toHtml(File::getContent(STORAGE . DS . 'pages' . DS . $page['id'] . '.page.txt')));
// Apply content filter
$post_content = Filter::apply('content', $post[1]);
// Return post
return $post_content;
}
/**
* Get Blog Post title
*
* <code>
* echo Blog::getPostTitle();
* </code>
*
* @return string
*/
public static function getPostTitle() {
return Page::title();
}
/**
* Get Blog Post Date
*
* <code>
* echo Blog::getPostDate();
* </code>
*
* @param string $format Date format
* @return string
*/
public static function getPostDate($format = 'Y-m-d') {
return Page::date($format);
}
/**
* Get author of current post
*
* <code>
* echo Blog::getPostAuthor();
* </code>
*
* @return string
*/
public static function getPostAuthor()
{
return Page::author();
}
/**
* _rss
*/
public static function _rss() {
if (Uri::segment(0) == 'rss') {
include PLUGINS . DS . 'blog' . DS . 'rss.php';
Request::shutdown();
}
}
}

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<root>
<plugin_location>plugins/blog/blog.plugin.php</plugin_location>
<plugin_status>active</plugin_status>
<plugin_priority>15</plugin_priority>
<plugin_name>Blog</plugin_name>
<plugin_description>Blog plugin for Monstra</plugin_description>
<plugin_version>1.7.3</plugin_version>
<plugin_author>Awilum</plugin_author>
<plugin_author_uri>http://monstra.org/</plugin_author_uri>
</root>

View File

@@ -0,0 +1,12 @@
<?php
return array(
'blog' => array(
'Blog' => 'Blog',
'Blog plugin for Monstra' => 'Blog plugin for Monstra',
'begin' => 'begin',
'end' => 'end',
'prev' => 'prev',
'next' => 'next',
)
);

View File

@@ -0,0 +1,12 @@
<?php
return array(
'blog' => array(
'Blog' => 'Blog',
'Blog plugin for Monstra' => 'Wtyczka Blog dla systemu Monstra',
'begin' => 'początek',
'end' => 'koniec',
'prev' => 'poprzedni',
'next' => 'następny',
)
);

View File

@@ -0,0 +1,13 @@
<?php
return array(
'blog' => array(
'Blog' => 'Блог',
'Blog plugin for Monstra' => 'Плагин блога для Monstra',
'begin' => 'начало',
'end' => 'конец',
'prev' => 'назад',
'next' => 'вперед',
'Related posts' => 'Статьи по теме',
)
);

View File

@@ -0,0 +1,12 @@
<?php
return array(
'blog' => array(
'Blog' => 'Günce',
'Blog plugin for Monstra' => 'Monstra için günce eklentisi',
'begin' => 'Baş',
'end' => 'Son',
'prev' => 'Önceki',
'next' => 'Sonraki',
)
);

34
plugins/blog/rss.php Normal file
View File

@@ -0,0 +1,34 @@
<?php
// Get all posts for blog parent page/post
$posts = Pages::$pages->select('[parent="'.Blog::$parent_page_name.'" and status="published"]', 5, 0, array('slug', 'title', 'author', 'date'), 'date', 'DESC');
// Date now
$now = date("D, d M Y H:i:s T");
ob_end_clean();
?>
<?php header('Content-type: text/xml; charset="utf-8"'); ?>
<?php echo'<?xml version="1.0" encoding="utf-8"?>'."\n"; ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>MonstraCMS::BLOG::RSS</title>
<link><?php echo Option::get('siteurl'); ?>/blog</link>
<description>The latest updates for <?php echo Option::get('sitename'); ?>.</description>
<language>en-us</language>
<pubDate><?php echo $now; ?></pubDate>
<lastBuildDate><?php echo $now; ?></lastBuildDate>
<atom:link href="<?php echo Option::get('siteurl'); ?>/rss.php" rel="self" type="application/rss+xml" />
<generator>Monstra</generator>
<?php foreach ($posts as $post) { ?>
<item>
<title><?php echo $post['title']; ?></title>
<link><?php echo Option::get('siteurl').'/blog/'.$post['slug']; ?></link>
<guid><?php echo Option::get('siteurl').'/blog/'.$post['slug']; ?></guid>
<pubDate><?php echo Date::format($post['date'], 'd M Y'); ?></pubDate>
<description><![CDATA[<?php echo Text::toHtml(Text::cut(File::getContent(STORAGE . DS . 'pages' . DS . $post['id'] . '.page.txt'), 300)); ?>]]></description>
<author><?php echo $post['author']; ?></author>
</item>
<?php } ?>
</channel>
</rss>
<?php Response::status(200); ?>

View File

@@ -0,0 +1,7 @@
<?php foreach($posts as $post) { ?>
<h3 class="monstra-blog-title"><a href="<?php echo Option::get('siteurl'); ?>/<?php echo Blog::$parent_page_name; ?>/<?php echo $post['slug'] ?>"><?php echo $post['title']; ?></a></h3>
<small class="monstra-blog-date"><?php echo Date::format($post['date'], 'd M Y'); ?></small>
<div class="monstra-blog-post">
<?php echo $post['content']; ?>
</div>
<?php } ?>

View File

@@ -0,0 +1,5 @@
<?php if ($parent) { ?>
<a href="<?php echo Site::url()."/".$page['parent']; ?><?php if(Notification::get('tag')) { ?>?tag=<?php echo Notification::get('tag'); ?><?php } ?>"><?php echo $parent_page['title']; ?></a>&nbsp;<span>&rarr;</span>&nbsp;<a href="<?php echo Site::url().$page['parent'].'/'.$page['slug']; ?>"><?php echo $page['title']; ?></a>
<?php } else { ?>
<a href="<?php echo Site::url()."/".$page['slug']; ?><?php if(Notification::get('tag')) { ?>?tag=<?php echo Notification::get('tag'); ?><?php } ?>"><?php echo $page['title']; ?></a>
<?php } ?>

View File

@@ -0,0 +1,7 @@
<?php foreach($posts as $post) { ?>
<h3 class="monstra-blog-title"><a href="<?php echo Option::get('siteurl'); ?>/<?php echo Blog::$parent_page_name; ?>/<?php echo $post['slug'] ?>"><?php echo $post['title']; ?></a></h3>
<small class="monstra-blog-date"><?php echo Date::format($post['date'], 'd M Y'); ?> / <?php echo $post['author']; ?></small>
<div class="monstra-blog-post">
<?php echo $post['content']; ?>
</div>
<?php } ?>

View File

@@ -0,0 +1,29 @@
<br><br>
<?php
if (Request::get('tag')) $tag = '&tag='.Request::get('tag'); else $tag = '';
$neighbours = 6;
$left_neighbour = $page - $neighbours;
if ($left_neighbour < 1) $left_neighbour = 1;
$right_neighbour = $page + $neighbours;
if ($right_neighbour > $pages) $right_neighbour = $pages;
if ($page > 1) {
echo ' <a href="?page=1'.$tag.'">'.__('begin', 'blog').'</a> ... <a href="?page=' . ($page-1) . $tag.'"> '.__('prev', 'blog').'</a> ';
}
for ($i=$left_neighbour; $i<=$right_neighbour; $i++) {
if ($i != $page) {
echo ' <a href="?page=' . $i . $tag.'">' . $i . '</a> ';
} else {
echo ' <b>' . $i . '</b> ';
}
}
if ($page < $pages) {
echo ' <a href="?page=' . ($page+1) . $tag.'">'.__('next', 'blog').'</a> ... <a href="?page=' . $pages . $tag.'">'.__('end', 'blog').'</a> ';
}
?>

View File

@@ -0,0 +1,7 @@
<br><br>
<b><?php echo __('Related posts', 'blog'); ?>:</b>
<div>
<?php foreach($related_posts as $related_post) { ?>
<a href="<?php echo Option::get('siteurl'); ?>/<?php echo Blog::$parent_page_name; ?>/<?php echo $related_post['slug']; ?>"><?php echo $related_post['title']; ?></a><br>
<?php } ?>
</div>

View File

@@ -0,0 +1,3 @@
<?php foreach($tags as $tag) { ?>
<a href="<?php echo Option::get('siteurl'); ?>/<?php echo Blog::$parent_page_name; ?>?tag=<?php echo $tag; ?>" class="monstra-blog-tag"><span class="label label-primary"><?php echo $tag; ?></span></a>
<?php } ?>

View File

@@ -15,8 +15,6 @@ class BackupAdmin extends Backend
{
$backups_path = ROOT . DS . 'backups';
$backups_list = array();
// Create backup
// -------------------------------------
if (Request::post('create_backup')) {
@@ -32,12 +30,18 @@ class BackupAdmin extends Backend
$zip->readDir(STORAGE . DS, false);
// Add public folder
if (Request::post('add_public_folder')) $zip->readDir(ROOT . DS . 'public' . DS, false);
$zip->readDir(ROOT . DS . 'public' . DS, false);
// Add plugins folder
if (Request::post('add_plugins_folder')) $zip->readDir(PLUGINS . DS, false);
$zip->readDir(PLUGINS . DS, false, null, array(PLUGINS . DS . 'box'));
$zip->archive($backups_path . DS . Date::format(time(), "Y-m-d-H-i-s").'.zip');
if ($zip->archive($backups_path . DS . Date::format(time(), "Y-m-d-H-i-s").'.zip')) {
Notification::set('success', __('Backup was created', 'backup'));
} else {
Notification::set('error', __('Backup was not created', 'backup'));
}
Request::redirect(Option::get('siteurl').'/admin/index.php?id=backup');
} else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); }
}
@@ -48,8 +52,13 @@ class BackupAdmin extends Backend
if (Security::check(Request::get('token'))) {
File::delete($backups_path . DS . Request::get('delete_file'));
Request::redirect(Option::get('siteurl').'admin/index.php?id=backup');
if (File::delete($backups_path . DS . Request::get('delete_file'))) {
Notification::set('success', __('Backup was deleted', 'backup'));
} else {
Notification::set('error', __('Backup was not deleted', 'backup'));
}
Request::redirect(Option::get('siteurl').'/admin/index.php?id=backup');
} else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); }
}
@@ -62,12 +71,34 @@ class BackupAdmin extends Backend
} else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); }
}
// Get backup list
$backups_list = File::scan($backups_path, '.zip');
// Restore backup
// -------------------------------------
if (Request::get('restore')) {
if (Security::check(Request::get('token'))) {
$tmp_dir = ROOT . DS . 'tmp' . DS . uniqid('backup_');
if (Dir::create($tmp_dir)) {
$file_locations = Zip::factory()->extract($backups_path . DS . Request::get('restore'), $tmp_dir);
if (!empty($file_locations)) {
Dir::copy($tmp_dir, ROOT . DS);
Notification::set('success', __('Backup was restored', 'backup'));
} else {
Notification::set('error', __('Unzip error', 'backup'));
}
} else {
Notification::set('error', __('Backup was not restored', 'backup'));
}
Request::redirect(Option::get('siteurl').'/admin/index.php?id=backup');
} else { die('Request was denied because it contained an invalid security token. Please refresh the page and try again.'); }
}
// Display view
View::factory('box/backup/views/backend/index')
->assign('backups_list', $backups_list)
->assign('backups_list', File::scan($backups_path, '.zip'))
->display();
}
}

View File

@@ -3,8 +3,10 @@
return array(
'backup' => array(
'Backups' => 'Backups',
'Backup' => 'Backup',
'Backup Date' => 'Backup Date',
'Create Backup' => 'Create Backup',
'Restore' => 'Restore',
'Delete' => 'Delete',
'storage' => 'storage',
'public' => 'public',
@@ -13,5 +15,12 @@
'Actions' => 'Actions',
'Delete backup: :backup' => 'Delete backup: :backup',
'Creating...' => 'Creating...',
'Backup was created' => 'Backup was created',
'Backup was not created' => 'Backup was not created',
'Backup was deleted' => 'Backup was deleted',
'Backup was not deleted' => 'Backup was not deleted',
'Backup was restored' => 'Backup was restored',
'Unzip error' => 'Unzip error',
'Backup was not restored' => 'Backup was not restored',
)
);
);

View File

@@ -0,0 +1,17 @@
<?php
return array(
'backup' => array(
'Backups' => 'Cadangan',
'Backup date' => 'Tanggal Cadangan',
'Create Backup' => 'Buat Cadangan',
'Delete' => 'Hapus',
'storage' => 'Penyimpanan',
'public' => 'Umum',
'plugins' => 'Plugins',
'Size' => 'Ukuran',
'Actions' => 'Tindakan',
'Delete backup: :backup' => 'Hapus Cadangan: :backup',
'Creating...' => 'Dibuat...',
)
);

View File

@@ -0,0 +1,17 @@
<?php
return array(
'backup' => array(
'Backups' => 'バックアップ',
'Backup Date' => 'バックアップ日',
'Create Backup' => 'バックアップの作成',
'Delete' => '削除',
'storage' => 'ストレージ',
'public' => '公開',
'plugins' => 'プラグイン',
'Size' => 'サイズ',
'Actions' => 'アクション',
'Delete backup: :backup' => 'バックアップの削除: :backup',
'Creating...' => '作成中...',
)
);

View File

@@ -13,5 +13,9 @@
'Actions' => 'Действия',
'Delete backup: :backup' => 'Удалить бекап: :backup',
'Creating...' => 'Создание...',
'Backup was deleted' => 'Бекап не был создан',
'Backup was created' => 'Бекап был создан',
'Backup was not restored' => 'Бекап не был восстановлен',
'Backup was restored' => 'Бекап был восстановлен',
)
);

View File

@@ -0,0 +1,26 @@
<?php
return array(
'backup' => array(
'Backups' => 'Yedekler',
'Backup' => 'Yedek',
'Backup Date' => 'Yedekleme Tarihi',
'Create Backup' => 'Yedek Al',
'Delete' => 'Sil',
'Restore' => 'Geri Yükle',
'storage' => 'depo',
'public' => 'genel',
'plugins' => 'eklentiler',
'Size' => 'Boyut',
'Actions' => 'Eylemler',
'Delete backup: :backup' => ':backup adlı yedek silinsin mi',
'Creating...' => 'Oluşturuluyor...',
'Backup was created' => 'Yedek oluşturuldu',
'Backup was not created' => 'Yedek oluşturulmadı',
'Backup was deleted' => 'Yedek silindi',
'Backup was not deleted' => 'Yedek silinmedi',
'Backup was restored' => 'Yedek geri yüklendi',
'Unzip error' => 'Sıkıştırılmış yedeği açma (unzip) hatası',
'Backup was not restored' => 'Yedek geri yüklenmedi',
)
);

View File

@@ -0,0 +1,17 @@
<?php
return array(
'backup' => array(
'Backups' => '备份',
'Backup Date' => '备份日期',
'Create Backup' => '创建备份',
'Delete' => '删除',
'storage' => '存储',
'public' => '公开',
'plugins' => '插件',
'Size' => '大小',
'Actions' => '操作',
'Delete backup: :backup' => '删除备份: :backup',
'Creating...' => '正在创建...',
)
);

View File

@@ -1,30 +1,28 @@
<h2><?php echo __('Backups', 'backup'); ?></h2>
<br />
<script>$().ready(function(){$('[name=create_backup]').click(function(){$(this).button('loading');});});</script>
<?php if (Notification::get('success')) Alert::success(Notification::get('success')); ?>
<script>
$().ready(function(){$('[name=create_backup]').click(function(){$(this).button('loading');});});
</script>
<?php
echo (
Form::open() .
Form::hidden('csrf', Security::token()).
Form::checkbox('add_storage_folder', null, true, array('disabled' => 'disabled')) . ' ' . __('storage', 'backup') . ' ' . Html::nbsp(2) .
Form::checkbox('add_public_folder') . ' ' . __('public', 'backup') . ' ' . Html::nbsp(2) .
Form::checkbox('add_plugins_folder') . ' ' . __('plugins', 'backup') . ' ' . Html::nbsp(2) .
Form::submit('create_backup', __('Create Backup', 'backup'), array('class' => 'btn', 'data-loading-text' => __('Creating...', 'backup'))).
Form::close()
);
?>
<div class="vertical-align margin-bottom-1">
<div class="text-left row-phone">
<h2><?php echo __('Backups', 'backup'); ?></h2>
</div>
<div class="text-right row-phone">
<?php
echo (
Form::open(null, array('class' => 'form-inline')) .
Form::hidden('csrf', Security::token()).
Form::submit('create_backup', __('Create Backup', 'backup'), array('class' => 'btn btn-phone btn-primary', 'data-loading-text' => __('Creating...', 'backup'))).
Form::close()
);
?>
</div>
</div>
<!-- Backup_list -->
<div class="table-responsive">
<table class="table table-bordered">
<thead>
<tr>
<th><?php echo __('Backup', 'backup'); ?></th>
<th><?php echo __('Size', 'backup'); ?></th>
<th class="visible-lg hidden-xs"><?php echo __('Size', 'backup'); ?></th>
<th></th>
</tr>
</thead>
@@ -33,14 +31,21 @@ $().ready(function(){$('[name=create_backup]').click(function(){$(this).button('
<tr>
<td>
<?php $name = strtotime(str_replace('-', '', basename($backup, '.zip'))); ?>
<?php echo Html::anchor(Date::format($name, 'F jS, Y - g:i A'), Option::get('siteurl').'admin/index.php?id=backup&download='.$backup.'&token='.Security::token()); ?>
<?php echo Html::anchor(Date::format($name, 'F jS, Y - g:i A'), Option::get('siteurl').'/admin/index.php?id=backup&download='.$backup.'&token='.Security::token()); ?>
</td>
<td><?php echo Number::byteFormat(filesize(ROOT . DS . 'backups' . DS . $backup)); ?></td>
<td class="visible-lg hidden-xs"><?php echo Number::byteFormat(filesize(ROOT . DS . 'backups' . DS . $backup)); ?></td>
<td>
<div class="pull-right">
<?php
if (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN') {
echo Html::anchor(__('Restore', 'backup'),
'index.php?id=backup&restore='.$backup.'&token='.Security::token(),
array('class' => 'btn btn-primary'));
}
?>
<?php echo Html::anchor(__('Delete', 'backup'),
'index.php?id=backup&delete_file='.$backup.'&token='.Security::token(),
array('class' => 'btn btn-small', 'onclick' => "return confirmDelete('".__('Delete backup: :backup', 'backup', array(':backup' => Date::format($name, 'F jS, Y - g:i A')))."')"));
array('class' => 'btn btn-danger', 'onclick' => "return confirmDelete('".__('Delete backup: :backup', 'backup', array(':backup' => Date::format($name, 'F jS, Y - g:i A')))."')"));
?>
</div>
</td>
@@ -48,4 +53,5 @@ $().ready(function(){$('[name=create_backup]').click(function(){$(this).button('
<?php } ?>
</tbody>
</table>
</div>
<!-- /Backup_list -->

View File

@@ -2,6 +2,7 @@
// Add plugin navigation link
Navigation::add(__('Blocks', 'blocks'), 'content', 'blocks', 2);
Dashboard::addNewItem('blocks', __('Blocks', 'blocks'), 'index.php?id=blocks&action=add_block', 2);
/**
* Blocks Admin Class

View File

@@ -25,5 +25,6 @@
'Embed Code' => 'Embed Code',
'Shortcode' => 'Shortcode',
'PHP Code' => 'PHP Code',
'Cancel' => 'Abbrechen',
)
);

View File

@@ -25,5 +25,6 @@
'Embed Code' => 'Embed Code',
'Shortcode' => 'Shortcode',
'PHP Code' => 'PHP Code',
'Cancel' => 'Cancel',
)
);

View File

@@ -25,5 +25,6 @@
'Embed Code' => 'Codigo para incrustar',
'Shortcode' => 'Codigo corto',
'PHP Code' => 'Codigo PHP',
'Cancel' => 'Cancel',
)
);

View File

@@ -25,5 +25,6 @@
'Embed Code' => 'کد درج شده',
'Shortcode' => 'کدکوتاه',
'PHP Code' => 'کد PHP',
'Cancel' => 'Cancel',
)
);

View File

@@ -25,5 +25,6 @@
'Embed Code' => 'Code intégré',
'Shortcode' => 'Code court',
'PHP Code' => 'Code PHP',
'Cancel' => 'Cancel',
)
);

View File

@@ -25,5 +25,6 @@
'Embed Code' => 'Beágyazott kód',
'Shortcode' => 'Shortcode',
'PHP Code' => 'PHP Code',
'Cancel' => 'Cancel',
)
);

View File

@@ -0,0 +1,29 @@
<?php
return array(
'blocks' => array(
'Blocks' => 'Block',
'Blocks manager' => 'Pengelolaan Block',
'Delete' => 'Hapus',
'Edit' => 'Perbaiki',
'Name' => 'Nama',
'Create New Block' => 'Buat Block Baru',
'New Block' => 'Block Baru',
'Edit Block' => 'Edit Block',
'Save' => 'Simpan',
'Save and Exit' => 'Simpan dan Keluar',
'Actions' => 'Tindakan',
'Required field' => 'Isian yang Dibutuhkan',
'This block already exists' => 'Block ini sudah ada',
'This block does not exist' => 'Block ini belum ada',
'Delete block: :block' => 'Hapus Block: :block',
'Block content' => 'Isi Block',
'Block <i>:name</i> deleted' => 'Block <i>:nama</i> dihapus',
'Your changes to the block <i>:name</i> have been saved.' => 'Perubahan pada block <i>:nama</i> telah disimpan.',
'Delete block: :block' => 'Hapus Block: :block',
'View Embed Code' => 'Lihat Embed Code',
'Embed Code' => 'Embed Code',
'Shortcode' => 'Shortcode',
'PHP Code' => 'PHP Code',
)
);

View File

@@ -25,5 +25,6 @@
'Embed Code' => 'Embed Code',
'Shortcode' => 'Shortcode',
'PHP Code' => 'PHP Code',
'Cancel' => 'Cancel',
)
);

View File

@@ -0,0 +1,29 @@
<?php
return array(
'blocks' => array(
'Blocks' => 'ブロック',
'Blocks manager' => 'ブロックの管理',
'Delete' => '削除',
'Edit' => '編集',
'Name' => '名前',
'Create New Block' => '新しいブロックを作成',
'New Block' => '新しいブロック',
'Edit Block' => 'ブロックを編集',
'Save' => '保存',
'Save and Exit' => '保存して終了',
'Actions' => 'アクション',
'Required field' => '必須項目',
'This block already exists' => 'このブロックはすでに存在しています',
'This block does not exist' => 'このブロックは存在していません',
'Delete block: :block' => 'ブロックの削除: :block',
'Block content' => 'ブロックの内容',
'Block <i>:name</i> deleted' => '<i>:name</i> ブロックが削除されました',
'Your changes to the block <i>:name</i> have been saved.' => '<i>:name</i> への変更は保存されました。',
'Delete block: :block' => 'ブロックの削除: :block',
'View Embed Code' => '埋め込みコードを表示',
'Embed Code' => '埋め込みコード',
'Shortcode' => 'ショートコード',
'PHP Code' => 'PHPコード',
)
);

View File

@@ -25,5 +25,6 @@
'Embed Code' => 'Embed Code',
'Shortcode' => 'Shortcode',
'PHP Code' => 'PHP Code',
'Cancel' => 'Cancel',
)
);

View File

@@ -25,5 +25,6 @@
'Embed Code' => 'Insluitcode',
'Shortcode' => 'Verkorte code',
'PHP Code' => 'PHP Code',
'Cancel' => 'Cancel',
)
);

View File

@@ -25,5 +25,6 @@
'Embed Code' => 'Osadzony kod',
'Shortcode' => 'Krótki kod (shortcode)',
'PHP Code' => 'Kod PHP',
'Cancel' => 'Cancel',
)
);

View File

@@ -25,5 +25,6 @@
'Embed Code' => 'Embed Code',
'Shortcode' => 'Shortcode',
'PHP Code' => 'PHP Code',
'Cancel' => 'Cancel',
)
);

View File

@@ -25,5 +25,6 @@
'Embed Code' => 'Код для вставки',
'Shortcode' => 'Шорткод',
'PHP Code' => 'PHP код',
'Cancel' => 'Отмена',
)
);

View File

@@ -25,5 +25,6 @@
'Embed Code' => 'Vložený kód',
'Shortcode' => 'Skrátený kód',
'PHP Code' => 'PHP kód',
'Cancel' => 'Cancel',
)
);

View File

@@ -25,5 +25,6 @@
'Embed Code' => 'Embed Kod',
'Shortcode' => 'Kratak kod',
'PHP Code' => 'PHP kod',
'Cancel' => 'Cancel',
)
);

View File

@@ -0,0 +1,30 @@
<?php
return array(
'blocks' => array(
'Blocks' => 'Bloklar',
'Blocks manager' => 'Blok yöneticisi',
'Delete' => 'Sil',
'Edit' => 'Düzenle',
'Name' => 'Ad',
'Create New Block' => 'Yeni Blok Oluştur',
'New Block' => 'Yeni Blok',
'Edit Block' => 'Bloğu Düzenle',
'Save' => 'Kaydet',
'Save and Exit' => 'Kaydet ve Çık',
'Actions' => 'İşlemler',
'Required field' => 'Zorunlu alan',
'This block already exists' => 'Bu blok zaten var.',
'This block does not exist' => 'Blok bulunamadı.',
'Delete block: :block' => ':block adlı blok silinsin mi',
'Block content' => 'Blok içeriği',
'Block <i>:name</i> deleted' => '<i>:name</i> adlı blok silindi.',
'Your changes to the block <i>:name</i> have been saved.' => 'Değişiklikler <i>:name</i> bloğuna kaydedildi.',
'Delete block: :block' => ':block adlı blok silinsin mi',
'View Embed Code' => 'Gömülür Kodu Görüntüle',
'Embed Code' => 'Gömülür Kodu',
'Shortcode' => 'Kısa Kod',
'PHP Code' => 'PHP Kodu',
'Cancel' => 'Vazgeç',
)
);

View File

@@ -25,5 +25,6 @@
'Embed Code' => 'Код для вставки',
'Shortcode' => 'Шорткод',
'PHP Code' => 'PHP код',
'Cancel' => 'Відмінити',
)
);

View File

@@ -0,0 +1,29 @@
<?php
return array(
'blocks' => array(
'Blocks' => '版块',
'Blocks manager' => '版块管理',
'Delete' => '删除',
'Edit' => '编辑',
'Name' => '名称',
'Create New Block' => '创建新版块',
'New Block' => '新版块',
'Edit Block' => '编辑版块',
'Save' => '保存',
'Save and Exit' => '保存并退出',
'Actions' => '操作',
'Required field' => '必填字段',
'This block already exists' => '此版块已存在',
'This block does not exist' => '此版块不存在',
'Delete block: :block' => '删除版块: :block',
'Block content' => '版块内容',
'Block <i>:name</i> deleted' => '版块 <i>:name</i> 已删除',
'Your changes to the block <i>:name</i> have been saved.' => '您修改的版块 <i>:name</i> 已保存。',
'Delete block: :block' => '删除版块: :block',
'View Embed Code' => '查看嵌入代码',
'Embed Code' => '嵌入代码',
'Shortcode' => '短代码',
'PHP Code' => 'PHP 代码',
)
);

View File

@@ -1,7 +1,4 @@
<h2><?php echo __('New Block', 'blocks'); ?></h2>
<br />
<?php if (Notification::get('success')) Alert::success(Notification::get('success')); ?>
<h2 class="margin-bottom-1"><?php echo __('New Block', 'blocks'); ?></h2>
<?php if (isset($errors['blocks_empty_name']) or isset($errors['blocks_exists'])) $error_class = 'error'; else $error_class = ''; ?>
@@ -9,25 +6,26 @@
<?php echo (Form::hidden('csrf', Security::token())); ?>
<?php echo (Form::label('name', __('Name', 'blocks'))); ?>
<div class="form-group margin-bottom-1">
<?php echo (Form::label('name', __('Name', 'blocks'))); ?>
<?php echo (Form::input('name', $name, array('class' => (isset($errors['blocks_empty_name']) || isset($errors['blocks_exists'])) ? 'form-control error-field' : 'form-control'))); ?>
<?php
if (isset($errors['blocks_empty_name'])) echo '<span class="error-message">'.$errors['blocks_empty_name'].'</span>';
if (isset($errors['blocks_exists'])) echo '<span class="error-message">'.$errors['blocks_exists'].'</span>';
?>
</div>
<?php echo (Form::input('name', $name, array('class' => (isset($errors['blocks_empty_name']) || isset($errors['blocks_exists'])) ? 'input-xxlarge error-field' : 'input-xxlarge'))); ?>
<div class="row margin-bottom-1">
<div class="col-xs-12">
<?php Action::run('admin_editor', array(Html::toText($content))); ?>
</div>
</div>
<?php
if (isset($errors['blocks_empty_name'])) echo '&nbsp;&nbsp;&nbsp;<span style="color:red">'.$errors['blocks_empty_name'].'</span>';
if (isset($errors['blocks_exists'])) echo '&nbsp;&nbsp;&nbsp;<span style="color:red">'.$errors['blocks_exists'].'</span>';
?>
<br /><br />
<?php
Action::run('admin_editor', array(Html::toText($content)));
echo (
Html::br().
Form::submit('add_blocks_and_exit', __('Save and Exit', 'blocks'), array('class' => 'btn')).Html::nbsp(2).
Form::submit('add_blocks', __('Save', 'blocks'), array('class' => 'btn')).
Form::submit('add_blocks_and_exit', __('Save and Exit', 'blocks'), array('class' => 'btn btn-phone btn-primary')).Html::nbsp(2).
Form::submit('add_blocks', __('Save', 'blocks'), array('class' => 'btn btn-phone btn-primary')).Html::nbsp(2).
Html::anchor(__('Cancel', 'blocks'), 'index.php?id=blocks', array('title' => __('Cancel', 'blocks'), 'class' => 'btn btn-phone btn-default')).
Form::close()
);
?>

View File

@@ -1,7 +1,4 @@
<h2><?php echo __('Edit Block', 'blocks'); ?></h2>
<br />
<?php if (Notification::get('success')) Alert::success(Notification::get('success')); ?>
<h2 class="margin-bottom-1"><?php echo __('Edit Block', 'blocks'); ?></h2>
<?php
if ($content !== null) {
@@ -9,31 +6,32 @@
if (isset($errors['blocks_empty_name']) or isset($errors['blocks_exists'])) $error_class = 'error'; else $error_class = '';
echo (Form::open());
echo (Form::hidden('csrf', Security::token()));
echo (Form::hidden('blocks_old_name', Request::get('filename')));
?>
<?php echo (Form::label('name', __('Name', 'blocks'))); ?>
<?php echo (Form::input('name', $name, array('class' => (isset($errors['blocks_empty_name']) || isset($errors['blocks_exists'])) ? 'input-xxlarge error-field' : 'input-xxlarge'))); ?>
<div class="form-group margin-bottom-1">
<?php echo (Form::label('name', __('Name', 'blocks'))); ?>
<?php echo (Form::input('name', $name, array('class' => (isset($errors['blocks_empty_name']) || isset($errors['blocks_exists'])) ? 'form-control error-field' : 'form-control'))); ?>
<?php
if (isset($errors['blocks_empty_name'])) echo '&nbsp;&nbsp;&nbsp;<span style="color:red">'.$errors['blocks_empty_name'].'</span>';
if (isset($errors['blocks_exists'])) echo '&nbsp;&nbsp;&nbsp;<span style="color:red">'.$errors['blocks_exists'].'</span>';
if (isset($errors['blocks_empty_name'])) echo '<span class="error-message">'.$errors['blocks_empty_name'].'</span>';
if (isset($errors['blocks_exists'])) echo '<span class="error-message">'.$errors['blocks_exists'].'</span>';
?>
</div>
<br /><br />
<?php
Action::run('admin_editor', array(Html::toText($content)));
<div class="row margin-bottom-1">
<div class="col-xs-12">
<?php Action::run('admin_editor', array(Html::toText($content))); ?>
</div>
</div>
<?php
echo (
Html::br().
Form::submit('edit_blocks_and_exit', __('Save and Exit', 'blocks'), array('class' => 'btn default')).Html::nbsp(2).
Form::submit('edit_blocks', __('Save', 'blocks'), array('class' => 'btn default')). Html::nbsp().
Form::submit('edit_blocks_and_exit', __('Save and Exit', 'blocks'), array('class' => 'btn btn-phone btn-primary')).Html::nbsp(2).
Form::submit('edit_blocks', __('Save', 'blocks'), array('class' => 'btn btn-phone btn-primary')). Html::nbsp(2).
Html::anchor(__('Cancel', 'blocks'), 'index.php?id=blocks', array('title' => __('Cancel', 'blocks'), 'class' => 'btn btn-phone btn-default')).
Form::close()
);

View File

@@ -1,15 +1,15 @@
<h2><?php echo __('Blocks', 'blocks'); ?></h2>
<br />
<?php if(Notification::get('success')) Alert::success(Notification::get('success')); ?>
<?php
echo (
Html::anchor(__('Create New Block', 'blocks'), 'index.php?id=blocks&action=add_block', array('title' => __('Create New Block', 'blocks'), 'class' => 'btn default btn-small')). Html::nbsp(3)
);
?>
<br /><br />
<div class="vertical-align margin-bottom-1">
<div class="text-left row-phone">
<h2><?php echo __('Blocks', 'blocks'); ?></h2>
</div>
<div class="text-right row-phone">
<?php
echo (
Html::anchor(__('Create New Block', 'blocks'), 'index.php?id=blocks&action=add_block', array('title' => __('Create New Block', 'blocks'), 'class' => 'btn btn-phone btn-primary'))
);
?>
</div>
</div>
<!-- Blocks_list -->
<table class="table table-bordered">
@@ -24,20 +24,21 @@
<tr>
<td><?php echo basename($block, '.block.html'); ?></td>
<td>
<div class="pull-right">
<div class="btn-toolbar">
<div class="pull-right">
<div class="btn-group">
<?php echo Html::anchor(__('Edit', 'blocks'), 'index.php?id=blocks&action=edit_block&filename='.basename($block, '.block.html'), array('class' => 'btn btn-actions btn-small')); ?>
<a class="btn dropdown-toggle btn-actions btn-small" data-toggle="dropdown" href="#" style="font-family:arial;"><span class="caret"></span></a>
<ul class="dropdown-menu">
<?php echo Html::anchor(__('Edit', 'blocks'), 'index.php?id=blocks&action=edit_block&filename='.basename($block, '.block.html'), array('class' => 'btn btn-primary')); ?>
<button type="button" class="btn dropdown-toggle btn-primary" data-toggle="dropdown">
<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu" role="menu">
<li><?php echo Html::anchor(__('View Embed Code', 'blocks'), 'javascript:;', array('title' => __('View Embed Code', 'blocks'), 'onclick' => '$.monstra.blocks.showEmbedCodes("'.basename($block, '.block.html').'");')); ?></li>
</ul>
<?php echo Html::anchor(__('Delete', 'blocks'),
'index.php?id=blocks&action=delete_block&filename='.basename($block, '.block.html').'&token='.Security::token(),
array('class' => 'btn btn-actions btn-small btn-actions-default', 'onclick' => "return confirmDelete('".__('Delete block: :block', 'blocks', array(':block' => basename($block, '.block.html')))."')"));
?>
</div>
</div>
<?php echo Html::anchor(__('Delete', 'blocks'),
'index.php?id=blocks&action=delete_block&filename='.basename($block, '.block.html').'&token='.Security::token(),
array('class' => 'btn btn-danger', 'onclick' => "return confirmDelete('".__('Delete block: :block', 'blocks', array(':block' => basename($block, '.block.html')))."')"));
?>
</div>
</td>
</tr>
@@ -46,18 +47,20 @@
</table>
<!-- /Blocks_list -->
<div id="embedCodes" class="modal hide fade">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
<h3><?php echo __('Embed Code', 'blocks'); ?></h3>
</div>
<div class="modal-body">
<p>
<b><?php echo __('Shortcode', 'blocks'); ?></b><br>
<code id="shortcode"></code>
<br> <br>
<b><?php echo __('PHP Code', 'blocks'); ?></b><br>
<code id="phpcode"></code>
</p>
</div>
</div>
<div class="modal fade" id="embedCodes">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<div class="close" data-dismiss="modal">&times;</div>
<h4 class="modal-title"><?php echo __('Embed Code', 'snippets'); ?></h4>
</div>
<div class="modal-body">
<b><?php echo __('Shortcode', 'snippets'); ?></b><br>
<pre><code id="shortcode"></code></pre>
<br>
<b><?php echo __('PHP Code', 'snippets'); ?></b><br>
<pre><code id="phpcode"></code></pre>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,122 @@
<?php
// Add Plugin Javascript
Stylesheet::add('public/assets/css/daterangepicker-bs3.css', 'backend', 11);
Javascript::add('public/assets/js/moment.min.js', 'backend', 11);
Javascript::add('public/assets/js/daterangepicker.js', 'backend', 12);
Javascript::add('plugins/box/dashboard/js/ganalytics.js', 'backend', 13);
/**
* Dashboard admin class
*/
class DashboardAdmin extends Backend
{
/**
* Main Dashboard admin function
*/
public static function main()
{
// set/update google analytics settings
if (Request::post('ga_settings_update')) {
if (Security::check(Request::post('csrf'))) {
// client id
$ga_client_id = trim(Request::post('ga_client_id'));
if (!empty($ga_client_id)) {
$opt_client_id = Option::get('ga_client_id');
if (empty($opt_client_id)) {
Option::add('ga_client_id', $ga_client_id);
} else {
Option::update('ga_client_id', $ga_client_id);
}
}
// API key
$ga_api_key = trim(Request::post('ga_api_key'));
if (!empty($ga_api_key)) {
$opt_api_key = Option::get('ga_api_key');
if (empty($opt_api_key)) {
Option::add('ga_api_key', $ga_api_key);
} else {
Option::update('ga_api_key', $ga_api_key);
}
}
// view id
$ga_view_id = trim(Request::post('ga_view_id'));
if (!empty($ga_view_id)) {
$opt_view_id = Option::get('ga_view_id');
if (empty($opt_view_id)) {
Option::add('ga_view_id', $ga_view_id);
} else {
Option::update('ga_view_id', $ga_view_id);
}
}
// tracking id
$ga_tracking_id = trim(Request::post('ga_tracking_id'));
if (!empty($ga_tracking_id)) {
$opt_view_id = Option::get('ga_tracking_id');
if (empty($opt_view_id)) {
Option::add('ga_tracking_id', $ga_tracking_id);
} else {
Option::update('ga_tracking_id', $ga_tracking_id);
}
}
}
}
// Display view
View::factory('box/dashboard/views/backend/index')->display();
}
}
/**
* Dashboard
*/
class Dashboard
{
/**
* Items
*
* @var array
*/
public static $items = array();
/**
*
*/
public static function addNewItem($id, $title, $url, $priority = 1)
{
Dashboard::$items[] = array(
'id' => (string) $id,
'title' => (string) $title,
'url' => (string) $url,
'priority' => (int) $priority,
);
}
/**
*
*/
public static function drawItems()
{
// Sort items by priority
$items = Arr::subvalSort(Dashboard::$items, 'priority');
foreach ($items as $item) {
echo '<li>';
echo Html::anchor($item['title'], $item['url'], array('title' => $item['title']));
echo '</li>';
}
}
}

View File

@@ -0,0 +1,30 @@
<?php
/**
* Dashboard plugin
*
* @package Monstra
* @subpackage Plugins
* @author Romanenko Sergey / Awilum
* @copyright 2012-2014 Romanenko Sergey / Awilum
* @version 1.0.0
*
*/
// Register plugin
Plugin::register( __FILE__,
__('Dashboard', 'dashboard'),
__('Dashboard plugin for Monstra', 'dashboard'),
'1.0.0',
'Awilum',
'http://monstra.org/',
null,
'box');
// Load Sandbox Admin for Editor and Admin
if (Session::exists('user_role') && in_array(Session::get('user_role'), array('admin', 'editor'))) {
Plugin::admin('dashboard', 'box');
}

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<root>
<plugin_location>plugins/dashboard/dashboard.plugin.php</plugin_location>
<plugin_status>active</plugin_status>
<plugin_priority>15</plugin_priority>
<plugin_name>Dashboard</plugin_name>
<plugin_description>Dashboard plugin for Monstra</plugin_description>
<plugin_version>1.0.0</plugin_version>
<plugin_author>Awilum</plugin_author>
<plugin_author_uri>http://monstra.org/</plugin_author_uri>
</root>

View File

@@ -0,0 +1,2 @@
Options -Indexes
Allow from all

View File

@@ -0,0 +1,183 @@
if (typeof $.monstra == 'undefined') $.monstra = {};
function glibOnloadHandle(){$.monstra.ganalytics.libOnloadHandle();}
$.monstra.ganalytics = {
conf: {
clientId: '',
apiKey: '',
viewId: '',
authScopes: 'https://www.googleapis.com/auth/analytics.readonly'
},
_gaAreas: '#authOk,#authFail,#gaSettings,#gaLoading,#reauthError,#gaHelpLink',
_startDate: moment().subtract('days', 29),
_endDate: moment(),
init: function(data){
$.extend(this.conf, data);
$('.gaSettingsLink').click(function(){
$.monstra.ganalytics.show('#gaSettings,#gaHelpLink');
$('.gaSettingsLink').hide();
});
},
initDateRangePicker: function(){
$('#reportRange').daterangepicker({
ranges: {
'Today': [moment(), moment()],
'Yesterday': [moment().subtract('days', 1), moment().subtract('days', 1)],
'Last 7 Days': [moment().subtract('days', 6), moment()],
'Last 30 Days': [moment().subtract('days', 29), moment()],
'This Month': [moment().startOf('month'), moment().endOf('month')],
'Last Month': [moment().subtract('month', 1).startOf('month'), moment().subtract('month', 1).endOf('month')]
},
startDate: $.monstra.ganalytics._startDate,
endDate: $.monstra.ganalytics._endDate
},function(start, end) {
$.monstra.ganalytics.getAnalyticsInfo(start._d, end._d);
}
);
$.monstra.ganalytics.getAnalyticsInfo($.monstra.ganalytics._startDate._d, $.monstra.ganalytics._endDate._d);
},
libOnloadHandle: function(){
if ($.monstra.ganalytics.conf.clientId == ''
|| $.monstra.ganalytics.conf.apiKey == ''
|| $.monstra.ganalytics.conf.viewId == ''
) {
$.monstra.ganalytics.show('#gaSettings,#gaHelpLink');
$('.gaSettingsLink').hide();
return false;
}
gapi.client.setApiKey(this.conf.apiKey);
window.setTimeout(function(){
$.monstra.ganalytics.checkAuth(true);
},1);
},
checkAuth: function(immediate){
gapi.auth.authorize({
client_id: $.monstra.ganalytics.conf.clientId,
scope: $.monstra.ganalytics.conf.authScopes,
immediate: immediate
}, $.monstra.ganalytics.handleAuthResult);
return immediate;
},
handleAuthResult: function(authResult){
if (authResult && !authResult.error) {
$.monstra.ganalytics.show('#authOk');
$.monstra.ganalytics.initDateRangePicker();
} else {
$.monstra.ganalytics.show('#authFail');
if (authResult && typeof authResult.error != 'undefined') {
$.monstra.ganalytics.showError(authResult.error.message);
}
$('#authorizeButton').on('click', function(e){
$.monstra.ganalytics.checkAuth(false);
});
}
},
getAnalyticsInfo: function(startDate, endDate) {
gapi.client.load('analytics', 'v3', function(){
gapi.client.analytics.data.ga.get({
'ids': 'ga:'+ $.monstra.ganalytics.conf.viewId,
'start-date': $.monstra.ganalytics.formatDate(startDate),
'end-date': $.monstra.ganalytics.formatDate(endDate),
'metrics': 'ga:visits,ga:pageviews,ga:visitors',
'dimensions': 'ga:date'
}).execute($.monstra.ganalytics.gaReportingResults);
});
},
gaReportingResults: function(res){
if (typeof res.error != 'undefined' && typeof res.error.message != 'undefined') {
$.monstra.ganalytics.showError(res.error.message, res.error.code);
return;
}
// build chart data
var dataArr = [['Date', 'Visits']];
for (r in res.rows) {
var tmpr = [];
for (h in res.columnHeaders) {
if (res.columnHeaders[h].name == 'ga:visits') {
tmpr[1] = parseInt(res.rows[r][h]);
} else if (res.columnHeaders[h].name == 'ga:date') {
var parsed = res.rows[r][h].match(/([0-9]{4})([0-9]{2})([0-9]{2})/)
tmpr[0] = parsed[1] +'-'+ parsed[2] +'-'+ parsed[3];
}
if (res.rows.length == (parseInt(r)+1)) {
switch(res.columnHeaders[h].name) {
case 'ga:visits': $.monstra.ganalytics.setVisits(res.rows[r][h]); break;
case 'ga:pageviews': $.monstra.ganalytics.setPageviews(res.rows[r][h]); break;
case 'ga:visitors': $.monstra.ganalytics.setVisitors(res.rows[r][h]); break;
}
}
}
dataArr.push(tmpr);
}
var data = google.visualization.arrayToDataTable(dataArr);
var options = {
title: 'Visits',
hAxis: {title: 'Date', titleTextStyle: {color: '#333'}},
vAxis: {minValue: 0}
};
var chart = new google.visualization.AreaChart(document.getElementById('gaChart'));
chart.draw(data, options);
},
formatDate: function(dateObj){
var m = dateObj.getMonth()+1;
var d = dateObj.getDate();
m = m > 9 ? m : '0'+m;
d = d > 9 ? d : '0'+d;
return dateObj.getFullYear() +'-'+ m +'-'+ d;
},
show: function(selector){
$('.gaSettingsLink').show();
$('#gaAlerts').html('');
$($.monstra.ganalytics._gaAreas).addClass('hide');
$(selector).removeClass('hide').show();
},
showError: function(msg, errCode){
if (typeof errCode !== 'undefined' && errCode == 403) {
$.monstra.ganalytics.show('#reauthError,#gaHelpLink');
} else {
$.monstra.ganalytics.show('#gaHelpLink');
}
$('#gaAlerts').html(msg);
$('#authOk').addClass('hide');
},
setVisits: function(val){
$('#gaVisits').html(val);
},
setVisitors: function(val){
$('#gaVisitors').html(val);
},
setPageviews: function(val){
$('#gaPageviews').html(val);
}
};
$(document).ready(function(){
$val_gaInitData = $('#gaInitData').val();
if ($val_gaInitData !== undefined) {
$.monstra.ganalytics.init($.parseJSON($val_gaInitData));
}
});

View File

@@ -0,0 +1,11 @@
<?php
return array(
'dashboard' => array(
'Dashboard' => 'Dashboard',
'Dashboard plugin for Monstra' => 'Dashboard plugin für Monstra',
'Welcome back' => 'Willkommen zurück',
'Create New' => 'Erstelle neue',
'Upload File' => 'Datei hochladen',
)
);

View File

@@ -0,0 +1,11 @@
<?php
return array(
'dashboard' => array(
'Dashboard' => 'Dashboard',
'Dashboard plugin for Monstra' => 'Dashboard plugin for Monstra',
'Welcome back' => 'Welcome back',
'Create New' => 'Create New',
'Upload File' => 'Upload File',
)
);

View File

@@ -0,0 +1,11 @@
<?php
return array(
'dashboard' => array(
'Dashboard' => 'Kokpit',
'Dashboard plugin for Monstra' => 'Wtyczka kokpitu dla systemu Monstra',
'Welcome back' => 'Witam ponownie',
'Create New' => 'Utwórz nowy',
'Upload File' => 'Prześlij plik',
)
);

View File

@@ -0,0 +1,11 @@
<?php
return array(
'dashboard' => array(
'Dashboard' => 'Панель',
'Dashboard plugin for Monstra' => 'Панель для Monstra',
'Welcome back' => 'Добро пожаловать',
'Create New' => 'Добавить',
'Upload File' => 'Загрузить Файл',
)
);

View File

@@ -0,0 +1,11 @@
<?php
return array(
'dashboard' => array(
'Dashboard' => 'Pano',
'Dashboard plugin for Monstra' => 'Monstra için pano eklentisi',
'Welcome back' => 'Merhaba',
'Create New' => 'Yeni Oluştur',
'Upload File' => 'Dosya Yükle',
)
);

View File

@@ -0,0 +1,11 @@
<?php
return array(
'dashboard' => array(
'Dashboard' => 'Dashboard',
'Dashboard plugin for Monstra' => 'Dashboard пісочниця для Monstra',
'Welcome back' => 'Добро пожаловать',
'Create New' => 'Додати',
'Upload File' => 'Завантажити файл',
)
);

View File

@@ -0,0 +1,96 @@
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
<script type="text/javascript">
google.load("visualization", "1", {packages:["corechart"]});
</script>
<input type="hidden" id="gaInitData" value='<?php echo json_encode(array(
'clientId' => Option::get('ga_client_id'),
'apiKey' => Option::get('ga_api_key'),
'viewId' => Option::get('ga_view_id')
)); ?>' />
<script src="https://apis.google.com/js/client.js?onload=glibOnloadHandle"></script>
<div class="well dashboard-well">
<div class="row">
<div class="col-md-10"><h4><?php echo __('Goggle Analytics', 'system'); ?></h4></div>
<div class="col-md-2"><a href="#" class="gaSettingsLink"><?php echo __('Settings', 'system'); ?></a></div>
</div>
<div class="row">
<div class="col-md-12">
<div class="row alert-warning"><div class="col-md-12" id="gaAlerts"></div></div>
<div class="row" id="gaLoading">
<div class="col-md-12">Loading...</div>
</div>
<div id="authOk" class="row hide">
<div class="col-md-9">
<div class="row">
<div class="col-md-12">
<div id="reportRange" class="pull-right">
<span class="glyphicon glyphicon-calendar"><?php echo date("F j, Y", strtotime('-30 day')); ?> - <?php echo date("F j, Y"); ?></span> <b class="caret"></b>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div id="gaChart" style="height:350px;"></div>
</div>
</div>
</div>
<div class="col-md-3">
<div><h3>Today</h3></div>
<div>Visits:<span id="gaVisits"></span></div>
<div>Visitors:<span id="gaVisitors"></span></div>
<div>Pageviews:<span id="gaPageviews"></span></div>
</div>
</div>
<div id="authFail" class="row hide">
<div class="col-md-12">
<button class="btn btn-default" id="authorizeButton"><?php echo __('Authorize', 'system'); ?></button>
</div>
</div>
<div id="reauthError" class="row hide">
<div class="col-md-12">
<?php echo __('Please check your analytics settings then exit from google account and authorize with right google analytics account.', 'system'); ?>
</div>
</div>
<div id="gaSettings" class="row hide">
<div class="col-md-4">
<form method="POST">
<?php echo Form::hidden('csrf', Security::token()); ?>
<div class="form-group">
<label><?php echo __('Client ID', 'system'); ?></label><input name="ga_client_id" class="form-control" value="<?php echo Option::get('ga_client_id'); ?>">
</div>
<div class="form-group">
<label><?php echo __('API key', 'system'); ?></label><input name="ga_api_key" class="form-control" value="<?php echo Option::get('ga_api_key'); ?>">
</div>
<div class="form-group">
<label><?php echo __('View ID', 'system'); ?></label><input name="ga_view_id" class="form-control" value="<?php echo Option::get('ga_view_id'); ?>">
</div>
<div class="form-group">
<label><?php echo __('Tracking ID', 'system'); ?></label><input name="ga_tracking_id" class="form-control" value="<?php echo Option::get('ga_tracking_id'); ?>">
</div>
<input type="hidden" name="ga_settings_update" value="1" />
<div class="form-group">
<button type="submit" class="btn btn-primary"><?php echo __('Save', 'system'); ?></button>
</div>
</form>
</div>
</div>
<div id="gaHelpLink" class="row hide">
<div class="col-md-12">
Google Analytics help page: <a href="https://support.google.com/analytics/?hl=en" target="_blank">https://support.google.com/analytics/?hl=en</a>
</div>
</div>
</div>
</div>
</div>

View File

@@ -0,0 +1,52 @@
<div class="well dashboard-well">
<div class="row">
<div class="col-xs-6">
<a class="btn btn-link welcome-back"><?php echo __('Welcome back', 'dashboard'); ?>, <strong><?php echo Session::get('user_login'); ?></strong></a>
</div>
<div class="col-xs-6">
<div class="pull-right">
<div class="btn-group">
<button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown">
<?php echo __('Create New', 'dashboard'); ?> <span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu">
<?php Dashboard::drawItems(); ?>
</ul>
</div>
<?php echo ( Html::anchor(__('Upload File', 'dashboard'), 'index.php?id=filesmanager', array('title' => __('Upload File', 'filesmanager'), 'class' => 'btn btn-primary'))); ?>
</div>
</div>
</div>
</div>
<?php /*include 'ga.view.php';*/ ?>
<div class="well dashboard-well">
<div class="row">
<div class="col-md-3">
<h3><?php echo __('Content', 'pages'); ?></h3>
<ul class="list-unstyled">
<?php Navigation::draw('content'); ?>
</ul>
</div>
<div class="col-md-3">
<h3><?php echo __('Extends', 'system'); ?></h3>
<ul class="list-unstyled">
<?php Navigation::draw('extends'); ?>
</ul>
</div>
<div class="col-md-3">
<h3><?php echo __('System', 'system'); ?></h3>
<ul class="list-unstyled">
<?php Navigation::draw('system'); ?>
</ul>
</div>
<div class="col-md-3">
<h3><?php echo __('Help', 'system'); ?></h3>
<ul class="list-unstyled">
<li><a href="http://monstra.org/documentation" target="_blank"><?php echo __('Documentation', 'system'); ?></a></li>
<li><a href="http://forum.monstra.org" target="_blank"><?php echo __('Official Support Forum', 'system'); ?></a></li>
</ul>
</div>
</div>
</div>

View File

@@ -0,0 +1,8 @@
<?php
return array(
'Editor' => array(
'Editor' => '<27>G<EFBFBD>f<EFBFBD>B<EFBFBD>^',
'Editor plugin' => '<27>G<EFBFBD>f<EFBFBD>B<EFBFBD>^<5E>v<EFBFBD><76><EFBFBD>O<EFBFBD>C<EFBFBD><43>',
)
);

View File

@@ -0,0 +1,8 @@
<?php
return array(
'Editor' => array(
'Editor' => 'Düzenleyici',
'Editor plugin' => 'Düzenleyici eklentisi',
)
);

View File

@@ -0,0 +1,8 @@
<?php
return array(
'Editor' => array(
'Editor' => '编辑器',
'Editor plugin' => '编辑器插件',
)
);

View File

@@ -0,0 +1,2 @@
Options -Indexes
Allow from all

View File

@@ -0,0 +1,688 @@
/**********************************************
* Ink v1.0.5 - Copyright 2013 ZURB Inc *
**********************************************/
/* Client-specific Styles & Reset */
#outlook a {
padding:0;
}
body{
width:100% !important;
min-width: 100%;
-webkit-text-size-adjust:100%;
-ms-text-size-adjust:100%;
margin:0;
padding:0;
}
.ExternalClass {
width:100%;
}
.ExternalClass,
.ExternalClass p,
.ExternalClass span,
.ExternalClass font,
.ExternalClass td,
.ExternalClass div {
line-height: 100%;
}
#backgroundTable {
margin:0;
padding:0;
width:100% !important;
line-height: 100% !important;
}
img {
outline:none;
text-decoration:none;
-ms-interpolation-mode: bicubic;
width: auto;
max-width: 100%;
float: left;
clear: both;
display: block;
}
center {
width: 100%;
min-width: 580px;
}
a img {
border: none;
}
p {
margin: 0 0 0 10px;
}
table {
border-spacing: 0;
border-collapse: collapse;
}
td {
word-break: break-word;
-webkit-hyphens: auto;
-moz-hyphens: auto;
hyphens: auto;
border-collapse: collapse !important;
}
table, tr, td {
padding: 0;
vertical-align: top;
text-align: left;
}
hr {
color: #d9d9d9;
background-color: #d9d9d9;
height: 1px;
border: none;
}
/* Responsive Grid */
table.body {
height: 100%;
width: 100%;
}
table.container {
width: 580px;
margin: 0 auto;
text-align: inherit;
}
table.row {
padding: 0px;
width: 100%;
position: relative;
}
table.container table.row {
display: block;
}
td.wrapper {
padding: 10px 20px 0px 0px;
position: relative;
}
table.columns,
table.column {
margin: 0 auto;
}
table.columns td,
table.column td {
padding: 0px 0px 10px;
}
table.columns td.sub-columns,
table.column td.sub-columns,
table.columns td.sub-column,
table.column td.sub-column {
padding-right: 10px;
}
td.sub-column, td.sub-columns {
min-width: 0px;
}
table.row td.last,
table.container td.last {
padding-right: 0px;
}
table.one { width: 30px; }
table.two { width: 80px; }
table.three { width: 130px; }
table.four { width: 180px; }
table.five { width: 230px; }
table.six { width: 280px; }
table.seven { width: 330px; }
table.eight { width: 380px; }
table.nine { width: 430px; }
table.ten { width: 480px; }
table.eleven { width: 530px; }
table.twelve { width: 580px; }
table.one center { min-width: 30px; }
table.two center { min-width: 80px; }
table.three center { min-width: 130px; }
table.four center { min-width: 180px; }
table.five center { min-width: 230px; }
table.six center { min-width: 280px; }
table.seven center { min-width: 330px; }
table.eight center { min-width: 380px; }
table.nine center { min-width: 430px; }
table.ten center { min-width: 480px; }
table.eleven center { min-width: 530px; }
table.twelve center { min-width: 580px; }
table.one .panel center { min-width: 10px; }
table.two .panel center { min-width: 60px; }
table.three .panel center { min-width: 110px; }
table.four .panel center { min-width: 160px; }
table.five .panel center { min-width: 210px; }
table.six .panel center { min-width: 260px; }
table.seven .panel center { min-width: 310px; }
table.eight .panel center { min-width: 360px; }
table.nine .panel center { min-width: 410px; }
table.ten .panel center { min-width: 460px; }
table.eleven .panel center { min-width: 510px; }
table.twelve .panel center { min-width: 560px; }
.body .columns td.one,
.body .column td.one { width: 8.333333%; }
.body .columns td.two,
.body .column td.two { width: 16.666666%; }
.body .columns td.three,
.body .column td.three { width: 25%; }
.body .columns td.four,
.body .column td.four { width: 33.333333%; }
.body .columns td.five,
.body .column td.five { width: 41.666666%; }
.body .columns td.six,
.body .column td.six { width: 50%; }
.body .columns td.seven,
.body .column td.seven { width: 58.333333%; }
.body .columns td.eight,
.body .column td.eight { width: 66.666666%; }
.body .columns td.nine,
.body .column td.nine { width: 75%; }
.body .columns td.ten,
.body .column td.ten { width: 83.333333%; }
.body .columns td.eleven,
.body .column td.eleven { width: 91.666666%; }
.body .columns td.twelve,
.body .column td.twelve { width: 100%; }
td.offset-by-one { padding-left: 50px; }
td.offset-by-two { padding-left: 100px; }
td.offset-by-three { padding-left: 150px; }
td.offset-by-four { padding-left: 200px; }
td.offset-by-five { padding-left: 250px; }
td.offset-by-six { padding-left: 300px; }
td.offset-by-seven { padding-left: 350px; }
td.offset-by-eight { padding-left: 400px; }
td.offset-by-nine { padding-left: 450px; }
td.offset-by-ten { padding-left: 500px; }
td.offset-by-eleven { padding-left: 550px; }
td.expander {
visibility: hidden;
width: 0px;
padding: 0 !important;
}
table.columns .text-pad,
table.column .text-pad {
padding-left: 10px;
padding-right: 10px;
}
table.columns .left-text-pad,
table.columns .text-pad-left,
table.column .left-text-pad,
table.column .text-pad-left {
padding-left: 10px;
}
table.columns .right-text-pad,
table.columns .text-pad-right,
table.column .right-text-pad,
table.column .text-pad-right {
padding-right: 10px;
}
/* Block Grid */
.block-grid {
width: 100%;
max-width: 580px;
}
.block-grid td {
display: inline-block;
padding:10px;
}
.two-up td {
width:270px;
}
.three-up td {
width:173px;
}
.four-up td {
width:125px;
}
.five-up td {
width:96px;
}
.six-up td {
width:76px;
}
.seven-up td {
width:62px;
}
.eight-up td {
width:52px;
}
/* Alignment & Visibility Classes */
table.center, td.center {
text-align: center;
}
h1.center,
h2.center,
h3.center,
h4.center,
h5.center,
h6.center {
text-align: center;
}
span.center {
display: block;
width: 100%;
text-align: center;
}
img.center {
margin: 0 auto;
float: none;
}
.show-for-small,
.hide-for-desktop {
display: none;
}
/* Typography */
body, table.body, h1, h2, h3, h4, h5, h6, p, td {
color: #222222;
font-family: "Helvetica", "Arial", sans-serif;
font-weight: normal;
padding:0;
margin: 0;
text-align: left;
line-height: 1.3;
}
h1, h2, h3, h4, h5, h6 {
word-break: normal;
}
h1 {font-size: 40px;}
h2 {font-size: 36px;}
h3 {font-size: 32px;}
h4 {font-size: 28px;}
h5 {font-size: 24px;}
h6 {font-size: 20px;}
body, table.body, p, td {font-size: 14px;line-height:19px;}
p.lead, p.lede, p.leed {
font-size: 18px;
line-height:21px;
}
p {
margin-bottom: 10px;
}
small {
font-size: 10px;
}
a {
color: #2ba6cb;
text-decoration: none;
}
a:hover {
color: #2795b6 !important;
}
a:active {
color: #2795b6 !important;
}
a:visited {
color: #2ba6cb !important;
}
h1 a,
h2 a,
h3 a,
h4 a,
h5 a,
h6 a {
color: #2ba6cb;
}
h1 a:active,
h2 a:active,
h3 a:active,
h4 a:active,
h5 a:active,
h6 a:active {
color: #2ba6cb !important;
}
h1 a:visited,
h2 a:visited,
h3 a:visited,
h4 a:visited,
h5 a:visited,
h6 a:visited {
color: #2ba6cb !important;
}
/* Panels */
.panel {
background: #f2f2f2;
border: 1px solid #d9d9d9;
padding: 10px !important;
}
.sub-grid table {
width: 100%;
}
.sub-grid td.sub-columns {
padding-bottom: 0;
}
/* Buttons */
table.button,
table.tiny-button,
table.small-button,
table.medium-button,
table.large-button {
width: 100%;
overflow: hidden;
}
table.button td,
table.tiny-button td,
table.small-button td,
table.medium-button td,
table.large-button td {
display: block;
width: auto !important;
text-align: center;
background: #2ba6cb;
border: 1px solid #2284a1;
color: #ffffff;
padding: 8px 0;
}
table.tiny-button td {
padding: 5px 0 4px;
}
table.small-button td {
padding: 8px 0 7px;
}
table.medium-button td {
padding: 12px 0 10px;
}
table.large-button td {
padding: 21px 0 18px;
}
table.button td a,
table.tiny-button td a,
table.small-button td a,
table.medium-button td a,
table.large-button td a {
font-weight: bold;
text-decoration: none;
font-family: Helvetica, Arial, sans-serif;
color: #ffffff;
font-size: 16px;
}
table.tiny-button td a {
font-size: 12px;
font-weight: normal;
}
table.small-button td a {
font-size: 16px;
}
table.medium-button td a {
font-size: 20px;
}
table.large-button td a {
font-size: 24px;
}
table.button:hover td,
table.button:visited td,
table.button:active td {
background: #2795b6 !important;
}
table.button:hover td a,
table.button:visited td a,
table.button:active td a {
color: #fff !important;
}
table.button:hover td,
table.tiny-button:hover td,
table.small-button:hover td,
table.medium-button:hover td,
table.large-button:hover td {
background: #2795b6 !important;
}
table.button:hover td a,
table.button:active td a,
table.button td a:visited,
table.tiny-button:hover td a,
table.tiny-button:active td a,
table.tiny-button td a:visited,
table.small-button:hover td a,
table.small-button:active td a,
table.small-button td a:visited,
table.medium-button:hover td a,
table.medium-button:active td a,
table.medium-button td a:visited,
table.large-button:hover td a,
table.large-button:active td a,
table.large-button td a:visited {
color: #ffffff !important;
}
table.secondary td {
background: #e9e9e9;
border-color: #d0d0d0;
color: #555;
}
table.secondary td a {
color: #555;
}
table.secondary:hover td {
background: #d0d0d0 !important;
color: #555;
}
table.secondary:hover td a,
table.secondary td a:visited,
table.secondary:active td a {
color: #555 !important;
}
table.success td {
background: #5da423;
border-color: #457a1a;
}
table.success:hover td {
background: #457a1a !important;
}
table.alert td {
background: #c60f13;
border-color: #970b0e;
}
table.alert:hover td {
background: #970b0e !important;
}
table.radius td {
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
}
table.round td {
-webkit-border-radius: 500px;
-moz-border-radius: 500px;
border-radius: 500px;
}
/* Outlook First */
body.outlook p {
display: inline !important;
}
/* Media Queries */
@media only screen and (max-width: 600px) {
table[class="body"] img {
width: auto !important;
height: auto !important;
}
table[class="body"] center {
min-width: 0 !important;
}
table[class="body"] .container {
width: 95% !important;
}
table[class="body"] .row {
width: 100% !important;
display: block !important;
}
table[class="body"] .wrapper {
display: block !important;
padding-right: 0 !important;
}
table[class="body"] .columns,
table[class="body"] .column {
table-layout: fixed !important;
float: none !important;
width: 100% !important;
padding-right: 0px !important;
padding-left: 0px !important;
display: block !important;
}
table[class="body"] .wrapper.first .columns,
table[class="body"] .wrapper.first .column {
display: table !important;
}
table[class="body"] table.columns td,
table[class="body"] table.column td {
width: 100% !important;
}
table[class="body"] .columns td.one,
table[class="body"] .column td.one { width: 8.333333% !important; }
table[class="body"] .columns td.two,
table[class="body"] .column td.two { width: 16.666666% !important; }
table[class="body"] .columns td.three,
table[class="body"] .column td.three { width: 25% !important; }
table[class="body"] .columns td.four,
table[class="body"] .column td.four { width: 33.333333% !important; }
table[class="body"] .columns td.five,
table[class="body"] .column td.five { width: 41.666666% !important; }
table[class="body"] .columns td.six,
table[class="body"] .column td.six { width: 50% !important; }
table[class="body"] .columns td.seven,
table[class="body"] .column td.seven { width: 58.333333% !important; }
table[class="body"] .columns td.eight,
table[class="body"] .column td.eight { width: 66.666666% !important; }
table[class="body"] .columns td.nine,
table[class="body"] .column td.nine { width: 75% !important; }
table[class="body"] .columns td.ten,
table[class="body"] .column td.ten { width: 83.333333% !important; }
table[class="body"] .columns td.eleven,
table[class="body"] .column td.eleven { width: 91.666666% !important; }
table[class="body"] .columns td.twelve,
table[class="body"] .column td.twelve { width: 100% !important; }
table[class="body"] td.offset-by-one,
table[class="body"] td.offset-by-two,
table[class="body"] td.offset-by-three,
table[class="body"] td.offset-by-four,
table[class="body"] td.offset-by-five,
table[class="body"] td.offset-by-six,
table[class="body"] td.offset-by-seven,
table[class="body"] td.offset-by-eight,
table[class="body"] td.offset-by-nine,
table[class="body"] td.offset-by-ten,
table[class="body"] td.offset-by-eleven {
padding-left: 0 !important;
}
table[class="body"] table.columns td.expander {
width: 1px !important;
}
table[class="body"] .right-text-pad,
table[class="body"] .text-pad-right {
padding-left: 10px !important;
}
table[class="body"] .left-text-pad,
table[class="body"] .text-pad-left {
padding-right: 10px !important;
}
table[class="body"] .hide-for-small,
table[class="body"] .show-for-desktop {
display: none !important;
}
table[class="body"] .show-for-small,
table[class="body"] .hide-for-desktop {
display: inherit !important;
}
}

View File

@@ -0,0 +1,72 @@
<?php
// Admin Navigation: add new item
Navigation::add(__('Emails', 'emails'), 'system', 'emails', 5);
/**
* Emails admin class
*/
class EmailsAdmin extends Backend
{
/**
* Main Emails admin function
*/
public static function main()
{
// Init vars
$email_templates_path = STORAGE . DS . 'emails' . DS;
$email_templates_list = array();
// Check for get actions
// -------------------------------------
if (Request::get('action')) {
// Switch actions
// -------------------------------------
switch (Request::get('action')) {
// Plugin action
// -------------------------------------
case "edit_email_template":
if (Request::post('edit_email_template') || Request::post('edit_email_template_and_exit') ) {
if (Security::check(Request::post('csrf'))) {
// Save Email Template
File::setContent(STORAGE . DS . 'emails' . DS . Request::post('email_template_name') .'.email.php', Request::post('content'));
Notification::set('success', __('Your changes to the email template <i>:name</i> have been saved.', 'emails', array(':name' => Request::post('email_template_name'))));
if (Request::post('edit_email_template_and_exit')) {
Request::redirect('index.php?id=emails');
} else {
Request::redirect('index.php?id=emails&action=edit_email_template&filename='.Request::post('email_template_name'));
}
}
}
$content = File::getContent($email_templates_path.Request::get('filename').'.email.php');
// Display view
View::factory('box/emails/views/backend/edit')
->assign('content', $content)
->display();
break;
}
} else {
// Get email templates
$email_templates_list = File::scan($email_templates_path, '.email.php');
// Display view
View::factory('box/emails/views/backend/index')
->assign('email_templates_list', $email_templates_list)
->display();
}
}
}

View File

@@ -0,0 +1,29 @@
<?php
/**
* Emails plugin
*
* @package Monstra
* @subpackage Plugins
* @author Romanenko Sergey / Awilum
* @copyright 2012-2014 Romanenko Sergey / Awilum
* @version 1.0.0
*
*/
// Register plugin
Plugin::register( __FILE__,
__('Emails', 'emails'),
__('Emails plugin for Monstra', 'emails'),
'1.0.0',
'Awilum',
'http://monstra.org/',
null,
'box');
// Load Emails Admin for Editor and Admin
if (Session::exists('user_role') && in_array(Session::get('user_role'), array('admin', 'editor'))) {
Plugin::admin('emails', 'box');
}

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<root>
<plugin_location>plugins/box/emails/emails.plugin.php</plugin_location>
<plugin_status>active</plugin_status>
<plugin_priority>15</plugin_priority>
<plugin_name>Emails</plugin_name>
<plugin_description>Emails plugin for Monstra</plugin_description>
<plugin_version>1.0.0</plugin_version>
<plugin_author>Awilum</plugin_author>
<plugin_author_uri>http://monstra.org/</plugin_author_uri>
</root>

View File

@@ -0,0 +1,19 @@
<?php
return array(
'emails' => array(
'Emails' => 'Emails',
'Emails plugin for Monstra' => 'Email Plugin für Monstra',
'Edit Layout' => 'Bearbeite Layout',
'Email templates' => 'Email Templates',
'Edit' => 'Bearbeiten',
'Edit Email Template' => 'Bearbeite Email Template',
'Name' => 'Name',
'Email template content' => 'Email Template Inhalt',
'Save and Exit' => 'Speichern und Beenden',
'Save' => 'Speichern',
'Cancel' => 'Abbrechen',
'This email template does not exist' => 'Dieses Email Template existiert nicht',
'Your changes to the email template <i>:name</i> have been saved.' => 'Deine Änderung am Email Template <i>:name</i> wurden gespeichert.',
)
);

View File

@@ -0,0 +1,19 @@
<?php
return array(
'emails' => array(
'Emails' => 'Emails',
'Emails plugin for Monstra' => 'Emails plugin for Monstra',
'Edit Layout' => 'Edit Layout',
'Email templates' => 'Email templates',
'Edit' => 'Edit',
'Edit Email Template' => 'Edit Email Template',
'Name' => 'Name',
'Email template content' => 'Email template content',
'Save and Exit' => 'Save and Exit',
'Save' => 'Save',
'Cancel' => 'Cancel',
'This email template does not exist' => 'This email template does not exist',
'Your changes to the email template <i>:name</i> have been saved.' => 'Your changes to the email template <i>:name</i> have been saved.',
)
);

View File

@@ -0,0 +1,19 @@
<?php
return array(
'emails' => array(
'Emails' => 'Wiadomości e-mail',
'Emails plugin for Monstra' => 'Wtyczka wiadomości e-mail dla systemu Monstra',
'Edit Layout' => 'Edit Layout',
'Email templates' => 'Email templates',
'Edit' => 'Edit',
'Edit Email Template' => 'Edit Email Template',
'Name' => 'Name',
'Email template content' => 'Email template content',
'Save and Exit' => 'Save and Exit',
'Save' => 'Save',
'Cancel' => 'Cancel',
'This email template does not exist' => 'This email template does not exist',
'Your changes to the email template <i>:name</i> have been saved.' => 'Your changes to the email template <i>:name</i> have been saved.',
)
);

Some files were not shown because too many files have changed in this diff Show More