Tpl: Add stuff to have multiple templates directories with priority
This commit is contained in:
parent
4f47dc056d
commit
317cb30cb3
24 changed files with 800 additions and 548 deletions
|
@ -13,12 +13,6 @@ upload_tmp_directory: ${tmp_root_directory}/uploading"
|
||||||
# Main pagetitle
|
# Main pagetitle
|
||||||
main_pagetitle: "Eesyphp"
|
main_pagetitle: "Eesyphp"
|
||||||
|
|
||||||
# Theme CSS file
|
|
||||||
included_css_files:
|
|
||||||
#- css/custom.css
|
|
||||||
included_js_files:
|
|
||||||
#- js/custom.js
|
|
||||||
|
|
||||||
# Debug Ajax request/response
|
# Debug Ajax request/response
|
||||||
debug_ajax: false
|
debug_ajax: false
|
||||||
|
|
||||||
|
@ -81,12 +75,17 @@ sentry:
|
||||||
traces_sample_rate: 0.2
|
traces_sample_rate: 0.2
|
||||||
|
|
||||||
#
|
#
|
||||||
# Smarty template configuration
|
# Smarty templates configuration
|
||||||
#
|
#
|
||||||
template:
|
templates:
|
||||||
# Smarty directories
|
# Smarty directories
|
||||||
directory: "${root_directory_path}/templates"
|
directory: "${root_directory_path}/templates"
|
||||||
cache_directory: "${tmp_root_directory}/templates_c"
|
cache_directory: "${tmp_root_directory}/templates_c"
|
||||||
|
# Theme CSS file
|
||||||
|
included_css_files:
|
||||||
|
#- css/custom.css
|
||||||
|
included_js_files:
|
||||||
|
#- js/custom.js
|
||||||
|
|
||||||
#
|
#
|
||||||
# Translations
|
# Translations
|
||||||
|
|
|
@ -24,7 +24,7 @@ $root_dir_path = realpath(dirname($script).'/../');
|
||||||
set_include_path($root_dir_path.'/includes' . PATH_SEPARATOR . get_include_path());
|
set_include_path($root_dir_path.'/includes' . PATH_SEPARATOR . get_include_path());
|
||||||
|
|
||||||
// Load composer autoload.php
|
// Load composer autoload.php
|
||||||
require("$root_dir_path/../vendor/autoload.php");
|
require("$root_dir_path/vendor/autoload.php");
|
||||||
|
|
||||||
// Initialize EesyPHP application
|
// Initialize EesyPHP application
|
||||||
App::init(
|
App::init(
|
||||||
|
|
|
@ -22,15 +22,6 @@ Tpl :: enable_security_mode(
|
||||||
array('range', 'implode', 'stripslashes')
|
array('range', 'implode', 'stripslashes')
|
||||||
);
|
);
|
||||||
|
|
||||||
// Defined some global template variables
|
|
||||||
Tpl :: assign('public_root_url', App::get('public_root_url', '/', 'string'));
|
|
||||||
Tpl :: assign('main_pagetitle', App::get('main_pagetitle', null, 'string'));
|
|
||||||
Tpl :: assign('session_key', $_SESSION['session_key']);
|
|
||||||
|
|
||||||
// Handle CSS & JS files included
|
|
||||||
Tpl :: add_css_file(App::get('included_css_files', array(), 'array'));
|
|
||||||
Tpl :: add_js_file(App::get('included_js_files', array(), 'array'));
|
|
||||||
|
|
||||||
function define_common_template_variables($event) {
|
function define_common_template_variables($event) {
|
||||||
global $status_list, $admin;
|
global $status_list, $admin;
|
||||||
Tpl :: assign(
|
Tpl :: assign(
|
||||||
|
|
|
@ -10,11 +10,6 @@ use function EesyPHP\vardump;
|
||||||
if (php_sapi_name() == "cli")
|
if (php_sapi_name() == "cli")
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
function handle_homepage($request) {
|
|
||||||
Tpl :: display("homepage.tpl", _("Hello world !"));
|
|
||||||
}
|
|
||||||
Url :: add_url_handler('#^$#', 'handle_homepage');
|
|
||||||
|
|
||||||
function handle_search($request) {
|
function handle_search($request) {
|
||||||
global $status_list;
|
global $status_list;
|
||||||
|
|
||||||
|
|
305
example/locales/eesyphp-messages.pot
Normal file
305
example/locales/eesyphp-messages.pot
Normal file
|
@ -0,0 +1,305 @@
|
||||||
|
#: Cli.php:34
|
||||||
|
#, php-format
|
||||||
|
msgid "The CLI command '%s' already exists."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Cli.php:39
|
||||||
|
#, php-format
|
||||||
|
msgid "The CLI command '%s' handler is not callable !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Cli.php:71
|
||||||
|
#, php-format
|
||||||
|
msgid "Usage: %s [-h] [-qd] command\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Cli.php:72
|
||||||
|
msgid " -h Show this message\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Cli.php:73
|
||||||
|
msgid " -q / -d Quiet/Debug mode\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Cli.php:74
|
||||||
|
msgid " --trace Trace mode (the most verbose)\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Cli.php:75
|
||||||
|
msgid " command Command to run\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Cli.php:77
|
||||||
|
msgid "Available commands:\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Cli.php:125
|
||||||
|
msgid "Only one command could be executed !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Cli.php:153
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"Invalid parameter \"%s\".\n"
|
||||||
|
"Note: Command's parameter/argument must be place after the command."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Cli.php:178
|
||||||
|
#, php-format
|
||||||
|
msgid "An exception occured running command %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Db.php:74
|
||||||
|
msgid "Unable to connect to the database."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Email.php:141
|
||||||
|
#, php-format
|
||||||
|
msgid "</hr><p><small>Mail initialy intended for %s.</small></p>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Email.php:142
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"\n"
|
||||||
|
"\n"
|
||||||
|
"Mail initialy intended for %s."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Email.php:178
|
||||||
|
#, php-format
|
||||||
|
msgid "<p><small>%s: %s</small></p>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Email.php:179
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"\n"
|
||||||
|
"%s: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Tpl.php:339
|
||||||
|
msgid "No template specified."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Tpl.php:370
|
||||||
|
msgid "An error occurred while displaying this page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Url.php:141
|
||||||
|
msgid "Bad request"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Url.php:142
|
||||||
|
msgid "Invalid request."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Url.php:145
|
||||||
|
msgid "Authentication required"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Url.php:146
|
||||||
|
msgid "You have to be authenticated to access to this page."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Url.php:149
|
||||||
|
msgid "Access denied"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Url.php:150
|
||||||
|
msgid ""
|
||||||
|
"You do not have access to this application. If you think this is an error, "
|
||||||
|
"please contact support."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Url.php:153
|
||||||
|
msgid "Whoops ! Page not found"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Url.php:154
|
||||||
|
msgid "The requested page can not be found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Url.php:162
|
||||||
|
msgid "Error"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Url.php:163
|
||||||
|
msgid "An unknown error occurred. If problem persist, please contact support."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Url.php:226
|
||||||
|
msgid ""
|
||||||
|
"Unable to determine the requested page. If the problem persists, please "
|
||||||
|
"contact support."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Url.php:376
|
||||||
|
msgid ""
|
||||||
|
"Unable to determine the requested page (loop detected). If the problem "
|
||||||
|
"persists, please contact support."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Url.php:407
|
||||||
|
msgid "This request cannot be processed."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Url.php:420
|
||||||
|
msgid ""
|
||||||
|
"Authentication required but force_authentication function is not defined."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: Url.php:429
|
||||||
|
msgid "This request could not be processed correctly."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:114 App.php:120
|
||||||
|
msgid "Hello world !"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:130
|
||||||
|
msgid "Extract messages that need to be translated"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:132
|
||||||
|
msgid "This command could be used to generate/update lang/messages.pot file."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:138
|
||||||
|
msgid "Update messages in translation PO lang files"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:140
|
||||||
|
msgid ""
|
||||||
|
"This command could be used to init/update PO files in lang/*/LC_MESSAGES "
|
||||||
|
"directories."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:147
|
||||||
|
msgid ""
|
||||||
|
"Compile messages from existing translation PO lang files to corresponding MO "
|
||||||
|
"files and JSON catalogs"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:152
|
||||||
|
msgid ""
|
||||||
|
"This command could be used to compile PO files in lang/*/LC_MESSAGES "
|
||||||
|
"directories to MO files and as JSON catalogs in public_html/translations."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:277 I18n.php:307
|
||||||
|
msgid "Fail to list PHP files."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:296 I18n.php:326
|
||||||
|
msgid "Fail to extract messages from PHP files using xgettext."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:338
|
||||||
|
#, php-format
|
||||||
|
msgid "Fail to list JS files in '%s' static directory."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:358
|
||||||
|
msgid "Fail to extract messages from JS files using xgettext."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:374
|
||||||
|
msgid ""
|
||||||
|
"Fail to extract messages from template files using tsmarty2c.php script."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:402
|
||||||
|
msgid "Fail to merge messages using msgcat."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:416
|
||||||
|
#, php-format
|
||||||
|
msgid "Compendium file %s not found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:423
|
||||||
|
#, php-format
|
||||||
|
msgid "POT file not found (%s). Please run extract_messages first."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:435 I18n.php:543
|
||||||
|
#, php-format
|
||||||
|
msgid "Lang directory '%s' found"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:441 I18n.php:549
|
||||||
|
#, php-format
|
||||||
|
msgid "LC_MESSAGES directory not found in lang '%s' directory, ignore it."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:456
|
||||||
|
#, php-format
|
||||||
|
msgid "Fail to init messages in %s PO file using msginit (%s)."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:474
|
||||||
|
#, php-format
|
||||||
|
msgid "Fail to update messages in %s PO file using msgmerge (%s)."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:480 I18n.php:557
|
||||||
|
#, php-format
|
||||||
|
msgid "PO file not found in lang '%s' directory, ignore it."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:487 I18n.php:597
|
||||||
|
#, php-format
|
||||||
|
msgid "Fail to open root lang directory (%s)."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:513
|
||||||
|
#, php-format
|
||||||
|
msgid "Lang alias symlink found: %s -> %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:520
|
||||||
|
#, php-format
|
||||||
|
msgid "JSON catalog symlink for %s -> %s created (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:524
|
||||||
|
#, php-format
|
||||||
|
msgid "Fail to create JSON catalog symlink for %s -> %s (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:530
|
||||||
|
#, php-format
|
||||||
|
msgid "JSON catalog symlink for %s -> %s already exist (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:535
|
||||||
|
#, php-format
|
||||||
|
msgid ""
|
||||||
|
"JSON catalog file for %s already exist, but it's not a symlink to %s (%s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:570
|
||||||
|
#, php-format
|
||||||
|
msgid "Fail to compile messages from %s PO file as MO file using msgfmt (%s)."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:580
|
||||||
|
#, php-format
|
||||||
|
msgid "Fail to open %s JSON catalog file in write mode (%s)."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:585
|
||||||
|
#, php-format
|
||||||
|
msgid "Fail to write %s JSON catalog in file (%s)."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: I18n.php:590
|
||||||
|
#, php-format
|
||||||
|
msgid "%s JSON catalog writed (%s)."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: App.php:122
|
||||||
|
msgid "Hello world!"
|
||||||
|
msgstr ""
|
|
@ -1,554 +1,259 @@
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-helpers.php:5
|
#: includes/cli.php:23
|
||||||
|
#, php-format
|
||||||
|
msgid "Item #%s:\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:24
|
||||||
|
#, php-format
|
||||||
|
msgid "ID: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:25
|
||||||
|
#, php-format
|
||||||
|
msgid "Name: '%s'"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:26
|
||||||
|
#, php-format
|
||||||
|
msgid "Date: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:28
|
||||||
|
#, php-format
|
||||||
|
msgid "Description: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:29
|
||||||
|
msgid "Not set"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:31
|
||||||
|
#, php-format
|
||||||
|
msgid "Status: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:84
|
||||||
|
msgid "No item.\n"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:110
|
||||||
|
#, php-format
|
||||||
|
msgid "%d item(s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:116
|
||||||
|
msgid "List/search items"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:117
|
||||||
|
msgid "[patterns]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:119
|
||||||
|
msgid "-o|--orderby Ordering list criterion. Possible values:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:121
|
||||||
|
msgid "-r|--reverse Reverse order"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:122
|
||||||
|
msgid "-s|--status Filter on status. Possible values:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:129
|
||||||
|
msgid "You must provide a valid ID."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:135 includes/cli.php:159
|
||||||
|
#, php-format
|
||||||
|
msgid "Item #%s not found."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:143
|
||||||
|
msgid "Show item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:144
|
||||||
|
msgid "[ID]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:149
|
||||||
|
msgid "You must provide item ID."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:153
|
||||||
|
msgid "Invalid item ID"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:164
|
||||||
|
msgid "Are you sure you want to delete this item? Type 'yes' to continue: "
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:168
|
||||||
|
msgid "User cancel"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:174
|
||||||
|
#, php-format
|
||||||
|
msgid "An error occured deleting item #%d."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:181
|
||||||
|
msgid "Delete item"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:182
|
||||||
|
msgid "[item ID]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:194
|
||||||
|
msgid "Export items (as CSV)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:195
|
||||||
|
msgid "[output file path]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:210
|
||||||
|
msgid "Restore items (from CSV)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:211
|
||||||
|
msgid "[input file path]"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:278
|
||||||
|
msgid "Cron to handle item expiration"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:281
|
||||||
|
msgid "-j/--just-try Just-try mode : do not really removed expired item(s)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/cli.php:282
|
||||||
|
msgid "-m/--max-age Item expiration limit (in days, optional)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: includes/url-helpers.php:9
|
||||||
msgid "Invalid element identifier."
|
msgid "Invalid element identifier."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-helpers.php:9
|
#: includes/url-helpers.php:13 includes/url-public.php:220
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:222
|
#: includes/url-public.php:242
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:246
|
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Item #% s not found."
|
msgid "Item #% s not found."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/smarty.php:61
|
#: includes/core.php:51
|
||||||
msgid "Smarty version not supported."
|
msgid "Pending"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/smarty.php:148
|
#: includes/core.php:52
|
||||||
msgid "No template specified."
|
msgid "Validated"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/smarty.php:166
|
#: includes/core.php:53
|
||||||
msgid "An error occurred while viewing this page."
|
msgid "Refused"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:7
|
#: includes/core.php:54
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation.php:140
|
msgid "Archived"
|
||||||
msgid "Hello world !"
|
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:31
|
#: includes/url-public.php:33
|
||||||
msgid "Any"
|
msgid "Any"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:89
|
#: includes/url-public.php:91
|
||||||
msgid ""
|
msgid ""
|
||||||
"An error occurred while listing the items. If the problem persists, please "
|
"An error occurred while listing the items. If the problem persists, please "
|
||||||
"contact support."
|
"contact support."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:104
|
#: includes/url-public.php:106
|
||||||
msgid "Search"
|
msgid "Search"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:128
|
#: includes/url-public.php:128
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Element %s"
|
msgid "Element %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:142
|
#: includes/url-public.php:142
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "The element '% s' has been created."
|
msgid "The element '% s' has been created."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:146
|
#: includes/url-public.php:146
|
||||||
msgid "An error occurred while saving this item."
|
msgid "An error occurred while saving this item."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:153
|
#: includes/url-public.php:153
|
||||||
msgid ""
|
msgid ""
|
||||||
"There are errors preventing this item from being saved. Please correct them "
|
"There are errors preventing this item from being saved. Please correct them "
|
||||||
"before attempting to add this item."
|
"before attempting to add this item."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:160
|
#: includes/url-public.php:160
|
||||||
msgid "New"
|
msgid "New"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:170
|
#: includes/url-public.php:170
|
||||||
msgid "You cannot edit this item."
|
msgid "You cannot edit this item."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:183
|
#: includes/url-public.php:183
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "You have not made any changes to element '% s'."
|
msgid "You have not made any changes to element '% s'."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:187
|
#: includes/url-public.php:187
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "The element '% s' has been updated successfully."
|
msgid "The element '% s' has been updated successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:191
|
#: includes/url-public.php:191
|
||||||
msgid "An error occurred while updating this item."
|
msgid "An error occurred while updating this item."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:199
|
#: includes/url-public.php:199
|
||||||
msgid ""
|
msgid ""
|
||||||
"There are errors preventing this item from being saved. Please correct them "
|
"There are errors preventing this item from being saved. Please correct them "
|
||||||
"before attempting to save your changes."
|
"before attempting to save your changes."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:211
|
#: includes/url-public.php:211
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "Element %s: Modification"
|
msgid "Element %s: Modification"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:226
|
#: includes/url-public.php:224
|
||||||
msgid "This item is already archived."
|
msgid "This item is already archived."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:229
|
#: includes/url-public.php:227
|
||||||
msgid "You cannot archive this item."
|
msgid "You cannot archive this item."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:232
|
#: includes/url-public.php:230
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "The element '% s' has been archived successfully."
|
msgid "The element '% s' has been archived successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:235
|
#: includes/url-public.php:233
|
||||||
msgid "An error occurred while archiving this item."
|
msgid "An error occurred while archiving this item."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:249
|
#: includes/url-public.php:245
|
||||||
msgid "You cannot delete this item."
|
msgid "You cannot delete this item."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:252
|
#: includes/url-public.php:248
|
||||||
#, php-format
|
#, php-format
|
||||||
msgid "The element '% s' has been deleted successfully."
|
msgid "The element '% s' has been deleted successfully."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url-public.php:255
|
#: includes/url-public.php:251
|
||||||
msgid "An error occurred while deleting this item."
|
msgid "An error occurred while deleting this item."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/db.php:31
|
|
||||||
msgid "Unable to connect to the database."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/core.php:44
|
|
||||||
msgid "Pending"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/core.php:45
|
|
||||||
msgid "Validated"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/core.php:46
|
|
||||||
msgid "Refused"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/core.php:47
|
|
||||||
msgid "Archived"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:59
|
|
||||||
msgid "Fail to list PHP files."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:76
|
|
||||||
msgid "Fail to extract messages from PHP files using xgettext."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:86
|
|
||||||
msgid "Fail to list JS files."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:103
|
|
||||||
msgid "Fail to extract messages from JS files using xgettext."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:116
|
|
||||||
msgid ""
|
|
||||||
"Fail to extract messages from template files using tsmarty2c.php script."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:142
|
|
||||||
msgid "Fail to merge messages using msgcat."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:147
|
|
||||||
msgid "Extract messages that need to be translated"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:149
|
|
||||||
msgid "This command could be used to generate/update lang/messages.pot file."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:165
|
|
||||||
#, php-format
|
|
||||||
msgid "Compendium file %s not found."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:172
|
|
||||||
#, php-format
|
|
||||||
msgid "POT file not found (%s). Please run extract_messages first."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:184
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:301
|
|
||||||
#, php-format
|
|
||||||
msgid "Lang directory '%s' found"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:190
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:307
|
|
||||||
#, php-format
|
|
||||||
msgid "LC_MESSAGES directory not found in lang '%s' directory, ignore it."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:205
|
|
||||||
#, php-format
|
|
||||||
msgid "Fail to init messages in %s PO file using msginit (%s)."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:223
|
|
||||||
#, php-format
|
|
||||||
msgid "Fail to update messages in %s PO file using msgmerge (%s)."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:229
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:315
|
|
||||||
#, php-format
|
|
||||||
msgid "PO file not found in lang '%s' directory, ignore it."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:236
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:356
|
|
||||||
#, php-format
|
|
||||||
msgid "Fail to open root lang directory (%s)."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:241
|
|
||||||
msgid "Update messages in translation PO lang files"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:243
|
|
||||||
msgid ""
|
|
||||||
"This command could be used to init/update PO files in lang/*/LC_MESSAGES "
|
|
||||||
"directories."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:270
|
|
||||||
#, php-format
|
|
||||||
msgid "Lang alias symlink found: %s -> %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:277
|
|
||||||
#, php-format
|
|
||||||
msgid "JSON catalog symlink for %s -> %s created (%s)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:281
|
|
||||||
#, php-format
|
|
||||||
msgid "Fail to create JSON catalog symlink for %s -> %s (%s)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:287
|
|
||||||
#, php-format
|
|
||||||
msgid "JSON catalog symlink for %s -> %s already exist (%s)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:293
|
|
||||||
#, php-format
|
|
||||||
msgid ""
|
|
||||||
"JSON catalog file for %s already exist, but it's not a symlink to %s (%s)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:329
|
|
||||||
#, php-format
|
|
||||||
msgid "Fail to compile messages from %s PO file as MO file using msgfmt (%s)."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:339
|
|
||||||
#, php-format
|
|
||||||
msgid "Fail to open %s JSON catalog file in write mode (%s)."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:344
|
|
||||||
#, php-format
|
|
||||||
msgid "Fail to write %s JSON catalog in file (%s)."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:349
|
|
||||||
#, php-format
|
|
||||||
msgid "%s JSON catalog writed (%s)."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:362
|
|
||||||
msgid ""
|
|
||||||
"Compile messages from existing translation PO lang files to corresponding MO "
|
|
||||||
"files and JSON catalogs"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/translation-cli.php:367
|
|
||||||
msgid ""
|
|
||||||
"This command could be used to compile PO files in lang/*/LC_MESSAGES "
|
|
||||||
"directories to MO files and as JSON catalogs in public_html/translations."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/mail.php:14
|
|
||||||
#, php-format
|
|
||||||
msgid ""
|
|
||||||
"\n"
|
|
||||||
"\n"
|
|
||||||
"\n"
|
|
||||||
"Mail initialy intended for %s."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url.php:98
|
|
||||||
msgid "Bad request"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url.php:99
|
|
||||||
msgid "Invalid request."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url.php:102
|
|
||||||
msgid "Authentication required"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url.php:103
|
|
||||||
msgid "You have to be authenticated to access to this page."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url.php:106
|
|
||||||
msgid "Access denied"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url.php:107
|
|
||||||
msgid ""
|
|
||||||
"You do not have access to this application. If you think this is an error, "
|
|
||||||
"please contact support."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url.php:110
|
|
||||||
msgid "Whoops ! Page not found"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url.php:111
|
|
||||||
msgid "The requested page can not be found."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url.php:119
|
|
||||||
msgid "Error"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url.php:120
|
|
||||||
msgid "An unknown error occurred. If problem persist, please contact support."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url.php:165
|
|
||||||
msgid ""
|
|
||||||
"Unable to determine the requested page. If the problem persists, please "
|
|
||||||
"contact support."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url.php:318
|
|
||||||
msgid ""
|
|
||||||
"Unable to determine the requested page (loop detected). If the problem "
|
|
||||||
"persists, please contact support."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url.php:347
|
|
||||||
msgid "This request cannot be processed."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url.php:360
|
|
||||||
msgid ""
|
|
||||||
"Authentication required but force_authentication function is not defined."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/url.php:368
|
|
||||||
msgid "This request could not be processed correctly."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:8
|
|
||||||
#, php-format
|
|
||||||
msgid "The CLI command '%s' already exists."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:13
|
|
||||||
#, php-format
|
|
||||||
msgid "The CLI command '%s' handler is not callable !"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:54
|
|
||||||
#, php-format
|
|
||||||
msgid "Usage: %s [-h] [-qd] command\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:55
|
|
||||||
msgid " -h Show this message\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:56
|
|
||||||
msgid " -q / -d Quiet/Debug mode\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:57
|
|
||||||
msgid " --trace Trace mode (the most verbose)\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:58
|
|
||||||
msgid " command Command to run\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:60
|
|
||||||
msgid "Available commands:\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:102
|
|
||||||
msgid "Only one command could be executed !"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:127
|
|
||||||
#, php-format
|
|
||||||
msgid ""
|
|
||||||
"Invalid parameter \"%s\".\n"
|
|
||||||
"Note: Command's parameter/argument must be place after the command."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:149
|
|
||||||
#, php-format
|
|
||||||
msgid "An exception occured running command %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:155
|
|
||||||
#, php-format
|
|
||||||
msgid "Item #%s:\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:156
|
|
||||||
#, php-format
|
|
||||||
msgid "ID: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:157
|
|
||||||
#, php-format
|
|
||||||
msgid "Name: '%s'"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:158
|
|
||||||
#, php-format
|
|
||||||
msgid "Date: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:160
|
|
||||||
#, php-format
|
|
||||||
msgid "Description: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:161
|
|
||||||
msgid "Not set"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:163
|
|
||||||
#, php-format
|
|
||||||
msgid "Status: %s"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:216
|
|
||||||
msgid "No item.\n"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:242
|
|
||||||
#, php-format
|
|
||||||
msgid "%d item(s)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:248
|
|
||||||
msgid "List/search items"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:249
|
|
||||||
msgid "[patterns]"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:251
|
|
||||||
msgid "-o|--orderby Ordering list criterion. Possible values:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:253
|
|
||||||
msgid "-r|--reverse Reverse order"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:254
|
|
||||||
msgid "-s|--status Filter on status. Possible values:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:261
|
|
||||||
msgid "You must provide a valid ID."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:267
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:291
|
|
||||||
#, php-format
|
|
||||||
msgid "Item #%s not found."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:275
|
|
||||||
msgid "Show item"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:276
|
|
||||||
msgid "[ID]"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:281
|
|
||||||
msgid "You must provide item ID."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:285
|
|
||||||
msgid "Invalid item ID"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:296
|
|
||||||
msgid "Are you sure you want to delete this item? Type 'yes' to continue: "
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:300
|
|
||||||
msgid "User cancel"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:306
|
|
||||||
#, php-format
|
|
||||||
msgid "An error occured deleting item #%d."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:313
|
|
||||||
msgid "Delete item"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:314
|
|
||||||
msgid "[item ID]"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:326
|
|
||||||
msgid "Export items (as CSV)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:327
|
|
||||||
msgid "[output file path]"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:342
|
|
||||||
msgid "Restore items (from CSV)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:343
|
|
||||||
msgid "[input file path]"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:412
|
|
||||||
msgid "Cron to handle item expiration"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:415
|
|
||||||
msgid "-j/--just-try Just-try mode : do not really removed expired item(s)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: /home/brenard/dev/eesyphp/includes/cli.php:416
|
|
||||||
msgid "-m/--max-age Item expiration limit (in days, optional)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{extends file='empty.tpl'}
|
{extends file='Tpl:empty.tpl'}
|
||||||
{block name="content"}
|
{block name="content"}
|
||||||
<form enctype="multipart/form-data" method="post" class="container" id="item-form">
|
<form enctype="multipart/form-data" method="post" class="container" id="item-form">
|
||||||
<input type='hidden' name='session_key' value='{$session_key|escape:'quotes'}' />
|
<input type='hidden' name='session_key' value='{$session_key|escape:'quotes'}' />
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{extends file='empty.tpl'}
|
{extends file='Tpl:empty.tpl'}
|
||||||
{block name="pagetitle"}{/block}
|
{block name="pagetitle"}{/block}
|
||||||
{block name="content"}
|
{block name="content"}
|
||||||
<div class="jumbotron">
|
<div class="jumbotron">
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{extends file='empty.tpl'}
|
{extends file='Tpl:empty.tpl'}
|
||||||
{block name="content"}
|
{block name="content"}
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-auto">
|
<div class="col-md-auto">
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
{extends file='empty.tpl'}
|
{extends file='Tpl:empty.tpl'}
|
||||||
{block name="content"}
|
{block name="content"}
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="form-group row">
|
<div class="form-group row">
|
||||||
|
|
1
example/vendor
Symbolic link
1
example/vendor
Symbolic link
|
@ -0,0 +1 @@
|
||||||
|
../vendor
|
|
@ -2,7 +2,8 @@ parameters:
|
||||||
level: 5
|
level: 5
|
||||||
paths:
|
paths:
|
||||||
- src
|
- src
|
||||||
- example
|
- example/includes
|
||||||
|
- example/public_html
|
||||||
excludePaths:
|
excludePaths:
|
||||||
- example/includes/config.local.php
|
- example/includes/config.local.php
|
||||||
- example/data/tmp/templates_c
|
- example/data/tmp/templates_c
|
||||||
|
|
18
src/App.php
18
src/App.php
|
@ -58,10 +58,12 @@ class App {
|
||||||
Log::init();
|
Log::init();
|
||||||
if (self :: get('session.enabled', true, 'bool'))
|
if (self :: get('session.enabled', true, 'bool'))
|
||||||
Session::init();
|
Session::init();
|
||||||
if (self :: get('template.enabled', true, 'bool'))
|
if (self :: get('templates.enabled', true, 'bool'))
|
||||||
Tpl :: init();
|
Tpl :: init();
|
||||||
if (self :: get('url.enabled', true, 'bool'))
|
if (self :: get('url.enabled', true, 'bool')) {
|
||||||
Url::init();
|
Url::init();
|
||||||
|
Url :: add_url_handler('#^$#', array('EesyPHP\\App', 'handle_homepage'));
|
||||||
|
}
|
||||||
if (self :: get('mail.enabled', true, 'bool'))
|
if (self :: get('mail.enabled', true, 'bool'))
|
||||||
Email :: init();
|
Email :: init();
|
||||||
if (self :: get('i18n.enabled', true, 'bool'))
|
if (self :: get('i18n.enabled', true, 'bool'))
|
||||||
|
@ -108,4 +110,16 @@ class App {
|
||||||
return self :: $root_directory_path?self :: $root_directory_path:'.';
|
return self :: $root_directory_path?self :: $root_directory_path:'.';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default homepage handler
|
||||||
|
* @param UrlRequest $request
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function handle_homepage($request) {
|
||||||
|
if (Tpl::initialized())
|
||||||
|
Tpl :: display("homepage.tpl", _("Hello world !"));
|
||||||
|
else
|
||||||
|
echo "<h1>"._("Hello world!")."</h1>";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
60
src/I18n.php
60
src/I18n.php
|
@ -266,11 +266,42 @@ class I18n {
|
||||||
// Store list of generated POT files
|
// Store list of generated POT files
|
||||||
$pot_files = array();
|
$pot_files = array();
|
||||||
|
|
||||||
|
// List EesyPHP PHP files to parse
|
||||||
|
$eesyphp_php_files = run_external_command(
|
||||||
|
array('find', '-name', "'*.php'"),
|
||||||
|
null, // no STDIN data
|
||||||
|
false, // do not escape command args (already done)
|
||||||
|
__DIR__ // Run from EesyPHP src directory
|
||||||
|
);
|
||||||
|
if (!is_array($eesyphp_php_files) || $eesyphp_php_files[0] != 0) {
|
||||||
|
Log :: fatal(_("Fail to list PHP files."));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extract messages from EesyPHP PHP files using xgettext
|
||||||
|
$result = run_external_command(
|
||||||
|
array(
|
||||||
|
"xgettext",
|
||||||
|
"--from-code utf-8",
|
||||||
|
"--language=PHP",
|
||||||
|
"-o", self :: $root_path."/eesyphp-messages.pot", // Output
|
||||||
|
"--omit-header", // No POT header
|
||||||
|
"--keyword=___", // Handle custom ___() translation function
|
||||||
|
"--files=-" // Read files to parse from STDIN
|
||||||
|
),
|
||||||
|
$eesyphp_php_files[1], // Pass PHP files list via STDIN
|
||||||
|
true, // Escape parameters
|
||||||
|
__DIR__ // Run from EesyPHP src directory
|
||||||
|
);
|
||||||
|
if (!is_array($result) || $result[0] != 0)
|
||||||
|
Log :: fatal(_("Fail to extract messages from PHP files using xgettext."));
|
||||||
|
$pot_files[] = self :: $root_path."/eesyphp-messages.pot";
|
||||||
|
|
||||||
// List PHP files to parse
|
// List PHP files to parse
|
||||||
$php_files = run_external_command(
|
$php_files = run_external_command(
|
||||||
array('find', escapeshellarg(App :: root_directory_path()), '-name', "'*.php'"),
|
array('find', '-name', "'*.php'"),
|
||||||
null, // no STDIN data
|
null, // no STDIN data
|
||||||
false // do not escape command args (already done)
|
false, // do not escape command args (already done)
|
||||||
|
App :: root_directory_path() // Run from Application root directory
|
||||||
);
|
);
|
||||||
if (!is_array($php_files) || $php_files[0] != 0) {
|
if (!is_array($php_files) || $php_files[0] != 0) {
|
||||||
Log :: fatal(_("Fail to list PHP files."));
|
Log :: fatal(_("Fail to list PHP files."));
|
||||||
|
@ -287,20 +318,27 @@ class I18n {
|
||||||
"--keyword=___", // Handle custom ___() translation function
|
"--keyword=___", // Handle custom ___() translation function
|
||||||
"--files=-" // Read files to parse from STDIN
|
"--files=-" // Read files to parse from STDIN
|
||||||
),
|
),
|
||||||
$php_files[1] // Pass PHP files list via STDIN
|
$php_files[1], // Pass PHP files list via STDIN
|
||||||
|
true, // Escape parameters
|
||||||
|
App :: root_directory_path() // Run from EesyPHP src directory
|
||||||
);
|
);
|
||||||
if (!is_array($result) || $result[0] != 0)
|
if (!is_array($result) || $result[0] != 0)
|
||||||
Log :: fatal(_("Fail to extract messages from PHP files using xgettext."));
|
Log :: fatal(_("Fail to extract messages from PHP files using xgettext."));
|
||||||
$pot_files[] = self :: $root_path."/php-messages.pot";
|
$pot_files[] = self :: $root_path."/php-messages.pot";
|
||||||
|
|
||||||
// List JS files to parse
|
// List JS files to parse
|
||||||
$js_files = run_external_command(
|
$js_files = array();
|
||||||
array('find', escapeshellarg(App :: root_directory_path()."/public_html/js"), '-name', "'*.js'"),
|
foreach(Tpl::static_directories() as $static_directory) {
|
||||||
|
$result = run_external_command(
|
||||||
|
array('find', escapeshellarg($static_directory), '-name', "'*.js'"),
|
||||||
null, // no STDIN data
|
null, // no STDIN data
|
||||||
false // do not escape command args (already done)
|
false // do not escape command args (already done)
|
||||||
);
|
);
|
||||||
if (!is_array($js_files) || $js_files[0] != 0) {
|
if (!is_array($result) || $result[0] != 0) {
|
||||||
Log :: fatal(_("Fail to list JS files."));
|
Log :: fatal(_("Fail to list JS files in '%s' static directory."), $static_directory);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$js_files[] = $result[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extract messages from JS files using xgettext
|
// Extract messages from JS files using xgettext
|
||||||
|
@ -314,7 +352,7 @@ class I18n {
|
||||||
"--keyword=___", // Handle custom ___() translation function
|
"--keyword=___", // Handle custom ___() translation function
|
||||||
"--files=-" // Read files to parse from STDIN
|
"--files=-" // Read files to parse from STDIN
|
||||||
),
|
),
|
||||||
$js_files[1] // Pass JS files list via STDIN
|
implode("\n", $js_files) // Pass JS files list via STDIN
|
||||||
);
|
);
|
||||||
if (!is_array($result) || $result[0] != 0)
|
if (!is_array($result) || $result[0] != 0)
|
||||||
Log :: fatal(_("Fail to extract messages from JS files using xgettext."));
|
Log :: fatal(_("Fail to extract messages from JS files using xgettext."));
|
||||||
|
@ -323,10 +361,12 @@ class I18n {
|
||||||
if (Tpl :: initialized()) {
|
if (Tpl :: initialized()) {
|
||||||
// Extract messages from templates files using tsmarty2c.php
|
// Extract messages from templates files using tsmarty2c.php
|
||||||
$result = run_external_command(
|
$result = run_external_command(
|
||||||
array (
|
array_merge(
|
||||||
|
array(
|
||||||
App :: root_directory_path()."/vendor/bin/tsmarty2c.php",
|
App :: root_directory_path()."/vendor/bin/tsmarty2c.php",
|
||||||
"-o", self :: $root_path."/templates-messages.pot",
|
"-o", self :: $root_path."/templates-messages.pot",
|
||||||
Tpl :: templates_directory(),
|
),
|
||||||
|
Tpl :: templates_directories(),
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
if (!is_array($result) || $result[0] != 0)
|
if (!is_array($result) || $result[0] != 0)
|
||||||
|
|
196
src/Tpl.php
196
src/Tpl.php
|
@ -22,10 +22,10 @@ class Tpl {
|
||||||
public static $smarty_security_policy = null;
|
public static $smarty_security_policy = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Smarty templates directory path
|
* Smarty templates directories path with their priority
|
||||||
* @var string
|
* @var array<string,int>
|
||||||
*/
|
*/
|
||||||
public static string $templates_dir;
|
public static array $templates_directories = array();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Smarty cache templates directory path
|
* Smarty cache templates directory path
|
||||||
|
@ -40,8 +40,8 @@ class Tpl {
|
||||||
public static bool $_debug_ajax;
|
public static bool $_debug_ajax;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Static directories
|
* Static directories path with their priority
|
||||||
* @var array
|
* @var array<string,array>
|
||||||
*/
|
*/
|
||||||
private static array $static_directories = array();
|
private static array $static_directories = array();
|
||||||
|
|
||||||
|
@ -72,46 +72,82 @@ class Tpl {
|
||||||
/**
|
/**
|
||||||
* Initialization
|
* Initialization
|
||||||
* @param string $templates_dir Smarty templates directory path
|
* @param string $templates_dir Smarty templates directory path
|
||||||
* (optional, default: from template.directory config key)
|
* (optional, default: from templates.directory config key)
|
||||||
* @param string $templates_c_dir Smarty cache templates directory path
|
* @param string $templates_c_dir Smarty cache templates directory path
|
||||||
* (optional, default: from template.cache_directory config key)
|
* (optional, default: from templates.cache_directory config key)
|
||||||
* @param bool $debug_ajax Enable/disable AJAX returned data debugging in logs
|
* @param bool $debug_ajax Enable/disable AJAX returned data debugging in logs
|
||||||
* (optional, default: from template.debug_ajax or debug_ajax config keys if set,
|
* (optional, default: from templates.debug_ajax or debug_ajax config keys if set,
|
||||||
* false otherwise)
|
* false otherwise)
|
||||||
* @param bool $static_root_url Configure custom root URL path for static files
|
* @param bool $static_root_url Configure custom root URL path for static files
|
||||||
* (optional, default: from template.static_root_url config key if set,
|
* (optional, default: from templates.static_root_url config key if set,
|
||||||
* '/static' otherwise. Set to False to disable)
|
* '/static' otherwise. Set to False to disable)
|
||||||
* @return void
|
* @return void
|
||||||
*/
|
*/
|
||||||
public static function init($templates_dir=null, $templates_c_dir=null, $debug_ajax=null,
|
public static function init($templates_dir=null, $templates_c_dir=null, $debug_ajax=null,
|
||||||
$static_root_url=null) {
|
$static_root_url=null) {
|
||||||
// Check templates/templates_c directories
|
// Handle templates directories
|
||||||
|
$default_templates_directory = realpath(__DIR__."/../templates");
|
||||||
|
self :: register_templates_directory($default_templates_directory);
|
||||||
if (is_null($templates_dir))
|
if (is_null($templates_dir))
|
||||||
$templates_dir = App::get('template.directory', null, 'string');
|
$templates_dir = App::get('templates.directory', null, 'string');
|
||||||
if (is_null($templates_c_dir))
|
if ($templates_dir) {
|
||||||
$templates_c_dir = App::get('template.cache_directory', null, 'string');
|
if (!is_dir($templates_dir))
|
||||||
if (!$templates_dir || !is_dir($templates_dir)) {
|
Log :: fatal("Template directory not found (%s)", $templates_dir);
|
||||||
Log :: fatal(
|
self :: register_templates_directory($templates_dir);
|
||||||
"Template directory not found (%s)",
|
|
||||||
$templates_dir?$templates_dir:'not set');
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
if (!$templates_c_dir || !is_dir($templates_c_dir) || !is_writable($templates_c_dir)) {
|
|
||||||
|
// Handle and check templates_c directories
|
||||||
|
if (is_null($templates_c_dir))
|
||||||
|
$templates_c_dir = App::get('templates.cache_directory', null, 'string');
|
||||||
|
if ($templates_c_dir) {
|
||||||
|
if (!is_dir($templates_c_dir) || !is_writable($templates_c_dir)) {
|
||||||
Log :: fatal(
|
Log :: fatal(
|
||||||
"Template cache directory not found or not writable (%s)",
|
"Template cache directory not found or not writable (%s)",
|
||||||
$templates_c_dir?$templates_c_dir:'not set');
|
$templates_c_dir);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$public_root_url = Url :: public_root_url();
|
||||||
|
if ($public_root_url != '/') {
|
||||||
|
$unique_name = preg_replace('#^https?://#', '', $public_root_url);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$root_directory_path = App::root_directory_path();
|
||||||
|
if ($root_directory_path == '.') {
|
||||||
|
Log :: fatal(
|
||||||
|
'Fail to compute a unique templates cache directory for this application. An public '.
|
||||||
|
'root URL or an application root directory must be set if you do not provide it at '.
|
||||||
|
'initialization (or via config parameter).');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$unique_name = $root_directory_path;
|
||||||
|
if (substr($unique_name, 0, 1) == '/')
|
||||||
|
$unique_name = substr($unique_name, 1);
|
||||||
|
if (substr($unique_name, -1) == '/')
|
||||||
|
$unique_name = substr($unique_name, 0, -1);
|
||||||
|
}
|
||||||
|
$templates_c_dir = sys_get_temp_dir().str_replace(
|
||||||
|
'/', '_', "eesyphp_templates_cache_$unique_name"
|
||||||
|
);
|
||||||
|
if (!is_dir($templates_c_dir) && !mkdir($templates_c_dir)) {
|
||||||
|
Log :: fatal(
|
||||||
|
'Fail to create application templates cache directory (%s)',
|
||||||
|
$templates_c_dir);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
self :: $smarty = new Smarty();
|
self :: $smarty = new Smarty();
|
||||||
self :: $smarty->setTemplateDir($templates_dir);
|
self :: $smarty->setTemplateDir($default_templates_directory);
|
||||||
self :: $smarty->setCompileDir($templates_c_dir);
|
self :: $smarty->setCompileDir($templates_c_dir);
|
||||||
|
self :: $smarty->registerResource('Tpl', new TplSmartyResource());
|
||||||
if (is_null($debug_ajax))
|
if (is_null($debug_ajax))
|
||||||
$debug_ajax = App::get('template.debug_ajax', App::get('debug_ajax'));
|
$debug_ajax = App::get('templates.debug_ajax', App::get('debug_ajax'));
|
||||||
self :: $_debug_ajax = boolval($debug_ajax);
|
self :: $_debug_ajax = boolval($debug_ajax);
|
||||||
Log :: register_fatal_error_handler(array('\\EesyPHP\\Tpl', 'fatal_error'));
|
Log :: register_fatal_error_handler(array('\\EesyPHP\\Tpl', 'fatal_error'));
|
||||||
|
|
||||||
if (is_null($static_root_url))
|
if (is_null($static_root_url))
|
||||||
$static_root_url = App::get('template.static_root_url', 'static/', 'string');
|
$static_root_url = App::get('templates.static_root_url', 'static/', 'string');
|
||||||
if ($static_root_url) {
|
if ($static_root_url) {
|
||||||
if (substr($static_root_url, 0, 1) == '/')
|
if (substr($static_root_url, 0, 1) == '/')
|
||||||
$static_root_url = substr($static_root_url, 1);
|
$static_root_url = substr($static_root_url, 1);
|
||||||
|
@ -269,7 +305,14 @@ class Tpl {
|
||||||
*/
|
*/
|
||||||
protected static function define_common_variables($pagetitle=null) {
|
protected static function define_common_variables($pagetitle=null) {
|
||||||
global $auth_user;
|
global $auth_user;
|
||||||
|
self :: assign('public_root_url', Url :: public_root_url());
|
||||||
self :: assign('pagetitle', $pagetitle);
|
self :: assign('pagetitle', $pagetitle);
|
||||||
|
self :: assign('main_pagetitle', App::get('main_pagetitle', null, 'string'));
|
||||||
|
self :: assign('session_key', isset($_SESSION['session_key'])?$_SESSION['session_key']:null);
|
||||||
|
|
||||||
|
// Handle CSS & JS files included
|
||||||
|
self :: add_css_file(App::get('templates.included_css_files', array(), 'array'));
|
||||||
|
self :: add_js_file(App::get('templates.included_js_files', array(), 'array'));
|
||||||
|
|
||||||
// Messages
|
// Messages
|
||||||
self :: assign('errors', (isset($_SESSION['errors'])?$_SESSION['errors']:array()));
|
self :: assign('errors', (isset($_SESSION['errors'])?$_SESSION['errors']:array()));
|
||||||
|
@ -319,7 +362,7 @@ class Tpl {
|
||||||
try {
|
try {
|
||||||
Hook :: trigger('before_displaying_template');
|
Hook :: trigger('before_displaying_template');
|
||||||
self :: define_common_variables($pagetitle);
|
self :: define_common_variables($pagetitle);
|
||||||
self :: $smarty->display($template);
|
self :: $smarty->display("Tpl:$template");
|
||||||
}
|
}
|
||||||
catch (Exception $e) {
|
catch (Exception $e) {
|
||||||
Log :: exception($e, "Smarty - An exception occured displaying template '$template'");
|
Log :: exception($e, "Smarty - An exception occured displaying template '$template'");
|
||||||
|
@ -413,11 +456,93 @@ class Tpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the templates directory path
|
* Get the templates directories path
|
||||||
* @return string|null
|
* @return array<string>
|
||||||
*/
|
*/
|
||||||
public static function templates_directory() {
|
public static function templates_directories() {
|
||||||
return isset(self :: $templates_directory)?self :: $templates_directory:null;
|
return array_keys(self :: $templates_directories);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register a templates directory
|
||||||
|
* @param string $path The templates directory path
|
||||||
|
* @param int|null $priority The priority of this templates directory
|
||||||
|
* (optional, default: prior than all other registered directories)
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function register_templates_directory($path, $priority=null) {
|
||||||
|
if (!is_dir($path)) {
|
||||||
|
Log :: fatal(
|
||||||
|
'register_templates_directory(%s): this templates directory does not exists',
|
||||||
|
$path);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (substr($path, -1) == '/')
|
||||||
|
$path = substr($path, 0, -1);
|
||||||
|
if (is_null($priority)) {
|
||||||
|
$priority = (
|
||||||
|
!empty(self :: $templates_directories)?
|
||||||
|
max(self :: $templates_directories) + 1:
|
||||||
|
100
|
||||||
|
);
|
||||||
|
}
|
||||||
|
Log :: trace(
|
||||||
|
'Register templates directory "%s" with priority %d',
|
||||||
|
$path, $priority);
|
||||||
|
self :: $templates_directories[$path] = $priority;
|
||||||
|
arsort(self :: $templates_directories);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resolve templates path against registered templates directories
|
||||||
|
* @param string $path
|
||||||
|
* @return string|false
|
||||||
|
*/
|
||||||
|
public static function resolve_templates_path($path) {
|
||||||
|
foreach(array_keys(self :: $templates_directories) as $dir) {
|
||||||
|
$fullpath = "$dir/$path";
|
||||||
|
if (file_exists($fullpath)) {
|
||||||
|
Log::trace('Templates file "%s" resolved as "%s"', $path, $fullpath);
|
||||||
|
return $fullpath;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Log::trace('Templates file "%s" not found', $path);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the content of a Smarty template file.
|
||||||
|
*
|
||||||
|
* @param string $template The template name (eg: base.tpl)
|
||||||
|
*
|
||||||
|
* @return string The content of the Smarty template file
|
||||||
|
**/
|
||||||
|
public static function get_template_source($template) {
|
||||||
|
$path = self :: resolve_templates_path($template);
|
||||||
|
if (!is_readable($path)) {
|
||||||
|
// No error return with Smarty3 and highter because it's call
|
||||||
|
// template name in lower first systematically
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
return file_get_contents($path);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return the timestamp of the last change of a Smarty
|
||||||
|
* template file.
|
||||||
|
*
|
||||||
|
* @param string $template The template name (eg: empty.tpl)
|
||||||
|
*
|
||||||
|
* @return int|null The timestamp of the last change of the Smarty template file
|
||||||
|
**/
|
||||||
|
public static function get_template_timestamp($template) {
|
||||||
|
$path = self :: resolve_templates_path($template);
|
||||||
|
if (is_file($path)) {
|
||||||
|
$time = filemtime($path);
|
||||||
|
if ($time)
|
||||||
|
return $time;
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -433,6 +558,19 @@ class Tpl {
|
||||||
return $value;
|
return $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the static directories path
|
||||||
|
* @return array<string>
|
||||||
|
*/
|
||||||
|
public static function static_directories() {
|
||||||
|
$result = array();
|
||||||
|
foreach(self :: $static_directories as $root_url => $dirs)
|
||||||
|
foreach(array_keys($dirs) as $dir)
|
||||||
|
if (!in_array($dir, $result))
|
||||||
|
$result[] = $dir;
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Register a static directory
|
* Register a static directory
|
||||||
* @param string $path The static directory path
|
* @param string $path The static directory path
|
||||||
|
@ -477,7 +615,7 @@ class Tpl {
|
||||||
$path, $root_url, $priority);
|
$path, $root_url, $priority);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (substr($path, -1) == PATH_SEPARATOR)
|
if (substr($path, -1) == '/')
|
||||||
$path = substr($path, 0, -1);
|
$path = substr($path, 0, -1);
|
||||||
self :: $static_directories[$root_url][$path] = $priority;
|
self :: $static_directories[$root_url][$path] = $priority;
|
||||||
arsort(self :: $static_directories[$root_url]);
|
arsort(self :: $static_directories[$root_url]);
|
||||||
|
|
44
src/TplSmartyResource.php
Normal file
44
src/TplSmartyResource.php
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace EesyPHP;
|
||||||
|
use Smarty_Resource_Custom;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Smarty ressource for EesyPHP templates
|
||||||
|
*
|
||||||
|
* @author Benjamin Renard <brenard@zionetrix.net>
|
||||||
|
*/
|
||||||
|
class TplSmartyResource extends Smarty_Resource_Custom {
|
||||||
|
|
||||||
|
// prepared fetch() statement
|
||||||
|
protected $fetch;
|
||||||
|
// prepared fetchTimestamp() statement
|
||||||
|
protected $mtime;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch a template and its modification time
|
||||||
|
*
|
||||||
|
* @param string $name template name
|
||||||
|
* @param string $source template source
|
||||||
|
* @param integer $mtime template modification timestamp (epoch)
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
protected function fetch($name, &$source, &$mtime) {
|
||||||
|
$source = Tpl :: get_template_source($name);
|
||||||
|
$mtime = Tpl :: get_template_timestamp($name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch a template's modification time
|
||||||
|
*
|
||||||
|
* Note: implementing this method is optional. Only implement it if modification times can be
|
||||||
|
* accessed faster than loading the comple template source.
|
||||||
|
*
|
||||||
|
* @param string $name template name
|
||||||
|
* @return integer timestamp (epoch) the template was modified
|
||||||
|
*/
|
||||||
|
protected function fetchTimestamp($name) {
|
||||||
|
return Tpl :: get_template_timestamp($name);
|
||||||
|
}
|
||||||
|
}
|
|
@ -515,6 +515,14 @@ class Url {
|
||||||
if (is_bool($value)) self :: $_api_mode = $value;
|
if (is_bool($value)) self :: $_api_mode = $value;
|
||||||
return self :: $_api_mode;
|
return self :: $_api_mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get public root URL
|
||||||
|
* @return string
|
||||||
|
*/
|
||||||
|
public static function public_root_url() {
|
||||||
|
return (self :: $public_root_url?self :: $public_root_url:'/');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# vim: tabstop=2 shiftwidth=2 softtabstop=2 expandtab
|
# vim: tabstop=2 shiftwidth=2 softtabstop=2 expandtab
|
||||||
|
|
|
@ -202,11 +202,14 @@ function delete_directory($dir, $recursive=true) {
|
||||||
* @param $data_stdin string|null The command arguments (optional, default: null)
|
* @param $data_stdin string|null The command arguments (optional, default: null)
|
||||||
* @param $escape_command_args boolean If true, the command will be escaped
|
* @param $escape_command_args boolean If true, the command will be escaped
|
||||||
* (optional, default: true)
|
* (optional, default: true)
|
||||||
|
* @param string|null $cwd The initial working dir for the command
|
||||||
|
* (optional, default: null = use current PHP process working
|
||||||
|
* directory)
|
||||||
*
|
*
|
||||||
* @return false|array An array of return code, stdout and stderr result or False in case of fatal
|
* @return false|array An array of return code, stdout and stderr result or False in case of fatal
|
||||||
* error
|
* error
|
||||||
**/
|
**/
|
||||||
function run_external_command($command, $data_stdin=null, $escape_command_args=true) {
|
function run_external_command($command, $data_stdin=null, $escape_command_args=true, $cwd=null) {
|
||||||
if (is_array($command))
|
if (is_array($command))
|
||||||
$command = implode(' ', $command);
|
$command = implode(' ', $command);
|
||||||
if ($escape_command_args)
|
if ($escape_command_args)
|
||||||
|
@ -217,7 +220,7 @@ function run_external_command($command, $data_stdin=null, $escape_command_args=t
|
||||||
1 => array("pipe", "w"), // stdout
|
1 => array("pipe", "w"), // stdout
|
||||||
2 => array("pipe", "w"), // stderr
|
2 => array("pipe", "w"), // stderr
|
||||||
);
|
);
|
||||||
$process = proc_open($command, $descriptorspec, $pipes);
|
$process = proc_open($command, $descriptorspec, $pipes, $cwd);
|
||||||
|
|
||||||
if (!is_resource($process)) {
|
if (!is_resource($process)) {
|
||||||
Log :: error("Fail to run external command: '$command'");
|
Log :: error("Fail to run external command: '$command'");
|
||||||
|
|
|
@ -71,8 +71,8 @@
|
||||||
<main role="main">
|
<main role="main">
|
||||||
<div class="container-fluid" id="content_container">
|
<div class="container-fluid" id="content_container">
|
||||||
{block name="pagetitle"}{if $pagetitle}<h1>{$pagetitle}</h1>{/if}{/block}
|
{block name="pagetitle"}{if $pagetitle}<h1>{$pagetitle}</h1>{/if}{/block}
|
||||||
{include file='errors.tpl'}
|
{include file='Tpl:errors.tpl'}
|
||||||
{include file='messages.tpl'}
|
{include file='Tpl:messages.tpl'}
|
||||||
{block name="content"}{/block}
|
{block name="content"}{/block}
|
||||||
</div>
|
</div>
|
||||||
</main>
|
</main>
|
|
@ -1,4 +1,4 @@
|
||||||
{extends file='empty.tpl'}
|
{extends file='Tpl:empty.tpl'}
|
||||||
{block name="content"}
|
{block name="content"}
|
||||||
<p class="center">{$message}</p>
|
<p class="center">{$message}</p>
|
||||||
{/block}
|
{/block}
|
|
@ -1,4 +1,4 @@
|
||||||
{extends file='empty.tpl'}
|
{extends file='Tpl:empty.tpl'}
|
||||||
{block name="content"}
|
{block name="content"}
|
||||||
<h1 class="center">Oops ...</h1>
|
<h1 class="center">Oops ...</h1>
|
||||||
|
|
8
templates/homepage.tpl
Normal file
8
templates/homepage.tpl
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{extends file='Tpl:empty.tpl'}
|
||||||
|
{block name="pagetitle"}{/block}
|
||||||
|
{block name="content"}
|
||||||
|
<div class="jumbotron">
|
||||||
|
<h1 class="display-4">{t}Hello, world!{/t}</h1>
|
||||||
|
<p class="lead">{t escape=off}This is the default page of a new app using EesyPHP framework. Register your own templates directory and create a <em>homepage.tpl</em> file to overwrite it. You could also overwrite the URL handler for the root of the web application.{/t}</p>
|
||||||
|
</div>
|
||||||
|
{/block}
|
Loading…
Reference in a new issue