mirror of
https://github.com/monstra-cms/monstra.git
synced 2025-08-05 12:48:00 +02:00
Compare commits
331 Commits
sparky-js-
...
v2.3.1
Author | SHA1 | Date | |
---|---|---|---|
|
81ff2288b9 | ||
|
cd0d8296a5 | ||
|
03e5fc320c | ||
|
b29abf8da1 | ||
|
6f55f9238b | ||
|
ad870b2120 | ||
|
d9ea1c3d7c | ||
|
6531d3ee87 | ||
|
c7935e6636 | ||
|
a33d1a39d9 | ||
|
cbaa84f50e | ||
|
339413581d | ||
|
7696d90752 | ||
|
c83bb55df3 | ||
|
e76cd74d5b | ||
|
099b206e66 | ||
|
10a6b56b34 | ||
|
8e83ca5bd1 | ||
|
524052b4bf | ||
|
f4eaded4f3 | ||
|
2efff484fc | ||
|
b134abb96e | ||
|
1a1bfabda0 | ||
|
a8ea2d4e02 | ||
|
ce571b6ef3 | ||
|
ac3eeb1508 | ||
|
e9691d6b71 | ||
|
7734822789 | ||
|
75af5452bc | ||
|
c9019ca5fa | ||
|
ee8e1abfd4 | ||
|
6b576be9a5 | ||
|
e823494ab5 | ||
|
f7f3b91f46 | ||
|
0c90ab6bfe | ||
|
35b75e9027 | ||
|
2d5eb31569 | ||
|
146e94c1ac | ||
|
e7bd1d284a | ||
|
b0b62f5444 | ||
|
5d430aa2ee | ||
|
93481f78cf | ||
|
2dc3560f08 | ||
|
8808a47dc7 | ||
|
d5550aa245 | ||
|
db0f5eda80 | ||
|
7947bd3f05 | ||
|
033d66a81a | ||
|
f311163ef4 | ||
|
8947295b83 | ||
|
fccf7b3c63 | ||
|
98c618dbaf | ||
|
4ae5fe6ede | ||
|
230b397530 | ||
|
fc2183b970 | ||
|
25fe85c8f1 | ||
|
c554b42f17 | ||
|
988da91526 | ||
|
d1257fb00b | ||
|
31ec9de178 | ||
|
05a9ff440f | ||
|
b54cac24b1 | ||
|
950b816ca6 | ||
|
dc0c47f5fa | ||
|
dbefe506f0 | ||
|
454b328442 | ||
|
52353d79ef | ||
|
6dcc5ffac8 | ||
|
f73aa53e40 | ||
|
07a8e823f8 | ||
|
489f7017d1 | ||
|
b2ef78b556 | ||
|
d1a5a9c0e2 | ||
|
eaeff17cb9 | ||
|
9e2a7bc23b | ||
|
d1c4f58c2e | ||
|
53c079f00a | ||
|
b23bb4b218 | ||
|
5491848f29 | ||
|
2548103a77 | ||
|
c396744e64 | ||
|
a6156db3a9 | ||
|
ad965bbcb9 | ||
|
2a8babb4f8 | ||
|
a8c582c302 | ||
|
31c661a1e8 | ||
|
a5c197fa99 | ||
|
09addce76e | ||
|
6c280ef102 | ||
|
1623d2b1fb | ||
|
2cabdf2864 | ||
|
397218d9e6 | ||
|
1eb7991f36 | ||
|
bae207e053 | ||
|
4c3dcbcc36 | ||
|
74baf298c5 | ||
|
9f8d7f5198 | ||
|
8f60502a0e | ||
|
d79b092542 | ||
|
4d85666c18 | ||
|
faf95e268e | ||
|
1d69c31aca | ||
|
ca2bd3df8a | ||
|
49185659f6 | ||
|
d9a91f514f | ||
|
5371f9f5db | ||
|
df85b392b8 | ||
|
af9432be1a | ||
|
7e4b4cf9d8 | ||
|
70e5f13649 | ||
|
09c8deed7f | ||
|
a5118781e2 | ||
|
f1ebf0fcc8 | ||
|
e2175d6d0f | ||
|
3854ad3bb5 | ||
|
276c429070 | ||
|
34e79a661c | ||
|
9e422f259d | ||
|
21aba2e8be | ||
|
ac1e309b99 | ||
|
c47ed55eb8 | ||
|
20473439c0 | ||
|
1a4622deb1 | ||
|
daaac9038a | ||
|
47ef2a091e | ||
|
208025b7c8 | ||
|
408a344bad | ||
|
6a63c2da9d | ||
|
bd216f4581 | ||
|
2a034bd1ed | ||
|
eecbcbc4ea | ||
|
e6ffd0130e | ||
|
e0b21a9a3f | ||
|
1e7120be12 | ||
|
4704926a64 | ||
|
8f930f8c6d | ||
|
52465c5cf4 | ||
|
bb8ccb57b7 | ||
|
bf0e5a0f3c | ||
|
ed03e383e0 | ||
|
0566c705b5 | ||
|
c90badf68c | ||
|
d05d7e77b9 | ||
|
5219b4e1fc | ||
|
82c1f97b7d | ||
|
5bbfb1880b | ||
|
13556f2e7d | ||
|
a72c03a7c7 | ||
|
27d78e32ff | ||
|
954b19a064 | ||
|
6abf4ded20 | ||
|
20e2fe9a99 | ||
|
8788146d39 | ||
|
8a8e35cfab | ||
|
75a3df1bd7 | ||
|
7ade902802 | ||
|
246e5519b9 | ||
|
1839a71bbd | ||
|
31f4dd3edc | ||
|
25c33271a6 | ||
|
cc070065a9 | ||
|
28b54e8adf | ||
|
63b2bf2255 | ||
|
2c34eb68d4 | ||
|
cd160deff0 | ||
|
3e47ca02f3 | ||
|
de50eb52dc | ||
|
e8c599f33f | ||
|
86312eb270 | ||
|
48a62e5011 | ||
|
ebda1cb7ba | ||
|
8637f7240b | ||
|
d2ba3e0dc7 | ||
|
14b9fa89a5 | ||
|
6f4fb89839 | ||
|
2fcf8b6c42 | ||
|
696d7d35bb | ||
|
8deb6e8cca | ||
|
783a1160ea | ||
|
e439fc04f4 | ||
|
812acbe956 | ||
|
6496e1bad1 | ||
|
928c12abc7 | ||
|
e007040feb | ||
|
ee1fd08621 | ||
|
08a61017f9 | ||
|
f42a4ce42d | ||
|
f4f699b73a | ||
|
68fed3a3e5 | ||
|
be4c58d242 | ||
|
ad3c63a3d4 | ||
|
b180b797ee | ||
|
9d165d34f5 | ||
|
e2fff5db3c | ||
|
3d886007b3 | ||
|
3dabdda2b8 | ||
|
ce8aa7f921 | ||
|
b2c7eaeb14 | ||
|
a01a304a83 | ||
|
d626ae68be | ||
|
5ee512a77b | ||
|
6257af8e71 | ||
|
dd84366820 | ||
|
b24cdaec96 | ||
|
25a3e4df3d | ||
|
946c1f79d5 | ||
|
9db1ae1b15 | ||
|
abde9ff8fa | ||
|
4e78ac015a | ||
|
289e4d228a | ||
|
23024a9162 | ||
|
6b9077ef35 | ||
|
60929b17bf | ||
|
702efc6a11 | ||
|
3936d266e7 | ||
|
7f7bcaef5f | ||
|
ad494c4dc9 | ||
|
8b1c3a7ba6 | ||
|
f3c304c5b7 | ||
|
bc1c7ffdee | ||
|
8f32e07721 | ||
|
9617d9e864 | ||
|
15d9ad3500 | ||
|
658031c004 | ||
|
599cf96199 | ||
|
23f7fbf39f | ||
|
cb973d3ea9 | ||
|
d261be9b07 | ||
|
2c0fa8eb72 | ||
|
a768bc31ed | ||
|
7433dbd24c | ||
|
a464d2bff5 | ||
|
99ecf3774b | ||
|
29d6d8daf3 | ||
|
a5d19114cb | ||
|
6c8f9cad05 | ||
|
28b3002ded | ||
|
af4bc97bf2 | ||
|
3ab9fcc1a8 | ||
|
4e389d4de2 | ||
|
85c2849037 | ||
|
3cd0ec09dc | ||
|
614b876faf | ||
|
3cb31c2616 | ||
|
b0452c7932 | ||
|
03e10b4507 | ||
|
207d6b4956 | ||
|
e55b1e3344 | ||
|
0d5e023887 | ||
|
42bd547365 | ||
|
0f39d039d0 | ||
|
af67698147 | ||
|
0a4eb5900a | ||
|
db8547c173 | ||
|
f112ec8ddd | ||
|
37f4faa2ff | ||
|
362ec1f2a2 | ||
|
00abeaba1b | ||
|
5b15c1c284 | ||
|
7c70d34552 | ||
|
4282ad853e | ||
|
664e29b6dc | ||
|
29bc706fd7 | ||
|
5ce635283e | ||
|
4e945e9b4e | ||
|
0ac1a1d44b | ||
|
fafb50476b | ||
|
6e875be7ca | ||
|
0f68f836d3 | ||
|
30157ecb94 | ||
|
8384465526 | ||
|
356b4d3194 | ||
|
daefb787f3 | ||
|
05590c76b3 | ||
|
37d9d215c5 | ||
|
a3b46fb25f | ||
|
beda4326cb | ||
|
fd87b58bca | ||
|
5bac23c097 | ||
|
341ca86075 | ||
|
70954e8cdb | ||
|
aba5dda41b | ||
|
ce75fde7a8 | ||
|
2e1c8ebc0e | ||
|
13fb6babb7 | ||
|
572d64323e | ||
|
fa9f43227c | ||
|
4a5403e0c3 | ||
|
aee0387649 | ||
|
c506bbff08 | ||
|
0e5e21d5a3 | ||
|
d3ddd11ed9 | ||
|
027ae36e69 | ||
|
a0ab314424 | ||
|
e25f5ba2f3 | ||
|
bc037a6758 | ||
|
75fb5bfe92 | ||
|
ef47cbedff | ||
|
8d04772473 | ||
|
537f1b999b | ||
|
cf1ce4b660 | ||
|
f259e2e700 | ||
|
5c7ce4f3a4 | ||
|
d322887f05 | ||
|
878aa46457 | ||
|
5315020c1e | ||
|
ded831e9a7 | ||
|
2f2ef57e9d | ||
|
514815a559 | ||
|
b050af69d1 | ||
|
70a9286c33 | ||
|
d0c5296540 | ||
|
bd7591a3c9 | ||
|
efc3dd429d | ||
|
242930c425 | ||
|
0a9ba78091 | ||
|
5baddfa952 | ||
|
b9c2967b18 | ||
|
0f47fd5d50 | ||
|
6f97bf10e7 | ||
|
33795d5267 | ||
|
58c0e1207d | ||
|
fa5824e03c | ||
|
b9471a505e | ||
|
4e3802cde3 | ||
|
1018411068 | ||
|
cebb6deac8 | ||
|
38e53c08db | ||
|
d2aab04430 | ||
|
0f8103d6ae | ||
|
27e355cd56 |
12
.htaccess
12
.htaccess
@@ -19,8 +19,16 @@ Options -Indexes
|
|||||||
# Setting rewrite rules.
|
# Setting rewrite rules.
|
||||||
<IfModule mod_rewrite.c>
|
<IfModule mod_rewrite.c>
|
||||||
RewriteEngine on
|
RewriteEngine on
|
||||||
RewriteBase /projects/monstra-cms/
|
|
||||||
|
# Update code bellow for SEO improvements
|
||||||
|
# RewriteCond %{HTTP_HOST} ^www.example.org [NC]
|
||||||
|
# RewriteRule ^(.*)$ http://example.org/$1 [R=301,L]
|
||||||
|
|
||||||
|
RewriteBase /%siteurlhere%/
|
||||||
RewriteCond %{REQUEST_FILENAME} !-f
|
RewriteCond %{REQUEST_FILENAME} !-f
|
||||||
RewriteCond %{REQUEST_FILENAME} !-d
|
RewriteCond %{REQUEST_FILENAME} !-d
|
||||||
RewriteRule ^(.*)$ index.php [QSA,L]
|
RewriteRule ^(.*)$ index.php [QSA,L]
|
||||||
</IfModule>
|
|
||||||
|
# Update code bellow for SEO improvements
|
||||||
|
# Redirect 301 /home http://example.org/
|
||||||
|
</IfModule>
|
||||||
|
24
README.md
24
README.md
@@ -1,15 +1,10 @@
|
|||||||
# Monstra CMS
|
# Monstra CMS
|
||||||
|
Monstra is a modern and lightweight Content Management System.
|
||||||
Fast and small content management system written in PHP!
|
|
||||||
|
|
||||||
|
|
||||||
## System Requirements
|
## System Requirements
|
||||||
- UNIX/Linux host
|
Operation system: Unix, Linux, Windows, Mac OS
|
||||||
- PHP 5.2.0 or higher
|
Middleware: PHP 5.2.3 or higher with PHP's [SimpleXML module](http://php.net/simplexml) and [Multibyte String module](http://php.net/mbstring)
|
||||||
- SimpleXML Module
|
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)
|
||||||
- Apache Mod Rewrite
|
|
||||||
- Multibyte String
|
|
||||||
|
|
||||||
|
|
||||||
## Steps to Install
|
## Steps to Install
|
||||||
1. [Download the latest version.](http://monstra.org/download)
|
1. [Download the latest version.](http://monstra.org/download)
|
||||||
@@ -19,21 +14,18 @@ Fast and small content management system written in PHP!
|
|||||||
5. Also you may also need to recursively CHMOD the /install.php, /.htaccess and /sitemap.xml to 755(or 777) if your host doesn't set it implicitly.
|
5. Also you may also need to recursively CHMOD the /install.php, /.htaccess and /sitemap.xml to 755(or 777) if your host doesn't set it implicitly.
|
||||||
6. Type http://example.org/install.php in the browser.
|
6. Type http://example.org/install.php in the browser.
|
||||||
|
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
1. Help on the [Forum.](http://forum.monstra.org)
|
1. Help on the [Forum.](http://forum.monstra.org)
|
||||||
2. Donate to keep Monstra free. We will add you to Monstra [Sponsors Page.](http://monstra.org/about/sponsors)
|
2. Donate to keep Monstra free. We will add you to Monstra [Sponsors Page.](http://monstra.org/contribute/sponsors)
|
||||||
3. Develop a new plugin.
|
3. Develop a new plugin.
|
||||||
4. Create a new theme.
|
4. Create a new theme.
|
||||||
5. Find and [report issues.](https://github.com/Monstra/monstra-cms/issues)
|
5. Find and [report issues.](https://github.com/Awilum/monstra-cms/issues)
|
||||||
6. Link back to [Monstra](http://monstra.org).
|
6. Link back to [Monstra](http://monstra.org).
|
||||||
|
|
||||||
|
|
||||||
## Links
|
## Links
|
||||||
- [Site](http://monstra.org)
|
- [Site](http://monstra.org)
|
||||||
- [Forum](http://forum.monstra.org)
|
- [Forum](http://forum.monstra.org)
|
||||||
- [Documentation](http://monstra.org/documentation)
|
- [Documentation](http://monstra.org/documentation)
|
||||||
- [Github Repository](https://github.com/Monstra/monstra-cms)
|
- [Github Repository](https://github.com/Awilum/monstra-cms)
|
||||||
|
|
||||||
|
Copyright (C) 2012-2014 Romanenko Sergey / Awilum [awilum@msn.com]
|
||||||
Copyright (C) 2012-2013 Romanenko Sergey / Awilum [awilum@msn.com]
|
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
@@ -33,23 +33,53 @@ $users = new Table('users');
|
|||||||
// Admin login
|
// Admin login
|
||||||
if (Request::post('login_submit')) {
|
if (Request::post('login_submit')) {
|
||||||
|
|
||||||
$user = $users->select("[login='" . trim(Request::post('login')) . "']", null);
|
if (Cookie::get('login_attempts') && Cookie::get('login_attempts') >= 5) {
|
||||||
if (count($user) !== 0) {
|
|
||||||
if ($user['login'] == Request::post('login')) {
|
$login_error = __('You are banned for 10 minutes. Try again later', 'users');
|
||||||
if (trim($user['password']) == Security::encryptPassword(Request::post('password'))) {
|
|
||||||
if ($user['role'] == 'admin' || $user['role'] == 'editor') {
|
} else {
|
||||||
Session::set('admin', true);
|
|
||||||
Session::set('user_id', (int) $user['id']);
|
$user = $users->select("[login='" . trim(Request::post('login')) . "']", null);
|
||||||
Session::set('user_login', (string) $user['login']);
|
if (count($user) !== 0) {
|
||||||
Session::set('user_role', (string) $user['role']);
|
if ($user['login'] == Request::post('login')) {
|
||||||
Request::redirect('index.php');
|
if (trim($user['password']) == Security::encryptPassword(Request::post('password'))) {
|
||||||
|
if ($user['role'] == 'admin' || $user['role'] == 'editor') {
|
||||||
|
Session::set('admin', true);
|
||||||
|
Session::set('user_id', (int) $user['id']);
|
||||||
|
Session::set('user_login', (string) $user['login']);
|
||||||
|
Session::set('user_role', (string) $user['role']);
|
||||||
|
Request::redirect('index.php');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$login_error = __('Wrong <b>username</b> or <b>password</b>', 'users');
|
||||||
|
|
||||||
|
if (Cookie::get('login_attempts')) {
|
||||||
|
if (Cookie::get('login_attempts') < 5) {
|
||||||
|
$attempts = Cookie::get('login_attempts') + 1;
|
||||||
|
Cookie::set('login_attempts', $attempts, 600);
|
||||||
|
} else {
|
||||||
|
$login_error = __('You are banned for 10 minutes. Try again later', 'users');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
Cookie::set('login_attempts', 1, 600);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$login_error = __('Wrong <b>username</b> or <b>password</b>', 'users');
|
||||||
|
|
||||||
|
if (Cookie::get('login_attempts')) {
|
||||||
|
if (Cookie::get('login_attempts') < 5) {
|
||||||
|
$attempts = Cookie::get('login_attempts') + 1;
|
||||||
|
Cookie::set('login_attempts', $attempts, 600);
|
||||||
|
} else {
|
||||||
|
$login_error = __('You are banned for 10 minutes. Try again later', 'users');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$login_error = __('Wrong <b>username</b> or <b>password</b>', 'users');
|
Cookie::set('login_attempts', 1, 600);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
$login_error = __('Wrong <b>username</b> or <b>password</b>', 'users');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -79,17 +109,22 @@ if (Request::post('reset_password_submit')) {
|
|||||||
// Update user hash
|
// Update user hash
|
||||||
$users->updateWhere("[login='" . $user_login . "']", array('hash' => $new_hash));
|
$users->updateWhere("[login='" . $user_login . "']", array('hash' => $new_hash));
|
||||||
|
|
||||||
// Message
|
$mail = new PHPMailer();
|
||||||
$message = View::factory('box/users/views/frontend/reset_password_email')
|
$mail->CharSet = 'utf-8';
|
||||||
|
$mail->ContentType = 'text/html';
|
||||||
|
$mail->SetFrom(Option::get('system_email'));
|
||||||
|
$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')
|
||||||
->assign('site_url', $site_url)
|
->assign('site_url', $site_url)
|
||||||
->assign('site_name', $site_name)
|
->assign('site_name', $site_name)
|
||||||
->assign('user_id', $user['id'])
|
->assign('user_id', $user['id'])
|
||||||
->assign('user_login', $user['login'])
|
->assign('user_login', $user['login'])
|
||||||
->assign('new_hash', $new_hash)
|
->assign('new_hash', $new_hash)
|
||||||
->render();
|
->assign('view', 'reset_password_email')
|
||||||
|
->render());
|
||||||
// Send
|
$mail->Send();
|
||||||
@mail($user['email'], __('Your login details for :site_name', 'users', array(':site_name' => $site_name)), $message);
|
|
||||||
|
|
||||||
// Set notification
|
// Set notification
|
||||||
Notification::set('success', __('Your login details for :site_name has been sent', 'users', array(':site_name' => $site_name)));
|
Notification::set('success', __('Your login details for :site_name has been sent', 'users', array(':site_name' => $site_name)));
|
||||||
|
@@ -3,18 +3,17 @@
|
|||||||
styles.css
|
styles.css
|
||||||
*************************************
|
*************************************
|
||||||
CONTENTS
|
CONTENTS
|
||||||
1. GENERAL
|
1. GENERAL
|
||||||
2. HEADER
|
2. HEADER
|
||||||
3. CONTENT
|
3. CONTENT
|
||||||
4. LEFT MENU
|
4. LEFT MENU
|
||||||
5. AUTHORIZATION
|
5. AUTHORIZATION
|
||||||
6. MISC
|
6. MEDIA QUERIES
|
||||||
|
|
||||||
|
|
||||||
*************************************
|
*************************************
|
||||||
1. GENERAL
|
1. GENERAL
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
body {
|
body {
|
||||||
padding-top: 60px;
|
padding-top: 60px;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
@@ -269,11 +268,46 @@ td, th {
|
|||||||
padding: 20px 10px 10px;
|
padding: 20px 10px 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.small-grey-text {
|
||||||
|
color:#333;
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.small-grey-text:hover {
|
||||||
|
color:#000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.small-white-text {
|
||||||
|
color:#fff;
|
||||||
|
font-size: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.small-white-text:hover {
|
||||||
|
color:#fdfdfd;
|
||||||
|
}
|
||||||
|
|
||||||
|
.error-none {display:none;}
|
||||||
|
.error-field {border:1px solid red!important;}
|
||||||
|
.container-fluid {padding-left:0px;}
|
||||||
|
img {max-width:none;}
|
||||||
|
|
||||||
|
a.btn-expand{
|
||||||
|
color: #333;
|
||||||
|
font-weight:bold;
|
||||||
|
font-size:14px;
|
||||||
|
text-decoration: none;
|
||||||
|
padding-left:4px;
|
||||||
|
padding-right:4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer a , footer{
|
||||||
|
color:#333;
|
||||||
|
font-size:10px;
|
||||||
|
}
|
||||||
|
|
||||||
/**************************************
|
/**************************************
|
||||||
2. HEADER
|
2. HEADER
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
.monstra-header {
|
.monstra-header {
|
||||||
top: 0;
|
top: 0;
|
||||||
left: 0;
|
left: 0;
|
||||||
@@ -319,16 +353,13 @@ td, th {
|
|||||||
/*************************************
|
/*************************************
|
||||||
3. CONTENT
|
3. CONTENT
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
.monstra-content {
|
.monstra-content {
|
||||||
padding-top:20px;
|
padding-top:20px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
4. LEFT MENU
|
4. LEFT MENU
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
.monstra-menu-category-separator {
|
.monstra-menu-category-separator {
|
||||||
border: 0;
|
border: 0;
|
||||||
border-bottom: 1px solid #ccc;
|
border-bottom: 1px solid #ccc;
|
||||||
@@ -414,8 +445,6 @@ td, th {
|
|||||||
background-color: #0088cc;
|
background-color: #0088cc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
5. AUTHORIZATION
|
5. AUTHORIZATION
|
||||||
*************************************/
|
*************************************/
|
||||||
@@ -437,45 +466,65 @@ td, th {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*************************************
|
/*************************************
|
||||||
6. MISC
|
6. MEDIA QUERIES
|
||||||
*************************************/
|
*************************************/
|
||||||
|
|
||||||
.small-grey-text {
|
/* iPhone 4, iPhone5, Small Tablet, Tablet */
|
||||||
color:#333;
|
@media (max-width: 800px) {
|
||||||
font-size: 10px;
|
|
||||||
|
.monstra-header .btn-small {
|
||||||
|
padding: 0px 7px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.monstra-menu-sidebar {
|
||||||
|
background: url('@theme_admin_url/img/noisy_grid.png');
|
||||||
|
background-color:#ccc;
|
||||||
|
max-width: 100%!important;
|
||||||
|
min-width: 100%!important;
|
||||||
|
margin-bottom: 20px;
|
||||||
|
padding: 19px;
|
||||||
|
border:2px solid #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.container-fluid {
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.small-grey-text:hover {
|
/* Small Tablet(Landscape), Tablet(Portrait) */
|
||||||
color:#000;
|
@media (min-width: 768px) and (max-width: 800px) {
|
||||||
|
.row-fluid .span10 {
|
||||||
|
-moz-box-sizing: border-box;
|
||||||
|
display: block;
|
||||||
|
width: 94%;
|
||||||
|
}
|
||||||
|
|
||||||
|
footer a, footer {
|
||||||
|
color: #333333;
|
||||||
|
font-size: 10px;
|
||||||
|
margin-right: 10px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.small-white-text {
|
/* iPhone 4 */
|
||||||
color:#fff;
|
@media (max-width: 320px) {
|
||||||
font-size: 10px;
|
.markItUpButton11,
|
||||||
}
|
.markItUpButton12,
|
||||||
|
.markItUpButton13,
|
||||||
.small-white-text:hover {
|
.markItUpButton14,
|
||||||
color:#fdfdfd;
|
.markItUpButton15,
|
||||||
}
|
.markItUpButton16,
|
||||||
|
.markItUpButton17,
|
||||||
.error-none {display:none;}
|
.markItUpButton18 {
|
||||||
.error-field {border:1px solid red!important;}
|
display: none;
|
||||||
.container-fluid {padding-left:0px;}
|
}
|
||||||
img {max-width:none;}
|
.markItUpSeparator{
|
||||||
|
display: none;
|
||||||
a.btn-expand{
|
}
|
||||||
color: #333;
|
|
||||||
font-weight:bold;
|
|
||||||
font-size:14px;
|
|
||||||
text-decoration: none;
|
|
||||||
padding-left:4px;
|
|
||||||
padding-right:4px;
|
|
||||||
}
|
|
||||||
|
|
||||||
footer a , footer{
|
|
||||||
color:#333;
|
|
||||||
font-size:10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
#showImage {
|
||||||
|
min-width: 298px!important;
|
||||||
|
}
|
||||||
|
}
|
@@ -10,14 +10,18 @@
|
|||||||
|
|
||||||
<!-- Styles -->
|
<!-- Styles -->
|
||||||
<?php Stylesheet::add('public/assets/css/bootstrap.css', 'backend', 1); ?>
|
<?php Stylesheet::add('public/assets/css/bootstrap.css', 'backend', 1); ?>
|
||||||
<?php Stylesheet::add('public/assets/css/bootstrap-responsive.css', 'backend', 2); ?>
|
<?php Stylesheet::add('public/assets/css/bootstrap-lightbox.css', 'backend', 2); ?>
|
||||||
<?php Stylesheet::add('admin/themes/default/css/default.css', 'backend', 3); ?>
|
<?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('admin/themes/default/css/default.css', 'backend', 5); ?>
|
||||||
<?php Stylesheet::load(); ?>
|
<?php Stylesheet::load(); ?>
|
||||||
|
|
||||||
<!-- JavaScripts -->
|
<!-- JavaScripts -->
|
||||||
<?php Javascript::add('public/assets/js/jquery.js', 'backend', 1); ?>
|
<?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.js', 'backend', 2); ?>
|
||||||
<?php Javascript::add('admin/themes/default/js/default.js', 'backend', 3); ?>
|
<?php Javascript::add('public/assets/js/bootstrap-lightbox.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 Javascript::load(); ?>
|
||||||
|
|
||||||
<?php Action::run('admin_header'); ?>
|
<?php Action::run('admin_header'); ?>
|
||||||
@@ -49,23 +53,40 @@
|
|||||||
<div class="row-fluid">
|
<div class="row-fluid">
|
||||||
|
|
||||||
<!-- Block_sidebar -->
|
<!-- Block_sidebar -->
|
||||||
<div class="span2 monstra-menu-sidebar hidden-phone">
|
|
||||||
<h3><?php echo __('Content', 'pages'); ?></h3>
|
<div class="span2 monstra-menu-sidebar">
|
||||||
<ul>
|
|
||||||
<?php Navigation::draw('content'); ?>
|
<div class="hidden-desktop">
|
||||||
</ul>
|
<select class="input-block-level" name="sections" id="sections">
|
||||||
<div class="monstra-menu-category-separator"></div>
|
<?php
|
||||||
<?php if (Session::exists('user_role') && in_array(Session::get('user_role'), array('admin'))) { ?>
|
Navigation::getDropdown('content');
|
||||||
<h3><?php echo __('Extends', 'system'); ?></h3>
|
Navigation::getDropdown('extends');
|
||||||
<ul>
|
Navigation::getDropdown('system');
|
||||||
<?php Navigation::draw('extends'); ?>
|
?>
|
||||||
</ul>
|
</select>
|
||||||
<div class="monstra-menu-category-separator"></div>
|
</div>
|
||||||
<?php } ?>
|
|
||||||
<h3><?php echo __('System', 'system'); ?></h3>
|
<div class="hidden-phone hidden-tablet">
|
||||||
<ul>
|
|
||||||
<?php Navigation::draw('system'); ?>
|
<h3><?php echo __('Content', 'pages'); ?></h3>
|
||||||
</ul>
|
<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>
|
||||||
|
<?php } ?>
|
||||||
|
<h3><?php echo __('System', 'system'); ?></h3>
|
||||||
|
<ul>
|
||||||
|
<?php Navigation::draw('system'); ?>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<!-- /Block_sidebar -->
|
<!-- /Block_sidebar -->
|
||||||
|
|
||||||
@@ -96,11 +117,13 @@
|
|||||||
|
|
||||||
<!-- Block_footer -->
|
<!-- Block_footer -->
|
||||||
<footer>
|
<footer>
|
||||||
<p align="right">
|
<p class="pull-right">
|
||||||
<span style="border-top:1px solid #E0E0E0; padding-top:10px;">
|
<span style="border-top:1px solid #E0E0E0; padding-top:10px;">
|
||||||
<a href="http://forum.monstra.org" target="_blank"><?php echo __('Official Support Forum', 'system'); ?></a> /
|
<span class="hidden-phone">
|
||||||
<a href="http://monstra.org/documentation" target="_blank"><?php echo __('Documentation', 'system'); ?></a> /
|
<a href="http://forum.monstra.org" target="_blank"><?php echo __('Official Support Forum', 'system'); ?></a> /
|
||||||
© 2012 - 2013 <a href="http://monstra.org" target="_blank">Monstra</a> – <?php echo __('Version', 'system'); ?> <?php echo Monstra::VERSION; ?>
|
<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>
|
</span>
|
||||||
</p>
|
</p>
|
||||||
</footer>
|
</footer>
|
||||||
|
@@ -17,3 +17,10 @@
|
|||||||
|
|
||||||
/* Confirm delete */
|
/* Confirm delete */
|
||||||
function confirmDelete(msg){var data=confirm(msg+" ?"); return data;}
|
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');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
@@ -10,14 +10,16 @@
|
|||||||
|
|
||||||
<!-- Styles -->
|
<!-- Styles -->
|
||||||
<?php Stylesheet::add('public/assets/css/bootstrap.css', 'backend', 1); ?>
|
<?php Stylesheet::add('public/assets/css/bootstrap.css', 'backend', 1); ?>
|
||||||
<?php Stylesheet::add('public/assets/css/bootstrap-responsive.css', 'backend', 2); ?>
|
<?php Stylesheet::add('public/assets/css/bootstrap-lightbox.css', 'backend', 2); ?>
|
||||||
<?php Stylesheet::add('admin/themes/default/css/default.css', 'backend', 3); ?>
|
<?php Stylesheet::add('public/assets/css/bootstrap-responsive.css', 'backend', 3); ?>
|
||||||
|
<?php Stylesheet::add('admin/themes/default/css/default.css', 'backend', 4); ?>
|
||||||
<?php Stylesheet::load(); ?>
|
<?php Stylesheet::load(); ?>
|
||||||
|
|
||||||
<!-- JavaScripts -->
|
<!-- JavaScripts -->
|
||||||
<?php Javascript::add('public/assets/js/jquery.js', 'backend', 1); ?>
|
<?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.js', 'backend', 2); ?>
|
||||||
<?php Javascript::add('admin/themes/default/js/default.js', 'backend', 3); ?>
|
<?php Javascript::add('public/assets/js/bootstrap-lightbox.js', 'backend', 3); ?>
|
||||||
|
<?php Javascript::add('admin/themes/default/js/default.js', 'backend', 4); ?>
|
||||||
<?php Javascript::load(); ?>
|
<?php Javascript::load(); ?>
|
||||||
<script type="text/javascript">
|
<script type="text/javascript">
|
||||||
$().ready(function () {
|
$().ready(function () {
|
||||||
@@ -53,7 +55,7 @@
|
|||||||
|
|
||||||
<div class="container form-signin">
|
<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 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" alt="monstra" /></a></div>
|
||||||
<div class="administration-area">
|
<div class="administration-area">
|
||||||
<hr>
|
<hr>
|
||||||
<div>
|
<div>
|
||||||
@@ -66,7 +68,7 @@
|
|||||||
<input class="input-xlarge" name="password" type="password" />
|
<input class="input-xlarge" name="password" type="password" />
|
||||||
<br />
|
<br />
|
||||||
<?php if (isset($login_error) && $login_error !== '') { ?><div class="alert alert-error"><?php echo $login_error; ?></div><?php } ?>
|
<?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 __('Enter', 'users'); ?>" />
|
<input type="submit" name="login_submit" class="btn" value="<?php echo __('Log In', 'users'); ?>" />
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -81,7 +83,7 @@
|
|||||||
<input name="login" class="input-xlarge" type="text" value="<?php echo $user_login; ?>" />
|
<input name="login" class="input-xlarge" type="text" value="<?php echo $user_login; ?>" />
|
||||||
|
|
||||||
<?php if (Option::get('captcha_installed') == 'true') { ?>
|
<?php if (Option::get('captcha_installed') == 'true') { ?>
|
||||||
<label><?php echo __('Captcha'); ?><label>
|
<label><?php echo __('Captcha', 'users'); ?></label>
|
||||||
<input type="text" name="answer" class="input-xlarge">
|
<input type="text" name="answer" class="input-xlarge">
|
||||||
<?php CryptCaptcha::draw(); ?>
|
<?php CryptCaptcha::draw(); ?>
|
||||||
<?php } ?>
|
<?php } ?>
|
||||||
@@ -109,7 +111,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div style="text-align:center">
|
<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>
|
<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>
|
</div>
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
@@ -1,3 +1,77 @@
|
|||||||
|
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
|
||||||
|
- Security: Added limits for login attempts #104
|
||||||
|
- Security: Obfuscate users email to prevent spam-bots from sniffing it.
|
||||||
|
- Core: Added ability to map Monstra Engine Directory.
|
||||||
|
- Core: Maintenance Mode Improvements
|
||||||
|
- Core: ORM::configure - driver options added
|
||||||
|
- Gelato: Image.php fix for PNG files
|
||||||
|
- Gelato: Number.php: Undefined offset fix
|
||||||
|
- XMLDB: error select for empty table fix
|
||||||
|
- Plugin API: Stylesheet.php updates - sourcecode misses a linebreak after minified css
|
||||||
|
- Files Manager: jasny bootstrap-fileupload - added #89
|
||||||
|
- Users Plugin: login page fixes
|
||||||
|
- Users Plugin: Deleting users - fixed by Oleg Gatseluk #158
|
||||||
|
- Pages Plugin: General method getPages() created #123
|
||||||
|
- Pages Plugin: page expand ajax bug #115 - fixed
|
||||||
|
- Pages Plugin: Improved available() method to show only published pages
|
||||||
|
- Pages Plugin: Bug with pages renaming - fixed
|
||||||
|
- Monstra Email Templates #164
|
||||||
|
- Localization: Major Fixes
|
||||||
|
- Localization: PL added
|
||||||
|
- Localization: NL added
|
||||||
|
- .htaccess SEO improvements
|
||||||
|
|
||||||
|
Monstra 2.2.1, 2013-04-06
|
||||||
|
------------------------
|
||||||
|
- Update Gelato to 1.0.3
|
||||||
|
- Error Handler turned off for Production environment
|
||||||
|
- Localization: Farsi(fa) translations fixes.
|
||||||
|
- Pages Manager: fix translates #107
|
||||||
|
- Missing Translation on Login Page - fixed #106
|
||||||
|
- Lithuanian flag and other languages fixes. Thanks to mbarzda
|
||||||
|
|
||||||
|
Monstra 2.2.0, 2013-03-25
|
||||||
|
------------------------
|
||||||
|
- Mobile Ready! Monstra fully responsive for mobile devices, tablets, and normal computer screens.
|
||||||
|
- Improved Monstra Architecture!
|
||||||
|
- New Stand-alone Monstra Library (Gelato) was created! Totally improved old classes and added new classes!
|
||||||
|
- Monstra Library with new useful classes - ClassLoader, ErrorHandler, Log, MinifyJS, MinifyCSS, MinifyHTML, Token, Registry.
|
||||||
|
- Adopted PSR-0 PSR-1 PSR-2
|
||||||
|
- Localization: Farsi(fa), Magyar(hu), Français(fr), Spanish(es), Serbian(sr-yu), Slovakian(sk) translations added. Thanks to Abdulhalim, Lez, Neri, Mapadesign, Hugomano and Nakome.
|
||||||
|
- Idiorm Updated to 1.3.0
|
||||||
|
- jQuery Updated to 1.9.1
|
||||||
|
- Twitter Bootstrap Updated to 2.3.0
|
||||||
|
- Default Theme: Social Meta Tags - added.
|
||||||
|
- Default Theme: Hook "theme_meta" - added.
|
||||||
|
- Admin Default Theme: Added missing meta tags.
|
||||||
|
- Improve Installer Usability. Flags Added.
|
||||||
|
- Default Site Email added.
|
||||||
|
- PHPMailer added.
|
||||||
|
- Pages Manager: added ability to quickly update page status and page access.
|
||||||
|
- Intstaller Layout: Added missing meta tags.
|
||||||
|
- Filesmanager plugin: added ability to view images.
|
||||||
|
- Filesmanager Plugin: forbidden types array - updated.
|
||||||
|
- CSRF detection text - updated.
|
||||||
|
- Engine Uri: code improvements.
|
||||||
|
- XMLDB: Table Class - fixed select method. Thanks to DmitriyMX
|
||||||
|
- Bootstrap CSS: Icons url - fixed.
|
||||||
|
- Plugins Manager: buttons confirm dialog message - fixed.
|
||||||
|
- Pages Manager: page cloning problem - fixed.
|
||||||
|
- Localizations: translations fixes.
|
||||||
|
|
||||||
Monstra 2.1.3, 2012-12-09
|
Monstra 2.1.3, 2012-12-09
|
||||||
------------------------
|
------------------------
|
||||||
- Pages Plugin: New shortcodes added - page_author, page_slug, page_url page_available, page_breadcrumbs, page_date, page_content.
|
- Pages Plugin: New shortcodes added - page_author, page_slug, page_url page_available, page_breadcrumbs, page_date, page_content.
|
||||||
@@ -211,4 +285,4 @@ Monstra 1.0.1, 2012-04-26
|
|||||||
|
|
||||||
Monstra 1.0.0, 2012-04-24
|
Monstra 1.0.0, 2012-04-24
|
||||||
------------------------
|
------------------------
|
||||||
- Initial release
|
- Initial release
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -5,7 +5,7 @@
|
|||||||
*
|
*
|
||||||
* Monstra - Content Management System.
|
* Monstra - Content Management System.
|
||||||
* Site: www.mostra.org
|
* Site: www.mostra.org
|
||||||
* Copyright (C) 2012-2013 Romanenko Sergey / Awilum <awilum@msn.com>
|
* Copyright (C) 2012-2014 Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
*
|
*
|
||||||
* This source file is part of the Monstra Engine. More information,
|
* This source file is part of the Monstra Engine. More information,
|
||||||
* documentation and tutorials can be found at http://monstra.org
|
* documentation and tutorials can be found at http://monstra.org
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
@@ -39,7 +39,7 @@ class Monstra
|
|||||||
/**
|
/**
|
||||||
* The version of Monstra
|
* The version of Monstra
|
||||||
*/
|
*/
|
||||||
const VERSION = '2.1.3';
|
const VERSION = '2.3.1';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Monstra environment
|
* Monstra environment
|
||||||
@@ -113,14 +113,24 @@ class Monstra
|
|||||||
* Set Gelato Display Errors to False for Production environment.
|
* Set Gelato Display Errors to False for Production environment.
|
||||||
*/
|
*/
|
||||||
if (Monstra::$environment == Monstra::PRODUCTION) {
|
if (Monstra::$environment == Monstra::PRODUCTION) {
|
||||||
define('GELATO_DISPLAY_ERRORS', false);
|
define('GELATO_DEVELOPMENT', false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define Monstra Folder for Gelato Logs
|
||||||
|
*/
|
||||||
|
define ('GELATO_LOGS_PATH', LOGS);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Include Gelato Library
|
* Include Gelato Library
|
||||||
*/
|
*/
|
||||||
include ROOT . DS . 'libraries'. DS .'Gelato'. DS .'Gelato.php';
|
include ROOT . DS . 'libraries'. DS .'Gelato'. DS .'Gelato.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Map Monstra Engine Directory
|
||||||
|
*/
|
||||||
|
ClassLoader::directory(ROOT . DS . 'engine' . DS);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Map all Monstra Classes
|
* Map all Monstra Classes
|
||||||
*/
|
*/
|
||||||
@@ -157,6 +167,9 @@ class Monstra
|
|||||||
|
|
||||||
// Idiorm
|
// Idiorm
|
||||||
'ORM' => ROOT . DS .'libraries'. DS . 'Idiorm'. DS .'ORM.php',
|
'ORM' => ROOT . DS .'libraries'. DS . 'Idiorm'. DS .'ORM.php',
|
||||||
|
|
||||||
|
// PHPMailer
|
||||||
|
'PHPMailer' => ROOT . DS .'libraries'. DS . 'PHPMailer'. DS .'PHPMailer.php',
|
||||||
));
|
));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -171,18 +184,14 @@ class Monstra
|
|||||||
ORM::configure(MONSTRA_DB_DSN);
|
ORM::configure(MONSTRA_DB_DSN);
|
||||||
ORM::configure('username', MONSTRA_DB_USER);
|
ORM::configure('username', MONSTRA_DB_USER);
|
||||||
ORM::configure('password', MONSTRA_DB_PASSWORD);
|
ORM::configure('password', MONSTRA_DB_PASSWORD);
|
||||||
|
ORM::configure('driver_options', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Auto cleanup if MONSTRA_DEBUG is TRUE
|
* Auto cleanup if MONSTRA_DEBUG is TRUE
|
||||||
*/
|
*/
|
||||||
if (Monstra::$environment == Monstra::DEVELOPMENT) {
|
if (Monstra::$environment == Monstra::DEVELOPMENT) {
|
||||||
|
Monstra::cleanTmp();
|
||||||
// Cleanup minify
|
|
||||||
if (count($files = File::scan(MINIFY, array('css', 'js', 'php'))) > 0) foreach ($files as $file) File::delete(MINIFY . DS . $file);
|
|
||||||
|
|
||||||
// Cleanup cache
|
|
||||||
if (count($namespaces = Dir::scan(CACHE)) > 0) foreach ($namespaces as $namespace) Dir::delete(CACHE . DS . $namespace);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -293,6 +302,18 @@ class Monstra
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clean Monstra TMP folder.
|
||||||
|
*/
|
||||||
|
public static function cleanTmp()
|
||||||
|
{
|
||||||
|
// Cleanup minify
|
||||||
|
if (count($files = File::scan(MINIFY, array('css', 'js', 'php'))) > 0) foreach ($files as $file) File::delete(MINIFY . DS . $file);
|
||||||
|
|
||||||
|
// Cleanup cache
|
||||||
|
if (count($namespaces = Dir::scan(CACHE)) > 0) foreach ($namespaces as $namespace) Dir::delete(CACHE . DS . $namespace);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize Monstra Engine
|
* Initialize Monstra Engine
|
||||||
*
|
*
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
@@ -32,6 +32,7 @@ class I18n
|
|||||||
'el' => 'Ελληνικά',
|
'el' => 'Ελληνικά',
|
||||||
'en' => 'English',
|
'en' => 'English',
|
||||||
'es' => 'Español',
|
'es' => 'Español',
|
||||||
|
'fa' => 'Farsi',
|
||||||
'fi' => 'Suomi',
|
'fi' => 'Suomi',
|
||||||
'fr' => 'Français',
|
'fr' => 'Français',
|
||||||
'gl' => 'Galego',
|
'gl' => 'Galego',
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
@@ -128,7 +128,7 @@ class Javascript
|
|||||||
if (BACKEND) {
|
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"></script>';
|
||||||
} else {
|
} 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"></script>'."\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
@@ -110,4 +110,86 @@ class Navigation
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Draw items
|
||||||
|
*
|
||||||
|
* <code>
|
||||||
|
* Navigation::draw('content');
|
||||||
|
* Navigation::draw('top', Navigation::TOP);
|
||||||
|
* <code>
|
||||||
|
*
|
||||||
|
* @param string $category Category
|
||||||
|
* @param integer $type Type. Default is LEFT
|
||||||
|
*/
|
||||||
|
public static function get($category, $type = Navigation::LEFT)
|
||||||
|
{
|
||||||
|
// Sort items by priority
|
||||||
|
$items = Arr::subvalSort(Navigation::$items, 'priority');
|
||||||
|
|
||||||
|
// Draw left navigation
|
||||||
|
if ($type == Navigation::LEFT) {
|
||||||
|
|
||||||
|
// Loop trough the items
|
||||||
|
foreach ($items as $item) {
|
||||||
|
|
||||||
|
// If current plugin id == selected item id then set class to current
|
||||||
|
if (Request::get('id') == $item['id'] && $item['external'] == false) $class = 'class = "current" '; else $class = '';
|
||||||
|
|
||||||
|
// If current category == item category and navigation type is left them draw this item
|
||||||
|
if ($item['category'] == $category && $item['type'] == Navigation::LEFT) {
|
||||||
|
|
||||||
|
// Is external item id or not ?
|
||||||
|
if ($item['external'] == false) {
|
||||||
|
echo '<li><a '.$class.'href="index.php?id='.$item['id'].'">'.$item['name'].'</a></li>';
|
||||||
|
} else {
|
||||||
|
echo '<li><a target="_blank" href="'.$item['id'].'">'.$item['name'].'</a></li>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} elseif ($type == Navigation::TOP) {
|
||||||
|
// Draw top navigation
|
||||||
|
foreach ($items as $item) {
|
||||||
|
if ($item['category'] == $category && $item['type'] == Navigation::TOP) {
|
||||||
|
if ($item['external'] == false) {
|
||||||
|
echo '<a class="btn btn-small btn-inverse" href="index.php?id='.$item['id'].'">'.$item['name'].'</a>'.Html::nbsp(2);
|
||||||
|
} else {
|
||||||
|
echo '<a target="_blank" class="btn btn-small btn-inverse" href="'.$item['id'].'">'.$item['name'].'</a>'.Html::nbsp(2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Draw dropdown items
|
||||||
|
*
|
||||||
|
* <code>
|
||||||
|
* Navigation::getDropdown('content');
|
||||||
|
* <code>
|
||||||
|
*
|
||||||
|
* @param string $category Category
|
||||||
|
*/
|
||||||
|
public static function getDropdown($category)
|
||||||
|
{
|
||||||
|
// Sort items by priority
|
||||||
|
$items = Arr::subvalSort(Navigation::$items, 'priority');
|
||||||
|
|
||||||
|
// Loop trough the items
|
||||||
|
foreach ($items as $item) {
|
||||||
|
|
||||||
|
// If current plugin id == selected item id then set class to current
|
||||||
|
if (Request::get('id') == $item['id'] && $item['external'] == false) $class = 'selected = "selected" '; else $class = '';
|
||||||
|
|
||||||
|
// If current category == item category and navigation type is left them draw this item
|
||||||
|
if ($item['category'] == $category && $item['type'] == Navigation::LEFT) {
|
||||||
|
|
||||||
|
// Is external item id or not ?
|
||||||
|
if ($item['external'] == false) {
|
||||||
|
echo '<option '.$class.'rel="index.php?id='.$item['id'].'">'.$item['name'].'</option>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
@@ -68,7 +68,7 @@ class Plugin
|
|||||||
$plugins = new Table('plugins');
|
$plugins = new Table('plugins');
|
||||||
|
|
||||||
// Select all plugins
|
// Select all plugins
|
||||||
$records = $plugins->select(null, 'all', null, array('location', 'frontend', 'backend', 'status', 'priority'), 'priority', 'ASC');
|
$records = $plugins->select(null, 'all', null, array('location', 'status', 'priority'), 'priority', 'ASC');
|
||||||
|
|
||||||
// Now include plugins from $records plugins array
|
// Now include plugins from $records plugins array
|
||||||
// If plugin is active then load it to the system.
|
// If plugin is active then load it to the system.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
@@ -96,7 +96,7 @@ class Stylesheet
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$backend_buffer = Stylesheet::parseVariables($backend_buffer);
|
$backend_buffer = Stylesheet::parseVariables($backend_buffer);
|
||||||
file_put_contents($backend_site_css_path, Minify::css($backend_buffer));
|
file_put_contents($backend_site_css_path, MinifyCSS::process($backend_buffer));
|
||||||
$backend_regenerate = false;
|
$backend_regenerate = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -120,7 +120,7 @@ class Stylesheet
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
$frontend_buffer = Stylesheet::parseVariables($frontend_buffer);
|
$frontend_buffer = Stylesheet::parseVariables($frontend_buffer);
|
||||||
file_put_contents($frontend_site_css_path, Minify::css($frontend_buffer));
|
file_put_contents($frontend_site_css_path, MinifyCSS::process($frontend_buffer));
|
||||||
$frontend_regenerate = false;
|
$frontend_regenerate = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -130,7 +130,7 @@ class Stylesheet
|
|||||||
if (BACKEND) {
|
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'.'" type="text/css" />';
|
||||||
} else {
|
} else {
|
||||||
echo '<link rel="stylesheet" href="'.Option::get('siteurl').'tmp/minify/frontend_site.minify.css'.'" type="text/css" />';
|
echo '<link rel="stylesheet" href="'.Option::get('siteurl').'tmp/minify/frontend_site.minify.css'.'" type="text/css" />'."\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
@@ -22,7 +22,7 @@ class Security
|
|||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public static $token_name = 'security_token';
|
protected static $token_name = 'security_token';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Protected constructor since this is a static class.
|
* Protected constructor since this is a static class.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
@@ -176,7 +176,7 @@ class Site
|
|||||||
if ( ! file_exists(MINIFY . DS . 'theme.' . $current_theme . '.minify.' . $template . '.template.php') or
|
if ( ! file_exists(MINIFY . DS . 'theme.' . $current_theme . '.minify.' . $template . '.template.php') or
|
||||||
filemtime(THEMES_SITE . DS . $current_theme . DS . $template .'.template.php') > filemtime(MINIFY . DS . 'theme.' . $current_theme . '.minify.' . $template . '.template.php')) {
|
filemtime(THEMES_SITE . DS . $current_theme . DS . $template .'.template.php') > filemtime(MINIFY . DS . 'theme.' . $current_theme . '.minify.' . $template . '.template.php')) {
|
||||||
$buffer = file_get_contents(THEMES_SITE. DS . $current_theme . DS . $template .'.template.php');
|
$buffer = file_get_contents(THEMES_SITE. DS . $current_theme . DS . $template .'.template.php');
|
||||||
$buffer = Minify::html($buffer);
|
$buffer = MinifyHTML::process($buffer);
|
||||||
file_put_contents(MINIFY . DS . 'theme.' . $current_theme . '.minify.' . $template . '.template.php', $buffer);
|
file_put_contents(MINIFY . DS . 'theme.' . $current_theme . '.minify.' . $template . '.template.php', $buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -185,7 +185,7 @@ class Site
|
|||||||
if ( ! File::exists(MINIFY . DS . 'theme.' . $current_theme . '.' . 'minify.index.template.php') or
|
if ( ! File::exists(MINIFY . DS . 'theme.' . $current_theme . '.' . 'minify.index.template.php') or
|
||||||
filemtime(THEMES_SITE . DS . $current_theme . DS . 'index.template.php') > filemtime(MINIFY . DS . 'theme.' . $current_theme . '.' . 'minify.index.template.php')) {
|
filemtime(THEMES_SITE . DS . $current_theme . DS . 'index.template.php') > filemtime(MINIFY . DS . 'theme.' . $current_theme . '.' . 'minify.index.template.php')) {
|
||||||
$buffer = file_get_contents(THEMES_SITE . DS . $current_theme . DS . 'index.template.php');
|
$buffer = file_get_contents(THEMES_SITE . DS . $current_theme . DS . 'index.template.php');
|
||||||
$buffer = Minify::html($buffer);
|
$buffer = MinifyHTML::process($buffer);
|
||||||
file_put_contents(MINIFY . DS . 'theme.' . $current_theme . '.' . 'minify.index.template.php', $buffer);
|
file_put_contents(MINIFY . DS . 'theme.' . $current_theme . '.' . 'minify.index.template.php', $buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
@@ -137,14 +137,11 @@ class Uri
|
|||||||
// param1/param2
|
// param1/param2
|
||||||
if ($uri[0] !== Uri::$default_component) {
|
if ($uri[0] !== Uri::$default_component) {
|
||||||
if (isset($uri[1])) {
|
if (isset($uri[1])) {
|
||||||
$data[0] = $uri[0];
|
|
||||||
$data[1] = $uri[1];
|
foreach ($uri as $part) {
|
||||||
// Some more uri parts :)
|
$data[] = $part;
|
||||||
// site.ru/part1/part2/part3/part4/part5/part6/
|
}
|
||||||
if (isset($uri[2])) $data[2] = $uri[2];
|
|
||||||
if (isset($uri[3])) $data[3] = $uri[3];
|
|
||||||
if (isset($uri[4])) $data[4] = $uri[4];
|
|
||||||
if (isset($uri[5])) $data[5] = $uri[5];
|
|
||||||
} else { // default
|
} else { // default
|
||||||
$data[0] = $uri[0];
|
$data[0] = $uri[0];
|
||||||
}
|
}
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
@@ -546,7 +546,7 @@ class Table
|
|||||||
if ($order_by == 'id') {
|
if ($order_by == 'id') {
|
||||||
$records[$count]['sort'] = (int) $vars['id'];
|
$records[$count]['sort'] = (int) $vars['id'];
|
||||||
} else {
|
} else {
|
||||||
$records[$count]['sort'] = (string) $value;
|
$records[$count]['sort'] = (string) $vars[$order_by];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -807,6 +807,7 @@ class Table
|
|||||||
|
|
||||||
return $c;
|
return $c;
|
||||||
}
|
}
|
||||||
|
return $a;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -853,7 +854,7 @@ class Table
|
|||||||
*/
|
*/
|
||||||
protected static function _save($table)
|
protected static function _save($table)
|
||||||
{
|
{
|
||||||
$dom = new DOMDocument('1.0');
|
$dom = new DOMDocument('1.0', 'utf-8');
|
||||||
$dom->preserveWhiteSpace = false;
|
$dom->preserveWhiteSpace = false;
|
||||||
|
|
||||||
// Save new xml data to xml file only if loadXML successful.
|
// Save new xml data to xml file only if loadXML successful.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -1,19 +1,10 @@
|
|||||||
<?php defined('MONSTRA_ACCESS') or die('No direct script access.');
|
<?php defined('MONSTRA_ACCESS') or die('No direct script access.');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Report All Errors
|
* Monstra requires PHP 5.2.3 or greater
|
||||||
*
|
|
||||||
* By setting error reporting to -1, we essentially force PHP to report
|
|
||||||
* every error, and this is guranteed to show every error on future
|
|
||||||
* releases of PHP. This allows everything to be fixed early!
|
|
||||||
*/
|
*/
|
||||||
error_reporting(-1);
|
if (version_compare(PHP_VERSION, "5.2.3", "<")) {
|
||||||
|
exit("Monstra requires PHP 5.2.3 or greater.");
|
||||||
/**
|
|
||||||
* Monstra requires PHP 5.2.0 or greater
|
|
||||||
*/
|
|
||||||
if (version_compare(PHP_VERSION, "5.2.0", "<")) {
|
|
||||||
exit("Monstra requires PHP 5.2.0 or greater.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -30,7 +21,16 @@ include ROOT . DS .'engine'. DS .'Monstra.php';
|
|||||||
* Monstra::STAGING - The staging environment.
|
* Monstra::STAGING - The staging environment.
|
||||||
* Monstra::PRODUCTION - The production environment.
|
* Monstra::PRODUCTION - The production environment.
|
||||||
*/
|
*/
|
||||||
Monstra::$environment = Monstra::DEVELOPMENT;
|
Monstra::$environment = Monstra::PRODUCTION;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Report Errors
|
||||||
|
*/
|
||||||
|
if (Monstra::$environment == Monstra::PRODUCTION) {
|
||||||
|
error_reporting(0);
|
||||||
|
} else {
|
||||||
|
error_reporting(-1);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initialize Monstra
|
* Initialize Monstra
|
||||||
|
@@ -4,4 +4,4 @@
|
|||||||
* Set meta generator
|
* Set meta generator
|
||||||
*/
|
*/
|
||||||
Action::add('theme_meta', 'setMetaGenerator');
|
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"; }
|
||||||
|
BIN
favicon.ico
BIN
favicon.ico
Binary file not shown.
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
19
index.php
19
index.php
@@ -9,7 +9,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
@@ -21,16 +21,6 @@ define('ROOT', rtrim(dirname(__FILE__), '\\/'));
|
|||||||
define('BACKEND', false);
|
define('BACKEND', false);
|
||||||
define('MONSTRA_ACCESS', true);
|
define('MONSTRA_ACCESS', true);
|
||||||
|
|
||||||
/* TEMP CODE BEGIN */
|
|
||||||
function byteFormat($size)
|
|
||||||
{
|
|
||||||
$unit = array('b', 'kb', 'mb', 'gb', 'tb', 'pb');
|
|
||||||
|
|
||||||
return @round($size/pow(1024, ($i=floor(log($size, 1024)))), 2).' '.$unit[$i];
|
|
||||||
}
|
|
||||||
$_start = memory_get_usage();
|
|
||||||
/* TEMP CODE END */
|
|
||||||
|
|
||||||
// First check for installer then go
|
// First check for installer then go
|
||||||
if (file_exists('install.php')) {
|
if (file_exists('install.php')) {
|
||||||
if (isset($_GET['install'])) {
|
if (isset($_GET['install'])) {
|
||||||
@@ -55,6 +45,9 @@ if (file_exists('install.php')) {
|
|||||||
if ((Session::exists('user_role')) and (Session::get('user_role') == 'admin' or Session::get('user_role') == 'editor')) {
|
if ((Session::exists('user_role')) and (Session::get('user_role') == 'admin' or Session::get('user_role') == 'editor')) {
|
||||||
// Monstra show this page :)
|
// Monstra show this page :)
|
||||||
} else {
|
} else {
|
||||||
|
header('HTTP/1.1 503 Service Temporarily Unavailable');
|
||||||
|
header('Status: 503 Service Temporarily Unavailable');
|
||||||
|
header('Retry-After: 600');
|
||||||
die (Text::toHtml(Option::get('maintenance_message')));
|
die (Text::toHtml(Option::get('maintenance_message')));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -71,7 +64,3 @@ if (file_exists('install.php')) {
|
|||||||
// Flush (send) the output buffer and turn off output buffering
|
// Flush (send) the output buffer and turn off output buffering
|
||||||
ob_end_flush();
|
ob_end_flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* TEMP CODE BEGIN */
|
|
||||||
echo byteFormat(memory_get_usage() - $_start);
|
|
||||||
/* TEMP CODE END */
|
|
||||||
|
137
install.php
137
install.php
@@ -10,17 +10,17 @@
|
|||||||
if ( ! defined('BACKEND')) define('BACKEND', false);
|
if ( ! defined('BACKEND')) define('BACKEND', false);
|
||||||
if ( ! defined('MONSTRA_ACCESS')) define('MONSTRA_ACCESS', true);
|
if ( ! defined('MONSTRA_ACCESS')) define('MONSTRA_ACCESS', true);
|
||||||
|
|
||||||
// Set default timezone
|
|
||||||
$system_timezone = date_default_timezone_get();
|
|
||||||
|
|
||||||
// Load bootstrap file
|
// Load bootstrap file
|
||||||
require_once(ROOT . DS . 'engine' . DS . '_init.php');
|
require_once(ROOT . DS . 'engine' . DS . '_init.php');
|
||||||
|
|
||||||
// Get array with the names of all modules compiled and loaded
|
// Get array with the names of all modules compiled and loaded
|
||||||
$php_modules = get_loaded_extensions();
|
$php_modules = get_loaded_extensions();
|
||||||
|
|
||||||
|
// Get server port
|
||||||
|
if ($_SERVER["SERVER_PORT"] == "80") $port = ""; else $port = ':'.$_SERVER["SERVER_PORT"];
|
||||||
|
|
||||||
// Get site URL
|
// 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']);
|
||||||
|
|
||||||
// Rewrite base
|
// Rewrite base
|
||||||
$rewrite_base = str_replace(array("index.php", "install.php"), "", $_SERVER['PHP_SELF']);
|
$rewrite_base = str_replace(array("index.php", "install.php"), "", $_SERVER['PHP_SELF']);
|
||||||
@@ -32,7 +32,7 @@
|
|||||||
$dir_array = array('public', 'storage', 'backups', 'tmp');
|
$dir_array = array('public', 'storage', 'backups', 'tmp');
|
||||||
|
|
||||||
// Languages array
|
// Languages array
|
||||||
$languages_array = array('en', 'ru', 'lt', 'it', 'de', 'pt-br', 'uk');
|
$languages_array = array('en', 'fr', 'de', 'it', 'es', 'lt', 'pl', 'pt-br', 'ru', 'uk', 'hu', 'fa' , 'sk', 'nl', 'sr-yu');
|
||||||
|
|
||||||
// Select Monstra language
|
// Select Monstra language
|
||||||
if (Request::get('language')) {
|
if (Request::get('language')) {
|
||||||
@@ -77,6 +77,7 @@
|
|||||||
'slogan' => __('Site slogan', 'system'),
|
'slogan' => __('Site slogan', 'system'),
|
||||||
'defaultpage' => 'home',
|
'defaultpage' => 'home',
|
||||||
'timezone' => Request::post('timezone'),
|
'timezone' => Request::post('timezone'),
|
||||||
|
'system_email' => Request::post('email'),
|
||||||
'theme_site_name' => 'default',
|
'theme_site_name' => 'default',
|
||||||
'theme_admin_name' => 'default'));
|
'theme_admin_name' => 'default'));
|
||||||
|
|
||||||
@@ -123,11 +124,9 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.install-languages {
|
.install-languages {
|
||||||
margin: 0 auto;
|
margin: 0 auto 15px;
|
||||||
float: none!important;
|
text-align: center;
|
||||||
margin-bottom:5px;
|
width: 390px;
|
||||||
padding-right:20px;
|
|
||||||
max-width: 300px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.install-block {
|
.install-block {
|
||||||
@@ -169,26 +168,54 @@
|
|||||||
color: #F74C18;
|
color: #F74C18;
|
||||||
}
|
}
|
||||||
|
|
||||||
.language-link {
|
.install-languages a {
|
||||||
color:#7A7A7C;
|
padding-left: 2px;
|
||||||
|
padding-right: 2px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.language-link+.language-link:before {
|
.language-link img {
|
||||||
color: #ccc;
|
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=30)";
|
||||||
content: ' | ';
|
filter: alpha(opacity=30);
|
||||||
|
-moz-opacity:0.3;
|
||||||
|
-khtml-opacity: 0.3;
|
||||||
|
opacity: 0.3;
|
||||||
}
|
}
|
||||||
|
|
||||||
.language-link:hover {
|
.language-link-current img{
|
||||||
color:#000;
|
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
|
||||||
text-decoration: none;
|
filter: alpha(opacity=100);
|
||||||
|
-moz-opacity:1.0;
|
||||||
|
-khtml-opacity: 1.0;
|
||||||
|
opacity: 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.language-link-current {
|
.install-languages a img:hover {
|
||||||
color:#000;
|
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
|
||||||
font-weight: 700;
|
filter: alpha(opacity=100);
|
||||||
|
-moz-opacity:1.0;
|
||||||
|
-khtml-opacity: 1.0;
|
||||||
|
opacity: 1.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (max-width: 480px) {
|
||||||
|
|
||||||
|
.input-xlarge {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.install-languages {
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.install-languages a {
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
</style>
|
</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>
|
||||||
</head>
|
</head>
|
||||||
<body class="install-body">
|
<body class="install-body">
|
||||||
|
|
||||||
@@ -244,8 +271,8 @@
|
|||||||
?>
|
?>
|
||||||
|
|
||||||
<div class="install-languages">
|
<div class="install-languages">
|
||||||
<?php foreach ($languages_array as $lang_code) {?>
|
<?php foreach ($languages_array as $lang_code) { ?>
|
||||||
<a class="language-link<?php if (Option::get('language') == $lang_code) echo ' language-link-current';?>" href="<?php echo $site_url.'?language=' . $lang_code; ?>"><?php echo $lang_code?></a>
|
<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 } ?>
|
<?php } ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="install-block">
|
<div class="install-block">
|
||||||
@@ -264,14 +291,14 @@
|
|||||||
<input type="hidden" name="backups" value="<?php echo $errors['backups']; ?>" />
|
<input type="hidden" name="backups" value="<?php echo $errors['backups']; ?>" />
|
||||||
<input type="hidden" name="tmp" value="<?php echo $errors['tmp']; ?>" />
|
<input type="hidden" name="tmp" value="<?php echo $errors['tmp']; ?>" />
|
||||||
|
|
||||||
<label><?php echo __('Site name', 'system'); ?></label>
|
<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')); ?>" />
|
<input class="input-xlarge" name="sitename" type="text" value="<?php if (Request::post('sitename')) echo Html::toText(Request::post('sitename')); ?>" />
|
||||||
<br />
|
<br />
|
||||||
<label><?php echo __('Site url', 'system'); ?></label>
|
<label><?php echo __('Site Url', 'system'); ?></label>
|
||||||
<input class="input-xlarge" name="siteurl" type="text" value="<?php echo Html::toText($site_url); ?>" />
|
<input class="input-xlarge" name="siteurl" type="text" value="<?php echo Html::toText($site_url); ?>" />
|
||||||
<br />
|
<br />
|
||||||
<label><?php echo __('Username', 'users'); ?></label>
|
<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" />
|
<input class="input-xlarge login" name="login" value="<?php if(Request::post('login')) echo Html::toText(Request::post('login')); ?>" type="text" />
|
||||||
<br />
|
<br />
|
||||||
<label><?php echo __('Password', 'users'); ?></label>
|
<label><?php echo __('Password', 'users'); ?></label>
|
||||||
<input class="input-xlarge" name="password" type="password" />
|
<input class="input-xlarge" name="password" type="password" />
|
||||||
@@ -373,79 +400,83 @@
|
|||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<hr>
|
<hr>
|
||||||
<p align="center"><strong><?php echo __('...Monstra says...', 'system'); ?></strong></p>
|
<p class="text-center"><strong><?php echo __('...Monstra says...', 'system'); ?></strong></p>
|
||||||
<div>
|
<div>
|
||||||
<ul>
|
<ul>
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
if (version_compare(PHP_VERSION, "5.2.0", "<")) {
|
if (version_compare(PHP_VERSION, "5.2.0", "<")) {
|
||||||
echo '<span class="error"><li>'.__('PHP 5.2 or greater is required', 'system').'</li></span>';
|
echo '<li class="error">'.__('PHP 5.2 or greater is required', 'system').'</li>';
|
||||||
} else {
|
} else {
|
||||||
echo '<span class="ok"><li>'.__('PHP Version', 'system').' '.PHP_VERSION.'</li></span>';
|
echo '<li class="ok">'.__('PHP Version', 'system').' '.PHP_VERSION.'</li>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_array('SimpleXML', $php_modules)) {
|
if (in_array('SimpleXML', $php_modules)) {
|
||||||
echo '<span class="ok"><li>'.__('Module SimpleXML is installed', 'system').'</li></span>';
|
echo '<li class="ok">'.__('Module SimpleXML is installed', 'system').'</li>';
|
||||||
} else {
|
} else {
|
||||||
echo '<span class="error"><li>'.__('SimpleXML module is required', 'system').'</li></span>';
|
echo '<li class="error">'.__('SimpleXML module is required', 'system').'</li>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (in_array('dom', $php_modules)) {
|
if (in_array('dom', $php_modules)) {
|
||||||
echo '<span class="ok"><li>'.__('Module DOM is installed', 'system').'</li></span>';
|
echo '<li class="ok">'.__('Module DOM is installed', 'system').'</li>';
|
||||||
} else {
|
} else {
|
||||||
echo '<span class="error"><li>'.__('Module DOM is required', 'system').'</li></span>';
|
echo '<li class="error">'.__('Module DOM is required', 'system').'</li>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (function_exists('apache_get_modules')) {
|
if (function_exists('apache_get_modules')) {
|
||||||
if ( ! in_array('mod_rewrite',apache_get_modules())) {
|
if ( ! in_array('mod_rewrite',apache_get_modules())) {
|
||||||
echo '<span class="error"><li>'.__('Apache Mod Rewrite is required', 'system').'</li></span>';
|
echo '<li class="error">'.__('Apache Mod Rewrite is required', 'system').'</li>';
|
||||||
} else {
|
} else {
|
||||||
echo '<span class="ok"><li>'.__('Module Mod Rewrite is installed', 'system').'</li></span>';
|
echo '<li class="ok">'.__('Module Mod Rewrite is installed', 'system').'</li>';
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
echo '<span class="ok"><li>'.__('Module Mod Rewrite is installed', 'system').'</li></span>';
|
echo '<li class="ok">'.__('Module Mod Rewrite is installed', 'system').'</li>';
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($dir_array as $dir) {
|
foreach ($dir_array as $dir) {
|
||||||
if (is_writable($dir.'/')) {
|
if (is_writable($dir.'/')) {
|
||||||
echo '<span class="ok"><li>'.__('Directory: <b> :dir </b> writable', 'system', array(':dir' => $dir)).'</li></span>';
|
echo '<li class="ok">'.__('Directory: <b> :dir </b> writable', 'system', array(':dir' => $dir)).'</li>';
|
||||||
} else {
|
} else {
|
||||||
echo '<span class="error"><li>'.__('Directory: <b> :dir </b> not writable', 'system', array(':dir' => $dir)).'</li></span>';
|
echo '<li class="error">'.__('Directory: <b> :dir </b> not writable', 'system', array(':dir' => $dir)).'</li>';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_writable(__FILE__)) {
|
if (is_writable(__FILE__)) {
|
||||||
echo '<span class="ok"><li>'.__('Install script writable', 'system').'</li></span>';
|
echo '<li class="ok">'.__('Install script writable', 'system').'</li>';
|
||||||
} else {
|
} else {
|
||||||
echo '<span class="error"><li>'.__('Install script not writable', 'system').'</li></span>';
|
echo '<li class="error">'.__('Install script not writable', 'system').'</li>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_writable('sitemap.xml')) {
|
if (is_writable('sitemap.xml')) {
|
||||||
echo '<span class="ok"><li>'.__('Sitemap file writable', 'system').'</li></span>';
|
echo '<li class="ok">'.__('Sitemap file writable', 'system').'</li>';
|
||||||
} else {
|
} else {
|
||||||
echo '<span class="error"><li>'.__('Sitemap file not writable', 'system').'</li></span>';
|
echo '<li class="error">'.__('Sitemap file not writable', 'system').'</li>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_writable('.htaccess')) {
|
if (is_writable('.htaccess')) {
|
||||||
echo '<span class="ok"><li>'.__('Main .htaccess file writable', 'system').'</li></span>';
|
echo '<li class="ok">'.__('Main .htaccess file writable', 'system').'</li>';
|
||||||
} else {
|
} else {
|
||||||
echo '<span class="error"><li>'.__('Main .htaccess file not writable', 'system').'</li></span>';
|
echo '<li class="error">'.__('Main .htaccess file not writable', 'system').'</li>';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($errors['sitename'])) echo '<span class="error"><li>'.$errors['sitename'].'</li></span>';
|
if (isset($errors['sitename'])) echo '<li class="error">'.$errors['sitename'].'</li>';
|
||||||
if (isset($errors['siteurl'])) echo '<span class="error"><li>'.$errors['siteurl'].'</li></span>';
|
if (isset($errors['siteurl'])) echo '<li class="error">'.$errors['siteurl'].'</li>';
|
||||||
if (isset($errors['login'])) echo '<span class="error"><li>'.$errors['login'].'</li></span>';
|
if (isset($errors['login'])) echo '<li class="error">'.$errors['login'].'</li>';
|
||||||
if (isset($errors['password'])) echo '<span class="error"><li>'.$errors['password'].'</li></span>';
|
if (isset($errors['password'])) echo '<li class="error">'.$errors['password'].'</li>';
|
||||||
if (isset($errors['email'])) echo '<span class="error"><li>'.$errors['email'].'</li></span>';
|
if (isset($errors['email'])) echo '<li class="error">'.$errors['email'].'</li>';
|
||||||
if (isset($errors['email_valid'])) echo '<span class="error"><li>'.$errors['email_valid'].'</li></span>';
|
if (isset($errors['email_valid'])) echo '<li class="error">'.$errors['email_valid'].'</li>';
|
||||||
?>
|
?>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="install-block-footer">
|
<div class="install-block-footer">
|
||||||
<div style="text-align:center">
|
<div style="text-align:center;">
|
||||||
<span class="small-grey-text">© 2012 - 2013 <a href="http://monstra.org" class="small-grey-text" target="_blank">Monstra</a> – <?php echo __('Version', 'system'); ?> <?php echo Monstra::VERSION; ?></span>
|
<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>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<script type="text/javascript">
|
||||||
|
$('.language-link').tooltip();
|
||||||
|
</script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
@@ -22,14 +22,14 @@ class Cache
|
|||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public static $cache_dir = '';
|
protected static $cache_dir = '';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cache file ext
|
* Cache file ext
|
||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public static $cache_file_ext = 'txt';
|
protected static $cache_file_ext = 'txt';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cache life time (in seconds)
|
* Cache life time (in seconds)
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
@@ -58,7 +58,7 @@ class ClassLoader
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Add class to mapping.
|
* Add class to mapping.
|
||||||
*
|
*
|
||||||
* <code>
|
* <code>
|
||||||
* ClassLoader::mapClass('ClassName', 'path/to/class');
|
* ClassLoader::mapClass('ClassName', 'path/to/class');
|
||||||
* </code>
|
* </code>
|
||||||
@@ -74,7 +74,7 @@ class ClassLoader
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Add multiple classes to mapping.
|
* Add multiple classes to mapping.
|
||||||
*
|
*
|
||||||
* <code>
|
* <code>
|
||||||
* ClassLoader::mapClasses(array('ClassName' => 'path/to/class','ClassName' => 'path/to/class'));
|
* ClassLoader::mapClasses(array('ClassName' => 'path/to/class','ClassName' => 'path/to/class'));
|
||||||
* </code>
|
* </code>
|
||||||
@@ -91,7 +91,7 @@ class ClassLoader
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a PSR-0 directory path.
|
* Adds a PSR-0 directory path.
|
||||||
*
|
*
|
||||||
* <code>
|
* <code>
|
||||||
* ClassLoader::directory('path/to/classes');
|
* ClassLoader::directory('path/to/classes');
|
||||||
* </code>
|
* </code>
|
||||||
@@ -106,7 +106,7 @@ class ClassLoader
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers a namespace.
|
* Registers a namespace.
|
||||||
*
|
*
|
||||||
* <code>
|
* <code>
|
||||||
* ClassLoader::registerNamespace('Namespace', '/path/to/namespace/');
|
* ClassLoader::registerNamespace('Namespace', '/path/to/namespace/');
|
||||||
* </code>
|
* </code>
|
||||||
@@ -122,9 +122,9 @@ class ClassLoader
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Set an alias for a class.
|
* Set an alias for a class.
|
||||||
*
|
*
|
||||||
* <code>
|
* <code>
|
||||||
* ClassLoader::registerNamespace('ClassNameAlias', 'ClassName');
|
* ClassLoader::alias('ClassNameAlias', 'ClassName');
|
||||||
* </code>
|
* </code>
|
||||||
*
|
*
|
||||||
* @access public
|
* @access public
|
||||||
@@ -171,7 +171,7 @@ class ClassLoader
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Autoloader.
|
* Autoloader.
|
||||||
*
|
*
|
||||||
* <code>
|
* <code>
|
||||||
* ClassLoader::load();
|
* ClassLoader::load();
|
||||||
* </code>
|
* </code>
|
||||||
@@ -222,4 +222,15 @@ class ClassLoader
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register the Gelato ClassLoader to the SPL autoload stack.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function register()
|
||||||
|
{
|
||||||
|
spl_autoload_register('ClassLoader::load', true);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
@@ -18,6 +18,25 @@
|
|||||||
class ErrorHandler
|
class ErrorHandler
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Error Levels
|
||||||
|
*/
|
||||||
|
public static $levels = array (
|
||||||
|
E_ERROR => 'Fatal Error',
|
||||||
|
E_PARSE => 'Parse Error',
|
||||||
|
E_COMPILE_ERROR => 'Compile Error',
|
||||||
|
E_COMPILE_WARNING => 'Compile Warning',
|
||||||
|
E_STRICT => 'Strict Mode Error',
|
||||||
|
E_NOTICE => 'Notice',
|
||||||
|
E_WARNING => 'Warning',
|
||||||
|
E_RECOVERABLE_ERROR => 'Recoverable Error',
|
||||||
|
E_USER_NOTICE => 'Notice',
|
||||||
|
E_USER_WARNING => 'Warning',
|
||||||
|
E_USER_ERROR => 'Error',
|
||||||
|
/*E_DEPRECATED => 'Deprecated',*/ /* PHP 5.3 only */
|
||||||
|
/*E_USER_DEPRECATED => 'Deprecated'*/ /* PHP 5.3 only */
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Protected constructor since this is a static class.
|
* Protected constructor since this is a static class.
|
||||||
*
|
*
|
||||||
@@ -80,11 +99,35 @@ class ErrorHandler
|
|||||||
* @param integer $line The line number where the error occurred
|
* @param integer $line The line number where the error occurred
|
||||||
* @return boolean
|
* @return boolean
|
||||||
*/
|
*/
|
||||||
public static function errorHandler($code, $message, $file, $line)
|
public static function error($code, $message, $file, $line)
|
||||||
{
|
{
|
||||||
// If isset error_reporting and $code then throw new error exception
|
// If isset error_reporting and $code then throw new error exception
|
||||||
if ((error_reporting() & $code) !== 0) {
|
if ((error_reporting() & $code) !== 0) {
|
||||||
throw new ErrorException($message, $code, 0, $file, $line);
|
|
||||||
|
/**
|
||||||
|
* Dont thow NOTICE exception for PRODUCTION Environment. Just write to log.
|
||||||
|
*/
|
||||||
|
if (GELATO_DEVELOPMENT == false && $code == 8) {
|
||||||
|
|
||||||
|
// Get exception info
|
||||||
|
$error['code'] = $code;
|
||||||
|
$error['message'] = $message;
|
||||||
|
$error['file'] = $file;
|
||||||
|
$error['line'] = $line;
|
||||||
|
$error['type'] = 'ErrorException: ';
|
||||||
|
|
||||||
|
$codes = array (
|
||||||
|
E_USER_NOTICE => 'Notice',
|
||||||
|
);
|
||||||
|
|
||||||
|
$error['type'] .= in_array($error['code'], array_keys($codes)) ? $codes[$error['code']] : 'Unknown Error';
|
||||||
|
|
||||||
|
// Write to log
|
||||||
|
Log::write("{$error['type']}: {$error['message']} in {$error['file']} at line {$error['line']}");
|
||||||
|
|
||||||
|
} else {
|
||||||
|
throw new ErrorException($message, $code, 0, $file, $line);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Don't execute PHP internal error handler
|
// Don't execute PHP internal error handler
|
||||||
@@ -170,7 +213,7 @@ class ErrorHandler
|
|||||||
if (isset($entry['file'])) {
|
if (isset($entry['file'])) {
|
||||||
$location['file'] = $entry['file'];
|
$location['file'] = $entry['file'];
|
||||||
$location['line'] = $entry['line'];
|
$location['line'] = $entry['line'];
|
||||||
$location['code'] = static::highlightCode($entry['file'], $entry['line']);
|
$location['code'] = self::highlightCode($entry['file'], $entry['line']);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -188,9 +231,9 @@ class ErrorHandler
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert errors not caught by the errorHandler to ErrorExceptions.
|
* Convert errors not caught by the error handler to ErrorExceptions.
|
||||||
*/
|
*/
|
||||||
public static function fatalErrorHandler()
|
public static function fatal()
|
||||||
{
|
{
|
||||||
$e = error_get_last();
|
$e = error_get_last();
|
||||||
|
|
||||||
@@ -210,70 +253,54 @@ class ErrorHandler
|
|||||||
public static function exception($exception)
|
public static function exception($exception)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
// Empty output buffers
|
|
||||||
|
|
||||||
|
// Empty output buffers
|
||||||
while(ob_get_level() > 0) ob_end_clean();
|
while(ob_get_level() > 0) ob_end_clean();
|
||||||
|
|
||||||
// Get exception info
|
// Get exception info
|
||||||
|
|
||||||
$error['code'] = $exception->getCode();
|
$error['code'] = $exception->getCode();
|
||||||
$error['message'] = $exception->getMessage();
|
$error['message'] = $exception->getMessage();
|
||||||
$error['file'] = $exception->getFile();
|
$error['file'] = $exception->getFile();
|
||||||
$error['line'] = $exception->getLine();
|
$error['line'] = $exception->getLine();
|
||||||
|
|
||||||
// Determine error type
|
// Determine error type
|
||||||
|
|
||||||
if ($exception instanceof ErrorException) {
|
if ($exception instanceof ErrorException) {
|
||||||
$error['type'] = 'ErrorException: ';
|
$error['type'] = 'ErrorException: ';
|
||||||
|
$error['type'] .= in_array($error['code'], array_keys(ErrorHandler::$levels)) ? ErrorHandler::$levels[$error['code']] : 'Unknown Error';
|
||||||
$codes = array
|
|
||||||
(
|
|
||||||
E_ERROR => 'Fatal Error',
|
|
||||||
E_PARSE => 'Parse Error',
|
|
||||||
E_COMPILE_ERROR => 'Compile Error',
|
|
||||||
E_COMPILE_WARNING => 'Compile Warning',
|
|
||||||
E_STRICT => 'Strict Mode Error',
|
|
||||||
E_NOTICE => 'Notice',
|
|
||||||
E_WARNING => 'Warning',
|
|
||||||
E_RECOVERABLE_ERROR => 'Recoverable Error',
|
|
||||||
/*E_DEPRECATED => 'Deprecated',*/
|
|
||||||
E_USER_NOTICE => 'Notice',
|
|
||||||
E_USER_WARNING => 'Warning',
|
|
||||||
E_USER_ERROR => 'Error',
|
|
||||||
/*E_USER_DEPRECATED => 'Deprecated'*/
|
|
||||||
);
|
|
||||||
|
|
||||||
$error['type'] .= in_array($error['code'], array_keys($codes)) ? $codes[$error['code']] : 'Unknown Error';
|
|
||||||
} else {
|
} else {
|
||||||
$error['type'] = get_class($exception);
|
$error['type'] = get_class($exception);
|
||||||
}
|
}
|
||||||
|
|
||||||
// @todo Write to error log
|
// Write to log
|
||||||
|
Log::write("{$error['type']}: {$error['message']} in {$error['file']} at line {$error['line']}");
|
||||||
/*if () {
|
|
||||||
Write here
|
|
||||||
}*/
|
|
||||||
|
|
||||||
// Send headers and output
|
// Send headers and output
|
||||||
@header('Content-Type: text/html; charset=UTF-8');
|
@header('Content-Type: text/html; charset=UTF-8');
|
||||||
|
|
||||||
if (GELATO_DISPLAY_ERRORS) {
|
if (GELATO_DEVELOPMENT) {
|
||||||
|
|
||||||
$error['backtrace'] = $exception->getTrace();
|
$error['backtrace'] = $exception->getTrace();
|
||||||
|
|
||||||
if ($exception instanceof ErrorException) {
|
if ($exception instanceof ErrorException) {
|
||||||
$error['backtrace'] = array_slice($error['backtrace'], 1); //Remove call to error handler from backtrace
|
$error['backtrace'] = array_slice($error['backtrace'], 1); //Remove call to error handler from backtrace
|
||||||
}
|
}
|
||||||
|
|
||||||
$error['backtrace'] = static::formatBacktrace($error['backtrace']);
|
$error['backtrace'] = self::formatBacktrace($error['backtrace']);
|
||||||
$error['highlighted'] = static::highlightCode($error['file'], $error['line']);
|
$error['highlighted'] = self::highlightCode($error['file'], $error['line']);
|
||||||
|
|
||||||
Response::status(500);
|
@header('HTTP/1.1 500 Internal Server Error');
|
||||||
include 'Resources/Views/Errors/exception.php';
|
include 'Resources/Views/Errors/exception.php';
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
Response::status(500);
|
|
||||||
|
@header('HTTP/1.1 500 Internal Server Error');
|
||||||
include 'Resources/Views/Errors/production.php';
|
include 'Resources/Views/Errors/production.php';
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
|
|
||||||
|
// Empty output buffers
|
||||||
while(ob_get_level() > 0) ob_end_clean();
|
while(ob_get_level() > 0) ob_end_clean();
|
||||||
|
|
||||||
echo $e->getMessage() . ' in ' . $e->getFile() . ' (line ' . $e->getLine() . ').';
|
echo $e->getMessage() . ' in ' . $e->getFile() . ' (line ' . $e->getLine() . ').';
|
||||||
|
@@ -11,6 +11,16 @@
|
|||||||
font-size:14px;
|
font-size:14px;
|
||||||
font-family:Verdana, Arial, Helvetica, "Nimbus Sans", FreeSans, Malayalam, sans-serif;
|
font-family:Verdana, Arial, Helvetica, "Nimbus Sans", FreeSans, Malayalam, sans-serif;
|
||||||
margin:20px auto;
|
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 {
|
#gelato-error pre {
|
||||||
@@ -31,6 +41,13 @@
|
|||||||
font-size:24px;
|
font-size:24px;
|
||||||
font-weight:700;
|
font-weight:700;
|
||||||
padding:10px;
|
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 {
|
#gelato-error .body {
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
@@ -18,22 +18,46 @@
|
|||||||
/**
|
/**
|
||||||
* The version of Gelato
|
* The version of Gelato
|
||||||
*/
|
*/
|
||||||
define('GELATO_VERSION', '1.0.0');
|
define('GELATO_VERSION', '1.0.3');
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Define __DIR__ constant for PHP 5.2.x
|
||||||
|
*/
|
||||||
|
if ( ! defined('__DIR__')) {
|
||||||
|
define('__DIR__', dirname(__FILE__));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Display Gelato Errors or not ?
|
* Display Gelato Errors or not ?
|
||||||
*/
|
*/
|
||||||
if ( ! defined('GELATO_DISPLAY_ERRORS')) {
|
if ( ! defined('GELATO_DEVELOPMENT')) {
|
||||||
define('GELATO_DISPLAY_ERRORS', true);
|
define('GELATO_DEVELOPMENT', true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Display Gelato Autoloader or not ?
|
* Use Gelato Class Loader or not ?
|
||||||
*/
|
*/
|
||||||
if ( ! defined('GELATO_AUTOLOADER')) {
|
if ( ! defined('GELATO_CLASS_LOADER')) {
|
||||||
define('GELATO_AUTOLOADER', true);
|
define('GELATO_CLASS_LOADER', true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Load Gelato Logger
|
||||||
|
*/
|
||||||
|
require_once __DIR__ . '/Log/Log.php';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Use Gelato Logger default path or not ?
|
||||||
|
*/
|
||||||
|
if ( ! defined('GELATO_LOGS_PATH')) {
|
||||||
|
define('GELATO_LOGS_PATH', __DIR__. '/_logs');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure Gelato Logger
|
||||||
|
*/
|
||||||
|
Log::configure('path', GELATO_LOGS_PATH);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load Gelato Error Handler
|
* Load Gelato Error Handler
|
||||||
*/
|
*/
|
||||||
@@ -42,12 +66,12 @@ require_once __DIR__ . '/ErrorHandler/ErrorHandler.php';
|
|||||||
/**
|
/**
|
||||||
* Set Error Handler
|
* Set Error Handler
|
||||||
*/
|
*/
|
||||||
set_error_handler('ErrorHandler::errorHandler');
|
set_error_handler('ErrorHandler::error');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set Fatal Error Handler
|
* Set Fatal Error Handler
|
||||||
*/
|
*/
|
||||||
register_shutdown_function('ErrorHandler::fatalErrorHandler');
|
register_shutdown_function('ErrorHandler::fatal');
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set Exception Handler
|
* Set Exception Handler
|
||||||
@@ -76,7 +100,9 @@ ClassLoader::mapClasses(array(
|
|||||||
'Html' => __DIR__.'/Html/Html.php',
|
'Html' => __DIR__.'/Html/Html.php',
|
||||||
'Image' => __DIR__.'/Image/Image.php',
|
'Image' => __DIR__.'/Image/Image.php',
|
||||||
'Inflector' => __DIR__.'/Inflector/Inflector.php',
|
'Inflector' => __DIR__.'/Inflector/Inflector.php',
|
||||||
'Minify' => __DIR__.'/Minify/Minify.php',
|
'MinifyCSS' => __DIR__.'/Minify/MinifyCSS.php',
|
||||||
|
'MinifyHTML' => __DIR__.'/Minify/MinifyHTML.php',
|
||||||
|
'MinifyJS' => __DIR__.'/Minify/MinifyJS.php',
|
||||||
'Notification' => __DIR__.'/Notification/Notification.php',
|
'Notification' => __DIR__.'/Notification/Notification.php',
|
||||||
'Number' => __DIR__.'/Number/Number.php',
|
'Number' => __DIR__.'/Number/Number.php',
|
||||||
'Registry' => __DIR__.'/Registry/Registry.php',
|
'Registry' => __DIR__.'/Registry/Registry.php',
|
||||||
@@ -91,8 +117,8 @@ ClassLoader::mapClasses(array(
|
|||||||
));
|
));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register Gelato Autoloader
|
* Register Gelato Class Loader
|
||||||
*/
|
*/
|
||||||
if (GELATO_AUTOLOADER) {
|
if (GELATO_CLASS_LOADER) {
|
||||||
spl_autoload_register('ClassLoader::load');
|
ClassLoader::register();
|
||||||
}
|
}
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
@@ -28,6 +28,13 @@ class Html
|
|||||||
'accept', 'tabindex', 'accesskey', 'alt', 'title', 'class',
|
'accept', 'tabindex', 'accesskey', 'alt', 'title', 'class',
|
||||||
'style', 'selected', 'checked', 'readonly', 'disabled',
|
'style', 'selected', 'checked', 'readonly', 'disabled',
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The registered custom macros.
|
||||||
|
*
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
public static $macros = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Protected constructor since this is a static class.
|
* Protected constructor since this is a static class.
|
||||||
@@ -279,7 +286,56 @@ class Html
|
|||||||
$attributes['alt'] = (isset($attributes['alt'])) ? $attributes['alt'] : pathinfo($file, PATHINFO_FILENAME);
|
$attributes['alt'] = (isset($attributes['alt'])) ? $attributes['alt'] : pathinfo($file, PATHINFO_FILENAME);
|
||||||
|
|
||||||
return '<img'.Html::attributes($attributes).' />';
|
return '<img'.Html::attributes($attributes).' />';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Obfuscate an e-mail address to prevent spam-bots from sniffing it.
|
||||||
|
*
|
||||||
|
* <code>
|
||||||
|
* echo Html::email('gelato@monstra.org');
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $email
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function email($email)
|
||||||
|
{
|
||||||
|
return str_replace('@', '@', Html::obfuscate($email));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Obfuscate a string to prevent spam-bots from sniffing it.
|
||||||
|
*
|
||||||
|
* This method obfuscate the value, randomly convert each
|
||||||
|
* letter to its entity or hexadecimal representation, keeping a
|
||||||
|
* bot from sniffing the randomly obfuscated letters.
|
||||||
|
*
|
||||||
|
* <code>
|
||||||
|
* echo Html::obfuscate('gelato@monstra.org');
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $value
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function obfuscate($value)
|
||||||
|
{
|
||||||
|
$safe = '';
|
||||||
|
|
||||||
|
foreach (str_split($value) as $letter) {
|
||||||
|
switch (rand(1, 3)) {
|
||||||
|
case 1:
|
||||||
|
$safe .= '&#'.ord($letter).';';
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
$safe .= '&#x'.dechex(ord($letter)).';';
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
$safe .= $letter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $safe;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert html to plain text
|
* Convert html to plain text
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
@@ -173,9 +173,10 @@ class Image
|
|||||||
public function resize($width, $height = null, $aspect_ratio = null)
|
public function resize($width, $height = null, $aspect_ratio = null)
|
||||||
{
|
{
|
||||||
// Redefine vars
|
// Redefine vars
|
||||||
$width = (int) $width;
|
$width = (int) $width;
|
||||||
$height = ($height === null) ? null : (int) $height;
|
$height = ($height === null) ? null : (int) $height;
|
||||||
$aspect_ratio = ($aspect_ratio === null) ? null : (int) $aspect_ratio;
|
$aspect_ratio = ($aspect_ratio === null) ? null : (int) $aspect_ratio;
|
||||||
|
$xpos = $ypos = 0;
|
||||||
|
|
||||||
// Resizes the image to {$width}% of the original size
|
// Resizes the image to {$width}% of the original size
|
||||||
if ($height === null) {
|
if ($height === null) {
|
||||||
@@ -186,13 +187,18 @@ class Image
|
|||||||
} else {
|
} else {
|
||||||
|
|
||||||
// Resizes the image to the smalles possible dimension while maintaining aspect ratio
|
// Resizes the image to the smalles possible dimension while maintaining aspect ratio
|
||||||
if ($aspect_ratio === Image::AUTO) {
|
if ($aspect_ratio === Image::AUTO || $aspect_ratio === null) {
|
||||||
|
|
||||||
// Calculate smallest size based on given height and width while maintaining aspect ratio
|
// Calculate smallest size based on given height and width while maintaining aspect ratio
|
||||||
$percentage = min(($width / $this->width), ($height / $this->height));
|
$percentage = min(($width / $this->width), ($height / $this->height));
|
||||||
|
|
||||||
$new_width = round($this->width * $percentage);
|
$new_width = round($this->width * $percentage);
|
||||||
$new_height = round($this->height * $percentage);
|
$new_height = round($this->height * $percentage);
|
||||||
|
|
||||||
|
if ($aspect_ratio === null) {
|
||||||
|
$xpos = (int)(($width - $new_width) / 2);
|
||||||
|
$ypos = (int)(($height - $new_height) / 2);
|
||||||
|
}
|
||||||
|
|
||||||
// Resizes the image using the width to maintain aspect ratio
|
// Resizes the image using the width to maintain aspect ratio
|
||||||
} elseif ($aspect_ratio === Image::WIDTH) {
|
} elseif ($aspect_ratio === Image::WIDTH) {
|
||||||
@@ -216,24 +222,28 @@ class Image
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a new true color image width new width and height
|
$old_image = $this->image;
|
||||||
$resized = imagecreatetruecolor($new_width, $new_height);
|
|
||||||
|
if ($aspect_ratio === null) {
|
||||||
|
$this->image = imagecreatetruecolor($width, $height);
|
||||||
|
} else {
|
||||||
|
$this->image = imagecreatetruecolor($new_width, $new_height);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->type === IMAGETYPE_PNG) {
|
||||||
|
$bgcolor = imagecolorallocatealpha($this->image, 0, 0, 0, 127);
|
||||||
|
} else {
|
||||||
|
$bgcolor = imagecolorallocate($this->image, 255, 255, 255);
|
||||||
|
}
|
||||||
|
|
||||||
|
imagefill($this->image, 0, 0, $bgcolor);
|
||||||
|
|
||||||
// Copy and resize part of an image with resampling
|
// Copy and resize part of an image with resampling
|
||||||
imagecopyresampled($resized, $this->image, 0, 0, 0, 0, $new_width, $new_height, $this->width, $this->height);
|
imagecopyresampled($this->image, $old_image, $xpos, $ypos, 0, 0, $new_width, $new_height, $this->width, $this->height);
|
||||||
|
|
||||||
// Destroy an image
|
// Destroy an image
|
||||||
imagedestroy($this->image);
|
imagedestroy($old_image);
|
||||||
|
|
||||||
// Create a new true color image width new width and height
|
|
||||||
$this->image = imagecreatetruecolor($new_width, $new_height);
|
|
||||||
|
|
||||||
// Copy and resize part of an image with resampling
|
|
||||||
imagecopyresampled($this->image, $resized, 0, 0, 0, 0, $new_width, $new_height, $new_width, $new_height);
|
|
||||||
|
|
||||||
// Destroy an image
|
|
||||||
imagedestroy($resized);
|
|
||||||
|
|
||||||
// Save new width and height
|
// Save new width and height
|
||||||
$this->width = $new_width;
|
$this->width = $new_width;
|
||||||
$this->height = $new_height;
|
$this->height = $new_height;
|
||||||
@@ -259,32 +269,28 @@ class Image
|
|||||||
// Redefine vars
|
// Redefine vars
|
||||||
$width = (int) $width;
|
$width = (int) $width;
|
||||||
$height = (int) $height;
|
$height = (int) $height;
|
||||||
$x = (int) $x;
|
$x = (int) $x;
|
||||||
$y = (int) $y;
|
$y = (int) $y;
|
||||||
|
|
||||||
// Calculate
|
// Calculate
|
||||||
if ($x + $width > $this->width) $width = $this->width - $x;
|
if ($x + $width > $this->width) $width = $this->width - $x;
|
||||||
if ($y + $height > $this->height) $height = $this->height - $y;
|
if ($y + $height > $this->height) $height = $this->height - $y;
|
||||||
if ($width <= 0 || $height <= 0) return false;
|
if ($width <= 0 || $height <= 0) return false;
|
||||||
|
|
||||||
// Create a new true color image
|
$old_image = $this->image;
|
||||||
$crop = imagecreatetruecolor($width, $height);
|
|
||||||
|
|
||||||
// Copy and resize part of an image with resampling
|
|
||||||
imagecopyresampled($crop, $this->image, 0, 0, $x, $y, $this->width, $this->height, $this->width, $this->height);
|
|
||||||
|
|
||||||
// Destroy an image
|
|
||||||
imagedestroy($this->image);
|
|
||||||
|
|
||||||
// Create a new true color image
|
// Create a new true color image
|
||||||
$this->image = imagecreatetruecolor($width, $height);
|
$this->image = imagecreatetruecolor($width, $height);
|
||||||
|
|
||||||
|
$transparent = imagecolorallocatealpha($this->image, 0, 0, 0, 127);
|
||||||
|
imagefill($this->image, 0, 0, $transparent);
|
||||||
|
|
||||||
// Copy and resize part of an image with resampling
|
// Copy and resize part of an image with resampling
|
||||||
imagecopyresampled($this->image, $crop, 0, 0, 0, 0, $width, $height, $width, $height);
|
imagecopyresampled($this->image, $old_image, 0, 0, $x, $y, $width, $height, $width, $height);
|
||||||
|
|
||||||
// Destroy an image
|
// Destroy an image
|
||||||
imagedestroy($crop);
|
imagedestroy($old_image);
|
||||||
|
|
||||||
// Save new width and height
|
// Save new width and height
|
||||||
$this->width = $width;
|
$this->width = $width;
|
||||||
$this->height = $height;
|
$this->height = $height;
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
63
libraries/Gelato/Log/Log.php
Normal file
63
libraries/Gelato/Log/Log.php
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gelato Library
|
||||||
|
*
|
||||||
|
* This source file is part of the Gelato Library. More information,
|
||||||
|
* documentation and tutorials can be found at http://gelato.monstra.org
|
||||||
|
*
|
||||||
|
* @package Gelato
|
||||||
|
*
|
||||||
|
* @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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class Log
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Path to the logs.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected static $path = '';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Protected constructor since this is a static class.
|
||||||
|
*
|
||||||
|
* @access protected
|
||||||
|
*/
|
||||||
|
protected function __construct()
|
||||||
|
{
|
||||||
|
// Nothing here
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure Log
|
||||||
|
*
|
||||||
|
* @access public
|
||||||
|
* @param string $setting The setting
|
||||||
|
* @param string $value The value
|
||||||
|
*/
|
||||||
|
public static function configure($setting, $value)
|
||||||
|
{
|
||||||
|
if (property_exists("log", $setting)) Log::$$setting = $value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Writes message to log.
|
||||||
|
*
|
||||||
|
* @access public
|
||||||
|
* @param string $message The message to write to the log
|
||||||
|
* @return boolean
|
||||||
|
*/
|
||||||
|
public static function write($message)
|
||||||
|
{
|
||||||
|
return (bool) file_put_contents(rtrim(Log::$path, '/') . '/' . gmdate('Y_m_d') . '.log',
|
||||||
|
'[' . gmdate('d-M-Y H:i:s') . '] ' . $message . PHP_EOL,
|
||||||
|
FILE_APPEND);
|
||||||
|
}
|
||||||
|
}
|
@@ -1,93 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gelato Library
|
|
||||||
*
|
|
||||||
* This source file is part of the Gelato Library. More information,
|
|
||||||
* documentation and tutorials can be found at http://gelato.monstra.org
|
|
||||||
*
|
|
||||||
* @package Gelato
|
|
||||||
*
|
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
|
||||||
* @copyright 2012-2013 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.
|
|
||||||
*/
|
|
||||||
|
|
||||||
class Minify
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* Protected constructor since this is a static class.
|
|
||||||
*
|
|
||||||
* @access protected
|
|
||||||
*/
|
|
||||||
protected function __construct()
|
|
||||||
{
|
|
||||||
// Nothing here
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Minify html
|
|
||||||
*
|
|
||||||
* <code>
|
|
||||||
* echo Minify::html($buffer);
|
|
||||||
* </code>
|
|
||||||
*
|
|
||||||
* @param string $buffer html
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public static function html($buffer)
|
|
||||||
{
|
|
||||||
return preg_replace('/^\\s+|\\s+$/m', '', $buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Minify css
|
|
||||||
*
|
|
||||||
* <code>
|
|
||||||
* echo Minify::css($buffer);
|
|
||||||
* </code>
|
|
||||||
*
|
|
||||||
* @param string $buffer css
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public static function css($buffer)
|
|
||||||
{
|
|
||||||
// Remove comments
|
|
||||||
$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
|
|
||||||
|
|
||||||
// Remove tabs, spaces, newlines, etc.
|
|
||||||
$buffer = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), '', $buffer);
|
|
||||||
|
|
||||||
// Preserve empty comment after '>' http://www.webdevout.net/css-hacks#in_css-selectors
|
|
||||||
$buffer = preg_replace('@>/\\*\\s*\\*/@', '>/*keep*/', $buffer);
|
|
||||||
|
|
||||||
// Preserve empty comment between property and value
|
|
||||||
// http://css-discuss.incutio.com/?page=BoxModelHack
|
|
||||||
$buffer = preg_replace('@/\\*\\s*\\*/\\s*:@', '/*keep*/:', $buffer);
|
|
||||||
$buffer = preg_replace('@:\\s*/\\*\\s*\\*/@', ':/*keep*/', $buffer);
|
|
||||||
|
|
||||||
// Remove ws around { } and last semicolon in declaration block
|
|
||||||
$buffer = preg_replace('/\\s*{\\s*/', '{', $buffer);
|
|
||||||
$buffer = preg_replace('/;?\\s*}\\s*/', '}', $buffer);
|
|
||||||
|
|
||||||
// Remove ws surrounding semicolons
|
|
||||||
$buffer = preg_replace('/\\s*;\\s*/', ';', $buffer);
|
|
||||||
|
|
||||||
// Remove ws around urls
|
|
||||||
$buffer = preg_replace('/url\\(\\s*([^\\)]+?)\\s*\\)/x', 'url($1)', $buffer);
|
|
||||||
|
|
||||||
// Remove ws between rules and colons
|
|
||||||
$buffer = preg_replace('/\\s*([{;])\\s*([\\*_]?[\\w\\-]+)\\s*:\\s*(\\b|[#\'"])/x', '$1$2:$3', $buffer);
|
|
||||||
|
|
||||||
// Minimize hex colors
|
|
||||||
$buffer = preg_replace('/([^=])#([a-f\\d])\\2([a-f\\d])\\3([a-f\\d])\\4([\\s;\\}])/i', '$1#$2$3$4$5', $buffer);
|
|
||||||
|
|
||||||
// Replace any ws involving newlines with a single newline
|
|
||||||
$buffer = preg_replace('/[ \\t]*\\n+\\s*/', "\n", $buffer);
|
|
||||||
|
|
||||||
return $buffer;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
255
libraries/Gelato/Minify/MinifyCSS.php
Normal file
255
libraries/Gelato/Minify/MinifyCSS.php
Normal file
@@ -0,0 +1,255 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gelato Library
|
||||||
|
*
|
||||||
|
* This source file is part of the Gelato Library. More information,
|
||||||
|
* documentation and tutorials can be found at http://gelato.monstra.org
|
||||||
|
*
|
||||||
|
* @package Gelato
|
||||||
|
*
|
||||||
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
|
* @author Stephen Clay <steve@mrclay.org>
|
||||||
|
* @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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class MinifyCSS
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
*/
|
||||||
|
protected $_options = null;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Are we "in" a hack? I.e. are some browsers targetted until the next comment?
|
||||||
|
*
|
||||||
|
* @var bool
|
||||||
|
*/
|
||||||
|
protected $_inHack = false;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor
|
||||||
|
*
|
||||||
|
* @param array $options (currently ignored)
|
||||||
|
*/
|
||||||
|
private function __construct($options)
|
||||||
|
{
|
||||||
|
$this->_options = $options;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Minify a CSS string
|
||||||
|
*
|
||||||
|
* @param string $css
|
||||||
|
*
|
||||||
|
* @param array $options (currently ignored)
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function process($css, $options = array())
|
||||||
|
{
|
||||||
|
$obj = new MinifyCSS($options);
|
||||||
|
|
||||||
|
return $obj->_process($css);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Minify a CSS string
|
||||||
|
*
|
||||||
|
* @param string $css
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
protected function _process($css)
|
||||||
|
{
|
||||||
|
$css = str_replace("\r\n", "\n", $css);
|
||||||
|
|
||||||
|
// preserve empty comment after '>'
|
||||||
|
// http://www.webdevout.net/css-hacks#in_css-selectors
|
||||||
|
$css = preg_replace('@>/\\*\\s*\\*/@', '>/*keep*/', $css);
|
||||||
|
|
||||||
|
// preserve empty comment between property and value
|
||||||
|
// http://css-discuss.incutio.com/?page=BoxModelHack
|
||||||
|
$css = preg_replace('@/\\*\\s*\\*/\\s*:@', '/*keep*/:', $css);
|
||||||
|
$css = preg_replace('@:\\s*/\\*\\s*\\*/@', ':/*keep*/', $css);
|
||||||
|
|
||||||
|
// apply callback to all valid comments (and strip out surrounding ws
|
||||||
|
$css = preg_replace_callback('@\\s*/\\*([\\s\\S]*?)\\*/\\s*@'
|
||||||
|
,array($this, '_commentCB'), $css);
|
||||||
|
|
||||||
|
// remove ws around { } and last semicolon in declaration block
|
||||||
|
$css = preg_replace('/\\s*{\\s*/', '{', $css);
|
||||||
|
$css = preg_replace('/;?\\s*}\\s*/', '}', $css);
|
||||||
|
|
||||||
|
// remove ws surrounding semicolons
|
||||||
|
$css = preg_replace('/\\s*;\\s*/', ';', $css);
|
||||||
|
|
||||||
|
// remove ws around urls
|
||||||
|
$css = preg_replace('/
|
||||||
|
url\\( # url(
|
||||||
|
\\s*
|
||||||
|
([^\\)]+?) # 1 = the URL (really just a bunch of non right parenthesis)
|
||||||
|
\\s*
|
||||||
|
\\) # )
|
||||||
|
/x', 'url($1)', $css);
|
||||||
|
|
||||||
|
// remove ws between rules and colons
|
||||||
|
$css = preg_replace('/
|
||||||
|
\\s*
|
||||||
|
([{;]) # 1 = beginning of block or rule separator
|
||||||
|
\\s*
|
||||||
|
([\\*_]?[\\w\\-]+) # 2 = property (and maybe IE filter)
|
||||||
|
\\s*
|
||||||
|
:
|
||||||
|
\\s*
|
||||||
|
(\\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);
|
||||||
|
|
||||||
|
// remove spaces between font families
|
||||||
|
$css = preg_replace_callback('/font-family:([^;}]+)([;}])/'
|
||||||
|
,array($this, '_fontFamilyCB'), $css);
|
||||||
|
|
||||||
|
$css = preg_replace('/@import\\s+url/', '@import url', $css);
|
||||||
|
|
||||||
|
// replace any ws involving newlines with a single newline
|
||||||
|
$css = preg_replace('/[ \\t]*\\n+\\s*/', "\n", $css);
|
||||||
|
|
||||||
|
// separate common descendent selectors w/ newlines (to limit line lengths)
|
||||||
|
$css = preg_replace('/([\\w#\\.\\*]+)\\s+([\\w#\\.\\*]+){/', "$1\n$2{", $css);
|
||||||
|
|
||||||
|
// Use newline after 1st numeric value (to limit line lengths).
|
||||||
|
$css = preg_replace('/
|
||||||
|
((?:padding|margin|border|outline):\\d+(?:px|em)?) # 1 = prop : 1st numeric value
|
||||||
|
\\s+
|
||||||
|
/x'
|
||||||
|
,"$1\n", $css);
|
||||||
|
|
||||||
|
// prevent triggering IE6 bug: http://www.crankygeek.com/ie6pebug/
|
||||||
|
$css = preg_replace('/:first-l(etter|ine)\\{/', ':first-l$1 {', $css);
|
||||||
|
|
||||||
|
return trim($css);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Replace what looks like a set of selectors
|
||||||
|
*
|
||||||
|
* @param array $m regex matches
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
protected function _selectorsCB($m)
|
||||||
|
{
|
||||||
|
// remove ws around the combinators
|
||||||
|
return preg_replace('/\\s*([,>+~])\\s*/', '$1', $m[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Process a comment and return a replacement
|
||||||
|
*
|
||||||
|
* @param array $m regex matches
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
protected function _commentCB($m)
|
||||||
|
{
|
||||||
|
$hasSurroundingWs = (trim($m[0]) !== $m[1]);
|
||||||
|
$m = $m[1];
|
||||||
|
// $m is the comment content w/o the surrounding tokens,
|
||||||
|
// but the return value will replace the entire comment.
|
||||||
|
if ($m === 'keep') {
|
||||||
|
return '/**/';
|
||||||
|
}
|
||||||
|
if ($m === '" "') {
|
||||||
|
// component of http://tantek.com/CSS/Examples/midpass.html
|
||||||
|
return '/*" "*/';
|
||||||
|
}
|
||||||
|
if (preg_match('@";\\}\\s*\\}/\\*\\s+@', $m)) {
|
||||||
|
// component of http://tantek.com/CSS/Examples/midpass.html
|
||||||
|
return '/*";}}/* */';
|
||||||
|
}
|
||||||
|
if ($this->_inHack) {
|
||||||
|
// inversion: feeding only to one browser
|
||||||
|
if (preg_match('@
|
||||||
|
^/ # comment started like /*/
|
||||||
|
\\s*
|
||||||
|
(\\S[\\s\\S]+?) # has at least some non-ws content
|
||||||
|
\\s*
|
||||||
|
/\\* # ends like /*/ or /**/
|
||||||
|
@x', $m, $n)) {
|
||||||
|
// end hack mode after this comment, but preserve the hack and comment content
|
||||||
|
$this->_inHack = false;
|
||||||
|
|
||||||
|
return "/*/{$n[1]}/**/";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (substr($m, -1) === '\\') { // comment ends like \*/
|
||||||
|
// begin hack mode and preserve hack
|
||||||
|
$this->_inHack = true;
|
||||||
|
|
||||||
|
return '/*\\*/';
|
||||||
|
}
|
||||||
|
if ($m !== '' && $m[0] === '/') { // comment looks like /*/ foo */
|
||||||
|
// begin hack mode and preserve hack
|
||||||
|
$this->_inHack = true;
|
||||||
|
|
||||||
|
return '/*/*/';
|
||||||
|
}
|
||||||
|
if ($this->_inHack) {
|
||||||
|
// a regular comment ends hack mode but should be preserved
|
||||||
|
$this->_inHack = false;
|
||||||
|
|
||||||
|
return '/**/';
|
||||||
|
}
|
||||||
|
// Issue 107: if there's any surrounding whitespace, it may be important, so
|
||||||
|
// replace the comment with a single space
|
||||||
|
return $hasSurroundingWs // remove all other comments
|
||||||
|
? ' '
|
||||||
|
: '';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Process a font-family listing and return a replacement
|
||||||
|
*
|
||||||
|
* @param array $m regex matches
|
||||||
|
*
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
protected function _fontFamilyCB($m)
|
||||||
|
{
|
||||||
|
// Issue 210: must not eliminate WS between words in unquoted families
|
||||||
|
$pieces = preg_split('/(\'[^\']+\'|"[^"]+")/', $m[1], null, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
|
||||||
|
$out = 'font-family:';
|
||||||
|
while (null !== ($piece = array_shift($pieces))) {
|
||||||
|
if ($piece[0] !== '"' && $piece[0] !== "'") {
|
||||||
|
$piece = preg_replace('/\\s+/', ' ', $piece);
|
||||||
|
$piece = preg_replace('/\\s?,\\s?/', ',', $piece);
|
||||||
|
}
|
||||||
|
$out .= $piece;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $out . $m[2];
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
47
libraries/Gelato/Minify/MinifyHTML.php
Normal file
47
libraries/Gelato/Minify/MinifyHTML.php
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gelato Library
|
||||||
|
*
|
||||||
|
* This source file is part of the Gelato Library. More information,
|
||||||
|
* documentation and tutorials can be found at http://gelato.monstra.org
|
||||||
|
*
|
||||||
|
* @package Gelato
|
||||||
|
*
|
||||||
|
* @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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class MinifyHTML
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Minify html
|
||||||
|
*
|
||||||
|
* <code>
|
||||||
|
* echo MinifyHTML::process($html);
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $buffer html
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function process($html)
|
||||||
|
{
|
||||||
|
// Remove HTML comments (not containing IE conditional comments).
|
||||||
|
$html = preg_replace_callback('/<!--([\\s\\S]*?)-->/', 'MinifyHTML::_comments', $html);
|
||||||
|
|
||||||
|
// Trim each line.
|
||||||
|
$html = preg_replace('/^\\s+|\\s+$/m', '', $html);
|
||||||
|
|
||||||
|
// Return HTML
|
||||||
|
return $html;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static function _comments($m)
|
||||||
|
{
|
||||||
|
return (0 === strpos($m[1], '[') || false !== strpos($m[1], '<![')) ? $m[0] : '';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
50
libraries/Gelato/Minify/MinifyJS.php
Normal file
50
libraries/Gelato/Minify/MinifyJS.php
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gelato Library
|
||||||
|
*
|
||||||
|
* This source file is part of the Gelato Library. More information,
|
||||||
|
* documentation and tutorials can be found at http://gelato.monstra.org
|
||||||
|
*
|
||||||
|
* @package Gelato
|
||||||
|
*
|
||||||
|
* @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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class MinifyJS
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Minify js
|
||||||
|
*
|
||||||
|
* <code>
|
||||||
|
* echo MinifyJS::process($js);
|
||||||
|
* </code>
|
||||||
|
*
|
||||||
|
* @param string $buffer html
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function process($js)
|
||||||
|
{
|
||||||
|
// newlines > linefeed
|
||||||
|
$js = str_replace(array("\r\n", "\r", "\n"), "\n", $js);
|
||||||
|
|
||||||
|
// empty lines > collapse
|
||||||
|
$js = preg_replace('/^[ \t]*|[ \t]*$/m', '', $js);
|
||||||
|
$js = preg_replace('/\n+/m', "\n", $js);
|
||||||
|
$js = trim($js);
|
||||||
|
|
||||||
|
// redundant whitespace > remove
|
||||||
|
$js = preg_replace('/(?<=[{}\[\]\(\)=><&\|;:,\?!\+-])[ \t]*|[ \t]*(?=[{}\[\]\(\)=><&\|;:,\?!\+-])/i', '', $js);
|
||||||
|
$js = preg_replace('/[ \t]+/', ' ', $js);
|
||||||
|
|
||||||
|
// redundant semicolons (followed by another semicolon or closing curly bracket) > remove
|
||||||
|
$js = preg_replace('/;\s*(?=[;}])/s', '', $js);
|
||||||
|
|
||||||
|
// Return JS
|
||||||
|
return $js;
|
||||||
|
}
|
||||||
|
}
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
@@ -28,7 +28,7 @@ class Number
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convert bytes in 'kb','mb','gb','tb','pb'
|
* Convert bytes in 'KB','MB','GB','TiB','PiB'
|
||||||
*
|
*
|
||||||
* <code>
|
* <code>
|
||||||
* echo Number::byteFormat(10000);
|
* echo Number::byteFormat(10000);
|
||||||
@@ -42,9 +42,9 @@ class Number
|
|||||||
// Redefine vars
|
// Redefine vars
|
||||||
$size = (int) $size;
|
$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];
|
return @round($size/pow(1024, ($i=floor(log($size, 1024)))), 2).' '.$unit[($i < 0 ? 0 : $i)];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -4,6 +4,6 @@ Gelato is a PHP5 library for kickass Web Applications.
|
|||||||
|
|
||||||
## Links
|
## Links
|
||||||
- [Site](http://gelato.monstra.org)
|
- [Site](http://gelato.monstra.org)
|
||||||
- [Github Repository](https://github.com/Monstra/gelato-library)
|
- [Github Repository](https://github.com/MonstrLab/gelato)
|
||||||
|
|
||||||
Copyright (C) 2012-2013 Romanenko Sergey / Awilum [awilum@msn.com]
|
Copyright (C) 2013 Romanenko Sergey / Awilum [awilum@msn.com]
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
@@ -27,7 +27,7 @@ class Registry
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Checks if an object with this name is in the registry.
|
* Checks if an object with this name is in the registry.
|
||||||
*
|
*
|
||||||
* <code>
|
* <code>
|
||||||
* if (Registry::exists('var')) {
|
* if (Registry::exists('var')) {
|
||||||
* // Do something...
|
* // Do something...
|
||||||
@@ -44,7 +44,7 @@ class Registry
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers a given value under a given name.
|
* Registers a given value under a given name.
|
||||||
*
|
*
|
||||||
* <code>
|
* <code>
|
||||||
* Registry::set('var', 'value');
|
* Registry::set('var', 'value');
|
||||||
* </code>
|
* </code>
|
||||||
@@ -69,7 +69,7 @@ class Registry
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Fetch an item from the registry.
|
* Fetch an item from the registry.
|
||||||
*
|
*
|
||||||
* <code>
|
* <code>
|
||||||
* $var = Registry::get('var', 'value');
|
* $var = Registry::get('var', 'value');
|
||||||
* </code>
|
* </code>
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
@@ -22,7 +22,7 @@ class Token
|
|||||||
*
|
*
|
||||||
* @var string
|
* @var string
|
||||||
*/
|
*/
|
||||||
public static $token_name = 'security_token';
|
protected static $token_name = 'security_token';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Protected constructor since this is a static class.
|
* Protected constructor since this is a static class.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
@@ -9,7 +9,7 @@
|
|||||||
* @package Gelato
|
* @package Gelato
|
||||||
*
|
*
|
||||||
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
* @author Romanenko Sergey / Awilum <awilum@msn.com>
|
||||||
* @copyright 2012-2013 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
|
* For the full copyright and license information, please view the LICENSE
|
||||||
* file that was distributed with this source code.
|
* file that was distributed with this source code.
|
||||||
|
0
libraries/Gelato/_logs/.empty
Normal file
0
libraries/Gelato/_logs/.empty
Normal file
@@ -1,3 +1,21 @@
|
|||||||
Gelato 1.0.0, XXXX-XX-XX
|
Gelato 1.0.3, 2013-04-03
|
||||||
------------------------
|
------------------------
|
||||||
- Initial release
|
- Html Class: obfuscate() method added.
|
||||||
|
- Html Class: email() method added.
|
||||||
|
- Html Class: missing $macros var added.
|
||||||
|
|
||||||
|
Gelato 1.0.2, 2013-03-17
|
||||||
|
------------------------
|
||||||
|
- Added support for PHP 5.2.3
|
||||||
|
|
||||||
|
Gelato 1.0.1, 2013-03-05
|
||||||
|
------------------------
|
||||||
|
- New constant GELATO_CLASS_LOADER instead of GELATO_AUTOLOADER
|
||||||
|
- ErrorHanler Class Improvements.
|
||||||
|
- Log Class Improvements.
|
||||||
|
- ClassLoader: new method register() added.
|
||||||
|
- Define __DIR__ constant for PHP 5.2.x
|
||||||
|
|
||||||
|
Gelato 1.0.0, 2013-02-26
|
||||||
|
------------------------
|
||||||
|
- Initial release
|
||||||
|
File diff suppressed because it is too large
Load Diff
2946
libraries/PHPMailer/PHPMailer.php
Normal file
2946
libraries/PHPMailer/PHPMailer.php
Normal file
File diff suppressed because it is too large
Load Diff
@@ -6,7 +6,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
* @subpackage Plugins
|
* @subpackage Plugins
|
||||||
* @author Romanenko Sergey / Awilum
|
* @author Romanenko Sergey / Awilum
|
||||||
* @copyright 2012-2013 Romanenko Sergey / Awilum
|
* @copyright 2012-2014 Romanenko Sergey / Awilum
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@@ -3,8 +3,8 @@
|
|||||||
return array(
|
return array(
|
||||||
'backup' => array(
|
'backup' => array(
|
||||||
'Backups' => 'Backups',
|
'Backups' => 'Backups',
|
||||||
'Backup date' => 'Backup Datum',
|
'Backup' => 'Backup',
|
||||||
'Create backup' => 'Erstelle Backup',
|
'Create Backup' => 'Erstelle Backup',
|
||||||
'Delete' => 'Löschen',
|
'Delete' => 'Löschen',
|
||||||
'storage' => 'Speicher',
|
'storage' => 'Speicher',
|
||||||
'public' => 'Öffentliche',
|
'public' => 'Öffentliche',
|
||||||
|
@@ -2,10 +2,10 @@
|
|||||||
|
|
||||||
return array(
|
return array(
|
||||||
'backup' => array(
|
'backup' => array(
|
||||||
'Backups' => 'Backups',
|
'Backups' => 'Backups',
|
||||||
'Backup date' => 'Backup date',
|
'Backup Date' => 'Backup Date',
|
||||||
'Create backup' => 'Create backup',
|
'Create Backup' => 'Create Backup',
|
||||||
'Delete' => 'Delete',
|
'Delete' => 'Delete',
|
||||||
'storage' => 'storage',
|
'storage' => 'storage',
|
||||||
'public' => 'public',
|
'public' => 'public',
|
||||||
'plugins' => 'plugins',
|
'plugins' => 'plugins',
|
||||||
@@ -14,4 +14,4 @@
|
|||||||
'Delete backup: :backup' => 'Delete backup: :backup',
|
'Delete backup: :backup' => 'Delete backup: :backup',
|
||||||
'Creating...' => 'Creating...',
|
'Creating...' => 'Creating...',
|
||||||
)
|
)
|
||||||
);
|
);
|
17
plugins/box/backup/languages/es.lang.php
Normal file
17
plugins/box/backup/languages/es.lang.php
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'backup' => array(
|
||||||
|
'Backups' => 'Backup',
|
||||||
|
'Backup date' => 'Backup dia',
|
||||||
|
'Create Backup' => 'Crear Backup',
|
||||||
|
'Delete' => 'Borrar',
|
||||||
|
'storage' => 'Almacen',
|
||||||
|
'public' => 'publico',
|
||||||
|
'plugins' => 'plugins',
|
||||||
|
'Size' => 'Tamaño',
|
||||||
|
'Actions' => 'Acciones',
|
||||||
|
'Delete backup: :backup' => 'Borrar Backup: :backup',
|
||||||
|
'Creating...' => 'Creando...',
|
||||||
|
)
|
||||||
|
);
|
17
plugins/box/backup/languages/fa.lang.php
Normal file
17
plugins/box/backup/languages/fa.lang.php
Normal 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...' => 'ایجاد...',
|
||||||
|
)
|
||||||
|
);
|
17
plugins/box/backup/languages/fr.lang.php
Normal file
17
plugins/box/backup/languages/fr.lang.php
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'backup' => array(
|
||||||
|
'Backups' => 'Sauvegardes',
|
||||||
|
'Backup date' => 'Date de la sauvegarde',
|
||||||
|
'Create backup' => 'Créer une sauvegarde',
|
||||||
|
'Delete' => 'Supprimer',
|
||||||
|
'storage' => 'stockage',
|
||||||
|
'public' => 'public',
|
||||||
|
'plugins' => 'plugins',
|
||||||
|
'Size' => 'Taille',
|
||||||
|
'Actions' => 'Actions',
|
||||||
|
'Delete backup: :backup' => 'Supprimer la sauvegarde: :backup',
|
||||||
|
'Creating...' => 'Création...',
|
||||||
|
)
|
||||||
|
);
|
17
plugins/box/backup/languages/hu.lang.php
Normal file
17
plugins/box/backup/languages/hu.lang.php
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'backup' => array(
|
||||||
|
'Backups' => 'Biztonsági mentések',
|
||||||
|
'Backup date' => 'Biztonsági mentés dátuma',
|
||||||
|
'Create Backup' => 'Biztonsági mentés készítése',
|
||||||
|
'Delete' => 'Töröl',
|
||||||
|
'storage' => 'tárol',
|
||||||
|
'public' => 'nyilvános',
|
||||||
|
'plugins' => 'pluginok',
|
||||||
|
'Size' => 'Méret',
|
||||||
|
'Actions' => 'Műveletek',
|
||||||
|
'Delete backup: :backup' => 'Biztonsági mentés törlése: :backup',
|
||||||
|
'Creating...' => 'Készítés...',
|
||||||
|
)
|
||||||
|
);
|
@@ -3,8 +3,8 @@
|
|||||||
return array(
|
return array(
|
||||||
'backup' => array(
|
'backup' => array(
|
||||||
'Backups' => 'Backup',
|
'Backups' => 'Backup',
|
||||||
'Backup date' => 'Backup',
|
'Backup' => 'Backup',
|
||||||
'Create backup' => 'Crea backup',
|
'Create Backup' => 'Crea Backup',
|
||||||
'Delete' => 'Elimina',
|
'Delete' => 'Elimina',
|
||||||
'storage' => 'dati',
|
'storage' => 'dati',
|
||||||
'public' => 'pubblica',
|
'public' => 'pubblica',
|
||||||
|
@@ -3,8 +3,8 @@
|
|||||||
return array(
|
return array(
|
||||||
'backup' => array(
|
'backup' => array(
|
||||||
'Backups' => 'Atsarginės kopijos',
|
'Backups' => 'Atsarginės kopijos',
|
||||||
'Backup date' => 'Atsarginės kopijos data',
|
'Backup' => 'Atsarginės kopijos data',
|
||||||
'Create backup' => 'Sukurti atsarginę kopiją',
|
'Create Backup' => 'Sukurti atsarginę kopiją',
|
||||||
'Delete' => 'Ištrinti',
|
'Delete' => 'Ištrinti',
|
||||||
'storage' => 'storage',
|
'storage' => 'storage',
|
||||||
'public' => 'public',
|
'public' => 'public',
|
||||||
|
17
plugins/box/backup/languages/nl.lang.php
Normal file
17
plugins/box/backup/languages/nl.lang.php
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'backup' => array(
|
||||||
|
'Backups' => 'Backups',
|
||||||
|
'Backup' => 'Backup',
|
||||||
|
'Create Backup' => 'Maak backup',
|
||||||
|
'Delete' => 'Verwijderen',
|
||||||
|
'storage' => 'Opslag',
|
||||||
|
'public' => 'Publiek',
|
||||||
|
'plugins' => 'Plugins',
|
||||||
|
'Size' => 'Grootte',
|
||||||
|
'Actions' => 'Acties',
|
||||||
|
'Delete backup: :backup' => 'Verwijder backup: :backup',
|
||||||
|
'Creating...' => 'Backup wordt gemaakt...',
|
||||||
|
)
|
||||||
|
);
|
17
plugins/box/backup/languages/pl.lang.php
Normal file
17
plugins/box/backup/languages/pl.lang.php
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'backup' => array(
|
||||||
|
'Backups' => 'Kopie zapasowe',
|
||||||
|
'Backup Date' => 'Data kopii zapasowej',
|
||||||
|
'Create Backup' => 'Utwórz kopię zapasową',
|
||||||
|
'Delete' => 'Usuń',
|
||||||
|
'storage' => 'magazyn',
|
||||||
|
'public' => 'publiczny',
|
||||||
|
'plugins' => 'wtyczki',
|
||||||
|
'Size' => 'Rozmiar',
|
||||||
|
'Actions' => 'Akcje',
|
||||||
|
'Delete backup: :backup' => 'Czy napewno usunąć kopię zapasową: :backup',
|
||||||
|
'Creating...' => 'Tworzenie kopii zapasowej...',
|
||||||
|
)
|
||||||
|
);
|
@@ -3,8 +3,8 @@
|
|||||||
return array(
|
return array(
|
||||||
'backup' => array(
|
'backup' => array(
|
||||||
'Backups' => 'Backups',
|
'Backups' => 'Backups',
|
||||||
'Backup date' => 'Data do backup',
|
'Backup' => 'Backup',
|
||||||
'Create backup' => 'Criar',
|
'Create Backup' => 'Criar Backup',
|
||||||
'Delete' => 'Deletar',
|
'Delete' => 'Deletar',
|
||||||
'storage' => 'storage',
|
'storage' => 'storage',
|
||||||
'public' => 'public',
|
'public' => 'public',
|
||||||
|
@@ -3,8 +3,8 @@
|
|||||||
return array(
|
return array(
|
||||||
'backup' => array(
|
'backup' => array(
|
||||||
'Backups' => 'Бекапы',
|
'Backups' => 'Бекапы',
|
||||||
'Backup date' => 'Бекап',
|
'Backup' => 'Бекап',
|
||||||
'Create backup' => 'Сделать бекап',
|
'Create Backup' => 'Сделать бекап',
|
||||||
'Delete' => 'Удалить',
|
'Delete' => 'Удалить',
|
||||||
'storage' => 'данные',
|
'storage' => 'данные',
|
||||||
'public' => 'публичная',
|
'public' => 'публичная',
|
||||||
|
17
plugins/box/backup/languages/sk.lang.php
Normal file
17
plugins/box/backup/languages/sk.lang.php
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'backup' => array(
|
||||||
|
'Backups' => 'Zálohy',
|
||||||
|
'Backup' => 'Zálohy',
|
||||||
|
'Create Backup' => 'Vytvoriť Zálohu',
|
||||||
|
'Delete' => 'Vymazať',
|
||||||
|
'storage' => 'Storage/Obsah diskového miesta',
|
||||||
|
'public' => 'Verejné',
|
||||||
|
'plugins' => 'Pluginy',
|
||||||
|
'Size' => 'Veľkosť',
|
||||||
|
'Actions' => 'Akcie',
|
||||||
|
'Delete backup: :backup' => 'Vymazať zálohu: :backup',
|
||||||
|
'Creating...' => 'Vytváram...',
|
||||||
|
)
|
||||||
|
);
|
@@ -3,8 +3,8 @@
|
|||||||
return array(
|
return array(
|
||||||
'backup' => array(
|
'backup' => array(
|
||||||
'Backups' => 'Bekapovi',
|
'Backups' => 'Bekapovi',
|
||||||
'Backup date' => 'Backup datum',
|
'Backup' => 'Backup',
|
||||||
'Create backup' => 'Kreiraj Bekap',
|
'Create Backup' => 'Kreiraj Bekap',
|
||||||
'Delete' => 'Obriši',
|
'Delete' => 'Obriši',
|
||||||
'storage' => 'lokacija arhive',
|
'storage' => 'lokacija arhive',
|
||||||
'public' => 'Javno',
|
'public' => 'Javno',
|
||||||
|
@@ -3,8 +3,8 @@
|
|||||||
return array(
|
return array(
|
||||||
'backup' => array(
|
'backup' => array(
|
||||||
'Backups' => 'Бекапи',
|
'Backups' => 'Бекапи',
|
||||||
'Backup date' => 'Бекап',
|
'Backup' => 'Бекап',
|
||||||
'Create backup' => 'Зробити бекап',
|
'Create Backup' => 'Зробити бекап',
|
||||||
'Delete' => 'Видалити',
|
'Delete' => 'Видалити',
|
||||||
'storage' => 'дані',
|
'storage' => 'дані',
|
||||||
'public' => 'публічна',
|
'public' => 'публічна',
|
||||||
|
@@ -14,7 +14,7 @@ $().ready(function(){$('[name=create_backup]').click(function(){$(this).button('
|
|||||||
Form::checkbox('add_storage_folder', null, true, array('disabled' => 'disabled')) . ' ' . __('storage', 'backup') . ' ' . Html::nbsp(2) .
|
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_public_folder') . ' ' . __('public', 'backup') . ' ' . Html::nbsp(2) .
|
||||||
Form::checkbox('add_plugins_folder') . ' ' . __('plugins', '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::submit('create_backup', __('Create Backup', 'backup'), array('class' => 'btn', 'data-loading-text' => __('Creating...', 'backup'))).
|
||||||
Form::close()
|
Form::close()
|
||||||
);
|
);
|
||||||
?>
|
?>
|
||||||
@@ -23,7 +23,7 @@ $().ready(function(){$('[name=create_backup]').click(function(){$(this).button('
|
|||||||
<table class="table table-bordered">
|
<table class="table table-bordered">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th><?php echo __('Backup date', 'backup'); ?></th>
|
<th><?php echo __('Backup', 'backup'); ?></th>
|
||||||
<th><?php echo __('Size', 'backup'); ?></th>
|
<th><?php echo __('Size', 'backup'); ?></th>
|
||||||
<th></th>
|
<th></th>
|
||||||
</tr>
|
</tr>
|
||||||
|
@@ -66,7 +66,7 @@ class BlocksAdmin extends Backend
|
|||||||
->display();
|
->display();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
// Edit block
|
// Edit Block
|
||||||
// -------------------------------------
|
// -------------------------------------
|
||||||
case "edit_block":
|
case "edit_block":
|
||||||
// Save current block action
|
// Save current block action
|
||||||
|
@@ -6,7 +6,7 @@
|
|||||||
* @package Monstra
|
* @package Monstra
|
||||||
* @subpackage Plugins
|
* @subpackage Plugins
|
||||||
* @author Romanenko Sergey / Awilum
|
* @author Romanenko Sergey / Awilum
|
||||||
* @copyright 2012-2013 Romanenko Sergey / Awilum
|
* @copyright 2012-2014 Romanenko Sergey / Awilum
|
||||||
* @version 1.0.0
|
* @version 1.0.0
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
@@ -7,11 +7,11 @@
|
|||||||
'Delete' => 'Löschen',
|
'Delete' => 'Löschen',
|
||||||
'Edit' => 'Bearbeiten',
|
'Edit' => 'Bearbeiten',
|
||||||
'Name' => 'Name',
|
'Name' => 'Name',
|
||||||
'Create new block' => 'Erstelle einen neuen Block',
|
'Create New Block' => 'Erstelle einen neuen Block',
|
||||||
'New block' => 'Neuer Block',
|
'New Block' => 'Neuer Block',
|
||||||
'Edit block' => 'Bearbeite Block',
|
'Edit Block' => 'Bearbeite Block',
|
||||||
'Save' => 'Save',
|
'Save' => 'Speichern',
|
||||||
'Save and exit' => 'Speichern und Schließen',
|
'Save and Exit' => 'Speichern und Schließen',
|
||||||
'Actions' => 'Aktionen',
|
'Actions' => 'Aktionen',
|
||||||
'Required field' => 'Erforderliches Feld',
|
'Required field' => 'Erforderliches Feld',
|
||||||
'This block already exists' => 'Dieser Block existiert bereits',
|
'This block already exists' => 'Dieser Block existiert bereits',
|
||||||
@@ -19,9 +19,9 @@
|
|||||||
'Delete block: :block' => 'Lösche Block: :block',
|
'Delete block: :block' => 'Lösche Block: :block',
|
||||||
'Block content' => 'Block-Inhalt',
|
'Block content' => 'Block-Inhalt',
|
||||||
'Block <i>:name</i> deleted' => 'Block <i>:name</i> gelöscht',
|
'Block <i>:name</i> deleted' => 'Block <i>:name</i> gelöscht',
|
||||||
'Your changes to the block <i>:name</i> have been saved.' => 'Deine Änderungen für den Block <i>:name</i> wurden übernommen.',
|
'Your changes to the block <i>:name</i> have been saved.' => 'Deine Änderungen für den Block <i>:name</i> wurden gespeichert.',
|
||||||
'Delete block: :block' => 'Lösche Block: :block',
|
'Delete block: :block' => 'Lösche Block: :block',
|
||||||
'View Embed Code' => 'View Embed Code',
|
'View Embed Code' => 'Zeige Embed Code',
|
||||||
'Embed Code' => 'Embed Code',
|
'Embed Code' => 'Embed Code',
|
||||||
'Shortcode' => 'Shortcode',
|
'Shortcode' => 'Shortcode',
|
||||||
'PHP Code' => 'PHP Code',
|
'PHP Code' => 'PHP Code',
|
||||||
|
@@ -7,11 +7,11 @@
|
|||||||
'Delete' => 'Delete',
|
'Delete' => 'Delete',
|
||||||
'Edit' => 'Edit',
|
'Edit' => 'Edit',
|
||||||
'Name' => 'Name',
|
'Name' => 'Name',
|
||||||
'Create new block' => 'Create new block',
|
'Create New Block' => 'Create New Block',
|
||||||
'New block' => 'New block',
|
'New Block' => 'New Block',
|
||||||
'Edit block' => 'Edit block',
|
'Edit Block' => 'Edit Block',
|
||||||
'Save' => 'Save',
|
'Save' => 'Save',
|
||||||
'Save and exit' => 'Save and exit',
|
'Save and Exit' => 'Save and Exit',
|
||||||
'Actions' => 'Actions',
|
'Actions' => 'Actions',
|
||||||
'Required field' => 'Required field',
|
'Required field' => 'Required field',
|
||||||
'This block already exists' => 'This block already exists',
|
'This block already exists' => 'This block already exists',
|
||||||
|
29
plugins/box/blocks/languages/es.lang.php
Normal file
29
plugins/box/blocks/languages/es.lang.php
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'blocks' => array(
|
||||||
|
'Blocks' => 'Bloques',
|
||||||
|
'Blocks manager' => 'Administrar bloques',
|
||||||
|
'Delete' => 'Borrar',
|
||||||
|
'Edit' => 'Editar',
|
||||||
|
'Name' => 'Nombre',
|
||||||
|
'Create New Block' => 'Crear nuevo bloque',
|
||||||
|
'New block' => 'Nuevo bloque',
|
||||||
|
'Edit block' => 'Editar bloque',
|
||||||
|
'Save' => 'Guardar',
|
||||||
|
'Save and Exit' => 'Guardar y salir',
|
||||||
|
'Actions' => 'Acciones',
|
||||||
|
'Required field' => 'Dato requerido',
|
||||||
|
'This block already exists' => 'Este bloque ya esiste',
|
||||||
|
'This block does not exist' => 'Este bloque no esiste',
|
||||||
|
'Delete block: :block' => 'Borrar bloque: :block',
|
||||||
|
'Block content' => 'Contenido del bloque',
|
||||||
|
'Block <i>:name</i> deleted' => 'bloque <i>:name</i> borrdo',
|
||||||
|
'Your changes to the block <i>:name</i> have been saved.' => 'Tus cambios en el bloque <i>:name</i> han sido guardados.',
|
||||||
|
'Delete block: :block' => 'Borrar bloque: :block',
|
||||||
|
'View Embed Code' => 'Ver codigo para incrustar',
|
||||||
|
'Embed Code' => 'Codigo para incrustar',
|
||||||
|
'Shortcode' => 'Codigo corto',
|
||||||
|
'PHP Code' => 'Codigo PHP',
|
||||||
|
)
|
||||||
|
);
|
29
plugins/box/blocks/languages/fa.lang.php
Normal file
29
plugins/box/blocks/languages/fa.lang.php
Normal 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' => 'Delete block: :block',
|
||||||
|
'Block content' => 'حذف بلوک: :block',
|
||||||
|
'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',
|
||||||
|
)
|
||||||
|
);
|
29
plugins/box/blocks/languages/fr.lang.php
Normal file
29
plugins/box/blocks/languages/fr.lang.php
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'blocks' => array(
|
||||||
|
'Blocks' => 'Blocs',
|
||||||
|
'Blocks manager' => 'Gestionnaire des blocs',
|
||||||
|
'Delete' => 'Supprimer',
|
||||||
|
'Edit' => 'Editer',
|
||||||
|
'Name' => 'Nom',
|
||||||
|
'Create new block' => 'Créer un nouveau bloc',
|
||||||
|
'New block' => 'Nouveau bloc',
|
||||||
|
'Edit block' => 'Editer le bloc',
|
||||||
|
'Save' => 'Enregistrer',
|
||||||
|
'Save and exit' => 'Enregistrer et sortir',
|
||||||
|
'Actions' => 'Actions',
|
||||||
|
'Required field' => 'Champ requis',
|
||||||
|
'This block already exists' => 'Ce bloc existe déjà',
|
||||||
|
'This block does not exist' => 'Ce bloc n\'existe pas',
|
||||||
|
'Delete block: :block' => 'Supprimer le bloc: :block',
|
||||||
|
'Block content' => 'Contenu du bloc',
|
||||||
|
'Block <i>:name</i> deleted' => 'Bloc <i>:name</i> supprimé',
|
||||||
|
'Your changes to the block <i>:name</i> have been saved.' => 'Vos changements pour le bloc <i>:name</i> ont été sauvegardés.',
|
||||||
|
'Delete block: :block' => 'Supprimer le bloc: :block',
|
||||||
|
'View Embed Code' => 'Voir le code intégré',
|
||||||
|
'Embed Code' => 'Code intégré',
|
||||||
|
'Shortcode' => 'Code court',
|
||||||
|
'PHP Code' => 'Code PHP',
|
||||||
|
)
|
||||||
|
);
|
29
plugins/box/blocks/languages/hu.lang.php
Normal file
29
plugins/box/blocks/languages/hu.lang.php
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'blocks' => array(
|
||||||
|
'Blocks' => 'Blokkok',
|
||||||
|
'Blocks manager' => 'Blokk-kezelő',
|
||||||
|
'Delete' => 'Törlés',
|
||||||
|
'Edit' => 'Szerkesztés',
|
||||||
|
'Name' => 'Név',
|
||||||
|
'Create New Block' => 'Új blokk készítése',
|
||||||
|
'New Block' => 'Új blokk',
|
||||||
|
'Edit Block' => 'Blokk szerkesztése',
|
||||||
|
'Save' => 'Mentés',
|
||||||
|
'Save and Exit' => 'Mentés és Kilépés',
|
||||||
|
'Actions' => 'Műveletek',
|
||||||
|
'Required field' => 'Kötelező mező',
|
||||||
|
'This block already exists' => 'Ez a blokk már létezik',
|
||||||
|
'This block does not exist' => 'Ez a blokk nem létezik',
|
||||||
|
'Delete block: :block' => 'Blokk törlése: :block',
|
||||||
|
'Block content' => 'Blokk tartalma',
|
||||||
|
'Block <i>:name</i> deleted' => 'A <i>:name</i> blokk törölve',
|
||||||
|
'Your changes to the block <i>:name</i> have been saved.' => 'A <i>:name</i> blokk változtatásai elmentve.',
|
||||||
|
'Delete block: :block' => 'Blokk törlése: :block',
|
||||||
|
'View Embed Code' => 'Beágyazott kód mutatása',
|
||||||
|
'Embed Code' => 'Beágyazott kód',
|
||||||
|
'Shortcode' => 'Shortcode',
|
||||||
|
'PHP Code' => 'PHP Code',
|
||||||
|
)
|
||||||
|
);
|
@@ -6,13 +6,13 @@
|
|||||||
'Blocks manager' => 'Gestione blocchi',
|
'Blocks manager' => 'Gestione blocchi',
|
||||||
'Delete' => 'Elimina',
|
'Delete' => 'Elimina',
|
||||||
'Edit' => 'Modifica',
|
'Edit' => 'Modifica',
|
||||||
'New block' => 'Nuovo blocco',
|
'New Block' => 'Nuovo blocco',
|
||||||
'Create new block' => 'Crea nuovo blocco',
|
'Create New Block' => 'Crea nuovo blocco',
|
||||||
'Name' => 'Nome',
|
'Name' => 'Nome',
|
||||||
'Edit block' => 'Modifica blocco',
|
'Edit Block' => 'Modifica blocco',
|
||||||
'Save' => 'Salva',
|
'Save' => 'Salva',
|
||||||
'Actions' => 'Azioni',
|
'Actions' => 'Azioni',
|
||||||
'Save and exit' => 'Salva ed esci',
|
'Save and Exit' => 'Salva ed esci',
|
||||||
'Required field' => 'Campo obbligatorio',
|
'Required field' => 'Campo obbligatorio',
|
||||||
'This block already exists' => 'Tale blocco già esistente',
|
'This block already exists' => 'Tale blocco già esistente',
|
||||||
'This block does not exist' => 'Tale blocco non esiste',
|
'This block does not exist' => 'Tale blocco non esiste',
|
||||||
|
@@ -7,11 +7,11 @@
|
|||||||
'Delete' => 'Ištrinti',
|
'Delete' => 'Ištrinti',
|
||||||
'Edit' => 'Redaguoti',
|
'Edit' => 'Redaguoti',
|
||||||
'Name' => 'Pavadinimas',
|
'Name' => 'Pavadinimas',
|
||||||
'Create new block' => 'Sukurti naują bloką',
|
'Create New Block' => 'Sukurti naują bloką',
|
||||||
'New block' => 'Naujas blokas',
|
'New Block' => 'Naujas blokas',
|
||||||
'Edit block' => 'Redaguoti bloką',
|
'Edit Block' => 'Redaguoti bloką',
|
||||||
'Save' => 'Išsaugoti',
|
'Save' => 'Išsaugoti',
|
||||||
'Save and exit' => 'Išsaugoti ir išeiti',
|
'Save and Exit' => 'Išsaugoti ir išeiti',
|
||||||
'Actions' => 'Veiksmai',
|
'Actions' => 'Veiksmai',
|
||||||
'Required field' => 'Privalomas laukas',
|
'Required field' => 'Privalomas laukas',
|
||||||
'This block already exists' => 'Toks blokas jau yra',
|
'This block already exists' => 'Toks blokas jau yra',
|
||||||
|
29
plugins/box/blocks/languages/nl.lang.php
Normal file
29
plugins/box/blocks/languages/nl.lang.php
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'blocks' => array(
|
||||||
|
'Blocks' => 'Blokken',
|
||||||
|
'Blocks manager' => 'Blokken beheer',
|
||||||
|
'Delete' => 'Verwijderen',
|
||||||
|
'Edit' => 'Bewerken',
|
||||||
|
'Name' => 'Naam',
|
||||||
|
'Create New Block' => 'Nieuw blok',
|
||||||
|
'New Block' => 'Nieuw blok',
|
||||||
|
'Edit Block' => 'Bewerk blok',
|
||||||
|
'Save' => 'Opslaan',
|
||||||
|
'Save and Exit' => 'Opslaan en Terug',
|
||||||
|
'Actions' => 'Acties',
|
||||||
|
'Required field' => 'Vereist veld',
|
||||||
|
'This block already exists' => 'Dit blok bestaat al',
|
||||||
|
'This block does not exist' => 'Dit blok bestaat niet',
|
||||||
|
'Delete block: :block' => 'Verwijder blok: :block',
|
||||||
|
'Block content' => 'Inhoud blok',
|
||||||
|
'Block <i>:name</i> deleted' => 'Blok <i>:name</i> verwijderd',
|
||||||
|
'Your changes to the block <i>:name</i> have been saved.' => 'De aanpassingen aan blok <i>:name</i> zijn opgeslagen.',
|
||||||
|
'Delete block: :block' => 'Verwijder blok: :block',
|
||||||
|
'View Embed Code' => 'Bekijk insluitcode',
|
||||||
|
'Embed Code' => 'Insluitcode',
|
||||||
|
'Shortcode' => 'Verkorte code',
|
||||||
|
'PHP Code' => 'PHP Code',
|
||||||
|
)
|
||||||
|
);
|
29
plugins/box/blocks/languages/pl.lang.php
Normal file
29
plugins/box/blocks/languages/pl.lang.php
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
return array(
|
||||||
|
'blocks' => array(
|
||||||
|
'Blocks' => 'Bloki',
|
||||||
|
'Blocks manager' => 'Zarządzaj blokami',
|
||||||
|
'Delete' => 'Usuń',
|
||||||
|
'Edit' => 'Edytuj',
|
||||||
|
'Name' => 'Nazwa',
|
||||||
|
'Create New Block' => 'Utwórz nowy blok',
|
||||||
|
'New Block' => 'Nowy blok',
|
||||||
|
'Edit Block' => 'Edytuj blok',
|
||||||
|
'Save' => 'Zapisz',
|
||||||
|
'Save and Exit' => 'Zapisz i wyjdź',
|
||||||
|
'Actions' => 'Akcje',
|
||||||
|
'Required field' => 'Pole wymagane',
|
||||||
|
'This block already exists' => 'Ten blok już istnieje',
|
||||||
|
'This block does not exist' => 'Ten blok nie istnieje',
|
||||||
|
'Delete block: :block' => 'Czy napewno usunąć blok: :block',
|
||||||
|
'Block content' => 'Zawartość bloku',
|
||||||
|
'Block <i>:name</i> deleted' => 'Blok <i>:name</i> został usunięty',
|
||||||
|
'Your changes to the block <i>:name</i> have been saved.' => 'Twoje zmiany dla bloku <i>:name</i> zostały zapisane.',
|
||||||
|
'Delete block: :block' => 'Czy napewno usunąć blok: :block',
|
||||||
|
'View Embed Code' => 'Pokaż osadzony kod',
|
||||||
|
'Embed Code' => 'Osadzony kod',
|
||||||
|
'Shortcode' => 'Krótki kod (shortcode)',
|
||||||
|
'PHP Code' => 'Kod PHP',
|
||||||
|
)
|
||||||
|
);
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user