Compare commits

..

20 Commits

Author SHA1 Message Date
Clemens Schwaighofer
aa9e985120 Fix for CoreLibs/Output/Form/Generate 2019-06-10 13:14:41 +09:00
Clemens Schwaighofer
a0d5e18832 Bug fix for Basic class date/time compare 2019-06-07 16:40:12 +09:00
Clemens Schwaighofer
6c1c528e2e Bug fix in Basic class, add method to basic class, flatpickr add
- Bug in date/time check in Basic class. Time check was invalid
- Add calcDaysInterval to get days between two dates plus weeki days
and weekend days
- Add flatpickr to replace datepickr and move datepickr init function
into separate file (from edit.*.js)
2019-06-07 16:11:28 +09:00
Clemens Schwaighofer
d44325501a Add non => function setups for some calls in case 2019-06-05 14:53:33 +09:00
Clemens Schwaighofer
1b45a1b770 Update core edit.*.js
- all function let are converted to var
- add return to acssel, racssel calls
2019-05-31 18:29:13 +09:00
Clemens Schwaighofer
fe32dd4543 Update database import script, JS dom rel function, typos
the JS dom rel function returns the full element.
The database import script has now test and step by step with retry
import functionality

various comment typo fixe
2019-05-31 13:53:02 +09:00
Clemens Schwaighofer
0111762315 Move the old JS uploader backend libs out from the CoreLibs
They are not CoreLibs and so they moved one level up and were renamed
"FileUpload"
2019-05-28 13:29:34 +09:00
Clemens Schwaighofer
89c2b54889 Some post fixes for edit_base and core libs update
- edit order template indent fix
- Form/Generate init had wrong check on array for load list query
- ACL for group level was still using old session name
2019-05-28 13:22:18 +09:00
Clemens Schwaighofer
70d51025f8 Merge edit_order into edit_base, core libs update
edit_order.php is merged into includes/edit_base and changed to symlink

In the CoreLibs
Output/Form/Generate
- switch all " to ' in strings
- add not set init config_array parts if loaded with no
includes/table_arrays/ file

DB/Extended/ArrayIO
- switch all " to ' in strings

ACL/Login
- swich all missing " strings to '
- not TEMPLATE part is deprecated (but leave load in)
2019-05-28 12:54:17 +09:00
Clemens Schwaighofer
1ecdd5f6d7 Remove all old template control flow 2019-05-28 11:21:04 +09:00
Clemens Schwaighofer
593e8fa7b0 Relocate folders
the old "www/layout/<admin/frontend>/<template name>/..." layout is
deprecated.

new layout:

www/layout/<admin|frontend>/<cache/css/images/javascript>/
The layout/<admin/frontend> is symlinked to www/<admin|frontend>/layout

templates and lang are moved to includes
www/includes/template/<admin/frontend>
www/includes/lang/<admin/frontend>

and no longer symlinked to any public facing folders

The language po files have already been moved to
4dev/lang/<admin|frontend>/
2019-05-28 10:56:53 +09:00
Clemens Schwaighofer
4b08a4d856 Main config.inc update 2019-05-28 09:29:50 +09:00
Clemens Schwaighofer
23d2483855 Update to JS libraries
- update jquery to latest
- update edit.js to prototype and jquery version
- update backend admin inc scripts
- update mein body templates with better logout flow
2019-05-27 11:11:23 +09:00
Clemens Schwaighofer
729541f280 Add missing correct smarty settings in edit order 2019-05-17 16:41:14 +09:00
Clemens Schwaighofer
d47f525480 Javascript updates, bug fix in Form class
- Update JS files and remove some not needed code
- Bug fix in Form where the sub element list was not correctly processed
because the DB insert vars got reset on each loop run
- Add return success/failure variable to the ln10 reload
2019-05-17 15:31:59 +09:00
Clemens Schwaighofer
b5290971c1 Sync template writes tmp files into tmp folder 2019-04-26 11:44:44 +09:00
Clemens Schwaighofer
2f1cb6a0a5 Just very basic FineUploader 2019-04-22 11:16:33 +09:00
Clemens Schwaighofer
d813ce0e35 Updates for composer setup info 2019-04-22 11:10:12 +09:00
Clemens Schwaighofer
22b4fbce8d Upgrade to jQuery 3.4 2019-04-22 10:46:51 +09:00
Clemens Schwaighofer
7fe27b8040 Add missing media folders git ingore files 2019-04-22 10:41:00 +09:00
875 changed files with 57633 additions and 2080 deletions

View File

@@ -1,21 +1,21 @@
Install composer: Install composer:
curl -sS https://getcomposer.org/installer | /usr/local/php-7.2-httpd-2.4/bin/php curl -sS https://getcomposer.org/installer | /usr/local/php-7.3-httpd-2.4/bin/php
Update composer phar file Update composer phar file
/usr/local/php-7.2-httpd-2.4/bin/php composer.phar selfupdate /usr/local/php-7.3-httpd-2.4/bin/php composer.phar selfupdate
Install something: Install something:
/usr/local/php-7.2-httpd-2.4/bin/php composer.phar require something/something /usr/local/php-7.3-httpd-2.4/bin/php composer.phar require something/something
Update all installed: Update all installed:
/usr/local/php-7.2-httpd-2.4/bin/php composer.phar update /usr/local/php-7.3-httpd-2.4/bin/php composer.phar update
Or update only one package: Or update only one package:
/usr/local/php-7.2-httpd-2.4/bin/php composer.phar something/something /usr/local/php-7.3-httpd-2.4/bin/php composer.phar something/something
Install AWS SDK: Install AWS SDK:
/usr/local/php-7.2-httpd-2.4/bin/php -d memory_limit=-1 composer.phar require aws/aws-sdk-php /usr/local/php-7.3-httpd-2.4/bin/php -d memory_limit=-1 composer.phar require aws/aws-sdk-php
Install zipStream: Install zipStream:
/usr/local/php-7.2-httpd-2.4/bin/php composer.phar require maennchen/zipstream-php /usr/local/php-7.3-httpd-2.4/bin/php composer.phar require maennchen/zipstream-php

View File

@@ -5,19 +5,63 @@
#echo "EXIT"; #echo "EXIT";
#exit; #exit;
# if flagged 'y' then it will ask after each import to continue
development='y';
test='n';
input='';
# database connection info
db='<db name>'; db='<db name>';
host='<db host>'; host='<db host>';
user='<db user>'; user='<db user>';
#schema="publicv"; schema="public";
export PGPASSWORD='';
for file in `cat ORDER`; # log files
do error_file="log/error";
if [ -f $file ]; output_file="log/output";
then
# for path in $schema; if [ ! -f ORDER ]; then
# do echo "Could not find ORDER file";
# echo "WORK ON "$schema"."$file; exit;
psql -U $user -h $host -f $file $db 1>> output 2>> error fi;
# done;
if [ "$test" != "n" ]; then
echo "TESTING MODE, NO DATA WILL BE IMPORTED";
fi;
if [ "$development" = "y" ]; then
echo "STEP BY STEP IMPORT MODE ACTIVATED";
fi;
while read file <&3; do
if [ "$file" = "FINISHED" ]; then
echo "Database data is flagged as FINISHED in ORDER file";
exit;
fi; fi;
done; if [ -f "$file" ]; then
for path in "$schemas"; do
echo "[+] WORK ON '${file}' @ '${path}'";
if [ "$test" = 'n' ]; then
echo "=== START [$file] ===>" >> ${error_file};
psql -U ${user} -h ${host} -f "${file}" ${db} 1>> ${output_file} 2>> ${error_file}
echo "=== END [$file] ===>" >> ${error_file};
fi;
if [ "$development" = "y" ]; then
echo "Press 'y' to move to next. Press 'r' to reload last file. ^c to abort";
fi;
while [ "$development" = "y" ] && [ "$input" != "y" ]; do
read -ep "Continue (y|r|^c): " input;
if [ "$input" = "r" ]; then
echo "Reload File '${file}' ...";
if [ "$test" = 'n' ]; then
echo "=== START RELOAD [$file] ===>" >> ${error_file};
psql -U ${user} -h ${host} -f "${file}" ${db} 1>> ${output_file} 2>> ${error_file}
echo "=== END RELOAD [$file] ===>" >> ${error_file};
fi;
fi;
done;
input='';
done;
elif [[ ${file::1} != "#" ]]; then
echo "[!] COULD NOT FIND FILE: '${file}'";
fi;
done 3<ORDER;

View File

@@ -7,8 +7,8 @@ LOCAL_BASE_DIR="<local folder>";
LOCAL_DIR=$LOCAL_BASE_DIR""; LOCAL_DIR=$LOCAL_BASE_DIR"";
REMOTE_WEB="<remote folder>"; REMOTE_WEB="<remote folder>";
TARGET_HOST_WEB="<user>@<host>"; TARGET_HOST_WEB="<user>@<host>";
TMP_DIR=$LOCAL_BASE_DIR"/4dev/"; TMP_DIR=$LOCAL_BASE_DIR"/4dev/tmp/";
tmpf_web=$TMP_DIR"tmp.web"; tmpf_web=$TMP_DIR"sync.exclude.tmp";
# for web (ika) # for web (ika)
rm -f $tmpf_web; rm -f $tmpf_web;

View File

@@ -1,201 +0,0 @@
<?php
/********************************************************************
* AUTHOR: Clemens Schwaighofer
* CREATED: 2001/07/11
* SHORT DESCRIPTION:
* sets the order from a table (edit_)
* HISTORY:
* 2005/07/11 (cs) adept to new edit interface
* 2002-10-18: little include changes
* 2001-07-11: erste Version
**********************************************************************/
$DEBUG_ALL = 1;
$DB_DEBUG = 1;
extract($_GET, EXTR_SKIP);
extract($_POST, EXTR_SKIP);
require 'config.php';
// set session name
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
// overrride debug flags
if (!DEBUG) {
$DEBUG_ALL = 0;
$PRINT_ALL = 0;
$DB_DEBUG = 0;
$ECHO_ALL = 0;
}
// default lang
if (!$lang) {
$lang = DEFAULT_LANG;
}
$table_width = 600;
if (!$table_width) {
$table_width = PAGE_WIDTH;
}
ob_end_flush();
$login = new CoreLibs\ACL\Login($DB_CONFIG[LOGIN_DB], $lang);
$db = new CoreLibs\DB\IO($DB_CONFIG[MAIN_DB]);
$db->dbExec("SET search_path TO ".LOGIN_DB_SCHEMA);
$smarty = new CoreLibs\Template\SmartyExtend($lang);
if (TARGET == 'live' || TARGET == 'remote') {
// login
$login->debug_output_all = DEBUG ? 1 : 0;
$login->echo_output_all = 0;
$login->print_output_all = DEBUG ? 1 : 0;
// form
$db->debug_output_all = DEBUG ? 1 : 0;
$db->echo_output_all = 0;
$db->print_output_all = DEBUG ? 1 : 0;
}
// set the template dir
if (defined('LAYOUT')) {
$smarty->setTemplateDir(LAYOUT.DEFAULT_TEMPLATE.TEMPLATES);
$DATA['css'] = LAYOUT.DEFAULT_TEMPLATE.CSS;
$DATA['js'] = LAYOUT.DEFAULT_TEMPLATE.JS;
} else {
$smarty->setTemplateDir(TEMPLATES.DEFAULT_TEMPLATE);
$DATA['css'] = CSS.DEFAULT_TEMPLATE;
$DATA['js'] = JS.DEFAULT_TEMPLATE;
}
// order name is _always_ order_number for the edit interface
// follwing arrays do exist here:
// $position ... has the positions of the array (0..max), cause in a <select>
// I can't put an number into the array field, in this array,
// there are the POSITION stored, that should CHANGE there order (up/down)
// $row_data_id ... has ALL ids from the sorting part
// $row_data_order ... has ALL order positions from the soirting part
if (!is_array($position)) {
$position = array ();
}
if (count($position)) {
$original_id = $row_data_id;
// FIRST u have to put right sort, then read again ...
// hast to be >0 or the first one is selected and then there is no move
if ($up && $position[0] > 0) {
for ($i = 0; $i < count($position); $i++) {
// change position order
// this gets temp, id before that, gets actual (moves one "down")
// this gets the old before (moves one "up")
// is done for every element in row
// echo "A: ".$row_data_id[$position[$i]]." (".$row_data_order[$position[$i]].") -- ".$row_data_id[$position[$i]-1]." (".$row_data_order[$position[$i]-1].")<br>";
$temp_id = $row_data_id[$position[$i]];
$row_data_id[$position[$i]] = $row_data_id[$position[$i]-1];
$row_data_id[$position[$i]-1] = $temp_id;
// echo "A: ".$row_data_id[$position[$i]]." (".$row_data_order[$position[$i]].") -- ".$row_data_id[$position[$i]-1]." (".$row_data_order[$position[$i]-1].")<br>";
} // for
} // if up
// the last position id from position array is not to be the count-1 of row_data_id array, or it is the last element
if ($down && ($position[count($position) - 1] != (count($row_data_id) - 1))) {
for ($i = count($position) - 1; $i >= 0; $i --) {
// same as up, just up in other way, starts from bottom (last element) and moves "up"
// element before actuel gets temp, this element, becomes element after this,
// element after this, gets this
$temp_id = $row_data_id[$position[$i] + 1];
$row_data_id[$position[$i] + 1] = $row_data_id[$position[$i]];
$row_data_id[$position[$i]] = $temp_id;
} // for
} // if down
// write data ... (which has to be abstrackt ...)
if (($up && $position[0] > 0) || ($down && ($position[count($position) - 1]!=(count($row_data_id) - 1)))) {
for ($i = 0; $i < count($row_data_id); $i ++) {
$q = "UPDATE ".$table_name." SET order_number = ".$row_data_order[$i]." WHERE ".$table_name."_id = ".$row_data_id[$i];
$q = $db->dbExec($q);
} // for all article ids ...
} // if write
} // if there is something to move
// get ...
$q = "SELECT ".$table_name."_id, name, order_number FROM ".$table_name." ";
if ($where_string) {
$q .= "WHERE $where_string ";
}
$q .= "ORDER BY order_number";
while ($res = $db->dbReturn($q)) {
$row_data[] = array (
"id" => $res[$table_name."_id"],
"name" => $res["name"],
"order" => $res["order_number"]
);
} // while read data ...
// define all needed smarty stuff for the general HTML/page building
$DATA['css'] = LAYOUT.DEFAULT_TEMPLATE.CSS;
$DATA['js'] = LAYOUT.DEFAULT_TEMPLATE.JS;
$HEADER['CSS'] = CSS;
$HEADER['DEFAULT_ENCODING'] = DEFAULT_ENCODING;
$HEADER['JS'] = JS;
$HEADER['STYLESHEET'] = $EDIT_STYLESHEET;
$HEADER['JAVASCRIPT'] = $EDIT_JAVASCRIPT;
// html title
$HEADER['HTML_TITLE'] = (!$L_TITLE) ? $smarty->l10n->__($G_TITLE) : $smarty->l10n->__($L_TITLE);
$DATA['table_width'] = $table_width;
// error msg
if ($error) {
$messages[] = array('msg' => $msg, 'class' => 'error', 'width' => $table_width);
}
$DATA['form_error_msg'] = $messages;
// all the row data
$options_id = array ();
$options_name = array ();
$options_selected = array ();
if (!is_array($row_data)) {
$row_data = array ();
}
for ($i = 0; $i < count($row_data); $i ++) {
$options_id[] = $i;
$options_name[] = $row_data[$i]["name"];
// list of points to order
for ($j = 0; $j < count($position); $j++) {
// if matches, put into select array
if ($original_id[$position[$j]] == $row_data[$i]["id"]) {
$options_selected[] = $i;
}
}
}
$DATA['options_id'] = $options_id;
$DATA['options_name'] = $options_name;
$DATA['options_selected'] = $options_selected;
// hidden list for the data (id, order number)
$row_data_id = array ();
$row_data_order = array ();
for ($i = 0; $i < count($row_data); $i++) {
$row_data_id[] = $row_data[$i]["id"];
$row_data_order[] = $row_data[$i]["order"];
}
$DATA['row_data_id'] = $row_data_id;
$DATA['row_data_order'] = $row_data_order;
// hidden names for the table & where string
$DATA['table_name'] = $table_name;
$DATA['where_string'] = $where_string;
// debug data, if DEBUG flag is on, this data is print out
$DEBUG_DATA['DEBUG'] = $DEBUG_TMPL;
// create main data array
$CONTENT_DATA = array_merge($HEADER, $DATA, $DEBUG_DATA);
// data is 1:1 mapping (all vars, values, etc)
foreach ($CONTENT_DATA as $key => $value) {
$smarty->assign($key, $value);
}
$smarty->display('edit_order.tpl');
echo $login->printErrorMsg();
echo $db->printErrorMsg();
// __END__

1
www/admin/edit_order.php Symbolic link
View File

@@ -0,0 +1 @@
../includes/edit_base.inc

View File

@@ -12,7 +12,17 @@ require 'config.php';
require BASE.INCLUDES.'admin_header.inc'; require BASE.INCLUDES.'admin_header.inc';
$MASTER_TEMPLATE_NAME = 'main_body.tpl'; $MASTER_TEMPLATE_NAME = 'main_body.tpl';
$TEMPLATE_NAME = 'smarty_test.tpl'; $TEMPLATE_NAME = 'smarty_test.tpl';
$PAGE_WIDTH = 750; $CSS_NAME = 'smart_test.css';
$USE_PROTOTYPE = false;
$USE_JQUERY = true;
if ($USE_PROTOTYPE) {
$EDIT_JAVASCRIPT = 'edit.pt.js';
$JS_NAME = 'prototype.test.js';
} else if ($USE_JQUERY) {
$EDIT_JAVASCRIPT = 'edit.jq.js';
$JS_NAME = 'jquery.test.js';
}
$PAGE_WIDTH = "100%";
require BASE.INCLUDES.'admin_set_paths.inc'; require BASE.INCLUDES.'admin_set_paths.inc';
// smarty test // smarty test

Binary file not shown.

View File

@@ -1,25 +1,12 @@
<? <?php
/******************************************************************** /********************************************************************
* AUTHOR: Clemens Schwaighofer * AUTHOR: Clemens Schwaighofer
* CREATED: 2003/06/10 * CREATED: 2003/06/10
* SHORT DESCRIPTION: * SHORT DESCRIPTION:
* configuration file * configuration file
* HISTORY: * HISTORY:
*********************************************************************/ *********************************************************************/
/************* SESSION NAMES *************/
// backend
DEFINE('EDIT_SESSION_NAME', '<ADMIN SESSION NAME>');
// frontend
DEFINE('SESSION_NAME', '<SESSION NAME>');
// set the session name
define('SET_SESSION_NAME', EDIT_SESSION_NAME);
/************* LANGUAGE / ENCODING *******/
DEFINE('DEFAULT_LANG', 'en_utf8');
// default web page encoding setting
DEFINE('DEFAULT_ENCODING', 'UTF-8');
/************* PATHS *********************/ /************* PATHS *********************/
// directory seperator // directory seperator
DEFINE('DS', DIRECTORY_SEPARATOR); DEFINE('DS', DIRECTORY_SEPARATOR);
@@ -27,7 +14,7 @@ DEFINE('DS', DIRECTORY_SEPARATOR);
// path to original file (if symlink) // path to original file (if symlink)
DEFINE('DIR', __DIR__.DS); DEFINE('DIR', __DIR__.DS);
// base dir root folder level // base dir root folder level
DEFINE('BASE', str_replace('configs', '', __DIR__)); DEFINE('BASE', str_replace('/configs', '', __DIR__).DS);
// ** OLD DIR DECLARATIONS ** // ** OLD DIR DECLARATIONS **
// path to document root of file called // path to document root of file called
@@ -35,6 +22,8 @@ DEFINE('ROOT', getcwd().DS);
// libs path // libs path
DEFINE('LIB', 'lib'.DS); DEFINE('LIB', 'lib'.DS);
DEFINE('LIBS', 'lib'.DS); DEFINE('LIBS', 'lib'.DS);
// configs folder
DEFINE('CONFIGS', 'configs'.DS);
// includes (strings, arrays for static, etc) // includes (strings, arrays for static, etc)
DEFINE('INCLUDES', 'includes'.DS); DEFINE('INCLUDES', 'includes'.DS);
// layout base path // layout base path
@@ -81,12 +70,6 @@ DEFINE('LOG', 'log'.DS);
DEFINE('TEMPLATES_C', 'templates_c'.DS); DEFINE('TEMPLATES_C', 'templates_c'.DS);
// template base // template base
DEFINE('TEMPLATES', 'templates'.DS); DEFINE('TEMPLATES', 'templates'.DS);
// frontend template dir', only for admin
DEFINE('TEMPLATES_FRONTEND', 'templates_frontend'.DS);
// default template
DEFINE('DEFAULT_TEMPLATE', 'default'.DS);
// default template file
DEFINE('DEFAULT_TEMPLATE_FILE', 'default.tpl');
/************* HASH / ACL DEFAULT / ERROR SETTINGS / SMARTY *************/ /************* HASH / ACL DEFAULT / ERROR SETTINGS / SMARTY *************/
// default hash type // default hash type
@@ -111,7 +94,7 @@ DEFINE('DEFAULT_ACL_ADMIN', 100); */
// DEFINE('ERROR_STRICT', 3); // DEFINE('ERROR_STRICT', 3);
// allow page caching in general, set to 'FALSE' if you do debugging or development! // allow page caching in general, set to 'FALSE' if you do debugging or development!
// DEFINE('ALLOW_SMARTY_CACHE', FALSE); // DEFINE('ALLOW_SMARTY_CACHE', FALSE);
// cache life time, in seconds, default here is 2 days (172800s) // cache life time, in second', default here is 2 days (172800s)
// -1 is never expire cache // -1 is never expire cache
// DEFINE('SMARTY_CACHE_LIFETIME', -1); // DEFINE('SMARTY_CACHE_LIFETIME', -1);
@@ -120,6 +103,9 @@ DEFINE('DEFAULT_ACL_ADMIN', 100); */
DEFINE('LOGOUT_TARGET', ''); DEFINE('LOGOUT_TARGET', '');
// password change allowed // password change allowed
DEFINE('PASSWORD_CHANGE', false); DEFINE('PASSWORD_CHANGE', false);
// min/max password length
DEFINE('PASSWORD_MIN_LENGTH', 8);
DEFINE('PASSWORD_MAX_LENGTH', 255);
/************* AJAX / ACCESS *************/ /************* AJAX / ACCESS *************/
// ajax request type // ajax request type
@@ -134,6 +120,21 @@ DEFINE('PAGE_WIDTH', 800);
// the default template name // the default template name
DEFINE('MASTER_TEMPLATE_NAME', 'main_body.tpl'); DEFINE('MASTER_TEMPLATE_NAME', 'main_body.tpl');
/************* SESSION NAMES *************/
// server name HASH
DEFINE('SERVER_NAME_HASH', hash('crc32b', $_SERVER['HTTP_HOST']));
// backend
DEFINE('EDIT_SESSION_NAME', 'ADMIN_SESSION_NAME'.SERVER_NAME_HASH);
// frontend
DEFINE('SESSION_NAME', 'SESSION_NAME'.SERVER_NAME_HASH);
// SET_SESSION_NAME should be set in the header if a special session name is needed
// DEFINE('SET_SESSION_NAME', SESSION_NAME);
/************* LANGUAGE / ENCODING *******/
DEFINE('DEFAULT_LANG', 'en_utf8');
// default web page encoding setting
DEFINE('DEFAULT_ENCODING', 'UTF-8');
// below two can be defined here, but they should be // below two can be defined here, but they should be
// defined in either the header file or the file itself // defined in either the header file or the file itself
/************* LOGGING *******************/ /************* LOGGING *******************/
@@ -152,44 +153,21 @@ DEFINE('DEV_SCHEMA', 'public');
DEFINE('TEST_SCHEMA', 'public'); DEFINE('TEST_SCHEMA', 'public');
DEFINE('LIVE_SCHEMA', 'public'); DEFINE('LIVE_SCHEMA', 'public');
// non constant part /************* OTHER PATHS *****************/
/************* DB ACCESS *****************/
// please be VERY carefull only to change the right side
$DB_CONFIG = array (
'<db id>' => array (
'db_name' => '<database>',
'db_user' => '<user>',
'db_pass' => '<password>',
'db_host' => '<host>',
'db_port' => '5432',
'db_schema' => 'public', // if not set, uses public
'db_type' => 'pgsql',
'db_encoding' => '',
'db_ssl' => 'disable' // allow, disable, require, prefer
)
);
// File and Folder paths // File and Folder paths
// ID is TARGET (first array element) // ID is TARGET (first array element)
// $PATHS['test']['csv_path'] = ''; // $PATHS['test']['csv_path'] = '';
// $PATHS['test']['perl_bin'] = ''; // $PATHS['test']['perl_bin'] = '';
// $PATHS['test']['redirect_url'] = ''; // $PATHS['test']['redirect_url'] = '';
// each host has a different db_host /************* DB ACCESS *****************/
// development host if (file_exists(BASE.CONFIGS.'config.db.inc')) {
$DB_HOST['<host>'] = '<db id>'; require BASE.CONFIGS.'config.db.inc';
// target host (live) }
// $DB_TARGET_HOST['<host>'] = '<DB ID>'; /************* CORE HOST SETTINGS *****************/
// url redirect database if (file_exists(BASE.CONFIGS.'config.host.inc')) {
// $DB_URL_REDIRECT_HOST['<host>'] = '<DB ID>'; require BASE.CONFIGS.'config.host.inc';
// location flagging }
// test/dev/live
$LOCATION['<host>'] = '<test|live|remote|etc>';
// show DEBUG override
// true/false
$DEBUG_FLAG['<host>'] = true;
// set postgresql paths (schemas)
$DB_PATH['<host>'] = PUBLIC_SCHEMA;
// set the USE_DATABASE var, if there is nothing set, we assume TRUE // set the USE_DATABASE var, if there is nothing set, we assume TRUE
$USE_DATABASE = defined('USE_DATABASE') ? USE_DATABASE : true; $USE_DATABASE = defined('USE_DATABASE') ? USE_DATABASE : true;
@@ -198,29 +176,41 @@ $USE_DATABASE = defined('USE_DATABASE') ? USE_DATABASE : true;
// ** missing live domains ** // ** missing live domains **
// get the name without the port // get the name without the port
list($HOST_NAME) = array_pad(explode(':', $_SERVER['HTTP_HOST'], 2), 2, null); list($HOST_NAME) = array_pad(explode(':', $_SERVER['HTTP_HOST'], 2), 2, null);
if (!$DB_HOST[$HOST_NAME] && $USE_DATABASE) { if (!isset($DB_HOST[$HOST_NAME]) && $USE_DATABASE) {
echo 'No matching DB config found. Contact Admin<br>'; echo 'No matching DB config found. Contact Admin<br>';
exit -1; exit -1;
} }
// set HOST name
DEFINE('HOST_NAME', $HOST_NAME);
// set SSL on
if ((array_key_exists('HTTPS', $_SERVER) && !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ||
$_SERVER['SERVER_PORT'] == 443) {
DEFINE('HOST_SSL', true);
DEFINE('HOST_PROTOCOL', 'https://');
} else {
DEFINE('HOST_SSL', false);
DEFINE('HOST_PROTOCOL', 'http://');
}
// define the static names // define the static names
DEFINE('LOGIN_DB', $DB_HOST[$HOST_NAME]); DEFINE('LOGIN_DB', $DB_HOST[$HOST_NAME]);
DEFINE('MAIN_DB', $DB_HOST[$HOST_NAME]); DEFINE('MAIN_DB', $DB_HOST[$HOST_NAME]);
DEFINE('DB_SCHEMA', $DB_PATH[$HOST_NAME]); DEFINE('DB_SCHEMA', $DB_PATH[$HOST_NAME]);
// DEFINE('TARGET_DB', $DB_TARGET_HOST[$HOST_NAME]); // DEFINE('TARGET_DB', $DB_TARGET_HOST[$HOST_NAME]);
// DEFINE('URL_REDIRECT_DB', $DB_URL_REDIRECT_HOST[$HOST_NAME]); // DEFINE('URL_REDIRECT_DB', $DB_URL_REDIRECT_HOST[$HOST_NAME]);
// next three if top is not set // next three if top is not set
// DEFINE('DEV_SCHEMA', $DB_CONFIG[MAIN_DB]['db_schema']); // DEFINE('TEST_SCHEMA', $DB_CONFIG[MAIN_DB]['db_schema']);
// DEFINE('TEST_SCHEMA', $DB_CONFIG[MAIN_DB]['db_schema']); // DEFINE('DEV_SCHEMA', $DB_CONFIG[MAIN_DB]['db_schema']);
// DEFINE('PUBLIC_SCHEMA', $DB_CONFIG[TARGET_DB]['db_schema']); // DEFINE('PUBLIC_SCHEMA', $DB_CONFIG[TARGET_DB]['db_schema']);
DEFINE('LOGIN_DB_SCHEMA', 'public'); // where the edit* tables are DEFINE('LOGIN_DB_SCHEMA', PUBLIC_SCHEMA); // where the edit* tables are
DEFINE('GLOBAL_DB_SCHEMA', 'public'); // where global tables are that are used by all schemas (eg queue tables for online, etc) DEFINE('GLOBAL_DB_SCHEMA', PUBLIC_SCHEMA); // where global tables are that are used by all schemas (eg queue tables for online, etc)
DEFINE('TARGET', $LOCATION[$HOST_NAME]); DEFINE('TARGET', $LOCATION[$HOST_NAME]);
// DEFINE('CSV_PATH', $PATHS[TARGET]['csv_path']); // DEFINE('CSV_PATH', $PATHS[TARGET]['csv_path']);
// DEFINE('EXPORT_SCRIPT', $PATHS[TARGET]['perl_bin']); // DEFINE('EXPORT_SCRIPT', $PATHS[TARGET]['perl_bin']);
// DEFINE('REDIRECT_URL', $PATHS[TARGET]['redirect_url']); // DEFINE('REDIRECT_URL', $PATHS[TARGET]['redirect_url']);
DEFINE('DEBUG', $DEBUG_FLAG[$HOST_NAME]); DEFINE('DEBUG', $DEBUG_FLAG[$HOST_NAME]);
DEFINE('SHOW_ALL_ERRORS', false); // show all errors if debug_all & show_error_handling are enabled DEFINE('SITE_LANG', $SITE_LANG[$HOST_NAME]);
DEFINE('SHOW_ALL_ERRORS', true); // show all errors if debug_all & show_error_handling are enabled
/************* GENERAL PAGE TITLE ********/ /************* GENERAL PAGE TITLE ********/
$G_TITLE = '<OVERALL PAGE TITLE>'; $G_TITLE = '<OVERALL PAGE TITLE>';
@@ -232,6 +222,11 @@ $EDIT_JAVASCRIPT = 'edit.js';
$STYLESHEET = 'frontend.css'; $STYLESHEET = 'frontend.css';
$JAVASCRIPT = 'frontend.js'; $JAVASCRIPT = 'frontend.js';
// anything optional
/************* INTERNAL ******************/
// any other global definitons here
// DEFINE('SOME_ID', <SOME VALUE>);
/************* CONVERT *******************/ /************* CONVERT *******************/
$paths = array ( $paths = array (
'/bin', '/bin',
@@ -253,12 +248,14 @@ if (defined('DEBUG') && DEBUG == false) {
$PRINT_ALL = 0; $PRINT_ALL = 0;
$DB_DEBUG = 0; $DB_DEBUG = 0;
$ENABLE_ERROR_HANDLING = 0; $ENABLE_ERROR_HANDLING = 0;
} else {
$ECHO_ALL = 0;
$DEBUG_ALL = 1;
$PRINT_ALL = 1;
$DB_DEBUG = 1;
} }
// any other global definitons here
// DEFINE('SOME_ID', <SOME VALUE>);
// read auto loader // read auto loader
require BASE.LIB.'autoloader.php'; require BASE.LIB.'autoloader.php';
# __END__ // __END__

View File

@@ -10,7 +10,7 @@
define('CONFIG_PATH', 'configs'.DIRECTORY_SEPARATOR); define('CONFIG_PATH', 'configs'.DIRECTORY_SEPARATOR);
// config path prefix search, start with 0, got down each level __DIR__ has, if nothing found -> bail // config path prefix search, start with 0, got down each level __DIR__ has, if nothing found -> bail
$CONFIG_PATH_PREFIX = ''; $CONFIG_PATH_PREFIX = '';
for ($dir_pos = 0, $dir_max = count(explode('/', __DIR__)); $dir_pos <= $dir_max; $dir_pos ++) { for ($dir_pos = 0, $dir_max = count(explode(DIRECTORY_SEPARATOR, __DIR__)); $dir_pos <= $dir_max; $dir_pos ++) {
$CONFIG_PATH_PREFIX .= '..'.DIRECTORY_SEPARATOR; $CONFIG_PATH_PREFIX .= '..'.DIRECTORY_SEPARATOR;
if (file_exists($CONFIG_PATH_PREFIX.CONFIG_PATH.'config.inc')) { if (file_exists($CONFIG_PATH_PREFIX.CONFIG_PATH.'config.inc')) {
require $CONFIG_PATH_PREFIX.CONFIG_PATH.'config.inc'; require $CONFIG_PATH_PREFIX.CONFIG_PATH.'config.inc';
@@ -21,5 +21,12 @@ for ($dir_pos = 0, $dir_max = count(explode('/', __DIR__)); $dir_pos <= $dir_max
if (!defined('DS')) { if (!defined('DS')) {
exit('Base config unloadable'); exit('Base config unloadable');
} }
// find trigger name "admin/" or "frontend/" in the getcwd() folder
foreach (array ('admin', 'frontend') as $folder) {
if (strstr(getcwd(), DS.$folder)) {
define('CONTENT_PATH', $folder.DS);
break;
}
}
// __END__ // __END__

7
www/frontend/.htaccess Normal file
View File

@@ -0,0 +1,7 @@
RewriteEngine on
# not a file
RewriteCond %{REQUEST_FILENAME} !-f
# not a directory
RewriteCond %{REQUEST_FILENAME} !-d
# throw the whole path to the url as form parameter
RewriteRule (.*) index.php?path=$1 [QSA,L]

1
www/frontend/config.php Symbolic link
View File

@@ -0,0 +1 @@
../configs/config.php

1
www/frontend/foo/config.php Symbolic link
View File

@@ -0,0 +1 @@
../../configs/config.php

View File

@@ -0,0 +1,3 @@
<?php
require 'config.php';

3
www/frontend/index.php Normal file
View File

@@ -0,0 +1,3 @@
<?php
require 'config.php';

View File

@@ -10,7 +10,7 @@
//------------------------------ variable init start //------------------------------ variable init start
// for dev test we set full error reporting; writes everything, except E_ERROR into logs/php_error-<day>.log // for dev test we set full error reporting; writes everything, except E_ERROR into logs/php_error-<day>.log
if ($DEBUG_ALL && $ENABLE_ERROR_HANDLING) { if ($DEBUG_ALL && $ENABLE_ERROR_HANDLING) {
include(BASE.LIBS."Error.Handling.inc"); include BASE.LIBS."Error.Handling.inc";
} }
// predefine vars // predefine vars
$lang = ''; $lang = '';

View File

@@ -7,31 +7,22 @@
* HISTORY: * HISTORY:
*********************************************************************/ *********************************************************************/
// template path
if ($_SESSION['TEMPLATE']) {
$TEMPLATE = $_SESSION['TEMPLATE'];
} elseif ($LOCAL_TEMPLATE) {
$TEMPLATE = $LOCAL_TEMPLATE;
} else {
$TEMPLATE = DEFAULT_TEMPLATE;
}
$TEMPLATE_DIR = $TEMPLATE;
// master template // master template
if (!$MASTER_TEMPLATE_NAME) { if (!isset($MASTER_TEMPLATE_NAME)) {
$MASTER_TEMPLATE_NAME = MASTER_TEMPLATE_NAME; $MASTER_TEMPLATE_NAME = MASTER_TEMPLATE_NAME;
} }
// just emergency fallback for language // just emergency fallback for language
// set encoding // set encoding
if ($_SESSION['DEFAULT_CHARSET']) { if (isset($_SESSION['DEFAULT_CHARSET'])) {
$encoding = $_SESSION['DEFAULT_CHARSET']; $encoding = $_SESSION['DEFAULT_CHARSET'];
} elseif (!$encoding) { } elseif (!isset($encoding)) {
$encoding = DEFAULT_ENCODING; $encoding = DEFAULT_ENCODING;
} }
// just emergency fallback for language // just emergency fallback for language
if ($_SESSION['DEFAULT_LANG']) { if (isset($_SESSION['DEFAULT_LANG'])) {
$lang = $_SESSION['DEFAULT_LANG']; $lang = $_SESSION['DEFAULT_LANG'];
} elseif (!$lang) { } elseif (!isset($lang)) {
$lang = defined('SITE_LANG') ? SITE_LANG : DEFAULT_LANG; $lang = defined('SITE_LANG') ? SITE_LANG : DEFAULT_LANG;
} }
// create the char lang encoding // create the char lang encoding
@@ -50,65 +41,45 @@ $cms->JS_TEMPLATE_NAME = str_replace(".tpl", ".js", $CONTENT_INCLUDE);
// css per page // css per page
$cms->CSS_TEMPLATE_NAME = str_replace(".tpl", ".css", $CONTENT_INCLUDE); $cms->CSS_TEMPLATE_NAME = str_replace(".tpl", ".css", $CONTENT_INCLUDE);
// special CSS file // special CSS file
$cms->CSS_SPECIAL_TEMPLATE_NAME = @$CSS_NAME; $cms->CSS_SPECIAL_TEMPLATE_NAME = $CSS_NAME;
// special JS file // special JS file
$cms->JS_SPECIAL_TEMPLATE_NAME = @$JS_NAME; $cms->JS_SPECIAL_TEMPLATE_NAME = $JS_NAME;
// set basic template path (tmp) // set basic template path (tmp)
$cms->template_path = LAYOUT.$TEMPLATE_DIR.TEMPLATES; $cms->includes = BASE.INCLUDES; // no longer in templates, only global
$cms->template_path = BASE.INCLUDES.TEMPLATES.CONTENT_PATH;
if ($smarty) { if ($smarty) {
$smarty->setTemplateDir($cms->template_path); $smarty->setTemplateDir($cms->template_path);
} }
$cms->lang_dir = LAYOUT.$TEMPLATE_DIR.LANG; // no outside if (isset($LANGUAGE_FOLDER)) {
$cms->includes = BASE.INCLUDES; // no longer in templates, only global $cms->kang_dir = $LANGUAGE_FOLDER;
$cms->javascript = LAYOUT.$TEMPLATE_DIR.JS; } else {
$cms->css = LAYOUT.$TEMPLATE_DIR.CSS; $cms->lang_dir = BASE.INCLUDES.LANG.CONTENT_PATH; // no outside
$cms->pictures = LAYOUT.$TEMPLATE_DIR.IMAGES; }
$cms->cache_pictures = LAYOUT.$TEMPLATE_DIR.CACHE; $cms->javascript = LAYOUT.JS;
$cms->css = LAYOUT.CSS;
$cms->pictures = LAYOUT.IMAGES;
$cms->cache_pictures = LAYOUT.CACHE;
$cms->cache_pictures_root = ROOT.$cms->cache_pictures; $cms->cache_pictures_root = ROOT.$cms->cache_pictures;
if (!is_dir($cms->cache_pictures_root)) { if (!is_dir($cms->cache_pictures_root)) {
mkdir($cms->cache_pictures_root); mkdir($cms->cache_pictures_root);
} }
$template_set = $TEMPLATE;
// if we don't find the master template, set the template path back AND set the insert template as absolute path // check if template names exist
if (!file_exists(ROOT.$smarty->getTemplateDir()[0].DS.MASTER_TEMPLATE_NAME)) { if (!file_exists($smarty->getTemplateDir()[0].DS.$MASTER_TEMPLATE_NAME)) {
if (file_exists(ROOT.$smarty->getTemplateDir()[0].DS.$TEMPLATE_NAME)) { // abort if master template could not be found
$TEMPLATE_NAME = ROOT.$smarty->getTemplateDir()[0].DS.$TEMPLATE_NAME; exit('MASTER TEMPLATE: '.$MASTER_TEMPLATE_NAME.' could not be found');
}
$smarty->setTemplateDir(LAYOUT.DEFAULT_TEMPLATE.TEMPLATES);
$template_set = DEFAULT_TEMPLATE;
} elseif (!file_exists(ROOT.$smarty->getTemplateDir()[0].DS.$TEMPLATE_NAME)) {
// check if the template exists in the template path, if not, set path to to default
$smarty->setTemplateDir(LAYOUT.DEFAULT_TEMPLATE.TEMPLATES);
$template_set = DEFAULT_TEMPLATE;
} }
// check if lang_dir folder exists in the template path, if not fall back to default if (isset($TEMPLATE_NAME) && !file_exists($smarty->getTemplateDir()[0].DS.$TEMPLATE_NAME)) {
if (!is_dir($cms->lang_dir)) { exit('INCLUDE TEMPLATE: '.$TEMPLATE_NAME.' could not be found');
$cms->lang_dir = LAYOUT.DEFAULT_TEMPLATE.LANG;
}
// check if the javascript folder exists in the template path, if not fall back to default
if (!is_dir($cms->javascript)) {
$cms->javascript = LAYOUT.DEFAULT_TEMPLATE.JS;
}
// check if css folder exists in the template path, if not fall back to default
if (!is_dir($cms->css)) {
$cms->css = LAYOUT.DEFAULT_TEMPLATE.CSS;
}
if (!is_dir($cms->pictures)) {
$cms->pictures = LAYOUT.DEFAULT_TEMPLATE.PICTURES;
}
if (!is_dir($cms->cache_pictures)) {
$cms->cache_pictures = LAYOUT.DEFAULT_TEMPLATE.CACHE;
$cms->cache_pictures_root = ROOT.$cms->cache_pictures;
} }
// if the template_dir is != DEFAULT_TEMPLATE, then try to make a lang switch // if the lang folder is different to the default one
// if the default lang is not like the lang given, switch lang // if the default lang is not like the lang given, switch lang
if (false === strstr(LAYOUT.DEFAULT_TEMPLATE.LANG, $cms->lang_dir) || if (false === strstr(BASE.INCLUDES.LANG.CONTENT_PATH, $cms->lang_dir) ||
strcasecmp(defined('SITE_LANG') ? SITE_LANG : DEFAULT_LANG, $lang) strcasecmp(defined('SITE_LANG') ? SITE_LANG : DEFAULT_LANG, $lang)
) { ) {
$cms->debug('LANG', 'Orig: '.LAYOUT.DEFAULT_TEMPLATE.LANG.', New: '.$cms->lang_dir.' | Orig Lang: '.(defined('SITE_LANG') ? SITE_LANG : DEFAULT_LANG).', New Lang: '.$lang); $cms->debug('LANG', 'Orig: '.BASE.INCLUDES.LANG.CONTENT_PATH.', New: '.$cms->lang_dir.' | Orig Lang: '.(defined('SITE_LANG') ? SITE_LANG : DEFAULT_LANG).', New Lang: '.$lang);
$cms->l->l10nReloadMOfile($lang, $cms->lang_dir); $cms->l->l10nReloadMOfile($lang, $cms->lang_dir);
// if we have login class // if we have login class
if ($login) { if ($login) {
@@ -120,10 +91,10 @@ if (false === strstr(LAYOUT.DEFAULT_TEMPLATE.LANG, $cms->lang_dir) ||
} }
} }
// javascrip translate data as template for auto translate // javascript translate data as template for auto translate
if (!$TEMPLATE_TRANSLATE) { if (!$TEMPLATE_TRANSLATE) {
$cms->debug('LANG', 'Load lang: '.$lang.', for page file jsTranslate_'.$lang.'.tpl');
$TEMPLATE_TRANSLATE = 'jsTranslate_'.$lang.'.tpl'; $TEMPLATE_TRANSLATE = 'jsTranslate_'.$lang.'.tpl';
$cms->debug('LANG', 'Load lang: '.$lang.', for page file '.$TEMPLATE_TRANSLATE);
} else { } else {
// we assume we have some fixed set // we assume we have some fixed set
// we must add _<$lang> // we must add _<$lang>

View File

@@ -8,13 +8,13 @@
*********************************************************************/ *********************************************************************/
// trigger flags // trigger flags
$cms->HEADER['USE_PROTOTYPE'] = USE_PROTOTYPE; $cms->HEADER['USE_PROTOTYPE'] = isset($USE_PROTOTYPE) ? $USE_PROTOTYPE : USE_PROTOTYPE;
// scriptacolous, can only be used with prototype // scriptacolous, can only be used with prototype
if (USE_PROTOTYPE) { if ($cms->HEADER['USE_PROTOTYPE']) {
$cms->HEADER['USE_SCRIPTACULOUS'] = USE_SCRIPTACULOUS; $cms->HEADER['USE_SCRIPTACULOUS'] = isset($USE_SCRIPTACULOUS) ? $USE_SCRIPTACULOUS : USE_SCRIPTACULOUS;
} }
// jquery and prototype should not be used together // jquery and prototype should not be used together
$cms->HEADER['USE_JQUERY'] = USE_JQUERY; // don't use either of those two toger $cms->HEADER['USE_JQUERY'] = isset($USE_JQUERY) ? $USE_JQUERY : USE_JQUERY; // don't use either of those two together
// set basic template path (tmp) // set basic template path (tmp)
// paths are set in the 'set_paths.inc' file // paths are set in the 'set_paths.inc' file

View File

@@ -18,8 +18,10 @@
*********************************************************************/ *********************************************************************/
$DEBUG_ALL = 1; $DEBUG_ALL = 1;
$PRINT_ALL = 1;
$DB_DEBUG = 1; $DB_DEBUG = 1;
// TODO: only extract _POST data that is needed
extract($_POST, EXTR_SKIP); extract($_POST, EXTR_SKIP);
$table_width = '100%'; $table_width = '100%';
@@ -49,7 +51,6 @@ $login = new CoreLibs\ACL\Login($DB_CONFIG[LOGIN_DB], $lang);
// create form class // create form class
$form = new CoreLibs\Output\Form\Generate($DB_CONFIG[MAIN_DB], $lang); $form = new CoreLibs\Output\Form\Generate($DB_CONFIG[MAIN_DB], $lang);
$form->dbExec("SET search_path TO ".LOGIN_DB_SCHEMA);
if ($form->mobile_phone) { if ($form->mobile_phone) {
echo "I am sorry, but this page cannot be viewed by a mobile phone"; echo "I am sorry, but this page cannot be viewed by a mobile phone";
exit; exit;
@@ -70,13 +71,13 @@ if (TARGET == 'live' || TARGET == 'remote') {
// set the template dir // set the template dir
// WARNING: this has a special check for the mailing tool layout (old layout) // WARNING: this has a special check for the mailing tool layout (old layout)
if (defined('LAYOUT')) { if (defined('LAYOUT')) {
$smarty->setTemplateDir(LAYOUT.DEFAULT_TEMPLATE.TEMPLATES); $smarty->setTemplateDir(BASE.INCLUDES.TEMPLATES.CONTENT_PATH);
$DATA['css'] = LAYOUT.DEFAULT_TEMPLATE.CSS; $DATA['css'] = LAYOUT.CSS;
$DATA['js'] = LAYOUT.DEFAULT_TEMPLATE.JS; $DATA['js'] = LAYOUT.JS;
} else { } else {
$smarty->setTemplateDir(TEMPLATES.DEFAULT_TEMPLATE); $smarty->setTemplateDir(TEMPLATES);
$DATA['css'] = CSS.DEFAULT_TEMPLATE; $DATA['css'] = CSS;
$DATA['js'] = JS.DEFAULT_TEMPLATE; $DATA['js'] = JS;
} }
// space for setting special debug flags // space for setting special debug flags
@@ -105,203 +106,328 @@ $data = array (
// log action // log action
EditLog('Edit Submit', serialize($data)); EditLog('Edit Submit', serialize($data));
$form->formProcedureLoad(${$form->archive_pk_name}); if ($form->my_page_name == 'edit_order') {
$form->formProcedureNew(); // get is for "table_name" and "where" only
$form->formProcedureSave(); $table_name = isset($_GET['table_name']) ? $_GET['table_name'] : '';
$form->formProcedureDelete(); // $where = isset($_GET['where']) ? $_GET['where'] : '';
$form->formProcedureDeleteFromElementList($element_list, $remove_name); // order name is _always_ order_number for the edit interface
// define all needed smarty stuff for the general HTML/page building // follwing arrays do exist here:
$HEADER['CSS'] = CSS; // $position ... has the positions of the array (0..max), cause in a <select>
$HEADER['DEFAULT_ENCODING'] = DEFAULT_ENCODING; // I can't put an number into the array field, in this array,
$HEADER['JS'] = JS; // there are the POSITION stored, that should CHANGE there order (up/down)
$HEADER['STYLESHEET'] = $EDIT_STYLESHEET; // $row_data_id ... has ALL ids from the sorting part
$HEADER['JAVASCRIPT'] = $EDIT_JAVASCRIPT; // $row_data_order ... has ALL order positions from the soirting part
if (!is_array($position)) {
$position = array ();
}
if (count($position)) {
$original_id = $row_data_id;
$DATA['table_width'] = $table_width; // FIRST u have to put right sort, then read again ...
// hast to be >0 or the first one is selected and then there is no move
if ($up && $position[0] > 0) {
for ($i = 0; $i < count($position); $i++) {
// change position order
// this gets temp, id before that, gets actual (moves one "down")
// this gets the old before (moves one "up")
// is done for every element in row
// echo "A: ".$row_data_id[$position[$i]]." (".$row_data_order[$position[$i]].") -- ".$row_data_id[$position[$i]-1]." (".$row_data_order[$position[$i]-1].")<br>";
$temp_id = $row_data_id[$position[$i]];
$row_data_id[$position[$i]] = $row_data_id[$position[$i]-1];
$row_data_id[$position[$i]-1] = $temp_id;
// echo "A: ".$row_data_id[$position[$i]]." (".$row_data_order[$position[$i]].") -- ".$row_data_id[$position[$i]-1]." (".$row_data_order[$position[$i]-1].")<br>";
} // for
} // if up
// write out error / status messages // the last position id from position array is not to be the count-1 of row_data_id array, or it is the last element
$messages[] = $form->formPrintMsg(); if ($down && ($position[count($position) - 1] != (count($row_data_id) - 1))) {
$DATA['form_error_msg'] = $messages; for ($i = count($position) - 1; $i >= 0; $i --) {
// same as up, just up in other way, starts from bottom (last element) and moves "up"
// element before actuel gets temp, this element, becomes element after this,
// element after this, gets this
$temp_id = $row_data_id[$position[$i] + 1];
$row_data_id[$position[$i] + 1] = $row_data_id[$position[$i]];
$row_data_id[$position[$i]] = $temp_id;
} // for
} // if down
// MENU START // write data ... (which has to be abstrackt ...)
// request some session vars if (($up && $position[0] > 0) || ($down && ($position[count($position) - 1]!=(count($row_data_id) - 1)))) {
if (!$HEADER_COLOR) { for ($i = 0; $i < count($row_data_id); $i ++) {
$DATA['HEADER_COLOR'] = "#E0E2FF"; $q = "UPDATE ".$table_name." SET order_number = ".$row_data_order[$i]." WHERE ".$table_name."_id = ".$row_data_id[$i];
$q = $form->dbExec($q);
} // for all article ids ...
} // if write
} // if there is something to move
// get ...
$q = "SELECT ".$table_name."_id, name, order_number FROM ".$table_name." ";
if ($where_string) {
$q .= "WHERE $where_string ";
}
$q .= "ORDER BY order_number";
while ($res = $form->dbReturn($q)) {
$row_data[] = array (
"id" => $res[$table_name."_id"],
"name" => $res["name"],
"order" => $res["order_number"]
);
} // while read data ...
// define all needed smarty stuff for the general HTML/page building
$HEADER['CSS'] = CSS;
$HEADER['DEFAULT_ENCODING'] = DEFAULT_ENCODING;
$HEADER['JS'] = JS;
$HEADER['STYLESHEET'] = $EDIT_STYLESHEET;
$HEADER['JAVASCRIPT'] = $EDIT_JAVASCRIPT;
// html title
$HEADER['HTML_TITLE'] = (!$L_TITLE) ? $smarty->l10n->__($G_TITLE) : $smarty->l10n->__($L_TITLE);
// error msg
if ($error) {
$messages[] = array('msg' => $msg, 'class' => 'error', 'width' => '100%');
}
$DATA['form_error_msg'] = $messages;
// all the row data
$options_id = array ();
$options_name = array ();
$options_selected = array ();
if (!is_array($row_data)) {
$row_data = array ();
}
for ($i = 0; $i < count($row_data); $i ++) {
$options_id[] = $i;
$options_name[] = $row_data[$i]["name"];
// list of points to order
for ($j = 0; $j < count($position); $j++) {
// if matches, put into select array
if ($original_id[$position[$j]] == $row_data[$i]["id"]) {
$options_selected[] = $i;
}
}
}
$DATA['options_id'] = $options_id;
$DATA['options_name'] = $options_name;
$DATA['options_selected'] = $options_selected;
// hidden list for the data (id, order number)
$row_data_id = array ();
$row_data_order = array ();
for ($i = 0; $i < count($row_data); $i++) {
$row_data_id[] = $row_data[$i]["id"];
$row_data_order[] = $row_data[$i]["order"];
}
$DATA['row_data_id'] = $row_data_id;
$DATA['row_data_order'] = $row_data_order;
// hidden names for the table & where string
$DATA['table_name'] = $table_name;
$DATA['where_string'] = $where_string;
$EDIT_TEMPLATE = 'edit_order.tpl';
} else { } else {
$DATA['HEADER_COLOR'] = $_SESSION['HEADER_COLOR']; $form->formProcedureLoad(${$form->archive_pk_name});
} $form->formProcedureNew();
$DATA['USER_NAME'] = $_SESSION["USER_NAME"]; $form->formProcedureSave();
$DATA['EUID'] = $_SESSION["EUID"]; $form->formProcedureDelete();
$DATA['GROUP_NAME'] = $_SESSION["GROUP_NAME"]; $form->formProcedureDeleteFromElementList($element_list, $remove_name);
$DATA['GROUP_LEVEL'] = $_SESSION["GROUP_LEVEL"];
$PAGES = $_SESSION["PAGES"];
//$form->debug('menu', $form->printAr($PAGES)); // define all needed smarty stuff for the general HTML/page building
$HEADER['CSS'] = CSS;
$HEADER['DEFAULT_ENCODING'] = DEFAULT_ENCODING;
$HEADER['JS'] = JS;
$HEADER['STYLESHEET'] = $EDIT_STYLESHEET;
$HEADER['JAVASCRIPT'] = $EDIT_JAVASCRIPT;
// build nav from $PAGES ... $DATA['table_width'] = $table_width;
if (!is_array($PAGES)) {
$PAGES = array ();
}
for ($i = 0, $i_max = count($PAGES); $i < $i_max; $i ++) {
if ($PAGES[$i]["menu"] && $PAGES[$i]["online"]) {
$menuarray[] = $PAGES[$i];
}
}
// split point for nav points // write out error / status messages
$COUNT_NAV_POINTS = count($menuarray); $messages[] = $form->formPrintMsg();
$SPLIT_FACTOR = 3; $DATA['form_error_msg'] = $messages;
$START_SPLIT_COUNT = 3;
// WTF ?? I dunno what I am doing here ...
for ($i = 9; $i < $COUNT_NAV_POINTS; $i += $START_SPLIT_COUNT) {
if ($COUNT_NAV_POINTS > $i) {
$SPLIT_FACTOR += 1;
}
}
for ($i = 1; $i <= count($menuarray); $i ++) { // MENU START
// do that for new array // request some session vars
$j = $i - 1; if (!$HEADER_COLOR) {
$menu_data[$j]['pagename'] = htmlentities($menuarray[($i-1)]["page_name"]); $DATA['HEADER_COLOR'] = "#E0E2FF";
$menu_data[$j]['filename'] = $menuarray[($i-1)]["filename"].$menuarray[($i-1)]["query_string"];
if ($i == 1 || !(($i - 1) % $SPLIT_FACTOR)) {
$menu_data[$j]['splitfactor_in'] = 1;
}
if ($menuarray[($i - 1)]["filename"] == $form->getPageName()) {
$position = $i - 1;
$menu_data[$j]['position'] = 1;
} else { } else {
// add query stuff $DATA['HEADER_COLOR'] = $_SESSION['HEADER_COLOR'];
// HAS TO DONE LATER ... set urlencode, etc ...
// check if popup needed
if ($menuarray[($i - 1)]["popup"]) {
$menu_data[$j]['popup'] = 1;
$menu_data[$j]['rand'] = uniqid(rand());
$menu_data[$j]['width'] = $menuarray[($i-1)]["popup_x"];
$menu_data[$j]['height'] = $menuarray[($i-1)]["popup_y"];
} // popup or not
} // highlight or not
if (!($i % $SPLIT_FACTOR) || (($i + 1) > count($menuarray))) {
$menu_data[$j]['splitfactor_out'] = 1;
} // split
} // for
$DATA['menu_data'] = $menu_data;
$DATA['page_name'] = $menuarray[$position]["page_name"];
$L_TITLE = $DATA['page_name'];
// html title
$HEADER['HTML_TITLE'] = ((!$L_TITLE) ? $form->l->__($G_TITLE) : $form->l->__($L_TITLE));
// END MENU
// LOAD AND NEW
$DATA['load'] = $form->formCreateLoad();
$DATA['new'] = $form->formCreateNew();
// SHOW DATA PART
if ($form->yes) {
$DATA['form_yes'] = $form->yes;
$DATA['form_my_page_name'] = $form->my_page_name;
// depending on the "getPageName()" I show different stuff
switch ($form->my_page_name) {
case "edit_users":
$elements[] = $form->formCreateElement("login_error_count");
$elements[] = $form->formCreateElement("login_error_date_last");
$elements[] = $form->formCreateElement("login_error_date_first");
$elements[] = $form->formCreateElement("enabled");
$elements[] = $form->formCreateElement("protected");
$elements[] = $form->formCreateElement("username");
$elements[] = $form->formCreateElement("password");
$elements[] = $form->formCreateElement("password_change_interval");
$elements[] = $form->formCreateElement("email");
$elements[] = $form->formCreateElement("last_name");
$elements[] = $form->formCreateElement("first_name");
$elements[] = $form->formCreateElement("edit_group_id");
$elements[] = $form->formCreateElement("edit_access_right_id");
$elements[] = $form->formCreateElement("strict");
$elements[] = $form->formCreateElement("locked");
$elements[] = $form->formCreateElement("admin");
$elements[] = $form->formCreateElement("debug");
$elements[] = $form->formCreateElement("db_debug");
$elements[] = $form->formCreateElement("edit_language_id");
$elements[] = $form->formCreateElement("edit_scheme_id");
$elements[] = $form->formCreateElementListTable("edit_access_user");
break;
case "edit_schemes":
$elements[] = $form->formCreateElement("enabled");
$elements[] = $form->formCreateElement("name");
$elements[] = $form->formCreateElement("header_color");
$elements[] = $form->formCreateElement("template");
break;
case "edit_pages":
if (!$form->table_array["edit_page_id"]["value"]) {
$q = "DELETE FROM temp_files";
$form->dbExec($q);
// gets all files in the current dir ending with .php
$crap = exec("ls *.php", $output, $status);
// now get all that are NOT in de DB
$q = "INSERT INTO temp_files VALUES ";
for ($i = 0; $i < count($output); $i ++) {
$t_q = "('".$form->dbEscapeString($output[$i])."')";
$form->dbExec($q.$t_q, 'NULL');
}
$elements[] = $form->formCreateElement("filename");
} else {
// show file menu
// just show name of file ...
$DATA['filename_exist'] = 1;
$DATA['filename'] = $form->table_array["filename"]["value"];
} // File Name View IF
$elements[] = $form->formCreateElement("name");
// $elements[] = $form->formCreateElement("tag");
// $elements[] = $form->formCreateElement("min_acl");
$elements[] = $form->formCreateElement("order_number");
$elements[] = $form->formCreateElement("online");
$elements[] = $form->formCreateElement("menu");
$elements[] = $form->formCreateElementListTable("edit_query_string");
$elements[] = $form->formCreateElement("popup");
$elements[] = $form->formCreateElement("popup_x");
$elements[] = $form->formCreateElement("popup_y");
$elements[] = $form->formCreateElementReferenceTable("edit_visible_group");
$elements[] = $form->formCreateElementReferenceTable("edit_menu_group");
break;
case "edit_languages":
$elements[] = $form->formCreateElement("enabled");
$elements[] = $form->formCreateElement("short_name");
$elements[] = $form->formCreateElement("long_name");
$elements[] = $form->formCreateElement("iso_name");
break;
case "edit_groups":
$elements[] = $form->formCreateElement("enabled");
$elements[] = $form->formCreateElement("name");
$elements[] = $form->formCreateElement("edit_access_right_id");
$elements[] = $form->formCreateElement("edit_scheme_id");
$elements[] = $form->formCreateElementListTable("edit_page_access");
break;
case "edit_visible_group":
$elements[] = $form->formCreateElement("name");
$elements[] = $form->formCreateElement("flag");
break;
case "edit_menu_group":
$elements[] = $form->formCreateElement("name");
$elements[] = $form->formCreateElement("flag");
$elements[] = $form->formCreateElement("order_number");
break;
case "edit_access":
$elements[] = $form->formCreateElement("name");
$elements[] = $form->formCreateElement("enabled");
$elements[] = $form->formCreateElement("protected");
$elements[] = $form->formCreateElement("color");
$elements[] = $form->formCreateElement("description");
// add name/value list here
$elements[] = $form->formCreateElementListTable("edit_access_data");
break;
default:
print "[No valid page definition given]";
break;
} }
// $form->debug('edit', "Elements: <pre>".$form->printAr($elements)); $DATA['USER_NAME'] = $_SESSION["USER_NAME"];
$DATA['elements'] = $elements; $DATA['EUID'] = $_SESSION["EUID"];
$DATA['hidden'] = $form->formCreateHiddenFields(); $DATA['GROUP_NAME'] = $_SESSION["GROUP_NAME"];
$DATA['save_delete'] = $form->formCreateSaveDelete(); $DATA['GROUP_LEVEL'] = $_SESSION["GROUP_LEVEL"];
$PAGES = $_SESSION["PAGES"];
//$form->debug('menu', $form->printAr($PAGES));
// build nav from $PAGES ...
if (!is_array($PAGES)) {
$PAGES = array ();
}
for ($i = 0, $i_max = count($PAGES); $i < $i_max; $i ++) {
if ($PAGES[$i]["menu"] && $PAGES[$i]["online"]) {
$menuarray[] = $PAGES[$i];
}
}
// split point for nav points
$COUNT_NAV_POINTS = count($menuarray);
$SPLIT_FACTOR = 3;
$START_SPLIT_COUNT = 3;
// WTF ?? I dunno what I am doing here ...
for ($i = 9; $i < $COUNT_NAV_POINTS; $i += $START_SPLIT_COUNT) {
if ($COUNT_NAV_POINTS > $i) {
$SPLIT_FACTOR += 1;
}
}
for ($i = 1; $i <= count($menuarray); $i ++) {
// do that for new array
$j = $i - 1;
$menu_data[$j]['pagename'] = htmlentities($menuarray[($i-1)]["page_name"]);
$menu_data[$j]['filename'] = $menuarray[($i-1)]["filename"].$menuarray[($i-1)]["query_string"];
if ($i == 1 || !(($i - 1) % $SPLIT_FACTOR)) {
$menu_data[$j]['splitfactor_in'] = 1;
}
if ($menuarray[($i - 1)]["filename"] == $form->getPageName()) {
$position = $i - 1;
$menu_data[$j]['position'] = 1;
} else {
// add query stuff
// HAS TO DONE LATER ... set urlencode, etc ...
// check if popup needed
if ($menuarray[($i - 1)]["popup"]) {
$menu_data[$j]['popup'] = 1;
$menu_data[$j]['rand'] = uniqid(rand());
$menu_data[$j]['width'] = $menuarray[($i-1)]["popup_x"];
$menu_data[$j]['height'] = $menuarray[($i-1)]["popup_y"];
} // popup or not
} // highlight or not
if (!($i % $SPLIT_FACTOR) || (($i + 1) > count($menuarray))) {
$menu_data[$j]['splitfactor_out'] = 1;
} // split
} // for
$DATA['menu_data'] = $menu_data;
$DATA['page_name'] = $menuarray[$position]["page_name"];
$L_TITLE = $DATA['page_name'];
// html title
$HEADER['HTML_TITLE'] = ((!$L_TITLE) ? $form->l->__($G_TITLE) : $form->l->__($L_TITLE));
// END MENU
// LOAD AND NEW
$DATA['load'] = $form->formCreateLoad();
$DATA['new'] = $form->formCreateNew();
// SHOW DATA PART
if ($form->yes) {
$DATA['form_yes'] = $form->yes;
$DATA['form_my_page_name'] = $form->my_page_name;
// depending on the "getPageName()" I show different stuff
switch ($form->my_page_name) {
case "edit_users":
$elements[] = $form->formCreateElement("login_error_count");
$elements[] = $form->formCreateElement("login_error_date_last");
$elements[] = $form->formCreateElement("login_error_date_first");
$elements[] = $form->formCreateElement("enabled");
$elements[] = $form->formCreateElement("protected");
$elements[] = $form->formCreateElement("username");
$elements[] = $form->formCreateElement("password");
$elements[] = $form->formCreateElement("password_change_interval");
$elements[] = $form->formCreateElement("email");
$elements[] = $form->formCreateElement("last_name");
$elements[] = $form->formCreateElement("first_name");
$elements[] = $form->formCreateElement("edit_group_id");
$elements[] = $form->formCreateElement("edit_access_right_id");
$elements[] = $form->formCreateElement("strict");
$elements[] = $form->formCreateElement("locked");
$elements[] = $form->formCreateElement("admin");
$elements[] = $form->formCreateElement("debug");
$elements[] = $form->formCreateElement("db_debug");
$elements[] = $form->formCreateElement("edit_language_id");
$elements[] = $form->formCreateElement("edit_scheme_id");
$elements[] = $form->formCreateElementListTable("edit_access_user");
break;
case "edit_schemes":
$elements[] = $form->formCreateElement("enabled");
$elements[] = $form->formCreateElement("name");
$elements[] = $form->formCreateElement("header_color");
$elements[] = $form->formCreateElement("template");
break;
case "edit_pages":
if (!$form->table_array["edit_page_id"]["value"]) {
$q = "DELETE FROM temp_files";
$form->dbExec($q);
// gets all files in the current dir ending with .php
$crap = exec("ls *.php", $output, $status);
// now get all that are NOT in de DB
$q = "INSERT INTO temp_files VALUES ";
for ($i = 0; $i < count($output); $i ++) {
$t_q = "('".$form->dbEscapeString($output[$i])."')";
$form->dbExec($q.$t_q, 'NULL');
}
$elements[] = $form->formCreateElement("filename");
} else {
// show file menu
// just show name of file ...
$DATA['filename_exist'] = 1;
$DATA['filename'] = $form->table_array["filename"]["value"];
} // File Name View IF
$elements[] = $form->formCreateElement("name");
// $elements[] = $form->formCreateElement("tag");
// $elements[] = $form->formCreateElement("min_acl");
$elements[] = $form->formCreateElement("order_number");
$elements[] = $form->formCreateElement("online");
$elements[] = $form->formCreateElement("menu");
$elements[] = $form->formCreateElementListTable("edit_query_string");
$elements[] = $form->formCreateElement("popup");
$elements[] = $form->formCreateElement("popup_x");
$elements[] = $form->formCreateElement("popup_y");
$elements[] = $form->formCreateElementReferenceTable("edit_visible_group");
$elements[] = $form->formCreateElementReferenceTable("edit_menu_group");
break;
case "edit_languages":
$elements[] = $form->formCreateElement("enabled");
$elements[] = $form->formCreateElement("short_name");
$elements[] = $form->formCreateElement("long_name");
$elements[] = $form->formCreateElement("iso_name");
break;
case "edit_groups":
$elements[] = $form->formCreateElement("enabled");
$elements[] = $form->formCreateElement("name");
$elements[] = $form->formCreateElement("edit_access_right_id");
$elements[] = $form->formCreateElement("edit_scheme_id");
$elements[] = $form->formCreateElementListTable("edit_page_access");
break;
case "edit_visible_group":
$elements[] = $form->formCreateElement("name");
$elements[] = $form->formCreateElement("flag");
break;
case "edit_menu_group":
$elements[] = $form->formCreateElement("name");
$elements[] = $form->formCreateElement("flag");
$elements[] = $form->formCreateElement("order_number");
break;
case "edit_access":
$elements[] = $form->formCreateElement("name");
$elements[] = $form->formCreateElement("enabled");
$elements[] = $form->formCreateElement("protected");
$elements[] = $form->formCreateElement("color");
$elements[] = $form->formCreateElement("description");
// add name/value list here
$elements[] = $form->formCreateElementListTable("edit_access_data");
break;
default:
print "[No valid page definition given]";
break;
}
// $form->debug('edit', "Elements: <pre>".$form->printAr($elements));
$DATA['elements'] = $elements;
$DATA['hidden'] = $form->formCreateHiddenFields();
$DATA['save_delete'] = $form->formCreateSaveDelete();
}
$EDIT_TEMPLATE = 'edit_body.tpl';
} }
// debug data, if DEBUG flag is on, this data is print out // debug data, if DEBUG flag is on, this data is print out
@@ -319,7 +445,7 @@ if (is_dir(BASE.TEMPLATES_C)) {
if (is_dir(BASE.CACHE)) { if (is_dir(BASE.CACHE)) {
$smarty->setCacheDir(BASE.CACHE); $smarty->setCacheDir(BASE.CACHE);
} }
$smarty->display('edit_body.tpl'); $smarty->display($EDIT_TEMPLATE, $lang, $lang);
// debug output // debug output
echo $login->printErrorMsg(); echo $login->printErrorMsg();

View File

@@ -23,7 +23,7 @@
{/if} {/if}
</head> </head>
<body> <body>
<table width="{$table_width}" border="0" cellpadding="0" cellspacing="1"> <table width="100%" border="0" cellpadding="0" cellspacing="1">
<!-- ERROR MSG START //--> <!-- ERROR MSG START //-->
{foreach from=$form_error_msg item=element key=key name=loop} {foreach from=$form_error_msg item=element key=key name=loop}
{include file="edit_error_msg.tpl"} {include file="edit_error_msg.tpl"}
@@ -32,15 +32,15 @@
<!-- BODY START //--> <!-- BODY START //-->
<tr> <tr>
<td class="edit_bgcolor"> <td class="edit_bgcolor">
<table width="100%" border="0" cellpadding="2" cellspacing="1"> <table width="100%" border="0" cellpadding="2" cellspacing="1">
<!-- ANFANG Neu //--> <!-- ANFANG Neu //-->
<form method="post" enctype="multipart/form-data"> <form method="post" enctype="multipart/form-data">
<tr> <tr>
<td class="edit_fgcolor_alt" class="normal" colspan="2"> <td class="edit_fgcolor_alt" class="normal" colspan="2">
Order Order
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="edit_fgcolor" class="normal" width="80%"> <td class="edit_fgcolor" class="normal" width="80%">
<select name="position[]" size="20" multiple> <select name="position[]" size="20" multiple>
{html_options values=$options_id output=$options_name selected=$options_selected} {html_options values=$options_id output=$options_name selected=$options_selected}
@@ -65,15 +65,15 @@
<input type="hidden" name="where_string" value="{$where_string}"> <input type="hidden" name="where_string" value="{$where_string}">
<!-- single hiddens //--> <!-- single hiddens //-->
</td> </td>
</tr> </tr>
<tr> <tr>
<td class="edit_fgcolor_alt" class="normal" colspan="2"> <td class="edit_fgcolor_alt" class="normal" colspan="2">
<input type="button" name="close" value="Close" OnClick="self.close();"> <input type="button" name="close" value="Close" OnClick="self.close();">
</td> </td>
</tr> </tr>
</form> </form>
<!-- ENDE FOOTER //--> <!-- ENDE FOOTER //-->
</table> </table>
</td> </td>
</tr> </tr>
<!-- BODY END //--> <!-- BODY END //-->

View File

@@ -30,13 +30,24 @@
<script language="JavaScript" src="{$js}/debug.js"></script> <script language="JavaScript" src="{$js}/debug.js"></script>
{if $USE_JQUERY} {if $USE_JQUERY}
<!-- JQuery --> <!-- JQuery -->
<script type="text/javascript" src="{$js}/jquery.js"></script> <script type="text/javascript" src="{$js}/jquery.min.js"></script>
{/if} {/if}
{if $USE_PROTOTYPE} {if $USE_PROTOTYPE}
<script src="{$js}/scriptaculous/prototype.js" type="text/javascript"></script> <script src="{$js}/scriptaculous/prototype.js" type="text/javascript"></script>
{/if} {if $USE_SCRIPTACULOUS}
{if $USE_SCRIPTACULOUS}
<script src="{$js}/scriptaculous/scriptaculous.js" type="text/javascript"></script> <script src="{$js}/scriptaculous/scriptaculous.js" type="text/javascript"></script>
{/if}
{/if}
{* for including datepickr or flatpickr *}
{if $JS_DATEPICKR}
<link rel=stylesheet type="text/css" href="{$js}/datepickr/datepickr.min.css">
<script language="JavaScript" src="{$js}/datepickr/datepickr.min.js"></script>
<script language="JavaScript" src="{$js}/datepickr/datepickr.init.js"></script>
{/if}
{if $JS_FLATPICKR}
<link rel=stylesheet type="text/css" href="{$js}/flatpickr/flatpickr.min.css">
<script language="JavaScript" src="{$js}/flatpickr/flatpickr.min.js"></script>
<script language="JavaScript" src="{$js}/flatpickr/flatpickr.ja.js"></script>
{/if} {/if}
{if $JAVASCRIPT} {if $JAVASCRIPT}
<script language="JavaScript" src="{$js}{$JAVASCRIPT}"></script> <script language="JavaScript" src="{$js}{$JAVASCRIPT}"></script>
@@ -96,10 +107,7 @@
<div style="position: relative; height: 20px;" class="menu"> <div style="position: relative; height: 20px;" class="menu">
<div style="position: absolute; width: 200px;">{t 1=$USER_NAME|upper}Hello %1{/t}</div> <div style="position: absolute; width: 200px;">{t 1=$USER_NAME|upper}Hello %1{/t}</div>
<div style="position: absolute; text-align: right; right: 0px; width: 120px;"> <div style="position: absolute; text-align: right; right: 0px; width: 120px;">
<form method="post" name="loginlogout"> <a href="#" OnClick="loginLogout(); return false;">{t}Logout{/t}</a>
<a href="javascript:document.loginlogout.login_logout.value='Logout';document.loginlogout.submit();">{t}Logout{/t}</a>
<input type="hidden" name="login_logout" value="">
</form>
</div> </div>
</div> </div>
<div style="margin-bottom: 5px;" class="menu"> <div style="margin-bottom: 5px;" class="menu">

View File

@@ -0,0 +1,21 @@
<div>
{$SMARTY_TEST}
</div>
<div>
<select id="drop_down_test" name="drop_down_test">
{html_options options=$drop_down_test selected=$drop_down_test_selected}
</select>
</div>
<div class="jq-container">
<div id="jq-test" class="jp-test">
<div id="test-div" class="test-div">
Some content ehre or asdfasdfasf
</div>
</div>
</div>
{* progresss indicator *}
<div id="indicator"></div>
{* the action confirm box *}
<div id="actionBox" class="actionBoxElement"></div>
{* The Overlay box *}
<div id="overlayBox" class="overlayBoxElement"></div>

View File

@@ -0,0 +1,58 @@
<script type="text/template" id="qq-template-s3">
<div class="qq-uploader-selector qq-uploader" qq-drop-area-text="{t}Drop files here{/t}">
<!-- <div class="qq-total-progress-bar-container-selector qq-total-progress-bar-container">
<div role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" class="qq-total-progress-bar-selector qq-progress-bar qq-total-progress-bar"></div>
</div> -->
<div class="qq-upload-drop-area-selector qq-upload-drop-area" qq-hide-dropzone>
<span class="qq-upload-drop-area-text-selector"></span>
</div>
<div class="qq-upload-button-selector qq-upload-button">
<div>{t}Upload a file{/t}</div>
</div>
<span class="qq-drop-processing-selector qq-drop-processing">
<span>{t}Processing dropped files...{/t}</span>
<span class="qq-drop-processing-spinner-selector qq-drop-processing-spinner"></span>
</span>
<ul class="qq-upload-list-selector qq-upload-list" aria-live="polite" aria-relevant="additions removals">
<li>
<div class="qq-progress-bar-container-selector">
<div role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" class="qq-progress-bar-selector qq-progress-bar"></div>
</div>
<span class="qq-upload-spinner-selector qq-upload-spinner"></span>
<img class="qq-thumbnail-selector" qq-max-size="100" qq-server-scale>
<span class="qq-upload-file-selector qq-upload-file"></span>
<span class="qq-edit-filename-icon-selector qq-edit-filename-icon" aria-label="{t}Edit filename{/t}"></span>
<input class="qq-edit-filename-selector qq-edit-filename" tabindex="0" type="text">
<span class="qq-upload-size-selector qq-upload-size"></span>
<button type="button" class="qq-btn qq-upload-cancel-selector qq-upload-cancel">{t}Cancel{/t}</button>
<button type="button" class="qq-btn qq-upload-retry-selector qq-upload-retry">{t}Retry{/t}</button>
<button type="button" class="qq-btn qq-upload-delete-selector qq-upload-delete">{t}Delete{/t}</button>
<span role="status" class="qq-upload-status-text-selector qq-upload-status-text"></span>
</li>
</ul>
<dialog class="qq-alert-dialog-selector">
<div class="qq-dialog-message-selector"></div>
<div class="qq-dialog-buttons">
<button type="button" class="qq-cancel-button-selector">{t}Close{/t}</button>
</div>
</dialog>
<dialog class="qq-confirm-dialog-selector">
<div class="qq-dialog-message-selector"></div>
<div class="qq-dialog-buttons">
<button type="button" class="qq-cancel-button-selector">{t}No{/t}</button>
<button type="button" class="qq-ok-button-selector">{t}Yes{/t}</button>
</div>
</dialog>
<dialog class="qq-prompt-dialog-selector">
<div class="qq-dialog-message-selector"></div>
<input type="text">
<div class="qq-dialog-buttons">
<button type="button" class="qq-cancel-button-selector">{t}Cancel{/t}</button>
<button type="button" class="qq-ok-button-selector">{t}Ok{/t}</button>
</div>
</dialog>
</div>
</script>

View File

@@ -0,0 +1,58 @@
<script type="text/template" id="qq-template">
<div class="qq-uploader-selector qq-uploader" qq-drop-area-text="{t}Drop files here{/t}">
<!-- <div class="qq-total-progress-bar-container-selector qq-total-progress-bar-container">
<div role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" class="qq-total-progress-bar-selector qq-progress-bar qq-total-progress-bar"></div>
</div> -->
<div class="qq-upload-drop-area-selector qq-upload-drop-area" qq-hide-dropzone>
<span class="qq-upload-drop-area-text-selector"></span>
</div>
<div class="qq-upload-button-selector qq-upload-button">
<div>{t}Upload a file{/t}</div>
</div>
<span class="qq-drop-processing-selector qq-drop-processing">
<span>{t}Processing dropped files...{/t}</span>
<span class="qq-drop-processing-spinner-selector qq-drop-processing-spinner"></span>
</span>
<ul class="qq-upload-list-selector qq-upload-list" aria-live="polite" aria-relevant="additions removals">
<li>
<div class="qq-progress-bar-container-selector">
<div role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" class="qq-progress-bar-selector qq-progress-bar"></div>
</div>
<span class="qq-upload-spinner-selector qq-upload-spinner"></span>
<img class="qq-thumbnail-selector" qq-max-size="100" qq-server-scale>
<span class="qq-upload-file-selector qq-upload-file"></span>
<span class="qq-edit-filename-icon-selector qq-edit-filename-icon" aria-label="{t}Edit filename{/t}"></span>
<input class="qq-edit-filename-selector qq-edit-filename" tabindex="0" type="text">
<span class="qq-upload-size-selector qq-upload-size"></span>
<button type="button" class="qq-btn qq-upload-cancel-selector qq-upload-cancel">{t}Cancel{/t}</button>
<button type="button" class="qq-btn qq-upload-retry-selector qq-upload-retry">{t}Retry{/t}</button>
<button type="button" class="qq-btn qq-upload-delete-selector qq-upload-delete">{t}Delete{/t}</button>
<span role="status" class="qq-upload-status-text-selector qq-upload-status-text"></span>
</li>
</ul>
<dialog class="qq-alert-dialog-selector">
<div class="qq-dialog-message-selector"></div>
<div class="qq-dialog-buttons">
<button type="button" class="qq-cancel-button-selector">{t}Close{/t}</button>
</div>
</dialog>
<dialog class="qq-confirm-dialog-selector">
<div class="qq-dialog-message-selector"></div>
<div class="qq-dialog-buttons">
<button type="button" class="qq-cancel-button-selector">{t}No{/t}</button>
<button type="button" class="qq-ok-button-selector">{t}Yes{/t}</button>
</div>
</dialog>
<dialog class="qq-prompt-dialog-selector">
<div class="qq-dialog-message-selector"></div>
<input type="text">
<div class="qq-dialog-buttons">
<button type="button" class="qq-cancel-button-selector">{t}Cancel{/t}</button>
<button type="button" class="qq-ok-button-selector">{t}Ok{/t}</button>
</div>
</dialog>
</div>
</script>

View File

@@ -26,10 +26,16 @@
{if $JAVASCRIPT} {if $JAVASCRIPT}
<script language="JavaScript" src="{$js}{$JAVASCRIPT}"></script> <script language="JavaScript" src="{$js}{$JAVASCRIPT}"></script>
{/if} {/if}
{if $USE_JQUERY}
{* JQuery *}
<script type="text/javascript" src="{$js}/jquery.min.js"></script>
{/if}
{if $USE_PROTOTYPE}
{* declare prototype everywhere *} {* declare prototype everywhere *}
<script src="{$js}/scriptaculous/prototype.js" type="text/javascript"></script> <script src="{$js}/scriptaculous/prototype.js" type="text/javascript"></script>
{if $USE_SCRIPTACULOUS} {if $USE_SCRIPTACULOUS}
<script src="{$js}/scriptaculous/scriptaculous.js" type="text/javascript"></script> <script src="{$js}/scriptaculous/scriptaculous.js" type="text/javascript"></script>
{/if}
{/if} {/if}
{if $JS_INCLUDE} {if $JS_INCLUDE}
<script language="JavaScript" src="{$JS_INCLUDE}"></script> <script language="JavaScript" src="{$JS_INCLUDE}"></script>
@@ -37,10 +43,16 @@
{if $JS_SPECIAL_INCLUDE} {if $JS_SPECIAL_INCLUDE}
<script language="JavaScript" src="{$JS_SPECIAL_INCLUDE}"></script> <script language="JavaScript" src="{$JS_SPECIAL_INCLUDE}"></script>
{/if} {/if}
{* for including datepickr *} {* for including datepickr or flatpickr *}
{if $JS_DATEPICKR} {if $JS_DATEPICKR}
<link rel=stylesheet type="text/css" href="{$js}/datepickr/datepickr.min.css"> <link rel=stylesheet type="text/css" href="{$js}/datepickr/datepickr.min.css">
<script language="JavaScript" src="{$js}/datepickr/datepickr.min.js"></script> <script language="JavaScript" src="{$js}/datepickr/datepickr.min.js"></script>
<script language="JavaScript" src="{$js}/datepickr/datepickr.init.js"></script>
{/if}
{if $JS_FLATPICKR}
<link rel=stylesheet type="text/css" href="{$js}/flatpickr/flatpickr.min.css">
<script language="JavaScript" src="{$js}/flatpickr/flatpickr.min.js"></script>
<script language="JavaScript" src="{$js}/flatpickr/flatpickr.ja.js"></script>
{/if} {/if}
{if $USE_OVERLIB} {if $USE_OVERLIB}
{popup_init src="`$js`/overlib/overlib.js"} {popup_init src="`$js`/overlib/overlib.js"}

View File

@@ -0,0 +1,89 @@
/* smart test CSS */
.jq-container {
width: 100%;
margin: 0;
padding: 0;
}
.jp-test {
width: 100%;
padding: 20px;
box-sizing: border-box;
}
.test-div {
padding: 20px;
}
/* CORE overlay, progress elements */
.actionBoxElement {
background-color: white;
border-radius: 10px;
border: 2px solid black;
box-shadow: #333333 10px 10px 25px;
color: black;
/*font-size: 20px;*/
left: 45px;
min-height: 200px;
position: fixed;
text-align: center;
top: 45px;
width: 70%;
z-index: 99;
}
.actionBoxTitle {
background-color: #c2c5cf;
border-radius: 7px 7px 0 0;
margin-bottom: 5px;
padding: 5px;
}
.actionBoxText {
margin: 0 20px 0 20px;
}
.actionBoxButtons {
bottom: 0;
font-size: 20px;
padding: 20px 20px 10px 20px;
position: absolute;
width: 95%;
}
/* the overlay background black cover */
.overlayBoxElement {
background-color: rgba(0, 0, 0, 0.3);
height: 100%;
left: 0;
position: fixed;
top: 0;
width: 100%;
z-index: 98;
}
/* the progress guruguru */
/* NEW VERSION with CSS key frame animation */
.progress {
width: 100px;
height: 100px;
background: rgba(255, 255, 255, 0.6);
border: 20px solid rgba(255, 255, 255, 0.25);
border-left-color: rgba(3, 155, 229 ,1);
border-top-color: rgba(3, 155, 229 ,1);
border-radius: 50%;
display: inline-block;
animation: rotate 600ms infinite linear;
/* align */
left: 0;
top: 0;
position: absolute;
z-index: 120;
}
/* Animation for above progress */
@keyframes rotate {
to {
transform: rotate(1turn)
}
}

View File

@@ -1,16 +0,0 @@
/*
********************************************************************
* AUTHOR: Clemens Schwaighofer
* DATE: 2015/4/24
* DESCRIPTION:
* debug javascript
* HISTORY:
********************************************************************
*/
// if debug is set to true, console log messages are printed
if (!DEBUG) {
$($H(window.console)).each(function(w) {
window.console[w.key] = function() {};
});
}

View File

@@ -1,16 +0,0 @@
/* vim: set fileencoding=utf-8 expandtab! shiftwidth=2 : */
/* modified version of firebugx.js which can cope with
* firebug 1.2+ and the webkit console */
var ConsoleSetup = function() {
if (!window.console)
window.console = {};
var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
for (var i = 0; i < names.length; ++i) {
if (!window.console[names[i]]) {
window.console[names[i]] = function() {};
}
}
}();

File diff suppressed because one or more lines are too long

View File

@@ -1 +0,0 @@
jquery-3.1.0.min.js

View File

@@ -1 +0,0 @@
jquery-3.1.0.js

View File

@@ -1,8 +0,0 @@
<div>
{$SMARTY_TEST}
</div>
<div>
<select id="drop_down_test" name="drop_down_test">
{html_options options=$drop_down_test selected=$drop_down_test_selected}
</select>
</div>

View File

Before

Width:  |  Height:  |  Size: 6.6 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@@ -0,0 +1,20 @@
/* only used for datepickr */
// METHOD: initDatepickr
// PARAMS: initial date ID (#)
// RETURN: true on ok, false on failure
// DESC : inits date pickr which translations for dates (week/month)
function initDatepickr(init_date)
{
if ($(init_date)) {
datepickr('#' + init_date); // we need to add this so we have it initialized before we can actually change the definitions
// dates in japanese
datepickr.prototype.l10n.months.shorthand = [__('Jan'), __('Feb'), __('Mar'), __('Apr'), __('May'), __('Jun'), __('Jul'), __('Aug'), __('Sep'), __('Oct'), __('Nov'), __('Dec')];
datepickr.prototype.l10n.months.longhand = [__('January'), __('February'), __('March'), __('April'), __('May'), __('June'), __('July'), __('August'), __('September'), __('October'), __('November'), __('December')];
datepickr.prototype.l10n.weekdays.shorthand = [__('Mon'), __('Tue'), __('Wed'), __('Thu'), __('Fri'), __('Sat'), __('Sun')];
datepickr.prototype.l10n.weekdays.longhand = [__('Monday'), __('Tuesday'), __('Wednesday'), __('Thursday'), __('Friday'), __('Saturday'), __('Sunday')];
return true;
} else {
return false;
}
}

View File

@@ -0,0 +1,14 @@
/*********************************************************************
* AUTHOR: Clemens Schwaighofer
* DATE: 2015/4/24
* DESCRIPTION:
* debug javascript
* HISTORY:
**********************************************************************/
// if debug is set to true, console log messages are printed
if (!DEBUG) {
for (var prop in window.console) {
window.console[prop] = function () {};
}
}

View File

Before

Width:  |  Height:  |  Size: 56 B

After

Width:  |  Height:  |  Size: 56 B

View File

Before

Width:  |  Height:  |  Size: 87 B

After

Width:  |  Height:  |  Size: 87 B

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