[interchange-cvs] interchange - heins modified 107 files
interchange-core@icdevgroup.org
interchange-core@icdevgroup.org
Tue Jan 14 00:08:00 2003
User: heins
Date: 2003-01-14 02:25:54 GMT
Modified: . MANIFEST Makefile.PL README WHATSNEW configure
Modified: SPECS interchange.spec
Modified: code/SystemTag deliver.coretag
Modified: code/UI_Tag auto_wizard.coretag global_value.coretag
Modified: reconfig.coretag regenerate.coretag
Modified: dist/foundation/products variable.txt
Modified: dist/lib/UI ichelp.txt
Modified: dist/lib/UI/pages/admin access_permissions.html
Modified: bug_report.html content.html content_push.html
Modified: customer.html customer_all.html customer_bill.html
Modified: customer_mailing.html customer_pref.html
Modified: customer_ship.html customer_view.html
Modified: db_metaconfig.html db_newview.html dbconfig.html
Modified: dbinfo.html file_transfer.html flex_editor.html
Modified: flex_select.html genconfig.html gentable.html
Modified: help.html import_table.html index.html item.html
Modified: item_cross.html item_edit.html item_feature.html
Modified: item_inventory.html item_price.html item_up.html
Modified: layout.html layout_auto.html login.html
Modified: menu_editor.html merchandising.html
Modified: meta_editor.html order.html order_status.html
Modified: order_view.html payment.html preferences.html
Modified: reconfig.html search_replace.html
Modified: search_wizard.html search_wizard2.html
Modified: search_wizard3.html search_wizard_results.html
Modified: ship.html ship_data.html ship_edit.html
Modified: ship_range.html show_session.html spread.html
Modified: tax.html
Modified: dist/lib/UI/pages/admin/survey index.html overall.html
Modified: dist/lib/UI/pages/include page_editor
Modified: dist/lib/UI/profiles db_maintenance process_filter
Modified: dist/lib/UI/vars UI_STD_FILE_NAV UI_STD_FOOTER UI_STD_HEAD
Modified: lib/Vend Dispatch.pm Error.pm Interpolate.pm Page.pm
Modified: Parse.pm Parser.pm
Modified: lib/Vend/Table DB_File.pm Editor.pm GDBM.pm
Modified: scripts interchange.PL
Added: code/SystemTag output_to.tag unpack.coretag
Added: code/Widget gpg_keys.widget
Added: dist/lib/UI/locales en_US.cfg
Added: dist/lib/UI/pages/admin commerce.html
Added: content_components.html content_templates.html
Added: dbconfig_save.html edit_metaconfig.html
Added: generic.html genfunction.html gpg_key.html
Added: menu_loader.html merge_meta.html
Added: order_status_alt.html page_metaconfig.html
Added: pref_select.html
Added: dist/lib/UI/pages/include/meta mv_metadata.asc
Added: dist/lib/UI/pages/include/templates ui_type1 ui_type2
Added: ui_type3 ui_type5
Log:
* Major changes to the Interchange output model and UI.
* There will be more commits for menu data.
UI
-------
* Zeald's redesign of the UI layout is almost fully implemented. There
are but a few pages that don't incorporate the new layout.
* Each page can have an entry in mv_metadata, which allows setting
of page titles, display types, menus, and more via database setting.
An editor is provided.
* Virtual UI pages are fully supported. This will allow catalog-specific
UI settings to be transmitted to a catalog with simple database updates.
Each page is simply an entry in mv_metadata.
* The second-level menu can be set either with the page class, as before,
or in the page metadata with $Scratch->{second_menu}.
* There is a third-level menu callable via $Scratch->{third_menu}. There
are few situations where the old "next_line" menu setting causes the
third-level menu -- old menu files should be compatible but where possible
the third-level menu is explicitly specified.
* [table-editor] and [tabbed-display] can now do tabs to the third-level
menus. This provides a very seamless tabbed display that does not
require a page access to change.
* Many changes made to pages to map output to the new template.
* New GPG encryption wizard to make setting up of encryption as close
to painless as I can make it.
* Change to menu editor to incorporate better menu loading.
* New merge_metadata function allows management of new metadata when
updating the UI.
* Many, many minor changes and visual improvements.
* A good deal of documentation about the metadata and table editor
has been written, and those items should be committed soon. Many
of the features are covered.
Core
-----
* Output of the parser is now sent to @Vend::Output, which allows remapping
of the parser output before output by the Server module.
There should be no difference in behavior by default.
Each piece of output is pushed onto an array, and pointers
are maintained as to the name of the output. The default if
the output is not remapped is to go to the $Vend::OutputMap{''} space.
When output is done in non-mapped mode, @Vend::Output is simply
joined and sent.
The behavior diffence comes if you use the Vend::Page::output_cat
routine. It will output the value of a named space.
You can map output with the ITL tag:
[output-to name=foo]
To return to the default space, you use:
[output-to name=""]
To return to the *previous* named space, use:
[output-to]
That is not normally what is wanted, though.
All of the above allows you to map pieces of a page to different named
spaces and unpack them with the [unpack] tag.
This is all perhaps easier illustrated than described -- the illustration
is in the changes to the UI, which map output from the page code to the
template.
Revision Changes Path
2.79 +27 -0 interchange/MANIFEST
rev 2.79, prev_rev 2.78
Index: MANIFEST
===================================================================
RCS file: /var/cvs/interchange/MANIFEST,v
retrieving revision 2.78
retrieving revision 2.79
diff -u -r2.78 -r2.79
--- MANIFEST 7 Jan 2003 19:57:31 -0000 2.78
+++ MANIFEST 14 Jan 2003 02:25:49 -0000 2.79
@@ -13,8 +13,11 @@
UPGRADE
WHATSNEW
code/ActionMap/foo.am
+code/Filter/convert_date.filter
code/Filter/date2time.filter
+code/Filter/encrypt.filter
code/Filter/lc.filter
+code/Filter/linkdecode.filter
code/Filter/next_sequential.filter
code/SystemTag/accessories.coretag
code/SystemTag/accounting.coretag
@@ -69,6 +72,7 @@
code/SystemTag/onfly.coretag
code/SystemTag/options.coretag
code/SystemTag/order.coretag
+code/SystemTag/output_to.tag
code/SystemTag/page.coretag
code/SystemTag/parse_locale.coretag
code/SystemTag/perl.coretag
@@ -103,12 +107,14 @@
code/SystemTag/total_cost.coretag
code/SystemTag/tree.coretag
code/SystemTag/try.coretag
+code/SystemTag/unpack.coretag
code/SystemTag/update.coretag
code/SystemTag/userdb.coretag
code/SystemTag/value.coretag
code/SystemTag/value_extended.coretag
code/SystemTag/warnings.coretag
code/UI_Tag/add_gpg_key.coretag
+code/UI_Tag/assume_identity.tag
code/UI_Tag/auto_wizard.coretag
code/UI_Tag/available_ups_internal.coretag
code/UI_Tag/available_www_shipping.coretag
@@ -186,6 +192,7 @@
code/UserTag/history_scan.tag
code/UserTag/load_cart.tag
code/UserTag/loc.tag
+code/UserTag/page_meta.tag
code/UserTag/rand.tag
code/UserTag/save_cart.tag
code/UserTag/summary.tag
@@ -194,6 +201,7 @@
code/UserTag/ups_query.tag
code/UserTag/usertrack.tag
code/UserTag/var.tag
+code/Widget/gpg_keys.widget
code/Widget/imagedir.widget
code/Widget/imagehelper.widget
code/Widget/uploadhelper.widget
@@ -916,6 +924,7 @@
dist/lib/UI/locales/da_DK.cfg
dist/lib/UI/locales/de_DE.cfg
dist/lib/UI/locales/default.cfg
+dist/lib/UI/locales/en_US.cfg
dist/lib/UI/locales/es_ES.cfg
dist/lib/UI/locales/he_IL.cfg
dist/lib/UI/locales/ja_JP.cfg
@@ -934,11 +943,14 @@
dist/lib/UI/pages/admin/bug_report.html
dist/lib/UI/pages/admin/build_related.html
dist/lib/UI/pages/admin/button_builder.html
+dist/lib/UI/pages/admin/commerce.html
dist/lib/UI/pages/admin/content.html
+dist/lib/UI/pages/admin/content_components.html
dist/lib/UI/pages/admin/content_editor.html
dist/lib/UI/pages/admin/content_preview.html
dist/lib/UI/pages/admin/content_publish.html
dist/lib/UI/pages/admin/content_push.html
+dist/lib/UI/pages/admin/content_templates.html
dist/lib/UI/pages/admin/customer.html
dist/lib/UI/pages/admin/customer_all.html
dist/lib/UI/pages/admin/customer_bill.html
@@ -952,12 +964,14 @@
dist/lib/UI/pages/admin/db_metaconfig.html
dist/lib/UI/pages/admin/db_newview.html
dist/lib/UI/pages/admin/dbconfig.html
+dist/lib/UI/pages/admin/dbconfig_save.html
dist/lib/UI/pages/admin/dbdownload.html
dist/lib/UI/pages/admin/dbinfo.html
dist/lib/UI/pages/admin/direct_sql.html
dist/lib/UI/pages/admin/do_upload.html
dist/lib/UI/pages/admin/do_upload_page.html
dist/lib/UI/pages/admin/do_view.html
+dist/lib/UI/pages/admin/edit_metaconfig.html
dist/lib/UI/pages/admin/entry.html
dist/lib/UI/pages/admin/entry_select.html
dist/lib/UI/pages/admin/env_vars.html
@@ -970,7 +984,10 @@
dist/lib/UI/pages/admin/flex_select.html
dist/lib/UI/pages/admin/fr_index.html
dist/lib/UI/pages/admin/genconfig.html
+dist/lib/UI/pages/admin/generic.html
+dist/lib/UI/pages/admin/genfunction.html
dist/lib/UI/pages/admin/gentable.html
+dist/lib/UI/pages/admin/gpg_key.html
dist/lib/UI/pages/admin/group.html
dist/lib/UI/pages/admin/group_edit.html
dist/lib/UI/pages/admin/help.html
@@ -990,16 +1007,21 @@
dist/lib/UI/pages/admin/layout_auto.html
dist/lib/UI/pages/admin/login.html
dist/lib/UI/pages/admin/menu_editor.html
+dist/lib/UI/pages/admin/menu_loader.html
dist/lib/UI/pages/admin/merchandising.html
+dist/lib/UI/pages/admin/merge_meta.html
dist/lib/UI/pages/admin/meta_editor.html
dist/lib/UI/pages/admin/misc_order_number.html
dist/lib/UI/pages/admin/order.html
dist/lib/UI/pages/admin/order_status.html
+dist/lib/UI/pages/admin/order_status_alt.html
dist/lib/UI/pages/admin/order_view.html
dist/lib/UI/pages/admin/orderstats.html
+dist/lib/UI/pages/admin/page_metaconfig.html
dist/lib/UI/pages/admin/page_upload.html
dist/lib/UI/pages/admin/payment.html
dist/lib/UI/pages/admin/pref_colors.html
+dist/lib/UI/pages/admin/pref_select.html
dist/lib/UI/pages/admin/preferences.html
dist/lib/UI/pages/admin/quick_question.html
dist/lib/UI/pages/admin/quicklinks.html
@@ -1100,10 +1122,15 @@
dist/lib/UI/pages/include/menus/Reports.txt
dist/lib/UI/pages/include/menus/Top.txt
dist/lib/UI/pages/include/menus/Wizard.txt
+dist/lib/UI/pages/include/meta/mv_metadata.asc
dist/lib/UI/pages/include/order_delete_archive
dist/lib/UI/pages/include/page_editor
dist/lib/UI/pages/include/table_populator
dist/lib/UI/pages/include/template_editor
+dist/lib/UI/pages/include/templates/ui_type1
+dist/lib/UI/pages/include/templates/ui_type2
+dist/lib/UI/pages/include/templates/ui_type3
+dist/lib/UI/pages/include/templates/ui_type5
dist/lib/UI/pages/include/wizard_checklist
dist/lib/UI/pages/include/wizard_profiles
dist/lib/UI/profiles/Cancel
2.33 +1 -1 interchange/Makefile.PL
rev 2.33, prev_rev 2.32
Index: Makefile.PL
===================================================================
RCS file: /var/cvs/interchange/Makefile.PL,v
retrieving revision 2.32
retrieving revision 2.33
diff -u -r2.32 -r2.33
--- Makefile.PL 12 Dec 2002 16:08:06 -0000 2.32
+++ Makefile.PL 14 Jan 2003 02:25:49 -0000 2.33
@@ -28,7 +28,7 @@
my @remove_old;
my $Lock_troubles;
-$VERSION = '4.9.6';
+$VERSION = '4.9.7';
my @os_hints;
eval {
2.17 +1 -1 interchange/README
rev 2.17, prev_rev 2.16
Index: README
===================================================================
RCS file: /var/cvs/interchange/README,v
retrieving revision 2.16
retrieving revision 2.17
diff -u -r2.16 -r2.17
--- README 12 Dec 2002 16:08:06 -0000 2.16
+++ README 14 Jan 2003 02:25:49 -0000 2.17
@@ -2,7 +2,7 @@
I N T E R C H A N G E
-Interchange 4.9.6
+Interchange 4.9.7
Copyright (C) 1996-2002 Red Hat, Inc., and others.
2.82 +2 -1 interchange/WHATSNEW
rev 2.82, prev_rev 2.81
Index: WHATSNEW
===================================================================
RCS file: /var/cvs/interchange/WHATSNEW,v
retrieving revision 2.81
retrieving revision 2.82
diff -u -r2.81 -r2.82
--- WHATSNEW 13 Jan 2003 22:00:11 -0000 2.81
+++ WHATSNEW 14 Jan 2003 02:25:49 -0000 2.82
@@ -5,8 +5,9 @@
------------------------------------------------------------------------------
+Interchange 4.9.7 not yet released
-Interchange 4.9.6 not yet released.
+Interchange 4.9.6, released 8-Jan-2003.
Core
2.12 +2 -2 interchange/configure
rev 2.12, prev_rev 2.11
Index: configure
===================================================================
RCS file: /var/cvs/interchange/configure,v
retrieving revision 2.11
retrieving revision 2.12
diff -u -r2.11 -r2.12
--- configure 14 Dec 2002 17:59:30 -0000 2.11
+++ configure 14 Jan 2003 02:25:49 -0000 2.12
@@ -1,8 +1,8 @@
#!/bin/sh
-# $Id: configure,v 2.11 2002/12/14 17:59:30 jon Exp $
+# $Id: configure,v 2.12 2003/01/14 02:25:49 mheins Exp $
-ICVERSION='4.9.6'
+ICVERSION='4.9.7'
cat <<EOF
2.19 +1 -1 interchange/SPECS/interchange.spec
rev 2.19, prev_rev 2.18
Index: interchange.spec
===================================================================
RCS file: /var/cvs/interchange/SPECS/interchange.spec,v
retrieving revision 2.18
retrieving revision 2.19
diff -u -r2.18 -r2.19
--- interchange.spec 12 Dec 2002 16:08:07 -0000 2.18
+++ interchange.spec 14 Jan 2003 02:25:50 -0000 2.19
@@ -7,7 +7,7 @@
Summary: Interchange web application platform
Name: interchange
-Version: 4.9.6
+Version: 4.9.7
Release: 1
Vendor: Interchange Development Group
Group: System Environment/Daemons
1.4 +2 -1 interchange/code/SystemTag/deliver.coretag
rev 1.4, prev_rev 1.3
Index: deliver.coretag
===================================================================
RCS file: /var/cvs/interchange/code/SystemTag/deliver.coretag,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- deliver.coretag 20 Nov 2002 17:34:35 -0000 1.3
+++ deliver.coretag 14 Jan 2003 02:25:50 -0000 1.4
@@ -1,7 +1,7 @@
UserTag deliver Order type
UserTag deliver HasEndTag
UserTag deliver addAttr
-UserTag deliver Version $Revision: 1.3 $
+UserTag deliver Version $Revision: 1.4 $
UserTag deliver Routine <<EOR
sub {
my ($type, $opt, $body) = @_;
@@ -70,6 +70,7 @@
} );
}
}
+ $::Pragma->{download} = 1;
::response($out);
$Vend::Sent = 1;
return 1;
1.1 interchange/code/SystemTag/output_to.tag
rev 1.1, prev_rev 1.0
Index: output_to.tag
===================================================================
UserTag output-to Order name
UserTag output-to addAttr
UserTag output-to hasEndTag
UserTag output-to Routine <<EOR
sub {
my ($name, $opt, $body) = @_;
$name ||= '';
$name = lc $name;
my $nary = $Vend::OutPtr{$name} ||= [];
push @Vend::Output, \$body;
push @$nary, $#Vend::Output;
return;
}
EOR
1.1 interchange/code/SystemTag/unpack.coretag
rev 1.1, prev_rev 1.0
Index: unpack.coretag
===================================================================
UserTag unpack PosNumber 0
UserTag unpack addAttr
UserTag unpack hasEndTag
UserTag unpack Interpolate
UserTag unpack Routine <<EOR
sub {
my ($opt, $template) = @_;
Vend::Interpolate::substitute_image(\$template);
if($Vend::MultiOutput) {
#::logDebug("We have mult-output");
for my $space (keys %Vend::OutPtr) {
#::logDebug("Filtering $space");
my $things = $Vend::OutPtr{$space} || [];
for my $ptr (@$things) {
my $subs = $Vend::OutFilter{$space} || [];
for my $sub (@$subs) {
#::logDebug("Filtering ${$Vend::Output[$ptr]}");
$sub->($Vend::Output[$ptr]);
#::logDebug("Now is ${$Vend::Output[$ptr]}");
}
}
}
}
else {
for(@Vend::Output) {
Vend::Interpolate::substitute_image($_);
}
}
undef $Vend::MultiOutput;
$::Pragma->{no_image_rewrite} = 1;
Vend::Page::templatize($template);
return;
}
EOR
1.8 +1 -1 interchange/code/UI_Tag/auto_wizard.coretag
rev 1.8, prev_rev 1.7
Index: auto_wizard.coretag
===================================================================
RCS file: /var/cvs/interchange/code/UI_Tag/auto_wizard.coretag,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- auto_wizard.coretag 20 Nov 2002 18:52:16 -0000 1.7
+++ auto_wizard.coretag 14 Jan 2003 02:25:50 -0000 1.8
@@ -75,7 +75,7 @@
$surv->{$wizname} = $set;
}
- if ($Vend::Session->{logged_in}) {
+ if ($Vend::Session->{logged_in} and ! $Vend::admin) {
if (! defined $surv->{$wizname}) {
my $o = {
function => 'check_file_acl',
1.2 +3 -2 interchange/code/UI_Tag/global_value.coretag
rev 1.2, prev_rev 1.1
Index: global_value.coretag
===================================================================
RCS file: /var/cvs/interchange/code/UI_Tag/global_value.coretag,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- global_value.coretag 29 Jan 2002 05:52:40 -0000 1.1
+++ global_value.coretag 14 Jan 2003 02:25:50 -0000 1.2
@@ -1,9 +1,10 @@
UserTag global-value Order name
UserTag global-value Routine <<EOR
sub {
+ my $thing = shift;
no strict 'refs';
- defined ${$_[0]} and return ${$_[0]};
- return '';
+ return '' unless defined ${$thing};
+ return ${$thing};
}
EOR
1.2 +14 -4 interchange/code/UI_Tag/reconfig.coretag
rev 1.2, prev_rev 1.1
Index: reconfig.coretag
===================================================================
RCS file: /var/cvs/interchange/code/UI_Tag/reconfig.coretag,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- reconfig.coretag 29 Jan 2002 05:52:40 -0000 1.1
+++ reconfig.coretag 14 Jan 2003 02:25:50 -0000 1.2
@@ -1,9 +1,9 @@
-UserTag reconfig Order name
-UserTag reconfig PosNumber 1
+UserTag reconfig Order name table file
UserTag reconfig Routine <<EOR
use strict;
sub {
- my $name = shift || $Vend::Cfg->{CatalogName};
+ my ($name, $table, $file) = @_;
+ $name ||= $Vend::Cfg->{CatalogName};
my $myname = $Vend::Cfg->{CatalogName};
#::logGlobal("Trying to reconfig $name");
@@ -15,7 +15,17 @@
}
#::logGlobal("Passed name check on reconfig $name");
- logData("$Global::RunDir/reconfig", $Global::Catalog{$name}->{'script'});
+ my $script = $Global::Catalog{$name}->{script};
+ unless($script) {
+ logGlobal("Attempt to reconfigure catalog without script?");
+ logError("Attempt to reconfigure catalog without script?");
+ return undef;
+ }
+
+ if($table and $file) {
+ $script = join "\t", $script, $table, $file;
+ }
+ logData("$Global::RunDir/reconfig", $script);
return 1;
}
EOR
1.3 +2 -1 interchange/code/UI_Tag/regenerate.coretag
rev 1.3, prev_rev 1.2
Index: regenerate.coretag
===================================================================
RCS file: /var/cvs/interchange/code/UI_Tag/regenerate.coretag,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- regenerate.coretag 5 Oct 2002 05:26:29 -0000 1.2
+++ regenerate.coretag 14 Jan 2003 02:25:50 -0000 1.3
@@ -338,7 +338,7 @@
my $end = (times)[0] - $start;
$end = int($end);
regen_track("Finished static page building in $end seconds.");
- ::response(::interpolate_html(<<EOF, 1));
+ ::interpolate_html(<<EOF, 1);
<table cellpadding=2 cellspacing=0 width=__UI_OVERALL_WIDTH__ bgcolor=__UI_C_TITLEBARBG__ border=0>
<tr>
<td>
@@ -365,6 +365,7 @@
<center>
$Global::Variable->{UI_STD_FOOTER};
EOF
+ ::response();
return;
}
EOR
1.1 interchange/code/Widget/gpg_keys.widget
rev 1.1, prev_rev 1.0
Index: gpg_keys.widget
===================================================================
CodeDef gpg_keys Widget 1
CodeDef gpg_keys Routine <<EOR
sub {
my ($opt) = @_;
$opt->{passed} = $Tag->get_gpg_keys();
$opt->{type} = delete $opt->{variant} || 'combo';
$opt->{filter} = 'nullselect' if $opt->{type} eq 'combo';
return Vend::Form::display($opt);
}
EOR
2.20 +1 -0 interchange/dist/foundation/products/variable.txt
rev 2.20, prev_rev 2.19
Index: variable.txt
===================================================================
RCS file: /var/cvs/interchange/dist/foundation/products/variable.txt,v
retrieving revision 2.19
retrieving revision 2.20
diff -u -r2.19 -r2.20
--- variable.txt 30 Dec 2002 01:02:12 -0000 2.19
+++ variable.txt 14 Jan 2003 02:25:50 -0000 2.20
@@ -14,6 +14,7 @@
CATEGORYBAR_HOVERDECO underline Catalog Colors and Style
CGI_URL __MVC_CGIURL__ Directories and Paths
CHECK_ACCEPTED 1 Payment
+CHECKOUT_MAIL_LIST 1 Mailings
CITY __MVC_CITY__ Company
COD_ACCEPTED __MVC_PAYCOD__ Payment
COMPANY __MVC_COMPANY__ Company
2.5 +81 -77 interchange/dist/lib/UI/ichelp.txt
rev 2.5, prev_rev 2.4
Index: ichelp.txt
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/ichelp.txt,v
retrieving revision 2.4
retrieving revision 2.5
diff -u -r2.4 -r2.5
--- ichelp.txt 18 Aug 2002 08:17:41 -0000 2.4
+++ ichelp.txt 14 Jan 2003 02:25:50 -0000 2.5
@@ -1,95 +1,99 @@
code title helptext
-gentable Direct Table Edit <p>
The <b>Direct Table Edit</b> page allows you to edit any of Interchange's internal tables. Select a table
to edit, or search a table and select rows to edit.
</p>
-table.searchreplace Database: Search and Replace This feature allows you to mass-change a field in the database.
<P>
Select the table to operate on, then the column, from the dropdowns. (This page requires JavaScript enabled.) Enter the string to be searched for, and the string to replace it. Click <b>Search and Replace</b>.
<P>
The search string is a regular expression. If the string is a partial match for the field, only the matching text will be replaced. You may parenthesize one part of the search expression, in which case only the parenthesized part will be replaced and the rest of the matching text will be kept in place.
<P>
The replacement string is the literal text that will be inserted instead of the search text.
<P>
If the regular expression is incorrect, you will be returned to the page and the message "Error: Compiling regex" will be displayed.
<P>
If the operation is successful, you will be sent to the edit select list for the table you operated on, and a message indicating how many rows (if any) were changed.
+404 Help Topic Not Found <p>
The help topic you requested does not exist.
Explore the list of help topics below to find the information you are looking for.
</p>
~~HELP_TOPICS~~
+access.main Administrator Accounts <p> The <b>Administrator Accounts</b> page allows the Site Administrator to create
and edit user accounts and restrict the use of certain Administration Site functions.
For example, you may wnat one user to have access to order and customer information,
but not to Web content.
<p> Users can have permissions granted on an individual basis, or by group. A
<b>Super User</b> has access to all Interchange Administration Site areas, regardless
of how the permissions are set.
<p> <i><b>Hint:</b> Clicking <b>Access</b> from the menu displays the <b>Users</b>
of the Access section by default. To access the <b>Groups</b> section, click
<b>Groups</b> from the menu.</i>
<p>
<h2>Functions</h2>
<b>Create New Administrator</b><br>
To create a new administrator account, click this button.
<p> <b>Edit Administrator</b><br>
After choosing a user name from the list, click this button to make changes
to that user's preferences, such as the user group he or she belongs to or that
user's <b>Super User</b> status.
<p> <b>Show Permissions</b><br>
After choosing a user name from the list, click this button to view that user's
site access permissions.
<p> <b>Change Password</b><br>
After choosing a user name from the list, click this button to change that user's
password.
<p> <b>Delete Administrator</b><br>
After choosing a user name from the list, click this button to delete that user
from the system.
<p> <b>Back</b><br>
To return to the previous page, click this button.<br>
<br>
<p><i><b>Hint:</b> By default, administrator accounts are stored and managed separately
from customer login accounts.</i> </p>
+access.permissions Administrator Permissions <p>
The <b>Administrator Permissions</b> page allows you to select the operations that each user can have access to in the back office. Each section of the back office can be restricted with great detail. For example, a user can be given the ability to view a list of all orders, but not have access to the order details. Access to the individual rows of Interchange's internal tables can also be restricted on a per-table basis for each user.
<p>
<h2>Functions</h2>
<b>OK</b><br>
After selecting the type of access the user will have to each section of the Interchange Administration Site, click <b>OK</b> to commit the changes. The next time this user logs on to the Administration Site the new permissions will be used.
<p>
<b>Cancel</b><br>
Click Cancel to abandon the permissions change.
</p>
+admin.edit.user Administrator Edit <p>
The <b>Administrator Edit</b> page allows you create and edit administrator preferences.
<p>
<h2>Functions</h2>
<b>Real Name</b><br>
If adding an administrator, type the name of that administrator in this field.<br>
<i>or </i><br>
If editing an administrator, make the necessary changes here.
<p> <b>User Name</b><br>
If adding an administrator, type the user name of that administrator in this field.<br>
<i>or</i><br>
If editing an administrator, the user name for that administrator is displayed here.
<p> <b>Super User</b><br>
If the administrator you are adding or editing is a Super User, be sure to check
this box. A <i>Super User</i> is an administrator that has full access to all
aspects of the Administration Site, regardless of what permissions have been
set.
<p>
<b>Groups</b><br>
Click the name of the group with which you want this administrator to be associated.
<p>
<b>Permissions</b><br>
To view and/or edit the site access permissions for this user, click this button.
<p>
<b>OK</b><br>
To commit the administrator changes/additions you made, click this button.
<p>
<b>Cancel</b><br>
To abandon the changes/additions you made, click this button.
+affiliate.edit Edit Affiliate <p>The <b>Edit Affiliate</b> page allows you to edit specific attributes for an Affiliate. The following is a list of some of the most common attributes that you can edit.
<p>
<h2>Functions</h2>
<b>Affiliate ID</b><br>
This field contains the <b>Affiliate ID</b> for the Affiliate you are editing.
<p></p>
<p>
<b>Affiliate Name</b><br>
This field contains the name of the Affiliate you are editing.
</p>
<p> <b>Campaigns</b><br>
This field is used to track traffic from advertising campaigns.
</p><p> <b>Coupon_amount</b><br>
This field is used to enter the coupon discount amount to be applied to a purchase made by the Affiliate you are editing.
<p>
<b>Join Date</b><br>
The value in this field can be used to keep track of when the Affiliate signed with you.
</p>
<p>
<b>URL</b><br>
The value in this field is used to direct visitors coming from the Affiliate you are editing to your home page or a page designed specifically for visitors from that Affiliate's site. <br>
This should <i>not</i> be the URL of the Affiliate's home site.
</p>
<p> <b>Timeout Delay</b><br>
The value in this field is used to specify the amount of time a customer has to place an order and still give the Affiliate credit for it. If the customer goes over this amount of time, the Affiliate doesn't get credit for the customer visit. The timeout delay is measured in seconds, with the value of 0 (zero) disabling it. It is recommended that you use a value in the thousands to be sure the customer has enough time to shop.
<p>
<b>OK</b><br>
To commit your changes, click <b>OK</b>.
<i><b>Hint:</b> Using the browser's back button to exit the screen will not commit the changes you have made. </i>
<p>
<b>Cancel</b><br>
To abandon the changes you have made, click this button.
+affiliate.manager Affiliate Manager <p> The <b>Affiliate Manager</b> page allows you view a list of the Affiliates
associated with your site. The Affiliate feature allows you to place a link
on another web site that connects directly to a product page on your site. The
product page can be customized specifically for visitors from that Affiliate.
This feature also allows you to keep track of how many referrals you have gotten
from each Affiliate.
<p>
<h2>Features</h2>
<b>Limit with Search</b><br>
Type the paramater by which you want to search the Affiliate list. For example,
you can type a portion of an Affiliate name perform a search for Affiliates containing
that value. Only the Affiliates containing the search parameter will be displayed.
<p>
<h2>Functions</h2>
You can sort the item directory by clicking the heading of the column by which
you want to sort. For example, to sort by Code, click the <b>Code</b> heading.
This displays the Affiliates by code name in alphabetical order. Click a value
listed in one of the following columns to access specific information about that
value:
<p>
<ul>
<li>Code-click the value in this column to access the <b>Edit Affiliate</b>
page for that affiliate.
<li>Linkback and Entry URLs-click the URL in this column to test the link. To
edit the URL, go to the <b>Edit Affiliate</b> page.
<li>Reports-click the value in this column to access the corresponding report
page for that Affiliate.
</ul>
+affiliates.main Edit Affiliates <p> An Affiliates Program allows the merchant to make linking agreements with
the owners of other web sites then track which orders come in from those off-site
links. In many cases, the partner site earn a percentage of the sale from that
link. In other cases, the merchant is simply interested in knowing how many
people are buying as a result of a particular link. The <b>Edit Affiliates</b>
page allows you to edit Affilite information. </p>
<p> <b>Create New Affiliate</b><br>
Click this button to make a new Affiliate. You will be asked to give that Affiliate
a name. This name will appear in your personal list of Affiliates and will also
appear on any orders resulting from this affiliate's links. After you submit
the new Affiliate information, Interchange will display a unique URL which you
will need to email to your new Affiliate. They will receive credit for an order
only if the purchaser originally clicked on that specific URL. </p>
<p> <b>Default URL to Redirect to</b><br>
When setting up your Affilate, you have the choice of having their link point
to your front page, to any other page in your site, or perhaps to a welcome
page specifically for that Affiliate's customers. Enter the complete URL in
this space. Note: do <i>not</i> enter the URL of the Affiliate's web site in
this space. </p>
<p> <b>Timeout Delay</b><br>
The amount of time you enter here, in seconds, is the time that purchasers have
between the time they enter your site through the link and when they must purchase
before their status expires. If you set this time to 60 seconds, most purchasers
will not have time to place an order and your Affiliate would not get credit
for any of the sales. We recommend a setting in the thousands, or a setting
of zero, which disables this feature. </p>
<p> <b>Edit Affiliate</b><br>
Select an Affiliate's name from the list, and click "Edit Affiliate" to review
or change the Affiliate information. If you forget the URL that the Af
iate" screen. </p>
<p> <b>Show Orders</b><br>
This feature will review the number, amounts, and specifics of all orders attributed
to a particular affiliate. Select the Affiliate from the list and click "Show
Statistics." </p>
<p>
<b>Show Traffic</b><br>
This button will allow you to view information on the number of visitors who
have come to your site via the selected affiliate.
</p>
<p> <b>Delete Affiliate</b><br>
Select the Affiliate from the list and click "Delete Affiliate" to remove it.
You will be asked to confirm your choice, after which it can not be recovered.
</p>
<p>
<b>Affiliate Relations</b><br>
You may also choose to allow the Affiliate to view the statistics for the traffic
on your site to which they are responsible. You can do this by allowing them
a restricted amount of access. (See the <a href="access.main.html">Access Manager</a>
for details.) </p>
<p> Note: the affiliates feature requires that the purchaser's computer accept
cookies. Keep in mind that some purchasers may have their browsers set to reject
cookies or may be using browsers that do not support them. </p>
+button.builder Button builder <p> The <b>Button Builder</b> page allows you create HTML links and buttons for
ordering items in your store. </p>
<p>
This function allows for quick access to a product and is useful if you have a few products you want to list on a page or if you want to put an order link on a page on another site.
</p>
<p> The Button Builder can generate either a URL for use in an <b><A HREF...></b>
HTML tag, or a submit button inside of a <b><FORM></b> tag.
<p>
<h2>Functions</h2>
<b>Build</b><br>
After entering the necessary information, click <b>Build</b> to create the button. The Interchange Administration Site builds the button for you and issues the resulting HTML that displays the button. Cut and this information and paste it to the page on which you want to display the button.
+change.password Change Password <p>
The <b>Change Password</b> page allows you to change the password for a user. This should typically be done by the Site Administrator or super user.
<p>
<h2>Functions</h2>
<b>New Password</b><br>
Enter the new password.
<p>
<b>Verify Password</b><br>
Confirm the new password.
<p>
<b>OK</b><br>
To commit the new password, click this button.
<p>
<b>OK</b><br>
To abandon the changes you made, click this button.
</p>
+create.new.affiliate Create New Affiliate <p>
The <b>Create New Affiliate</b> page allows you to create an Affiliate. The following is a list of attributes that you can specify.
<p>
<h2>Functions</h2>
<b>Affiliate ID</b><br>
This field will contain the text "new".
<p></p>
<p>
<b>Affiliate Name</b><br>
This field contains the name of the Affiliate you are creating.
</p>
<p> <b>Campaigns</b><br>
This field is used to track traffic from advertising campaigns.
</p>
<p> <b>Coupon_amount</b><br>
This field is used to enter the coupon discount amount to be applied to a purchase made by the Affiliate you are creating.
<p>
<b>Join Date</b><br>
The value in this field can be used to keep track of when the Affiliate signed with you.
</p>
<p>
<b>URL</b><br>
The value in this field is used to direct visitors coming from the Affiliate you are creating to your home page or a page designed specifically for visitors from that Affiliate's site. <br>
This should <i>not</i> be the URL of the Affiliate's home site.
</p>
<p> <b>Timeout Delay</b><br>
The value in this field is used to specify the amount of time a customer has to place an order and still give the Affiliate credit for it. If the customer goes over this amount of time, the Affiliate doesn't get credit for the customer visit. The timeout delay is measured in seconds, with the value of 0 (zero) disabling it. It is recommended that you use a value in the thousands to be sure the customer has enough time to shop.
<p>
<b>OK</b><br>
To commit your changes, click <b>OK</b>.
<i><b>Hint:</b> Using the browser's back button to exit the screen will not commit the changes you have made. </i>
<p>
<b>Cancel</b><br>
To abandon the changes you have made, click this button.
+create.new.customer Create new customer <p> The <b>Create New Customer</b> page allows you create a new customer account
by entering the necessary customer information. The fields displayed on this
page are dependent on how the page was set up by your Site Administrator or
Super User.
<p>
<h2>Functions</h2>
<b>OK</b><br>
After entering the necessary information to create a new customer, click <b>OK</b> to save the information. The <b>Active Customers</b> page is displayed including the customer you created.
<p>
<b>Cancel</b><br>To return to the <b>Active Customers</b> page without saving the new customer information, click <b>Cancel</b>.
<p>
<h2>Features</h2>
The <b>meta</b> link, which is only visible to the Site Administrator or Super
User, is displayed below each field name. This link allows the Site Administrator
or Super User to change the parameters for each field. For more information on
<b>meta</b> links, see the <a href="flex.meta.html">Meta Field Information</a> page.
+crosssell Cross-Sell <p>
The <b>Cross-Sell</b>
page is used to exercise the Cross-Sell marketing feature. The Cross-Sell
feature allows you to display an item or items that compliment the item the
customer has chosen and give the customer the choice of adding the complimentary
item. For example, you may choose to display a paintbrush as a Cross-Sell
item to a customer that is purchasing paint. <!--reference the page where the graphics are posted or parameters for display are set-->
</p><p>
</p><h2>Functions</h2>
<b>OK</b><br>
After completing the necessary Cross-Sell information, click <b>OK</b> to export the Cross-Sell connection.<!--what is the result of this action?-->
<p>
<b>Cancel</b><br>
To abandon the Cross-Sell task you started without saving the change.
</p><p> <b>Auto-Export</b><br>
Click this checkbox to enable the Auto-Export feature. The Auto-Export feature
exports the changes you are committing to the tables described on these pages
to the original flat text file. This feature allows you to keep your original
files up-to-date and portable. However, while this feature may not hinder the
system's performance when exporting a small table, exporting a large table may
slow your system.
</p><p>
</p><h2>Features</h2>
The <b>meta</b> link, which is only visible to the Site Administrator or Super
User, is displayed below each field name. This link allows the Site Administrator
or Super User to change the parameters for each field. For more information on
<b>meta</b> links, see the <a href="flex.meta.html">Meta Field Information</a>
page.<br>
+customer Active/Inactive Customers <p> The <b>Active Customers</b> and <b>Inactive Customers</b> pages display all
customers in the system. You can group the customers as active or inactive depending
on your preference. <b>Active Customers</b> usually include those with pending
orders or orders that have recently been filled. <b>Inactive Customers</b> usually
include those who have decided not to create a user account or haven't submitted
an order recently. Contact your Site Administrator or Super User for your rules
regarding customers.<br>
</p>
<p><br>
<span style="font-weight: bold;">NOTE:</span> If you have a large number
of customers, many thousands, you may want to define the
CUSTOMER_VIEW_LARGE preference. This will prevent long startup times
accessing the list of customers, and present a query-by-example
interface to search for customers. </p>
<h2>Functions</h2>
<b>Search for Customer</b><br>
Type the parameter by which you want to search for a customer. For example, type <b>CA</b>
to search for all customers located in the state of California. Only the
customers containing the search parameter will be displayed. <p> <b>Delete Checked Customers</b><br>
Click this button after checking the customer(s) you want to delete. A warning
is displayed. Click <b>OK</b> to delete. The deleted customer(s) are removed
from the page, but remain in the system. <i><b>Hint:</b> To delete an individual
customer, click the <b>X</b> in the red square beside the customer ID.</i>
</p><p> <b>Deactivate Checked Customers</b> (on the <b>Active Customers</b> page)<br>
<i>or</i><br>
<b>Activate Checked Customers</b> (on the <b>Inactive Customers</b> page)<br>
Click this button after checking the customers(s) you want to activate or deactivate.
The customer(s) are moved to the appropriate section. <i><b>Hint:</b> To activate
or deactivate an individual customer, click the black arrow beside the customer
ID.</i>
</p><p>
</p><h2>Features</h2> You can sort the customer list by clicking the
heading of t
by customer ID, click the <b>ID</b> heading. This displays the customers by ID in ascending or descending alphabetical order.
<p>
You can click the customer ID to access the <a href="customer.view.html">View Customer</a> page to view the details of a specific customer.</p>
+customer.edit Customer Edit <p>
This help page corresponds to the following Administration screens:<p>
<ul>
<li>Customer preferences
<li>Customer shipping information
<li>Customer billing information
</ul>
These screens allow you to enter or change information relating to the customer.
The fields displayed on these pages are dependent on how the Site Administrator
or Super User set up Interchange Administrator. For assistance with completing
these pages, see your Site Administrator or Super User.
<p>
<h2>Functions</h2>
<b>OK</b><br>
After completing the necessary information on the page, click <b>OK</b> to commit your changes/additions. The page is refreshed and the changes are committed.
<p>
<b>Cancel</b><br>
Abandon entered changes without committing them. The page is refreshed, displaying only the original information.
<p> <b>Auto-Export</b><br>
Click this checkbox to enable the Auto-Export feature. The Auto-Export feature
exports the changes you are committing to the tables described on these pages
to the original flat text file. This feature allows you to keep your original
files up-to-date and portable. However, while this feature may not hinder the
system's performance when exporting a small table, exporting a large table may
slow your system.
<p>
<h2>Features</h2>
The <b>meta</b> link, which is only visible to the Site Administrator or Super
User, is displayed below each field name. This link allows the Site Administrator
or Super User to change the parameters for each field. For more information on
<b>meta</b> links, see the <a href="flex.meta.html">Meta Field Information</a>
page.
customer.mailing Customer Mailing <p> This facility is intended to email a limited number of users a templated message. </p> <p> Records are substituted with the values from the <b>userdb</b> table. Each field is in {curly brackets}. For example, the first name column <i>fname</i> would be templated as {FNAME}. </p> <p> The full range of templating available with the Interchange ITL tag <b>[attr-list]</b> are available, so you can do tests and conditional substitutions. See the IC documentation of <a href="http://www.icdevgroup.org/cgi-bin/ic/search.html?mv_coordinate=1&mv_searchtype=db&from_search=1&mv_value=link_banner%3DSearch+results&mv_search_page=docresults&mv_search_file=documentation&mv_searchspec=attr_list">attr_list</A> for help with that. </p> <p> You can choose any list that currently has subscribers. Formulate your message in the textarea, set the Subject:, the From:, and To: settings. Some reasonable defaults are supplied except for Subject. If you want the reply to go to a different address than the From:, set that too. </P> <p> By default, each user's box is checked for mailing. If there are users you don't want the mailing to go to, uncheck them. If you want to send in more than one batch, the system will remember which users you have mailed to as long as you remain logged in. </p> <p> It is a good idea to do the <b>Email Preview</b> to check the messages before you send. </p> <P> If you have a very large list, you cannot <b>Send Now</b>. Use the <b>Download Batch</b> button to download a shell script that will use <tt>sendmail</tt> to send it via the UNIX command line.</p>
-shipping.data Shipping: Edit Data Table <p>
Once you've created a shipping method, you can fine tune the calculation
based on the weight of the order. Use the "+" button to add new ranges
and specify which ranges will apply to which calculations. Choose a type
of calculation to perform for each weight range, such as a number (flat charge),
formula (arbitrary calculation based on the weight), UPS lookup (internal
or via their Web site), multiply by (simple rate), or select <b>Message</b> to
generate an error message. If you specify a formula, you can include the
string "@@TOTAL@@" to represent the total weight of the order. For example,
"8 + @@TOTAL@@ + 2.50".
</p>
-shipping.main Shipping Options <p>
The <b>Shipping Options</b> page allows you to specify and configure the shipping methods and costs for your online store. Before you begin here, you need to decide how you want to charge for shipping. We support all the most common shipping options:
</p>
<p>
<a href="shipping.price.html">By Price:</a> shipping total based on the total price of the order. This can also be used to calculate a flat shipping price ($0 - infinity = $4.95) or a flat rate with big orders shipped free ($0 - 500 = $4.95 and $500 - infinity = free). The shipping charge can either be a flat charge or a percentage.
</p>
<p>
<a href="shipping.weight.html">Standard by Weight: </a> calculates shipping by total weight with no regard to zones. To use this method, you must enter a weight for each item in your inventory. You can use any unit of measure you wish as long as you are consistent. If you enter your item prices in grams, then configure shipping with pounds, your customers will not be happy when they are quoted huge shipping rates.
</p>
<p>
<a href="shipping.quantity.html">Standard by Quantity:</a> this is identical to shipping by price, but the shipping charge will be multiplied by the total number of items ordered.
</p>
<p>
<a href="shipping.ups.html">UPS Zones-Based:</a> Interchange is pre-configured with UPS zones tables for ground, three day select, second day air, and next day air.
</p>
<p>
If you require zones support for Fedex, DHL, or USPS, please <a href="mailto:info@akopia.com">contact Akopia</a>.
</p>
<p>
Keep in mind that you can choose a variety of these shipping methods, giving the customer a choice. Many companies use flat shipping for ground orders and use UPS zones shipping for second day and next day orders.
</p>
<p>
<b>Create New Method</b><br>
Once you've decided what shipping options you are going to offer your customers, click the "Create New Method" button and configure each option. You will be able to name and configure each option from the "Create New Method" screen. See
</p>
<p>
<b><a href="shipping.edit.html">Edit Method</a></b><br>
Select one of the currently existing shipping methods from the list and click "edit method" to change its name, enable or disable it, change the calculation method, or set a minimum charge. The "edit method" button takes you to the same screen as "create new method" button, but already filled out. To edit the individual charges for different prices or weights, use the "edit data table" function.
</p>
<p><b><a href="shipping.data.html">Edit Data Table</a></b><br>
The process of creating a new method is usually a two-step process. In the first step, you name the shipping method and devide on a calculation algorithm (by price, by weight/zone, etc). The second stage involves configuring your chosen method. The "edit data table" function allows you to change the particular settings for an already-created method.
</p>
<p>
<b>Delete Method</b><br>
Select a method from the list and click on this button to delete it. You will be asked to confirm your choice. If you choose yes, it will be deleted permanently. If you merely want to temporarily disable a particular shipping method and remove it from the list your customers see, edit the method and un-check the box next to "enable this method." That way, if you want to enable it later, you won't have to re-configure it.
</p>
-order.main.pending Pending Orders The <b>Pending Orders</b> page displays all current orders in the system. This page works in real-time, but if you leave this page open or your Web browser has cached the page's contents, it is recommended that you re-load the page periodically to see the most recent orders.
<h2>Functions</h2>
<b>Start at Order Number</b><br>
Type the order number to be displayed first. Following this number, all other order numbers will be displayed in numerical order.
<p>
<b>Limit with Search</b><br>
Type the parameter by which you want to search. For example, type <b>CA</b> to search for all orders originating in the state of California. Only the orders containing the search parameter will be displayed.
<p>
<b>Delete Checked Orders</b><br>
Click this button after checking the order(s) you want to delete. A warning is displayed. Click <b>OK</b> to delete. The deleted order(s) are removed from the <b>Orders</b> page, but remain in the system. <i><b>Hint:</b> To delete an individual order, click the <b>X</b> in the red square beside the order number.</i>
<p>
<b>Archive Checked Orders</b><br>
Click this button after checking the order(s) you want to archive. The order(s) are moved to the <A HREF="order.main.archived.html">Archived Orders</a> section. <i><b>Hint:</b> To archive an individual order, click the black arrow beside the order checkbox.</i>
<p>
<h2>Features</h2>
You can sort the order list by clicking the heading of the column by which you want to sort. For instance, to sort by total price, click the <b>Total</b> heading. This displays the orders by amount in ascending or descending order. To sort in reverse order, click the <b>Total</b> heading again.
<p>
You can view the details of a specific order by clicking the <b>Order Number</b>, <b>User</b>, or <b>Status</b> of that order.<br>
Click the <b>Order Number</b> to access the <a href="order.view.html">View Order</a> page.<br>
Click the <b>User</b> to access the <a href="customer.view.html">View Customer</a> page.<br>
Click the <b>Statu
to access the <a href="item.edit.html">Order Status</a> page.
<p>
<!-- commented out
<p>
<b>Delete False Order</b><br>
Periodically, either through fraud or because an order fell through after it was placed due to product availability problems, an order will need to be deleted and not reported in the order statistics. Select the false order from the list and click on the delete false order button. You will be asked for confirmation to delete this order, because once an order is deleted, it is irretrievable.
</p>
-->
customer.view View Customer <p> The <b>View Customer</b> screen allows you to view detailed information about
a particular customer. The customer's order history is also displayed.
<p>
<h2>Functions</h2>
<b>Back</b><br>
Returns you to the <b>Active Customers</b> or <b>Inactive Customers</b> list.
<p> <b>Enter Order</b><br>
Click this button to access the <a href="order_entry.main.html">Order Entry</a>
page. The <b>Order Entry</b> page is displayed and is prepopulated with the
customer's information, allowing you to quickly enter an order.
<p><b>Deactivate Customer</b><br>
<i>or</i><br>
<b>Activate Customer</b><br>
The button displayed depends on if the customer you are viewing is an <b>Active
Customer</b> or <b>Inactive Customer</b>. It allows you to reverse the status
of a customer (from active to inactive, or vice versa).
<p> <b>Change Password<br>
</b>Click this button to access the <b>Change Customer Password</b> page. The
<b>Change Customer Password</b> page allows you to change the customer's password.
<i><b>Hint:</b> Do not change a customer's password without notifying the customer.
The customer will not be able to access his or her account without the new password.</i>
<p> <b>Delete Customer</b><br>
Deletes the customer.
<p>
<h2>Features</h2>
Depending on how much information is stored on the system about a customer, some
of the items on the <b>View Order</b> page are hotlinked to allow you to access
other information:<br>
<ul>
<li>Click the customer's name to access the <a href="customer.view.html">View
Customer</a> page. The <b>View Customer</b> page displays detailed information
about the customer.
<li>Click the customer's email address to send that customer an email.
<li>Click <b>Bill To:</b> to access that customer's complete billing information.
<li>Click <b>Ship To:</b> to access that customer's complete shipping information.
<li>Click the order's status to access the <a href="item.edit.html">Order Status</a>
page. The <b>Order Status</b> page dis
shipment.
</ul>
-wizard.shipping Wizard : Set Up Shipping Information This section helps you to set up your shipping information and is intended only to get you started with shipping calculation. It offers choice of three shipping methods and does not allow for multiple delivery options. This information will be entered into Interchange and populated into the Administration tool. The Administration tool allows you to enter more complex shipping options. The required fields are displayed in bold.<p>The following are descriptions of the fields displayed on the page:<p><table border=1 cellspacing=0 cellpadding=2 width=425><tr><td bgcolor="E0DCE0"><b>Field</b></td><td bgcolor="E0DCE0"><b>Definition</b></td></tr><tr><td>Shipping Method</td><td>The method by which you will ship your products. Choose from the drop-down menu. Your choices are:<br><ul><li>Federal Express (FedEx)</li><li>United Postal Service (UPS)</li><li>United States Postal Service (USPS)</li></ul></td></tr><tr><td>Warehouse ZIP code</td><td>The ZIP code of the location from which you will be shipping. This, combined with with the <b>Shipping Method</b>, are compared against an internal table to determine the correct shipping cost.</td></tr></table>
-logout.main Logout <p>
The <b>Login/Logout</b> page allows you to log in to the Interchange Administration Site. If more then one user has been specified on your system, this page can be used to log on as a different user. Enter your user name and password to access the Administration Site. If you are unsure of your user name or password, contact your Site Administrator.
-genconfig.main Catalog Information <p> Here you see various information on the catalog and Interchange installation.
Of particular interest are:
<ul>
<li><b>Active Sessions: </b>Here you can select an active session and see all
the information Interchange has on currently active Web site visitors, including
Administrators.<br>
<br>
<li><b>Database Information:</b> This lists all the Perl database access modules
installed on the server and available for Interchange. <br>
<br>
<li> <b>Module Information:</b> A list of Perl modules available to Interchange,
with comments about affected functionality for those that are missing.
</ul>
-affiliate.manager Affiliate Manager <p> The <b>Affiliate Manager</b> page allows you view a list of the Affiliates
associated with your site. The Affiliate feature allows you to place a link
on another web site that connects directly to a product page on your site. The
product page can be customized specifically for visitors from that Affiliate.
This feature also allows you to keep track of how many referrals you have gotten
from each Affiliate.
<p>
<h2>Features</h2>
<b>Limit with Search</b><br>
Type the paramater by which you want to search the Affiliate list. For example,
you can type a portion of an Affiliate name perform a search for Affiliates containing
that value. Only the Affiliates containing the search parameter will be displayed.
<p>
<h2>Functions</h2>
You can sort the item directory by clicking the heading of the column by which
you want to sort. For example, to sort by Code, click the <b>Code</b> heading.
This displays the Affiliates by code name in alphabetical order. Click a value
listed in one of the following columns to access specific information about that
value:
<p>
<ul>
<li>Code-click the value in this column to access the <b>Edit Affiliate</b>
page for that affiliate.
<li>Linkback and Entry URLs-click the URL in this column to test the link. To
edit the URL, go to the <b>Edit Affiliate</b> page.
<li>Reports-click the value in this column to access the corresponding report
page for that Affiliate.
</ul>
+dbdownload.main Database Download <p></p>
<p>
The <b>Database Download</b> page allows you to export any of the internal
tables on Interchange to the <b>backup</b> directory of your catalog. By
default, it exports each table to a tab-delimited file named for the table.
It also can export Gnumeric simple-text output and, if you have the Perl Spreadsheet::WriteExcel module installed, it can write XLS spreadsheet files.
<blockquote>
NOTE: XLS output is only available when you have the Spreadsheet::WriteExcel
module installed. Spreadsheet::WriteExcel is available at CPAN.
</blockquote>
<p>
To use, take the following steps:
<OL>
<LI>Check the boxes corresponding to the tables you want to export.
<LI>Select whether you want Gnumeric output and/or XLS output.
<LI>Click <B>Perform Export</B> button.
</OL>
NOTE: If you have very large database tables, the export function may take a
long time. It is not recommended for more than 25,000 products.
<P>
Once the tables are exported to a Gnumeric or XLS format, they will be
available for download on the same page. Individual tables are downloadable
via the <I>File Transfer</I> menu.
<P>
Caveats:
<P>
<UL>
<LI>Fields longer than 255 characters will be wrapped to the next line
and must be combined in the spreadsheet to be re-imported.
</UL>
+dbupload.main Database Upload <p>
<b>Coming soon</b>
</p>
+edit.item Edit/Create Item <p> The <b>Edit Item</b> page is used to create or edit a product item. The fields
displayed on this page are dependant on how the page was set up by your Site
Administrator or Super User. For more information on the fields displayed on
this page, see your Site Administrator or Super User.
<p>
<h2>Function</h2>
<b>OK</b><br>
After completing the necessary information on the page, click <b>OK</b> to commit your changes/additions. The page is refreshed and the changes are committed.
<p>
<b>Cancel</b><br>
Abandon entered changes without committing them. The page is refreshed, displaying only the original information.
<p> <b>Auto-Export</b><br>
Click this checkbox to enable the Auto-Export feature. The Auto-Export feature
exports the changes you are committing to the tables described on these pages
to the original flat text file. This feature allows you to keep your original
files up-to-date and portable. However, while this feature may not hinder the
system's performance when exporting a small table, exporting a large table may
slow your system.
<p>
<h2>Features</h2>
The <b>meta</b> link, which is only visible to the Site Administrator or Super
User, is displayed below each field name. This link allows the Site Administrator
or Super User to change the parameters for each field. For more information on
<b>meta</b> links, see the <a href="flex.meta.html">Meta Field Information</a> page.
edit.page Edit Page <p> The <b>Edit Page</b> page allows you to edit the preferences of each Web page
in your site, including the Interchange Administrator Site. The <b>Edit Page</b>
page also allows you to view and edit the html source code for the page.
<p>
<h2>Functions</h2>
<b>Preview</b><br>
After completing the necessary information on the <b>Edit Page</b> page, click
this button to preview the page. This function is helpful if you want to view
the page before committing to the changes. The following is a list and description
of the most common fields displayed on this page. If you are unsure of the function
of a field displayed, contact your Site Administrator or Super User.
<p>
<ul>
<li><b>Change Template</b><br>
After choosing a template from the drop-down list, click this button to implement the change. For more information on creating or editing your templates, see <a href="something.html">blah</a>.
<p>
<li><b>Page Title</b><br>
The title of the Web page that you are editing/creating.
<p>
<li><b>Page Banner</b><br>
The banner of the Web page that you are editing/creating.
<p>
<li><b>Members Only</b><br>
Limits access to the Web page to customers that have a user account with you.
If activiated, a user log in page is displayed before the Web page is displayed.
<p>
<li><b>Component Before Content</b><br>
Allows you to specify a marketing device to be displayed before the content
on this Web page.
<p>
<li><b>Component After Content</b><br>
Allows you to specify a marketing device to be displayed after the content
on this Web page.
<p>
<li><b>Background Color</b><br>
Allows you to specify the background color of the Web page that you are editing/creating.
<p>
<li><b>Content</b><br>
Displays the html source code that corresponds to the Web page that you are
editing/creating. This is where the content of the Web page is specified.
</ul>
<b>Save</b><br>
After completing the necessary information on the <b>Edit Page</b> page
changes. The <a href="page.editor.html">Page Editor</a> page is displayed.
<p>
<b>Cancel</b><br>
Abandon changes by clicking this button. The <a href="page.editor.html">Page Editor</a> page is displayed.
-merch.build_related Build Related <p>
You can mine the data from your <TT>orderline</TT> database to suggest products that
might be bought in combination with a certain product.
</p>
<p>
All that is necessary is to access this page. The database will be mined and
entries made in the <TT>others_bought</TT> field of the <TT>merchandising</TT> database.
</p>
<p>
The database is scanned, and a list of items purchased on the same order with
each item is built. This is stored in a data structure and can be accessed
<I>in a shopping cart or flypage</I> with the code:
</p>
<XMP>
[if-item-data merchandising others_bought]
[perl tables=products]
my $hash = [item-data merchandising others_bought];
my @ary = sort { $hash->{$b} <=> $hash->{$a} } keys %$hash;
return '' unless @ary;
my %in_basket;
splice(@ary, 3);
for(@{$Carts->{main}}) {
$in_basket{$_->{code}} = 1;
}
@ary = grep ! $in_basket{$_}, @ary;
return '' unless @ary;
my $out = q{
<BR><TABLE CELLPADDING=0 CELLSPACING=0 WIDTH="100%">
<TR><TD __HEADERBG__>
<FONT SIZE="-1" COLOR="__HEADERTEXT__">
Customers who bought this item also bought:
</TD>
</TR><TR>
<TD><FONT SIZE="-1">
};
for(@ary) {
my $desc = tag_data( 'products', 'description', $_); $out .= q{<A HREF="[area $_]">$desc</A><BR>}
}
return $out . '</TD></TR></TABLE>';
[/perl]
[/if-item-data]
</XMP>
<p>
This code is used in the <B>Barry</B> and possibly other demos.
</p>
+env_vars Environment Variables <p>Here you can view the environment of the running Interchange daemon.
Useful only for debugging purposes.
</p>
+export.main Individual Table Export <p>
The <b>Individual Table Export</b> page allows you to export any of the internal tables on Interchange to a file on the server.
<p>
<h2>Functions</h2>
<b>Export</b><br>
After selecting the export criteria, click <b>Export</b> to export the table.
The following list describes the <b>Export As</b> available formats.
<ul>
<p>
<li><b>Current Type/System Default</b><br>
Types specified in the Interchange configuration files.
<p></p>
<p>
<li><b>TAB Delimited</b><br>
First line of the file represents column names. Each line
represents a row, with tab characters separating columns.
<p></p>
<p>
<li><b>CVS</b><br>
The same as TAB delimited, but separated by commas and quotes.
<p></p>
<p>
<li><b>PIPE Separated</b><br>
The same as TAB delimited, but separated by | characters instead of tabs.
<p></p>
<p>
<li><b>%%/%%%</b><br>
One column per line, separated by %% lines, with %%% between rows.
<p></p>
</ul>
+faq Frequently Asked Questions <p> <i><b>Does Interchange do real-time credit card processing?</b></i> <br>
No, but it does interface with real-time payment processing systems, along with transaction management and order management systems of all kinds. Please <a href="mailto:info@akopia.com">contact Akopia</a> for more information.
</p>
<p> <i><b>Interchange is open source, but I don't know how to do computer programming.
What can I do if I want to add features?</b></i> <br>
Akopia's consulting group provides an array of installation, customization, and custom programming services. Contact them at <a href="mailto:consulting@akopia.com">consulting@akopia.com</a>.
</p>
+flex.meta Meta information edit <p> The <b>Meta Information Edit</b> page allows a user to edit the parameters
of a displayed field. For example, if you click the <b>meta</b> link for the
<b>Last Name</b> field, the <b>Meta Information Edit</b> page is displayed for
that field. Editing the parameters in the <b>Meta Information Edit</b> page
effects the values that will be accepted for the <b>Last Name</b> field. You
could specify the width of this field, meaning the number of characters accepted,
as 30 using the <b>Meta Information Edit</b> page. This would limit the length
of any value entered in the <b>Last Name</b> field to 30 characters.
<p> The <b>Meta Information Edit</b> field is displayed only to Super Users. Exercise
caution when editing this page.
<p><h2>Features</h2>
<b>OK</b><br>
After entering the necessary values, click <b>OK</b>. The following is a description of some of the displayed fields.
<ul>
<p>
<li>"Widget Type" specifies the HTML INPUT tag type to use when displaying the
field in, say, the item editor.
<p></p>
<p>
<li>"Width" and "Height" only apply to some of the "Widget Type" options, for
instance the "Textarea" widget.
<p></p>
<p>
<li>"label" is displayed instead of the internal column name. For example, the
"category" column of the "products" table might have a label of "Product Category."
<p></p>
<p>
<li>"help" is displayed below the column label, and helps describe the purpose of
the field to the user.
<p></p>
<p>
<li>"help url" can be used to link to a page giving more information on the field.
<p></p>
<p>
<li>"lookup" can be used when a field is acting like a foreign key into another
table. In that case, you'll probably want to use some sort of select box as
the widget type, and if you want to reference multiple rows in the destination
table, you'll probably want to use a multi-select box, with "colons_to_null"
as the pre_filter, and "::" as the lookup_exclude.
<p></p>
<p>
<li>"filter" and "pre_filter" can be
for that field
or data read from that field, respectively.
<p></p>
</ul>
+flex.select Direct Table Edit: Select for table edit <p>
Having selected a table to edit, you can now add a new row, edit an existing
row, edit all rows spreadsheet-style, or delete a row.
</p>
+genconfig.main Catalog Information <p> Here you see various information on the catalog and Interchange installation.
Of particular interest are:
<ul>
<li><b>Active Sessions: </b>Here you can select an active session and see all
the information Interchange has on currently active Web site visitors, including
Administrators.<br>
<br>
<li><b>Database Information:</b> This lists all the Perl database access modules
installed on the server and available for Interchange. <br>
<br>
<li> <b>Module Information:</b> A list of Perl modules available to Interchange,
with comments about affected functionality for those that are missing.
</ul>
+genexport.main Import/Export <p> Interchange makes it easy to import and export data to and from your commerce
Web site. </p>
<p>
<a href="dbupload.main.html">Database Upload</a> allows you to import a tab delimited database of your product information to Interchange to make set-up faster and easier.
</p>
<p>
<a href="dbdownload.main.html">Database Download</a> does just the opposite, allowing you to download the data from Interchange.
</p>
<p>
<a href="layoutupload.main.html">Layout Upload</a> lets you upload your site's layout information.
</p>
<p>
<a href="layoutdownload.main.html">Layout Download</a> lets you download your site's layout information.
</p>
+gensql.main Direct SQL utility <p> The <b>Direct SQL Utility</b> should only be used by the Site Administrator
or Super User that is familiar with the utility. </p>
+gentable Direct Table Edit <p>
The <b>Direct Table Edit</b> page allows you to edit any of Interchange's internal tables. Select a table
to edit, or search a table and select rows to edit.
</p>
+glossary.main Glossary <p>
<b>Akopia</b><br>
Developer of Interchange, open source e-commerce storefront management system.
Akopia also offers a wide array of e-commerce consulting services. For more
information please see <a href="http://www.akopia.com/">Akopia's Web page</a>.
</p>
<p>
<b>Algorithm</b><br> A step-by-step problem-solving procedure, especially an established, recursive computational procedure for solving a problem in a finite number of steps.
</p>
<p>
<b>AOL</b><br> The largest Internet service provider in the United States.
</p>
<p>
<b>Apache</b><br> The most widely used web server. One of the most successful free software packages.
</p>
<p>
<b>API</b><br> Application Program Interface. A set of routines, protocols, and tools for building software applications. A good API makes it easier to develop a program by providing many building blocks for the programmer, who puts them together. Although APIs are designed for programmers, they are ultimately good for users because they help all programs using a common API will have similar interfaces.
</p>
<p> <b>Archiving Orders</b><br>
A process through which you can remove your orders from immediate view on your management administrator without deleting the record.
</p>
<p>
<b>Browser</b><br> Short for Web browser, a software application used to locate and display Web pages. You're likely familiar with one if you're reading this, right?
</p>
<p> <b>Business to Business</b><br>
Also seen as B2B. A B2B company offers goods and services to other businesses.
</p>
<p> <b>Business to Consumer</b><br>
Also seen as B2C. These are companies that offer goods and services to consumers.
</p>
<p>
<b>Cell</b><br> An area in which data is entered.
</p>
<p>
<b>CGI</b><br> Common Gateway Interface. A specification for transferring information between a World Wide Web server and a program. A CGI program is any program designed to accept and return data that conforms to the CGI specification. The program could be written in any programming languag
re a common way for Web servers to interact dynamically with users.
</p>
<p>
<b>Cookie</b><br> A chunk of information transmitted to a Web browser by a Web server. The browser stores the information on the user's local computer (either in memory or on the hard disk). The message is then sent back to the server each time the browser requests a page from the server. The main purpose of cookies is to identify users and possibly prepare customized Web pages for them.
</p>
<p> <b>E-Commerce</b><br>
The specific business of selling goods and services via the Internet.
</p>
<p> <b>Electronic Catalog</b><br>
An Internet site that offers goods and services for sale. Much like the magazine catalogs.
</p>
<p>
<b>Embedded Perl</b><br> When the programming language Perl can be found within the context of another language, it is said that it is embedded. Interchange supports embedding Perl right into its HTML templates.
</p>
<p>
<b>FAQ</b><br> Frequently Asked Questions. (Usually including the answers to those questions!)
</p>
<p>
<b>HTML</b><br> Abbreviation for Hypertext Markup Language. The language of codes used to format plain text, most often for viewing in a web browser.
</p>
<p>
<b>HTTP</b><br>
Abbreviation for Hypertext Transfer Protocol. The primary mechanism (or protocol)
of transfering information over the Internet from a Web server to a user's computer.
</p>
<p>
<b>httpd</b><br>
Hypertext transfer protocol daemon: a Web server. </p>
<p>
<b>Internationalization</b><br> (Also known as I18N.) The adaptation of Interchange for multiple languages and currencies.
</p>
<p>
<b>Item</b><br> A single product in your on-line store.
</p>
<p>
<b>Java</b><br> A general purpose programming language used both on servers and clients (Web browsers).
</p>
<p>
<b>JavaScript</b><br> A scripting language developed by Netscape to enable Web authors to design interactive sites. Although it shares many of the features and structures of the full Java language, it was developed independently.
</p>
<p>
<b>Interchange
e flagship e-commerce platform developed by Akopia. Interchange is an open
source program that has thousands of implementations throughout the world. For
more information on Interchange please visit the <a href="http://www.akopia.com/">Akopia
Web site</a>. </p>
<p>
<b>Linux</b><br>
The UNIX-like kernel developed by Linus Torvalds, which forms the basis of many
open source computer operating systems. </p>
<p>
<b>Matrix</b><br> A table of all the possible combinations of options available for an item.
</p>
<p>
<b>Netscape Navigator (or Communicator)</b><br> A popular web browser.
</p>
<p>
<b>Open Source</b><br> Software with source code that is freely viewed and altered by its users. Often the software is released under the license of the GNU General Public License which requires further distribution be free of cost or usage restrictions, and that program source code be made available.
</p>
<p>
<b>Perl</b><br> Amazing, powerful, flexible, expressive, free programming language by Larry Wall. See <a href="http://www.perl.com/">perl.com</a> for all sorts of information on Perl.
</p>
<p> <b>Product Matrix</b><br>
The complete list of possible descriptors for a product. This includes size, color, etc.
</p>
<p>
<b>Regeneration</b><br> After making changes to a site or page, commanding Interchange to regenerate means to update the changes for general use.
</p>
<p>
<b>Search Engine</b><br> A program that is designed to search through a database to answer queries.
</p>
<p> <b>Shipping Algorithm</b><br>
The equations used to calculate shipping costs.
</p>
<p>
<b>SKU</b><br> Stock Keeping Unit. A unique code associated with each product for inventory purposes.
</p>
<p>
<b>SQL</b><br> Structured Query Language. SQL is a standardized query language for requesting information from a database.
</p>
<p>
<b>SSL</b><br>
Secure Sockets Layer. A transport-layer technology, developed by Netscape, that
allows secure transactions among compliant browsers and Web servers. </p>
<p>
<b>Template</b><br> With
to Akopia's software, templates are pre-designed formats that a business can use to create a ready Interchange implementation.
</p>
<p> <b>Web Server</b><br>
The computer and/or software that delivers Internet information to the user's computer.
</p>
<p> <b>Zone-Based Shipping</b><br>
The calculation of shipping charges based on the region of destination.
</p>
group.main Administrator Groups <p>
The <b>Admin Group Manager</b> page allows you to create and edit entire groups of users at one time, without having to access each user's individual profile, and restrict the use of certain Administration Site functions on a per group basis. This feature is useful if you want to limit access to the Interchange Administration Site for an entire group of users.
<p>
<h2>Functions</h2>
<b>Create New Group</b><br>
To create a new user group, click this button.
<p>
<b>Edit Group</b><br>
After choosing a group name from the list, click this button to make changes to that user group's preferences, such as <b>Super User</b> status.
<p>
<b>Show Permissions</b><br>
After choosing a group name from the list, click this button to view that group's site access permissions.
<p>
<b>Delete Group</b><br>
After choosing a group name from the list, click this button to delete that group from the system.
<p>
<b>Back</b><br>
To return to the previous page, click this button.<br>
<p>
<i><b>Hint:</b> By default, Administrator accounts are stored and managed
separately from customer login accounts.</i>
</p>
-shipping.price Shipping by Price <p>
Shipping total based on the total price of the order. This can also be used to calculate a flat shipping price ($0 - infinity = $4.95) or a flat rate with big orders shipped free ($0 - 500 = $4.95 and $500 - infinity = free). The shipping charge can either be a flat charge or a percentage.
</p>
<p>
To begin, click on the plus sign once for each range you would like to enter. You can add or subtract more fields at any time, so don't worry. <i><b>Hint</b>: On some browsers, when you click the plus sign more than once, it won't register. In that case, click the "reload" button on your browser to make more fields appear. The first range will automatically start with zero and the last range will automatically end with infinity.</i><p> If you want one flat rate charge, only create one range, from zero to infinity and give it a charge amount. Otherwise, create all the ranges you need and give each range an amount. In case you would like to charge a percentage of the order total as the shipping and handling charge, you have the option of specifying a percentage for any of the ranges. Note: Interchange automatically bases the beginning point of each range on the end of the last. If you end one range at $50.00, the next range will begin at $50.01.
</p>
+home Interchange Administration Tool Help <p>The Interchange context-sensitive help system is easy to use. Simply click
the <b>Help</b> link in the upper right-hand section of any page of the Interchange
Administration Tool. A small popup window will appear offering help for that
page.</p>
<p><b>Using the Interchange Administration Site</b></p>
<p>Some shortcut functions are accessible on each page of the Interchange
Administration Tool:</p>
<ul>
<li><b>Interchange logo</b><br>
The <b>Interchange logo</b> link is located in the upper left-hand corner of each page. Clicking this logo takes you to the main menu of the UI.
</li>
<li><b>Tables</b><br>
The <b>Tables</b> link is located in the upper right section of each page.
Clicking this link takes you to the <b>Database Tables</b> page of the Interchange
Administration Tool. This shortcut function allows you to quickly access
table information.
</li>
<li><b>Quicklinks</b><br>
The <b>Quicklinks</b> link is located in the upper right section of each
page. Clicking this link displays a window containing shortcut links to commonly
used pages in the Interchange Administration Tool.
</li>
<li><b>Apply Changes</b><br>
The <b>Apply Changes</b> link is located in the upper right section of each
page. Clicking this link updates the Interchange server with certain non-automatic
changes.
</li>
<li><b>Log Out</b><br>
The <b>Log Out</b> link is located in the upper right section of each
page. Clicking this link logs you out of the Administration Tool. You can
log back in as a different user if you wish.</li><li><span style="font-weight: bold;">Interchange version<br>
</span>The version of Interchange is displayed in the lower
left-hand corner. Clicking on <span style="font-weight: bold;">Interchange</span> takes you to the ICDEVGROUP
developer site<span style="font-weight: bold;">.<span style="font-weight: bold;"></span><br>
<span style="font-weight: bold;"></span></span></li>
<li><b>Store ID</b><br>
Your <b>Store ID</b>
on of each page. Clicking
this link takes you to your store's main Interchange page. This allows you to instantly
view site changes implemented through the Administration Tool.</li>
</ul>
<p>Here are the available help topics:</p>
~~HELP_TOPICS~~<br>
+import.main Table Import <p>
The <b>Table Import</b> page allows you to upload a file from your computer
to Interchange in order to update one of Interchange's internal tables. This
can be done in one of several formats -- TAB-delimited text, Gnumeric simple text,
or Excel XLS workbook.
</p>
<p>
You can import slices of a table -- the only column that is required is
the key column (for example, <B>sku</B> is usually the key column for
<i>products</i> and <i>inventory</i>).
<P>
For instance, to update only the quantityfor a series of items in <i>inventory</i>, create a file with two columns, the
<B>sku</B> and <B>quantity</b>. Not all items must be updated, so you can
just upload the ones to be added or changed.
</p>
<p>
If you wish rows to be added when a new key is found, keep the default selection
<b>Add new items if present</b>. To only update existing rows, change
that to <b>Ignore new items</b>.
</p>
<p>
To upload changes to a single table in TAB-delimited format,
select a TAB-delimited file to send to Interchange by clicking <b>Browse...</b>,
and a table to update from the list on the right. Then select whether to
add new rows from your file to the table, or to only update rows that are in
both your file and the table.
</p>
<p>To upload changes to multiple tables in <B>Gnumeric simple-text</B> format,
select it and use <b>Browse...</b>, then select your upload options.
The table selection is not important because the table is selected from
with the Gnumeric simple-text file.
</P>
<P>
Uploading in <B>Excel/XLS</b> format requires that the module Spreadsheet::ParseExcel
be installed on your server. Check with your admin if you need this and
the option is not present in the file format chooser. Otherwise, you simply
select the <tt>.xls</tt> file with <B>Browse...</b> and upload as with
Gnumeric simple-text format.
+item.edit Items: Edit/Create <p>
The <b>Items: Edit/Create</b> page allows you to create or edit an item by filling in it's fields.
Common fields include <b>Short Description</b>, <b>Long Description</b>, and <b>Image</b>, that are used when displaying an item on a catalog page, and <b>Product Price</b> and <b>Weight in Pounds</b>, that are used when calculating charges in the shopping basket.
</p>
<p>
The <b>Category</b> field can be used to select which category pages the item
will appear on. Multiple categories can be selected. For more control
of product categories, choose <b>Site Layout</b> from the quicklinks menu.
</p>
<p>
The <b>meta</b> link, which is only visible to the Site Administrator or Super User, is displayed below each field name. This link allows the Site Administrator or Super User to change the parameters for each field. For more information on <b>meta</b> links, see the <a href="flex.meta.html">Meta Field Information</a> page.
</p>
item.editor Item Editor <p>
The <b>Item Editor</b> page displays a directory of the product items logged in your system. This page also allows a quick view of information associated with each item, such as SKU, pricing, etc.
<p>
<h2>Features</h2>
<b>Limit with Search</b><br>
Type the paramater by which you want to search the Item list. For example, type <b>14.99</b> to perform a search for all items priced at $14.99. Only the items containing the search parameter will be displayed.
<p>
<b>Edit Checked Items in Sequence</b><br>
Click this button after checking the item(s) you want to edit. The <a href="edit.item.html"> Edit Item</a> page is displayed for the first item you checked. Make the necessary edits and click <b>OK</b>. The <b>Edit Item</b> page of the next item you checked is displayed.
<p>
<b>Delete Checked Items</b><br>
Click this button after checking the item(s) you want to delete. A warning is displayed. Click <b>OK</b> to delete.
<p>
<h2>Functions</h2>
You can sort the item directory by clicking the heading of the column by which you want to sort. For example, to sort by price, click the <b>Price</b> heading. This displays the orders by amount in ascending or decending order. To sort in reverse order, click the <b>Price</b> heading again.
Click a value listed in one of the following columns to access specific information about that value:<p>
<ul>
<li>SKU-click a SKU value in this column to access the <a href="edit.item.html">Edit Item</a> page for that item.
<li>Quantity Pricing-click the value in this column to access the <a href="something.html">Pricing</a> page for that item.
<li>Up Sell-click the value in this column to access the <a href="something.html">Upsell</a> page for that item.
<li>Cross Sell-click the value in this column to access the <a href="something.html">Cross Sell</a> page for that item.
<li>Promotion-click the value in this column to access the <a href="something.html">Feature</a> page for that item.
<li>Inventory-click the value in this column to access the <a href="something
-order.main.archived Archived Orders The <b>Archived Orders</b> page displays all archived orders in the system. Orders are usually archived when they have been fulfilled. For an order to be displayed in the <b>Archived Orders</b> section, it must be manually moved from the <A HREF="order.main.pending.html">Pending Orders</a> section. This page works in real-time, but if you leave this page open or your Web browser has cached the page's contents, it is recommended that you re-load the page periodically
to see the most recent orders.
<p>
<h2>Functions</h2>
<p>
<b>Start at Order Number</b><br>
Type the order number to be displayed first. Following this number, all other order numbers will be displayed in numerical order.
<p>
<b>Limit with Search</b><br>
Type the parameter by which you want to search. For example, type <b>CA</b> to search for all orders originating in the state of California. Only the orders containing the search parameter will be displayed.
<p>
<b>Delete Checked Orders</b><br>
Click this button after checking the order(s) you want to delete. A warning is displayed. Click <b>OK</b> to delete. The deleted order(s) are removed from the <b>Orders</b> page, but remain in the system. <i><b>Hint:</b> To delete an individual order, click the <b>X</b> in the red square beside the order number.</i>
<p>
<b>Unarchive Checked Orders</b><br>
Click this button after checking the order(s) you want to unarchive. The order(s) are moved back to the <A HREF="order.main.pending.html">Pending Orders</a> section.<br>
<i><b>Hint:</b> To unarchive an individual order, click the black arrow beside the order checkbox.</i>
<p>
<h2>Features</h2>
You can sort the order list by clicking the heading of the column by which you want to sort. For instance, to sort by total price, click the <b>Total</b> heading. This displays the orders by amount in ascending or descending order. To sort in reverse order, click the <b>Total</b> heading again.
<p>
You can view the details of a specific order by clicking the <b>Order Number</b>, <b>Use
>, or <b>Status</b>.<br>
Click the <b>Order Number</b> to access the <a href="order.view.html">View Order</a> page.<br>
Click the <b>User</b> to access the <a href="customer.view.html">View Customer</a> page.<br>
Click the <b>Status</b> to access the <a href="item.edit.html">Order Status</a> page.
<p>
<!-- commented out
<p>
<b>Delete False Order</b><br>
Periodically, either through fraud or because an order fell through after it was placed due to product availability problems, an order will need to be deleted and not reported in the order statistics. Select the false order from the list and click on the delete false order button. You will be asked for confirmation to delete this order, because once an order is deleted, it is irretrievable.
</p>
-->
-access.main Administrator Accounts <p> The <b>Administrator Accounts</b> page allows the Site Administrator to create
and edit user accounts and restrict the use of certain Administration Site functions.
For example, you may wnat one user to have access to order and customer information,
but not to Web content.
<p> Users can have permissions granted on an individual basis, or by group. A
<b>Super User</b> has access to all Interchange Administration Site areas, regardless
of how the permissions are set.
<p> <i><b>Hint:</b> Clicking <b>Access</b> from the menu displays the <b>Users</b>
of the Access section by default. To access the <b>Groups</b> section, click
<b>Groups</b> from the menu.</i>
<p>
<h2>Functions</h2>
<b>Create New Administrator</b><br>
To create a new administrator account, click this button.
<p> <b>Edit Administrator</b><br>
After choosing a user name from the list, click this button to make changes
to that user's preferences, such as the user group he or she belongs to or that
user's <b>Super User</b> status.
<p> <b>Show Permissions</b><br>
After choosing a user name from the list, click this button to view that user's
site access permissions.
<p> <b>Change Password</b><br>
After choosing a user name from the list, click this button to change that user's
password.
<p> <b>Delete Administrator</b><br>
After choosing a user name from the list, click this button to delete that user
from the system.
<p> <b>Back</b><br>
To return to the previous page, click this button.<br>
<br>
<p><i><b>Hint:</b> By default, administrator accounts are stored and managed separately
from customer login accounts.</i> </p>
item.main Items <p>
<b>Create New item</b><br>
Click this button to create a new item.
</p>
<p>
<b>Edit item</b><br>
After selecting an item from the list, click <b>Edit Item</b>. Edit the necessary fields.
<p>
<b>OK</b><br>
To commit your changes, click <b>OK</b>.
<i><b>Hint:</b> Using the browser's back button to exit the screen will not commit the changes you have made. </i>
<p>
<b>Delete Item</b><br>
Select an item from the list that you want to delete, and click
<b>Delete</b>. A warning is displayed. Click <b>OK</b> to delete. The deleted item is permanently removed from the system.
</p>
-search_builder Search Builder <p>
The <b>Search Builder</b> page allows you to generate very complex reports on the database, or to help in the construction of ITL templates.
</p>
<p>
Select a <b>Base Table</b> to be the foundation for the report. Specify the maximum number of rows to be returned at once, and if you want the table to show only
unique entries.
</p>
<p>
The <b>Search Filter</b> then allows you to narrow down the list of rows returned
by matching columns of the table based on various criteria. Up to three
separate conditions can be specified. The returned rows must match all criteria.
</p>
<p>
Finally, select any sorting options you wish the results to be displayed by and decide the list of columns you want returned.
</p>
<p>
Click <b>Run</b> to run the search immediately and display the results.
<b>Generate Definition</b> will display an ITL tag which can be placed in a template
and which will return the results when executed.
</p>
-wizard.indexpage Wizard : Index Page <p><font size=2>This page allows you to create an index page. The index page is the first page of your site, and is ususally the first page that your customers see.<p><font size=2>In the <b>Page Title</b> field, enter the title for your index page. Typically the index page title contains the name of your store. The <b>Content</b> field has been pre-populated with sample information that has been formatted in HTML. If you are unfamiliar with HTML, it is recommended that you leave the HTML coding in place and simply replace the existing text with text relating to your store. If you are familiar with using HTML, you can choose to delete the prepopulated text and construct this page using your own text and HTML coding.
-tax.main Tax <p>
The <b>Tax Manager</b> allows you to set up multiple sales tax rates that might apply
to your customers. The simplest example, which would apply to most merchants,
is one tax rate for those people in your state and one tax rate (0%) for those
outside the state. Of course, your business might have multiple locations or
your state might have different tax rates by city, so you have the option of
creating an unlimited number of tax rate choices.
</p>
<p>
To begin, specify the location to which the tax rate will apply. To create
a new entry, click on the red <b>+</b>, then enter the amount of tax to
be applied to orders which specify that location during checkout.
</p>
<p>
If you're done, click on the <b>OK</b> button. Otherwise, click the plus sign and
continue until you've created all the rates you need.
</p>
<p>
If you need to delete any of the rates, of if you accidentally created too
many fields, click the red <b>X</b> next to that rate.
</p>
<p>
If your company has many locations or your sales tax needs are very
complicated, Interchange can be set up to work with third party tax software.
<a href="mailto:info@akopia.com">Contact Akopia</a> for more information.
</p>
-prefs.main Preferences <p>
This feature allows you to change the colors of the administration interface. Changing the color does not affect system functionality.
</p>
knar.main Knar Editor <p>
Knar stands for "Knar's Not A Registry." It's kind of like a registry.
</p>
<p>
The Knar table stores store-wide configuration information. If you don't know
about store-wide configuration, it probably won't help you much. On the other
hand, if you just can't find the place to tweak the value you're looking for,
it might be worth poking around (gently!) in here.
</p>
+layout.edit Site Layout <p>
The <b>Site Layout Editor</b> can be used to manage the content on your site.
Content is divided into sections, and you can create subsections of each
section, much like directories and subdirectories on a disk.
</p>
<p>
Selecting a section on the left shows information about it on the right.
Click <b>Create New Section</b> to create a new top level section, or select an
existing section and click <b>Create Subsection</b> to create a new section under
the existing section heading.
</p>
<p>Sections come in three types: product pages, content pages, and links to
foreign pages. In future releases of Interchange, you'll be able to
control many page attributes without having to edit the templates by hand.
</p>
<p>
Product pages are for listing items in your inventory. Generally, you'll
create a section for each kind of item in your store, so that visitors can
browse your items easily. If you have many kinds of items, you may want to
list their sections together under a <b>Products</b> section. When you've selected
a section that is a product page, you will be presented with a list of items
in that section and options for adding and deleting items in that section.
Deleting an item from a section doesn't actually delete the item from your store; the <b>Items</b> page is used for that.
</p>
<p>
Content pages are pages which primarily contain information about the site and
don't list any items. You can choose from pages you've uploaded with the
file uploader.
</p>
<p>
Links to foreign pages provide an easy way to link to another site.
</p>
+layout.main Layout Manager <p>
The site layout manager is the interface that a designer or product manager uses to assign products to a page, manage elements on the page such as links, do merchandizing like specifying featured products, and rearranging elements on the pages.
</p>
<p>
When you enter this page, you see first a listing of the main pages linked on the front page of your Web site and other elements on that page such as featured products or navigation bars. We call these the "children" of the front page. If you click on the name of one of these children, the list will expand to show you the children of that element, and so on. Next to the name of each child is a radio button. Select the button of the element you want to work with before clicking any of the buttons at the bottom of the page.
</p>
<p>
<b>Add as Child</b><br>
You can add three types of children to any particular element: items, groups, and pages. The pull-down menus below the list display the available children. To add children to a page, first click the radio button next to that page's name in the list, then select either a group, page, or item from the pull-down menus. Click on the "Add as Child" button. You should see the new child appear under its parent automatically.
</p>
<p>
<img src="images/layout.add.child.jpg" alt="" width="350" height="254">
</p>
<p>
<b>Rearrange Children</b><br>
The order that the children appear in this list is important, as it determines the order in which they will be displayed on the site. The "Rearrange Children" feature lets you place them in the correct order. First, click the radio button next to the parent whose children you want to arrange, then click on the "Rearrange Children" button. That will take you to a new screen with a list of all the children in order. Select each child that you want to move, then click the "up" or "down." Continue this process until they're in the right order, then click "ok." Clicking "cancel" will take you back without making any changes, even if you've already rear
d some of your products.
</p>
<p>
<b>Move Some Children/Move All Children</b><br>
If you want to move children out from under one parent over to another, these two functions will do that. "Move Some Children" allows you to choose which of the children in the list you would like to move, then asks you which new parent to assign them under. "Move All Children" simply moves them all. Below, see the "Move Children" screen. Notice you can "control click" to select more than one child to move.
</p>
<p>
<img src="images/layout.move.child.jpg" alt="" width="200" height="210">
</p>
<p>
<b>Hide All</b><br>
Just as clicking on the name of an element will make its children appear, clicking on the name again will make them disappear. If you have a lot of different parents' children showing, the "Hide All" button will make them all disappear.
</p>
<p>
<b>Delete</b><br>
The delete button allows you to remove a child from the parent. Select the child you would like to remove by clicking the button next to its name, then click on the delete button.
</p>
layoutdownload.main Layout Download <p>
Coming Soon
</p>
-admin.edit.user Administrator Edit <p>
The <b>Administrator Edit</b> page allows you create and edit administrator preferences.
<p>
<h2>Functions</h2>
<b>Real Name</b><br>
If adding an administrator, type the name of that administrator in this field.<br>
<i>or </i><br>
If editing an administrator, make the necessary changes here.
<p> <b>User Name</b><br>
If adding an administrator, type the user name of that administrator in this field.<br>
<i>or</i><br>
If editing an administrator, the user name for that administrator is displayed here.
<p> <b>Super User</b><br>
If the administrator you are adding or editing is a Super User, be sure to check
this box. A <i>Super User</i> is an administrator that has full access to all
aspects of the Administration Site, regardless of what permissions have been
set.
<p>
<b>Groups</b><br>
Click the name of the group with which you want this administrator to be associated.
<p>
<b>Permissions</b><br>
To view and/or edit the site access permissions for this user, click this button.
<p>
<b>OK</b><br>
To commit the administrator changes/additions you made, click this button.
<p>
<b>Cancel</b><br>
To abandon the changes/additions you made, click this button.
-wizard.verisign Wizard : Signio/Verisign Payment Preferences Enter the values you recieved when you registered for payment processing through Signio/Verisign. If you haven't recieved these values or you haven't signed up for this payment option yet leave these fields blank. Remember that you will not be able to launch your site without a secure payment processing solution. The required fields are displayed in <b>Bold</b>.
-affiliates.main Edit Affiliates <p> An Affiliates Program allows the merchant to make linking agreements with
the owners of other web sites then track which orders come in from those off-site
links. In many cases, the partner site earn a percentage of the sale from that
link. In other cases, the merchant is simply interested in knowing how many
people are buying as a result of a particular link. The <b>Edit Affiliates</b>
page allows you to edit Affilite information. </p>
<p> <b>Create New Affiliate</b><br>
Click this button to make a new Affiliate. You will be asked to give that Affiliate
a name. This name will appear in your personal list of Affiliates and will also
appear on any orders resulting from this affiliate's links. After you submit
the new Affiliate information, Interchange will display a unique URL which you
will need to email to your new Affiliate. They will receive credit for an order
only if the purchaser originally clicked on that specific URL. </p>
<p> <b>Default URL to Redirect to</b><br>
When setting up your Affilate, you have the choice of having their link point
to your front page, to any other page in your site, or perhaps to a welcome
page specifically for that Affiliate's customers. Enter the complete URL in
this space. Note: do <i>not</i> enter the URL of the Affiliate's web site in
this space. </p>
<p> <b>Timeout Delay</b><br>
The amount of time you enter here, in seconds, is the time that purchasers have
between the time they enter your site through the link and when they must purchase
before their status expires. If you set this time to 60 seconds, most purchasers
will not have time to place an order and your Affiliate would not get credit
for any of the sales. We recommend a setting in the thousands, or a setting
of zero, which disables this feature. </p>
<p> <b>Edit Affiliate</b><br>
Select an Affiliate's name from the list, and click "Edit Affiliate" to review
or change the Affiliate information. If you forget the URL that the Af
iate" screen. </p>
<p> <b>Show Orders</b><br>
This feature will review the number, amounts, and specifics of all orders attributed
to a particular affiliate. Select the Affiliate from the list and click "Show
Statistics." </p>
<p>
<b>Show Traffic</b><br>
This button will allow you to view information on the number of visitors who
have come to your site via the selected affiliate.
</p>
<p> <b>Delete Affiliate</b><br>
Select the Affiliate from the list and click "Delete Affiliate" to remove it.
You will be asked to confirm your choice, after which it can not be recovered.
</p>
<p>
<b>Affiliate Relations</b><br>
You may also choose to allow the Affiliate to view the statistics for the traffic
on your site to which they are responsible. You can do this by allowing them
a restricted amount of access. (See the <a href="access.main.html">Access Manager</a>
for details.) </p>
<p> Note: the affiliates feature requires that the purchaser's computer accept
cookies. Keep in mind that some purchasers may have their browsers set to reject
cookies or may be using browsers that do not support them. </p>
-access.permissions Administrator Permissions <p>
The <b>Administrator Permissions</b> page allows you to select the operations that each user can have access to in the back office. Each section of the back office can be restricted with great detail. For example, a user can be given the ability to view a list of all orders, but not have access to the order details. Access to the individual rows of Interchange's internal tables can also be restricted on a per-table basis for each user.
<p>
<h2>Functions</h2>
<b>OK</b><br>
After selecting the type of access the user will have to each section of the Interchange Administration Site, click <b>OK</b> to commit the changes. The next time this user logs on to the Administration Site the new permissions will be used.
<p>
<b>Cancel</b><br>
Click Cancel to abandon the permissions change.
</p>
-page.editor Page editor <p>
The <b>Page editor</b> displays a directory of the html pages that make up your site, including the Interchange Administration Site pages, allowing you to quickly access and edit any page of your site.
<p>
To access a web page, click the name of the web page from the <b>Page editor</b>. The Edit Page page is displayed.
-shipping.ups UPS Zones-Based Shipping <p>
Interchange is pre-configured with UPS zones tables for Ground, Three Day Select, Second Day Air, Second Day Air AM, Next Day Air Saver, and Next Dday Air.
</p>
<p>
If you require zones support for FedEx, DHL, or USPS, please <a href="mailto:info@akopia.com">contact Akopia</a>.
</p>
<p>
There are no tables to configure if you select these options, but to use zones-based shipping, you need to enter the zip code of your shipping location. Interchange will automatically generate zones charts based on your zip code.
</p>
<p>
[Coming Soon: Information on how to enter your zip code]
</p>
-reconfig Reconfigure <p>
<b>Apply Changes</b> commits all changes that the Interchange Administration Site doesn't commit automatically. It is good practice to occasionally click <b>Apply Changes</b> when administering the Administration Site to make sure your changes are implemented.
</p>
-wizard.preview Wizard : Preview <p><font size=2>The preview page allows you to view and test your newly created site before launch. After you preview your site you can go back to any point in the Wizard and make changes to your settings. You can preview and make changes as many times as necessary. <p>The following table describes the options displayed on this page.<p><table border=1 cellspacing=0 cellpadding=2 width=425><tr><td bgcolor="E0DCE0"><font size=2><b>Field</b></td><td bgcolor="E0DCE0"><font size=2><b>Description</b></td></tr><tr><td><font size=2>Insert products data</td><td><font size=2>Enters into Interchange the product spreadsheet you uploaded. Choose <b>Yes</b> if you already uploaded sample product information or your own product information and want to enter it into Interchange. <br>Choose <b>No</b> if you entered products using the Manual Product Entry page.</td></tr><tr><td><font size=2>Insert sample order data</td><td><font size=2>Choose <b>Yes</b> to insert sample order and user data. This will help you to see how the Administration Tool works by providing sample orders and customers for view. You can purge this information before launch.</td></tr><tr><td><font size=2>Enable Secure (SSL)</td><td><font size=2>Choose <b>Yes</b> to enable your SSL certificate. This is not necessary to preview your site, but is strongly recommended for launch if you are processing payments online.</td></tr><tr><td><font size=2>Finish</td><td><font size=2>Click to preview your site.</td></tr></table>
-wizard.cybercash Wizard : CyberCash Payment Preferences Enter the values you recieved when you registered for payment processing through CyberCash. If you haven't recieved these values or you haven't signed up for this payment option yet leave these fields blank. Remember that you will not be able to launch your site without a secure payment processing solution. The required fields are displayed in <b>Bold. </b>
-customer Active/Inactive Customers <p> The <b>Active Customers</b> and <b>Inactive Customers</b> pages display all
customers in the system. You can group the customers as active or inactive depending
on your preference. <b>Active Customers</b> usually include those with pending
orders or orders that have recently been filled. <b>Inactive Customers</b> usually
include those who have decided not to create a user account or haven't submitted
an order recently. Contact your Site Administrator or Super User for your rules
regarding customers.
<h2>Functions</h2>
<b>Search for Customer</b><br>
Type the parameter by which you want to search for a customer. For example, type <b>CA</b> to search for all customers located in the state of California. Only the customers containing the search parameter will be displayed.
<p> <b>Delete Checked Customers</b><br>
Click this button after checking the customer(s) you want to delete. A warning
is displayed. Click <b>OK</b> to delete. The deleted customer(s) are removed
from the page, but remain in the system. <i><b>Hint:</b> To delete an individual
customer, click the <b>X</b> in the red square beside the customer ID.</i>
<p> <b>Deactivate Checked Customers</b> (on the <b>Active Customers</b> page)<br>
<i>or</i><br>
<b>Activate Checked Customers</b> (on the <b>Inactive Customers</b> page)<br>
Click this button after checking the customers(s) you want to activate or deactivate.
The customer(s) are moved to the appropriate section. <i><b>Hint:</b> To activate
or deactivate an individual customer, click the black arrow beside the customer
ID.</i>
<p>
<h2>Features</h2>
You can sort the customer list by clicking the heading of the column by which you want to sort. For instance, to sort by customer ID, click the <b>ID</b> heading. This displays the customers by ID in ascending or descending alphabetical order.
<p>
You can click the customer ID to access the <a href="customer.view.html">View Customer</a> page to view the details of a specific customer.
-export.main Individual Table Export <p>
The <b>Individual Table Export</b> page allows you to export any of the internal tables on Interchange to a file on the server.
<p>
<h2>Functions</h2>
<b>Export</b><br>
After selecting the export criteria, click <b>Export</b> to export the table.
The following list describes the <b>Export As</b> available formats.
<ul>
<p>
<li><b>Current Type/System Default</b><br>
Types specified in the Interchange configuration files.
<p></p>
<p>
<li><b>TAB Delimited</b><br>
First line of the file represents column names. Each line
represents a row, with tab characters separating columns.
<p></p>
<p>
<li><b>CVS</b><br>
The same as TAB delimited, but separated by commas and quotes.
<p></p>
<p>
<li><b>PIPE Separated</b><br>
The same as TAB delimited, but separated by | characters instead of tabs.
<p></p>
<p>
<li><b>%%/%%%</b><br>
One column per line, separated by %% lines, with %%% between rows.
<p></p>
</ul>
-wizard.payment Wizard : Setting Up Payment Information This section helps you to set up your payment acceptance and processing information and is intended only to get you started. It offers a choice of processing options and payment methods. This information will be entered into Interchange and populated into the Administration tool. The required fields are displayed in bold.<p>The following are descriptions of the fields displayed on the page:<p><table border=1 cellspacing=0 cellpadding=2 width=425><tr><td bgcolor="E0DCE0"><b>Field</b></td><td bgcolor="E0DCE0"><b>Definition</b></td></tr><td>Payment gateway</td><td>The payment gateway that is processing your payments. Choose your payment processor from the drop-down list. If you don't have a payment processor, you can choose one now, or choose no credit cards. Your choices are:<br><ul><li><b>no credit cards</b>-select if you are not processing payment information, or if you are processing payments manually (over the phone or using a Magnetic Stripe Reader). You can also select this if you are unsure of how you will process your payments.</li><li>PGP sent credit cards-select if you are using Pretty Good Protection (PGP) to process your payments. For more information on PGP, see <a href="http://www.pgpi.org">www.pgpi.org</a>.</li><li><b>CyberCash</b>-select if you are using CyberCash to process your payments. For more information on CyberCash, see <a href="http://www.cybercash.com">www.cybercash.com</a>.</li><li><b>Verisign</b>-select if you are using Verisign to process your payments. For more information on Verisign, see <a href="http://www.verisign.com">www.verisign.com</a>.</li></ul></td></tr></table>
-wizard.pgp Wizard : PGP Payment Preferences Enter the values you recieved when you registered for payment processing through Pretty Good Protection (PGP). If you haven't recieved these values or you haven't signed up for this payment option yet leave these fields blank. Remember that you will not be able to launch your site without a secure payment processing solution. The required fields are displayed in <b>Bold</b>.
-order.view View Order <p>
The <b>View Order</b> screen allows you to view detailed information about a particular order.
<p>
<h2>Functions</h2>
<b>Return</b><br>
Returns you to the <b>Pending Orders</b> or <b>Archived Orders</b> list.
<p>
<b>View Next Order</b><br>
Displays the next order. <i><b>Hint:</b> The <b>View Next Order</b> button displays the <b>View Order</b> pages in sequential order by order number. Both Archived and Unarchived orders are displayed.</i>
<p>
<b>Archive Order and View Next</b><br>
<i>or</i><br>
<b>Un-Archive Order and View Next</b><br>
The button displayed depends on if the order you are viewing is an <b>Archived Order</b> or <b>Pending Order</b>. It allows you to reverse the status of an order (from pending to archived, or vice versa).
<p>
<b>Delete Order and View Next</b><br>
Deletes the order and displays the next order.
<p>
<h2>Features</h2>
Depending on how much information is stored on the system about a customer, some of the items on the <b>View Order</b> page are hotlinked to allow you to access other information:<br>
<ul>
<li>Click the customer's name to access the <a href="customer.view.html">View Customer</a> page. The <b>View Customer</b> page displays detailed information about the customer.
<li>Click the customer's email address to send that customer an email.
<li>Click <b>Bill To:</b> to access that customer's complete billing information.
<li>Click <b>Ship To:</b> to access that customer's complete shipping information.
<li>Click the order's status to access the <a href="item.edit.html">Order Status</a> page. The <b>Order Status</b> page displays detailed information about the order shipment.
</p>
-customer.edit Customer Edit <p>
This help page corresponds to the following Administration screens:<p>
<ul>
<li>Customer preferences
<li>Customer shipping information
<li>Customer billing information
</ul>
These screens allow you to enter or change information relating to the customer.
The fields displayed on these pages are dependent on how the Site Administrator
or Super User set up Interchange Administrator. For assistance with completing
these pages, see your Site Administrator or Super User.
<p>
<h2>Functions</h2>
<b>OK</b><br>
After completing the necessary information on the page, click <b>OK</b> to commit your changes/additions. The page is refreshed and the changes are committed.
<p>
<b>Cancel</b><br>
Abandon entered changes without committing them. The page is refreshed, displaying only the original information.
<p> <b>Auto-Export</b><br>
Click this checkbox to enable the Auto-Export feature. The Auto-Export feature
exports the changes you are committing to the tables described on these pages
to the original flat text file. This feature allows you to keep your original
files up-to-date and portable. However, while this feature may not hinder the
system's performance when exporting a small table, exporting a large table may
slow your system.
<p>
<h2>Features</h2>
The <b>meta</b> link, which is only visible to the Site Administrator or Super
User, is displayed below each field name. This link allows the Site Administrator
or Super User to change the parameters for each field. For more information on
<b>meta</b> links, see the <a href="flex.meta.html">Meta Field Information</a>
page.
-wizard.authorizenet Wizard : Authorize.net Payment Preferences Enter the values you recieved when you registered for payment processing through Authorize.net. If you haven't recieved these values or you haven't signed up for this payment option yet leave these fields blank. Remember that you will not be able to launch your site without a secure payment processing solution. The required fields are displayed in <b>Bold</b>.
-wizard.itransact Wizard : iTransact Payment Preferences Enter the values you recieved when you registered for payment processing through Authorize.net. If you haven't recieved these values or you haven't signed up for this payment option yet leave these fields blank. Remember that you will not be able to launch your site without a secure payment processing solution. The required fields are displayed in <b>Bold</b>.
-wizard.skipjack Wizard : Skipjack Payment Preferences Enter the values you recieved when you registered for payment processing through Authorize.net. If you haven't recieved these values or you haven't signed up for this payment option yet leave these fields blank. Remember that you will not be able to launch your site without a secure payment processing solution. The required fields are displayed in <b>Bold</b>.
-wizard.index Wizard : Welcome <font size=-1>The Catalog Wizard gets you started with the Interchange e-commerce platform. It will lead you through the process of configuring the fundamentals of your store. When you finish you will have a fully functioning e-commerce site! <br><br>The checklist at the left side of the page shows your progress in the Catalog Wizard. You can complete the sections in any order and you can go back to any section at any time. At any point in the Catalog Wizard process you can choose to stop, save your settings, and continue later.
-shipping.weight Shipping by Weight <p>
<b>Standard Shipping by Weight:</b> This calculates shipping by total weight with no regard to zones. Weight-based shipping with zones are marked by the company whose zones the algorithm calculates by, i.e., <a href="shipping.ups.html">UPS</a>. To use this method, you must enter a weight for each item in your inventory.
</p>
<p>
<blockquote>
<i>Note: You can use any unit of measure you wish as long as you are consistent: if you enter your item prices in grams then configure shipping with pounds, your customers will not be happy when they are quoted huge shipping rates.</i>
</blockquote>
</p>
<p>
To begin, click on the plus sign once for each range you would like to enter. You can add or subtract more fields at any time, so don't worry. <i><b>Hint</b>: on some browsers, when you click the plus sign more than once, it won't register. In that case, click the "reload" button on your browser to make more fields appear. The first range will automatically start with zero and the last range will automatically end with infinity.</i>
<p>
Create all the ranges you need and give each range a charge amount. In case you would like to charge a percentage of the order total as the shipping and handling charge, you have the option of specifying a percentage for any of the ranges. Note: Interchange automatically bases the beginning point of each range on the end of the last. If you end one range at 5 kg, the next range will begin at 5.00001 kg.
</p>
-matrix.main Matrix Editor <p>
<b>What is a Matrix?</b><br>
A matrix is a table of all the possible combinations of options available for an item. For example, a golf club can have options for mens and ladies, right and left handed, several shaft types and flexes, different lofts, or head angles. But not all lofts are available in left handed, and some aren't available in ladies, and graphite shafts cost extra and all have different SKUs. The matrix contains all the variables. A simple matrix might be a size matrix, which has small, medium, large, and extra large. You would then be able to apply a unique sku or price or inventory information to each variation of each item.
</p>
<p>
A matrix can be specified for a particular item in the <a href="item.editor.html">Item Editor</a>, but each matrix must first be created in the Matrix Editor.
</p>
<p>
<b>Create New Matrix</b><br>
Here, give your new matrix a descriptive name, such as "drivers and fairway woods" or "build-to-order bikes."
</p>
<p>
<b>Edit Matrix</b><br>
This feature allows you to edit the name. To edit the matrix's dimensions, use the "Show Dimensions" feature.
</p>
<p>
<b>Show Dimensions</b><br>
This feature allows you to create new dimensions and create ranges underneath those dimensions.
</p>
<p>
<b>Create New Dimension</b><br>
Like the "Create New Matrix" feature, "Create New Dimension" simply lets you specify a name for the dimension. Each matrix can have an unlimited number of dimensions.
</p>
<p>
<blockquote>
Example: The "drivers and fairway woods" matrix will have dimensions for shaft type, flex, right/left handed, and loft.
</blockquote>
</p>
<p>
<b>Edit Dimension</b><br>
This feature allows you to edit the name.
</p>
<p>
<b>Show Ranges</b><br>
This feature will take you to another screen where you can create and edit ranges under that dimension.
</p>
<p>
<b>Create New Range</b><br>
This will allow you to give your new range a name. Each dimension can have an unlimited number of ranges.
</p>
<p>
<blockquote>
Example: The "flex" dime
vers and fairway woods" matrix will have range entries for light, firm, and stiff.
</blockquote>
</p>
-import.main Table Import <p>
The <b>Table Import</b> page allows you to upload a file from your computer
to Interchange in order to update one of Interchange's internal tables. This
can be done in one of several formats -- TAB-delimited text, Gnumeric simple text,
or Excel XLS workbook.
</p>
<p>
You can import slices of a table -- the only column that is required is
the key column (for example, <B>sku</B> is usually the key column for
<i>products</i> and <i>inventory</i>).
<P>
For instance, to update only the quantityfor a series of items in <i>inventory</i>, create a file with two columns, the
<B>sku</B> and <B>quantity</b>. Not all items must be updated, so you can
just upload the ones to be added or changed.
</p>
<p>
If you wish rows to be added when a new key is found, keep the default selection
<b>Add new items if present</b>. To only update existing rows, change
that to <b>Ignore new items</b>.
</p>
<p>
To upload changes to a single table in TAB-delimited format,
select a TAB-delimited file to send to Interchange by clicking <b>Browse...</b>,
and a table to update from the list on the right. Then select whether to
add new rows from your file to the table, or to only update rows that are in
both your file and the table.
</p>
<p>To upload changes to multiple tables in <B>Gnumeric simple-text</B> format,
select it and use <b>Browse...</b>, then select your upload options.
The table selection is not important because the table is selected from
with the Gnumeric simple-text file.
</P>
<P>
Uploading in <B>Excel/XLS</b> format requires that the module Spreadsheet::ParseExcel
be installed on your server. Check with your admin if you need this and
the option is not present in the file format chooser. Otherwise, you simply
select the <tt>.xls</tt> file with <B>Browse...</b> and upload as with
Gnumeric simple-text format.
-dbdownload.main Database Download <p></p>
<p>
The <b>Database Download</b> page allows you to export any of the internal
tables on Interchange to the <b>backup</b> directory of your catalog. By
default, it exports each table to a tab-delimited file named for the table.
It also can export Gnumeric simple-text output and, if you have the Perl Spreadsheet::WriteExcel module installed, it can write XLS spreadsheet files.
<blockquote>
NOTE: XLS output is only available when you have the Spreadsheet::WriteExcel
module installed. Spreadsheet::WriteExcel is available at CPAN.
</blockquote>
<p>
To use, take the following steps:
<OL>
<LI>Check the boxes corresponding to the tables you want to export.
<LI>Select whether you want Gnumeric output and/or XLS output.
<LI>Click <B>Perform Export</B> button.
</OL>
NOTE: If you have very large database tables, the export function may take a
long time. It is not recommended for more than 25,000 products.
<P>
Once the tables are exported to a Gnumeric or XLS format, they will be
available for download on the same page. Individual tables are downloadable
via the <I>File Transfer</I> menu.
<P>
Caveats:
<P>
<UL>
<LI>Fields longer than 255 characters will be wrapped to the next line
and must be combined in the spreadsheet to be re-imported.
</UL>
-upload.main File Transfer <p>
The <b> File Transfer</b> page allows you to easily transfer pages, templates, and configuration files to and from a server to your computer. The following is a list of the types of files you can upload and download.
<p>
<ul>
<li><b>Pages</b><br>
The <b>Pages</b> link allows you to access the <b>Upload/Download Pages</b> page. This page makes it easy for you to view, download, upload, or edit your Web pages.<!--upload from where? download from where?-->
<p>
<li><b>Configuration (catalog.cfg)</b><br>
The <b>Configuration (catalog.cfg)</b> link allows you to access the <b>Configuration Upload/Download</b> page. This page makes it easy for you to view, download, upload, or edit your configuration file. <!--upload and download from where? what's the configuration file?-->
<p>
<li><b>Any File</b><br>
The <b>Any File</b> link allows you to access the <b>File Upload</b> page. This page makes it easy for you to view, download, upload, or edit any file on your system. <!--from where?-->
</ul>
-crosssell Cross-Sell <p>
The <b>Cross-Sell</b> page is used to exercise the Cross-Sell marketing feature. The Cross-Sell feature allows you to display an item or items that compliment the item the customer has chosen and give the customer the choice of adding the complimentary item. For example, you may choose to display a paintbrush as a Cross-Sell item to a customer that is purchasing paint.
<!--reference the page where the graphics are posted or parameters for display are set-->
<p>
<h2>Functions</h2>
<b>OK</b><br>
After completing the necessary Cross-Sell information, click <b>OK</b> to export the Cross-Sell connection.<!--what is the result of this action?-->
<p>
<b>Cancel</b><br>
To abandon the Cross-Sell task you started without saving the change.
<p> <b>Auto-Export</b><br>
Click this checkbox to enable the Auto-Export feature. The Auto-Export feature
exports the changes you are committing to the tables described on these pages
to the original flat text file. This feature allows you to keep your original
files up-to-date and portable. However, while this feature may not hinder the
system's performance when exporting a small table, exporting a large table may
slow your system.
<p>
<h2>Features</h2>
The <b>meta</b> link, which is only visible to the Site Administrator or Super
User, is displayed below each field name. This link allows the Site Administrator
or Super User to change the parameters for each field. For more information on
<b>meta</b> links, see the <a href="flex.meta.html">Meta Field Information</a>
page.
layoutupload.main Layout Upload <p>
Coming Soon
</p>
-shipping.quantity Shipping by Quantity <p>
Charges an amount according to how many items are ordered. This rate is especially suited for stores that sell all items which are similar in weight and size, such as CDs or DVDs.
</p>
<p>
To begin, click on the plus sign once for each range you would like to enter. You can add or subtract more fields at any time, so don't worry. <i><b>Hint</b>: On some browsers, when you click the plus sign more than once, it won't register. In that case, click the "reload" button on your browser to make more fields appear.</i>
</p>
<p>
The first range will automatically start with zero and the last range will automatically end with infinity. Note: Interchange automatically bases the beginning point of each range on the end of the last. If you end one range at five items, the next range will begin at six.
</p>
-dbupload.main Database Upload <p>
<b>Coming soon</b>
</p>
-layout.edit Site Layout <p>
The <b>Site Layout Editor</b> can be used to manage the content on your site.
Content is divided into sections, and you can create subsections of each
section, much like directories and subdirectories on a disk.
</p>
<p>
Selecting a section on the left shows information about it on the right.
Click <b>Create New Section</b> to create a new top level section, or select an
existing section and click <b>Create Subsection</b> to create a new section under
the existing section heading.
</p>
<p>Sections come in three types: product pages, content pages, and links to
foreign pages. In future releases of Interchange, you'll be able to
control many page attributes without having to edit the templates by hand.
</p>
<p>
Product pages are for listing items in your inventory. Generally, you'll
create a section for each kind of item in your store, so that visitors can
browse your items easily. If you have many kinds of items, you may want to
list their sections together under a <b>Products</b> section. When you've selected
a section that is a product page, you will be presented with a list of items
in that section and options for adding and deleting items in that section.
Deleting an item from a section doesn't actually delete the item from your store; the <b>Items</b> page is used for that.
</p>
<p>
Content pages are pages which primarily contain information about the site and
don't list any items. You can choose from pages you've uploaded with the
file uploader.
</p>
<p>
Links to foreign pages provide an easy way to link to another site.
</p>
-regen.main Regenerate <p>
After you have made changes to your Interchange site's data, you must use the <b>Regenerate</b> function to create (or re-create) your site's pages based on the new data. Until you regenerate, your Web site will not be changed as you work with Interchange.
</p>
-button.builder Button builder <p> The <b>Button Builder</b> page allows you create HTML links and buttons for
ordering items in your store. </p>
<p>
This function allows for quick access to a product and is useful if you have a few products you want to list on a page or if you want to put an order link on a page on another site.
</p>
<p> The Button Builder can generate either a URL for use in an <b><A HREF...></b>
HTML tag, or a submit button inside of a <b><FORM></b> tag.
<p>
<h2>Functions</h2>
<b>Build</b><br>
After entering the necessary information, click <b>Build</b> to create the button. The Interchange Administration Site builds the button for you and issues the resulting HTML that displays the button. Cut and this information and paste it to the page on which you want to display the button.
-flex.select Direct Table Edit: Select for table edit <p>
Having selected a table to edit, you can now add a new row, edit an existing
row, edit all rows spreadsheet-style, or delete a row.
</p>
-wizard.tax Wizard : Set Up Tax Information This section helps you to set up your tax information. This information will be entered into Interchange and populated into the Administration tool. This screen is intended only to get you started with tax calculation. It offers a simple calculation method and does not account for multiple delivery locations. The Administration tool allows you to upload tax calculation tables or enter specific tax application rules. The required fields are displayed in bold.<p>The following are descriptions of the fields displayed on the page:<p><table border=1 cellspacing=0 cellpadding=2 width=425><tr><td bgcolor="E0DCE0"><font size=2><b>Field</b></td><td bgcolor="E0DCE0"><font size=2><b>Definition</b></td></tr><tr><td><font size=2>Tax location</td><td><font size=2>The State in which you will be selling your products. If you will be selling in more than one state, enter the primary state. You can make adjustments using the administration tool later.</td></tr><tr><td><font size=2>Tax rate</td><td><font size=2>The percentage that should be used when calculating tax. This is typically the default sales tax for the state you are selling in. If you are unsure of what percentage to use, contact your local Better Business Bureau.</td></tr><tr><td><font size=2>Tax shipping?</td><td><font size=2>If the tax percentage should be applied to the total cost, including shipping. Click the appropriate response from the drop-down menu. Clicking <b>Yes</b> applies the tax after the shipping cost has been added to the order.</td></tr></table>
-wizard.fedex Wizard : Shipping Configuration for Federal Express This screen allows you to choose the Federal Express shipping options that you want to offer. If you are unsure of what a shipping option means, contact Federal Express for further explaination. The <b>Handling fee</b> allows you to enter a fee for handling the delivery for the customer. Most e-commerce sites charge a handling fee depending on how big or how fragile a product is. This value should be entered in decimal format. For example, if you are charging a handling fee of $3.00, enter 3.00 in the <b>Handling fee</b> field.<p> The Wizard <b>Checklist</b> is displayed on the left. From the checklist you can access any of the Wizard screens. Click <b>Save current settings</b> to save your work to this point.
license Licensing <p>
This program is free software. You can redistribute it and/or
modify it under the terms of Version 2 of the GNU General Public
License as published by the Free Software Foundation.
</p>
<p>
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the <a
href="http://www.gnu.org/copyleft/gpl.html">GNU General Public License</a>
for more details.
</p>
-genexport.main Import/Export <p> Interchange makes it easy to import and export data to and from your commerce
Web site. </p>
<p>
<a href="dbupload.main.html">Database Upload</a> allows you to import a tab delimited database of your product information to Interchange to make set-up faster and easier.
</p>
<p>
<a href="dbdownload.main.html">Database Download</a> does just the opposite, allowing you to download the data from Interchange.
</p>
<p>
<a href="layoutupload.main.html">Layout Upload</a> lets you upload your site's layout information.
</p>
<p>
<a href="layoutdownload.main.html">Layout Download</a> lets you download your site's layout information.
</p>
+logout.main Logout <p>
The <b>Login/Logout</b> page allows you to log in to the Interchange Administration Site. If more then one user has been specified on your system, this page can be used to log on as a different user. Enter your user name and password to access the Administration Site. If you are unsure of your user name or password, contact your Site Administrator.
+matrix.main Matrix Editor <p>
<b>What is a Matrix?</b><br>
A matrix is a table of all the possible combinations of options available for an item. For example, a golf club can have options for mens and ladies, right and left handed, several shaft types and flexes, different lofts, or head angles. But not all lofts are available in left handed, and some aren't available in ladies, and graphite shafts cost extra and all have different SKUs. The matrix contains all the variables. A simple matrix might be a size matrix, which has small, medium, large, and extra large. You would then be able to apply a unique sku or price or inventory information to each variation of each item.
</p>
<p>
A matrix can be specified for a particular item in the <a href="item.editor.html">Item Editor</a>, but each matrix must first be created in the Matrix Editor.
</p>
<p>
<b>Create New Matrix</b><br>
Here, give your new matrix a descriptive name, such as "drivers and fairway woods" or "build-to-order bikes."
</p>
<p>
<b>Edit Matrix</b><br>
This feature allows you to edit the name. To edit the matrix's dimensions, use the "Show Dimensions" feature.
</p>
<p>
<b>Show Dimensions</b><br>
This feature allows you to create new dimensions and create ranges underneath those dimensions.
</p>
<p>
<b>Create New Dimension</b><br>
Like the "Create New Matrix" feature, "Create New Dimension" simply lets you specify a name for the dimension. Each matrix can have an unlimited number of dimensions.
</p>
<p>
<blockquote>
Example: The "drivers and fairway woods" matrix will have dimensions for shaft type, flex, right/left handed, and loft.
</blockquote>
</p>
<p>
<b>Edit Dimension</b><br>
This feature allows you to edit the name.
</p>
<p>
<b>Show Ranges</b><br>
This feature will take you to another screen where you can create and edit ranges under that dimension.
</p>
<p>
<b>Create New Range</b><br>
This will allow you to give your new range a name. Each dimension can have an unlimited number of ranges.
</p>
<p>
<blockquote>
Example: The "flex" dime
vers and fairway woods" matrix will have range entries for light, firm, and stiff.
</blockquote>
</p>
+menu.edit Menu Editor The
menu editor allows you to manage menus based on the ITL [menu ...] tag.
These menus are used to control Interchange's UI and for display of
product listings (typically for left-hand navigation).<br>
<br>
<h3>Menu Name</h3>
A list of existing menus is displayed in the <span style="font-weight: bold;">Menu name: </span> dropdown. To load one, select it and press <span style="font-weight: bold;">Load</span>. There is a link to manage the files, i.e. delete a menu or download it.<br>
<br>
<h3>Menu Loader -- Single Table</h3>
The menu loader allows you to pre-load a menu from a database table in one of three ways.<br>
<br>
In Category mode, you have two choices of load methods. In the first,
you select a pair of fields; one for the first level, one for the
second level. A tree-based menu is built based on those two fields.<br>
<br>
The combined category method uses a single field to develop the tree.
That field must contain a colon-separated list of categories; i.e. <span style="font-weight: bold;">Hand Tools:Hammers</span>. That would be identical in effect to having the <span style="font-weight: bold;">prod_group</span> field equal to <span style="font-weight: bold;">Hand Tools</span> and the <span style="font-weight: bold;">category</span> field equal to <span style="font-weight: bold;">Hammers</span>. The difference is that you can add arbitrary additional categories and the tree will reflect that.<br>
<br>
<h3><span style="font-weight: bold;">Menu Loader -- Dual Table</span></h3>
This menu loading method allows you to integrate an Interchange 4.8.x menu developed with the Layout Editor. It reads the <span style="font-weight: bold;">cat</span> and <span style="font-weight: bold;">area</span> tables by default, and develops a menu based on your current settings in that table. <span style="font-weight: bold;">Note: </span>If you change the settings of those tables with the <span style="font-weight: bold;">Layout Editor</span>, you must reload the menu.<br>
<br>
<h3>Create from HTML</h
f links, try
pasting it into the text box displayed when an empty menu is loaded. It
will initialize the menu editor.<br>
<br>
<br>
+merch.build_related Build Related <p>
You can mine the data from your <TT>orderline</TT> database to suggest products that
might be bought in combination with a certain product.
</p>
<p>
All that is necessary is to access this page. The database will be mined and
entries made in the <TT>others_bought</TT> field of the <TT>merchandising</TT> database.
</p>
<p>
The database is scanned, and a list of items purchased on the same order with
each item is built. This is stored in a data structure and can be accessed
<I>in a shopping cart or flypage</I> with the code:
</p>
<XMP>
[if-item-data merchandising others_bought]
[perl tables=products]
my $hash = [item-data merchandising others_bought];
my @ary = sort { $hash->{$b} <=> $hash->{$a} } keys %$hash;
return '' unless @ary;
my %in_basket;
splice(@ary, 3);
for(@{$Carts->{main}}) {
$in_basket{$_->{code}} = 1;
}
@ary = grep ! $in_basket{$_}, @ary;
return '' unless @ary;
my $out = q{
<BR><TABLE CELLPADDING=0 CELLSPACING=0 WIDTH="100%">
<TR><TD __HEADERBG__>
<FONT SIZE="-1" COLOR="__HEADERTEXT__">
Customers who bought this item also bought:
</TD>
</TR><TR>
<TD><FONT SIZE="-1">
};
for(@ary) {
my $desc = tag_data( 'products', 'description', $_); $out .= q{<A HREF="[area $_]">$desc</A><BR>}
}
return $out . '</TD></TR></TABLE>';
[/perl]
[/if-item-data]
</XMP>
<p>
This code is used in the <B>Barry</B> and possibly other demos.
</p>
+merchandising Merchandising <p>
The <b>Merchandising</b> page allows you to edit how the product items displayed are promoted. For example, you might notice the trend that customers who buy hammers also buy nails. Because of this, you might decide to use the cross-sell feature on this page to have nails displayed on the same page as hammers. You also might want to offer a discount to customers purchasing a certain quantity of one item.
<p>
<h2>Features</h2>
<b>Limit with search</b><br>
Type the paramater by which you want to search the Item list. For example, you can type a portion of a SKU to perform a search for items containing that value. Only the items containing the search parameter will be displayed.
<p>
<h2>Functions</h2>
You can sort the item directory by clicking the heading of the column by which you want to sort. For example, to sort by SKU, click the <b>SKU</b> heading. This displays the orders by SKU in ascending or decending order. To sort in reverse order, click the <b>SKU</b> heading again.
Click a value listed in one of the following columns to access specific information about that value:<p>
<ul>
<li>SKU-click a SKU value in this column to access the <b>Edit Item</b> page for that item.
<li>Qty pricing-click the value in this column to access the <b>Edit Item</b> page for that item.
<li>Up-sell-click the value in this column to access the <b>Up-sell</b> page for that item.
<li>Cross-sell-click the value in this column to access the <b>Cross-sell</b> page for that item.
<li>Promotion-click the value in this column to access the <b>Feature</b> page for that item.
</ul>
+order.main.archived Archived Orders The <b>Archived Orders</b>
page displays all archived orders in the system. Orders are usually
archived when they have been fulfilled. For an order to be displayed in
the <b>Archived Orders</b> section, it must be manually moved from the <a href="order.main.pending.html">Pending Orders</a>
section. This page works in real-time, but if you leave this page open
or your Web browser has cached the page's contents, it is recommended
that you re-load the page periodically to see the most recent orders.<br>
<br>
The functions are the same as the <a href="order.main.pending.html">Pending Orders</a> section.<br>
<p>
</p><p>
+order.main.pending Pending Orders The <b>Pending Orders</b>
page displays all current orders in the system. This page works in
real-time, but if you leave this page open or your Web browser has
cached the page's contents, it is recommended that you re-load the page
periodically to see the most recent orders.<br>
<br>
When you have large numbers of pending orders, you may want to define
the transactions database as being LARGE. Contact the administrator to
have them set this parameter for the transactions table.<br>
<br>
To view archived orders, i.e. those that have been shipped or canceled, click the <a href="order.main.archived.html"><span style="font-weight: bold;">Archived Orders</span></a> tab.<span style="font-weight: bold;"></span><span style="font-weight: bold;"></span><br>
<h2>Functions</h2>
<p>
<b>View order</b><br> Type the order number you want to view. Useful
when there is a large list of pending orders and the order you want to
view is on a subsequent page.</p>
<p>
<b>Limit with Search</b><br>
Type the parameter by which you want to search. For example, type <b>CA</b>
to search for all orders originating in the state of California. Only
the orders containing the search parameter will be displayed. </p>
<p>
<b>Check all ...</b><br>There are links to check the box of all orders of a particular status, so that you can archive them en masse.<br>
</p>
<p><b>Delete Checked Orders</b><br>
Click this button after checking the order(s) you want to delete. A warning is displayed. Click <b>OK</b> to delete. The deleted order(s) are removed from the <b>Orders</b> page, but remain in the system. <i><b>Hint:</b> To delete an individual order, click the <b>X</b> in the red square beside the order number.</i>
</p>
<p>
<b>Archive Checked Orders</b><br>
Click this button after checking the order(s) you want to archive. The order(s) are moved to the <a href="order.main.archived.html">Archived Orders</a> section. <i><b>Hint:</b> To archive an individual order, click the black arrow beside the order checkbox.</i>
</p
er list by clicking the
heading of the column by which you want to sort. For instance, to sort
by total price, click the <b>Total</b> heading. This displays the orders by amount in ascending or descending order. To sort in reverse order, click the <b>Total</b> heading again.
<p>
You can view the details of a specific order by clicking the <b>Order Number</b>, <b>User</b>, or <b>Status</b> of that order.<br>
Click the <b>Order Number</b> to access the <a href="order.view.html">View Order</a> page.<br>
Click the <b>User</b> to access the <a href="customer.view.html">View Customer</a> page.<br>
Click the <b>Status</b> to access the <a href="item.edit.html">Order Status</a> page.
</p><p>
<!-- commented out
<p>
<b>Delete False Order</b><br>
Periodically, either through fraud or because an order fell through after it was placed due to product availability problems, an order will need to be deleted and not reported in the order statistics. Select the false order from the list and click on the delete false order button. You will be asked for confirmation to delete this order, because once an order is deleted, it is irretrievable.
</p>
--></p>
+order.view View Order <p>
The <b>View Order</b> screen allows you to view detailed information about a particular order.
</p><p>
</p><h2>Functions</h2>
<b>Return</b><br>
Returns you to the <b>Pending Orders</b> or <b>Archived Orders</b> list.
<p>
<b>View Next Order</b><br>
Displays the next order. <i><b>Hint:</b> The <b>View Next Order</b> button displays the <b>View Order</b> pages in sequential order by order number. Both Archived and Unarchived orders are displayed.</i>
</p><p>
<b>Archive Order and View Next</b><br>
<i>or</i><br>
<b>Un-Archive Order and View Next</b><br>
The button displayed depends on if the order you are viewing is an <b>Archived Order</b> or <b>Pending Order</b>. It allows you to reverse the status of an order (from pending to archived, or vice versa).
</p><p>
<b>Delete Order and View Next</b><br>
Deletes the order and displays the next order.
</p><p>
</p><h2>Features</h2>
Depending on how much information is stored on the system about a customer, some of the items on the <b>View Order</b> page are hotlinked to allow you to access other information:<br>
<ul>
<li>Click the customer's name to access the <a href="customer.view.html">View Customer</a> page. The <b>View Customer</b> page displays detailed information about the customer.
</li><li>Click the customer's email address to send that customer an email.</li><li>If
you have the CUSTOMER_VIEW_DEALER preference set, you can view the
customer's dealer status and click on it to take you to the preference
editor.<br>
</li>
<li>Click <b>Bill To:</b> to access that customer's complete billing information.
</li><li>Click <b>Ship To:</b> to access that customer's complete shipping information.
</li><li>Click the order's status to access the <a href="item.edit.html">Order Status</a> page. The <b>Order Status</b> page displays detailed information about the order shipment.
<p></p></li></ul>
+order_entry.main Enter Order <p>
This section allows you to manually enter an order for a new or existing customer.
<p>
<h2>Functions</h2>
<p>
<b>Enter/Recalculate</b><br>
Click this button after entering the SKU, description, and quantity of the item to be ordered. The order information is displayed.<br> <i><b>Hint:</b> To remove this item from the order, click the <b>Remove</b> checkbox beside the item.</i> <i>When entering an item, only the SKU number is necessary. The description field can be left blank. If the quantity field is left blank, the system defaults to one item.</i>
<p>
<b>Find</b><br>
After completing all or a portion of the <b>Shipping Address</b> information, click this button to display a list of possible customers. For instance, entering only <b>CA</b> in the <b>State</b> field before clicking <b>Find</b> will display all customers shipping to California. From the displayed customer list, highlight the desired customer and click <b>Select</b>. The fields in the <b>Shipping Address</b> area are automatically populated with the desired customer's information.
<p>
<b>Clear</b><br>
Click this button to clear all shipping address information.
<p>
<b>Place Order</b><br>
After entering the necessary payment, billing address, and email preference information; click this button to place the order.
<p>
<h2>Features</h2>
<p>
Use the <b>Gift Note</b> or <b>Special Instructions</b> field to enter additional information.
+orderstats.view Statistics: View <p>
Statistics can be viewed in several levels of detail, showing overall
totals and breakdowns by various criteria.
</p>
+page.editor Page editor <p>
The <b>Page editor</b> displays a directory of the html pages that make up your site, including the Interchange Administration Site pages, allowing you to quickly access and edit any page of your site.
<p>
To access a web page, click the name of the web page from the <b>Page editor</b>. The Edit Page page is displayed.
payment.main Payment Options <p>
The <b>Payment Options</b> page allows you to specify the payment options that your business accepts.
<p>
After choosing the payment acceptance status for each of the payment options listed, click <b>Update</b> to commit the changes. Click <b>Back</b> to return to the previous screen, without saving your changes.
</p>
<p>
<i><b>Hint:</b> If you would like to do real-time payment processing, we can help you set
up processing through CyberCash, Signio, authorize.net and most other services. <a href="mailto:info@akopia.com">Contact Akopia</a> for more information about any of these services.</i>
</p>
-wizard.email Wizard : Company E-mail Information Enter the email addresses to be used for information routing in the fields provided. This information will be entered into Interchange and populated in the Administration tool. The required fields are displayed in bold.<p>The following are descriptions of the fields displayed on the page:<p><table border=1 cellspacing=0 cellpadding=2 width=425><tr><td bgcolor="E0DCE0"><b>Field</b></td><td bgcolor="E0DCE0"><b>Definition</b></td></tr><tr><td>Orders sent to</td><td>The email address where customer orders will be sent. This field has been pre-populated for your convenience. If the email address displayed is not correct, type the correct email address in the field.</td></tr><tr><td>Info requests sent to</td><td>The email address where visitors to your site can send inquiries for more information. This field has been pre-populated for your convenience. If the email address displayed is not correct, type the correct email address in the field. The sales organization is typically the recipient of requests for more information.</td></tr><tr><td>Service requests sent to</td><td>The email address where visitors to your site can send customer service inquiries. This field has been pre-populated for your convenience. If the email address displayed is not correct, type the correct email address in the field. The customer service organization is typically the recipient of service requests.</td></tr></table><p>The Wizard <b>Checklist</b> is displayed on the left. From the checklist you can access any of the Wizard screens. Click <b>Save current settings</b> to save your work to this point.
-404 Help Topic Not Found <p>
The help topic you requested does not exist.
Explore the list of help topics below to find the information you are looking for.
</p>
~~HELP_TOPICS~~
-create.new.affiliate Create New Affiliate <p>
The <b>Create New Affiliate</b> page allows you to create an Affiliate. The following is a list of attributes that you can specify.
<p>
<h2>Functions</h2>
<b>Affiliate ID</b><br>
This field will contain the text "new".
<p></p>
<p>
<b>Affiliate Name</b><br>
This field contains the name of the Affiliate you are creating.
</p>
<p> <b>Campaigns</b><br>
This field is used to track traffic from advertising campaigns.
</p>
<p> <b>Coupon_amount</b><br>
This field is used to enter the coupon discount amount to be applied to a purchase made by the Affiliate you are creating.
<p>
<b>Join Date</b><br>
The value in this field can be used to keep track of when the Affiliate signed with you.
</p>
<p>
<b>URL</b><br>
The value in this field is used to direct visitors coming from the Affiliate you are creating to your home page or a page designed specifically for visitors from that Affiliate's site. <br>
This should <i>not</i> be the URL of the Affiliate's home site.
</p>
<p> <b>Timeout Delay</b><br>
The value in this field is used to specify the amount of time a customer has to place an order and still give the Affiliate credit for it. If the customer goes over this amount of time, the Affiliate doesn't get credit for the customer visit. The timeout delay is measured in seconds, with the value of 0 (zero) disabling it. It is recommended that you use a value in the thousands to be sure the customer has enough time to shop.
<p>
<b>OK</b><br>
To commit your changes, click <b>OK</b>.
<i><b>Hint:</b> Using the browser's back button to exit the screen will not commit the changes you have made. </i>
<p>
<b>Cancel</b><br>
To abandon the changes you have made, click this button.
-item.edit Items: Edit/Create <p>
The <b>Items: Edit/Create</b> page allows you to create or edit an item by filling in it's fields.
Common fields include <b>Short Description</b>, <b>Long Description</b>, and <b>Image</b>, that are used when displaying an item on a catalog page, and <b>Product Price</b> and <b>Weight in Pounds</b>, that are used when calculating charges in the shopping basket.
</p>
<p>
The <b>Category</b> field can be used to select which category pages the item
will appear on. Multiple categories can be selected. For more control
of product categories, choose <b>Site Layout</b> from the quicklinks menu.
</p>
<p>
The <b>meta</b> link, which is only visible to the Site Administrator or Super User, is displayed below each field name. This link allows the Site Administrator or Super User to change the parameters for each field. For more information on <b>meta</b> links, see the <a href="flex.meta.html">Meta Field Information</a> page.
</p>
-shipping Shipping <p>
You can give your customers as many different shipping options as you want.
Shipping by weight, quantity, price, and volume are available, as well as
automatic lookup in UPS shipping rate databases.
</p>
<p>
You can create new methods, edit existing methods, configure pricing levels
for non-UPS based shipping, or delete existing methods from this screen.
</p>
+prefs.main Preferences <p>
This feature allows you to change the colors of the administration interface. Changing the color does not affect system functionality.
</p>
pricing Pricing <p>
The <b>Pricing</b> page is used to specify special pricing or quantity pricing. The fields displayed on this page is dependent on how the Site Administrator or Super User set up Interchange Administor and how your special or quantity pricing is calculated. For assistance with completing these pages, see your Site Administrator or Super User.
<p>
<h2>Functions</h2>
<b>OK</b><br>
After entering the necessary special or quantity pricing parameters, click <b>OK</b> to commit your changes. The <a href="something.html">Edit Item</a> page is displayed.
<p>
<b>Cancel</b><br>
To abandon entered changes without committing them, click <b>Cancel</b>. The <a href="something.html">Edit Item</a> page is displayed.
<p>
<b>Auto-Export</b><br>
Click this checkbox to enable the Auto-Export feature. The Auto-Export feature exports the changes you are committing to the tables described on these pages to the original flat text file. This feature allows you to keep your original files up-to-date and portable. However, while this feature may not hinder the system's performance when exporting a small table, exporting a large table may slow your system.
<p>
<h2>Features</h2>
The <b>meta</b> link, which is only visible to the Site Administrator or Super User, is displayed below each field name. This link allows the Site Administrator or Super User to change the parameters for each field. For more information on <b>meta</b> links, see the <a href="flex.meta.html">Meta Field Information</a> page.
+promotion Promotion <p>
The <b>Promotion</b> page is used to exercise the Promotion marketing feature. The Cross Sell feature allows you to display an item or items that compliment the item the customer has chosen and give the customer the choice of adding the complimentary item. For example, you may choose to display a paintbrush as a Cross Sell item to a customer that is purchasing paint.
<!--reference the page where the graphics are posted or parameters for display are set-->
<p>
<h2>Functions</h2>
<b>OK</b><br>
After completing the necessary Cross Sell information, click <b>OK</b> to export the Cross Sell connection.<!--what is the result of this action?-->
<p>
<b>Cancel</b><br>
To abandon the Cross Sell task you started without saving the change.
<p>
<b>Auto-Export</b><br>
Click this checkbox to enable the Auto-Export feature. The Auto-Export feature exports the changes you are committing to the tables described on these pages to the original flat text file. This feature allows you to keep your original files up-to-date and portable. However, while this feature may not hinder the system's performance when exporting a small table, exporting a large table may slow your system.
<p>
<h2>Features</h2>
The <b>meta</b> link, which is only visible to the Site Administrator or Super User, is displayed below each field name. This link allows the Site Administrator or Super User to change the parameters for each field. For more information on <b>meta</b> links, see the <a href="flex.meta.html">Meta Field Information</a> page.
+reconfig Reconfigure <p>
<b>Apply Changes</b> commits all changes that the Interchange Administration Site doesn't commit automatically. It is good practice to occasionally click <b>Apply Changes</b> when administering the Administration Site to make sure your changes are implemented.
</p>
+regen.main Regenerate <p>
After you have made changes to your Interchange site's data, you must use the <b>Regenerate</b> function to create (or re-create) your site's pages based on the new data. Until you regenerate, your Web site will not be changed as you work with Interchange.
</p>
+search_builder Search Builder <p>
The <b>Search Builder</b> page allows you to generate very complex reports on the database, or to help in the construction of ITL templates.
</p>
<p>
Select a <b>Base Table</b> to be the foundation for the report. Specify the maximum number of rows to be returned at once, and if you want the table to show only
unique entries.
</p>
<p>
The <b>Search Filter</b> then allows you to narrow down the list of rows returned
by matching columns of the table based on various criteria. Up to three
separate conditions can be specified. The returned rows must match all criteria.
</p>
<p>
Finally, select any sorting options you wish the results to be displayed by and decide the list of columns you want returned.
</p>
<p>
Click <b>Run</b> to run the search immediately and display the results.
<b>Generate Definition</b> will display an ITL tag which can be placed in a template
and which will return the results when executed.
</p>
+shipping Shipping <p>
You can give your customers as many different shipping options as you want.
Shipping by weight, quantity, price, and volume are available, as well as
automatic lookup in UPS shipping rate databases.
</p>
<p>
You can create new methods, edit existing methods, configure pricing levels
for non-UPS based shipping, or delete existing methods from this screen.
</p>
+shipping.data Shipping: Edit Data Table <p>
Once you've created a shipping method, you can fine tune the calculation
based on the weight of the order. Use the "+" button to add new ranges
and specify which ranges will apply to which calculations. Choose a type
of calculation to perform for each weight range, such as a number (flat charge),
formula (arbitrary calculation based on the weight), UPS lookup (internal
or via their Web site), multiply by (simple rate), or select <b>Message</b> to
generate an error message. If you specify a formula, you can include the
string "@@TOTAL@@" to represent the total weight of the order. For example,
"8 + @@TOTAL@@ + 2.50".
</p>
shipping.edit Shipping: Create/Edit <p>
<b>Name of this Method</b><br>
This is the internal name used for the shipping method, and should be a single word, like "air1." The order you enter the shipping methods is the order in which they will be presented to the customer. We recommend starting with the most common or least expensive method first. Here are some commonly used names for various shipping methods: standard ground shipping, standard flat rate shipping, three day shipping, second day shipping, next day air shipping, International shipping, U.S. Mail shipping, etc.
</p>
<p>
<b>Label for this Method</b><br>
The name you specify here will appear in the list of available shipping
methods shown to shoppers when they place orders. Take care to make
them easy-to-understand. The name you enter should reflect the shipping
algorithm you choose.
</p>
<p>
<b>Calculate Based on this Algorithm</b></br>
</p>
<p>
<ul>
<li>
<A href="shipping.price.html">Standard Shipping by Price:</a>
shipping total based on the total price of the order. This can also be
used to calculate a flat shipping price ($0 - infinity = $4.95) or a flat
rate with big orders shipped free ($0 - 500 = $4.95 and $500 - infinity =
free). The shipping charge can either be a flat charge or a percentage.
<li>
<a href="shipping.weight.html">Standard Shipping by Weight:</a>
calculates shipping by total weight. To use this method, you must enter a
weight for each item in your inventory. You can use any unit of measure
you wish as long as you are consistent: if you enter your item prices
in grams then configure shipping with pounds, your customers will not
be happy when they are quoted huge shipping rates.
<li>
<a href="shipping.quantity.html">Standard by Quantity:</a>
charges an amount according to how many items are ordered.
<li>
<a href="shipping.ups.html">UPS Zones-Based:</a>
Interchange is pre-configured with UPS zones tables for ground, three day
select, second day air, and next day air. If you require zones support
for Fedex, DHL, or USPS, please <
m">contact Akopia</a>.
</ul>
</p>
<p>
<b>Minimum Shipping Charge</b><br>
The amount you enter into this field will be the minimum allowed quote for
that particular shipping method. For example, if you want to charge no less
than $4.50 for ground shipping, enter "4.5" or "4.50" into this field.
Remember, you must set the minimum for each of your shipping methods, if you
want each to have a minimum charge.
</p>
<p>
<a name="additional"><b>Additional Shipping Calculation</b><br></a>
Here, you can enter any additional calculation you would like to apply to
the shipping calculation. This is especially useful for the zones-based
shipping calculations. Very few merchants pay the full rates for UPS
shipping, and some merchants want to slightly mark up their shipping
charges for handling. Other merchants may want to discount them slightly
to promote goodwill. This feature would allow you to discount your UPS
ground shipping quote by 25% to match your discount, then add $2.50
to cover a packaging and handling charge. Tip: if you're currently not
receiving a discount on your shipping rates, call UPS and ask for one.
</p>
<p>
Although the shipping calculation engine that comes with Interchange is
flexible and versatile, we realized that it still might not meet the
needs of all users. We decided to include a feature that would allow
Interchange administrators to modify the shipping charges that were
calculated in a simple way. The "additional shipping calculation" field
can be used to enter a mathematical expression that will be applied to
a calculated shipping charge. Here's how it works.
</p>
<p>
Every shipping method needs to have a shipping algorithm
associated with it. The algorithm could be "shipping by total cost,"
"shipping by quantity," or even a UPS weight based calculation.
The administrator will typically have the option to set up several
parameters that the algorithm uses. The administrator then names
the shipping method whatever he/she wants. All available shipping
methods are presented to the customer when
sen, a shipping charge is calculated.
</p>
<p>
The shipping algorithm calculates a "base shipping charge." That charge
may be modified by using the "additional shipping calculation" field.
</p>
<p>
Let's look at an example. Suppose that I want to implement a UPS based
shipping system. I create three shipping methods, and call them "Regular",
"Second Day Air," and "Next Day Air." Each method uses a corresponding UPS
algorithm that calculates the shipping charge based on the weight of the
customer's order, the UPS rate and zone tables. Easy enough, but suppose
that I have a special deal with UPS that gives me a 10 percent discount off the
standard rate tables, because I ship a large volume of goods. Obviously,
I don't want have to manually edit the rate tables. Instead I can use
the "additional shipping calculation" field to automatically apply a 10%
discount to whatever the UPS rate would have calculated.
</p>
<p>
In the "additional shipping calculation" field, I would enter the following:
</p>
<p>
x = x - (x * .1)
</p>
<p>
The character "x" represents the shipping charge as calculated by the
UPS algorithm. Interchange will automatically apply the above formula
to the shipping charge, and charge the customer the new total.
</p>
<p>
Here's how it would work for a real customer. Customer A enters the site
and orders 50 lbs. of goods to be shipped to Alaska by "Next Day Air." The
UPS algorithm determines that the cost would be $400. Interchange thensubstitutes 400 for "x" in your formula:
</p>
<p>
new charge = 400 - (400 * .1)
</p>
<p>
The resultant charge is 400 - 40 dollars, or $360.
</p>
<p>
Of course, we could have also written the formula this way:
</p>
<p>
x = x * .9
</p>
<p>
which would have had exactly the same effect. If you're a Perl
guru, you'll be happy to know that you could also have written:
</p>
<p>
x *= .9
</p>
<p>
It is important to note that you must specify some sort of equality
on the left hand side of the equation.
</p>
<p>
You can enter any valid mathematical expression and you ca
need to. Interchange validates the
expression you enter, so if you make a mistake it will inform you,
and the additional shipping calculation field will not be updated.
</p>
<p>
All invalid characters are stripped out before Interchange processes
your equation. This means that if you type in something like:
</p>
<p>
x = x * y + 300
</p>
<p>
the "y" will be removed, and Interchange will see:
</p><p>
x = x * + 300
</p>
<p>
which is an invalid equation.
</p>
<p>
Valid expressions include (but are not limited to) such things as:
<pre>
x = x + 5
x = x + 5 + (x * .1)
x = x - .75
x += 2
x -= (x * .25)
</pre>
etc.
</p>
<p>
As you can see, there's more than one way to enter any given expression.
</p>
<p>
Valid characters are x+-/*.()0123456789
</p>
<p>
If for any reason a shipping algorithm fails, the additional shipping
calculation will not be executed.
</p>
-faq Frequently Asked Questions <p> <i><b>Does Interchange do real-time credit card processing?</b></i> <br>
No, but it does interface with real-time payment processing systems, along with transaction management and order management systems of all kinds. Please <a href="mailto:info@akopia.com">contact Akopia</a> for more information.
</p>
<p> <i><b>Interchange is open source, but I don't know how to do computer programming.
What can I do if I want to add features?</b></i> <br>
Akopia's consulting group provides an array of installation, customization, and custom programming services. Contact them at <a href="mailto:consulting@akopia.com">consulting@akopia.com</a>.
</p>
-wizard.launch Wizard : Launch <p><font size=2>Set your preferences for taking your site live. This is the final step before your site is publicly accessible. The required fields are displayed in bold.</p><p>The table below describes the options displayed on the Launch page.<p><table border=1 cellspacing=0 cellpadding=2 width=425><tr><td bgcolor="E0DCE0"><font size=2><b>Field</b></td><td bgcolor="E0DCE0"><font size=2><b>Description</b></td></tr><tr><td><font size=2>Delete sample order data</td><td><font size=2>Choose <b>Yes</b> to purge the database of sample order data. It is strongly recommended that you do this before going live.</td></tr><tr><td><font size=2>Deletesample user data</td><td><font size=2>Choose <b>Yes</b> to purge the database of sample user data. It is strongly recommended that you do this before going live.</td></tr><tr><td><font size=2>Starting order number</td><td><font size=2>Enter the order number that should be used in taking the first customer order. The default is 01000.</td></tr><tr><td><font size=2>Enable Secure (SSL)</td><td><font size=2>Choose <b>Yes</b> to enable your SSL certificate. This is strongly recommended if you are processing payment online.</td></tr><tr><td><font size=2>Launch</td><td><font size=2>Click to launch your site.</td></tr></table>
-merchandising Merchandising <p>
The <b>Merchandising</b> page allows you to edit how the product items displayed are promoted. For example, you might notice the trend that customers who buy hammers also buy nails. Because of this, you might decide to use the cross-sell feature on this page to have nails displayed on the same page as hammers. You also might want to offer a discount to customers purchasing a certain quantity of one item.
<p>
<h2>Features</h2>
<b>Limit with search</b><br>
Type the paramater by which you want to search the Item list. For example, you can type a portion of a SKU to perform a search for items containing that value. Only the items containing the search parameter will be displayed.
<p>
<h2>Functions</h2>
You can sort the item directory by clicking the heading of the column by which you want to sort. For example, to sort by SKU, click the <b>SKU</b> heading. This displays the orders by SKU in ascending or decending order. To sort in reverse order, click the <b>SKU</b> heading again.
Click a value listed in one of the following columns to access specific information about that value:<p>
<ul>
<li>SKU-click a SKU value in this column to access the <b>Edit Item</b> page for that item.
<li>Qty pricing-click the value in this column to access the <b>Edit Item</b> page for that item.
<li>Up-sell-click the value in this column to access the <b>Up-sell</b> page for that item.
<li>Cross-sell-click the value in this column to access the <b>Cross-sell</b> page for that item.
<li>Promotion-click the value in this column to access the <b>Feature</b> page for that item.
</ul>
-change.password Change Password <p>
The <b>Change Password</b> page allows you to change the password for a user. This should typically be done by the Site Administrator or super user.
<p>
<h2>Functions</h2>
<b>New Password</b><br>
Enter the new password.
<p>
<b>Verify Password</b><br>
Confirm the new password.
<p>
<b>OK</b><br>
To commit the new password, click this button.
<p>
<b>OK</b><br>
To abandon the changes you made, click this button.
</p>
-edit.item Edit/Create Item <p> The <b>Edit Item</b> page is used to create or edit a product item. The fields
displayed on this page are dependant on how the page was set up by your Site
Administrator or Super User. For more information on the fields displayed on
this page, see your Site Administrator or Super User.
<p>
<h2>Function</h2>
<b>OK</b><br>
After completing the necessary information on the page, click <b>OK</b> to commit your changes/additions. The page is refreshed and the changes are committed.
<p>
<b>Cancel</b><br>
Abandon entered changes without committing them. The page is refreshed, displaying only the original information.
<p> <b>Auto-Export</b><br>
Click this checkbox to enable the Auto-Export feature. The Auto-Export feature
exports the changes you are committing to the tables described on these pages
to the original flat text file. This feature allows you to keep your original
files up-to-date and portable. However, while this feature may not hinder the
system's performance when exporting a small table, exporting a large table may
slow your system.
<p>
<h2>Features</h2>
The <b>meta</b> link, which is only visible to the Site Administrator or Super
User, is displayed below each field name. This link allows the Site Administrator
or Super User to change the parameters for each field. For more information on
<b>meta</b> links, see the <a href="flex.meta.html">Meta Field Information</a> page.
-layout.main Layout Manager <p>
The site layout manager is the interface that a designer or product manager uses to assign products to a page, manage elements on the page such as links, do merchandizing like specifying featured products, and rearranging elements on the pages.
</p>
<p>
When you enter this page, you see first a listing of the main pages linked on the front page of your Web site and other elements on that page such as featured products or navigation bars. We call these the "children" of the front page. If you click on the name of one of these children, the list will expand to show you the children of that element, and so on. Next to the name of each child is a radio button. Select the button of the element you want to work with before clicking any of the buttons at the bottom of the page.
</p>
<p>
<b>Add as Child</b><br>
You can add three types of children to any particular element: items, groups, and pages. The pull-down menus below the list display the available children. To add children to a page, first click the radio button next to that page's name in the list, then select either a group, page, or item from the pull-down menus. Click on the "Add as Child" button. You should see the new child appear under its parent automatically.
</p>
<p>
<img src="images/layout.add.child.jpg" alt="" width="350" height="254">
</p>
<p>
<b>Rearrange Children</b><br>
The order that the children appear in this list is important, as it determines the order in which they will be displayed on the site. The "Rearrange Children" feature lets you place them in the correct order. First, click the radio button next to the parent whose children you want to arrange, then click on the "Rearrange Children" button. That will take you to a new screen with a list of all the children in order. Select each child that you want to move, then click the "up" or "down." Continue this process until they're in the right order, then click "ok." Clicking "cancel" will take you back without making any changes, even if you've already rear
d some of your products.
</p>
<p>
<b>Move Some Children/Move All Children</b><br>
If you want to move children out from under one parent over to another, these two functions will do that. "Move Some Children" allows you to choose which of the children in the list you would like to move, then asks you which new parent to assign them under. "Move All Children" simply moves them all. Below, see the "Move Children" screen. Notice you can "control click" to select more than one child to move.
</p>
<p>
<img src="images/layout.move.child.jpg" alt="" width="200" height="210">
</p>
<p>
<b>Hide All</b><br>
Just as clicking on the name of an element will make its children appear, clicking on the name again will make them disappear. If you have a lot of different parents' children showing, the "Hide All" button will make them all disappear.
</p>
<p>
<b>Delete</b><br>
The delete button allows you to remove a child from the parent. Select the child you would like to remove by clicking the button next to its name, then click on the delete button.
</p>
-upsell Up-Sell <p>
The <b>Up-Sell</b> page is used to exercise the Up-Sell marketing feature. The Up-Sell feature allows you to display an item of better quality and/or price than the one the customer has chosen and give the customer the choice of upgrading to this item. For example, you may choose to display a deluxe toolbox to a customer that is purchasing a standard toolbox.
<!--reference the page where the graphics are posted or parameters for display are set-->
<p>
<h2>Functions</h2>
<b>OK</b><br>
After choosing the item you want to up-sell to from the <b>Up-sell_to</b> list, click <b>OK</b> to export the Up-Sell connection.<!--what is the result of this action?-->
<p>
<b>Cancel</b><br>
To abandon the Up-Sell task you started without saving the change.
<p>
<b>Auto-Export</b><br>
Click this checkbox to enable the Auto-Export feature. The Auto-Export feature exports the changes you are committing to the tables described on these pages to the original flat text file. This feature allows you to keep your original files up-to-date and portable. However, while this feature may not hinder the system's performance when exporting a small table, exporting a large table may slow your system.
<p>
<h2>Features</h2>
The <b>meta</b> link, which is only visible to the Site Administrator or Super User, is displayed below each field name. This link allows the Site Administrator or Super User to change the parameters for each field. For more information on <b>meta</b> links, see the <a href="flex.meta.html">Meta Field Information</a> page.
-order_entry.main Enter Order <p>
This section allows you to manually enter an order for a new or existing customer.
<p>
<h2>Functions</h2>
<p>
<b>Enter/Recalculate</b><br>
Click this button after entering the SKU, description, and quantity of the item to be ordered. The order information is displayed.<br> <i><b>Hint:</b> To remove this item from the order, click the <b>Remove</b> checkbox beside the item.</i> <i>When entering an item, only the SKU number is necessary. The description field can be left blank. If the quantity field is left blank, the system defaults to one item.</i>
<p>
<b>Find</b><br>
After completing all or a portion of the <b>Shipping Address</b> information, click this button to display a list of possible customers. For instance, entering only <b>CA</b> in the <b>State</b> field before clicking <b>Find</b> will display all customers shipping to California. From the displayed customer list, highlight the desired customer and click <b>Select</b>. The fields in the <b>Shipping Address</b> area are automatically populated with the desired customer's information.
<p>
<b>Clear</b><br>
Click this button to clear all shipping address information.
<p>
<b>Place Order</b><br>
After entering the necessary payment, billing address, and email preference information; click this button to place the order.
<p>
<h2>Features</h2>
<p>
Use the <b>Gift Note</b> or <b>Special Instructions</b> field to enter additional information.
+shipping.main Shipping Options <p>
The <b>Shipping Options</b> page allows you to specify and configure the shipping methods and costs for your online store. Before you begin here, you need to decide how you want to charge for shipping. We support all the most common shipping options:
</p>
<p>
<a href="shipping.price.html">By Price:</a> shipping total based on the total price of the order. This can also be used to calculate a flat shipping price ($0 - infinity = $4.95) or a flat rate with big orders shipped free ($0 - 500 = $4.95 and $500 - infinity = free). The shipping charge can either be a flat charge or a percentage.
</p>
<p>
<a href="shipping.weight.html">Standard by Weight: </a> calculates shipping by total weight with no regard to zones. To use this method, you must enter a weight for each item in your inventory. You can use any unit of measure you wish as long as you are consistent. If you enter your item prices in grams, then configure shipping with pounds, your customers will not be happy when they are quoted huge shipping rates.
</p>
<p>
<a href="shipping.quantity.html">Standard by Quantity:</a> this is identical to shipping by price, but the shipping charge will be multiplied by the total number of items ordered.
</p>
<p>
<a href="shipping.ups.html">UPS Zones-Based:</a> Interchange is pre-configured with UPS zones tables for ground, three day select, second day air, and next day air.
</p>
<p>
If you require zones support for Fedex, DHL, or USPS, please <a href="mailto:info@akopia.com">contact Akopia</a>.
</p>
<p>
Keep in mind that you can choose a variety of these shipping methods, giving the customer a choice. Many companies use flat shipping for ground orders and use UPS zones shipping for second day and next day orders.
</p>
<p>
<b>Create New Method</b><br>
Once you've decided what shipping options you are going to offer your customers, click the "Create New Method" button and configure each option. You will be able to name and configure each option from the "Create New Method" screen. See
</p>
<p>
<b><a href="shipping.edit.html">Edit Method</a></b><br>
Select one of the currently existing shipping methods from the list and click "edit method" to change its name, enable or disable it, change the calculation method, or set a minimum charge. The "edit method" button takes you to the same screen as "create new method" button, but already filled out. To edit the individual charges for different prices or weights, use the "edit data table" function.
</p>
<p><b><a href="shipping.data.html">Edit Data Table</a></b><br>
The process of creating a new method is usually a two-step process. In the first step, you name the shipping method and devide on a calculation algorithm (by price, by weight/zone, etc). The second stage involves configuring your chosen method. The "edit data table" function allows you to change the particular settings for an already-created method.
</p>
<p>
<b>Delete Method</b><br>
Select a method from the list and click on this button to delete it. You will be asked to confirm your choice. If you choose yes, it will be deleted permanently. If you merely want to temporarily disable a particular shipping method and remove it from the list your customers see, edit the method and un-check the box next to "enable this method." That way, if you want to enable it later, you won't have to re-configure it.
</p>
+shipping.price Shipping by Price <p>
Shipping total based on the total price of the order. This can also be used to calculate a flat shipping price ($0 - infinity = $4.95) or a flat rate with big orders shipped free ($0 - 500 = $4.95 and $500 - infinity = free). The shipping charge can either be a flat charge or a percentage.
</p>
<p>
To begin, click on the plus sign once for each range you would like to enter. You can add or subtract more fields at any time, so don't worry. <i><b>Hint</b>: On some browsers, when you click the plus sign more than once, it won't register. In that case, click the "reload" button on your browser to make more fields appear. The first range will automatically start with zero and the last range will automatically end with infinity.</i><p> If you want one flat rate charge, only create one range, from zero to infinity and give it a charge amount. Otherwise, create all the ranges you need and give each range an amount. In case you would like to charge a percentage of the order total as the shipping and handling charge, you have the option of specifying a percentage for any of the ranges. Note: Interchange automatically bases the beginning point of each range on the end of the last. If you end one range at $50.00, the next range will begin at $50.01.
</p>
+shipping.quantity Shipping by Quantity <p>
Charges an amount according to how many items are ordered. This rate is especially suited for stores that sell all items which are similar in weight and size, such as CDs or DVDs.
</p>
<p>
To begin, click on the plus sign once for each range you would like to enter. You can add or subtract more fields at any time, so don't worry. <i><b>Hint</b>: On some browsers, when you click the plus sign more than once, it won't register. In that case, click the "reload" button on your browser to make more fields appear.</i>
</p>
<p>
The first range will automatically start with zero and the last range will automatically end with infinity. Note: Interchange automatically bases the beginning point of each range on the end of the last. If you end one range at five items, the next range will begin at six.
</p>
+shipping.ups UPS Zones-Based Shipping <p>
Interchange is pre-configured with UPS zones tables for Ground, Three Day Select, Second Day Air, Second Day Air AM, Next Day Air Saver, and Next Dday Air.
</p>
<p>
If you require zones support for FedEx, DHL, or USPS, please <a href="mailto:info@akopia.com">contact Akopia</a>.
</p>
<p>
There are no tables to configure if you select these options, but to use zones-based shipping, you need to enter the zip code of your shipping location. Interchange will automatically generate zones charts based on your zip code.
</p>
<p>
[Coming Soon: Information on how to enter your zip code]
</p>
+shipping.weight Shipping by Weight <p>
<b>Standard Shipping by Weight:</b> This calculates shipping by total weight with no regard to zones. Weight-based shipping with zones are marked by the company whose zones the algorithm calculates by, i.e., <a href="shipping.ups.html">UPS</a>. To use this method, you must enter a weight for each item in your inventory.
</p>
<p>
<blockquote>
<i>Note: You can use any unit of measure you wish as long as you are consistent: if you enter your item prices in grams then configure shipping with pounds, your customers will not be happy when they are quoted huge shipping rates.</i>
</blockquote>
</p>
<p>
To begin, click on the plus sign once for each range you would like to enter. You can add or subtract more fields at any time, so don't worry. <i><b>Hint</b>: on some browsers, when you click the plus sign more than once, it won't register. In that case, click the "reload" button on your browser to make more fields appear. The first range will automatically start with zero and the last range will automatically end with infinity.</i>
<p>
Create all the ranges you need and give each range a charge amount. In case you would like to charge a percentage of the order total as the shipping and handling charge, you have the option of specifying a percentage for any of the ranges. Note: Interchange automatically bases the beginning point of each range on the end of the last. If you end one range at 5 kg, the next range will begin at 5.00001 kg.
</p>
stats.order Order Statistics <p>
The <b>Order Statistics</b> feature helps you see at a glance how your store is doing. You can view your stats for any day or range of days. In addition to menus that allow you to pick a particular range of days, we have shortcut buttons that show you the stats for yesterday, the last seven days, and the last 30 days. You can either view stats as an overview or see the individual orders for that time period. By default, it will show you yesterday's stats.
</p>
-flex.meta Meta information edit <p> The <b>Meta Information Edit</b> page allows a user to edit the parameters
of a displayed field. For example, if you click the <b>meta</b> link for the
<b>Last Name</b> field, the <b>Meta Information Edit</b> page is displayed for
that field. Editing the parameters in the <b>Meta Information Edit</b> page
effects the values that will be accepted for the <b>Last Name</b> field. You
could specify the width of this field, meaning the number of characters accepted,
as 30 using the <b>Meta Information Edit</b> page. This would limit the length
of any value entered in the <b>Last Name</b> field to 30 characters.
<p> The <b>Meta Information Edit</b> field is displayed only to Super Users. Exercise
caution when editing this page.
<p><h2>Features</h2>
<b>OK</b><br>
After entering the necessary values, click <b>OK</b>. The following is a description of some of the displayed fields.
<ul>
<p>
<li>"Widget Type" specifies the HTML INPUT tag type to use when displaying the
field in, say, the item editor.
<p></p>
<p>
<li>"Width" and "Height" only apply to some of the "Widget Type" options, for
instance the "Textarea" widget.
<p></p>
<p>
<li>"label" is displayed instead of the internal column name. For example, the
"category" column of the "products" table might have a label of "Product Category."
<p></p>
<p>
<li>"help" is displayed below the column label, and helps describe the purpose of
the field to the user.
<p></p>
<p>
<li>"help url" can be used to link to a page giving more information on the field.
<p></p>
<p>
<li>"lookup" can be used when a field is acting like a foreign key into another
table. In that case, you'll probably want to use some sort of select box as
the widget type, and if you want to reference multiple rows in the destination
table, you'll probably want to use a multi-select box, with "colons_to_null"
as the pre_filter, and "::" as the lookup_exclude.
<p></p>
<p>
<li>"filter" and "pre_filter" can be
for that field
or data read from that field, respectively.
<p></p>
</ul>
-glossary.main Glossary <p>
<b>Akopia</b><br>
Developer of Interchange, open source e-commerce storefront management system.
Akopia also offers a wide array of e-commerce consulting services. For more
information please see <a href="http://www.akopia.com/">Akopia's Web page</a>.
</p>
<p>
<b>Algorithm</b><br> A step-by-step problem-solving procedure, especially an established, recursive computational procedure for solving a problem in a finite number of steps.
</p>
<p>
<b>AOL</b><br> The largest Internet service provider in the United States.
</p>
<p>
<b>Apache</b><br> The most widely used web server. One of the most successful free software packages.
</p>
<p>
<b>API</b><br> Application Program Interface. A set of routines, protocols, and tools for building software applications. A good API makes it easier to develop a program by providing many building blocks for the programmer, who puts them together. Although APIs are designed for programmers, they are ultimately good for users because they help all programs using a common API will have similar interfaces.
</p>
<p> <b>Archiving Orders</b><br>
A process through which you can remove your orders from immediate view on your management administrator without deleting the record.
</p>
<p>
<b>Browser</b><br> Short for Web browser, a software application used to locate and display Web pages. You're likely familiar with one if you're reading this, right?
</p>
<p> <b>Business to Business</b><br>
Also seen as B2B. A B2B company offers goods and services to other businesses.
</p>
<p> <b>Business to Consumer</b><br>
Also seen as B2C. These are companies that offer goods and services to consumers.
</p>
<p>
<b>Cell</b><br> An area in which data is entered.
</p>
<p>
<b>CGI</b><br> Common Gateway Interface. A specification for transferring information between a World Wide Web server and a program. A CGI program is any program designed to accept and return data that conforms to the CGI specification. The program could be written in any programming languag
re a common way for Web servers to interact dynamically with users.
</p>
<p>
<b>Cookie</b><br> A chunk of information transmitted to a Web browser by a Web server. The browser stores the information on the user's local computer (either in memory or on the hard disk). The message is then sent back to the server each time the browser requests a page from the server. The main purpose of cookies is to identify users and possibly prepare customized Web pages for them.
</p>
<p> <b>E-Commerce</b><br>
The specific business of selling goods and services via the Internet.
</p>
<p> <b>Electronic Catalog</b><br>
An Internet site that offers goods and services for sale. Much like the magazine catalogs.
</p>
<p>
<b>Embedded Perl</b><br> When the programming language Perl can be found within the context of another language, it is said that it is embedded. Interchange supports embedding Perl right into its HTML templates.
</p>
<p>
<b>FAQ</b><br> Frequently Asked Questions. (Usually including the answers to those questions!)
</p>
<p>
<b>HTML</b><br> Abbreviation for Hypertext Markup Language. The language of codes used to format plain text, most often for viewing in a web browser.
</p>
<p>
<b>HTTP</b><br>
Abbreviation for Hypertext Transfer Protocol. The primary mechanism (or protocol)
of transfering information over the Internet from a Web server to a user's computer.
</p>
<p>
<b>httpd</b><br>
Hypertext transfer protocol daemon: a Web server. </p>
<p>
<b>Internationalization</b><br> (Also known as I18N.) The adaptation of Interchange for multiple languages and currencies.
</p>
<p>
<b>Item</b><br> A single product in your on-line store.
</p>
<p>
<b>Java</b><br> A general purpose programming language used both on servers and clients (Web browsers).
</p>
<p>
<b>JavaScript</b><br> A scripting language developed by Netscape to enable Web authors to design interactive sites. Although it shares many of the features and structures of the full Java language, it was developed independently.
</p>
<p>
<b>Interchange
e flagship e-commerce platform developed by Akopia. Interchange is an open
source program that has thousands of implementations throughout the world. For
more information on Interchange please visit the <a href="http://www.akopia.com/">Akopia
Web site</a>. </p>
<p>
<b>Linux</b><br>
The UNIX-like kernel developed by Linus Torvalds, which forms the basis of many
open source computer operating systems. </p>
<p>
<b>Matrix</b><br> A table of all the possible combinations of options available for an item.
</p>
<p>
<b>Netscape Navigator (or Communicator)</b><br> A popular web browser.
</p>
<p>
<b>Open Source</b><br> Software with source code that is freely viewed and altered by its users. Often the software is released under the license of the GNU General Public License which requires further distribution be free of cost or usage restrictions, and that program source code be made available.
</p>
<p>
<b>Perl</b><br> Amazing, powerful, flexible, expressive, free programming language by Larry Wall. See <a href="http://www.perl.com/">perl.com</a> for all sorts of information on Perl.
</p>
<p> <b>Product Matrix</b><br>
The complete list of possible descriptors for a product. This includes size, color, etc.
</p>
<p>
<b>Regeneration</b><br> After making changes to a site or page, commanding Interchange to regenerate means to update the changes for general use.
</p>
<p>
<b>Search Engine</b><br> A program that is designed to search through a database to answer queries.
</p>
<p> <b>Shipping Algorithm</b><br>
The equations used to calculate shipping costs.
</p>
<p>
<b>SKU</b><br> Stock Keeping Unit. A unique code associated with each product for inventory purposes.
</p>
<p>
<b>SQL</b><br> Structured Query Language. SQL is a standardized query language for requesting information from a database.
</p>
<p>
<b>SSL</b><br>
Secure Sockets Layer. A transport-layer technology, developed by Netscape, that
allows secure transactions among compliant browsers and Web servers. </p>
<p>
<b>Template</b><br> With
to Akopia's software, templates are pre-designed formats that a business can use to create a ready Interchange implementation.
</p>
<p> <b>Web Server</b><br>
The computer and/or software that delivers Internet information to the user's computer.
</p>
<p> <b>Zone-Based Shipping</b><br>
The calculation of shipping charges based on the region of destination.
</p>
-promotion Promotion <p>
The <b>Promotion</b> page is used to exercise the Promotion marketing feature. The Cross Sell feature allows you to display an item or items that compliment the item the customer has chosen and give the customer the choice of adding the complimentary item. For example, you may choose to display a paintbrush as a Cross Sell item to a customer that is purchasing paint.
<!--reference the page where the graphics are posted or parameters for display are set-->
<p>
<h2>Functions</h2>
<b>OK</b><br>
After completing the necessary Cross Sell information, click <b>OK</b> to export the Cross Sell connection.<!--what is the result of this action?-->
<p>
<b>Cancel</b><br>
To abandon the Cross Sell task you started without saving the change.
<p>
<b>Auto-Export</b><br>
Click this checkbox to enable the Auto-Export feature. The Auto-Export feature exports the changes you are committing to the tables described on these pages to the original flat text file. This feature allows you to keep your original files up-to-date and portable. However, while this feature may not hinder the system's performance when exporting a small table, exporting a large table may slow your system.
<p>
<h2>Features</h2>
The <b>meta</b> link, which is only visible to the Site Administrator or Super User, is displayed below each field name. This link allows the Site Administrator or Super User to change the parameters for each field. For more information on <b>meta</b> links, see the <a href="flex.meta.html">Meta Field Information</a> page.
-home Interchange Administration Tool Help <p>
The Interchange context-sensitive help system is easy to use.
Simply click the <b>Help</b> link in the upper right-hand section of
any page of the Interchange Administration Tool.
A small popup window will appear offering help for that page.</p>
<p><b>Using the Interchange Administration Site</b></p>
<p>Some shortcut functions are accessible on each page of the Interchange Administration Tool:</p>
<ul>
<li><b>Red Hat logo</b><br>
The <b>Red Hat</b> link is located in the upper left-hand and lower right-hand section of each page. Clicking this button takes you to the Red Hat web site.
<p>
<li><b>About</b><br>
The <b>About</b> link is located in the upper middle section of each page. Clicking this button takes you to the Interchange product web site, which has the most current Interchange information.
<p>
<li><b>Interchange</b><br>
The <b>Interchange</b> link is located in the bottom left-hand section of each page. Clicking this link takes you to the Interchange Developers Resource web site. There you will find up-to-date product information, documentation, mailing lists, services, and more.
<p>
<li><b>Store ID</b><br>
Your <b>Store ID</b> is located in the bottom left-hand section of each page. Clicking this link takes you to your store's web site. This allows you to instantly view site changes implemented through the Administration Tool.
<p>
<li><b>Tables</b><br>
The <b>Tables</b> link is located in the lower middle section of each page. Clicking this link takes you to the <b>Database Tables</b> page of the Interchange Administration Tool. This shortcut function allows you to quickly access table information.
<p>
<li><b>Quicklinks</b><br>
The <b>Quicklinks</b> link is located in the lower middle section of each page. Clicking this link displays a window containing shortcut links to commonly used pages in the Interchange Administration Tool.
<p>
<li><b>Apply Changes</b><br>
The <b>Apply Changes</b> link is located in the lower middle section of each page. Clicking t
anges.
<p>
<li><b>Log Out</b><br>
The <b>Log Out</b> link is located in the lower center section of each page. Clicking this link logs you out of the Administration Tool. You can log back in as a different user if you wish.
</ul>
<p>
Here are the available help topics:
</p>
~~HELP_TOPICS~~
-wizard.aboutus Wizard : About Us This page allows you to enter text to be displayed on your company's <b>About Us</b> page. The <b>About Us</b> page is typically used to provide background information on your company including location, contact information, and so on. <p> In the <b>Title</b> field, enter the title of your <b>About Us</b> page. The <b>Content</b> field has already been prepopulated with generic information that has been formatted in HTML. If you are unfamiliar with HTML, it is recommended that you leave the HTML coding in place and simply replace the existing text with text relating to your store. If you are familiar with using HTML, you can choose to delete the prepopulated text and construct this page using your own text and HTML coding.
-orderstats.view Statistics: View <p>
Statistics can be viewed in several levels of detail, showing overall
totals and breakdowns by various criteria.
</p>
stats.traffic Traffic Statistics <p>
The <b>Traffic Statistics</b> feature displays information about the visitors to your site. The interface is similar to that of the Order Statistics.
</p>
-gensql.main Direct SQL utility <p> The <b>Direct SQL Utility</b> should only be used by the Site Administrator
or Super User that is familiar with the utility. </p>
+survey.main Surveys and mailforms The Surveys editor can produce:<br>
<br>
<ul>
<li>Feedback forms</li>
<li>Other mailed forms</li>
<li>Surveys</li>
<li>Polls</li>
</ul>
There are some example forms provided with the Foundation demo. <br>
<br>
<h3>Edit an existing survey</h3>
Follow the link with the survey's name. You will see a list of
questions on the left, broken down into one or more areas. The areas
correspond to a screen -- all questions in the group will be presented
on one screen to the user.<br>
<br>
You should run the survey first to familiarize yourself with its flow -- there is a <span style="font-weight: bold;">(run)</span> link at the top of the editor content area.<br>
<br>
<h3>Create a new survey</h3>
To create a new survey, fill in its identifier in the box labeled <span style="font-weight: bold;">New survey name</span>. If you want to start it with the questions/fields from an already-existing survey, pull down the <span style="font-weight: bold;">Clone from</span> box to the name of the survey to duplicate. When you are ready, press the <span style="font-weight: bold;">Create</span> button.<br>
<br>
<h3>Access Survey Results</h3>
<br>
In the standard survey log output mode, each time a survey or mailform
is filled out the results are saved to a TAB-delimited file. You can
download this file and use it in a spreadsheet or other tool for
analysis.<br>
<br>
+survey.overall Survey/Poll/Mailform Creation <p> Questions in the survey are presented on the left, the general survey
parameters are in the form on the right. <br>
</p>
<h3>General tab</h3>
<dl>
<dt><b>Main Title</b></dt>
<dd>The title for the survey, used on intro page.<br>
<br>
</dd>
<dt><b>Display Type</b> </dt>
<dd> Selects one of several display types for the question.<br>
<br>
</dd>
<dt><b>Intro Text</b></dt>
<dd>Optional message to be displayed only on first page of form.<br>
</dd>
</dl>
<h3>Questions Tab</h3>
<dl>
<dt><b>Question Fields</b></dt>
<dd>This is where the questions for the form are defined. The format is
the same as Interchange page layout descriptions for the table editor:
<blockquote>
<pre>=Title of the page<br><br>field1<br>field2<br><br>=Title of the next page<br><br>field3<br>field4<br></pre>
</blockquote>
The field names determine which questions will be displayed on the left.
<br>
</dd>
</dl>
<h3>Display Page Tab</h3>
<dl>
<dt><b> Width specification for editor table</b></dt>
<dd>Pixels or other valid width definition for the form.<br>
<br>
</dd>
<dt><b> Width specification for label column</b></dt>
<dd>Pixels or other valid width definition for the label column, doesn't
apply if using the question-above answer-below format.<br>
</dd>
</dl>
<h3>HTML Classes Tab</h3>
<dl>
<dt><b>ALL</b></dt>
<dd>CSS class names for the various parts of the form.<br>
</dd>
</dl>
<h3>Output Tab</h3>
<dl>
<dt><b>Output Type</b></dt>
<dd>Which general type of output you desire.
<ul>
<li> Standard survey log -- outputs to a file in logs/survey directory,
named for the name of the survey/poll. </li>
<li> Automatic bounce to page -- uses the forward-to page, the forward-to
ext ra parameters, and the parameters collected via the form to create a URL
to bounce to . </li>
<li> none -- generates a template on the final page with
nk to a
page usi ng the URL as with Automatic bounce </li>
</ul>
<br>
</dd>
<dt><b>Forward-to page or URL</b></dt>
<dd>The URL or Interchange page you want to bounce or link to. If it is
to be internal to Interchange, just use the normal Interchange page specification
(i.e. ord/basket). For an external URL, supply the complete URL with http://.
<br>
<br>
</dd>
<dt><b>Forward-to extra parameters</b></dt>
<dd>Extra parameters besides those collected in the form. For example, you
might want to specify "mv_action=return" to make the collected values
stick in the user space.<br>
<br>
Entered one per line, in key=value format.<br>
</dd>
</dl>
<br>
+table.searchreplace Database: Search and Replace This feature allows you to mass-change a field in the database.
<P>
Select the table to operate on, then the column, from the dropdowns. (This page requires JavaScript enabled.) Enter the string to be searched for, and the string to replace it. Click <b>Search and Replace</b>.
<P>
The search string is a regular expression. If the string is a partial match for the field, only the matching text will be replaced. You may parenthesize one part of the search expression, in which case only the parenthesized part will be replaced and the rest of the matching text will be kept in place.
<P>
The replacement string is the literal text that will be inserted instead of the search text.
<P>
If the regular expression is incorrect, you will be returned to the page and the message "Error: Compiling regex" will be displayed.
<P>
If the operation is successful, you will be sent to the edit select list for the table you operated on, and a message indicating how many rows (if any) were changed.
+tax.main Tax <p>
The <b>Tax Manager</b> allows you to set up multiple sales tax rates that might apply
to your customers. The simplest example, which would apply to most merchants,
is one tax rate for those people in your state and one tax rate (0%) for those
outside the state. Of course, your business might have multiple locations or
your state might have different tax rates by city, so you have the option of
creating an unlimited number of tax rate choices.
</p>
<p>
To begin, specify the location to which the tax rate will apply. To create
a new entry, click on the red <b>+</b>, then enter the amount of tax to
be applied to orders which specify that location during checkout.
</p>
<p>
If you're done, click on the <b>OK</b> button. Otherwise, click the plus sign and
continue until you've created all the rates you need.
</p>
<p>
If you need to delete any of the rates, of if you accidentally created too
many fields, click the red <b>X</b> next to that rate.
</p>
<p>
If your company has many locations or your sales tax needs are very
complicated, Interchange can be set up to work with third party tax software.
<a href="mailto:info@akopia.com">Contact Akopia</a> for more information.
</p>
+template.edit Edit Interchange Templates If you use the Interchange Foundation templating style, you will have
several templates defined that determine the structure of an individual
page.<br>
<br>
Select the template to edit.<br>
<br>
<h3>In-process edits</h3>
If you have edited a template, but not yet published it, it will be "in
process". It will be used for previews of pages, but not for the
customer-facing side until you <span style="font-weight: bold;">Publish</span> the template in the editor. Click on the <span style="font-weight: bold;">cancel</span> link to cancel the change.<br>
<br>
If you want to purge all in-process edits of pages, click <span style="font-weight: bold;">Purge all in process edits</span> and confirm your choice.<br>
<br>
+upload.main File Transfer <p>
The <b> File Transfer</b> page allows you to easily transfer pages, templates, and configuration files to and from a server to your computer. The following is a list of the types of files you can upload and download.
<p>
<ul>
<li><b>Pages</b><br>
The <b>Pages</b> link allows you to access the <b>Upload/Download Pages</b> page. This page makes it easy for you to view, download, upload, or edit your Web pages.<!--upload from where? download from where?-->
<p>
<li><b>Configuration (catalog.cfg)</b><br>
The <b>Configuration (catalog.cfg)</b> link allows you to access the <b>Configuration Upload/Download</b> page. This page makes it easy for you to view, download, upload, or edit your configuration file. <!--upload and download from where? what's the configuration file?-->
<p>
<li><b>Any File</b><br>
The <b>Any File</b> link allows you to access the <b>File Upload</b> page. This page makes it easy for you to view, download, upload, or edit any file on your system. <!--from where?-->
</ul>
+upsell Up-Sell <p>
The <b>Up-Sell</b> page is used to exercise the Up-Sell marketing feature. The Up-Sell feature allows you to display an item of better quality and/or price than the one the customer has chosen and give the customer the choice of upgrading to this item. For example, you may choose to display a deluxe toolbox to a customer that is purchasing a standard toolbox.
<!--reference the page where the graphics are posted or parameters for display are set-->
<p>
<h2>Functions</h2>
<b>OK</b><br>
After choosing the item you want to up-sell to from the <b>Up-sell_to</b> list, click <b>OK</b> to export the Up-Sell connection.<!--what is the result of this action?-->
<p>
<b>Cancel</b><br>
To abandon the Up-Sell task you started without saving the change.
<p>
<b>Auto-Export</b><br>
Click this checkbox to enable the Auto-Export feature. The Auto-Export feature exports the changes you are committing to the tables described on these pages to the original flat text file. This feature allows you to keep your original files up-to-date and portable. However, while this feature may not hinder the system's performance when exporting a small table, exporting a large table may slow your system.
<p>
<h2>Features</h2>
The <b>meta</b> link, which is only visible to the Site Administrator or Super User, is displayed below each field name. This link allows the Site Administrator or Super User to change the parameters for each field. For more information on <b>meta</b> links, see the <a href="flex.meta.html">Meta Field Information</a> page.
+wizard.aboutus Wizard : About Us This page allows you to enter text to be displayed on your company's <b>About Us</b> page. The <b>About Us</b> page is typically used to provide background information on your company including location, contact information, and so on. <p> In the <b>Title</b> field, enter the title of your <b>About Us</b> page. The <b>Content</b> field has already been prepopulated with generic information that has been formatted in HTML. If you are unfamiliar with HTML, it is recommended that you leave the HTML coding in place and simply replace the existing text with text relating to your store. If you are familiar with using HTML, you can choose to delete the prepopulated text and construct this page using your own text and HTML coding.
+wizard.authorizenet Wizard : Authorize.net Payment Preferences Enter the values you recieved when you registered for payment processing through Authorize.net. If you haven't recieved these values or you haven't signed up for this payment option yet leave these fields blank. Remember that you will not be able to launch your site without a secure payment processing solution. The required fields are displayed in <b>Bold</b>.
+wizard.batchupload Upload Products <p><font size=2>This page allows you to enter your products into the Interchange e-commerce platform using the Wizard spreadsheet. The spreadsheet has been created with all the necessary product descriptor fields and is the recommended method for entering products. <p>To use the Wizard spreadsheet, download it to your hard drive. Then, add your products and categories, save it, and upload it again using the <b>Browse...</b> button to locate the file. Five sample field categories are displayed in the spreadsheet for your reference. Once the file has been uploaded your product information is entered into Interchange and populated into the Administration Tool.<p>If you have not yet established your product line, or you would rather use sample product information to test how the products will be displayed, you can use one of the sample sets of data. The sample sets of data are:<p><ul><li>Hardware and Construction Tool Store-contains construction products.<li>Computer Store-contains computer hardware products.<li>Marketing Report Store-contains digital products.</ul><p>To use these sample data sets, click the set you want to use and save it to your hard drive. Then upload it again by using the <b>Browse...</b> button to locate the file. <p><b>Note:</b> It is recommended that you have a few products in the system before you launch to see how they are displayed.
+wizard.companyinfo Wizard : Your Company Info Enter your company information in the fields provided. This information will be entered into Interchange and populated into the Administration tool. The required fields are displayed in bold.<p>The following are descriptions of the fields displayed on the page:<p><table border=1 cellspacing=0 cellpadding=2 width=425><tr><td bgcolor="E0DCE0"><b>Field</b></td><td bgcolor="E0DCE0"><b>Definition</b></td></tr><tr><td>Your Company Name</td><td>The legal name of your company, used in correspondence.</td></tr><tr><td>Main Domain Name</td><td>The URL of your company's web site. For example, www.yourdomain.com.</tr><tr><td>Street Address</td><td>The postal address of your company's headquarters.</td></tr><tr><td>City</td><td>The city of your company's headquarters.</td></tr><tr><td>State</td><td>The state of your company's headquarters.</td></tr><tr><td>ZIP/Postal Code</td><td>The ZIP or postal code of your company's headquarters.</td></tr><tr><td>Country</td><td>The country of your company's headquarters. Select from the drop-down list.</td></tr><tr><td>Telephone Number</td><td>The telephone number where a representative of your company can be reached.</td></tr><tr><td>Fax Number</td><td>The number to which a fax can be sent.</td></tr><tr><td>Toll Free Number</td><td>The toll free telephone number where a representative of your company can be reached.</td></tr></table>
+wizard.cybercash Wizard : CyberCash Payment Preferences Enter the values you recieved when you registered for payment processing through CyberCash. If you haven't recieved these values or you haven't signed up for this payment option yet leave these fields blank. Remember that you will not be able to launch your site without a secure payment processing solution. The required fields are displayed in <b>Bold. </b>
+wizard.email Wizard : Company E-mail Information Enter the email addresses to be used for information routing in the fields provided. This information will be entered into Interchange and populated in the Administration tool. The required fields are displayed in bold.<p>The following are descriptions of the fields displayed on the page:<p><table border=1 cellspacing=0 cellpadding=2 width=425><tr><td bgcolor="E0DCE0"><b>Field</b></td><td bgcolor="E0DCE0"><b>Definition</b></td></tr><tr><td>Orders sent to</td><td>The email address where customer orders will be sent. This field has been pre-populated for your convenience. If the email address displayed is not correct, type the correct email address in the field.</td></tr><tr><td>Info requests sent to</td><td>The email address where visitors to your site can send inquiries for more information. This field has been pre-populated for your convenience. If the email address displayed is not correct, type the correct email address in the field. The sales organization is typically the recipient of requests for more information.</td></tr><tr><td>Service requests sent to</td><td>The email address where visitors to your site can send customer service inquiries. This field has been pre-populated for your convenience. If the email address displayed is not correct, type the correct email address in the field. The customer service organization is typically the recipient of service requests.</td></tr></table><p>The Wizard <b>Checklist</b> is displayed on the left. From the checklist you can access any of the Wizard screens. Click <b>Save current settings</b> to save your work to this point.
+wizard.fedex Wizard : Shipping Configuration for Federal Express This screen allows you to choose the Federal Express shipping options that you want to offer. If you are unsure of what a shipping option means, contact Federal Express for further explaination. The <b>Handling fee</b> allows you to enter a fee for handling the delivery for the customer. Most e-commerce sites charge a handling fee depending on how big or how fragile a product is. This value should be entered in decimal format. For example, if you are charging a handling fee of $3.00, enter 3.00 in the <b>Handling fee</b> field.<p> The Wizard <b>Checklist</b> is displayed on the left. From the checklist you can access any of the Wizard screens. Click <b>Save current settings</b> to save your work to this point.
+wizard.index Wizard : Welcome <font size=-1>The Catalog Wizard gets you started with the Interchange e-commerce platform. It will lead you through the process of configuring the fundamentals of your store. When you finish you will have a fully functioning e-commerce site! <br><br>The checklist at the left side of the page shows your progress in the Catalog Wizard. You can complete the sections in any order and you can go back to any section at any time. At any point in the Catalog Wizard process you can choose to stop, save your settings, and continue later.
+wizard.indexpage Wizard : Index Page <p><font size=2>This page allows you to create an index page. The index page is the first page of your site, and is ususally the first page that your customers see.<p><font size=2>In the <b>Page Title</b> field, enter the title for your index page. Typically the index page title contains the name of your store. The <b>Content</b> field has been pre-populated with sample information that has been formatted in HTML. If you are unfamiliar with HTML, it is recommended that you leave the HTML coding in place and simply replace the existing text with text relating to your store. If you are familiar with using HTML, you can choose to delete the prepopulated text and construct this page using your own text and HTML coding.
+wizard.itransact Wizard : iTransact Payment Preferences Enter the values you recieved when you registered for payment processing through Authorize.net. If you haven't recieved these values or you haven't signed up for this payment option yet leave these fields blank. Remember that you will not be able to launch your site without a secure payment processing solution. The required fields are displayed in <b>Bold</b>.
+wizard.launch Wizard : Launch <p><font size=2>Set your preferences for taking your site live. This is the final step before your site is publicly accessible. The required fields are displayed in bold.</p><p>The table below describes the options displayed on the Launch page.<p><table border=1 cellspacing=0 cellpadding=2 width=425><tr><td bgcolor="E0DCE0"><font size=2><b>Field</b></td><td bgcolor="E0DCE0"><font size=2><b>Description</b></td></tr><tr><td><font size=2>Delete sample order data</td><td><font size=2>Choose <b>Yes</b> to purge the database of sample order data. It is strongly recommended that you do this before going live.</td></tr><tr><td><font size=2>Deletesample user data</td><td><font size=2>Choose <b>Yes</b> to purge the database of sample user data. It is strongly recommended that you do this before going live.</td></tr><tr><td><font size=2>Starting order number</td><td><font size=2>Enter the order number that should be used in taking the first customer order. The default is 01000.</td></tr><tr><td><font size=2>Enable Secure (SSL)</td><td><font size=2>Choose <b>Yes</b> to enable your SSL certificate. This is strongly recommended if you are processing payment online.</td></tr><tr><td><font size=2>Launch</td><td><font size=2>Click to launch your site.</td></tr></table>
+wizard.payment Wizard : Setting Up Payment Information This section helps you to set up your payment acceptance and processing information and is intended only to get you started. It offers a choice of processing options and payment methods. This information will be entered into Interchange and populated into the Administration tool. The required fields are displayed in bold.<p>The following are descriptions of the fields displayed on the page:<p><table border=1 cellspacing=0 cellpadding=2 width=425><tr><td bgcolor="E0DCE0"><b>Field</b></td><td bgcolor="E0DCE0"><b>Definition</b></td></tr><td>Payment gateway</td><td>The payment gateway that is processing your payments. Choose your payment processor from the drop-down list. If you don't have a payment processor, you can choose one now, or choose no credit cards. Your choices are:<br><ul><li><b>no credit cards</b>-select if you are not processing payment information, or if you are processing payments manually (over the phone or using a Magnetic Stripe Reader). You can also select this if you are unsure of how you will process your payments.</li><li>PGP sent credit cards-select if you are using Pretty Good Protection (PGP) to process your payments. For more information on PGP, see <a href="http://www.pgpi.org">www.pgpi.org</a>.</li><li><b>CyberCash</b>-select if you are using CyberCash to process your payments. For more information on CyberCash, see <a href="http://www.cybercash.com">www.cybercash.com</a>.</li><li><b>Verisign</b>-select if you are using Verisign to process your payments. For more information on Verisign, see <a href="http://www.verisign.com">www.verisign.com</a>.</li></ul></td></tr></table>
+wizard.pgp Wizard : PGP Payment Preferences Enter the values you recieved when you registered for payment processing through Pretty Good Protection (PGP). If you haven't recieved these values or you haven't signed up for this payment option yet leave these fields blank. Remember that you will not be able to launch your site without a secure payment processing solution. The required fields are displayed in <b>Bold</b>.
+wizard.preview Wizard : Preview <p><font size=2>The preview page allows you to view and test your newly created site before launch. After you preview your site you can go back to any point in the Wizard and make changes to your settings. You can preview and make changes as many times as necessary. <p>The following table describes the options displayed on this page.<p><table border=1 cellspacing=0 cellpadding=2 width=425><tr><td bgcolor="E0DCE0"><font size=2><b>Field</b></td><td bgcolor="E0DCE0"><font size=2><b>Description</b></td></tr><tr><td><font size=2>Insert products data</td><td><font size=2>Enters into Interchange the product spreadsheet you uploaded. Choose <b>Yes</b> if you already uploaded sample product information or your own product information and want to enter it into Interchange. <br>Choose <b>No</b> if you entered products using the Manual Product Entry page.</td></tr><tr><td><font size=2>Insert sample order data</td><td><font size=2>Choose <b>Yes</b> to insert sample order and user data. This will help you to see how the Administration Tool works by providing sample orders and customers for view. You can purge this information before launch.</td></tr><tr><td><font size=2>Enable Secure (SSL)</td><td><font size=2>Choose <b>Yes</b> to enable your SSL certificate. This is not necessary to preview your site, but is strongly recommended for launch if you are processing payments online.</td></tr><tr><td><font size=2>Finish</td><td><font size=2>Click to preview your site.</td></tr></table>
+wizard.security Wizard : Security Preferences This section allows you to enter the security preferences for your site. It is important that you keep all user names and passwords in a safe place to ensure the safety of your site and sensitive customer information. The following table describes the fields displayed on this page.<table><tr><td>Administrator user name</td><td>Enter the user name for the administrator of your site. The administrator has access to all aspects of the website including customer, product, administration, and merchandising information. The administrator sets and oversees all <b>shop user</b> access preferences.</td></tr><tr><td>Administrator password</td><td>Enter the password for the administrator of your site. This password should be kept in a safe place.</td></tr><tr><td>Shop user name</td><td>Enter the user name for the shop associate for your site. The shop associate has limited access to sections of the Administration Tool as established by the administrator. You can use the Administration Tool to set up more than one shop associate.</td></tr><tr><td>Shop user password</td><td>Enter the password for the shop associate for your site. This password should be kept in a safe place.</td></tr><tr><td>Enable Web Security</td><td>Click this if you have your Secure Socket Layer (SSL) web server enabled. This is needed to establish a secure internet connection for processing payment information. This is required for launching your site.</td></tr></table><p>The Wizard <b>Checklist</b> is displayed on the left. From the checklist you can access any of the Wizard screens. Click <b>Save current settings</b> to save your work to this point.</td></tr></table>
wizard.ship_flat Wizard : Flat-rate Shipping Configuration This screen allows you to choose the flat-rate shipping options that you want to offer.<p> Flat-rate per item shipping charges a fixed amount per item ordered. If the customer doubles the number ordered, even if it is the same SKU, the shipping cost will be doubled. <P> Flat-rate per order shipping charges one fixed fee for shipping for the entire order, no matter how many units are ordered. <p> You can select one type for domestic shipments and one for international shipments, but you cannot use both methods for domestic or international.
+wizard.shipping Wizard : Set Up Shipping Information This section helps you to set up your shipping information and is intended only to get you started with shipping calculation. It offers choice of three shipping methods and does not allow for multiple delivery options. This information will be entered into Interchange and populated into the Administration tool. The Administration tool allows you to enter more complex shipping options. The required fields are displayed in bold.<p>The following are descriptions of the fields displayed on the page:<p><table border=1 cellspacing=0 cellpadding=2 width=425><tr><td bgcolor="E0DCE0"><b>Field</b></td><td bgcolor="E0DCE0"><b>Definition</b></td></tr><tr><td>Shipping Method</td><td>The method by which you will ship your products. Choose from the drop-down menu. Your choices are:<br><ul><li>Federal Express (FedEx)</li><li>United Postal Service (UPS)</li><li>United States Postal Service (USPS)</li></ul></td></tr><tr><td>Warehouse ZIP code</td><td>The ZIP code of the location from which you will be shipping. This, combined with with the <b>Shipping Method</b>, are compared against an internal table to determine the correct shipping cost.</td></tr></table>
+wizard.skipjack Wizard : Skipjack Payment Preferences Enter the values you recieved when you registered for payment processing through Authorize.net. If you haven't recieved these values or you haven't signed up for this payment option yet leave these fields blank. Remember that you will not be able to launch your site without a secure payment processing solution. The required fields are displayed in <b>Bold</b>.
+wizard.tax Wizard : Set Up Tax Information This section helps you to set up your tax information. This information will be entered into Interchange and populated into the Administration tool. This screen is intended only to get you started with tax calculation. It offers a simple calculation method and does not account for multiple delivery locations. The Administration tool allows you to upload tax calculation tables or enter specific tax application rules. The required fields are displayed in bold.<p>The following are descriptions of the fields displayed on the page:<p><table border=1 cellspacing=0 cellpadding=2 width=425><tr><td bgcolor="E0DCE0"><font size=2><b>Field</b></td><td bgcolor="E0DCE0"><font size=2><b>Definition</b></td></tr><tr><td><font size=2>Tax location</td><td><font size=2>The State in which you will be selling your products. If you will be selling in more than one state, enter the primary state. You can make adjustments using the administration tool later.</td></tr><tr><td><font size=2>Tax rate</td><td><font size=2>The percentage that should be used when calculating tax. This is typically the default sales tax for the state you are selling in. If you are unsure of what percentage to use, contact your local Better Business Bureau.</td></tr><tr><td><font size=2>Tax shipping?</td><td><font size=2>If the tax percentage should be applied to the total cost, including shipping. Click the appropriate response from the drop-down menu. Clicking <b>Yes</b> applies the tax after the shipping cost has been added to the order.</td></tr></table>
wizard.ups Wizard : Shipping Configuration for UPS This screen allows you to choose the UPS shipping options that you want to offer. If you are unsure of what a shipping option means, contact UPS for further explaination. The <b>Handling fee</b> allows you to enter a fee for handling the delivery for the customer. Most e-commerce sites charge a handling fee depending on how big or how fragile a product is. This value should be entered in decimal format. For example, if you are charging a handling fee of $3.00, enter 3.00 in the <b>Handling fee</b> field.<p>The Wizard <b>Checklist</b> is displayed on the left. From the checklist you can access any of the Wizard screens. Click <b>Save current settings</b> to save your work to this point.
-wizard.security Wizard : Security Preferences This section allows you to enter the security preferences for your site. It is important that you keep all user names and passwords in a safe place to ensure the safety of your site and sensitive customer information. The following table describes the fields displayed on this page.<table><tr><td>Administrator user name</td><td>Enter the user name for the administrator of your site. The administrator has access to all aspects of the website including customer, product, administration, and merchandising information. The administrator sets and oversees all <b>shop user</b> access preferences.</td></tr><tr><td>Administrator password</td><td>Enter the password for the administrator of your site. This password should be kept in a safe place.</td></tr><tr><td>Shop user name</td><td>Enter the user name for the shop associate for your site. The shop associate has limited access to sections of the Administration Tool as established by the administrator. You can use the Administration Tool to set up more than one shop associate.</td></tr><tr><td>Shop user password</td><td>Enter the password for the shop associate for your site. This password should be kept in a safe place.</td></tr><tr><td>Enable Web Security</td><td>Click this if you have your Secure Socket Layer (SSL) web server enabled. This is needed to establish a secure internet connection for processing payment information. This is required for launching your site.</td></tr></table><p>The Wizard <b>Checklist</b> is displayed on the left. From the checklist you can access any of the Wizard screens. Click <b>Save current settings</b> to save your work to this point.</td></tr></table>
-env_vars Environment Variables <p>Here you can view the environment of the running Interchange daemon.
Useful only for debugging purposes.
</p>
-affiliate.edit Edit Affiliate <p>The <b>Edit Affiliate</b> page allows you to edit specific attributes for an Affiliate. The following is a list of some of the most common attributes that you can edit.
<p>
<h2>Functions</h2>
<b>Affiliate ID</b><br>
This field contains the <b>Affiliate ID</b> for the Affiliate you are editing.
<p></p>
<p>
<b>Affiliate Name</b><br>
This field contains the name of the Affiliate you are editing.
</p>
<p> <b>Campaigns</b><br>
This field is used to track traffic from advertising campaigns.
</p><p> <b>Coupon_amount</b><br>
This field is used to enter the coupon discount amount to be applied to a purchase made by the Affiliate you are editing.
<p>
<b>Join Date</b><br>
The value in this field can be used to keep track of when the Affiliate signed with you.
</p>
<p>
<b>URL</b><br>
The value in this field is used to direct visitors coming from the Affiliate you are editing to your home page or a page designed specifically for visitors from that Affiliate's site. <br>
This should <i>not</i> be the URL of the Affiliate's home site.
</p>
<p> <b>Timeout Delay</b><br>
The value in this field is used to specify the amount of time a customer has to place an order and still give the Affiliate credit for it. If the customer goes over this amount of time, the Affiliate doesn't get credit for the customer visit. The timeout delay is measured in seconds, with the value of 0 (zero) disabling it. It is recommended that you use a value in the thousands to be sure the customer has enough time to shop.
<p>
<b>OK</b><br>
To commit your changes, click <b>OK</b>.
<i><b>Hint:</b> Using the browser's back button to exit the screen will not commit the changes you have made. </i>
<p>
<b>Cancel</b><br>
To abandon the changes you have made, click this button.
-wizard.companyinfo Wizard : Your Company Info Enter your company information in the fields provided. This information will be entered into Interchange and populated into the Administration tool. The required fields are displayed in bold.<p>The following are descriptions of the fields displayed on the page:<p><table border=1 cellspacing=0 cellpadding=2 width=425><tr><td bgcolor="E0DCE0"><b>Field</b></td><td bgcolor="E0DCE0"><b>Definition</b></td></tr><tr><td>Your Company Name</td><td>The legal name of your company, used in correspondence.</td></tr><tr><td>Main Domain Name</td><td>The URL of your company's web site. For example, www.yourdomain.com.</tr><tr><td>Street Address</td><td>The postal address of your company's headquarters.</td></tr><tr><td>City</td><td>The city of your company's headquarters.</td></tr><tr><td>State</td><td>The state of your company's headquarters.</td></tr><tr><td>ZIP/Postal Code</td><td>The ZIP or postal code of your company's headquarters.</td></tr><tr><td>Country</td><td>The country of your company's headquarters. Select from the drop-down list.</td></tr><tr><td>Telephone Number</td><td>The telephone number where a representative of your company can be reached.</td></tr><tr><td>Fax Number</td><td>The number to which a fax can be sent.</td></tr><tr><td>Toll Free Number</td><td>The toll free telephone number where a representative of your company can be reached.</td></tr></table>
-wizard.batchupload Upload Products <p><font size=2>This page allows you to enter your products into the Interchange e-commerce platform using the Wizard spreadsheet. The spreadsheet has been created with all the necessary product descriptor fields and is the recommended method for entering products. <p>To use the Wizard spreadsheet, download it to your hard drive. Then, add your products and categories, save it, and upload it again using the <b>Browse...</b> button to locate the file. Five sample field categories are displayed in the spreadsheet for your reference. Once the file has been uploaded your product information is entered into Interchange and populated into the Administration Tool.<p>If you have not yet established your product line, or you would rather use sample product information to test how the products will be displayed, you can use one of the sample sets of data. The sample sets of data are:<p><ul><li>Hardware and Construction Tool Store-contains construction products.<li>Computer Store-contains computer hardware products.<li>Marketing Report Store-contains digital products.</ul><p>To use these sample data sets, click the set you want to use and save it to your hard drive. Then upload it again by using the <b>Browse...</b> button to locate the file. <p><b>Note:</b> It is recommended that you have a few products in the system before you launch to see how they are displayed.
-create.new.customer Create new customer <p> The <b>Create New Customer</b> page allows you create a new customer account
by entering the necessary customer information. The fields displayed on this
page are dependent on how the page was set up by your Site Administrator or
Super User.
<p>
<h2>Functions</h2>
<b>OK</b><br>
After entering the necessary information to create a new customer, click <b>OK</b> to save the information. The <b>Active Customers</b> page is displayed including the customer you created.
<p>
<b>Cancel</b><br>To return to the <b>Active Customers</b> page without saving the new customer information, click <b>Cancel</b>.
<p>
<h2>Features</h2>
The <b>meta</b> link, which is only visible to the Site Administrator or Super
User, is displayed below each field name. This link allows the Site Administrator
or Super User to change the parameters for each field. For more information on
<b>meta</b> links, see the <a href="flex.meta.html">Meta Field Information</a> page.
+wizard.verisign Wizard : Signio/Verisign Payment Preferences Enter the values you recieved when you registered for payment processing through Signio/Verisign. If you haven't recieved these values or you haven't signed up for this payment option yet leave these fields blank. Remember that you will not be able to launch your site without a secure payment processing solution. The required fields are displayed in <b>Bold</b>.
1.1 interchange/dist/lib/UI/locales/en_US.cfg
rev 1.1, prev_rev 1.0
Index: en_US.cfg
===================================================================
# These file adds strings to be translated which we
# can't derive automatically from the UI pages
Locale en_US <<EOF
{
# language name
"MV_LANG_NAME",
"English",
"Edit checked items in sequence",
"Edit checked",
"Edit checked records in sequence",
"Edit checked",
"Delete checked records",
"Delete checked",
"Delete checked items",
"Delete checked",
}
EOF
2.6 +62 -78 interchange/dist/lib/UI/pages/admin/access_permissions.html
rev 2.6, prev_rev 2.5
Index: access_permissions.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/access_permissions.html,v
retrieving revision 2.5
retrieving revision 2.6
diff -u -r2.5 -r2.6
--- access_permissions.html 18 Aug 2002 08:09:05 -0000 2.5
+++ access_permissions.html 14 Jan 2003 02:25:50 -0000 2.6
@@ -75,6 +75,7 @@
<!-- ----- BEGIN REAL STUFF ----- -->
+[output name=top_of_form]
<FORM METHOD=POST ACTION="[area ui]">
<INPUT TYPE=hidden NAME=mv_session_id VALUE="[data session id]">
<INPUT TYPE=hidden NAME=mv_doit VALUE="set">
@@ -87,21 +88,23 @@
<INPUT TYPE=hidden NAME=mv_update_empty VALUE="1">
<INPUT TYPE=hidden NAME=mv_data_fields VALUE="username yes_functions no_tables yes_tables table_control">
<INPUT TYPE=hidden NAME="mv_data_function" VALUE="update">
+[output name=""]
-
-<table __UI_T_PROPERTIES__>
-
-<tr>
-<td colspan=6 class=rborder><img src="bg.gif" width=600 height=1></td>
-</tr>
-
-<tr>
-<td class=rnorm valign=top> </td>
-<td class=rnorm valign=top>[L]View list[/L]</td>
-<td class=rnorm valign=top>[L]View detail[/L]</td>
-<td class=rnorm valign=top>[L]Create[/L]</td>
-<td class=rnorm valign=top>[L]Edit[/L]</td>
-<td class=rnorm valign=top>[L]Delete[/L]</td>
+[tabbed-display
+ js-prefix="perm_"
+ width=800
+ height=800
+ ]
+[tabbed-panel Editor Functions]
+<table width="100%" border=0 cellpadding=0 cellspacing=1 class=rseparator>
+
+<tr class=rhead>
+<td class=rhead valign=top> </td>
+<td class=rhead valign=top>[L]View list[/L]</td>
+<td class=rhead valign=top>[L]View detail[/L]</td>
+<td class=rhead valign=top>[L]Create[/L]</td>
+<td class=rhead valign=top>[L]Edit[/L]</td>
+<td class=rhead valign=top>[L]Delete[/L]</td>
</tr>
[seti tables][list-databases][/seti]
@@ -155,27 +158,29 @@
#DEBUG
# $out .= <<EOF;
#<tr>
-#<td colspan=6 class=rnorm valign=top>
+#<td colspan=6 class=rownorm valign=top>
#$string
#</td>
#EOF
my $perm;
my $title;
+ my $inc = 0;
while( $perm = shift @permissions) {
$title = shift @permissions;
my $ref = $permref->{$perm} || {};
+ my $class = $inc++ % 2 ? 'rownorm' : 'rowalt';
$out .= <<EOF;
-<tr>
-<td class=rnorm valign=top>
+<tr class=$class>
+<td class=$class valign=top>
<b>$title</b>
<input type=hidden value="$perm=" name="yes_functions">
</td>
EOF
for(@some) {
$out .= <<EOF;
-<td class=rnorm valign=top>
-<INPUT type=checkbox value=$_ name="yes_functions"$ref->{$_}>
+<td class=$class valign=top>
+<INPUT type=checkbox class=s3 value=$_ name="yes_functions"$ref->{$_}>
</td>
EOF
}
@@ -183,22 +188,15 @@
}
my $ref = $permref->{order};
$out .= <<EOF;
-<tr>
-<td colspan=6 class=rborder><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
-</tr>
-
</table>
-
-<br>
+[/tabbed-panel]
-<table __UI_T_PROPERTIES__>
+[tabbed-panel Other Functions]
-<tr>
-<td colspan=2 class=rborder><img src="bg.gif" width=600 height=1></td>
-</tr>
+<table width="100%" border=0 cellpadding=0 cellspacing=1 class=rseparator>
<tr>
-<td class=rnorm valign=top>
+<td class=rownorm valign=top>
<b>[L]Order manager[/L]:</b>
<INPUT type=hidden value="order=" name="yes_functions">
<li><INPUT type=checkbox value=l name="yes_functions"$ref->{l}> [L]View list[/L]
@@ -211,7 +209,7 @@
<INPUT type=hidden value="," name="yes_functions">
<p>
</td>
-<td class=rnorm valign=top ROWSPAN=2>
+<td class=rownorm valign=top ROWSPAN=2>
EOF
@permissions = (
orderstats => 'Order statistics utility',
@@ -245,7 +243,7 @@
</tr>
<tr>
-<td class=rnorm valign=top>
+<td class=rownorm valign=top>
<b>[L]Customer Edit Permissions[/L]:</b>
<INPUT type=hidden value="userdb=" name="yes_functions">
<li><INPUT type=checkbox value=l name="yes_functions"$ref->{l}> [L]View list[/L]
@@ -262,38 +260,28 @@
return $out;
[/perl]
-<tr>
-<td colspan=2 class=rborder><img src="bg.gif" width=600 height=1></td>
-</tr>
-
</table>
-<p>
+[/tabbed-panel]
-<table cellpadding=3 cellspacing=0 width=100%>
+[tabbed-panel Table Permissions]
-<tr>
-<td colspan=9 class=rborder><img src="bg.gif" width=600 height=1></td>
-</tr>
-
-<tr>
-<td colspan=9 class=rnorm ALIGN=center><B>[L]Table Permissions[/L]</B></td>
-</tr>
+<table width="100%" border=0 cellpadding=0 cellspacing=1 class=rseparator>
<tr>
-<td colspan=9 class=rspacer><img src="bg.gif" width=600 height=1></td>
+<td colspan=9 class=rhead ALIGN=center><B>[L]Table Permissions[/L]</B></td>
</tr>
<tr>
-<td class=rnorm valign=top> </td>
-<td class=rnorm valign=top>[L]HIDE[/L]</td>
-<td class=rnorm valign=top>[L]View[/L]</td>
-<td class=rnorm valign=top>[L]Edit[/L]</td>
-<td class=rnorm valign=top>[L]Create[/L]</td>
-<td class=rnorm valign=top>[L]Delete[/L]</td>
-<td class=rnorm valign=top>[L]Import[/L]</td>
-<td class=rnorm valign=top>[L]Export[/L]</td>
-<td class=rnorm valign=top>[L]Owner field[/L]</td>
+<td class=rhead valign=top> </td>
+<td class=rhead valign=top>[L]HIDE[/L]</td>
+<td class=rhead valign=top>[L]View[/L]</td>
+<td class=rhead valign=top>[L]Edit[/L]</td>
+<td class=rhead valign=top>[L]Create[/L]</td>
+<td class=rhead valign=top>[L]Delete[/L]</td>
+<td class=rhead valign=top>[L]Import[/L]</td>
+<td class=rhead valign=top>[L]Export[/L]</td>
+<td class=rhead valign=top>[L]Owner field[/L]</td>
</tr>
[perl]
@@ -348,22 +336,24 @@
my $perm;
my $title;
+ my $inc = 0;
while( $perm = shift @permissions) {
$title = shift @permissions;
+ my $class = $inc++ % 2 ? 'rownorm' : 'rowalt';
my $ref = $permref->{$perm} || {};
$out .= <<EOF;
-<tr>
-<td class=rnorm valign=top>
+<tr class=$class>
+<td class=$class valign=top>
<b>$title</b>
<input type=hidden value="$perm=" name="yes_tables">
</td>
-<td class=rnorm valign=top>
-<INPUT type=checkbox value="$perm" name="no_tables"$no{$perm}>
+<td class=$class valign=top>
+<INPUT type=checkbox class=s3 value="$perm" name="no_tables"$no{$perm}>
</td>
EOF
for(@all) {
$out .= <<EOF;
-<td class=rnorm valign=top>
+<td class=$class valign=top>
<INPUT type=checkbox value=$_ name="yes_tables"$ref->{$_}>
</td>
EOF
@@ -374,7 +364,7 @@
$of = $tc->{$perm}{owner_field};
}
$out .= <<EOF;
-<td class=rnorm valign=top>
+<td class=$class valign=top>
<INPUT type=hidden value="$perm=" name="owner_field">
<INPUT type=text value="$of" name="owner_field" size=10>
<INPUT type=hidden value="," name="owner_field">
@@ -386,27 +376,21 @@
return $out;
[/perl]
-<tr>
-<td colspan=9 class=rspacer><img src="bg.gif" width=600 height=1></td>
-</tr>
-
-
-<tr>
-<td colspan=9 class=rnorm>
- <input type=submit value="[L]Ok[/L]">
- <input type=submit name=mv_click value="[L]Cancel[/L]">
-</td>
-</tr>
-
-<tr>
-<td colspan=9 class=rborder><img src="bg.gif" width=600 height=1></td>
-</tr>
-
</table>
+[/tabbed-panel]
+[/tabbed-display]
-<BR>
+[output name=top_buttons]
+ <input type=submit value="[L]Ok[/L]" class=s3 style="font-weight: bold; width: 40px; text-align: center">
+ <input type=submit name=mv_click value="[L]Cancel[/L]" class=s3>
+
+[output name=bottom_buttons]
+ <input type=submit value="[L]Ok[/L]" class=s3 style="font-weight: bold; width: 40px; text-align: center">
+ <input type=submit name=mv_click value="[L]Cancel[/L]" class=s3>
+[output name=bottom_of_form]
</form>
+[output name=""]
@_UI_STD_FOOTER_@
<!-- page: @@MV_PAGE@@ -->
2.2 +5 -7 interchange/dist/lib/UI/pages/admin/bug_report.html
rev 2.2, prev_rev 2.1
Index: bug_report.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/bug_report.html,v
retrieving revision 2.1
retrieving revision 2.2
diff -u -r2.1 -r2.2
--- bug_report.html 26 Nov 2002 15:21:56 -0000 2.1
+++ bug_report.html 14 Jan 2003 02:25:50 -0000 2.2
@@ -3,13 +3,11 @@
[set page_perm]bug[/set]
@@UI_STD_HEAD@@
-<p>
-If you are uncertain of the genesis of this problem,
-please enter a bug report in the Interchange
-<A HREF="http://www.icdevgroup.org/bugs/enter_bug.cgi">bug tracker</A>
-and include the system information below.
-</p>
-
+If you are uncertain of the genesis of this problem,
+please highlight the following text and then press SHIFT-DELETE. Once you
+have done that, <A HREF="http://interchange.redhat.com/bugs/enter_bug.cgi">login to Bugzilla</A>
+and enter a bug report, using SHIFT-INSERT to place the text in the
+Description section.
<FORM>
<TEXTAREA NAME=JUNK ROWS=100 COLS=80>[dump]</TEXTAREA></FORM>
1.6 +15 -60 interchange/dist/lib/UI/pages/admin/content.html
rev 1.6, prev_rev 1.5
Index: content.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/content.html,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- content.html 13 Sep 2002 20:46:20 -0000 1.5
+++ content.html 14 Jan 2003 02:25:50 -0000 1.6
@@ -57,12 +57,6 @@
return;
[/calc]
-[if session content_edit]
- <A HREF="[area href=@@MV_PAGE@@ form='ui_content_op=purge']"
- onClick="return confirm('Are you sure you want to purge all in-process edits?')"
- >Purge all in-process</A>
-[/if]
-
[warnings auto=1]
[if type=explicit compare="[error all=1 show_var=1 keep=1]"]
@@ -72,75 +66,36 @@
</blockquote>
[/if]
-<table border=0 __UI_T_PROPERTIES__>
-<tr>
-<td colspan=3 class=rborder><img src="bg.gif" width="100%" height=1></td>
-</tr>
+<div class=titlebox>Edit pages</div>
+
+[if session content_edit]
+ <A HREF="[area href=@@MV_PAGE@@ form='ui_content_op=purge']"
+ onClick="return confirm('Are you sure you want to purge all in-process edits?')"
+ >Purge all in-process (including page, template, component edits)</A> <br>
+[/if]
-<tr>
- <td class=rnorm valign=top width="33%">
- <h2>Pages</h2>
[calc] tmp_display_in_progress('page'); [/calc]
<A HREF="[area
href=__UI_BASE__/content_editor
form=auto
ui_type=page
new=1
- ]"><img src="layout.gif" border=0 align=textmiddle> [L]New page[/L]</A><br><br>
+ ]"><img src="layout.gif" border=0 align=center> [L]New page[/L]</A><br><br>
+<table width="100%">
+[table-organize columns=3 columnize=1 interpolate=1 min-rows=15]
+
[file-navigator
initial_dir="__UI_PAGE_DIR__"
start_open="__UI_PAGE_DIR__"
+ top-of-tree="__UI_PAGE_DIR__"
+ template=|<TD width="33%">%s</TD>|
edit_only=1
edit_all=1
+ details=0
edit_page=content_editor
edit_form="ui_name=~RN~&ui_type=page"
]
- </td>
-
- <td class=rnorm valign=top width="33%">
- <h2>Templates</h2>
- [calc] tmp_display_in_progress('template'); [/calc]
- <A HREF="[area
- href=__UI_BASE__/content_editor
- form=auto
- ui_type=template
- new=1
- ]"><img src="layout.gif" border=0 align=textmiddle> [L]New template[/L]</A><br><br>
- [loop acclist=1 list="[content-info templates=1 no-none=1]"]
- <A HREF="[area
- href=__UI_BASE__/content_editor
- form=auto
- ui_type=template
- ui_name="[loop-code]"
- ]"><img src="layout.gif" border=0 align=textmiddle>[loop-param label]</A><br>
- [/loop]
-
- </td>
-
- <td class=rnorm valign=top width="33%">
- <h2>Components</h2>
- [calc] tmp_display_in_progress('component'); [/calc]
- <A HREF="[area
- href=__UI_BASE__/content_editor
- form=auto
- ui_type=component
- new=1
- ]"><img src="layout.gif" border=0 align=textmiddle> [L]New component[/L]</A><br><br>
- [loop acclist=1 list="[content-info components=1 no-none=1]"]
- <A HREF="[area
- href=__UI_BASE__/content_editor
- form=auto
- ui_type=component
- ui_name="[loop-code]"
- ]"><img src="layout.gif" border=0 align=textmiddle>[loop-param label]</A><br>
- [/loop]
- </td>
-</tr>
-
-<tr>
-<td colspan=3 class=rborder><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
-</tr>
-
+[/table-organize]
</table>
</form>
1.3 +126 -23 interchange/dist/lib/UI/pages/admin/content_push.html
rev 1.3, prev_rev 1.2
Index: content_push.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/content_push.html,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- content_push.html 12 Sep 2002 04:58:47 -0000 1.2
+++ content_push.html 14 Jan 2003 02:25:50 -0000 1.3
@@ -41,21 +41,29 @@
<form action="[area @@MV_PAGE@@]" method=POST name=pushform>
<input type=hidden name=mv_session_id value="[data session id]">
<input type=hidden name=mv_action value=back>
-<table>
-<tr>
- <td>
- <b>Source</b> <select name=source onChange="doType(this)">
- <option value=""> -- select source file --
- </select>
- </td>
- <td id=messagebox style="font-size: larger">
- Select page to clone. Only pages matching the template type of
- the source page will be allowed.
- </td>
+<table width="100%" cellspacing=0 cellpadding=5>
+ <tr>
+ <td colspan=2 class=titlebox>
+ Source
+ </td>
+ </tr>
+ <tr>
+ <td class=clabel>
+ <select name=source onChange="doType(this)">
+ <option value=""> -- select source file --
+ </select>
+ </td>
+ <td id=messagebox class=cdata>
+ <span class=chelp>
+ Select page to clone. Only pages matching the template type of
+ the source page will be allowed.
+ </span>
+ </td>
+ </tr>
</table>
<br>
-<b>Targets</b><br>
+<div class=titlebox>Targets</div><br>
<script>
var files = [
@@ -64,18 +72,23 @@
my $dir = $Config->{PageDir};
$dir =~ s{^$Config->{VendRoot}/}{};
my $suf = $Config->{HTMLsuffix};
- my @things = map { [ "$dir/$_$suf", $_ ] } @$files;
+ sub dirname {
+ my $fn = shift;
+ $fn =~ m{(.*)/} and return $1;
+ return '';
+ }
+ my @things = map { [ "$dir/$_$suf", dirname($_), $_ ] } @$files;
my @out;
@qualify = ();
for my $ref (@things) {
- my ($fn, $lab) = @$ref;
+ my ($fn, $dir, $lab) = @$ref;
my $dat = $Tag->file($fn);
$dat =~ m{\nui_(?:page_template|template_name):\s*(.*)}
or next;
my $type = $1;
push @$ref, $type;
- push @qualify, [$fn, $lab, $type];
+ push @qualify, [$fn, $lab, $dir, $type];
$fn =~ s/'/\\'/g;
$lab =~ s/'/\\'/g;
$type =~ s/'/\\'/g;
@@ -95,7 +108,9 @@
var w = document.getElementById('target' + idx);
var el = document.getElementById('lab' + idx);
- el.style.fontWeight = weight;
+ if(el != undefined)
+ el.style.fontWeight = weight;
+
if(dis) {
w.checked = 0;
w.disabled = 1;
@@ -106,6 +121,35 @@
return;
}
+ var current_div;
+
+ function displayDiv (classname) {
+ if(current_div != undefined)
+ current_div.style.display = 'none';
+ var el = document.getElementById( 'div_' + classname );
+ if(el != undefined) {
+ current_div = el;
+ el.style.display = 'block';
+ }
+ }
+
+ function checkClass (classname) {
+ for(var f = 0; f < document.forms.length; f++) {
+ var form = document.forms[f];
+ for(var i = 0; i < form.elements.length; i++) {
+ var el = form.elements[i];
+ if(el.className == classname) {
+ if(el.checked || el.disabled) {
+ el.checked = false;
+ }
+ else {
+ el.checked = true;
+ }
+ }
+ }
+ }
+ }
+
function doType (wid) {
if(wid == undefined)
return;
@@ -155,22 +199,81 @@
populateSelect(document.pushform.source);
</script>
-<table>
-[table-organize columns=3 columnize=1 interplate=1]
+<table width="100%">
+<tr>
+ <td width="67%">
+ <table>
+ [table-organize columns=3 columnize=1 interplate=1]
[calc]
my $i = 0;
+ my @out;
+ my @dirout;
+ %dirs = ();
for(@qualify) {
- my ($fn, $lab, $type) = @$_;
- push @out, <<EOF;
+ my ($fn, $lab, $dir, $type) = @$_;
+ if($dir) {
+ my $htm = $dirs{$dir};
+ my $dirclass = $dir;
+ my $levels = $dir =~ tr:/:/:;
+ my $spacer = '';
+ $spacer = '<img src="bg.gif" width=10 border=0>' x $levels
+ if $levels;
+ $dirclass =~ s/\W/_/g;
+ if( ! $htm) {
+ $htm = $dirs{$dir} = [];
+ push @dirout, <<EOF;
+<TD id=lab$i width="33%">$spacer<a href="javascript:checkClass('$dirclass')" onMouseOver="javascript:displayDiv('$dirclass')" title="toggle all files in $dir"><img src="folder.gif" border=0> $dir</a></TD>
+EOF
+
+ }
+ push @$htm, <<EOF;
+<input name=target class=$dirclass type=checkbox id=target$i value="$fn">$lab
+EOF
+ }
+ else {
+ push @out, <<EOF;
<TD id=lab$i width="33%"><input name=target type=checkbox id=target$i value="$fn">$lab</TD>
EOF
+ }
$i++;
}
- return join "", @out;
+ return join "", @dirout, @out;
[/calc]
-[/table-organize]
+ [/table-organize]
+ </table>
+ </td>
+ <td width="33%" valign=top>
+ <div style="position: relative">
+ [calc]
+ my @out;
+ for(keys %dirs) {
+ my $ary = $dirs{$_};
+ my $dirclass = $_;
+ $dirclass =~ s/\W/_/g;
+ my $elstring = join "<br>", @$ary;
+ my $out = <<EOF;
+<div id="div_$dirclass"
+ style="
+ position: absolute;
+ left: 0;
+ top: 0;
+ display: none;
+ width: 100%;
+ height: 100%;
+ "
+>
+<div class=titlebox>Files in $_</div>
+$elstring
+</div>
+EOF
+ push @out, $out;
+ }
+ return join "\n", @out;
+ [/calc]
+
+ </div>
+ </td>
</table>
-
<br>
<input type=submit name=push value="[L]Push components[/L]">
<br>
2.14 +42 -30 interchange/dist/lib/UI/pages/admin/customer.html
rev 2.14, prev_rev 2.13
Index: customer.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/customer.html,v
retrieving revision 2.13
retrieving revision 2.14
diff -u -r2.13 -r2.14
--- customer.html 8 Oct 2002 14:23:01 -0000 2.13
+++ customer.html 14 Jan 2003 02:25:50 -0000 2.14
@@ -146,7 +146,8 @@
else { $CGI->{ui_text_qualification} = "" }
}
return if $CGI->{ui_text_qualification};
- return unless $Config->{Database}{transactions}{LARGE};
+ return unless
+ $Variable->{CUSTOMER_VIEW_LARGE} or $Config->{Database}{transactions}{LARGE};
$Scratch->{ui_location} = $Tag->area( {
href => '__UI_BASE__/flex_select',
@@ -183,18 +184,24 @@
<!-- ----- Show the active/inactive buttons ----- -->
+
+[output name=search_box]
<FORM ACTION="[area @@MV_PAGE@@]">
-<SMALL><INPUT TYPE=text NAME=ui_text_qualification VALUE="">
-[button text="[L]Search for customer[/L]"]
-mv_nextpage=@@MV_PAGE@@
-[/button]
+<INPUT TYPE=text NAME=ui_text_qualification VALUE="" class=s3>
+<input type=submit value="[L]Search for customer[/L]" class=s3>
</form>
-</SMALL>
+
+[output name=""]
+
<!-- ----- Show the customer list box ----- -->
[if cgi ui_text_qualification]
-[if !cgi mv_like_spec]
-<H4>[msg arg.0="[cgi ui_text_qualification]"]Entries containing "%s"[/msg]</H4>
-[/if]
+[calc]
+ return if $CGI->{mv_like_spec};
+ $Scratch->{page_banner} ||= $Scratch->{page_title};
+ my $val = $Tag->filter('encode_entities', $CGI->{ui_text_qualification});
+ $Scratch->{page_banner} .= ' -- ' . errmsg( 'entries containing "%s"', $val);
+ return;
+[/calc]
[/if]
<FORM ACTION="[process]">
<INPUT TYPE=hidden NAME=mv_nextpage VALUE="@@MV_PAGE@@">
@@ -241,34 +248,32 @@
return;
[/calc]
<br>
-<table __UI_T_PROPERTIES__>
-<tr class=rmarq>
- <th> </th>
- <TH ALIGN=left>[page extra=rmarq href=@@MV_PAGE@@ form=`
+<table width="100%" border=0 cellpadding=0 cellspacing=1 class=rseparator>
+<tr class=rhead>
+ <td>actions</td>
+ <td class=rhead>[page extra=rhead href=@@MV_PAGE@@ form=`
$qual = '';
if($CGI->{ui_text_qualification}) {
$qual .= "ui_text_qualification=$CGI->{ui_text_qualification}";
}
return "ui_sort_field=username\n" . sortrev('username');
- `][L]ID[/L]</a></TH>
- <TH ALIGN=left>[page extra=rmarq href=@@MV_PAGE@@ form=`
+ `][L]ID[/L]</a></td>
+ <td class=rhead>[page extra=rhead href=@@MV_PAGE@@ form=`
return "$qual\nui_sort_field=lname,fname\n" . sortrev('lname');
- `][L]Name[/L]</A></TH>
- <TH ALIGN=left>[page extra=rmarq href=@@MV_PAGE@@ form=`
+ `][L]Name[/L]</A></td>
+ <td class=rhead>[page extra=rhead href=@@MV_PAGE@@ form=`
return "$qual\nui_sort_field=company,lname\n" . sortrev('company');
- `][L]Company[/L]</A></TH>
- <TH ALIGN=left>
+ `][L]Company[/L]</A></td>
+ <td class=rhead>
[page
href=@@MV_PAGE@@
- extra=rmarq
+ extra=rhead
form=`
return "$qual\nui_sort_field=country,state,city\n" . sortrev('country');
- `][L]Location[/L]</A></TH>
+ `][L]Location[/L]</A></td>
</TR>
-<tr class=rborder><td colspan=8 class=rspacer></td></tr>
-
[search-list]
-<TR [item-alternate 2]class=rnorm[else]class=ralt[/else][/item-alternate]>
+<TR [item-alternate 2]class=rownorm[else]class=rowalt[/else][/item-alternate]>
<TD><INPUT TYPE=checkbox NAME=customer VALUE="[item-code]">
[page href="@@MV_PAGE@@"
@@ -323,36 +328,43 @@
</td>
</tr>
[/more-list]
-<tr class=rborder><td colspan=8></td></tr>
</table>
<br>
[on-match]
+[output name=bottom_buttons]
[if scratch can_delete]
-[button form=batch text="[L]Delete checked customers[/L]"
+[button extra="class=s3" form=batch text="[L]Delete checked customers[/L]"
confirm='[L]Are you sure you want to delete the checked customers?[/L]']deletecustomer=1
[/button]
[/if]
- [button form=batch text=`
+ [button form=batch extra="class=s3" text=`
my $tmp = errmsg("$Scratch->{active_nm} checked customers");
return "\u$tmp";
`]
[scratch active_nm]=1[/button]
+[output name=""]
[/on-match]
-</FORM>
+
[if-mm advanced userdb=e]
+[output name=top_buttons]
<form action="[area @@MV_PAGE@@]">
<input type=hidden name=mv_action value=refresh>
<input type=hidden name=mv_click value=MMsu>
- Switch to a user: <select name=user>
+ <span class=s3>Switch to a user:</span> <select name=user class=s3>
[search-list]
<option>[item-code]
[/search-list]
- </select><input type=submit value="[L]Switch[/L]">
+ </select><input type=submit value="[L]Switch[/L]" class=s3>
</form>
+[output name=""]
[/if-mm]
+
[/search-region]
+[output name=bottom_of_form]
+</FORM>
+[output name=""]
<!-- ----- END REAL STUFF ----- -->
2.2 +1 -1 interchange/dist/lib/UI/pages/admin/customer_all.html
rev 2.2, prev_rev 2.1
Index: customer_all.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/customer_all.html,v
retrieving revision 2.1
retrieving revision 2.2
diff -u -r2.1 -r2.2
--- customer_all.html 24 Sep 2002 01:37:29 -0000 2.1
+++ customer_all.html 14 Jan 2003 02:25:50 -0000 2.2
@@ -33,7 +33,7 @@
@_UI_STD_HEAD_@
<P>
-[table-editor cgi=1]
+[table-editor cgi=1 output_map=1]
@_UI_STD_FOOTER_@
<!-- page: @@MV_PAGE@@
2.2 +1 -1 interchange/dist/lib/UI/pages/admin/customer_bill.html
rev 2.2, prev_rev 2.1
Index: customer_bill.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/customer_bill.html,v
retrieving revision 2.1
retrieving revision 2.2
diff -u -r2.1 -r2.2
--- customer_bill.html 24 Sep 2002 01:37:29 -0000 2.1
+++ customer_bill.html 14 Jan 2003 02:25:50 -0000 2.2
@@ -45,7 +45,7 @@
@_UI_STD_HEAD_@
<P>
-[table-editor cgi=1 no-table-meta=1]
+[table-editor cgi=1 no-table-meta=1 output_map=1]
@_UI_STD_FOOTER_@
<!-- page: @@MV_PAGE@@ -->
1.6 +1 -3 interchange/dist/lib/UI/pages/admin/customer_mailing.html
rev 1.6, prev_rev 1.5
Index: customer_mailing.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/customer_mailing.html,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- customer_mailing.html 18 Aug 2002 08:09:05 -0000 1.5
+++ customer_mailing.html 14 Jan 2003 02:25:50 -0000 1.6
@@ -226,9 +226,7 @@
</table>
[/else]
[/if]
- </td>
- </tr>
-</table>
+<br>
<br>
[if cgi mail_template]<!-- update: [update values]-->[/if]
2.1 +34 -15 interchange/dist/lib/UI/pages/admin/customer_pref.html
rev 2.1, prev_rev 2.0
Index: customer_pref.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/customer_pref.html,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- customer_pref.html 18 Jul 2001 02:22:00 -0000 2.0
+++ customer_pref.html 14 Jan 2003 02:25:50 -0000 2.1
@@ -12,23 +12,42 @@
$CGI->{mv_data_table} = 'userdb';
}
if(! $CGI->{ui_data_fields}) {
- $CGI->{ui_data_fields} = 'username company fname lname fax_order mv_shipmode dealer price_level project_id credit_limit inactive email_copy mail_list email phone_day phone_night fax db_acl file_acl';
+ $CGI->{ui_data_fields} = '
+ =General
+
+ username
+ company
+ fname lname
+ fax_order
+ mv_shipmode
+ inactive
+
+ =Dealer Status
+
+ dealer
+ price_level
+ project_id
+ credit_limit
+
+ =Email Preferences
+
+ email
+ email_copy
+ mail_list
+
+ =Contact Info
+
+ phone_day
+ phone_night
+ fax
+
+ =Permissions
+
+ db_acl
+ file_acl';
$CGI->{ui_display_only} = 'company fname lname phone_day';
}
- if(! $CGI->{mv_blob_field}) {
- $CGI->{mv_blob_title} = '<B>Profiles</B>';
- $CGI->{mv_blob_field} = 'preferences';
- $CGI->{mv_blob_label} = 'nothing';
- $CGI->{mv_blob_pointer} = 'p_nickname';
- }
- if(! $CGI->{ui_break_before}) {
- $CGI->{ui_break_before} = 'dealer email_copy email db_acl';
- $CGI->{ui_break_before_label} = 'dealer=Dealer status,
- email_copy=Email preferences,
- email=Contact info,
- db_acl=Permissions';
- }
if(! $CGI->{ui_return_to}) {
$CGI->{ui_return_to} = join "\0",
'__UI_BASE__/customer_view',
@@ -50,7 +69,7 @@
@_UI_STD_HEAD_@
<P>
-[table-editor cgi=1]
+[table-editor cgi=1 output_map=1 form-name=customer_pref]
@_UI_STD_FOOTER_@
<!-- page: @@MV_PAGE@@
2.3 +1 -1 interchange/dist/lib/UI/pages/admin/customer_ship.html
rev 2.3, prev_rev 2.2
Index: customer_ship.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/customer_ship.html,v
retrieving revision 2.2
retrieving revision 2.3
diff -u -r2.2 -r2.3
--- customer_ship.html 24 Sep 2002 01:37:29 -0000 2.2
+++ customer_ship.html 14 Jan 2003 02:25:50 -0000 2.3
@@ -45,7 +45,7 @@
@_UI_STD_HEAD_@
<P>
-[table-editor cgi=1 no-table-meta=1]
+[table-editor cgi=1 no-table-meta=1 output-map=1]
@_UI_STD_FOOTER_@
<!-- page: @@MV_PAGE@@ -->
2.6 +364 -245 interchange/dist/lib/UI/pages/admin/customer_view.html
rev 2.6, prev_rev 2.5
Index: customer_view.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/customer_view.html,v
retrieving revision 2.5
retrieving revision 2.6
diff -u -r2.5 -r2.6
--- customer_view.html 20 Nov 2002 17:40:11 -0000 2.5
+++ customer_view.html 14 Jan 2003 02:25:50 -0000 2.6
@@ -1,14 +1,14 @@
-[set page_title][L]Customer manager[/L]: [L]View customer[/L][/set]
+[tmp page_title][L]Customer manager[/L]: [L]View customer[/L] [cgi customer][/tmp]
[set ui_class]Customers[/set]
[set page_banner][L]View customer[/L][/set]
[set help_name]customer.view[/set]
[set icon_name]icon_people.gif[/set]
+
@_UI_STD_HEAD_@
+
[calc]
delete $Scratch->{ui_bounce};
- #Log("got here, customer=$CGI->{customer}, arg=$CGI->{mv_arg}");
- return if $CGI->{customer};
- $CGI->{customer} = $CGI->{mv_arg}
+ $CGI->{customer} ||= $CGI->{mv_arg}
or $Scratch->{ui_bounce} = '__UI_BASE__/customer';
return;
[/calc]
@@ -17,267 +17,386 @@
[/if]
<!-- ----- BEGIN REAL STUFF ----- -->
-[update values]
-[loop list="[value-extended customer]"]
-
-<table border=0 __UI_T_PROPERTIES__>
-<tr>
-<td colspan=6 class=rborder><img src="bg.gif" height=1></td>
-</tr>
-
-<tr>
-<td colspan=6 align=left class=rnorm>
-<table>
-<tr><td align=right>
-<b>[L]Customer Username[/L]: </td><td>[loop-code]</b></td>
-</tr><tr>
-<td align=right><b>[L]Customer[/L]: </td><td>
-<A HREF="[area
- href=__UI_BASE__/customer_pref
- form=|
- customer=[cgi customer]
- |
- ]"><u>[loop-data userdb fname] [loop-data userdb lname]</u></A>
- </b>
-</td>
-</tr>
-</table>
-</td>
-</tr>
-
-<tr>
-<td colspan=2 valign=top>
-
-<!-- ----- Customer information ----- -->
-
-<form>
-
-<table border=0>
-<tr><td align=right>
-<font size=2><b> [L]Company[/L]: </b></font>
-</td><td><font size=2>[loop-data userdb company]</font></td></tr>
-
-<tr><td align=right>
-<font size=2><b> [L]Home phone[/L]: </b></font>
-</td><td><font size=2>[loop-data userdb phone_night]</font></td></tr>
-
-<tr><td align=right>
-<font size=2><b> [L]Work phone[/L]: </b></font>
-</td><td><font size=2>[loop-data userdb phone_day]</font></td></tr>
-
-<tr><td align=right>
-<font size=2><b> [L]Email[/L]: </b></font>
-</td><td><font size=2> <a href="mailto:[loop-data userdb email]"><U>[loop-data userdb email]</U></a></font></td></tr>
-<tr><td align=right>
-<font size=2><b> [L]Payment type[/L]: </b></font>
-</td><td><font size=2>[display arbitrary=custview table=userdb column=fax_order key="[loop-code]"]</a></font></tr>
-
-[if-loop-data userdb project_id]
-<tr><td align=right>
-<font size=2><b>[L]PO Number[/L]:</b></font>
-</td><td><font size=2>[loop-data userdb project_id]</font></td></tr>
-[/if-loop-data]
-
-[if-loop-data userdb fax]
-<tr><td align=right>
-<font size=2><b>[L]FAX number[/L]:</b></font>
-</td><td><font size=2>[loop-data userdb fax]</font></td></tr>
-[/if-loop-data]
-<tr><td align=right>
-<font size=2><b>[L]Dealer[/L]:</b></font>
-</td><td><font size=2>[display arbitrary=custview table=userdb column=dealer key="[loop-code]"]</font></td></tr>
+[perl tables=country]### pre-open database for calcs below[/perl]
-
-<tr><td align=right>
-<font size=2><b>[L]Wants email copy[/L]:</b></font>
-</td><td><font size=2>[display arbitrary=custview table=userdb column=email_copy key="[loop-code]"]</font></td></tr>
-
-<tr><td align=right>
-<font size=2><b>[L]Mail lists[/L]:</b></font>
-</td><td><font size=2>[loop-data userdb mail_list]</font></td></tr>
-
-</table>
-</form>
-
-</td><td valign=top colspan=4>
-[set bill_address]
-[loop-data userdb b_fname] [loop-data userdb b_lname]<br>
-[loop-data userdb b_address1]<br>
-[if-loop-data userdb b_address2]
-[loop-data userdb b_address2]<br>
-[/if-loop-data]
-[loop-data userdb b_city], [loop-data userdb b_state] [loop-data userdb b_zip]<br>
-[/set]
-
-[set ship_address]
-[loop-data userdb fname] [loop-data userdb lname]<br>
-[loop-data userdb address1]<br>
-[if-loop-data userdb address2]
-[loop-data userdb address2]<br>
-[/if-loop-data]
-[loop-data userdb city], [loop-data userdb state] [loop-data userdb zip]<br>
-[/set]
-
-<font size=2>
-<p>
-[if-loop-data userdb username]
-<A HREF="[area
- href=__UI_BASE__/customer_bill
- form=|
- customer=[loop-data userdb username]
- |
- ]"><b><u>[L]Bill To[/L]</u>:</b></A>
+[query list=1
+ prefix=loop
+ sql="select * from userdb where username = '[cgi customer]'"]
+<table width="100%" border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td>
+ <table width="100%" border="0" cellpadding="6" cellspacing="1" class="rseparator">
+ <tr>
+ <td width="25%" nowrap class="block4bold">User Name: [loop-code]</a></td>
+ <td width="25%" nowrap class="block4bold">
+ Account Status:
+ [filter uc]
+ [if-loop-param inactive]
+ [L]inactive[/L]
+ [else]
+ [L]active[/L]
+ [/else]
+ [/if-loop-param]
+ [/filter]
+
+ </td>
+ <td width="25%" nowrap class="block4bold">
+
+ Total Sales:
+ [query arrayref=totals sql=|
+ SELECT total_cost,status
+ FROM transactions
+ WHERE username = '[loop-code]'
+ |][/query]
+ [calc]
+ my $q = $Tmp->{totals};
+ my $ary;
+ return 'no orders' unless $q and defined $q->[0];
+ my $total = 0;
+ for(@$q) {
+ next if $_->[1] eq 'canceled';
+ $total += $_->[0];
+ }
+ return $Tag->currency({ body => $total } );
+ [/calc]
+ </td>
+ <td width="25%" nowrap class="block4bold">
+ Last login: <span class="maincontent">
+ [if-loop-param !mod_time]
+ Never
+ [else]
+ [time time="[loop-param mod_time]"]%b %e, %Y %l:%M %P[/time]
+ [/else]
+ [/if-loop-param]
+ </span>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td height="6"><img src="bg.gif" width="1" height="6"></td>
+ </tr>
+ <tr>
+ <td>
+ <table width="100%" border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <!-- CUSTOMER DETAILS -->
+ <td width="33%" valign="top">
+ <table width="100%" height="200" border="0" cellpadding="6" cellspacing="1" class="rseparator">
+ <tr>
+
+ <td height="1%" class="block4"><a href="[area href='admin/customer_view' form='customer=[loop-param username]']">Customer Details</a></td>
+ </tr>
+ <tr>
+ <td height="99%" valign="top" class="block4">
+ <table width="100%" border="0" cellspacing="0" cellpadding="1">
+ <tr>
+ <td width="30%" class="block4bold">Customer:</td>
+ <td width="70%" class="maincontent"><a href="[area href='admin/customer_view' form='customer=[loop-param username]']">[loop-param fname] [loop-param lname]</a>
+ </td>
+ </tr>
+ <tr>
+ <td class="block4bold"> [L]Company[/L]:</td>
+ <td class="maincontent">[loop-param company]</td>
+ </tr>
+ <tr>
+ <td nowrap class="block4bold">[L]Home phone[/L]:</td>
+ <td class="maincontent">[loop-param phone_night]</td>
+ </tr>
+ <tr>
+ <td nowrap class="block4bold"> [L]Work phone[/L]:</td>
+ <td class="maincontent">[loop-param phone_night]</td>
+ </tr>
+ <tr>
+ <td class="block4bold">[L]Email[/L]:</td>
+ <td class="maincontent"><a href="mailto:[loop-param email]">[loop-param email]</a></td>
+ </tr>
+ <tr>
+ <td nowrap class="block4bold">[L]Payment type[/L]:</td>
+ <td class="maincontent">[loop-param payment_method]</td>
+ </tr>
+ [if variable CUSTOMER_VIEW_DEALER]
+ <tr>
+ <td nowrap class="block4bold">[L]Dealer[/L]:</td>
+ <td class="maincontent">
+ [page href=admin/customer_pref
+ form="
+ customer=[loop-code]
+ start_at=dealer
+ "][if-loop-param dealer]Yes[else]No[/else][/if-loop-param]</a>
+ </td>
+ </tr>
+ <tr>
+ <td nowrap class="block4bold">[L]Price Level[/L]:</td>
+ <td class="maincontent">
+ [page href=admin/customer_pref
+ form="
+ customer=[loop-code]
+ start_at=price_level
+ "][display type=display table=userdb col=price_level key="[loop-code]"]</a>
+ </td>
+ </tr>
+ [/if]
+ <tr>
+ <td height="15" colspan="2" class="block4bold"><img src="bg.gif" width="1" height="1"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td width="3"><img src="bg.gif" width="3" height="1"></td>
+ <!-- BILLING DETAILS -->
+ <td width="33%" valign="top">
+ <table width="100%" height="200" border="0" cellpadding="6" cellspacing="1" class="rseparator">
+ <tr>
+ <td height="1%" class="block4"><a href="[area
+
+ href="admin/customer_bill"
+ form="
+ customer=[loop-code]
+ item_id=[loop-code]
+ "
+ ]">[L]Billing Details[/L]</a></td>
+ </tr>
+ <tr>
+ <td height="99%" valign="top" class="block4">
+[if-loop-param b_address1]
+ [loop prefix=bill list="[loop-code]"]
+ <table width="100%" border="0" cellspacing="0" cellpadding="1">
+ <tr>
+ <td width="30%" class="block4bold">[L]Name[/L]:</td>
+ <td width="70%" class="maincontent"><A HREF="[area
+ href=__UI_BASE__/customer_view
+ arg="[loop-param username]"
+ ]"><u>[loop-param b_fname] [loop-param b_lname]</A>
+ </td>
+ </tr>
+ [if-bill-data userdb b_company]
+ <tr>
+ <td width="30%" class="block4bold">[L]Company[/L]:</td>
+ <td width="70%" class="maincontent">
+ [loop-param b_company]
+ </td>
+ </tr>
+ [/if-bill-data]
+ <tr>
+ <td valign="top" class="block4bold">[L]Address[/L]:</td>
+ <td class="maincontent">
+ [loop-param b_address1]
+ [if-bill-data userdb b_address2]
+ <br>
+ [loop-param b_address2]
+ [/if-bill-data]
+ </td>
+ </tr>
+ [if-bill-data userdb b_country =~ /^US|^CA/]
+ <tr>
+ <td class="block4bold">[L]City, State, Zip[/L]:</td>
+ <td class="maincontent">[loop-param b_city], [loop-param state] [loop-param zip]</td>
+ </tr>
+ [else]
+ <tr>
+ <td class="block4bold">[L]City[/L]:</td>
+ <td class="maincontent">[loop-param b_city]</td>
+ </tr>
+ [if-bill-param b_state]
+ <tr>
+ <td class="block4bold">[L]State[/L]:</td>
+ <td class="maincontent">[loop-param b_state]</td>
+ </tr>
+ [/if-bill-data]
+ [if-bill-param b_zip]
+ <tr>
+ <td class="block4bold">[L]Postal code[/L]:</td>
+ <td class="maincontent">[loop-param b_zip]</td>
+ </tr>
+ [/if-bill-data]
+ [/else]
+ [/if-bill-data]
+ <tr>
+ <td class="block4bold">[L]Country[/L]:</td>
+ <td class="maincontent">[data table=country col=name key="[loop-param b_country]"]</td>
+ </tr>
+ <tr>
+ <td height="15" colspan="2" class="block4bold"><img src="bg.gif" width="1" height="1"></td>
+ </tr>
+ </table>
+ [/loop]
[else]
- <b>[L]Bill To[/L]:</b>
+ <i>[L]Same as shipping address[/L]</i>
[/else]
-[/if-loop-data]
-<blockquote>
-[if-loop-data userdb b_address1]
-[scratch bill_address]
-[else]
-[scratch ship_address]
-[/else]
-[/if-loop-data]
-</blockquote>
-
-<A HREF="[area
- href=__UI_BASE__/customer_ship
- form=|
- customer=[cgi customer]
- |
- ]"><b><u>[L]Ship To[/L]</u>:</b></A>
-<br>
-<blockquote>
-[scratch ship_address]
-</blockquote>
-</font>
-
-[set bill_address][/set]
-[set ship_address][/set]
-</td></tr>
-
-<tr>
-<td colspan=6 class=rborder><img src="bg.gif" height=1></td>
-</tr>
-
-<tr>
-<td>
-<table border=0 cellpadding=1 cellspacing=3>
-
-<tr>
-<td class=rnorm align=right>
- <B>[L]Order number[/L]</B>
-</td>
-<td> </td>
-<td class=rnorm>
- <B>[L]Order date[/L]</B>
-</td>
-<td> </td>
-<td class=rnorm align=right>
- <B>[L]Order Total[/L]</B>
-</td>
-<td> </td>
-<td class=rnorm>
- <B>[L]Status[/L]</B>
-</td>
-</tr>
-[query
- list=1
- st=db
- table=transactions
- sql="select
- order_number, order_date, total_cost, status
- FROM transactions
- WHERE username = '[loop-code]'
- ORDER BY order_date
- "
-]
-<tr>
-<td align=right>
- <A HREF="[area __UI_BASE__/order_view [sql-code]]"><U>[sql-code]</U></A>
-</td>
-<td></td>
-<td>
- [sql-param order_date]
-</td>
-<td></td>
-<td align=right>
- [currency][sql-param total_cost][/currency]
-</td>
-<td></td>
-<td>
-<A HREF="[area
- href=__UI_BASE__/order_status
- form="
- order=[sql-code]
- "]"><U>[msg][sql-param status][/msg]</U></A>
-</td>
-</tr>
+[/if-loop-param]
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td width="3"><img src="bg.gif" width="3" height="1"></td>
+ <!-- SHIPPING DETAILS -->
+ <td width="34%" valign="top">
+ <table width="100%" height="200" border="0" cellpadding="6" cellspacing="1" class="rseparator">
+ <tr>
+ <td height="1%" class="block4"><a href="[area
+
+ href="admin/customer_ship"
+ form="
+ customer=[loop-code]
+ item_id=[loop-code]
+ "
+ ]">[L]Shipping Details[/L]</a></td>
+ </tr>
+ <tr>
+ <td height="99%" valign="top" class="block4">
+ <table width="100%" border="0" cellspacing="0" cellpadding="1">
+ <tr>
+ <td width="30%" class="block4bold">[L]Name[/L]:</td>
+ <td width="70%" class="maincontent"><A HREF="[area
+ href=__UI_BASE__/customer_view
+ arg="[loop-code]"
+ ]"><u>[loop-param fname] [loop-param lname]</A>
+ </td>
+ </tr>
+ [if-loop-param company]
+ <tr>
+ <td width="30%" class="block4bold">[L]Company[/L]:</td>
+ <td width="70%" class="maincontent">
+ [loop-param company]
+ </td>
+ </tr>
+ [/if-loop-param]
+ <tr>
+ <td valign="top" class="block4bold">[L]Address[/L]:</td>
+ <td class="maincontent">
+ [loop-param address1]
+ [if-loop-param address2]
+ <br>
+ [loop-param address2]
+ [/if-loop-param]
+ </td>
+ </tr>
+ [if-loop-param country =~ /^US|^CA/]
+ <tr>
+ <td class="block4bold">[L]City, State, Zip[/L]:</td>
+ <td class="maincontent">[loop-param city], [loop-param state] [loop-param zip]</td>
+ </tr>
+ [else]
+ <tr>
+ <td class="block4bold">[L]City[/L]:</td>
+ <td class="maincontent">[loop-param city]</td>
+ </tr>
+ [if-loop-param state]
+ <tr>
+ <td class="block4bold">[L]State[/L]:</td>
+ <td class="maincontent">[loop-param state]</td>
+ </tr>
+ [/if-loop-param]
+ [if-loop-param zip]
+ <tr>
+ <td class="block4bold">[L]Postal code[/L]:</td>
+ <td class="maincontent">[loop-param zip]</td>
+ </tr>
+ [/if-loop-param]
+ [/else]
+ [/if-loop-param]
+ <tr>
+ <td class="block4bold">[L]Country[/L]:</td>
+ <td class="maincontent">[data table=country col=name key="[loop-param country]"]</td>
+ </tr>
+ <tr>
+ <td height="15" colspan="2" class="block4bold"><img src="bg.gif" width="1" height="1"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td height=6><img src="bg.gif" width=1 height=6></td>
+ </tr>
+ <tr>
+ <td>
+ <!-- CUSTOMERS ORDER GRID -->
+ <table width="100%" border=0 cellpadding=0 cellspacing=1 class=rseparator>
+ <tr>
+ <td width="14%" class=rhead style="padding: 5px">[L]Status[/L]</td>
+ <td width="14%" class=rhead style="padding: 5px">[L]Order Number[/L]</td>
+ <td width="14%" class=rhead style="padding: 5px">[L]Order Date[/L]</td>
+ <td width="14%" class=rhead style="padding: 5px; text-align: left">[L]Shipped to[/L]</td>
+ <td width="14%" class=rhead style="padding: 5px; text-align: right">[L]Number of items[/L]</td>
+ <td width="14%" class=rhead style="padding: 5px; text-align: right">[L]Subtotal[/L]</td>
+ <td width="14%" class=rhead style="padding: 5px; text-align: right">[L]Total[/L]</td>
+ </tr>
+[query list=1 sql="select * from transactions where username = '[loop-code]'"]
+ <tr class="[sql-alternate 2]rowalt[else]rownorm[/else][/sql-alternate]">
+ <td style="padding: 5px">[page href="admin/order_status"
+ form="order=[loop-code]"
+ ]
+ [display table=transactions
+ column=status
+ key="[sql-code]"
+ arbitrary=order_view
+ ]</A>
+ <td style="padding: 5px">
+ [page href='__UI_BASE__/order_view' form='order=[sql-code]'][sql-code]</a>
+ </td>
+ <td style="padding: 5px">[convert-date fmt="%b %e, %Y %H:%M"][sql-param order_date][/convert-date]</td>
+ <td align=left style="padding: 5px">
+ [loop-param city], [loop-param state] [loop-param country]
+ </td>
+ <td align=right style="padding: 5px">[sql-param nitems]</td>
+ <td align=right style="padding: 5px">[currency][sql-param subtotal][/currency]</td>
+ <td align=right style="padding: 5px">[currency][sql-param total_cost][/currency]</td>
+ </tr>
[/query]
-
+ </table>
+ </td>
+ </tr>
</table>
-</td>
-</tr>
-<tr>
-<td colspan=6 class=rborder><img src="bg.gif" height=1></td>
-</tr>
+[seti page_banner][L]View Customer[/L]:
+ [if-loop-param company]
+ [loop-param company]
+ [else][loop-param fname] [loop-param lname][/else]
+ [/if-loop-param]
+ [/seti]
-</table>
-<SMALL>
-<form action="[area __UI_BASE__/customer]" method=post>
+[output name=bottom_buttons]
+<form action="[area __UI_BASE__/order]" method=post>
<input type=hidden name=mv_session_id value="[data session id]">
<input type=hidden name=mv_action value=back>
-<input type=hidden name=customer value="[loop-data userdb username]">
+<input type=hidden name=order value="[loop-data transactions order_number]">
+<input type=hidden name=archive value=false>
<input type=hidden name=viewnext value=1>
-
-[button text="[L]Back[/L]"]
+[set [L]Return[/L]]
viewnext=
-viewcustomer=
-[/button]
+vieworder=
+[/set]
+<input type=submit name=mv_click value="[L]Return[/L]" class=s3>
+<input type=submit name="vieworder" value="[L]View next order[/L]" class=s3>
-[button text="[L]Enter order[/L]"]
-mv_nextpage=__UI_BASE__/entry
-mv_todo=return
-[/button]
-
-[if-mm advanced userdb=e]
-[if-loop-data userdb inactive]
-[button name="activate" text="[L]Activate customer[/L]"][/button]
+[if-loop-data transactions archived]
+<input type=submit name="unarchiveorder" value="[L]Un-archive order and view next[/L]" class=s3>
[else]
-[button name="deactivate" text="[L]Deactivate customer[/L]"
- confirm="[L]Are you sure you want to deactivate this customer?[/L]"][/button]
+<input type=submit name="archiveorder" value="[L]Archive order and view next[/L]" class=s3>
[/else]
[/if-loop-data]
-
-[button text="[L]Change password[/L]"]
-user_id=[loop-code]
-mv_nextpage=__UI_BASE__/customer_change_pass
-[/button]
-[/if-mm]
-
-[if-mm advanced userdb=d]
-<input type=submit name="deletecustomer" value="[L]Delete customer[/L]"
- onClick="return confirm('[L]Are you sure you want to delete this customer?[/L]')">
+[if-mm advanced order=d]
+<input type=submit name="deleteorder" value="[L]Delete order and view next[/L]"
+ onClick="return confirm('[L]Are you sure you want to delete this order?[/L]')" class=s3>
[/if-mm]
-
</form>
-</SMALL>
-[if type=data term="forum::code::customer-[loop-code]"]
- [forum top="customer-[loop-code]" /]
-[else]
- [page href=forum/submit
- form="
- customer=1
- mv_arg=[loop-code]
- "]Create forum for this user</A>
-[/else]
-[/if]
+[output]
+
+[/query]
-[/loop]
<!-- ----- END REAL STUFF ----- -->
@_UI_STD_FOOTER_@
-<!-- page: @@MV_PAGE@@ version: $Id: customer_view.html,v 2.5 2002/11/20 17:40:11 mheins Exp $ -->
+<!-- page: @@MV_PAGE@@ version: $Id: customer_view.html,v 2.6 2003/01/14 02:25:50 mheins Exp $ -->
2.11 +72 -36 interchange/dist/lib/UI/pages/admin/db_metaconfig.html
rev 2.11, prev_rev 2.10
Index: db_metaconfig.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/db_metaconfig.html,v
retrieving revision 2.10
retrieving revision 2.11
diff -u -r2.10 -r2.11
--- db_metaconfig.html 7 Nov 2002 19:15:54 -0000 2.10
+++ db_metaconfig.html 14 Jan 2003 02:25:50 -0000 2.11
@@ -14,9 +14,10 @@
[page href=admin/db_newview
+ extra="class=rtitle"
form="
ui_table=[cgi ui_table]
- "]Create new view</A>
+ "][L]Create new view[/L]</A>
[/tmp]
[set ui_class]Admin[/set]
@@ -45,18 +46,18 @@
view=dbconfig
no-table-meta=1
tabbed=1
- table_width=900
+ table_width=1000
tab_width=120
break_row_class=rmarq
- panel_width=900
+ output-map=1
+ ui_style=1
+ panel_width=1000
panel_height=700
no-meta=1
left_width=160
label_cell_valign=top
help_cell_width=200
start_at="[cgi start_at]"
-
-
key="[scratch tmp_dbcode]"
ui_data_fields="
@@ -65,10 +66,10 @@
code
name
- extended.file_upload
- extended.tabbed
- extended.ui_meta_specific
+ type
+ extended.tabbed extended.file_upload extended.ui_meta_specific
extended.restrict_allow
+ extended.filter_field
=Select page display
@@ -95,8 +96,12 @@
extended.link_label
extended.link_sort
extended.link_fields
- extended.link_view
+ extended.link_auto_number extended.link_row_qual
+ extended.link_row_blank extended.link_view
extended.link_extra
+
+ =Included form
+
extended.include_before
extended.include_form
extended.include_form_expand
@@ -104,33 +109,26 @@
=Tabbed Display
- extended.tab_width
- extended.tab_height
- extended.panel_width
- extended.panel_height
- extended.tab_horiz_offset
- extended.tab_vert_offset
+ extended.tab_width extended.panel_width
+ extended.tab_height extended.panel_height
+ extended.tab_horiz_offset extended.tab_vert_offset
+ extended.tab_style extended.panel_style
+ extended.panel_shade
=Edit Page HTML
- extended.table_width
- extended.left_width
- extended.data_row_class
- extended.break_row_class
- extended.spacer_row_class
- extended.combo_row_class
- extended.label_cell_class
- extended.data_cell_class
- extended.widget_cell_class
+ extended.table_width extended.left_width
+ extended.widget_class extended.data_row_class
+ extended.break_row_class extended.spacer_row_class
+ extended.combo_row_class extended.label_cell_class
+ extended.data_cell_class extended.widget_cell_class
extended.help_cell_class
=Spreadsheet page
- extended.spread_fields
- extended.spread_height
- extended.spread_width
+ extended.spread_height extended.spread_width
+ extended.spread_fields extended.spread_textarea_rows
extended.spread_textarea
- extended.spread_textarea_rows
extended.spread_meta
"
@@ -141,10 +139,14 @@
height => 'Rows on select page',
'extended.bottom_buttons' => 'Buttons only on bottom',
'extended.restrict_allow' => 'Allow these ITL tags',
- 'extended.file_upload' => 'Allow file upload for this table',
- 'extended.left_width' => 'Width specification for label column',
+ 'extended.file_upload' => 'Allow file upload for this table',
+ 'extended.filter_field' => 'Import field filtering',
+ 'extended.left_width' => 'Width specification for label column',
'extended.panel_height' => 'Panel Height',
'extended.panel_width' => 'Panel Width',
+ 'extended.panel_style' => 'Panel CSS Style',
+ 'extended.panel_shade' => 'Panel Lightest Shade',
+ 'extended.tab_style' => 'Tab CSS Style',
'extended.spread_fields' => 'Fields to edit',
'extended.spread_height' => 'Number of rows',
'extended.spread_meta' => 'Fields to meta display',
@@ -157,7 +159,7 @@
'extended.tab_width' => 'Tab Width',
'extended.tabbed' => 'Use tabbed display',
'extended.ui_meta_specific' => 'Present item-specific meta for this table',
- 'extended.table_width' => 'Width specification for editor table',
+ 'extended.table_width' => 'Width specification for editor table',
'extended.ui_data_fields' => 'Fields to edit',
'extended.ui_display_only' => 'Fields for display only',
'extended.view_from' => 'Custom view from field',
@@ -167,6 +169,9 @@
'extended.ui_sort_combined' => 'Complex sort for select page',
'extended.ui_special_add' => 'Special Additions',
'extended.link_table' => 'Table to link in cell',
+ 'extended.link_row_blank' => 'Number of blank rows',
+ 'extended.link_row_qual' => 'Field indicating valid row',
+ 'extended.link_auto_number' => 'Allow auto_number in link',
'extended.link_before' => 'Column to appear before',
'extended.include_before' => 'Column for include to appear before',
'extended.include_form' => 'Custom form widget for inclusion',
@@ -178,6 +183,7 @@
'extended.link_fields' => 'Fields in table to link',
'extended.link_view' => 'View to derive link display',
'extended.link_extra' => 'HTML style info for linked cells',
+ 'extended.widget_class' => 'HTML widget class',
'extended.data_row_class' => 'Data row class',
'extended.break_row_class' => 'Break row class',
'extended.spacer_row_class' => 'Spacer row class',
@@ -192,10 +198,29 @@
}`
+ override.type=table
+
help=`{
- 'extended.panel_height' => 'Default 600 pixels.',
+ 'extended.panel_height' => 'Default 500 pixels.',
'extended.panel_width' => 'Default 800 pixels.',
- 'extended.tab_height' => 'Default 30 pixels.',
+ 'extended.tab_height' => 'Default 20 pixels.',
+ 'extended.filter_field' => q{
+ Specified one per line:
+ <blockquote>
+<pre>
+ fieldname1=filter
+ fieldname2=filter1 filter2
+</pre>
+ </blockquote>
+ If multiple tables, must specify table as well:
+ <blockquote>
+<pre>
+ table1:fieldname1=filter
+ table2:fieldname2=filter1 filter2
+</pre>
+ </blockquote>},
+ 'extended.link_row_blank' => 'default 1',
+ 'extended.link_row_qual' => 'Default is key field, needs to be different field if auto-numbering.',
'extended.tab_horiz_offset' => 'Tab Horizontal Offset',
'extended.tab_vert_offset' => 'Tab Vertical Offset',
'extended.tab_width' => 'Default 100 pixels.',
@@ -210,15 +235,20 @@
code => 'text_40',
name => 'text_40',
height => 'text_5',
+ type => 'hidden',
'extended.restrict_allow' => 'text_40',
'extended.file_upload' => 'yesno',
+ 'extended.filter_field' => 'textarea_2_40',
+ 'extended.tab_style' => 'textarea_5_40',
+ 'extended.panel_style' => 'textarea_5_40',
+ 'extended.panel_shade' => 'select',
'extended.left_width' => 'text_8',
'extended.panel_height' => 'text_5',
'extended.panel_width' => 'text_5',
'extended.spread_fields' => 'move_combo_8',
'extended.spread_height' => 'text_5',
- 'extended.spread_meta' => 'checkbox_left_4',
- 'extended.spread_textarea' => 'checkbox_left_4',
+ 'extended.spread_meta' => 'multiple',
+ 'extended.spread_textarea' => 'multiple',
'extended.spread_textarea_rows' => 'text_5',
'extended.spread_width' => 'text_5',
'extended.ui_special_add' => 'multiple',
@@ -245,6 +275,9 @@
'extended.link_label' => 'text_50',
'extended.link_fields' => 'text_70',
'extended.link_key' => 'text_20',
+ 'extended.link_row_blank' => 'text_3',
+ 'extended.link_row_qual' => 'text_12',
+ 'extended.link_auto_number' => 'yesno',
'extended.top_buttons' => 'yesno',
'fieldmeta' => 'links',
}`
@@ -271,6 +304,8 @@
'extended.ui_show_fields' => 8,
'extended.ui_data_fields' => 16,
'extended.spread_fields' => 8,
+ 'extended.spread_meta' => '10',
+ 'extended.spread_textarea' => '10',
}`
width=`{
@@ -294,6 +329,7 @@
'extended.spread_fields' => 'columns',
'extended.spread_meta' => 'columns',
'extended.spread_textarea' => 'columns',
+ 'extended.panel_shade' => 'f=white,e=Light gray,d=Medium gray,c=Dark gray',
'extended.link_table' => 'tables',
'extended.link_before' => '',
'extended.ui_sort_option' => q{=none,n=numeric,r=reverse,f=case-insensitive},
@@ -308,4 +344,4 @@
]
@_UI_STD_FOOTER_@
-<!-- page: @@MV_PAGE@@ version: $Revision: 2.10 $ -->
+<!-- page: @@MV_PAGE@@ version: $Revision: 2.11 $ -->
2.2 +7 -5 interchange/dist/lib/UI/pages/admin/db_newview.html
rev 2.2, prev_rev 2.1
Index: db_newview.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/db_newview.html,v
retrieving revision 2.1
retrieving revision 2.2
diff -u -r2.1 -r2.2
--- db_newview.html 11 Oct 2002 18:42:47 -0000 2.1
+++ db_newview.html 14 Jan 2003 02:25:50 -0000 2.2
@@ -1,9 +1,9 @@
+[flag type=write table=mv_metadata]
[set table_perms]mv_metadata[/set]
[tmp page_title] New view for table display: [cgi ui_table] [/tmp]
-[set ui_class]Admin[/set]
-@_UI_STD_HEAD_@
+[set ui_class]Tables[/set]
-[flag type=write table=mv_metadata]
+@_UI_STD_HEAD_@
[tmpn bounce_url][/tmpn]
@@ -56,7 +56,8 @@
ui_wizard_fields="ui_table ui_view based_on"
table_width="50%"
hidden.do_view=1
- ui_nextpage="@@MV_PAGE@@"
+ href="@@MV_PAGE@@"
+ action=go
ui_prevpage=""
no_meta=1
no_top=1
@@ -82,4 +83,5 @@
/]
@_UI_STD_FOOTER_@
-<!-- page: @@MV_PAGE@@ Revision: $Id: db_newview.html,v 2.1 2002/10/11 18:42:47 mheins Exp $ -->
+
+<!-- page: @@MV_PAGE@@ Revision: $Id: db_newview.html,v 2.2 2003/01/14 02:25:50 mheins Exp $ -->
2.5 +209 -159 interchange/dist/lib/UI/pages/admin/dbconfig.html
rev 2.5, prev_rev 2.4
Index: dbconfig.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/dbconfig.html,v
retrieving revision 2.4
retrieving revision 2.5
diff -u -r2.4 -r2.5
--- dbconfig.html 18 Aug 2002 08:09:05 -0000 2.4
+++ dbconfig.html 14 Jan 2003 02:25:50 -0000 2.5
@@ -9,7 +9,6 @@
[set page_perm]dbconfig[/set]
[set table_perm]1[/set]
-[set page_title]Configuration[/set]
[set ui_class]Admin[/set]
[set help_name]genconfig.main[/set]
[set icon_name]icon_config.gif[/set]
@@ -18,6 +17,7 @@
<!-- ----- BEGIN REAL STUFF ----- -->
+[tmp page_title]Table Configuration: [cgi mv_data_table][/tmp]
[perl tables="[list-databases] __UI_META_TABLE__"]
%ignore;
my @ignore = qw/
@@ -95,6 +95,7 @@
%Misc_set = (
GUESS_NUMERIC => '=No numeric guess, 1=Guess numeric fields',
EXCEL => '=No Excel correction, 1=Correct for Excel peculiarities',
+ LARGE => '=No, 1=Yes (prevents building select list)',
HOT => '=Normal open, 1=Keep table always connected',
CONTINUE => q{=No extra line processing,
DITTO="Ditto" line continuation,
@@ -226,23 +227,11 @@
[/perl]
[/if]
-<center>
-<FORM METHOD=POST ACTION="[area @@MV_PAGE@@]">
-<table __UI_T_PROPERTIES__>
-
-class=rnorm>
-<TABLE border=0>
-<TR>
- <TD class=rborder COLSPAN=3><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1><CENTER>Database configuration</CENTER></TD>
-</TR>
-
-<TR>
- <TD COLSPAN=3><input type=submit name=mv_dbconf VALUE="Save"></TD>
-</TR>
-
-<TR>
- <TD> </TD>
- <TD>
+[output name="top_of_form"]
+<FORM METHOD=POST ACTION="[area admin/dbconfig_save]">
+
+[output name=""]
+<table width="100%" border=0 cellpadding=2 cellspacing=0 class=rseparator>
[comment] Prevent Safe object creation problems [/comment]
[seti have_dbi][version extended=1 modtest='DBI'][/seti]
@@ -337,52 +326,44 @@
$dfile .= "</TT>";
my $obj = $ref->{Object};
- push @out, <<EOF;
-<TR>
-<TH VALIGN=TOP ALIGN=RIGHT width="15%">
-Current
-</TH>
-<td VALIGN=TOP>
- <TABLE border=1 width="100%">
- <tr>
- <th valign=top align=left>Type</th>
- <td>$text_type</td>
- </tr>
- <tr>
- <th valign=top align=left width="30%">Class</th>
- <td>$class</td>
- </tr>
- <tr>
- <th valign=top align=left width="30%">Directory</th>
- <td>$dir</td>
- </tr>
- <tr>
- <th valign=top align=left width="30%">Text File</th>
- <td>$file</td>
- </tr>
- <tr>
- <th valign=top align=left width="30%">DB File</th>
- <td>$dfile</td>
- </tr>
- </table>
-</TD>
-</TR>
-
-<TR>
- class=rspacer COLSPAN=3><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></TD>
-</TR>
-EOF
+## push @out, <<EOF;
+## <tr class=rhead>
+## <td colspan=2 class=rhead>Current Settings</td>
+## </tr>
+## <tr class=rownorm>
+## <td valign=top class=clabel>Type</td>
+## <td class=cdata>$text_type</td>
+## </tr>
+## <tr class=rownorm>
+## <td valign=top width="30%" class=clabel>Class</td>
+## <td class=cdata>$class</td>
+## </tr>
+## <tr class=rownorm>
+## <td valign=top width="30%" class=clabel>Directory</td>
+## <td class=cdata>$dir</td>
+## </tr>
+## <tr class=rownorm>
+## <td valign=top width="30%" class=clabel>Text File</td>
+## <td class=cdata>$file</td>
+## </tr>
+## <tr class=rownorm>
+## <td valign=top width="30%" class=clabel>DB File</td>
+## <td class=cdata>$dfile</td>
+## </tr>
+##
+## <tr class=rownorm>
+## <td COLSPAN=2><input type=submit name=mv_dbconf VALUE="[L]Save[/L]" class=s3></TD>
+## </tr>
+## EOF
}
$use_sql = 1 if $current_sql or ($new and $base_sql);
push @out, <<EOF;
-<TR>
-<TH VALIGN=TOP ALIGN=RIGHT width="15%">
+<tr class=rhead>
+<td VALIGN=TOP colspan=2 class=rhead>
Change Settings
-</TH>
-<td VALIGN=TOP>
- <TABLE border=1 width="100%">
+</td>
EOF
@@ -391,37 +372,42 @@
# Don't allow change of table name....
if($new) {
push @out, <<EOF;
- <tr>
- <th valign=top align=left>Table name</th>
- <td><INPUT TYPE=text NAME=mv_data_table
- onChange="
- this.form.mv_dbconf_file.value =
- this.form.mv_data_table.value + '.txt'
- "
- VALUE=""></td>
- </tr>
+<tr class=rownorm>
+ <td valign=top class=clabel>Table name</td>
+ <td class=cdata><INPUT TYPE=text NAME=mv_data_table
+ onChange="
+ this.form.mv_dbconf_file.value =
+ this.form.mv_data_table.value + '.txt'
+ "
+ VALUE=""></td>
+</tr>
EOF
}
else {
push @out, <<EOF;
- <tr>
- <th valign=top align=left>Table name</th>
- <td><INPUT TYPE=hidden NAME=mv_data_table VALUE="$tname"><INPUT TYPE=hidden NAME=mv_dbconf_file VALUE="$ref->{file}">$tname</td>
- </tr>
+<tr class=rownorm>
+ <td valign=top class=clabel>Table name</td>
+ <td class=cdata>
+ <INPUT TYPE=hidden NAME=mv_data_table VALUE="$tname">
+ <INPUT TYPE=hidden NAME=mv_dbconf_file VALUE="$ref->{file}">
+ <INPUT TYPE=hidden NAME=mv_dbconf_db_file VALUE="$dfn">
+ $tname
+ </td>
+</tr>
EOF
}
# Allow upload of new file only
if($new) {
push @out, <<EOF;
- <tr>
- <th valign=top align=left>File name</th>
- <td><INPUT TYPE=text NAME=mv_dbconf_file VALUE=""></td>
- </tr>
- <tr>
- <th valign=top align=left>Upload file</th>
- <td><INPUT TYPE=file NAME=mv_dbconf_upload_file VALUE=""></td>
- </tr>
+<tr class=rownorm>
+ <td valign=top class=clabel>File name</td>
+ <td class=cdata><INPUT TYPE=text NAME=mv_dbconf_file VALUE=""></td>
+</tr>
+<tr class=rownorm>
+ <td valign=top class=clabel>Upload file</td>
+ <td class=cdata><INPUT TYPE=file NAME=mv_dbconf_upload_file VALUE=""></td>
+</tr>
EOF
}
@@ -436,10 +422,10 @@
} );
push @out, <<EOF;
- <tr>
- <th valign=top align=left>Table type</th>
- <td>$wid</td>
- </tr>
+<tr class=rownorm>
+ <td valign=top class=clabel>Table type</td>
+ <td class=cdata>$wid</td>
+</tr>
EOF
$wid = $Tag->widget( {
@@ -450,9 +436,9 @@
} );
push @out, <<EOF;
- <tr>
- <th valign=top align=left>Delimiter type</th>
- <td>$wid</td>
+ <tr class=rownorm>
+ <td valign=top class=clabel>Delimiter type</td>
+ <td class=cdata>$wid</td>
</tr>
EOF
@@ -460,21 +446,21 @@
my $def_USER = $ref->{USER} eq $Variable->{SQLUSER} ? 'CHECKED' : '';
my $def_PASS = $ref->{PASS} eq $Variable->{SQLPASS} ? 'CHECKED' : '';
push @out, <<EOF if $use_sql;
- <tr>
- <th valign=top align=left>DSN</th>
- <td><INPUT SIZE=40 NAME=mv_dbconf_DSN VALUE="$ref->{DSN}">
+ <tr class=rownorm>
+ <td valign=top class=clabel>DSN</td>
+ <td class=cdata><INPUT SIZE=40 NAME=mv_dbconf_DSN VALUE="$ref->{DSN}">
<INPUT TYPE=checkbox NAME=mv_dbconf_DSN_default $def_DSN> use default
</td>
</tr>
- <tr>
- <th valign=top align=left>USER</th>
- <td><INPUT SIZE=40 NAME=mv_dbconf_USER VALUE="$ref->{USER}">
+ <tr class=rownorm>
+ <td valign=top class=clabel>USER</td>
+ <td class=cdata><INPUT SIZE=40 NAME=mv_dbconf_USER VALUE="$ref->{USER}">
<INPUT TYPE=checkbox NAME=mv_dbconf_USER_default $def_USER> use default
</td>
</tr>
- <tr>
- <th valign=top align=left>PASS</th>
- <td><INPUT SIZE=40 NAME=mv_dbconf_PASS VALUE="$ref->{PASS}">
+ <tr class=rownorm>
+ <td valign=top class=clabel>PASS</td>
+ <td class=cdata><INPUT SIZE=40 NAME=mv_dbconf_PASS VALUE="$ref->{PASS}">
<INPUT TYPE=checkbox NAME=mv_dbconf_PASS_default $def_PASS> use default
</td>
</tr>
@@ -482,9 +468,9 @@
if($ref->{included_from}) {
push @out, <<EOF;
- <tr>
- <th valign=top align=left>Configuration file</th>
- <td><INPUT TYPE=hidden NAME="mv_dbconf_included_from" value="$ref->{included_from}">$ref->{included_from}</td>
+ <tr class=rownorm>
+ <td valign=top class=clabel>Configuration file</td>
+ <td class=cdata><INPUT TYPE=hidden NAME="mv_dbconf_included_from" value="$ref->{included_from}">$ref->{included_from}</td>
</tr>
EOF
}
@@ -497,9 +483,9 @@
} );
push @out, <<EOF;
- <tr>
- <th valign=top align=left>Configuration directory</th>
- <td>$wid</td>
+ <tr class=rownorm>
+ <td valign=top class=clabel>Configuration directory</td>
+ <td class=cdata>$wid</td>
</tr>
EOF
}
@@ -507,9 +493,9 @@
my $def_type = $ref->{DEFAULT_TYPE} || 'char(128)';
if($current_sql or ($new and $base_sql)) {
push @out, <<EOF;
- <tr>
- <th valign=top align=left>Default type</th>
- <td><INPUT TYPE=text NAME=mv_dbconf_DEFAULT_TYPE value="$def_type"></td>
+ <tr class=rownorm>
+ <td valign=top class=clabel>Default type</td>
+ <td class=cdata><INPUT TYPE=text NAME=mv_dbconf_DEFAULT_TYPE value="$def_type"></td>
</tr>
EOF
}
@@ -522,6 +508,7 @@
$fdbh = $Sql{$base_sql};
}
+ my $addrow_info;
ROWINFO: {
last ROWINFO unless $fdbh and $fdbh->can('type_info_all');
@@ -530,6 +517,7 @@
last ROWINFO unless $type_info and $ref->{NAME};
+ $addrow_info = 1;
my @types;
for(my $i = 1; $i < @{$type_info}; $i++) {
@@ -564,8 +552,8 @@
my @rows;
push @out, <<EOF;
- <tr>
- <td valign=top align=left><b>Field configuration</b><br><br>
+ <tr class=rownorm>
+ <td valign=top align=left class=clabel><b>Field configuration</b><br><br>
<script language=JavaScript>
function visible (index) {
var vis = new Array;
@@ -587,14 +575,23 @@
}
</script>
EOF
+
+ # Need this to see if field is added
+ my $orignames = join ",", @names;
+ push @out, qq{<input type=hidden name="mv_dbconf_orignames" value="$orignames">};
+
+ push @names, 'NEW FIELD';
for(my $i = 0; $i < @names; $i++) {
my $name = $names[$i];
push @out, qq{<A HREF="javascript:void(0)" onClick="visible($i)">$name</a><br>};
}
+ pop @names;
+ push @names, '';
+
push @out, <<EOF;
</td>
- <td>
+ <td class=cdata>
<div
style="
Position:Relative;
@@ -608,7 +605,6 @@
Left:0; Top:0; Height:100%; Width:100%;
Visibility:Visible;
z-index:0;
- background-color: #999999
"> </div>
<div
style="
@@ -616,15 +612,15 @@
Left:2; Top:2; Height:98%; Width:98%;
Visibility:Visible;
z-index:0;
- background-color: #EEEEEE
"> </div>
EOF
for(my $i = 0; $i <= scalar @names; $i++) {
my $clen = '';
my $rname = $names[$i];
+ my $add;
if(!$rname) {
- $rname = "(add)<BR><INPUT SIZE=16 NAME=mv_dbconf_COLUMN_DEF_name>";
+ $add = "(add)<BR><INPUT SIZE=16 NAME=mv_dbconf_COLUMN_DEF_name>";
}
my $pkey = $ref->{KEY_INDEX} == $i ? ' SELECTED' : '';
my $idx = $indexed->{$names[$i]} ? ' SELECTED' : '';
@@ -662,6 +658,22 @@
default => $tinfo->{TYPE_NAME},
name => 'mv_dbconf_COLUMN_DEF_type',
} );
+ my $delbox = ' ';
+ if(! $add) {
+ $delbox = <<EOF;
+<INPUT type=checkbox NAME=mv_dbconf_delete_field VALUE="$rname" class=s3 onChange="
+ if(this.checked) {
+ if(confirm('Are you sure you want to delete $rname?')) {
+ // do nothing
+ }
+ else {
+ this.checked = false;
+ }
+ }
+ "> delete field $rname
+EOF
+ }
+
push @out, <<EOF;
<div
id=dynform$i
@@ -672,35 +684,39 @@
z-index:2;
">
<table>
- <tr>
- <td>
- <span style="font-size: larger; font-weight: bold">$rname</span><br>
+ <tr class=rownorm>
+ <td class=rownorm>
+ <span style="font-size: larger; font-weight: bold">$rname$add</span><br>
<table border=1 style="border-type: thin" width="98%">
- <tr>
- <td><small><b>type</td>
- <td><small><b>length</td>
- <td><small><b>default (if any)</td>
+ <tr class=rownorm>
+ <td><b>type</td>
+ <td><b>length</td>
+ <td><b>default (if any)</td>
+ <td><b>action</td>
</tr>
- <tr>
- <td><small>$wid<INPUT TYPE=hidden NAME=mv_dbconf_COLUMN_DEF_name VALUE="$rname"></td>
+ <tr class=rownorm>
+ <td>$wid<INPUT TYPE=hidden NAME=mv_dbconf_COLUMN_DEF_name VALUE="$rname"></td>
- <td><small><INPUT SIZE=6 TYPE=text NAME="mv_dbconf_COLUMN_DEF_length" VALUE="$clen"></td>
- <td><small><INPUT SIZE=8 NAME=mv_dbconf_COLUMN_DEF_default VALUE="$fdefault"></td>
+ <td><INPUT SIZE=6 TYPE=text NAME="mv_dbconf_COLUMN_DEF_length" VALUE="$clen"></td>
+ <td><INPUT SIZE=8 NAME=mv_dbconf_COLUMN_DEF_default VALUE="$fdefault" class=s3></td>
+ <td rowspan=3 valign=top nowrap>
+ $delbox
+ </td>
</tr>
- <tr>
- <td><small><b>null status</td>
- <td colspan=2><small><b>key status</td>
+ <tr class=rownorm>
+ <td><b>null status</td>
+ <td colspan=2><b>key status</td>
</tr>
- <tr>
- <td><small><SELECT NAME=mv_dbconf_COLUMN_DEF_notnull>
+ <tr class=rownorm>
+ <td><SELECT NAME=mv_dbconf_COLUMN_DEF_notnull>
<OPTION VALUE=""> NULL is OK
<OPTION VALUE="1" $notnull> NOT NULL
</SELECT></td>
- <td><small><SELECT NAME=mv_dbconf_COLUMN_DEF_key>
+ <td><SELECT NAME=mv_dbconf_COLUMN_DEF_key>
<OPTION VALUE=""> not primary key
<OPTION VALUE="1"$pkey> PRIMARY KEY
</SELECT></td>
- <td><small><SELECT NAME=mv_dbconf_CREATE_INDEX>
+ <td><SELECT NAME=mv_dbconf_INDEX>
<OPTION VALUE=""> no index
<OPTION VALUE="$names[$i]"$idx> index
<OPTION VALUE="UNIQUE:$names[$i]"$uidx> unique index
@@ -727,6 +743,34 @@
}
+ if(! $addrow_info) {
+ my @names = $db->columns();
+ unshift @names, '=--no delete--';
+ my $dstring = join ",", @names;
+ my $sel = $Tag->display( {
+ name => "mv_dbconf_delete_field",
+ type => 'select',
+ options => $dstring,
+ } );
+ push @out, <<EOF;
+<tr class=rownorm>
+ <td class=clabel>
+ Add a field
+ </td>
+ <td class=cdata>
+ <input type=text name="mv_dbconf_COLUMN_DEF_name">
+ </td>
+</tr>
+<tr class=rownorm>
+ <td class=clabel>
+ Delete a field
+ </td>
+ <td class=cdata>
+ $sel
+ </td>
+</tr>
+EOF
+ }
%misc = %Misc_set;
@@ -752,13 +796,14 @@
$wid .= "</TABLE>";
push @out, <<EOF;
- <tr>
- <th valign=top align=left>Extra settings</th>
- <td>$wid</td>
+ <tr class=rownorm>
+ <td valign=top class=clabel>Extra settings</td>
+ <td class=cdata>$wid</td>
</tr>
EOF
my $create_sql = $ref->{CREATE_SQL} || $db->create_sql();
+ $create_sql =~ s/^\s*create\s+table\s+\(/CREATE TABLE $tname (/i;
#Debug("create_sql=$create_sql");
if($current_sql or ($new and $base_sql) ) {
my @post;
@@ -780,18 +825,18 @@
$extra .= "Custom create SQL</A>";
}
push @out, <<EOF;
- <tr>
- <th valign=top align=left>SQL after creation$extra</th>
- <td><TEXTAREA NAME="mv_dbconf_POSTCREATE" ROWS=3 COLS=50>$post</TEXTAREA></td>
+ <tr class=rownorm>
+ <td valign=top class=clabel>SQL after creation$extra</td>
+ <td class=cdata><TEXTAREA NAME="mv_dbconf_POSTCREATE" ROWS=3 COLS=50>$post</TEXTAREA></td>
</tr>
EOF
}
if($CGI->{custom_table_create} and ($current_sql or ($new and $base_sql)) ) {
push @out, <<EOF;
- <tr>
- <th valign=top align=left>Custom table creation SQL</th>
- <td><TEXTAREA NAME="mv_dbconf_CREATE_SQL" ROWS=12 COLS=50>$create_sql</TEXTAREA></td>
+ <tr class=rownorm>
+ <td valign=top class=clabel>Custom table creation SQL</td>
+ <td class=cdata><TEXTAREA NAME="mv_dbconf_CREATE_SQL" ROWS=12 COLS=50>$create_sql</TEXTAREA></td>
</tr>
EOF
}
@@ -807,8 +852,10 @@
}
}
+ my $advanced;
$wid = '<TABLE>';
for(sort keys %misc) {
+ $advanced = 1;
$wid .= "<TR><TD>$_</TD><TD>";
my $type = $misc{$_} ? 'select' : 'text';
$wid .= $Tag->widget( {
@@ -821,39 +868,42 @@
}
$wid .= "</TABLE>";
- push @out, <<EOF;
- <tr>
- <th valign=top align=left>Advanced settings<br><small>(must uncomment to set in configuration)</th>
- <td>$wid</td>
- </tr>
-EOF
-
-
- push @out, <<EOF;
- </table>
- </TD>
-</TR>
+ push @out, <<EOF if $advanced;
+<tr class=rownorm>
+ <td valign=top class=clabel>Advanced settings<br>(must uncomment to set in configuration)</td>
+ <td class=cdata>$wid</td>
+</tr>
EOF
-
return join "", @out;
[/perl]
- </TD>
-</TR>
-<TR>
- <TD class=rborder COLSPAN=3><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></TD>
-</TR>
</TABLE>
-</td></tr>
+[output name=top_buttons]
+<input type=hidden name=mv_dbconf value="">
+<input type=button VALUE="[L]Save[/L]" class=s3 style="padding-left: 8px; padding-right: 8px; font-weight: bold"
+onClick="
+ if( confirm('This will export and change the configuration of the database. Are you sure?') ) {
+ this.form.mv_dbconf.value=1;
+ this.form.submit();
+ }"
+>
+
+[output name=bottom_buttons]
+<input type=button VALUE="[L]Save[/L]" class=s3 style="padding-left: 8px; padding-right: 8px; font-weight: bold"
+onClick="
+ if( confirm('This will export and change the configuration of the database. Are you sure?') ) {
+ this.form.mv_dbconf.value=1;
+ this.form.submit();
+ }"
+>
-</table>
+[output name=bottom_of_form]
</FORM>
-</center>
-
+[output name=""]
<!-- ----- END REAL STUFF ----- -->
@_UI_STD_FOOTER_@
2.4 +34 -48 interchange/dist/lib/UI/pages/admin/dbinfo.html
rev 2.4, prev_rev 2.3
Index: dbinfo.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/dbinfo.html,v
retrieving revision 2.3
retrieving revision 2.4
diff -u -r2.3 -r2.4
--- dbinfo.html 18 Aug 2002 15:38:26 -0000 2.3
+++ dbinfo.html 14 Jan 2003 02:25:50 -0000 2.4
@@ -1,6 +1,6 @@
[tmp page_perm]techadmin[/tmp]
-[tmp page_title][L]Administration[/L]: [data session arg] [L]table information[/L][/tmp]
-[tmp page_banner]<i>[calc]$Config->{CatalogName}[/calc]</i> [L]table information[/L] [if session arg]([data session arg])[/if][/tmp]
+[tmp page_title][L]Administration[/L]: [cgi name=mv_data_table filter=entities keep=1] [L]table information[/L][/tmp]
+[tmp page_banner]<i>[calc]$Config->{CatalogName}[/calc]</i> [L]table information[/L] [if cgi mv_data_table]([cgi name=mv_data_table filter=entities keep=1])[/if][/tmp]
[set ui_class]Admin[/set]
[tmp help_name]genconfig.main[/tmp]
[tmp icon_name]icon_config.gif[/tmp]
@@ -9,18 +9,12 @@
<!-- ----- BEGIN REAL STUFF ----- -->
<center>
-<table __UI_T_PROPERTIES__>
-
-<tr>
-<td class=rborder COLSPAN=2><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
-</tr>
-<tr><td align=left class=rnorm colspan=2>
-<TABLE border=0 width="100%">
+<table width="100%" border=0 cellpadding=2 cellspacing=0 class=rseparator>
[perl tables="[list-databases] __UI_META_TABLE__"]
my @tables;
- if($Session->{arg}) {
- @tables = split /[\s,\0]+/, $Session->{arg};
+ if($CGI->{mv_data_table}) {
+ @tables = split /[\s,\0]+/, $CGI->{mv_data_table};
}
else {
@tables = sort keys %{$Config->{Database}};
@@ -62,7 +56,7 @@
my $tcount = 0;
for (@tables) {
my $tname = $_;
- my $rclass = ($tcount++ % 2) ? 'rnorm' : 'ralt';
+ my $rclass = ($tcount++ % 2) ? 'rownorm' : 'rowalt';
my $tinfo = '';
if($mdb and $mdb->record_exists($tname) ) {
$tinfo = $mdb->field($tname, 'label');
@@ -101,31 +95,30 @@
$dfile .= "</TT>";
my $obj = $ref->{Object};
$out .= <<EOF;
-<TR>
- <TH VALIGN=TOP ALIGN=RIGHT width="15%" class=$rclass>
- $tname$tinfo
- </TH>
- <td VALIGN=TOP>
- <TABLE border=1 width="100%">
- <tr>
- <th valign=top align=left>Type</th>
- <td>$type</td>
- </tr>
- <tr>
- <th valign=top align=left width="30%">Class</th>
- <td>$class</td>
- </tr>
- <tr>
- <th valign=top align=left width="30%">Directory</th>
- <td>$dir</td>
- </tr>
- <tr>
- <th valign=top align=left width="30%">Text File</th>
- <td>$file</td>
+ <tr class=rhead>
+ <td valign=TOP align=center class=rhead colspan=2>
+ <b>$tname$tinfo</b>
+ </td>
</tr>
- <tr>
- <th valign=top align=left width="30%">DB File</th>
- <td>$dfile</td>
+ <tr class=rownorm>
+ <th valign=top align=left class=clabel>Type</th>
+ <td class=cdata>$type</td>
+ </tr>
+ <tr class=rownorm>
+ <th valign=top align=left width="30%" class=clabel>Class</th>
+ <td class=cdata>$class</td>
+ </tr>
+ <tr class=rownorm>
+ <th valign=top align=left width="30%" class=clabel>Directory</th>
+ <td class=cdata>$dir</td>
+ </tr>
+ <tr class=rownorm>
+ <th valign=top align=left width="30%" class=clabel>Text File</th>
+ <td class=cdata>$file</td>
+ </tr>
+ <tr class=rownorm>
+ <th valign=top align=left width="30%" class=clabel>DB File</th>
+ <td class=cdata>$dfile</td>
</tr>
EOF
@@ -137,8 +130,8 @@
EOF
$out .= <<EOF;
- <tr>
- <th colspan=2>Other</th>
+ <tr class=rhead>
+ <td colspan=2 class=rhead>Parameters</th>
</tr>
EOF
for(sort keys %{$ref}) {
@@ -146,9 +139,9 @@
my $key = $_;
my $r = $ref->{$_};
my $o = <<EOF;
- <tr>
- <th valign=top align=left width="30%">$_</th>
- <td>
+ <tr class=rownorm>
+ <td valign=top align=left width="30%" class=clabel>$_</td>
+ <td class=cdata>
EOF
if(! defined $r) {
$o .= "undef";
@@ -185,18 +178,11 @@
}
$out .= <<EOF;
- </TABLE>
- </TD>
-</TR>
EOF
}
return $out;
[/perl]
-
-<tr>
-<td class=rborder COLSPAN=2><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
-</tr>
</TABLE>
2.1 +1 -1 interchange/dist/lib/UI/pages/admin/file_transfer.html
rev 2.1, prev_rev 2.0
Index: file_transfer.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/file_transfer.html,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- file_transfer.html 18 Jul 2001 02:22:00 -0000 2.0
+++ file_transfer.html 14 Jan 2003 02:25:50 -0000 2.1
@@ -1,6 +1,6 @@
[set help_name]upload.main[/set]
[set icon_name]icon_config.gif[/set]
-[set ui_class]Content[/set]
+[set ui_class]Misc[/set]
[set page_title][L]File Upload[/L][/set]
[set page_perm]pages[/set]
2.8 +4 -4 interchange/dist/lib/UI/pages/admin/flex_editor.html
rev 2.8, prev_rev 2.7
Index: flex_editor.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/flex_editor.html,v
retrieving revision 2.7
retrieving revision 2.8
diff -u -r2.7 -r2.8
--- flex_editor.html 27 Oct 2002 05:09:39 -0000 2.7
+++ flex_editor.html 14 Jan 2003 02:25:50 -0000 2.8
@@ -31,7 +31,6 @@
(<b>[page href="__UI_BASE__/db_metaconfig"
form='
ui_table=[cgi mv_data_table]
- ui_view=[cgi ui_meta_view]
start_at=extended.ui_data_fields
'][L]standard view[/L]</A>)
[/if-mm]
@@ -74,11 +73,12 @@
[/strip]@_UI_STD_HEAD_@
-[table-editor cgi=1 image_meta="__UI_IMAGE_META__"]
+[tmp tmp_item_id][cgi item_id][/tmp]
+[table-editor cgi=1 output_map="[scratch ui_style_edit]" ui_style="[scratch ui_style_edit]"]
<A HREF="[area href=admin/flex_editor
form='
- item_id=[cgi item_id]
+ item_id=[scratch tmp_item_id]
mv_data_table=[value mv_data_table]
page_title=Edit [value mv_data_table]: [cgi item_id]
help_name=genedit
@@ -91,4 +91,4 @@
@_UI_STD_FOOTER_@
-<!-- page: @@MV_PAGE@@ version: $Id: flex_editor.html,v 2.7 2002/10/27 05:09:39 mheins Exp $ -->
+<!-- page: @@MV_PAGE@@ version: $Id: flex_editor.html,v 2.8 2003/01/14 02:25:50 mheins Exp $ -->
2.18 +123 -63 interchange/dist/lib/UI/pages/admin/flex_select.html
rev 2.18, prev_rev 2.17
Index: flex_select.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/flex_select.html,v
retrieving revision 2.17
retrieving revision 2.18
diff -u -r2.17 -r2.18
--- flex_select.html 20 Nov 2002 18:52:17 -0000 2.17
+++ flex_select.html 14 Jan 2003 02:25:50 -0000 2.18
@@ -38,12 +38,29 @@
[cgi page_title]
[or]
[L]Select for table edit[/L]:
- [page href="__UI_BASE__/db_metaconfig" secure="[scratch page_secure]"
- form='
+ <a href="[area
+ href="__UI_BASE__/db_metaconfig"
+ secure="[scratch page_secure]"
+ form=|
+ ui_table=[cgi mv_data_table]
+ start_at=height
+ |
+ ]"
+ title="[cgi mv_data_table] [L]edit properties[/L], standard [L]view[/L]"
+ class=rtitle>[cgi mv_data_table]</A>
+ [if cgi ui_meta_view]
+ (<a href="[area
+ href="__UI_BASE__/db_metaconfig"
+ secure="[scratch page_secure]"
+ form=|
ui_view=[cgi ui_meta_view]
ui_table=[cgi mv_data_table]
start_at=height
- '][cgi mv_data_table]</A>
+ |
+ ]"
+ title="[cgi mv_data_table] [L]edit properties[/L], [cgi ui_meta_view] [L]view[/L]"
+ class=rtitle>[cgi ui_meta_view] [L]view[/L]</A>)
+ [/if]
[/either]
[/tmp]
[tmp help_name][either][cgi help_name][or]flex.select[/either][/tmp]
@@ -117,16 +134,9 @@
@_UI_STD_HEAD_@
[update values]
<!-- ----- BEGIN REAL STUFF ----- -->
-<FORM ACTION="[area href="[either][cgi ui_searchpage][or]@@MV_PAGE@@[/either]"]" METHOD=GET>
-<INPUT TYPE=hidden NAME=mv_session_id VALUE="[data session id]">
-<INPUT TYPE=hidden NAME=mv_data_table VALUE="[cgi mv_data_table]">
-<INPUT TYPE=hidden NAME=mv_action VALUE=back>
-<INPUT TYPE=hidden NAME=ui_show_fields VALUE="[cgi ui_show_fields]">
[if !scratch tmp_large]
-<table>
-<tr>
-<td>
+ [tmp extra_title]
[loop list="[cgi mv_data_table]"]
[if-loop-data __UI_META_TABLE__ name]
<B>[loop-data __UI_META_TABLE__ name]</B>
@@ -135,16 +145,24 @@
<small><A HREF="[loop-data __UI_META_TABLE__ help_url]">help</A></small>
[/if-loop-data]
[if-loop-data __UI_META_TABLE__ help]
- <BR><i>[loop-data __UI_META_TABLE__ name]</i>
+ <i>[loop-data __UI_META_TABLE__ name]</i>
[/if-loop-data]
[/loop]
-</td>
-<td>
-<input NAME=ui_text_qualification size=16><INPUT TYPE=submit VALUE="[L]Limit with search[/L]">
-</td>
-</tr>
-</table>
+ [/tmp]
+ [calc]
+ $Scratch->{page_title} .= $Scratch->{extra_title};
+ return;
+ [/calc]
+
+[output name=search_box]
+<FORM ACTION="[area href="[either][cgi ui_searchpage][or]@@MV_PAGE@@[/either]"]" METHOD=GET>
+<INPUT TYPE=hidden NAME=mv_session_id VALUE="[data session id]">
+<INPUT TYPE=hidden NAME=mv_data_table VALUE="[cgi mv_data_table]">
+<INPUT TYPE=hidden NAME=mv_action VALUE=back>
+<INPUT TYPE=hidden NAME=ui_show_fields VALUE="[cgi ui_show_fields]">
+<span class=s3>[L]Limit with search[/L]:</span> <input NAME=ui_text_qualification size=16 class=s2>
</FORM>
+[output]
[/if]
[if scratch ui_failure]
@@ -258,13 +276,11 @@
$CGI->{ui_text_qualification} .= $or ? "os=1\n" : "os=0\n";
}
- $out_message = '<H3>' . errmsg('Entries matching "%s"',
- $ui_text_qualification) . '</H3>';
+ $out_message = errmsg('Entries matching "%s"', $ui_text_qualification);
}
elsif ($ui_text_qualification) {
$CGI->{ui_text_qualification} = "se=$CGI->{ui_text_qualification}";
- $out_message = '<H3>' . errmsg('Entries matching "%s"',
- $ui_text_qualification) . '</H3>';
+ $out_message = errmsg('Entries matching "%s"', $ui_text_qualification);
if($Scratch->{ui_owner}) {
$CGI->{ui_text_qualification} = <<EOF;
co=1
@@ -399,13 +415,15 @@
rf=$CGI->{ui_description_fields}
EOF
- return $out_message;
+ $Scratch->{page_banner} .= $out_message;
+ $Scratch->{page_title} .= $out_message;
+ return;
[/perl]
</FORM>
[tmpn tmp_ncols][/tmpn]
<!-- tq: [scratch sparams] -->
-<TABLE __UI_T_PROPERTIES__>
+<table width="100%" border=0 cellpadding=0 cellspacing=1 class=rseparator>
<FORM ACTION="[area href="[either][cgi ui_searchpage][or]@@MV_PAGE@@[/either]"]" METHOD=GET>
<INPUT TYPE=hidden NAME=mv_data_table VALUE="[cgi mv_data_table]">
[if cgi ui_meta_view]
@@ -424,47 +442,58 @@
[/else]
[/if]
<INPUT TYPE=hidden NAME=mv_action VALUE=back>
- <TR class=rmarq>
+ <tr class=rhead>
+ <td class=rhead> </td>
[loop list="[cgi ui_description_fields]"]
- <TH[loop-calc]
- my $extra = '';
- $Scratch->{tmp_ncols}++;
- while ($filter_show[ [loop-increment] - 1] =~ m/\b(v?align\s*=\w+)/gi) {
- $extra .= " $1";
- }
- return $extra || ' ALIGN=LEFT';
- [/loop-calc]>
- [loop-change 1][condition]1[/condition] [/loop-change 1]
+ <td class=rhead>
+ <table align="left" class=rhead cellspacing=2 cellpadding=0>
+ <tr>
+ <td align="right" valign="center">
<A HREF="[area href='__UI_BASE__/flex_group'
form='
mv_data_table=[cgi mv_data_table]
ui_meta_view=[cgi ui_meta_view]
mv_arg=[loop-code]
'
- ]"><IMG ALT="select by [loop-code]" SRC="smindex.gif" BORDER=0></A></TH>
- [/loop]
- </tr>
- <TR class=rmarq>
- [loop list="[cgi ui_description_fields]"]
- <TH ALIGN=LEFT>
- [loop-change 1][condition]1[/condition] [/loop-change 1]
- <A HREF="[area href='@@MV_PAGE@@'
- form=`
- my $f = '[loop-code]';
- my $o = '';
- $o .= 'r'
- if $CGI->{ui_sort_field} eq $f
- and
- $CGI->{ui_sort_option} !~ /r/;
- $o .= 'n' if $numeric{$f};
- return qq(
- ui_text_qualification=$ui_text_qualification
- mv_data_table=$CGI->{mv_data_table}
- ui_sort_field=$f
- ui_sort_option=$o
- );
- `
- ]" class=rmarq>[loop-code]</TH>
+ ]"
+ title="[msg arg.0='[loop-code]']Select group by %s[/msg]"
+ ><img src="smindex.gif" border=0></a>
+ </td>
+ <td align="left" valign="center" class=rhead>
+ [calc]
+ my $f = '[loop-code]';
+ my $o = '';
+ my $msg;
+ my $rmsg;
+ if ($CGI->{ui_sort_field} eq $f and $CGI->{ui_sort_option} !~ /r/) {
+ $o .= 'r';
+ $msg = "sort by %s (%s)";
+ $rmsg = errmsg('reverse');
+ }
+ else {
+ $msg = "sort by %s";
+ }
+ $o .= 'n' if $numeric{$f};
+ $Scratch->{tmp_sort_msg} = errmsg($msg, $f, $rmsg);
+ $Scratch->{tmp_url} = $Tag->area( {
+ href => '@@MV_PAGE@@',
+ form => qq(
+ ui_text_qualification=$ui_text_qualification
+ mv_data_table=$CGI->{mv_data_table}
+ ui_meta_view=$CGI->{ui_meta_view}
+ ui_sort_field=$f
+ ui_sort_option=$o
+ ),
+ });
+ return;
+ [/calc]
+ <a href="[scratch tmp_url]"
+ class=rhead
+ title="[scratch tmp_sort_msg]">[either][data table="__UI_META_TABLE__" column=label key="[cgi mv_data_table]::[loop-code]"][or][loop-code][/either]</A>
+ </td>
+ </tr>
+ </table>
+ </td>
[/loop]
</tr>
[tmp tmp_url]
@@ -480,11 +509,16 @@
ui_return_to=@@MV_PAGE@@
[/else]
[/if][/tmp]
- [search-region more=1 form="ui_meta_specific=[cgi ui_meta_specific]" arg="[scratch sparams]"]
+ [search-region more=1
+ form="
+ ui_meta_specific=[cgi ui_meta_specific]
+ ui_meta_view=[cgi ui_meta_view]
+ " arg="[scratch sparams]"]
[search-list]
- <TR [item-alternate 2]class=rnorm[else]class=ralt[/else][/item-alternate]>
+ <tr [item-alternate 2]class=rownorm[else]class=rowalt[/else][/item-alternate]>
- <TD><INPUT TYPE=checkbox NAME=item_id VALUE="[item-code]"> [page href=__UI_BASE__/flex_editor form=|
+ <td width="30"><INPUT TYPE=checkbox NAME=item_id VALUE="[item-code]"></td>
+ <td>[page href=__UI_BASE__/flex_editor form=|
[scratch tmp_url]
item_id=[item-code]
|][item-code]</A></TD>
@@ -553,21 +587,47 @@
[on-match]
[if !cgi ui_meta_view]
-[button text="[L]Edit checked records in sequence[/L]"]
+
+[output name=top_buttons]
+[button text="[L]Edit checked records in sequence[/L]" extra=" class=s2"]
+ui_sequence_edit=1
+mv_nextpage=__UI_BASE__/flex_editor
+mv_todo=return
+[/button]
+
+[output name=bottom_buttons]
+[button text="[L]Edit checked records in sequence[/L]" extra=" class=s2"]
ui_sequence_edit=1
mv_nextpage=__UI_BASE__/flex_editor
mv_todo=return
[/button]
+
+[output]
[/if]
[if-mm function="tables" table="[cgi mv_data_table]=d"]
+
+[output name=top_buttons]
[button text="[L]Delete checked records[/L]"
+ extra="class=s2"
confirm="[L]Are you sure you want to delete the checked records?[/L]"]
[flag type=write table="[cgi mv_data_table]"]
deleterecords=1
mv_click=db_maintenance
[/button]
+
+[output name=bottom_buttons]
+
+[button text="[L]Delete checked records[/L]"
+ extra="class=s2"
+ confirm="[L]Are you sure you want to delete the checked records?[/L]"]
+[flag type=write table="[cgi mv_data_table]"]
+deleterecords=1
+mv_click=db_maintenance
+[/button]
+[output]
+
[/if-mm]
[/on-match]
@@ -578,4 +638,4 @@
[update values]
@_UI_STD_FOOTER_@
-<!-- page: @@MV_PAGE@@ Revision: $Id: flex_select.html,v 2.17 2002/11/20 18:52:17 mheins Exp $ -->
+<!-- page: @@MV_PAGE@@ Revision: $Id: flex_select.html,v 2.18 2003/01/14 02:25:50 mheins Exp $ -->
2.8 +148 -146 interchange/dist/lib/UI/pages/admin/genconfig.html
rev 2.8, prev_rev 2.7
Index: genconfig.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/genconfig.html,v
retrieving revision 2.7
retrieving revision 2.8
diff -u -r2.7 -r2.8
--- genconfig.html 26 Sep 2002 04:35:02 -0000 2.7
+++ genconfig.html 14 Jan 2003 02:25:50 -0000 2.8
@@ -11,36 +11,38 @@
[if !scratch ui_old_browser]
[tabbed-display
- panel-prepend="<table>"
+ ui-style=1
+ panel-prepend="<table cellpadding=3 cellspacing=0>"
panel-append="</table>"
start-at-index="[cgi start_at_index]"
+ panel-shade=f
panel-width="[either][cgi panel_width][or]800[/either]"
panel-height="[either][cgi panel_height][or]500[/either]"
tab-width=160]
[tabbed-panel [L]Catalog Information[/L]]
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Catalog URL[/L]
- </TH>
- <TD> </TD>
- <TD>[calc]$url=$Scratch->{ui_catalog_url};$url=~s%/index[^/]*%%;return qq{<A HREF="$url">$url}[/calc]</A></TD>
+ </th>
+ <td class=clabel> </TD>
+ <td class=cdata>[calc]$url=$Scratch->{ui_catalog_url};$url=~s%/index[^/]*%%;return qq{<A HREF="$url">$url}[/calc]</A></TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Secure URL[/L]
- </TH>
- <TD> </TD>
- <TD>[calc]return qq{<A HREF="$Config->{SecureURL}">$Config->{SecureURL}}[/calc]</A></TD>
+ </td>
+ <TD class=clabel> </TD>
+ <TD class=cdata>[calc]return qq{<A HREF="$Config->{SecureURL}">$Config->{SecureURL}}[/calc]</A></TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Location of Error Logs[/L]
- </TH>
- <TD> </TD>
- <TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>
[L]Global[/L]: [version extended=1 global_error=1]<br>
[L]Local[/L]: [version extended=1 local_error=1]
</TD>
@@ -48,7 +50,7 @@
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Active sessions[/L]
[if cgi list_sessions]<br><i>
([L]last[/L]
@@ -58,9 +60,9 @@
)
[/calc] [L]minutes[/L])</I>
[/if]
- </TH>
- <TD> </TD>
- <TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>
[if cgi list_sessions]
[loop list="[dump-session find=1]"]
<A HREF="[area
@@ -98,11 +100,11 @@
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Last order number[/L]
- </TH>
- <TD> </TD>
- <TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>
[calc]
my $cfn = $Variable->{MV_ORDER_COUNTER_FILE} || 'etc/order.number';
$Values->{new_order_number} = $Tag->file($cfn);
@@ -117,74 +119,74 @@
[tabbed-panel[L]Interchange Server Information[/L]]
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Interchange version[/L]
- </TH>
- <TD> </TD>
- <TD>[version]</TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[version]</TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Server hostname[/L]
- </TH>
- <TD> </TD>
- <TD>[version extended=1 hostname=1]</TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[version extended=1 hostname=1]</TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Interchange PID[/L]
- </TH>
- <TD> </TD>
- <TD>[version extended=1 pid=1]</TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[version extended=1 pid=1]</TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Interchange SUID User[/L]
- </TH>
- <TD> </TD>
- <TD>[version extended=1 uid=1]</TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[version extended=1 uid=1]</TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Server mode[/L]
- </TH>
- <TD> </TD>
- <TD>[version extended=1 mode=1]</TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[version extended=1 mode=1]</TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Last time server restarted[/L]
- </TH>
- <TD> </TD>
- <TD>[calc] scalar localtime([file-info conf=1 name="interchange.pid" time=1])[/calc]</TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[calc] scalar localtime([file-info conf=1 name="interchange.pid" time=1])[/calc]</TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Last time changes applied[/L]
- </TH>
- <TD> </TD>
- <TD>[file name=`"etc/status.$Config->{CatalogName}"`] ([page __UI_BASE__/reconfig @@MV_PAGE@@][L]apply now[/L]</A>)</TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[file name=`"etc/status.$Config->{CatalogName}"`] ([page __UI_BASE__/reconfig @@MV_PAGE@@][L]apply now[/L]</A>)</TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[msg arg.0='<A HREF="[area __UI_BASE__/env_vars]">' arg.1="</A>"]%sEnvironment%s variables passed[/msg]
- </TH>
- <TD> </TD>
- <TD>[version extended=1 env=1]</TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[version extended=1 env=1]</TD>
</TR>
[/tabbed-panel]
[tabbed-panel [L]Perl Information[/L]]
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
<A HREF="[area href="@@MV_PAGE@@"
form="
more_perl=1
@@ -192,17 +194,17 @@
panel_width=1000
panel_height=800
"]">[L]Perl Version[/L]</A>
- </TH>
- <TD> </TD>
- <TD>Perl [version extended=1 perl=1 perl_config="[cgi more_perl]"]</TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>Perl [version extended=1 perl=1 perl_config="[cgi more_perl]"]</TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Optional Module Information[/L]
- </TH>
- <TD> </TD>
- <TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>
<table>
[table-organize columns=2 columnize=1 td='width="50%"']
<td>[version extended=1 modules=1 joiner="</td><td>"]</TD>
@@ -212,11 +214,11 @@
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Safe operations untrapped[/L]
- </TH>
- <TD> </TD>
- <TD>[version extended=1 safe=1]</TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[version extended=1 safe=1]</TD>
</TR>
<TR>
@@ -227,26 +229,26 @@
[tabbed-panel [L]Database Information[/L]]
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Database Interfaces[/L]
- </TH>
- <TD> </TD>
- <TD VALIGN=top>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>
[version extended=1 db=1]
</TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Database Tables[/L]
- </TH>
- <TD> </TD>
- <TD VALIGN=top>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>
<table width="400">
[table-organize cols=3 columnize=1]
[loop list="[list-databases]"]
<TD>
- <A HREF="[area __UI_BASE__/dbinfo [loop-code]]">[loop-code]</A><br>
+ <A HREF="[area href=admin/dbinfo form='mv_data_table=[loop-code]']">[loop-code]</A><br>
</TD>
[/loop]
[/table-organize]
@@ -267,27 +269,27 @@
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Catalog URL[/L]
- </TH>
- <TD> </TD>
- <TD>[calc]$url=$Scratch->{ui_catalog_url};$url=~s%/index[^/]*%%;return qq{<A HREF="$url">$url}[/calc]</A></TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[calc]$url=$Scratch->{ui_catalog_url};$url=~s%/index[^/]*%%;return qq{<A HREF="$url">$url}[/calc]</A></TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Secure URL[/L]
- </TH>
- <TD> </TD>
- <TD>[calc]return qq{<A HREF="$Config->{SecureURL}">$Config->{SecureURL}}[/calc]</A></TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[calc]return qq{<A HREF="$Config->{SecureURL}">$Config->{SecureURL}}[/calc]</A></TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Location of Error Logs[/L]
- </TH>
- <TD> </TD>
- <TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>
[L]Global[/L]: [version extended=1 global_error=1]<br>
[L]Local[/L]: [version extended=1 local_error=1]
</TD>
@@ -295,7 +297,7 @@
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Active sessions[/L]
[if cgi list_sessions]<br><small><i>
([L]last[/L]
@@ -305,9 +307,9 @@
)
[/calc] [L]minutes[/L])</I></small>
[/if]
- </TH>
- <TD> </TD>
- <TD>[if cgi list_sessions][loop list="[dump-session find=1]"]<A HREF="[area
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[if cgi list_sessions][loop list="[dump-session find=1]"]<A HREF="[area
href='@@MV_PAGE@@'
form='show_session=[loop-code]'
]">[loop-code]</A><BR>[/loop]
@@ -333,11 +335,11 @@
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Last order number[/L]
- </TH>
- <TD> </TD>
- <TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>
[calc]
my $cfn = $Variable->{MV_ORDER_COUNTER_FILE} || 'etc/order.number';
$Values->{new_order_number} = $Tag->file($cfn);
@@ -358,67 +360,67 @@
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Interchange version[/L]
- </TH>
- <TD> </TD>
- <TD>[version]</TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[version]</TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Server hostname[/L]
- </TH>
- <TD> </TD>
- <TD>[version extended=1 hostname=1]</TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[version extended=1 hostname=1]</TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Interchange PID[/L]
- </TH>
- <TD> </TD>
- <TD>[version extended=1 pid=1]</TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[version extended=1 pid=1]</TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Interchange SUID User[/L]
- </TH>
- <TD> </TD>
- <TD>[version extended=1 uid=1]</TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[version extended=1 uid=1]</TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Server mode[/L]
- </TH>
- <TD> </TD>
- <TD>[version extended=1 mode=1]</TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[version extended=1 mode=1]</TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Last time server restarted[/L]
- </TH>
- <TD> </TD>
- <TD>[calc] scalar localtime([file-info conf=1 name="interchange.pid" time=1])[/calc]</TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[calc] scalar localtime([file-info conf=1 name="interchange.pid" time=1])[/calc]</TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Last time changes applied[/L]
- </TH>
- <TD> </TD>
- <TD>[file name=`"etc/status.$Config->{CatalogName}"`] ([page __UI_BASE__/reconfig @@MV_PAGE@@][L]apply now[/L]</A>)</TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[file name=`"etc/status.$Config->{CatalogName}"`] ([page __UI_BASE__/reconfig @@MV_PAGE@@][L]apply now[/L]</A>)</TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[msg arg.0='<A HREF="[area __UI_BASE__/env_vars]">' arg.1="</A>"]%sEnvironment%s variables passed[/msg]
- </TH>
- <TD> </TD>
- <TD>[version extended=1 env=1]</TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[version extended=1 env=1]</TD>
</TR>
<TR>
@@ -430,27 +432,27 @@
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
<A HREF="[area href="@@MV_PAGE@@" form="more_perl=1"]">[L]Perl Version[/L]</A>
- </TH>
- <TD> </TD>
- <TD>Perl [version extended=1 perl=1 perl_config="[cgi more_perl]"]</TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>Perl [version extended=1 perl=1 perl_config="[cgi more_perl]"]</TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Optional Module Information[/L]
- </TH>
- <TD> </TD>
- <TD>[version extended=1 modules=1]</TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[version extended=1 modules=1]</TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Safe operations untrapped[/L]
- </TH>
- <TD> </TD>
- <TD>[version extended=1 safe=1]</TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[version extended=1 safe=1]</TD>
</TR>
<TR>
@@ -462,19 +464,19 @@
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Database Interfaces[/L]
- </TH>
- <TD> </TD>
- <TD VALIGN=top>[version extended=1 db=1]</TD>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata>[version extended=1 db=1]</TD>
</TR>
<TR>
- <TH VALIGN=TOP ALIGN=RIGHT>
+ <td class=rhead>
[L]Database Tables[/L]
- </TH>
- <TD> </TD>
- <TD VALIGN=top> <small>
+ </td>
+ <td class=clabel> </TD>
+ <td class=cdata> <small>
<blockquote><div align=left>
[loop list="[list-databases]"]
<A HREF="[area __UI_BASE__/dbinfo [loop-code]]">[loop-code]</A><br>
2.5 +124 -41 interchange/dist/lib/UI/pages/admin/gentable.html
rev 2.5, prev_rev 2.4
Index: gentable.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/gentable.html,v
retrieving revision 2.4
retrieving revision 2.5
diff -u -r2.4 -r2.5
--- gentable.html 18 Aug 2002 08:09:05 -0000 2.4
+++ gentable.html 14 Jan 2003 02:25:50 -0000 2.5
@@ -8,10 +8,38 @@
<!-- ----- BEGIN REAL STUFF ----- -->
<!-- touch metatable [data __UI_META_TABLE__ test test] -->
-<table cellpadding=2 cellspacing=0 width="60%">
+[perl tables="__UI_META_TABLE__"]
+ my $db = $Db{__UI_META_TABLE__};
+ my $q = "select code from __UI_META_TABLE__ where type = 'table'";
+ my $ary = $db->query($q);
+ for(@$ary) {
+ my($code) = @$_;
+ my ($view,$tab) = split /:+/, $code, 2;
+ if(! $tab) {
+ $tab = $view;
+ undef $view;
+ }
+ ## $db->set_field($code, 'lookup', $tab);
+ ## $db->set_field($code, 'attribute', $view);
+ ## push @out, "set code=$code tab=$tab view=$view lookup=$tab attribute=$view";
+ next unless $view;
+ $views{$tab} ||= [];
+ push @{$views{$tab}}, $view;
+ }
+ for(keys %views) {
+ my $ary = $views{$_};
+ @$ary = sort @$ary;
+ }
+ return;
+[/perl]
+
+<table width="100%" border=0 cellspacing=0 cellpadding=0>
+ <tr>
+ <td>
+ <table width="100%" border=0 cellpadding=0 cellspacing=1 class=rseparator>
+ <tr class=rhead>
[loop list="[list-databases]"]
[loop-sub db_action]
-
sub {
#Log("args=" . $Tag->uneval({ ref => \@_ }));
my $name = shift;
@@ -37,7 +65,7 @@
};
my $ref = {
upload => {
- img => 'up.gif',
+ img => 'ico_upload.gif',
url => $Tag->area(
'__UI_BASE__/upload_file',
$froot->(join "/",
@@ -51,7 +79,7 @@
},
download => {
- img => 'down.gif',
+ img => 'ico_download.gif',
url => $Tag->area(
{
href => 'ui_download/' .
@@ -64,11 +92,12 @@
$Config->{Database}{$tab}{file}
),
form => 'filler=1',
+ add_dot_html => 0,
},
),
},
import => {
- img => 'left.gif',
+ img => 'ico_import.gif',
url => $Tag->area(
{
href => '__UI_BASE__/import_table',
@@ -77,7 +106,7 @@
),
},
export => {
- img => 'right.gif',
+ img => 'ico_export.gif',
url => $Tag->area(
{
href => '__UI_BASE__/export_table',
@@ -106,72 +135,126 @@
};
my $out = '';
my @litems = (
- '[L]edit[/L]',
+ $title_thing || '[L]Table name[/L] ([L]description[/L]) -- [L]click to edit[/L]',
+ '[L]views[/L]',
'[L]import[/L]',
'[L]export[/L]',
'[L]upload[/L]',
'[L]download[/L]',
);
- push @litems, '[L]config[/L]' if $Variable->{UI_DBCONFIG};
- push @litems, '[L]Table name[/L] ([L]description[/L])';
+ if ($Variable->{UI_DBCONFIG}) {
+ push @litems, '[L]config[/L]';
+ }
if(! $dblist_done_one++) {
- $out .= '<tr>';
+ $out .= '<tr class=rhead>';
my $i = 0;
for(@litems) { # Add "report"
- my $align = $i++ == $#litems ? 'left' : 'center';
- $out .= qq{<td class=rmarq align=$align>$_</td>};
+ my $align = $i++ == 0 ? 'left' : 'center';
+ $out .= qq{<td class=rhead align=$align>$_</td>};
}
$out .= "</tr>";
}
- $out .= '<tr class=rnorm>';
- my @mitems = (qw/edit import export upload download/);
+ my $class;
+ if($dblist_done_one % 2) {
+ $class = 'rownorm';
+ }
+ else {
+ $class = 'rowalt';
+ }
+
+ my $desc = tag_data('__UI_META_TABLE__', 'name', $name);
+ my $totdesc = $name;
+ $totdesc .= " ($desc)" if $desc;
+ my $titdesc = errmsg('edit table %s', $totdesc);
+ $titdesc = $Tag->filter('encode_entities', $titdesc);
+
+ my $mainwidth = $Variable->{UI_DBCONFIG} ? '30%' : '40%';
+
+ my $mref = $ref->{edit};
+ $out .= <<EOF;
+<tr class=$class>
+ <td class=$class width="$mainwidth">
+ <a href="$mref->{url}" title="$titdesc" class=$class>$totdesc</a>
+ </td>
+EOF
+
+ $out .= <<EOF;
+ <td class=$class width="20%">
+EOF
+ if(my $ary = $views{$name}) {
+ for(sort @$ary) {
+ my $tit = errmsg("edit %s with view %s", $tab, $_);
+ my $url = $Tag->area(
+ {
+ href => '__UI_BASE__/flex_select',
+ form => qq{
+ mv_data_table=$tab
+ ui_meta_view=$_
+ },
+ }
+ );
+ $out .= qq{<a href="$url" title="$tit">$_</a> };
+ }
+ }
+ else {
+ $out .= ' ';
+ }
+
+ $out .= "\n\t</td>\n";
+ my @mitems = (qw/import export upload download/);
+
if($Variable->{UI_DBCONFIG}) {
push @mitems, 'config';
}
for(@mitems) { # Add "report"
my $line = $ref->{$_};
- $out .= <<EOF;
-<td ALIGN=center><A HREF="$line->{url}"><img src="$line->{img}" border=0 alt="$_ $tab" title="$_ $tab" align=top></A></td>
+ if($_ eq 'config' and $Config->{Database}{$tab}{type} > 7) {
+ $out .= qq{<td class=$class align=center width="12%"> </td>};
+ }
+ else {
+ $out .= <<EOF;
+<td class=$class align=center width="12%"><a href="$line->{url}" title="$_ $tab"><img src="$line->{img}" border=0 alt="$_ $tab" title="$_ $tab" align=top></A></td>
EOF
+ }
}
- $out .= qq{<td> <FONT SIZE="+1">$name</FONT>};
- my $desc = tag_data('__UI_META_TABLE__', 'name', $name);
- $out .= qq{ ($desc)} if $desc;
- $out .= q{</td></tr>};
+ $out .= q{</tr>};
return $out;
}
[/loop-sub]
[loop-exec db_action][loop-data __UI_META_TABLE__ label][/loop-exec]
[/loop]
-<tr class=rborder>
- <td colspan=6><img src="bg.gif" height=1></td>
+
+[if-mm super]
+[calc]
+ %admin = ();
+ undef $dblist_done_one;
+ $title_thing = q{[L]Hidden Admin Tables[/L]};
+ return;
+[/calc]
+
+</table>
+</td>
</tr>
</table>
-[if-mm super]
-<blockquote>
- [L]Hidden admin tables[/L]:
-<blockquote>
- [calc]
- return
- join ', ',
- map {
- $Tag->page( {
- href => '__UI_BASE__/flex_select',
- form => "mv_data_table=$_",
- } ) .
- $_ .
- '</a>'
- } split / /, $Scratch->{ui_tmp_admin}
- ;
- [/calc]
-</blockquote>
-</blockquote>
+<table width="100%" border=0 cellspacing=0 cellpadding=0>
+ <tr>
+ <td>
+ <br><br>
+ <table width="100%" border=0 cellpadding=0 cellspacing=1 class=rseparator>
+ <tr class=rhead>
+[loop list="[scratch ui_tmp_admin]"]
+[loop-exec db_action][loop-data __UI_META_TABLE__ label][/loop-exec]
+[/loop]
[/if-mm]
+</table>
+</td>
+</tr>
+</table>
<!-- ----- END REAL STUFF ----- -->
2.6 +99 -70 interchange/dist/lib/UI/pages/admin/help.html
rev 2.6, prev_rev 2.5
Index: help.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/help.html,v
retrieving revision 2.5
retrieving revision 2.6
diff -u -r2.5 -r2.6
--- help.html 17 Apr 2002 17:55:49 -0000 2.5
+++ help.html 14 Jan 2003 02:25:50 -0000 2.6
@@ -49,108 +49,137 @@
[/tmp]
[calc]
- if ($Scratch->{help_text} =~ /~~HELP_TOPICS~~/) {
- my $help_index = <<EOF;
-<ul>
-[search-region more=1
- form="topic=[scratch help_key]"
- search="
- fi=@_UI_HELP_TABLE_@
- ra=yes
- rf=code,title
- tf=title
- ml=20
- sp=@@MV_PAGE@@
-"]
-[search-list]
-[if type=explicit compare="q{[item-code]} !~ m{^(?:faq|home|404|\Q[scratch help_key]\E)$}"]
- <li>[page href="@@MV_PAGE@@" form="topic=[item-code]"][item-pos 1]</a>
-[/if]
-[/search-list]
-</ul>
-[more-list]More help topics: [more][/more-list]
-[/search-region]
-
-EOF
- $Scratch->{help_text} =~ s/~~HELP_TOPICS~~/$help_index/g;
+ if ($CGI->{help_search}) {
+ $Scratch->{help_text} =~ s/~~HELP_TOPICS~~//;
+ }
+ else {
+ $Scratch->{help_text} =~ m/~~HELP_TOPICS~~/
+ and $CGI->{do_index} = 1;
}
+ $Scratch->{help_text} =~ s{(<a\s+.*?href=")([-\w.]+)(?:\.html?)"}
+ { $1 . $Tag->area({
+ href => '@@MV_PAGE@@',
+ form => "topic=$2"
+ }) . '"'}gies;
+
return;
[/calc]
+@_UI_STD_INIT_@
<html>
<head>
<title>[L]Interchange Help:[/L] [scratch help_title]</title>
-<style type="text/css">
-<!--
-BODY { font-family: [scratch fontface] }
-P { font-family: [scratch fontface] }
-H1 { font-family: [scratch fontface] }
-H2 { font-family: [scratch fontface] }
-H3 { font-family: [scratch fontface] }
-B { font-family: [scratch fontface] }
-I { font-family: [scratch fontface] }
-TD { font-family: [scratch fontface] }
-
-A:link { text-decoration: none }
-A:visited { text-decoration: none }
-A:active { text-decoration: none }
-A:hover { color: #663333; text-decoration: none }
--->
-</style>
+<link href="[var UI_IMG]interchange.css" rel="stylesheet" type="text/css">
</head>
-<body bgcolor="#ffffff" link="#660000" alink="#660000" vlink="#660000">
+<body class=rownorm>
-<div align=center>
-
-<table width="100%" border=0 cellspacing=0 cellpadding=0>
-<tr>
-<td height=23 bgcolor="CC0000" valign=middle>
+<div class=titlebox>
<table width="100%" border=0 cellpadding=0 cellspacing=0>
+<form action="[area @@MV_PAGE@@]">
<tr>
-<td valign=middle width=530>
-<img src="cleardot.gif" height=1 width=12>
+<td valign=middle>
+<img src="bg.gif" height=1 width=12>
[if scratch help_key ne 'home']
[page href="@@MV_PAGE@@" form="topic=home"]<font face="[scratch fontface]" size=2>Home</font></a>
- <img src="cleardot.gif" height=1 width=12>
+ <img src="bg.gif" height=1 width=12>
[/if]
[if scratch help_key ne 'faq']
[page href="@@MV_PAGE@@" form="topic=faq"]<font face="[scratch fontface]" size=2>FAQ</font></a>
- <img src="cleardot.gif" height=1 width=12>
+[/if]
+ <img src="bg.gif" height=1 width=12>
+[if scratch help_orig =~ /\S/]
+[page href=admin/flex_editor
+ form="
+ mv_data_table=ichelp
+ item_id=[scratch help_orig]
+ display_class=type5
+ ui_return_to=admin/help
+ ui_return_to=topic=[scratch help_orig]
+ "]edit this help topic ([scratch help_orig])</A>
[/if]
</td>
-<td align=right valign=middle width=40>
-<a href="javascript:history.go(-1)" target="Help" onmouseover="window.status='Help';return true;" onmouseout="window.status='';return true;"><font face="[scratch fontface]" size=2>Back</font></a><img src="cleardot.gif" height=1 width=12>
-</td>
-</tr>
-</table>
+<td align=right valign=center>
+<input name=topic type=hidden value="[cgi topic]">
+<input name=help_search size=10 class=s3>
+<input type=submit value="[L]Search Help[/L]" class=s3>
+
+
+
+<a href="javascript:history.go(-1)" target="Help" onmouseover="window.status='Help';return true;" onmouseout="window.status='';return true;"><font face="[scratch fontface]" size=2>[L]Back[/L]</font></a><img src="bg.gif" height=1 width=12>
+<a href="javascript:window.close()"><font face="[scratch fontface]" size=2>[L]Close[/L]</font></a><img src="bg.gif" height=1 width=12>
</td>
</tr>
+</form>
</table>
+</div>
-<table border=0 cellspacing=0 cellpadding=2 width=450>
-<tr>
-<td>
+<div class=rownorm
+ style="
+ width: 100%;
+ text-align: left;
+ ">
+[if cgi help_search]
+[loop search="
+ fi=ichelp.txt
+ st=text
+ se=[cgi help_search]
+ rf=code,title
+ ml=10
+ "
+ form="help_search=1"
+ more=1]
+<ol>
+[list]
+<li> [page href="@@MV_PAGE@@" form="topic=[loop-code]"][loop-param title]</a>
+[/list]
+</ol>
+[no-match]
+ No help found for [cgi name=help_search filter=entities].
+[/no-match]
+[more-list] [more] [/more-list]
+[/loop]
+[/if]
+
+[if cgi do_index]
+[tmp help_topics]
+<ul>
+[search-region more=1
+ form="topic=[scratch help_key]"
+ search="
+ fi=@_UI_HELP_TABLE_@
+ ac=0
+ ne=1
+ se=^(faq|home|404|[scratch help_key])$
+ rf=code,title
+ tf=title
+ ml=20
+ sp=@@MV_PAGE@@
+"]
+[search-list]
+ <li>[page href="@@MV_PAGE@@" form="topic=[item-code]"][item-param title]</a>
+[/search-list]
+</ul>
+[more-list]More help topics: [more][/more-list]
+[/search-region]
+[/tmp]
+ [calc] $Scratch->{help_text} =~ s/~~HELP_TOPICS~~/$Scratch->{help_topics}/g; return; [/calc]
+[/if]
-<h2> <br>
-[scratch help_title]
-</h2>
+<h2> [scratch help_title] </h2>
-<hr noshade size=2 width="100%">
+<hr noshade size=1>
[scratch help_text]
<br>
-<hr noshade size=2 width="100%">
+<hr noshade size=1>
+
<p><font face="[scratch fontface]" size=1>
<b><a href="@_INTERCHANGE_URL_@" target="_new">Interchange</a> -
-© 2000-2002 <a href="http://www.redhat.com/" target="_new">Red Hat, Inc.</a></b>
-</font></p>
-
-</td>
-</tr>
-</table>
+© 2002-2003 <a href="http://www.icdevgroup.org/" target="_new">Interchange Development Group</a></b>
+</font> <a href="javascript:window.close()">close this window</A></p>
</div>
2.6 +38 -5 interchange/dist/lib/UI/pages/admin/import_table.html
rev 2.6, prev_rev 2.5
Index: import_table.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/import_table.html,v
retrieving revision 2.5
retrieving revision 2.6
diff -u -r2.5 -r2.6
--- import_table.html 18 Aug 2002 08:09:05 -0000 2.5
+++ import_table.html 14 Jan 2003 02:25:50 -0000 2.6
@@ -73,10 +73,12 @@
autonumber="[cgi ui_autonumber]"
convert="[cgi ui_import_convert]"
delete="[cgi ui_allow_delete]"
+ filter_field="[cgi ui_filter_field]"
dir=backup
file="upload/[cgi ui_upload_filename]"
move=1
multiple="[cgi ui_allow_multiple]"
+ transactions="[cgi ui_import_transactions]"
quiet="[cgi ui_import_quiet]"
table="[cgi mv_data_table]"
]
@@ -89,8 +91,10 @@
file="upload/[cgi ui_upload_filename]"
move=1
multiple="[cgi ui_allow_multiple]"
+ transactions="[cgi ui_import_transactions]"
quiet="[cgi ui_import_quiet]"
table="[cgi mv_data_table]"
+ filter_field="[cgi ui_filter_field]"
]
[/elsif]
[elsif cgi ui_upload_ext eq cleanse]
@@ -103,8 +107,10 @@
file="upload/[cgi ui_upload_filename]"
move=1
multiple="[cgi ui_allow_multiple]"
+ transactions="[cgi ui_import_transactions]"
quiet="[cgi ui_import_quiet]"
table="[cgi mv_data_table]"
+ filter_field="[cgi ui_filter_field]"
]
[/elsif]
[/if]
@@ -121,7 +127,7 @@
<INPUT TYPE=hidden NAME=ui_return_to VALUE="__UI_BASE__/gentable">
<table __UI_T_PROPERTIES__>
<tr>
- <td colspan=2 class=rborder><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
+ <td colspan=3 class=rborder><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
</tr>
<tr class=rnorm>
@@ -145,18 +151,19 @@
</tr>
<tr>
- <td colspan=2 class=rspacer><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
+ <td colspan=3 class=rspacer><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
</tr>
<tr class=rnorm>
- <td colspan=2>
+ <td colspan=2 valign=top>
<br>
<SELECT NAME=ui_upload_ext>
<OPTION VALUE=add> [L]Add new items if present[/L]
<OPTION VALUE=cleanse> [L]Replace existing items[/L]
<OPTION VALUE=update> [L]Ignore new items[/L]
</SELECT> <SMALL><INPUT TYPE=checkbox NAME=ui_allow_delete VALUE=1> [L]Allow delete[/L]
- <INPUT TYPE=checkbox NAME=ui_autonumber VALUE=1 CHECKED> [L]Autonumber if no key[/L]</SMALL>
+ <INPUT TYPE=checkbox NAME=ui_autonumber VALUE=1 CHECKED> [L]Autonumber if no key[/L]
+<INPUT TYPE=checkbox NAME=ui_import_transactions VALUE=1> [L]Use transactions[/L]</SMALL>
<BR><select NAME=ui_import_convert>
<OPTION VALUE=0> [L]Single table[/L]
<OPTION VALUE=1> [L]Gnumeric simple tex[/L]
@@ -169,11 +176,37 @@
<BR><INPUT TYPE=radio NAME=ui_import_quiet VALUE=1 [checked name=ui_import_quiet value=1 default=1]> [L]Show summary messages only[/L]
<BR><INPUT TYPE=radio NAME=ui_import_quiet VALUE=2 [checked name=ui_import_quiet value=2]> [L]Show *no* messages[/L]
</td>
+
+ <td valign=top>
+ <b>Field filters</b><br>
+ <textarea name=ui_filter_field cols=30 rows=3>[data
+ table="mv_metadata"
+ field="extended.filter_field"
+ serial=1
+ key="[cgi mv_data_table]"]</textarea>
+ <br>
+ <i>
+ Specified one per line:
+ <blockquote>
+<pre>
+ fieldname1=filter
+ fieldname2=filter1 filter2
+</pre>
+ </blockquote>
+ If multiple tables, must specify table as well:
+ <blockquote>
+<pre>
+ table1:fieldname1=filter
+ table2:fieldname2=filter1 filter2
+</pre>
+ </blockquote>
+ </i>
+ </td>
</tr>
<tr>
-<td colspan=2 class=rborder><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
+<td colspan=3 class=rborder><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
</tr>
</table>
2.10 +50 -3 interchange/dist/lib/UI/pages/admin/index.html
rev 2.10, prev_rev 2.9
Index: index.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/index.html,v
retrieving revision 2.9
retrieving revision 2.10
diff -u -r2.9 -r2.10
--- index.html 10 Jan 2003 21:10:50 -0000 2.9
+++ index.html 14 Jan 2003 02:25:50 -0000 2.10
@@ -60,7 +60,7 @@
">
<br><br><br>
<div align=center>
-<table width="90%" border="1" cellspacing=0 cellpadding="0">
+<table width="90%" border="1" cellspacing=0 cellpadding="0" bgcolor="#FFFFFF">
<tr class=ralt>
<td>
<br>
@@ -112,6 +112,55 @@
return $out;
[/calc]
+[perl tables="__UI_META_TABLE__ mv_metadata"]
+ delete $Scratch->{merge_complete};
+ delete $Scratch->{do_merge};
+ my $tab = q{__UI_META_TABLE__} || 'mv_metadata';
+ my $db = $Db{$tab}
+ or do {
+ $Scratch->{merge_complete}
+ = errmsg("Cannot merge: no meta table '%s'", $tab);
+ return;
+ };
+
+ my $newver = $Tag->version();
+ $Scratch->{newver} = $newver;
+ my $compnew = $newver;
+ $compnew =~ s/\D+//g;
+
+ my $curver = 0;
+ if($db->record_exists('ui-version')) {
+ $curver = $db->field("ui-version", 'label');
+ }
+
+ $Scratch->{curver} = $curver;
+ my $compcur = $curver;
+ $compcur =~ s/\D+//g;
+
+ if ($curver eq $newver) {
+ ## All is copasetic
+ }
+ elsif($compcur gt $compnew) {
+ ## I guess this is OK
+ }
+ else {
+ return qq{
+<TR>
+<TD COLSPAN=3>
+<blockquote class=titlebox>
+UI update appears to have been done and metadata has not
+been updated for this catalog...
+ <blockquote>
+ [page href=admin/merge_meta extra=class=titlebox]Merge Metadata</a>
+ </blockquote>
+</blockquote>
+</TD>
+</TR>
+ };
+ }
+ return;
+[/perl]
+
[menu
name=Top
superuser=super
@@ -126,9 +175,7 @@
{/IMG_ICON?}
</td>
<td valign="top">
-<b>
<a href="{HREF}">{NAME}</a>
-</b>
</td>
<td valign="top">
{DESCRIPTION}
2.14 +42 -39 interchange/dist/lib/UI/pages/admin/item.html
rev 2.14, prev_rev 2.13
Index: item.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/item.html,v
retrieving revision 2.13
retrieving revision 2.14
diff -u -r2.13 -r2.14
--- item.html 17 Oct 2002 04:46:23 -0000 2.13
+++ item.html 14 Jan 2003 02:25:50 -0000 2.14
@@ -87,26 +87,13 @@
[/if]
<!-- ----- BEGIN REAL STUFF ----- -->
-<table>
-<tr>
-[if scratch ui_message]
-<td>
-[L]Message[/L]:
-<BLOCKQUOTE>
- [scratchd ui_message]
-</BLOCKQUOTE>
-<p>
-
-</td>
-[/if]
-<td>
-<FORM ACTION="[area @@MV_PAGE@@]" name=itemlist>
-<INPUT NAME=ui_text_qualification>
-<INPUT TYPE=submit VALUE="[L]Limit with search[/L]">
+[output name=search_box]
+<FORM ACTION="[area @@MV_PAGE@@]">
+<INPUT NAME=ui_text_qualification type=text class=s3>
+<INPUT TYPE=submit VALUE="[L]Limit with search[/L]" class=s3>
</FORM>
-</td>
-</tr>
-</table>
+
+[output name=""]
[if-mm !super]
[tmp ui_owner][db-hash
table="__UI_ACCESS_TABLE__"
@@ -193,13 +180,11 @@
$CGI->{ui_text_qualification} .= $or ? "os=1\n" : "os=0\n";
}
- $out_message = '<H3>'
- . errmsg('Entries matching "%s"', $ui_text_qualification) . '</H3>';
+ $out_message = errmsg('entries matching "%s"', $ui_text_qualification);
}
elsif ($ui_text_qualification) {
$CGI->{ui_text_qualification} = "se=$CGI->{ui_text_qualification}";
- $out_message = '<H3>'
- . errmsg('Entries matching "%s"', $ui_text_qualification) . '</H3>';
+ $out_message = errmsg('entries matching "%s"', $ui_text_qualification);
if($Scratch->{ui_owner}) {
$CGI->{ui_text_qualification} = <<EOF;
co=1
@@ -281,9 +266,19 @@
}
$CGI->{changed_qual} = 1 if delete $Scratch->{item_list_clicked};
- return $out_message;
+ $Scratch->{ui_text_qualification} = $out_message;
+ return;
[/perl]
+[if scratch ui_text_qualification]
+[calc]
+ return if $CGI->{mv_like_spec};
+ $Scratch->{page_banner} ||= $Scratch->{page_title};
+ $Scratch->{page_banner} .= ' -- ' . $Scratch->{ui_text_qualification};
+ return;
+[/calc]
+[/if]
+
<!-- existing item_sparams: '[scratch item_sparams]'
tq: '[cgi ui_text_qualification]' -->
@@ -294,6 +289,7 @@
fi=[cgi mv_data_table]
st=db
[cgi ui_text_qualification]
+ nh=[cgi showinactive]
su=1
md=1
ml=[cgi ui_list_size]
@@ -308,6 +304,7 @@
st=db
ra=yes
md=1
+ nh=[cgi showinactive]
ml=[cgi ui_list_size]
tf=[cgi ui_sort_field]
to=[cgi ui_sort_option]
@@ -346,17 +343,17 @@
<FORM ACTION="[area __UI_BASE__/item_edit]" METHOD=POST>
<INPUT TYPE=hidden NAME=mv_action VALUE=back>
-<TABLE border=0 CELLSPACING=0 width="90%">
+<table width="100%" border=0 cellpadding=0 cellspacing=1 class=rseparator>
-<TR class=rtitle><TD> </TD>
+<tr class=rhead><TD> </TD>
[loop list="[cgi ui_description_fields]"]
-<TH[loop-calc]
+<th[loop-calc]
my $extra = '';
while ($filter_show[ [loop-increment] - 1] =~ m/\b(v?align\s*=\w+)/gi) {
$extra .= " $1";
}
return $extra || ' ALIGN=LEFT';
- [/loop-calc]>
+ [/loop-calc] class=rhead>
<table align="left">
<tr>
@@ -368,7 +365,7 @@
']"><IMG ALT="select by [loop-code]" SRC="smindex.gif" BORDER=0></A>
</td>
- <td align="left" valign="center">
+ <td align="left" valign="center" class=rhead>
<A HREF="[area href='@@MV_PAGE@@'
form=`
my $f = '[loop-code]';
@@ -385,11 +382,11 @@
ui_sort_option=$o
);
`
- ]" class=ctitle>[either][data table="__UI_META_TABLE__" column=label key="[cgi mv_data_table]::[loop-code]"][or][loop-code][/either]</A>
+ ]" class=rhead>[either][data table="__UI_META_TABLE__" column=label key="[cgi mv_data_table]::[loop-code]"][or][loop-code][/either]</A>
</td>
</tr>
</table>
- </TH>
+ </th>
[/loop]
[calc]
my $out = '';
@@ -418,7 +415,7 @@
}
my $url = $Tag->page({
href => '@@MV_PAGE@@',
- extra => 'class=ctitle',
+ extra => 'class=rhead',
form => "
ui_text_qualification=$ui_text_qualification
mv_data_table=$CGI->{mv_data_table}
@@ -428,7 +425,7 @@
$display = "$url$display</A>";
}
$out .= <<EOF;
-<td class=ctitle ALIGN=CENTER><small class=ctitle>$display</small></td>
+<td class=rhead ALIGN=CENTER><small class=rhead>$display</small></td>
EOF
}
return $out;
@@ -436,7 +433,7 @@
</tr>
[/on-match]
[search-list]
-<tr class=[item-alternate 2]ralt[else]rnorm[/else][/item-alternate]>
+<tr class=[item-alternate 2]rowalt[else]rownorm[/else][/item-alternate]>
<TD><INPUT TYPE=checkbox NAME=item_id VALUE="[item-code]"></TD><TD>[page href=__UI_BASE__/item_edit form="item_id=[item-code]"][item-code]</A></TD>
[item-sub show_line]
@@ -534,7 +531,12 @@
</tr>
[/more-list]
</table>
-[button text="[L]Edit checked items in sequence[/L]"]
+
+[/search-region]
+
+[output name="bottom_buttons"]
+
+[button text="[L]Edit checked items in sequence[/L]" extra="class=s3"]
ui_sequence_edit=[calc]
$CGI->{item_id_left} = $CGI->{item_id};
$CGI->{item_id_left} =~ s/\0+/,/g;
@@ -554,7 +556,7 @@
-[button text="[L]Delete checked items[/L]"
+[button text="[L]Delete checked items[/L]" extra="class=s3"
confirm="Are you sure you want to delete the checked items\n__UI_ITEM_TABLES__?"
]
[flag type=write table="[cgi mv_data_table]"]
@@ -565,10 +567,11 @@
mv_nextpage=@@MV_PAGE@@
[/button]
<INPUT TYPE=hidden NAME=mv_data_table VALUE="[cgi mv_data_table]">
-</FORM>
-[/search-region]
+[output name="bottom_of_form"]
+</FORM>
+[output name=""]
<!-- ----- END REAL STUFF ----- -->
@_UI_STD_FOOTER_@
-<!-- page: @@MV_PAGE@@ Revision: $Id: item.html,v 2.13 2002/10/17 04:46:23 mheins Exp $ -->
+<!-- page: @@MV_PAGE@@ Revision: $Id: item.html,v 2.14 2003/01/14 02:25:50 mheins Exp $ -->
2.1 +1 -15 interchange/dist/lib/UI/pages/admin/item_cross.html
rev 2.1, prev_rev 2.0
Index: item_cross.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/item_cross.html,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- item_cross.html 18 Jul 2001 02:22:00 -0000 2.0
+++ item_cross.html 14 Jan 2003 02:25:50 -0000 2.1
@@ -32,21 +32,7 @@
@_UI_STD_HEAD_@
<P>
-[table-editor cgi=1]
-
-[if-mm super]
-<A HREF="[area href=admin/flex_editor
- form='
- item_id=[cgi item_id]
- mv_data_table=__ProductFiles_0__
- page_title=Edit items: [cgi item_id]
- help_name=inventory.edit
- ui_no_meta_display=1
- ui_hide_key=1
- ui_return_to=admin/item
- icon_name=icon_item.gif
- ']">No meta display</A>
-[/if-mm]
+[table-editor cgi=1 output_map=1]
@_UI_STD_FOOTER_@
<!-- page: @@MV_PAGE@@ -->
2.6 +2 -2 interchange/dist/lib/UI/pages/admin/item_edit.html
rev 2.6, prev_rev 2.5
Index: item_edit.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/item_edit.html,v
retrieving revision 2.5
retrieving revision 2.6
diff -u -r2.5 -r2.6
--- item_edit.html 20 Nov 2002 18:52:17 -0000 2.5
+++ item_edit.html 14 Jan 2003 02:25:50 -0000 2.6
@@ -59,7 +59,7 @@
@_UI_STD_HEAD_@
<P>
-[table-editor file_upload=1 cgi=1]
+[table-editor cgi=1 output_map="[scratch ui_style_edit]" ui_style="[scratch ui_style_edit]"]
[if-mm super]
<A HREF="[area href=admin/flex_editor
@@ -76,4 +76,4 @@
[/if-mm]
@_UI_STD_FOOTER_@
-<!-- page: @@MV_PAGE@@ version: $Revision: 2.5 $ -->
+<!-- page: @@MV_PAGE@@ version: $Revision: 2.6 $ -->
2.1 +1 -15 interchange/dist/lib/UI/pages/admin/item_feature.html
rev 2.1, prev_rev 2.0
Index: item_feature.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/item_feature.html,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- item_feature.html 18 Jul 2001 02:22:00 -0000 2.0
+++ item_feature.html 14 Jan 2003 02:25:50 -0000 2.1
@@ -42,21 +42,7 @@
@_UI_STD_HEAD_@
<P>
-[table-editor cgi=1]
-
-[if-mm super]
-<A HREF="[area href=admin/flex_editor
- form='
- item_id=[cgi item_id]
- mv_data_table=__ProductFiles_0__
- page_title=Edit items: [cgi item_id]
- help_name=inventory.edit
- ui_no_meta_display=1
- ui_hide_key=1
- ui_return_to=admin/item
- icon_name=icon_item.gif
- ']">No meta display</A>
-[/if-mm]
+[table-editor cgi=1 output-map=1]
@_UI_STD_FOOTER_@
<!-- page: @@MV_PAGE@@ -->
2.1 +1 -8 interchange/dist/lib/UI/pages/admin/item_inventory.html
rev 2.1, prev_rev 2.0
Index: item_inventory.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/item_inventory.html,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- item_inventory.html 18 Jul 2001 02:22:00 -0000 2.0
+++ item_inventory.html 14 Jan 2003 02:25:50 -0000 2.1
@@ -6,13 +6,6 @@
$CGI->{ui_hide_key} = 1;
$CGI->{mv_data_table} = 'inventory';
}
- if(! $CGI->{ui_data_fields}) {
- $CGI->{ui_data_fields} = '__ProductFiles_0__:__DescriptionField__ [db-columns name=inventory]';
- $CGI->{ui_display_only} = '__ProductFiles_0__:__DescriptionField__';
- }
- if(! $CGI->{ui_break_before}) {
- $CGI->{ui_break_before} = 'account';
- }
if(! $CGI->{ui_return_to}) {
my @args = (
'__UI_BASE__/item_edit',
@@ -33,7 +26,7 @@
@_UI_STD_HEAD_@
<P>
-[table-editor cgi=1]
+[table-editor cgi=1 output-map=1]
[if-mm super]
<A HREF="[area href=admin/flex_editor
2.2 +25 -19 interchange/dist/lib/UI/pages/admin/item_price.html
rev 2.2, prev_rev 2.1
Index: item_price.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/item_price.html,v
retrieving revision 2.1
retrieving revision 2.2
diff -u -r2.1 -r2.2
--- item_price.html 2 Aug 2001 13:03:47 -0000 2.1
+++ item_price.html 14 Jan 2003 02:25:50 -0000 2.2
@@ -2,17 +2,37 @@
[bounce page="__UI_BASE__/item"]
[/if]
[calc]
+ if($CGI->{merchandising}) {
+ $Scratch->{mv_logical_page} = 'admin/merchandising';
+ $Scratch->{ui_class} = 'Merchandising';
+ }
+ else {
+ $Scratch->{ui_class} = 'Items';
+ }
if(! $CGI->{mv_data_table}) {
$CGI->{ui_hide_key} = 1;
$CGI->{mv_data_table} = 'pricing';
}
if(! $CGI->{ui_data_fields}) {
- $CGI->{ui_data_fields} = '__ProductFiles_0__:price __ProductFiles_0__:__DescriptionField__ [db-columns name=pricing]';
+ @cols = split /\s+/, q{[db-columns name=pricing]};
+ @cols = grep $_ ne 'sku' && $_ ne 'price_group', @cols;
+ my $colstring = join "\n", @cols;
+ $CGI->{ui_data_fields} = qq{
+
+=Base Pricing
+
+price_group
+sku
+__ProductFiles_0__:__DescriptionField__
+__ProductFiles_0__:price
+__ProductFiles_0__:wholesale
+
+=Quantity Pricing
+
+$colstring
+};
$CGI->{ui_display_only} = '__ProductFiles_0__:__DescriptionField__';
}
- if(! $CGI->{ui_break_before}) {
- $CGI->{ui_break_before} = 'price_group q2';
- }
if(! $CGI->{ui_return_to}) {
my @args = (
'__UI_BASE__/item_edit',
@@ -32,21 +52,7 @@
@_UI_STD_HEAD_@
<P>
-[table-editor cgi=1]
-
-[if-mm super]
-<A HREF="[area href=admin/flex_editor
- form='
- item_id=[cgi item_id]
- mv_data_table=__ProductFiles_0__
- page_title=[L]Edit items[/L]: [cgi item_id]
- help_name=inventory.edit
- ui_no_meta_display=1
- ui_hide_key=1
- ui_return_to=admin/item
- icon_name=icon_item.gif
- ']">[L]No meta display[/L]</A>
-[/if-mm]
+[table-editor cgi=1 output-map=1]
@_UI_STD_FOOTER_@
<!-- page: @@MV_PAGE@@ -->
2.2 +1 -15 interchange/dist/lib/UI/pages/admin/item_up.html
rev 2.2, prev_rev 2.1
Index: item_up.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/item_up.html,v
retrieving revision 2.1
retrieving revision 2.2
diff -u -r2.1 -r2.2
--- item_up.html 2 Aug 2001 21:38:52 -0000 2.1
+++ item_up.html 14 Jan 2003 02:25:50 -0000 2.2
@@ -32,21 +32,7 @@
@_UI_STD_HEAD_@
<P>
-[table-editor cgi=1]
-
-[if-mm super]
-<A HREF="[area href=admin/flex_editor
- form='
- item_id=[cgi item_id]
- mv_data_table=__ProductFiles_0__
- page_title=[L]Edit items[/L]: [cgi item_id]
- help_name=inventory.edit
- ui_no_meta_display=1
- ui_hide_key=1
- ui_return_to=admin/item
- icon_name=icon_item.gif
- ']">[L]No meta display[/L]</A>
-[/if-mm]
+[table-editor cgi=1 output-map=1]
@_UI_STD_FOOTER_@
<!-- page: @@MV_PAGE@@ -->
2.4 +0 -15 interchange/dist/lib/UI/pages/admin/layout.html
rev 2.4, prev_rev 2.3
Index: layout.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/layout.html,v
retrieving revision 2.3
retrieving revision 2.4
diff -u -r2.3 -r2.4
--- layout.html 18 Aug 2002 08:09:05 -0000 2.3
+++ layout.html 14 Jan 2003 02:25:50 -0000 2.4
@@ -34,10 +34,6 @@
[set Delete section]
[/set]
-<tr class=rtitle>
-<td [if value area]colspan=3[/if] class=ctitle><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1>[page href=__UI_BASE__/layout_auto extra=rmarq]auto-populate</A></td>
-</tr>
-
<tr>
<td valign=top class=rnorm>
@@ -1116,22 +1112,11 @@
<!--- END CATEGORY PROPERTIES -->
</tr>
-<tr>
-<td colspan=3 class=rspacer><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
-</tr>
-
-<tr>
-<td colspan=3 class=rborder><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
-</tr>
-
[/then]
[else]
<!-- wait for them to select a category first -->
</tr>
-<tr>
-<td [if value area]colspan=2[/if] class=rborder><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
-</tr>
[/else]
[/if]
2.6 +18 -25 interchange/dist/lib/UI/pages/admin/layout_auto.html
rev 2.6, prev_rev 2.5
Index: layout_auto.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/layout_auto.html,v
retrieving revision 2.5
retrieving revision 2.6
diff -u -r2.5 -r2.6
--- layout_auto.html 18 Aug 2002 08:09:05 -0000 2.5
+++ layout_auto.html 14 Jan 2003 02:25:50 -0000 2.6
@@ -30,18 +30,15 @@
<input type=hidden name=mv_action value=back>
<table border=0 __UI_T_PROPERTIES__ width="70%">
-<tr>
-<td colspan=3 class=rborder><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
-</tr>
-<tr class=rnorm>
+<tr class=rownorm>
<td class=clabel>1.</td>
<td class=clabel width="25%">
Choose a table as the source:
</td>
-<td>
+<td class=cdata>
[if !value area_table]
[value name=area_table set=products hide=1]
[value name=area_column set=prod_group hide=1]
@@ -67,12 +64,12 @@
</select>
</td>
</tr>
-<tr class=rnorm>
+<tr class=rownorm>
<td class=clabel>2.</td>
<td class=clabel>
Choose a column to populate areas:
</td>
-<td class=clabel>
+<td class=cdata>
<select name="area_column">
<option value=""> -- none --
[loop list="[db-columns table='[value area_table]']" option=area_column]
@@ -81,12 +78,12 @@
</select>
</td>
</tr>
-<tr class=rnorm>
+<tr class=rownorm>
<td class=clabel>3.</td>
<td class=clabel>
Choose a column to populate categories:
</td>
-<td>
+<td class=cdata>
<select name="cat_column">
<option value=""> -- none --
[loop list="[db-columns table='[value area_table]']" option=cat_column]
@@ -95,12 +92,12 @@
</select>
</td>
</tr>
-<tr class=rnorm>
+<tr class=rownorm>
<td class=clabel>4.</td>
<td class=clabel>
Choose a search type:
</td>
-<td>
+<td class=cdata>
<select name="cat_type" onChange="change_ta(this.form.search_code,this.form.cat_type.value)">
<option value="narrow"> Narrow search (area and category match)
<option value="simple"> Simple search (only category matches)
@@ -108,12 +105,12 @@
</select>
</td>
</tr>
-<tr class=rnorm>
+<tr class=rownorm>
<td class=clabel valign=top>5.</td>
<td valign=top class=clabel>
Complex search code:
</td>
-<td>
+<td class=cdata>
NOTE: Not active unless complex search selected above.<br>
<textarea rows=1 cols=50 name=search_code disabled=true>
fi=products
@@ -138,39 +135,39 @@
</textarea>
</td>
</tr>
-<tr class=rnorm>
+<tr class=rownorm>
<td class=clabel>6.</td>
<td class=clabel>
Select the page class:
</td>
-<td>
+<td class=cdata>
<INPUT NAME=which_page VALUE=all>
</td>
</tr>
-<tr class=rnorm>
+<tr class=rownorm>
<td class=clabel>7.</td>
<td class=clabel>
Select the page area:
</td>
-<td>
+<td class=cdata>
<INPUT NAME=sel VALUE=left>
</td>
</tr>
-<tr class=rnorm>
+<tr class=rownorm>
<td class=clabel>8.</td>
<td class=clabel>
Decide whether to remove previous settings:
</td>
-<td>
+<td class=cdata>
<SELECT NAME=nuke><OPTION VALUE=0>No <OPTION VALUE=1>Yes</SELECT>
</td>
</tr>
-<tr class=rnorm>
+<tr class=rownorm>
<td class=clabel>9.</td>
<td class=clabel>
Click this button to populate:
</td>
-<td>
+<td class=cdata>
[button text="Populate"]
[flag type=write table="area"]
[flag type=write table="cat"]
@@ -298,10 +295,6 @@
[/button]
<BR>
</td>
-</tr>
-
-<tr>
-<td colspan=3 class=rborder><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
</tr>
</table>
2.6 +2 -3 interchange/dist/lib/UI/pages/admin/login.html
rev 2.6, prev_rev 2.5
Index: login.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/login.html,v
retrieving revision 2.5
retrieving revision 2.6
diff -u -r2.5 -r2.6
--- login.html 18 Aug 2002 08:09:05 -0000 2.5
+++ login.html 14 Jan 2003 02:25:50 -0000 2.6
@@ -14,9 +14,8 @@
[set mv_no_count][/set]
[set mv_no_session_id][/set]
[set no_login_required]1[/set]
-[set ui_class]None[/set]
-[set page_title]Welcome to Interchange[/set]
-[set page_banner] [/set]
+[set ui_class]Login[/set]
+[set page_title]Interchange: Log in to Administration[/set]
[set help_name]logout.main[/set]
@_UI_STD_HEAD_@
2.19 +1245 -1145interchange/dist/lib/UI/pages/admin/menu_editor.html
rev 2.19, prev_rev 2.18
Index: menu_editor.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/menu_editor.html,v
retrieving revision 2.18
retrieving revision 2.19
diff -u -r2.18 -r2.19
--- menu_editor.html 1 Dec 2002 16:38:39 -0000 2.18
+++ menu_editor.html 14 Jan 2003 02:25:50 -0000 2.19
@@ -8,9 +8,15 @@
[set page_title]Menu construction[/set]
[tmpn dhtml_required]1[/tmpn]
[set ui_class]Design[/set]
+[if cgi qmenu_name]
+[set page_banner]Edit the <i>[cgi qmenu_name]</i> menu[/set]
+[else]
[set page_banner]Menu constructor: Make a quick menu[/set]
+[/else]
+[/if]
+[tmpn check_publish]1[/tmpn]
[set page_perm]layout=e[/set]
-[set help_name]layout.edit[/set]
+[set help_name]menu.edit[/set]
[set icon_name]icon_pages.gif[/set]
[seti ui_body_extra][/seti]
[tmp meta_header]
@@ -51,6 +57,10 @@
__UI_META_TABLE__
[/seti]
+<script>
+ var is_form_unpublished = 0;
+</script>
+
[perl tables="[scratch medit_tables]"]
my $menupath = $Variable->{MV_MENU_DIRECTORY} || 'include/menus';
@menufields = qw/
@@ -75,6 +85,8 @@
my %opt = (
table => $CGI->{qmenu_products},
comb_field => $CGI->{qmenu_comb_field},
+ sort_string => $CGI->{qmenu_sort_string},
+ sort_order => $CGI->{qmenu_sort_order},
type => 'comb_category',
even_large => $CGI->{qmenu_even_large},
);
@@ -378,1263 +390,1334 @@
return;
[/perl]
-<p style="font-size: larger">
-
[tmp qmenu_options]
[loop head-skip=1 lr=1 list="[scratch qmenu_fdata]" cgi=1 option=qmenu_name]
<option value="[loop-code]">[loop-code]</option>
[/loop]
[/tmp]
-<table width="95%">
-<tr>
- <td width="30%">
-[if scratch qmenu_options =~ /\S/]
- <form action="[area @@MV_PAGE@@]">
- <input name=mv_action type=hidden value="back">
- <B>Menu name:</B>
- <select name=qmenu_name><option value="">--select--</option>[scratch qmenu_options]</select>
- <input type=submit value="[L]Load[/L]">
- [page href="__UI_BASE__/file_transfer"
- form="
- initial_dir=include/menus
- "]Delete/Manage</A>
- </form>
-[/if]
- </td>
- <td width="40%">
- <span class=cmessage>[warnings auto=1]</span>
- [error all=1 text="<ul class=cerror><li>%s</ul>" joiner="<li>"]
- </td>
- <td width="30%" rowspan=2>
+[output name=search_box]
+<form action="[area @@MV_PAGE@@]" style="margin: 0px; padding: 0px">
+[tmp delete_loc][area href=admin/file_transfer form=| initial_dir=include/menus |][/tmp]
+<input type=button
+ onClick="if(check_publish()) { location='[scratch delete_loc]' }"
+ value="[L]Delete/Manage[/L]"
+ class=s3>
+<input name=mv_action type=hidden value="back">
+
+
+<span class=s3>Menu name</span>
+<select name=qmenu_name
+ onChange="if(check_publish()) { this.form.submit() }"
+ class=s3><option value="" class=s3>--select--</option>[scratch qmenu_options]</select>
+<input type=button
+ name=submittor
+ value="[L]Load[/L]"
+ onClick="if(check_publish()) { this.form.submit() }"
+ class=s3>
+</form>
+[output name=""]
-Build menu tree from database table(s):<br>
-[tabbed-display panel-width=300 panel-height=100
- js-prefix=mvtb_
- panel_style="
- font-family: sans-serif;
- font-size: 10px;
- border: 2px;
- border-color:#999999;
- border-style:outset;"
-
- tab-width=150
- tab-height=20
- panel_id=mvspan2
- tab_style="
- font-size:10px;
- text-align:center;
- font-family: sans-serif;
- line-height:150%;
- border:2px;
- border-color:#999999;
- border-style:outset;
- border-bottom-style:none;"]
-[tabbed-panel Comb_category field]
- <form action="[process href=@@MV_PAGE@@]" style="margin-bottom:0px;">
- <input type=hidden name=mv_session_id value="[data session id]">
- <input type=hidden name=mv_action value="back">
-
-[if !cgi qmenu_products]
- [cgi name=qmenu_products set=products hide=1]
- [cgi name=qmenu_comb_field set=comb_category hide=1]
- [cgi name=qmenu_toplevel_field set=prod_group hide=1]
- [cgi name=qmenu_sublevel_field set=category hide=1]
-[/if]
- <select name="qmenu_products"
- onChange="
- populateTable(
- this.form.qmenu_products.options,
- this.form.qmenu_comb_field.options,
- this.form.qmenu_products.options[this.form.qmenu_products.selectedIndex].value
- );
- populateTable(
- this.form.qmenu_products.options,
- this.form.qmenu_toplevel_field.options,
- this.form.qmenu_products.options[this.form.qmenu_products.selectedIndex].value
- );
- populateTable(
- this.form.qmenu_products.options,
- this.form.qmenu_sublevel_field.options,
- this.form.qmenu_products.options[this.form.qmenu_products.selectedIndex].value
- );
- "
- size=1 style="width:130px;">
- [loop list="[list-databases]" option=qmenu_products cgi=1]
- <OPTION VALUE="[loop-code]">[loop-code]</OPTION>
- [/loop]
- </select> <input type=submit value=Go><br>
-<div id=combfield style="visibility:[if cgi qmenu_use_comb_field]Visible[else]Hidden[/else][/if];">
- <select name="qmenu_comb_field" style="width:130px;">
- <option value=""> -- none --
- [loop list="[db-columns table='[cgi qmenu_products]']" option=qmenu_comb_field cgi=1]
- <option>[loop-code]
- [/loop]
- </select> Field (Default: comb_category)
-</div>
-<div id=nocombfield style="visibility:[if cgi qmenu_use_comb_field]Hidden[else]Visible[/else][/if];">
- <select name="qmenu_toplevel_field" style="width:130px;">
- <option value=""> -- none --
- [loop list="[db-columns table='[cgi qmenu_products]']" option=qmenu_toplevel_field cgi=1]
- <option>[loop-code]
- [/loop]
- </select> Top Level Field<br>
- <select name="qmenu_sublevel_field" style="width:130px;">
- <option value=""> -- none --
- [loop list="[db-columns table='[cgi qmenu_products]']" option=qmenu_sublevel_field cgi=1]
- <option>[loop-code]
- [/loop]
- </select> Sub Level Field
-</div>
- <input type=checkbox name="qmenu_use_comb_field" value=1 onClick="toggle_comb(this.form.qmenu_use_comb_field.checked);" [checked name=qmenu_use_comb_field value=1 cgi=1]> Use comb_field
- <input type=checkbox name="qmenu_even_large" value=1 [checked name=qmenu_even_large value=1 cgi=1]> Override, build even if large
- </form>
-[/tabbed-panel]
-[tabbed-panel Top&Sub Level Tables]
- <form action="[process href=@@MV_PAGE@@]" style="margin-bottom:0px;">
- <input type=hidden name=mv_session_id value="[data session id]">
- <input type=hidden name=mv_action value="back">
- <input type=hidden name=qmenu_cat value=1>
-
- <table style="font-size: 10px">
- <tr>
- <td>
- <select name=qmenu_toplevel>
- [loop list="area [list-databases]" option=qmenu_toplevel cgi=1]
- <option> [loop-code][/loop]
- </select>
- </td>
- <td>
- Top Level table (Default: area)
- </td>
- </tr>
- <tr>
- <td>
- <select name=qmenu_sublevel>
- [loop list="cat [list-databases]" option=qmenu_sublevel cgi=1]
- <option> [loop-code][/loop]
- </select>
- </td>
- <td>
- Sub Level table (Default: cat)
- </td>
- </tr>
- <tr>
- <td>
- [display type=select name=qmenu_sel_value
- lookup_query="select distinct sel from area"
- options="=none" cgi=1]
- </td>
- <td>
- Selector (if any)
- </td>
- </tr>
- </table>
- <input type=checkbox name="qmenu_even_large" value=1> Override, build even if large
- <input type=submit value=Go>
- </form>
-[/tabbed-panel]
-[/tabbed-display]
- </td>
-</tr>
+<span class=cmessage>[warnings auto=1]</span>
+[error all=1 text="<ul class=cerror><li>%s</ul>" joiner="<li>"]
<script language="JavaScript1.2">
- var lines = new Array;
- var initialized = 0;
- var no_alert = 0;
- var tree_mode = 0;
- var extended;
- var extra = new Array;
- var label = new Array;
- var meta = new Array;
- var help = new Array;
- var widget = new Array;
- var ltitle = new Array;
- var emodes;
- var evalues;
- var image_dir = '[image dir-only=1 ui=1 secure="__UI_SECURE__"]';
- var empty_img = image_dir + 'box_empty.gif';
- var up_img = image_dir + 'up.gif';
- var down_img = image_dir + 'down.gif';
- var full_img = image_dir + 'box_checked.gif';
- var left_img = image_dir + 'left.gif';
- var right_img = image_dir + 'right.gif';
- var forward_img = image_dir + 'forward.gif';
- var transfer_img = image_dir + 'transfer.gif';
+var lines = new Array;
+var toggle = new Array;
+var initialized = 0;
+var no_alert = 0;
+var tree_mode = 0;
+var extended;
+var extra = new Array;
+var label = new Array;
+var meta = new Array;
+var help = new Array;
+var widget = new Array;
+var ltitle = new Array;
+var emodes;
+var evalues;
+var image_dir = '[image dir-only=1 ui=1 secure="__UI_SECURE__"]';
+var empty_img = image_dir + 'box_empty.gif';
+var up_img = image_dir + 'up.gif';
+var down_img = image_dir + 'down.gif';
+var full_img = image_dir + 'box_checked.gif';
+var left_img = image_dir + 'left.gif';
+var right_img = image_dir + 'right.gif';
+var plus_img = image_dir + 'tplus.gif';
+var minus_img = image_dir + 'tminus.gif';
+var leaf_img = image_dir + 'bg.gif';
+var forward_img = image_dir + 'forward.gif';
+var transfer_img = image_dir + 'transfer.gif';
+
+var plus_title = ' title="open tree branch" ';
+var minus_title = ' title="close tree branch" ';
+var up_title = ' title="Move checked tree branch or individual item up" ';
+var down_title = ' title="Move checked tree branch or individual item down" ';
+var left_title = ' title="move item (or items from here to checked item) left" ';
+var right_title = ' title="move item (or items from here to checked item) right" ';
+var transfer_title = ' title="load item into editor" ';
+var forward_title = ' title="load item into editor" ';
[perl reparse=0]
- my @out;
- my $i = 0;
-
- $metabase ||= 'icmenu';
- for(@menufields) {
- push @out, " var \U$_\E = $i;";
- DOMETA: {
- last DOMETA if $required{$_} or $_ eq 'code';
- my $metaname = "${metabase}::$_";
- my $mrecord = $Tag->meta_record($metaname)
- or last DOMETA;
- my $lab;
- my $help;
- if($lab = $mrecord->{label}) {
- push @out, " label[$i] = " . $Tag->jsq($lab) . ';';
- }
- if($help = $mrecord->{help}) {
- $help = '<span style="font-size: 12pt;">' .
- '<u>' . "$lab " . "($_)" . '</u><br>' . $help .
- '</span>';
- $help = $Tag->filter('encode_entities', $help);
- push @out, " help[$i] = " . $Tag->jsq($help) . ';';
- }
- if( defined $Values->{ui_meta_force} && $Values->{ui_meta_force}
- or $Variable->{UI_META_LINK}
- )
- {
- my $u = $Tag->page({ href => '__UI_BASE__/flex_editor',
- form => qq(
- ui_meta_view=metaconfig
- item_id=$metaname
- ) });
- push @out, " meta[$i] = " . $Tag->jsq($u . 'meta</a>');
- }
- if(my $type = $mrecord->{type}) {
- $mrecord->{name} = "ext_$_";
- $mrecord->{extra} = qq{onChange="form_changed(1)"};
- my $wid = $Tag->display( {
- meta => $mrecord,
- override => 1,
- default => '',
- } );
- push @out, " widget[$i] = " . $Tag->jsq($wid) . ';';
- }
- }
- $i++;
- }
+my @out;
+my $i = 0;
- for (@suggested) {
- push @out, " var \U$_;";
+$metabase ||= 'icmenu';
+for(@menufields) {
+ push @out, " var \U$_\E = $i;";
+ DOMETA: {
+ last DOMETA if $required{$_} or $_ eq 'code';
+ my $metaname = "${metabase}::$_";
+ my $mrecord = $Tag->meta_record($metaname)
+ or last DOMETA;
+ my $lab;
+ my $help;
+ if($lab = $mrecord->{label}) {
+ push @out, " label[$i] = " . $Tag->jsq($lab) . ';';
+ }
+ if($help = $mrecord->{help}) {
+ $help = '<span style="font-size: 12pt;">' .
+ '<u>' . "$lab " . "($_)" . '</u><br>' . $help .
+ '</span>';
+ $help = $Tag->filter('encode_entities', $help);
+ push @out, " help[$i] = " . $Tag->jsq($help) . ';';
+ }
+ if( defined $Values->{ui_meta_force} && $Values->{ui_meta_force}
+ or $Variable->{UI_META_LINK}
+ )
+ {
+ my $u = $Tag->page({ href => '__UI_BASE__/flex_editor',
+ form => qq(
+ ui_meta_view=metaconfig
+ item_id=$metaname
+ ) });
+ push @out, " meta[$i] = " . $Tag->jsq($u . 'meta</a>');
+ }
+ if(my $type = $mrecord->{type}) {
+ $mrecord->{name} = "ext_$_";
+ $mrecord->{extra} = qq{onChange="form_changed(1)"};
+ my $wid = $Tag->display( {
+ meta => $mrecord,
+ override => 1,
+ default => '',
+ } );
+ push @out, " widget[$i] = " . $Tag->jsq($wid) . ';';
+ }
}
-
- $i = scalar(@menufields);
- push @out, "\tvar CHECK = $i;";
$i++;
- push @out, "\tvar MSG = $i;";
+}
+
+for (@suggested) {
+ push @out, " var \U$_;";
+}
- push @out, "\tlines[0] = ['" . join("', '", @menufields) . "'];";
- return join "\n", @out;
+$i = scalar(@menufields);
+push @out, "\tvar CHECK = $i;";
+$i++;
+push @out, "\tvar MSG = $i;";
+
+push @out, "\tlines[0] = ['" . join("', '", @menufields) . "'];";
+return join "\n", @out;
[/perl]
[restrict enable="perl calc scratch loop image area" log=none]
[loop head-skip=1 lr=1 list="[scratch qmenu_data]"][loop-sub jsline]
sub {
- $loopname = shift;
- my $row = shift;
- $loopinc++;
+$loopname = shift;
+my $row = shift;
+$loopinc++;
- while(@$row < @menufields) {
- push @$row, '';
- }
+while(@$row < @menufields) {
+ push @$row, '';
+}
- if($CGI->{remap}) {
- my $tmp = $row->[$menu_fh{mgroup}];
- $row->[$menu_fh{mgroup}] = $row->[$menu_fh{msort}];
- $row->[$menu_fh{msort}] = $tmp;
- }
+if($CGI->{remap}) {
+ my $tmp = $row->[$menu_fh{mgroup}];
+ $row->[$menu_fh{mgroup}] = $row->[$menu_fh{msort}];
+ $row->[$menu_fh{msort}] = $tmp;
+}
- my $i = 0;
- for(@$row) {
- my $foundit = '';
- if($_ eq '0') {
- # Do nothing
- }
- elsif(/^[1-9](\d*\.)?\d*$/) {
- # Do nothing
- }
- elsif(! length($_) and exists $menuinit{$menufields[$i]}) {
- $_ = $menuinit{$menufields[$i]};
- }
- elsif($_ !~ /'/) {
- s/\r/\\r/g;
- $_ = "'$_'";
+my $i = 0;
+for(@$row) {
+ my $foundit = '';
+ if($_ eq '0') {
+ # Do nothing
+ }
+ elsif(/^[1-9](\d*\.)?\d*$/) {
+ # Do nothing
+ }
+ elsif(! length($_) and exists $menuinit{$menufields[$i]}) {
+ $_ = $menuinit{$menufields[$i]};
+ }
+ elsif($_ !~ /'/) {
+ s/\r/\\r/g;
+ $_ = "'$_'";
+ }
+ elsif($_ !~ /"/) {
+ s/\r/\\r/g;
+ $_ = qq{"$_"};
+ }
+ else {
+ if(s/^\s*{\s+//) {
+ s/(,?\s*\}\s*)$//;
+ $foundit = 1;
+ }
+ s/\\'/-_ESC_QUOTE_-/g;
+ s/'/\\'/g;
+ s/\r+$/' + "\\r"/g;
+ s/\r/' + "\\r" + '/g;
+ s/-_ESC_QUOTE_-/\\\\\\'/g;
+ if($foundit) {
+ $_ = "{" . $_ . "}";
}
- elsif($_ !~ /"/) {
- s/\r/\\r/g;
- $_ = qq{"$_"};
- }
- else {
- if(s/^\s*{\s+//) {
- s/(,?\s*\}\s*)$//;
- $foundit = 1;
- }
- s/\\'/-_ESC_QUOTE_-/g;
- s/'/\\'/g;
- s/\r+$/' + "\\r"/g;
- s/\r/' + "\\r" + '/g;
- s/-_ESC_QUOTE_-/\\\\\\'/g;
- if($foundit) {
- $_ = "{" . $_ . "}";
- }
- $_ = qq{'$_'};
- }
- $i++;
+ $_ = qq{'$_'};
}
- my $line = "$loopname\[" . $loopinc . "] = [" . join(", ", @$row) . "];";
+ $i++;
+}
+my $line = "$loopname\[" . $loopinc . "] = [" . join(", ", @$row) . "];";
#Debug("Final line=$line");
- return $line;
+return $line;
}
[/loop-sub][loop-exec jsline]lines[/loop-exec]
[/loop]
[calc]
- $loopinc++;
- $Scratch->{lastfull} = $loopinc;
- my $stop = $loopinc + 50;
- my @out;
- for(; $loopinc < $stop; $loopinc++) {
- # do nothing
- }
- $Scratch->{loopinc} = $loopinc - 1;
- return;
+$loopinc++;
+$Scratch->{lastfull} = $loopinc;
+my $stop = $loopinc + 50;
+my @out;
+for(; $loopinc < $stop; $loopinc++) {
+ # do nothing
+}
+$Scratch->{loopinc} = $loopinc - 1;
+return;
[/calc]
- var is_form_changed = 0;
- var checkcur = 0;
- var form;
+var is_form_changed = 0;
+var checkcur = 0;
+var form;
+
+function form_changed (is) {
+ is_form_unpublished = 1;
+ if(is == undefined)
+ return is_form_changed;
- function form_changed (is) {
- if(is == undefined)
- return is_form_changed;
+ is_form_changed = is;
+
+ set_save_buttons(is_form_changed);
+}
- is_form_changed = is;
+function check_publish () {
- set_save_buttons(is_form_changed);
+ if(is_form_unpublished == 0) {
+ return true;
}
- function check_change (wid) {
+ if( confirm("Menu has changed and not been published. Continue?") ) {
+ return true;
+ }
- form.cancelsubmit.value = wid == undefined ? 0 : 1;
+ return false;
+}
- if(form_changed() == 0) {
- form.cancelsubmit.value = '';
- return true;
- }
+function check_change (wid) {
- if( confirm("Form has changed and not been saved. Continue?") ) {
- form.cancelsubmit.value = '';
- return true;
- }
+ form.cancelsubmit.value = wid == undefined ? 0 : 1;
- return false;
+ if(form_changed() == 0) {
+ form.cancelsubmit.value = '';
+ return true;
}
- function set_checked_buttons (enab) {
- if(enab == undefined)
- enab = 0;
- var dis;
- var vis;
- var weight;
- var f = document.qmenuform;
- if(enab == 0) {
- dis = 1;
- vis = 'Hidden';
- weight = 'normal';
- f.insbutton.value = "Append menu item";
- }
- else {
- dis = 0;
- vis = 'Visible';
- weight = 'bold';
- f.insbutton.value = "Insert menu item";
- }
- var buttons = [ f.delbutton, f.upbutton, f.downbutton,
- f.loadbutton, f.copybutton ];
+ if( confirm("Form has changed and not been saved. Continue?") ) {
+ form.cancelsubmit.value = '';
+ return true;
+ }
+
+ return false;
+}
+
+function set_checked_buttons (enab) {
+ if(enab == undefined)
+ enab = 0;
+ var dis;
+ var vis;
+ var weight;
+ var f = document.qmenuform;
+ if(enab == 0) {
+ dis = 1;
+ vis = 'Hidden';
+ weight = 'normal';
+ f.insbutton.value = "Append menu item";
+ }
+ else {
+ dis = 0;
+ vis = 'Visible';
+ weight = 'bold';
+ f.insbutton.value = "Insert menu item";
+ }
+ var singles = [ f.delbutton, f.upbutton, f.downbutton ];
+ var buttons = [ singles, f.loadbutton, f.copybutton ];
+ var j;
+ for ( j = 0; j < buttons.length; j++) {
+ var ary = buttons[j];
var i;
- for( i = 0; i < buttons.length; i++) {
- var el = buttons[i];
+ for( i = 0; i < ary.length; i++) {
+ var el = ary[i];
if(el != undefined) {
el.disabled = dis;
el.style.visibility = vis;
el.style.fontWeight = weight;
}
}
- return;
}
+ return;
+}
- function set_save_buttons (enab) {
- if(enab == undefined)
- enab = 0;
- var color;
- var weight;
- if(enab == 0) {
- color = '#666666';
- weight = 'normal';
- }
- else {
- color = '#000000';
- weight = 'bold';
- }
- var f = document.qmenuform;
- var buttons = [ f.savebutton ];
- var i;
- for( i = 0; i < buttons.length; i++) {
- var el = buttons[i];
- if(el != undefined) {
- el.style.color = color;
- el.style.fontWeight = weight;
- }
+function set_save_buttons (enab) {
+ if(enab == undefined)
+ enab = 0;
+ var color;
+ var weight;
+ if(enab == 0) {
+ color = '#666666';
+ weight = 'normal';
+ }
+ else {
+ color = '#000000';
+ weight = 'bold';
+ }
+ var f = document.qmenuform;
+ var buttons = f.savebutton;
+ var i;
+ for( i = 0; i < buttons.length; i++) {
+ var el = buttons[i];
+ if(el != undefined) {
+ el.style.color = color;
+ el.style.fontWeight = weight;
}
- return;
}
+ return;
+}
- function checkit(idx) {
- var nam = 'img' + idx;
- var i_el = document.getElementById(nam);
- var l = lines[idx];
-
- if(l != undefined && l[CHECK] == 1) {
- checkcur = l[CHECK] = 0;
- i_el.src = empty_img;
- set_checked_buttons(0);
- return void(0);
- }
- var i;
- var uncheck = new Array;
- var j = 0;
- for(i = 1; i < lines.length; i++) {
- if(lines[i][CHECK] == 1) {
- uncheck[j] = i;
- j++;
- }
+function checkit(idx) {
+ var nam = 'img' + idx;
+ var i_el = document.getElementById(nam);
+ var l = lines[idx];
+
+ if(l != undefined && l[CHECK] == 1) {
+ checkcur = l[CHECK] = 0;
+ i_el.src = empty_img;
+ set_checked_buttons(0);
+ return void(0);
+ }
+ var i;
+ var uncheck = new Array;
+ var j = 0;
+ for(i = 1; i < lines.length; i++) {
+ if(lines[i][CHECK] == 1) {
+ uncheck[j] = i;
+ j++;
}
+ }
- for(i = 0; i < uncheck.length; i++) {
- var n = uncheck[i];
- lines[n][CHECK] = 0;
- var el = document.getElementById('img' + n);
- el.src = empty_img;
- }
+ for(i = 0; i < uncheck.length; i++) {
+ var n = uncheck[i];
+ lines[n][CHECK] = 0;
+ var el = document.getElementById('img' + n);
+ el.src = empty_img;
+ }
+
+ checkcur = idx;
+ lines[idx][CHECK] = 1;
+ i_el.src = full_img;
+ set_checked_buttons(1);
+ // alert("checkcur=" + checkcur);
+ return void(0);
+}
- checkcur = idx;
- lines[idx][CHECK] = 1;
- i_el.src = full_img;
- set_checked_buttons(1);
- // alert("checkcur=" + checkcur);
- return void(0);
+function escapeParams (parms) {
+ // alert("parms=" + parms);
+ parms = parms.replace(/[\r\n]+/g, "\n");
+ parms = parms.replace(/^\s+/, "");
+ parms = parms.replace(/\s+$/, "");
+ parms = parms.replace(/=/g, "-_EQUAL_X_-");
+ parms = parms.replace(/\n/g, "-_NEWLINE_X_-");
+ parms = escape(parms);
+ parms = parms.replace(/-_NEWLINE_X_-/g, '@@UrlJoiner@@');
+ parms = parms.replace(/-_EQUAL_X_-/g, '=');
+ // alert("parms=" + parms);
+ return parms;
+}
+
+function unescapeParams (parms) {
+ // alert("parms=" + parms);
+ parms = parms.replace(/=/g, "-_EQUAL_X_-");
+ parms = parms.replace(/@@UrlJoiner@@/g, "-_NEWLINE_X_-");
+ parms = unescape(parms);
+ parms = parms.replace(/-_NEWLINE_X_-/g, "\n");
+ parms = parms.replace(/-_EQUAL_X_-/g, '=');
+ // alert("parms=" + parms);
+ return parms;
+}
+
+var page_rep = '';
+var params_rep = '';
+var name_rep = '';
+var showlevel = 1;
+var toggle_bg = 'FFFFFF';
+var collapseit;
+var explodeit;
+
+function toggleShowlevel () {
+ if(showlevel != 1) {
+ showlevel = 1;
+ }
+ else {
+ showlevel = 0;
+ }
+
+ if(tree_mode == 1) {
+ for(var i = 1; i < lines.length; i++)
+ rewrite_tree(i);
+ }
+ else {
+ showlevel = 0;
}
+ form.showlevel.checked = showlevel;
+}
- function escapeParams (parms) {
- // alert("parms=" + parms);
- parms = parms.replace(/[\r\n]+/g, "\n");
- parms = parms.replace(/^\s+/, "");
- parms = parms.replace(/\s+$/, "");
- parms = parms.replace(/=/g, "-_EQUAL_X_-");
- parms = parms.replace(/\n/g, "-_NEWLINE_X_-");
- parms = escape(parms);
- parms = parms.replace(/-_NEWLINE_X_-/g, '@@UrlJoiner@@');
- parms = parms.replace(/-_EQUAL_X_-/g, '=');
- // alert("parms=" + parms);
- return parms;
- }
-
- function unescapeParams (parms) {
- // alert("parms=" + parms);
- parms = parms.replace(/=/g, "-_EQUAL_X_-");
- parms = parms.replace(/@@UrlJoiner@@/g, "-_NEWLINE_X_-");
- parms = unescape(parms);
- parms = parms.replace(/-_NEWLINE_X_-/g, "\n");
- parms = parms.replace(/-_EQUAL_X_-/g, '=');
- // alert("parms=" + parms);
- return parms;
- }
-
- var page_rep = '';
- var params_rep = '';
- var name_rep = '';
- var showlevel = 1;
-
- function toggleShowlevel () {
- if(showlevel != 1) {
- showlevel = 1;
- }
- else {
- showlevel = 0;
- }
+function reset_collapse () {
+ if(explodeit != undefined)
+ explodeit.checked = false;
+ if(collapseit != undefined)
+ collapseit.checked = false;
+}
- if(tree_mode == 1) {
- for(var i = 1; i < lines.length; i++)
- rewrite_tree(i);
- }
- else {
- showlevel = 0;
+function toggleItem (idx, formel, explode) {
+ toggle = new Array;
+ toggle_bg = 'FFFFFF';
+ reset_collapse();
+
+ if(formel != undefined) {
+ if(explode == 1)
+ explodeit = formel;
+ else
+ collapseit = formel;
+
+ formel.checked = true;
+ idx = 1;
+ if(explode != 1)
+ explode = 0;
+ for(var i = 1; i < lines.length; i++) {
+ lines[ i ][0] = explode;
}
- form.showlevel.checked = showlevel;
}
-
- function toggleName (form,val) {
- if(val != undefined) {
- val = val.replace(/\s+$/, '');
- if (val == '') {
- form.label.checked = 1;
- }
- else {
- form.label.checked = 0;
- }
+ else {
+ if(lines[idx] == undefined)
return;
- }
+ if(lines[idx][0] == 0)
+ lines[idx][0] = 1;
+ else
+ lines[idx][0] = 0;
+ }
+ for(var i = 1; i < lines.length; i++)
+ rewrite_tree(i, 1);
+}
- if(form.label.checked) {
- page_rep = form.page.value;
- params_rep = form.params.value;
- form.page.value = '';
- form.params.value = '';
+function toggleName (form,val) {
+ if(val != undefined) {
+ val = val.replace(/\s+$/, '');
+ if (val == '') {
+ form.label.checked = 1;
}
else {
- form.page.value = page_rep;
- form.params.value = params_rep;
+ form.label.checked = 0;
}
- set_save_buttons(form_changed);
return;
}
- function toggleBreak (form,val) {
- if(val != undefined) {
- val = val.replace(/\s+$/, '');
- if (val == '') {
- form.breakline.checked = 1;
- }
- else {
- form.breakline.checked = 0;
- }
- return;
- }
-
- if(form.breakline.checked) {
- form.label.checked = 0;
- toggleName(form);
- form.label.checked = 1;
- toggleName(form);
- name_rep = form.name.value;
- form.name.value = '';
+ if(form.label.checked) {
+ page_rep = form.page.value;
+ params_rep = form.params.value;
+ form.page.value = '';
+ form.params.value = '';
+ }
+ else {
+ form.page.value = page_rep;
+ form.params.value = params_rep;
+ }
+ set_save_buttons(form_changed);
+ return;
+}
+
+function toggleBreak (form,val) {
+ if(val != undefined) {
+ val = val.replace(/\s+$/, '');
+ if (val == '') {
+ form.breakline.checked = 1;
}
else {
- form.name.value = name_rep;
+ form.breakline.checked = 0;
}
- set_save_buttons(form_changed);
return;
}
+
+ if(form.breakline.checked) {
+ form.label.checked = 0;
+ toggleName(form);
+ form.label.checked = 1;
+ toggleName(form);
+ name_rep = form.name.value;
+ form.name.value = '';
+ }
+ else {
+ form.name.value = name_rep;
+ }
+ set_save_buttons(form_changed);
+ return;
+}
+
+function ext_name (str) {
+ var pos = str.indexOf('_') + 1;
+ if(pos < 1)
+ return '';
+ str = str.substr(pos);
+ return str;
+}
- function ext_name (str) {
- var pos = str.indexOf('_') + 1;
- if(pos < 1)
- return '';
- str = str.substr(pos);
- return str;
+function show_title (idx, msg) {
+ if(document.qmenuform.show_info == undefined ||
+ document.qmenuform.show_info.checked != true)
+ return;
+ var el = document.getElementById('titlebox');
+ if(el == undefined)
+ return;
+ if(msg == undefined)
+ msg = ltitle[idx];
+ if(idx == 0 || msg.length == 0) {
+ el.style.visibility = 'Hidden';
+ el.style.display = 'none';
+ }
+ else {
+ el.innerHTML = msg;
+ el.style.visibility = 'Visible';
+ el.style.display = 'block';
}
+}
- function show_title (idx, msg) {
- if(document.qmenuform.show_info == undefined ||
- document.qmenuform.show_info.checked != true)
- return;
- var el = document.getElementById('titlebox');
- if(el == undefined)
- return;
- if(msg == undefined)
- msg = ltitle[idx];
- if(idx == 0 || msg.length == 0) {
- el.style.visibility = 'Hidden';
- el.style.display = 'none';
+function set_mode (mode) {
+ if(mode == 'toggle') {
+ if(tree_mode == 0) {
+ mode = 'tree';
}
else {
- el.innerHTML = msg;
- el.style.visibility = 'Visible';
- el.style.display = 'block';
+ mode = 'simple';
}
}
-
- function set_mode (mode) {
- if(mode == 'toggle') {
- if(tree_mode == 0) {
- mode = 'tree';
- }
- else {
- mode = 'simple';
- }
- }
- var f = document.qmenuform;
- var el = f.treebutton;
- var ch = f.qmenu_tree;
- var cht = f.qmenu_write_tree;
- var tel = document.getElementById('treebox');
+ var f = document.qmenuform;
+ var el = f.treebutton;
+ var ch = f.qmenu_tree;
+ var cht = f.qmenu_write_tree;
+ var tel = document.getElementById('treebox');
// alert("change mode, el=" + el);
- if(mode == 'tree') {
- tree_mode = 1;
- lines[1][MSORT] = 0;
- el.value = "Set simple mode";
- ch.checked = 1;
- cht.checked = 1;
- tel.style.visibility = 'Visible';
- }
- else {
- tree_mode = 0;
- lines[1][MSORT] = 'x';
- el.value = "Set tree mode";
- ch.checked = 0;
- cht.checked = 0;
- tel.style.visibility = 'Hidden';
- }
- var i;
- for(i = 1; i < lines.length; i++) {
- rewrite(i);
- }
- return;
+ if(mode == 'tree') {
+ tree_mode = 1;
+ toggleItem(0, form.collapse, 0);
+ lines[1][MSORT] = 0;
+ el.value = "Set simple mode";
+ ch.checked = 1;
+ cht.checked = 1;
+ tel.style.visibility = 'Visible';
+ tel.style.display = 'block';
+ }
+ else {
+ toggleItem(0, form.explode, 1);
+ tree_mode = 0;
+ lines[1][MSORT] = 'x';
+ el.value = "Set tree mode";
+ ch.checked = 0;
+ cht.checked = 0;
+ tel.style.visibility = 'Hidden';
+ tel.style.display = 'none';
+ }
+ var i;
+ for(i = 1; i < lines.length; i++) {
+ rewrite(i);
}
+ return;
+}
- function rewrite_tree (idx) {
- var out = '';
+function rewrite_tree (idx, tog) {
+ var out = '';
- var l = lines[idx];
-
- if(l != undefined && idx < lines.length) {
- // out = idx +
- out = ' <a href="javascript:checkit(' + idx + ');void(0)"><img ';
- if(l[CHECK] == 1) {
- out = out + 'src="' + checked_img + '" ';
- }
- else {
- out = out + 'src="' + empty_img + '" ';
- }
+ var l = lines[idx];
+ var next = lines[idx + 1];
- var grp = l[MSORT] + '';
-// alert("rewrite grp=" + grp);
- if(! grp.match(/^\d+$/) ) {
- l[MSORT] = 0;
- }
- out = out + 'border=0 align=absbottom ' +
- 'id="img' + idx + '"></A>' + "\n" +
- '<a href="javascript:motion(' + idx + ", 'left');void(0)" +
- '"><img src="' + left_img + '" border=0 align=absbottom></A>' + "\n" +
- '<a href="javascript:motion(' + idx + ", 'right');void(0)" +
- '"><img src="' + right_img + '" border=0 align=absbottom></A>' + "\n" +
- '<a href="javascript:loadForm(' + idx + ");void(0)" +
- '"><img src="' + forward_img + '" border=0 align=absbottom></A>' + "\n";
- for(i = 0; i < l[MSORT]; i++)
- out = out + ' ';
- if(showlevel == 1 && l[MSORT] > 0) {
- out = out + l[MSORT] + ' '
- }
-
- var nme = l[NAME];
- if(nme != undefined) {
- nme = nme.replace(/</g, '<');
- }
- if(l[PAGE]) {
- var i;
- out = out + '<a href="javascript:loadForm(' +
- idx + ');void(0)"' +
- ' onDblClick="checkit(' + idx + ')"' +
- ' title="' + l[PAGE];
- if(l[FORM])
- out = out + '?' + l[FORM];
- if(l[DESCRIPTION])
- out = out + " : " + l[DESCRIPTION];
- out = out + '">' + nme + '</a>';
- }
- else {
- out = out + '<b>' + nme + '</b>';
- }
+ var children = 0;
- if(l[MSG]) {
- out = out + ' <i style="font-size: 8pt;">(' + l[MSG] + ')</i>';
- }
+
+ if(l != undefined && idx < lines.length) {
+ // out = idx +
+ if(next != undefined && next[MSORT] > l[MSORT] )
+ children = 1;
+ out = ' <a href="javascript:checkit(' + idx + ');void(0)"><img ';
+ if(l[CHECK] == 1) {
+ out = out + 'src="' + full_img + '" ';
+ }
+ else {
+ out = out + 'src="' + empty_img + '" ';
}
- var el = document.getElementById('box' + idx);
-// alert("rewriting, el=" + el);
- el.innerHTML = out;
- if(l != undefined && l[CHECK] == 1)
- checkcur = idx;
- // alert("idx=" + idx + ", writing " + out);
- if(lines.length > 25)
- document.getElementById('scrollbox').style.overflow = 'scroll';
- if(lines.length < 25)
- document.getElementById('scrollbox').style.overflow = 'visible';
- return;
- }
+ var grp = l[MSORT] + '';
+// alert("rewrite grp=" + grp);
+ if(! grp.match(/^\d+$/) ) {
+ l[MSORT] = 0;
+ }
- function rewrite (idx) {
- if(tree_mode == 1)
- return rewrite_tree(idx);
-
- var out = '';
-
- var l = lines[idx];
-
- if(l != undefined && idx < lines.length) {
- // out = idx +
- out = ' <a href="javascript:checkit(' + idx + ');void(0)"><img ';
- if(l[CHECK] == 1) {
- out = out + 'src="' + checked_img + '" ';
- }
- else {
- out = out + 'src="' + empty_img + '" ';
- }
+ toggle[l[MSORT]] = l[0];
- var linktitle = '';
- var lzero = lines[0];
- for(var k = 1; k < lzero.length; k++) {
- var lstring = l[k] + '';
- if(lstring.length > 0)
- linktitle = linktitle + '<b>' + lzero[k] + ':</b> ' + lstring + "<br>";
- }
- out = out + 'border=0 align=absbottom ' +
- 'id="img' + idx + '"></A>' + "\n" +
- '<a href="javascript:motion(' + idx + ", 'up');void(0)" +
- '"><img src="' + up_img + '" border=0 align=absbottom></A>' + "\n" +
- '<a href="javascript:motion(' + idx + ", 'down');void(0)" +
- '"><img src="' + down_img + '" border=0 align=absbottom></A>' + "\n" +
- '<a href="javascript:loadForm(' + idx + ");void(0)" +
- '"><img src="' + transfer_img + '" border=0 align=absbottom></A>' + "\n";
-
- var nme = l[NAME];
- if(nme.length > 30) {
- nme=nme.substr(0,27) + '...';
- }
- if(l[PAGE]) {
- out = out + ' <a href="javascript:loadForm(' +
- idx + ');void(0)"' +
- ' onDblClick="checkit(' + idx + ')"' +
- ' onMouseOver="show_title(' + idx + ')"' +
- ' onMouseOut="show_title(0)"' +
- ' title="' + l[PAGE];
- if(l[FORM])
- out = out + '?' + l[FORM];
- out = out + '">' + nme + '</a>';
+ out = out + 'border=0 align=absbottom ' +
+ 'id="img' + idx + '"></A>' + "\n" +
+ '<a href="javascript:motion(' + idx + ", 'up');void(0)" +
+ '"><img src="' + up_img + '"' + up_title + ' border=0 align=absbottom></A>' + "\n" +
+ '<a href="javascript:motion(' + idx + ", 'down');void(0)" +
+ '"><img src="' + down_img + '"' + down_title + ' border=0 align=absbottom></A>' + "\n" +
+ '<a href="javascript:motion(' + idx + ", 'left');void(0)" +
+ '"><img src="' + left_img + '"' + left_title + ' border=0 align=absbottom></A>' + "\n" +
+ '<a href="javascript:motion(' + idx + ", 'right');void(0)" +
+ '"><img src="' + right_img + '"' + right_title + ' border=0 align=absbottom></A>' + "\n" +
+ '<a href="javascript:loadForm(' + idx + ");void(0)" +
+ '"><img src="' + forward_img + '"' + forward_title + ' border=0 align=absbottom></A>' + "\n";
+ for(i = 0; i < l[MSORT]; i++)
+ out = out + ' ';
+ if(children == 1) {
+ var img;
+ if( l[0] != 0 ) {
+ img = minus_img;
+ htitle = minus_title;
}
else {
- out = out + '<span style="font-weight: bold"' +
- ' onMouseOver="show_title(' + idx + ')"' +
- ' onMouseOut="show_title(0)"' + '>' +
- nme + '</span>';
+ img = plus_img;
+ htitle = plus_title;
}
+ out = out +
+ '<a href="javascript:toggleItem(' + idx + ");void(0)" +
+ '"' + htitle + '><img border=0 src="' + img + '"></A>' + "\n";
+ }
+ else {
+ out += '<img border=0 height=16 width=16 src="' + leaf_img + '">';
+ }
+ if(showlevel == 1 && l[MSORT] > 0) {
+ out = out + l[MSORT] + ' '
+ }
- if(l[MSG]) {
- out = out + ' <i style="font-size: 8pt;">(' + l[MSG] + ')</i>';
- }
+ var nme = l[NAME];
+ if(nme != undefined) {
+ nme = nme.replace(/</g, '<');
+ }
+ if(l[PAGE]) {
+ var i;
+ out = out + '<a href="javascript:loadForm(' +
+ idx + ');void(0)"' +
+ ' onDblClick="checkit(' + idx + ')"' +
+ ' title="' + l[PAGE];
+ if(l[FORM])
+ out = out + '?' + l[FORM];
+ if(l[DESCRIPTION])
+ out = out + " : " + l[DESCRIPTION];
+ out = out + '">' + nme + '</a>';
+ }
+ else {
+ out = out + '<b>' + nme + '</b>';
+ }
- // Set box title array
- ltitle[idx] = linktitle.replace(/\r/g, '<br>');
+ if(l[MSG]) {
+ out = out + ' <i class=cmessage style="font-size: 8pt;">(' + l[MSG] + ')</i>';
}
+ }
- var el = document.getElementById('box' + idx);
-// alert("rewriting idx=" + idx + ", el=" + el);
- el.innerHTML = out;
- if(l != undefined && l[CHECK] == 1)
- checkcur = idx;
- // alert("idx=" + idx + ", writing " + out);
- if(lines.length > 25)
- document.getElementById('scrollbox').style.overflow = 'scroll';
- if(lines.length < 25)
- document.getElementById('scrollbox').style.overflow = 'visible';
- return;
+ var el = document.getElementById('box' + idx);
+// alert("rewriting, el=" + el);
+
+ if(tog == 1) {
+ for(var n = 0; n < l[MSORT]; n++) {
+ if(toggle[n] == 0)
+ out = '';
+ }
+ if(out != '') {
+ el.style.background = '#' + toggle_bg;
+ el.style.display = 'block';
+ if(toggle_bg == 'FFFFFF')
+ toggle_bg = 'EEEEEE';
+ else
+ toggle_bg = 'FFFFFF';
+ }
+ else {
+ el.style.background = '#FFFFFF';
+ el.style.display = 'none';
+ }
}
+ el.innerHTML = out;
+
+ if(l != undefined && l[CHECK] == 1)
+ checkcur = idx;
+ // alert("idx=" + idx + ", writing " + out);
+ if(lines.length > 25)
+ document.getElementById('scrollbox').style.overflow = 'scroll';
+ if(lines.length < 25)
+ document.getElementById('scrollbox').style.overflow = 'visible';
+ return;
+}
- function delRow (idx) {
+function rewrite (idx) {
+ if(tree_mode == 1)
+ return rewrite_tree(idx);
- if( ! check_change() )
- return;
+ var out = '';
- zeroForm;
+ var l = lines[idx];
+
+ if(l != undefined && idx < lines.length) {
+ // out = idx +
+ out = ' <a href="javascript:checkit(' + idx + ');void(0)"><img ';
+ if(l[CHECK] == 1) {
+ out = out + 'src="' + full_img + '" ';
+ }
+ else {
+ out = out + 'src="' + empty_img + '" ';
+ }
- if(idx == undefined || idx < 1) {
- idx = checkcur;
- if(idx > 0)
- checkit(idx);
+ var linktitle = '';
+ var lzero = lines[0];
+ for(var k = 1; k < lzero.length; k++) {
+ var lstring = l[k] + '';
+ if(lstring.length > 0)
+ linktitle = linktitle + '<b>' + lzero[k] + ':</b> ' + lstring + "<br>";
+ }
+ out = out + 'border=0 align=absbottom ' +
+ 'id="img' + idx + '"></A>' + "\n" +
+ '<a href="javascript:motion(' + idx + ", 'up');void(0)" +
+ '"><img src="' + up_img + '" border=0 align=absbottom></A>' + "\n" +
+ '<a href="javascript:motion(' + idx + ", 'down');void(0)" +
+ '"><img src="' + down_img + '" border=0 align=absbottom></A>' + "\n" +
+ '<a href="javascript:loadForm(' + idx + ");void(0)" +
+ '"><img src="' + transfer_img + '" border=0 align=absbottom></A>' + "\n";
+
+ var nme = l[NAME];
+ if(nme.length > 30) {
+ nme=nme.substr(0,27) + '...';
+ }
+ if(l[PAGE]) {
+ out = out + ' <a href="javascript:loadForm(' +
+ idx + ');void(0)"' +
+ ' onDblClick="checkit(' + idx + ')"' +
+ ' onMouseOver="show_title(' + idx + ')"' +
+ ' onMouseOut="show_title(0)"' +
+ ' title="' + l[PAGE];
+ if(l[FORM])
+ out = out + '?' + l[FORM];
+ out = out + '">' + nme + '</a>';
}
- if(idx == undefined || idx < 1) {
- alert("No row selected!");
- return;
+ else {
+ out = out + '<span style="font-weight: bold"' +
+ ' onMouseOver="show_title(' + idx + ')"' +
+ ' onMouseOut="show_title(0)"' + '>' +
+ nme + '</span>';
}
- var l = lines[idx];
- if(l == undefined) {
- alert("deleting non-existent row!");
- return;
+ if(l[MSG]) {
+ out = out + ' <i class=cmessage style="font-size: 8pt;">(' + l[MSG] + ')</i>';
}
- var needs_confirm = l[PAGE].length || l[FORM].length
+ // Set box title array
+ ltitle[idx] = linktitle.replace(/\r/g, '<br>');
+ }
- var i;
- for(i = 3; i < 8; i++) {
- if(l[i] != undefined && l[i].length) {
- needs_confirm = 1;
- break;
- }
- }
-
- if(needs_confirm && ! confirm("Delete row " + idx + ", '" + lines[idx][NAME] + "'?") )
- return;
+ var el = document.getElementById('box' + idx);
+// alert("rewriting idx=" + idx + ", el=" + el);
+ el.innerHTML = out;
+ if(l != undefined && l[CHECK] == 1)
+ checkcur = idx;
+ // alert("idx=" + idx + ", writing " + out);
+ if(lines.length > 25)
+ document.getElementById('scrollbox').style.overflow = 'scroll';
+ if(lines.length < 25)
+ document.getElementById('scrollbox').style.overflow = 'visible';
+ return;
+}
- var len = lines.length;
- var last = len - 2;
+function delRow (idx) {
- if(tree_mode == 1) {
- var d = lines[idx + 1];
- if(l[MSORT] == 0 && d != undefined && d[MSORT] > 0) {
- motion(idx + 1, 'left');
- }
- else {
- var save = no_alert;
- no_alert = 1;
- motion(idx, 'left');
- no_alert = save;
- }
- }
+ if( ! check_change() )
+ return;
- for( i = idx; i <= last; i++) {
- lines[i] = lines[i+1];
- rewrite(i);
- }
- len--;
- lines.length = len;
- rewrite(len);
- for(i = idx; i <= len; i++)
- rewrite(i);
+ zeroForm;
+
+ if(idx == undefined || idx < 1) {
+ idx = checkcur;
+ if(idx > 0)
+ checkit(idx);
+ }
+ if(idx == undefined || idx < 1) {
+ alert("No row selected!");
return;
}
- function insRow (idx) {
+ var l = lines[idx];
+ if(l == undefined) {
+ alert("deleting non-existent row!");
+ return;
+ }
- if( ! check_change() )
- return;
+ var needs_confirm = l[PAGE].length || l[FORM].length
- if(idx == undefined || idx < 1) {
- idx = checkcur;
- if (idx > 0)
- checkit(idx);
+ var i;
+ for(i = 3; i < 8; i++) {
+ if(l[i] != undefined && l[i].length) {
+ needs_confirm = 1;
+ break;
}
+ }
+
+ if(needs_confirm && ! confirm("Delete row " + idx + ", '" + lines[idx][NAME] + "'?") )
+ return;
- if(idx == undefined || idx < 1) {
- idx = lines.length;
- }
+ var len = lines.length;
+ var last = len - 2;
- lines.length = lines.length + 1;
- var last = lines.length - 1;
-
- if(lines[idx] != undefined) {
- var penult = last - 1;
- var i;
- for( i = penult; i >= idx; i--) {
- lines[i + 1] = lines[i];
- rewrite(i + 1);
- }
+ if(tree_mode == 1) {
+ var d = lines[idx + 1];
+ if(l[MSORT] == 0 && d != undefined && d[MSORT] > 0) {
+ motion(idx + 1, 'left');
+ }
+ else {
+ var save = no_alert;
+ no_alert = 1;
+ motion(idx, 'left');
+ no_alert = save;
}
+ }
- lines[idx] = new Array;
- for (i = 0; i < CHECK; i++)
- lines[idx][i] = '';
- lines[idx][MSG] = 'NEW';
+ for( i = idx; i <= last; i++) {
+ lines[i] = lines[i+1];
+ rewrite(i);
+ }
+ len--;
+ lines.length = len;
+ rewrite(len);
+ for(i = idx; i <= len; i++)
+ rewrite(i);
+ return;
+}
- if(tree_mode == 1) {
- if(lines[idx - 1] != undefined) {
- lines[idx][MSORT] = lines[idx-1][MSORT];
- }
- else {
- lines[idx][MSORT] = 0;
- }
- }
+function insRow (idx) {
+
+ if( ! check_change() )
+ return;
+
+ if(idx == undefined || idx < 1) {
+ idx = checkcur;
+ if (idx > 0)
+ checkit(idx);
+ }
- rewrite(idx);
+ if(idx == undefined || idx < 1) {
+ idx = lines.length;
+ }
- var ch = [ form.page.value,
- form.params.value,
- form.description.value,
- form.extended.value];
- var something = 0;
+ lines.length = lines.length + 1;
+ var last = lines.length - 1;
+
+ if(lines[idx] != undefined) {
+ var penult = last - 1;
var i;
- for(i = 0; i < ch.length; i++) {
- if(ch[i] != undefined && ch[i].length > 0) {
- something = 1;
- break;
- }
+ for( i = penult; i >= idx; i--) {
+ lines[i + 1] = lines[i];
+ rewrite(i + 1);
}
+ }
- form.lineidx.value = idx;
- if(something > 0 && confirm("Start item out with values from form?")) {
- saveForm(idx);
+ lines[idx] = new Array;
+ for (i = 0; i < CHECK; i++)
+ lines[idx][i] = '';
+ lines[idx][MSG] = 'NEW';
+
+ if(tree_mode == 1) {
+ if(lines[idx - 1] != undefined) {
+ lines[idx][MSORT] = lines[idx-1][MSORT];
+ }
+ else {
+ lines[idx][MSORT] = 0;
}
- return;
}
- function loadForm (idx, msg, zeromsg) {
- if( ! check_change() )
- return;
+ rewrite(idx);
- if(idx == undefined || idx <= 0) {
- idx = checkcur;
- if (idx <= 0) return;
- checkit(idx);
+ var ch = [ form.page.value,
+ form.params.value,
+ form.description.value,
+ form.extended.value];
+ var something = 0;
+ var i;
+ for(i = 0; i < ch.length; i++) {
+ if(ch[i] != undefined && ch[i].length > 0) {
+ something = 1;
+ break;
}
+ }
- if(msg == undefined)
- msg = 'loaded';
-
- if(zeromsg == undefined)
- zeromsg = 'loaded';
-
- var l = lines[idx];
- // alert("idx=" + idx + "\nl=" + l + "\nform=" + form);
-
- form.name.value = name_rep = l[NAME];
- form.page.value = page_rep = l[PAGE];
- form.params.value = params_rep = unescapeParams(l[FORM]);
- form.description.value = l[DESCRIPTION];
- form.mgroup.value = l[MGROUP];
-
- for(var x = 0; x < extra.length; x++) {
- var el;
- var en = extra[x];
- var un = en.toUpperCase();
- var eidx;
- eval('eidx = ' + un);
- eval ('el = form.ext_' + en );
-// if( x < 2) {
+ form.lineidx.value = idx;
+ if(something > 0 && confirm("Start item out with values from form?")) {
+ saveForm(idx);
+ }
+ return;
+}
+
+function loadForm (idx, msg, zeromsg) {
+ if( ! check_change() )
+ return;
+
+ if(idx == undefined || idx <= 0) {
+ idx = checkcur;
+ if (idx <= 0) return;
+ checkit(idx);
+ }
+
+ if(msg == undefined)
+ msg = 'loaded';
+
+ if(zeromsg == undefined)
+ zeromsg = 'loaded';
+
+ var l = lines[idx];
+ // alert("idx=" + idx + "\nl=" + l + "\nform=" + form);
+
+ form.name.value = name_rep = l[NAME];
+ form.page.value = page_rep = l[PAGE];
+ form.params.value = params_rep = unescapeParams(l[FORM]);
+ form.description.value = l[DESCRIPTION];
+ form.mgroup.value = l[MGROUP];
+
+ for(var x = 0; x < extra.length; x++) {
+ var el;
+ var en = extra[x];
+ var un = en.toUpperCase();
+ var eidx;
+ eval('eidx = ' + un);
+ eval ('el = form.ext_' + en );
+// if( x < 2) {
// alert('loading extra form value ' + en + '(' + un + '), eidx=' + eidx + ', value=' + l[eidx]);
// }
- if(el == undefined) {
- alert('bad extra form element: ' + en);
- continue;
- }
- if(el.type == 'select') {
- for(var j = 0; j < el.length; j++) {
- if(el.options[j].value == l[eidx]) {
- el.selectedIndex = j;
- break;
- }
+ if(el == undefined) {
+ alert('bad extra form element: ' + en);
+ continue;
+ }
+ if(el.type == 'select') {
+ for(var j = 0; j < el.length; j++) {
+ if(el.options[j].value == l[eidx]) {
+ el.selectedIndex = j;
+ break;
}
}
- else {
- el.value = l[eidx];
- }
- }
-
- if(INACTIVE != undefined) {
- form.inactive.disabled = 0;
- form.inactive.checked = l[INACTIVE] ? 1 : 0;
}
else {
- form.inactive.disabled = 1;
+ el.value = l[eidx];
}
+ }
- if(form.page.value == '') {
- form.label.checked = 1;
- }
- else {
- form.label.checked = 0;
- }
- if(form.name.value == '') {
- form.breakline.checked = 1;
- }
- else {
- form.breakline.checked = 0;
- }
- form.lineidx.value = idx;
+ if(INACTIVE != undefined) {
+ form.inactive.disabled = 0;
+ form.inactive.checked = l[INACTIVE] ? 1 : 0;
+ }
+ else {
+ form.inactive.disabled = 1;
+ }
- var j;
- for(j = 0; j < lines.length; j++) {
- if(lines[j] != undefined && lines[j][MSG] == zeromsg) {
- lines[j][MSG] = '';
- rewrite(j);
- }
- }
- l[MSG] = msg;
- rewrite(idx);
- form_changed(0);
- mvpan_selectTab(0);
- return;
+ if(form.page.value == '') {
+ form.label.checked = 1;
+ }
+ else {
+ form.label.checked = 0;
+ }
+ if(form.name.value == '') {
+ form.breakline.checked = 1;
+ }
+ else {
+ form.breakline.checked = 0;
}
+ form.lineidx.value = idx;
- function zeroForm (form) {
- if(form == undefined) {
- form = document.qmenuform;
+ var j;
+ for(j = 0; j < lines.length; j++) {
+ if(lines[j] != undefined && lines[j][MSG] == zeromsg) {
+ lines[j][MSG] = '';
+ rewrite(j);
}
- form.page.value = '';
- form.params.value = '';
- form.name.value = '';
- form.description.value = '';
- form.mgroup.value = '';
- if(EXTENDED != undefined)
- form.extended.value = '';
-
- form.inactive.checked = 0;
- form.breakline.checked = 0;
- form.label.checked = 0;
- form.lineidx.value = 0;
+ }
+ l[MSG] = msg;
+ rewrite(idx);
+ form_changed(0);
+ mvpan_selectTab(0);
+ return;
+}
- for(var x = 0; x < extra.length; x++) {
- var el;
- var en = extra[x];
- var un = en.toUpper;
- eval ('el = form.ext_' + en );
+function zeroForm (form) {
+ if(form == undefined) {
+ form = document.qmenuform;
+ }
+ form.page.value = '';
+ form.params.value = '';
+ form.name.value = '';
+ form.description.value = '';
+ form.mgroup.value = '';
+ if(EXTENDED != undefined)
+ form.extended.value = '';
+
+ form.inactive.checked = 0;
+ form.breakline.checked = 0;
+ form.label.checked = 0;
+ form.lineidx.value = 0;
+
+ for(var x = 0; x < extra.length; x++) {
+ var el;
+ var en = extra[x];
+ var un = en.toUpper;
+ eval ('el = form.ext_' + en );
- if(el.type == 'select') {
- el.selectedIndex = undefined;
- }
- else {
- el.value = '';
- }
+ if(el.type == 'select') {
+ el.selectedIndex = undefined;
+ }
+ else {
+ el.value = '';
}
+ }
- form_changed(0);
- mvpan_selectTab(0);
- return;
- }
+ form_changed(0);
+ mvpan_selectTab(0);
+ return;
+}
- function boxMsg (idx, msg) {
-
- }
+function boxMsg (idx, msg) {
+
+}
- function saveForm (idx, msg, zeromsg) {
+function saveForm (idx, msg, zeromsg) {
- if(idx == undefined || idx < 1)
- idx = form.lineidx.value;
+ if(idx == undefined || idx < 1)
+ idx = form.lineidx.value;
- if(idx <= 0) {
- alert("Improper line index " + idx);
- return;
- }
- var l = lines[idx];
+ if(idx <= 0) {
+ alert("Improper line index " + idx);
+ return;
+ }
+ var l = lines[idx];
- if(msg == undefined)
- msg = 'saved';
+ if(msg == undefined)
+ msg = 'saved';
- if(zeromsg == undefined)
- zeromsg = 'saved';
+ if(zeromsg == undefined)
+ zeromsg = 'saved';
- // alert("idx=" + idx + "\nl=" + l + "\nform=" + form);
-
- form.lineidx.value = idx;
- l[PAGE] = form.page.value;
- l[FORM] = escapeParams(form.params.value);
- l[NAME] = form.name.value;
- l[MGROUP] = form.mgroup.value;
-
- var ttt = form.description.value;
- ttt = ttt.replace(/\r\n/g, "\r");
- l[DESCRIPTION] = ttt.replace(/\n/g, "\r");
-
- for(var x = 0; x < extra.length; x++) {
- var el;
- var en = extra[x];
- var un = en.toUpperCase();
- var eidx;
- eval('eidx = ' + un);
- eval('el = form.ext_' + en );
-
- if(el.type == 'select') {
- var sel = el.options[el.selectedIndex];
- if(sel == defined) {
- l[eidx] = sel.value;
- }
- else {
- l[eidx] = '';
- }
+ // alert("idx=" + idx + "\nl=" + l + "\nform=" + form);
+
+ form.lineidx.value = idx;
+ l[PAGE] = form.page.value;
+ l[FORM] = escapeParams(form.params.value);
+ l[NAME] = form.name.value;
+ l[MGROUP] = form.mgroup.value;
+
+ var ttt = form.description.value;
+ ttt = ttt.replace(/\r\n/g, "\r");
+ l[DESCRIPTION] = ttt.replace(/\n/g, "\r");
+
+ for(var x = 0; x < extra.length; x++) {
+ var el;
+ var en = extra[x];
+ var un = en.toUpperCase();
+ var eidx;
+ eval('eidx = ' + un);
+ eval('el = form.ext_' + en );
+
+ if(el.type == 'select') {
+ var sel = el.options[el.selectedIndex];
+ if(sel == defined) {
+ l[eidx] = sel.value;
}
else {
- l[eidx] = el.value;
+ l[eidx] = '';
}
}
-
- if(INACTIVE != undefined) {
- l[INACTIVE] = form.inactive.checked ? 1 : 0;
- }
-
- var j;
- for(j = 0; j < lines.length; j++) {
- if(lines[j] != undefined && lines[j][MSG] == zeromsg) {
- lines[j][MSG] = '';
- rewrite(j);
- }
+ else {
+ l[eidx] = el.value;
}
+ }
- l[MSG] = msg;
- if(checkcur > 0)
- checkit(checkcur);
- rewrite(idx);
- zeroForm();
- return;
+ if(INACTIVE != undefined) {
+ l[INACTIVE] = form.inactive.checked ? 1 : 0;
}
- function setOutput () {
- var output = new Array;
- var i;
- var linelen = [calc]scalar @menufields[/calc];
- output[0] = "[calc]join "\\t", @menufields [/calc]";
- document.qmenuform.qmenu_text.value = output[0];
- for(i = 1; i < lines.length; i++) {
- var ttt = "" + i;
- while( ttt.length < 3 )
- ttt = '0' + ttt;
- var tl = new Array;
- var j;
- tl[0] = ttt;
- if(tree_mode != 1)
- lines[i][MSORT] = 'x' + ttt;
- for( j = 1; j < linelen; j++) {
- tl[j] = lines[i][j];
- if(tl[j] == undefined)
- tl[j] = '';
- }
- tl[DESCRIPTION] = tl[DESCRIPTION].replace(/\r/g, "\\r");
- if(EXTENDED != undefined)
- tl[EXTENDED] = tl[EXTENDED].replace(/\r/g, "\\r");
- output[i] = tl.join("\t");
+ var j;
+ for(j = 0; j < lines.length; j++) {
+ if(lines[j] != undefined && lines[j][MSG] == zeromsg) {
+ lines[j][MSG] = '';
+ rewrite(j);
}
- document.qmenuform.qmenu_text.value = output.join("\n") + "\n";
- // alert(document.qmenuform.qmenu_text.value);
- return;
}
- function canon_lines () {
- for(i = lines.length - 1; i > 0; i--) {
- if(lines[i] != undefined)
- break;
- lines.length = lines.length - 1;
- }
+ l[MSG] = msg;
+ if(checkcur > 0)
+ checkit(checkcur);
+ rewrite(idx);
+ zeroForm();
+ return;
+}
+
+function setOutput () {
+ var output = new Array;
+ var i;
+ var linelen = [calc]scalar @menufields[/calc];
+ output[0] = "[calc]join "\\t", @menufields [/calc]";
+ document.qmenuform.qmenu_text.value = output[0];
+ for(i = 1; i < lines.length; i++) {
+ var ttt = "" + i;
+ while( ttt.length < 3 )
+ ttt = '0' + ttt;
+ var tl = new Array;
+ var j;
+ tl[0] = ttt;
+ if(tree_mode != 1)
+ lines[i][MSORT] = 'x' + ttt;
+ for( j = 1; j < linelen; j++) {
+ tl[j] = lines[i][j];
+ if(tl[j] == undefined)
+ tl[j] = '';
+ }
+ tl[DESCRIPTION] = tl[DESCRIPTION].replace(/\r/g, "\\r");
+ if(EXTENDED != undefined)
+ tl[EXTENDED] = tl[EXTENDED].replace(/\r/g, "\\r");
+ output[i] = tl.join("\t");
}
+ document.qmenuform.qmenu_text.value = output.join("\n") + "\n";
+ // alert(document.qmenuform.qmenu_text.value);
+ return;
+}
- function do_alert (msg) {
- if(no_alert != 1)
- alert(msg);
+function canon_lines () {
+ for(i = lines.length - 1; i > 0; i--) {
+ if(lines[i] != undefined)
+ break;
+ lines.length = lines.length - 1;
}
+}
- function moveit (idx, motion) {
- var up = idx - 1;
- var dn = idx + 1;
+function do_alert (msg) {
+ if(no_alert != 1)
+ alert(msg);
+}
- var dest;
+function moveit (idx, motion) {
+ var up = idx - 1;
+ var dn = idx + 1;
- if (up < 1 && motion == 'up')
- return void(0);
- if (dn > lines.length - 1 && motion == 'down')
- return void(0);
- dest = motion == 'up' ? up : dn;
+ var dest;
- var tmp = lines[dest];
- lines[dest] = lines[idx];
- lines[idx] = tmp;
+ if (up < 1 && motion == 'up')
+ return void(0);
+ if (dn > lines.length - 1 && motion == 'down')
+ return void(0);
- rewrite(idx);
- rewrite(dest);
+ reset_collapse();
- return;
- }
+ dest = motion == 'up' ? up : dn;
- function movetree (idx, motion) {
- var up = idx - 1;
- var dn = idx + 1;
+ var tmp = lines[dest];
+ lines[dest] = lines[idx];
+ lines[idx] = tmp;
- if(up < 1) {
- alert("Can't move first element in tree.");
- return;
- }
+ rewrite(idx);
+ rewrite(dest);
- var end = checkcur;
+ return;
+}
- if(end < idx)
- end = idx;
-
- var x;
- for(x = idx; x <= end; x++) {
- var l = lines[x];
- var u = lines[up];
- var d = lines[dn];
- u[MSORT] *= 1;
- l[MSORT] *= 1;
- if(isNaN(u[MSORT])) {
- u[MSORT] = 0;
- }
-
- if(isNaN(l[MSORT])) {
- l[MSORT] = 0;
- }
-
- if(motion == 'left') {
- if(l[MSORT] == 0) {
- if(x == idx) {
- do_alert("Already at top level.");
- break;
- }
- }
- else {
- l[MSORT] -= 1;
- }
- while (x >= end && d != undefined && d[MSORT] - 1 > l[MSORT]) {
- d[MSORT] -= 1;
- rewrite_tree(dn);
- dn++;
- d = lines[dn];
+function movetree (idx, motion) {
+ var up = idx - 1;
+ var dn = idx + 1;
+
+ if(up < 1) {
+ alert("Can't move first element in tree.");
+ return;
+ }
+
+ var end = checkcur;
+
+ if(end < idx)
+ end = idx;
+
+ var x;
+ for(x = idx; x <= end; x++) {
+ var l = lines[x];
+ var u = lines[up];
+ var d = lines[dn];
+ u[MSORT] *= 1;
+ l[MSORT] *= 1;
+ if(isNaN(u[MSORT])) {
+ u[MSORT] = 0;
+ }
+
+ if(isNaN(l[MSORT])) {
+ l[MSORT] = 0;
+ }
+
+ if(motion == 'left') {
+ if(l[MSORT] == 0) {
+ if(x == idx) {
+ do_alert("Already at top level.");
+ break;
}
}
else {
- if(l[MSORT] > u[MSORT]) {
- if(x == idx) {
- do_alert("Already at farthest right, need parent at same level or higher.");
- break;
- }
- }
- else {
- l[MSORT] += 1;
+ l[MSORT] -= 1;
+ }
+ while (x >= end && d != undefined && d[MSORT] - 1 > l[MSORT]) {
+ d[MSORT] -= 1;
+ rewrite_tree(dn, 1);
+ dn++;
+ d = lines[dn];
+ }
+ }
+ else {
+ if(l[MSORT] > u[MSORT]) {
+ if(x == idx) {
+ do_alert("Already at farthest right, need parent at same level or higher.");
+ break;
}
}
- dn++;
- up++;
- rewrite(x);
+ else {
+ l[MSORT] += 1;
+ }
}
-
- return;
+ dn++;
+ up++;
+ rewrite(x);
}
- function search_win () {
- window.name = 'mainwindow[scratch window_name]';
- var url = '[area
- href="admin/search_wizard"
- form=|
- ui_source_form=qmenuform
- ui_source_var=params
- |]';
- url += '&ui_searchblob=' + escape(form.params.value);
- window.open(url, undefined, 'scrollbars,location=no,status=no,toolbar=no,resizable,fullsize=no,width=900,height=700');
- return void(0);
+ return;
+}
+
+function search_win () {
+ window.name = 'mainwindow[scratch window_name]';
+ var url = '[area
+ href="admin/search_wizard"
+ form=|
+ ui_source_form=qmenuform
+ ui_source_var=params
+ |]';
+ url += '&ui_searchblob=' + escape(form.params.value);
+ window.open(url, undefined, 'scrollbars,location=no,status=no,toolbar=no,resizable,fullsize=no,width=900,height=700');
+ return void(0);
+}
+
+function movethem (idx, end, target) {
+ var tmp = new Array;
+ reset_collapse();
+
+ for (var i = target; i < idx; i++) {
+ tmp[tmp.length] = lines[i];
}
- function motion (idx, motion, fromchecked) {
+ var j = target;
+ for(var i = idx; i <= end; i++, j++) {
+ lines[j] = lines[i];
+ }
+ for (var i = 0; i < tmp.length; i++, j++) {
+ lines[j] = tmp[i];
+ }
+ for(var i = 1; i < lines.length; i++)
+ rewrite_tree(i, 1);
+}
- if(motion == 'left' || motion == 'right') {
- if(tree_mode != 1) {
- alert("Not in tree mode, can't move " + motion);
- return;
- }
+function motion (idx, motion, fromchecked) {
- return movetree(idx, motion);
- }
- if(fromchecked == 1) {
- idx = checkcur;
- if(idx == undefined || idx < 1)
- return;
+ if(motion == 'left' || motion == 'right') {
+ if(tree_mode != 1) {
+ alert("Not in tree mode, can't move " + motion);
+ return;
}
- var up = idx - 1;
- var dn = idx + 1;
-
- if( ! check_change() )
+ return movetree(idx, motion);
+ }
+ if(fromchecked == 1) {
+ idx = checkcur;
+ if(idx == undefined || idx < 1)
return;
+ }
+
+ var up = idx - 1;
+ var dn = idx + 1;
+
+ if( ! check_change() )
+ return;
- var dest;
+ var dest;
- // alert("checkcur=" + checkcur + "\nidx=" + idx + "\ndest=" + dest);
- if (checkcur != 0 && fromchecked != 1) {
+ // alert("checkcur=" + checkcur + "\nidx=" + idx + "\ndest=" + dest);
+ if (checkcur != 0 && fromchecked != 1) {
+ if(tree_mode == 1) {
+// alert('in tree mode move');
+ var extant;
+ var m;
+ var nextpeer;
+ var prevpeer;
+ var clev = lines[checkcur][MSORT];
+ if(motion == 'down') {
+
+ for(m=checkcur + 1; extant==undefined; m++) {
+// alert('in tree mode move, m=' + m + ', nextpeer=' + nextpeer + ', extant=' + extant + ', checkcur=' + checkcur + '');
+ if(lines[m] == undefined) {
+ if(nextpeer == undefined)
+ return void(0);
+ extant = m - 1;
+// alert('ready for tree mode move, m=' + m + ', nextpeer=' + nextpeer + ', extant=' + extant + ', checkcur=' + checkcur + '');
+ }
+ else if(lines[m][MSORT] <= clev) {
+ if(nextpeer == undefined) {
+ nextpeer = m;
+ }
+ else {
+ extant = m -1;
+// alert('ready for tree mode move, m=' + m + ', nextpeer=' + nextpeer + ', extant=' + extant + ', checkcur=' + checkcur + '');
+ }
+ }
+ }
+ movethem(nextpeer, extant, checkcur);
+ return void(0);
+ }
+ else {
+ var m;
+ for(m=checkcur + 1; extant==undefined; m++) {
+ if(lines[m] == undefined || lines[m][MSORT] == clev) {
+// alert('tree move up, extant=' + extant + ', checkcur=' + checkcur + '');
+ extant = m - 1;
+ }
+ }
+ for(m=checkcur - 1; prevpeer==undefined; m--) {
+ if(lines[m] == undefined) {
+ return void(0);
+ }
+// alert('in tree mode move, m=' + m + ', prevpeer=' + prevpeer + ', extant=' + extant + ', checkcur=' + checkcur + '');
+ if(lines[m][MSORT] == clev) {
+ prevpeer = m;
+ }
+ }
+ movethem(checkcur, extant, prevpeer);
+ return void(0);
+ }
+ }
+ else {
dest = checkcur;
checkit(checkcur);
if(idx == dest)
@@ -1658,39 +1741,47 @@
}
motion = 0;
}
- else {
- if (up < 1 && motion == 'up')
- return void(0);
- if (dn > lines.length - 1 && motion == 'down')
- return void(0);
- dest = motion == 'up' ? up : dn;
- }
-
- // alert("checkcur=" + checkcur + "\nidx=" + idx + "\ndest=" + dest);
- if (motion) {
- moveit(idx, motion);
- }
+ }
+ else {
+ if (up < 1 && motion == 'up')
+ return void(0);
+ if (dn > lines.length - 1 && motion == 'down')
+ return void(0);
+ dest = motion == 'up' ? up : dn;
+ }
- return void(0);
+ // alert("checkcur=" + checkcur + "\nidx=" + idx + "\ndest=" + dest);
+ if (motion) {
+ moveit(idx, motion);
}
+ return void(0);
+}
+
</script>
[/restrict]
-<tr>
+
+[output name="top_of_form"]
<form name=qmenuform action="[process href=@@MV_PAGE@@]" method=POST>
- <td colspan=2>
<input name=mv_session_id type=hidden value="[data session id]">
<input name=mv_action type=hidden value="back">
<input name=cancelsubmit type=hidden value="">
<input name=qmenu_name type=hidden value="[scratch qmenu_name]">
<input name=qmenu_text type=hidden value="">
-Save to new menu <input name=qmenu_new type=text size=20 value="[cgi qmenu_new]">
+[output name=top_buttons]
+<span class=s3>
+Save to new menu <input name=qmenu_new type=text size=20 value="[cgi qmenu_new]" class=s3>
<input type=submit
style="Visibility: Hidden;"
disabled=1
name=junksubmit
value=".">
- <input type=submit name=doit style="font-weight: bold" value="Publish" onClick="check_change(1) && setOutput()">
+
+ <input type=button
+ onClick="set_mode('toggle')"
+ name=treebutton
+ value="Set tree mode" class=s3>
+ <input type=submit name=doit style="font-weight: bold" value="Publish" onClick="check_change(1) && setOutput()" class=s3>
<input type=submit
onClick="
@@ -1698,21 +1789,12 @@
this.form.qmenu_new.value='';
this.form.qmenu_name.value='';
"
- value="Cancel">
-
- <input type=button
- onClick="set_mode('toggle')"
- name=treebutton
- value="Set tree mode">
- <div id=treebox>
- <input type=checkbox
- name=show_info
- value=1> Show item info in flyout
- <input type=checkbox name=qmenu_tree value=1> Tree mode
- <input type=checkbox name=qmenu_write_tree value=1> Write tree to DB
- <input type=checkbox name=showlevel value=1 onClick="toggleShowlevel()" CHECKED=1> Show numerical level
- </div>
-<br>
+ value="Cancel" class=s3>
+</span>
+[output name=""]
+<table width="100%">
+<tr>
+ <td>
<input type=button
onClick="insRow()"
name=insbutton
@@ -1736,6 +1818,16 @@
onClick="motion(0,'down',1)"
value="Down">
</td>
+ <td>
+ <div id=treebox style="font-size: 10px; display: none">
+ <input type=checkbox name=show_info value=1> Show item info
+ <input type=checkbox name=qmenu_tree value=1> Tree mode
+ <input type=checkbox name=qmenu_write_tree value=1> Write tree to DB
+ <input type=checkbox name=showlevel value=1 onClick="toggleShowlevel()" CHECKED=1> Show numerical level
+ <input type=checkbox name=collapse value=1 onClick="toggleItem(0,this,0)"> Collapse tree
+ <input type=checkbox name=explode value=1 onClick="toggleItem(0,this,1)"> Explode tree
+ </div>
+ </td>
</tr>
</table>
<div id=titlebox style="
@@ -1776,34 +1868,11 @@
</td>
<td valign=top>
+ <input type=hidden name=lineidx value="0">
<table width="100%">
<tr>
- <td>
-
- <input type=hidden name=lineidx value="0">
- <input type=button onClick="saveForm()" name=savebutton value="Save menu item">
- <input type=button onClick="loadForm()" name=loadbutton
- style="visibility: Hidden;"
- value="Load menu item">
- <input type=button onClick="saveForm(checkcur)" name=copybutton
- style="visibility: Hidden;"
- value="Copy to checked entry">
- <br><br>
- <input type=submit style="font-weight: bold" name=doit value="Publish" onClick="check_change(1) && setOutput()">
-
- <input type=submit
- onClick="
- this.form.qmenu_text.value='';
- this.form.qmenu_new.value='';
- this.form.qmenu_name.value='';
- "
- value="Cancel">
- </td>
- </tr>
- <tr>
<td>
-[tabbed-display panel-width=500 panel-height=800
- tab-width=150]
+[tabbed-display panel-width="500" panel-height="100%" panel-shade=e tab-height=24 tab-width=150]
[tabbed-panel General]
<table>
<tr>
@@ -1824,61 +1893,68 @@
</tr>
<tr>
<td class=clabel>
- Detailed Description
+ Form values<br>
+ <input name=ui_searchblob type=hidden value="">
+ <input name=ui_source_win type=hidden value="[scratch window_name]">
+
+ <div align=right>
+ <input
+ style="font-size: smaller; font-weight: bold;"
+ type=button
+ value="Create search"
+ onClick="this.form.page.value = 'search';form_changed(1);search_win();"
+ ><br><input
+ style="font-size: smaller;"
+ type=button onClick="this.form.params.value=''"
+ value="clear search">
+ </div>
</td>
<td class=cdata>
- <textarea cols=50 rows=4 name=description onChange="form_changed(1);"></textarea>
+ <textarea cols=50 rows=4 name=params onChange="form_changed(1);"></textarea>
</td>
</tr>
<tr>
<td class=clabel>
- Inactive
- </td class=cdata>
+ Detailed Description
+ </td>
<td class=cdata>
- <input name=inactive type=checkbox value=1 onChange="form_changed(1);">
+ <textarea cols=50 rows=4 name=description onChange="form_changed(1);"></textarea>
</td>
</tr>
<tr>
<td class=clabel>
- Menu Group
+ Options
</td>
<td class=cdata>
- <input name=mgroup type=text onChange="form_changed(1);">
+ <input name=label type=checkbox value=1 onChange="form_changed(1);toggleName(this.form)">Label only<br>
+ <input name=breakline type=checkbox value=1 onChange="form_changed(1);toggleBreak(this.form)">Break line
</td>
</tr>
<tr>
<td class=clabel>
- Options
- </td>
+ Inactive
+ </td class=cdata>
<td class=cdata>
- <input name=label type=checkbox value=1 onChange="form_changed(1);toggleName(this.form)">Label only<br>
- <input name=breakline type=checkbox value=1 onChange="form_changed(1);toggleBreak(this.form)">Break line
+ <input name=inactive type=checkbox value=1 onChange="form_changed(1);">
</td>
</tr>
- </table>
-[/tabbed-panel]
-[tabbed-panel Form Parameters]
- <table>
<tr>
<td class=clabel>
- Form values<br>
- <input name=ui_searchblob type=hidden value="">
- <input name=ui_source_win type=hidden value="[scratch window_name]">
-
- <div align=right>
- <input
- style="font-size: smaller; font-weight: bold;"
- type=button
- value="Create search"
- onClick="this.form.page.value = 'search';form_changed(1);search_win();"
- > <input
- style="font-size: smaller;"
- type=button onClick="this.form.params.value=''"
- value="clear search">
- </div>
+ Menu Group
</td>
<td class=cdata>
- <textarea cols=50 rows=4 name=params onChange="form_changed(1);"></textarea>
+ <input name=mgroup type=text onChange="form_changed(1);">
+ </td>
+ </tr>
+ <tr>
+ <td colspan=2>
+ <input type=button onClick="saveForm()" name=savebutton value="Save menu item">
+ <input type=button onClick="loadForm()" name=loadbutton
+ style="visibility: Hidden;"
+ value="Load menu item">
+ <input type=button onClick="saveForm(checkcur)" name=copybutton
+ style="visibility: Hidden;"
+ value="Copy to checked entry">
</td>
</tr>
</table>
@@ -1901,6 +1977,8 @@
if(lines.length > 1) {
if(tm == 1) {
set_mode('tree');
+ toggleShowlevel();
+ toggleItem(0, form.collapse, 0);
}
else {
set_mode('simple');
@@ -1970,7 +2048,18 @@
}
</script>
- </table>
+ <tr>
+ <td colspan=2>
+ <input type=button onClick="saveForm()" name=savebutton value="Save menu item">
+ <input type=button onClick="loadForm()" name=loadbutton
+ style="visibility: Hidden;"
+ value="Load menu item">
+ <input type=button onClick="saveForm(checkcur)" name=copybutton
+ style="visibility: Hidden;"
+ value="Copy to checked entry">
+ </td>
+ </tr>
+ </table>
[/tabbed-panel]
[/tabbed-display]
</td>
@@ -1979,9 +2068,20 @@
</td>
</tr>
</table>
-<a href="javascript:document.qmenuform.inactive.disabled = 1; void(0)">Disable</A>
-<a href="javascript:document.qmenuform.inactive.disabled = 0; void(0)">Enable</A>
+[output name="bottom_buttons"]
+ <input type=submit name=doit style="font-weight: bold" value="Publish" onClick="check_change(1) && setOutput()" class=s3>
+
+ <input type=submit
+ onClick="
+ this.form.qmenu_text.value='';
+ this.form.qmenu_new.value='';
+ this.form.qmenu_name.value='';
+ "
+ value="Cancel" class=s3>
+[output name="bottom_of_form"]
</form>
+[output name=""]
+
<!-- ----- END REAL STUFF ----- -->
@_UI_STD_FOOTER_@
2.3 +51 -41 interchange/dist/lib/UI/pages/admin/merchandising.html
rev 2.3, prev_rev 2.2
Index: merchandising.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/merchandising.html,v
retrieving revision 2.2
retrieving revision 2.3
diff -u -r2.2 -r2.3
--- merchandising.html 18 Aug 2002 08:09:05 -0000 2.2
+++ merchandising.html 14 Jan 2003 02:25:50 -0000 2.3
@@ -19,14 +19,7 @@
<!-- ----- BEGIN REAL STUFF ----- -->
-[if scratch ui_message]
-<BLOCKQUOTE>
- [scratch ui_message]
- [set ui_message][/set]
-</BLOCKQUOTE>
-<p>
-
-[/if]
+
[flag type=write table=merchandising]
[perl tables="merchandising __UI_META_TABLE__"]
my $db = $Db{merchandising};
@@ -55,13 +48,28 @@
return;
[/perl]
+[output name=search_box]
<FORM ACTION="[area @@MV_PAGE@@]">
<INPUT NAME=ui_text_qualification>
<INPUT TYPE=submit VALUE="[L]Limit with search[/L]">
</FORM>
+
+
+[output name=""]
+
[if cgi ui_text_qualification]
-<H3>[msg arg.0="[cgi ui_text_qualification]"]Entries containing "%s"[/msg]</H3>
+ [calc]
+ return if $CGI->{mv_like_spec};
+ $Scratch->{page_banner} ||= $Scratch->{page_title};
+ $Scratch->{page_banner} .= errmsg(
+ '-- entries containing "%s"',
+ $CGI->{ui_text_qualification},
+ );
+ return;
+ [/calc]
[/if]
+
+
[search-region more=1 arg="
[if cgi ui_text_qualification]
se=[cgi ui_text_qualification]
@@ -92,53 +100,55 @@
}
return;
[/calc]
-<TABLE border=0 CELLSPACING=0 width="90%">
-<tr class=rborder height=1><td colspan=8></td></tr>
-<TR class=rmarq>
-<TH ALIGN=LEFT>[page href=@@MV_PAGE@@ extra=rmarq form=`
+<table width="100%" border=0 cellpadding=0 cellspacing=1 class=rseparator>
+<tr class=rhead>
+<td align=left>[page href=@@MV_PAGE@@ extra=rhead form=`
return "ui_sort_field=sku\n" . sortrev('sku');
- `][L]SKU[/L]</TH>
-<TH ALIGN=LEFT>[page href=@@MV_PAGE@@ extra=rmarq form=`
+ `][L]SKU[/L]</td>
+<td align=left>[page href=@@MV_PAGE@@ extra=rhead form=`
return "ui_sort_field=description\n" . sortrev('description');
- `][L]Description[/L]</TH>
-<TH ALIGN=CENTER>[L]Qty pricing[/L]</TH>
-<TH ALIGN=CENTER>[L]Up-sell[/L]</TH>
-<TH ALIGN=CENTER>[L]Cross-sell[/L]</TH>
-<TH ALIGN=CENTER>[L]Promotion[/L]</TH>
-<TH> </TH>
+ `][L]Description[/L]</td>
+<td align=center>[L]Qty pricing[/L]</td>
+<td align=center>[L]Up-sell[/L]</td>
+<td align=center>[L]Cross-sell[/L]</td>
+<td align=center>[L]Promotion[/L]</td>
+<td> </td>
</tr>
-<tr class=rborder height=1><td colspan=7></td></tr>
[/on-match]
[search-list]
-<TR [item-alternate 2]class=rnorm[else]class=ralt[/else][/item-alternate]>
-<TD>[page href=__UI_BASE__/item_edit
+<tr [item-alternate 2]class=rownorm[else]class=rowalt[/else][/item-alternate]>
+<td>[page href=__UI_BASE__/item_edit
form="
ui_return_to=@@MV_PAGE@@
item_id=[item-code]
- "][item-code]</A></TD>
-<TD>[filter 30][item-description][/filter]</TD>
-<TD ALIGN=CENTER>[page href=__UI_BASE__/item_price form="
+ "][item-code]</A></td>
+<td>[filter 30][item-description][/filter]</td>
+<td align=center>[page href=__UI_BASE__/item_price form="
ui_return_to=@@MV_PAGE@@
+ merchandising=1
item_id=[item-code]
"][if-item-data pricing sku][L]Yes[/L][else][L]No[/L][/else][/if-item-data]</A>
-</TD>
-<TD ALIGN=CENTER>[page href=__UI_BASE__/item_up form="
+</td>
+<td align=center>[page href=__UI_BASE__/item_up form="
ui_return_to=@@MV_PAGE@@
+ merchandising=1
item_id=[item-code]
"][if-item-data merchandising upsell_to][L]Yes[/L][else][L]No[/L][/else][/if-item-data]</a>
-</TD>
-<TD ALIGN=CENTER>[page href=__UI_BASE__/item_cross form="
+</td>
+<td align=center>[page href=__UI_BASE__/item_cross form="
ui_return_to=@@MV_PAGE@@
+ merchandising=1
item_id=[item-code]
-"][if-item-data merchandising cross_sell][L]Yes[/L][else][L]No[/L][cgi ui_text_qualification][/else][/if-item-data]</a>
-</TD>
-<TD ALIGN=CENTER>[page href=__UI_BASE__/item_feature
- form="
- ui_return_to=@@MV_PAGE@@
- item_id=[item-code]
- "][if-item-data merchandising featured][item-exec do_timed][item-code][/item-exec][display table=merchandising column=featured type=display key="[item-code]"][else][L]none[/L][/else][/if-item-data]</a></td>
-<TD ALIGN=CENTER>[if-item-data merchandising timed_promotion]<font size=1>[item-exec show_exp][item-code][/item-exec]</font>[else] [/else][/if-item-data]
-</TD>
+"][if-item-data merchandising cross_sell][L]Yes[/L][else][L]No[/L][/else][/if-item-data]</a>
+</td>
+<td align=center>[page href=__UI_BASE__/item_feature
+ form="
+ ui_return_to=@@MV_PAGE@@
+ merchandising=1
+ item_id=[item-code]
+ "][if-item-data merchandising featured][item-exec do_timed][item-code][/item-exec][display table=merchandising column=featured type=display key="[item-code]"][else][L]none[/L][/else][/if-item-data]</a></td>
+<td align=center>[if-item-data merchandising timed_promotion]<font size=1>[item-exec show_exp][item-code][/item-exec]</font>[else] [/else][/if-item-data]
+</td>
</tr>
[/search-list]
[no-match]
@@ -152,7 +162,7 @@
[/no-match]
<tr class=rborder height=1><td colspan=8></td></tr>
[more-list]
-<tr class=rnorm>
+<tr class=rownorm>
<td colspan=6 align=center>
[L]More items[/L]: [decade-next][/decade-next] [more] [decade-prev][/decade-prev]
</td>
2.5 +6 -10 interchange/dist/lib/UI/pages/admin/meta_editor.html
rev 2.5, prev_rev 2.4
Index: meta_editor.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/meta_editor.html,v
retrieving revision 2.4
retrieving revision 2.5
diff -u -r2.4 -r2.5
--- meta_editor.html 7 Nov 2002 19:15:55 -0000 2.4
+++ meta_editor.html 14 Jan 2003 02:25:50 -0000 2.5
@@ -60,9 +60,9 @@
return;
[/calc]
-[set ui_class]Admin[/set]
+[set ui_class]Tables[/set]
[set help_name]meta.edit[/set]
-[set icon_name][/set]
+[set icon_name]icon_config.gif[/set]
@_UI_STD_HEAD_@
@@ -72,13 +72,10 @@
no-table-meta=1
no-meta=1
ui_data_fields="
- =Label
+ =Typical
code
label
-
- =Widget
-
type
filter
width
@@ -110,11 +107,10 @@
extended
"
widget.extended="textarea_5_50"
+ ui_style=1
+ output_map=1
tabbed=1
- panel_width=800
- panel_height=700
- table_width=800
][/table-editor]
@_UI_STD_FOOTER_@
-<!-- page: @@MV_PAGE@@ version: $Revision: 2.4 $ -->
+<!-- page: @@MV_PAGE@@ version: $Revision: 2.5 $ -->
2.12 +178 -180 interchange/dist/lib/UI/pages/admin/order.html
rev 2.12, prev_rev 2.11
Index: order.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/order.html,v
retrieving revision 2.11
retrieving revision 2.12
diff -u -r2.11 -r2.12
--- order.html 4 Nov 2002 14:48:27 -0000 2.11
+++ order.html 14 Jan 2003 02:25:50 -0000 2.12
@@ -125,7 +125,8 @@
else { $CGI->{ui_text_qualification} = "" }
}
return if $CGI->{ui_text_qualification};
- return unless $Config->{Database}{transactions}{LARGE};
+ return unless
+ $Variable->{ORDER_VIEW_LARGE} or $Config->{Database}{transactions}{LARGE};
$Scratch->{ui_location} = $Tag->area( {
href => '__UI_BASE__/flex_select',
@@ -156,72 +157,40 @@
<!-- ----- BEGIN REAL STUFF ----- -->
-<table border=0><tr>
-<td>
-<small>
- <FORM ACTION="[area @@MV_PAGE@@]">
- <INPUT NAME=order VALUE="[cgi order]">
- <INPUT TYPE=submit VALUE="[L]Start at order number[/L]">
- </FORM>
-</small>
-</td>
-<td valign=top><B> [L]or[/L] </B></td>
-<td>
-<small>
+[output name=search_box]
+<table align=right>
+ <tr>
+ <td class=s3>
+ <FORM ACTION="[area admin/order_view]">
+ View order: <INPUT NAME=order VALUE="[cgi order]" class=s3>
+ <INPUT TYPE=submit VALUE="[L]Go[/L]" class=s3>
+ </FORM>
+ </td>
+ <td>
<FORM ACTION="[area @@MV_PAGE@@]">
- <INPUT NAME=ui_text_qualification VALUE="">
- <INPUT TYPE=submit VALUE="[L]Limit with search[/L]">
+ <INPUT NAME=ui_text_qualification VALUE="" class=s3>
+ <INPUT TYPE=submit VALUE="[L]Limit with search[/L]" class=s3>
</FORM>
-</small>
-</td>
-</tr>
+ </td>
+ </tr>
</table>
-[if !scratch old_browser]
-<script>
- var stat_array = new Array;
- function push_el (el, status) {
- if(stat_array[status] == undefined) {
- stat_array[status] = new Array;
-// alert('created ' + status + ' array');
- }
- var els = stat_array[status];
- els[els.length] = el;
- }
- function checkType (type, cond) {
- var other = false;
- if(cond == undefined)
- cond = true;
- if(cond != true)
- other = true;
- if(stat_array == undefined) {
- return;
- }
- var i;
- var alerted;
- for(i in stat_array) {
-// alert("checking status of " + i);
- var els = stat_array[i];
- for (var j = 0; j < els.length; j++) {
- var el = document.getElementById(els[j]);
- if(el != undefined) {
- if(i == type)
- el.checked = cond;
- else
- el.checked = other;
- }
- }
- }
- }
-</script>
-[/if]
+
+[output name=""]
[if cgi ui_text_qualification]
-[if !cgi mv_like_spec]
-<H4>[msg arg.0="[cgi ui_text_qualification]"]Entries containing "%s"[/msg]</H4>
-[/if]
+ [calc]
+ return if $CGI->{mv_like_spec};
+ $Scratch->{page_banner} ||= $Scratch->{page_title};
+ $Scratch->{page_banner} .= errmsg(
+ '-- entries containing "%s"',
+ $CGI->{ui_text_qualification},
+ );
+ return;
+ [/calc]
[/if]
+
[search-region more=1 arg="
fi=transactions
ml=__UI_SZ_LIST_ORDER__
@@ -272,54 +241,57 @@
}
return;
[/calc]
+
+[output name=top_of_form]
<FORM ACTION="[process]" METHOD=POST NAME=batch>
<INPUT TYPE=hidden NAME=mv_session_id VALUE="[data session id]">
<INPUT TYPE=hidden NAME=mv_nextpage VALUE="@@MV_PAGE@@">
<INPUT TYPE=hidden NAME=mv_todo VALUE=back>
-<TABLE border=0 CELLSPACING=0 width="90%">
-<tr class=rborder height=1><td colspan=8></td></tr>
-<TR class=rmarq>
-<th> </th>
-<TH ALIGN=LEFT>
-[page href=@@MV_PAGE@@ extra=rmarq form=`
+
+[output]
+
+<table width="100%" border=0 cellpadding=0 cellspacing=1 class=rseparator>
+<tr class=rhead>
+<td> </td>
+<td class=rhead>
+[page href=@@MV_PAGE@@ form=`
return "ui_sort_field=code\n" . sortrev('code');
`][L]Order[/L]</A>
-</TH>
-<TH ALIGN=LEFT>
-[page href=@@MV_PAGE@@ extra=rmarq form=`
+</td>
+<td class=rhead>
+[page href=@@MV_PAGE@@ form=`
return "ui_sort_field=lname,fname\n" . sortrev('lname');
`][L]User[/L]</A>
-</TH>
-<TH ALIGN=LEFT>
-[page href=@@MV_PAGE@@ extra=rmarq form=`
+</td>
+<td class=rhead>
+[page href=@@MV_PAGE@@ form=`
return "ui_sort_field=country,state,city\n" . sortrev('country');
`][L]Location[/L]</A>
-</TH>
-<TH ALIGN=LEFT>
-[page href=@@MV_PAGE@@ extra=rmarq form=`
+</td>
+<td class=rhead>
+[page href=@@MV_PAGE@@ form=`
return "ui_sort_field=order_date\n" . sortrev('order_date');
`][L]Date[/L]/[L]Time[/L]</A>
-</TH>
-<TH ALIGN=LEFT>
-[page href=@@MV_PAGE@@ extra=rmarq form=`
+</td>
+<td class=rhead align=right>
+[page href=@@MV_PAGE@@ form=`
return "ui_sort_field=nitems\n" . sortrev('nitems', 1);
`][L]Items[/L]</A>
-</TH>
-<TH ALIGN=CENTER>
-[page href=@@MV_PAGE@@ extra=rmarq form=`
+</td>
+<td class=rhead align=right>
+[page href=@@MV_PAGE@@ form=`
return "ui_sort_field=total_cost\n" . sortrev('total_cost', 1);
`][L]Total[/L]</A>
-</TH>
-<TH ALIGN=RIGHT>
-[page href=@@MV_PAGE@@ extra=rmarq form=`
+</td>
+<td align=right class=rhead>
+[page href=@@MV_PAGE@@ form=`
return "ui_sort_field=status\n" . sortrev('status');
`][L]Status[/L]</A>
-</TH>
+</td>
</tr>
-<tr class=rborder height=1><td colspan=8></td></tr>
[search-list]
-<TR [item-alternate 2]class=rnorm[else]class=ralt[/else][/item-alternate]>
-<TD>
+<tr [item-alternate 2]class=rownorm[else]class=rowalt[/else][/item-alternate]>
+<td>
<INPUT TYPE=checkbox NAME=order VALUE="[item-code]"
[item-calc]
my $string = '';
@@ -348,16 +320,16 @@
']"
onClick="return confirm('Are you sure you want to delete order [item-code]?')"><IMG src="delsm.gif" ALT="DELETE [item-code]" BORDER=0></A>
[/if]
-</TD>
-<TD>[page href=__UI_BASE__/order_view form="order=[item-code]"][item-code]</A></TD>
+</td>
+<TD>[page href=__UI_BASE__/order_view form="order=[item-code]"][item-code]</A></td>
<TD>
[page href=__UI_BASE__/customer_view form="customer=[item-param username]"][item-param lname], [item-param fname][if-item-param company] -- [item-param company][/if-item-param]</A>
-</TD>
-<TD>[item-filter 30][item-param city], [item-param state] [item-param country][/item-filter]</TD>
-<TD ALIGN=LEFT>[convert-date][item-param order_date][/convert-date]</TD>
-<TD ALIGN=CENTER>[item-param nitems]</TD>
-<TD ALIGN=Right>[currency][item-param total_cost][/currency]</TD>
-<TD ALIGN=Right>[page href="__UI_BASE__/order_status" form="order=[item-code]"][loc][item-param status][/loc]</A></TD>
+</td>
+<td>[item-filter 30][item-param city], [item-param state] [item-param country][/item-filter]</td>
+<td align=left>[convert-date][item-param order_date][/convert-date]</td>
+<td align=right>[item-param nitems]</td>
+<td align=right>[currency][item-param total_cost][/currency]</td>
+<td align=right>[page href="__UI_BASE__/order_status" form="order=[item-code]"][loc][item-param status][/loc]</A></td>
</tr>
[/search-list]
[no-match]
@@ -369,7 +341,6 @@
</td>
</tr>
[/no-match]
-<tr class=rborder height=1><td colspan=8></td></tr>
[more-list]
<tr class=ralt>
<td colspan=8 align=center>
@@ -383,31 +354,43 @@
</table>
[/search-region]
-<table>
-<tr>
- <td>
- [if scratch can_delete]
- [button form=batch text="[L]Delete checked orders[/L]"
- src="__UI_IMG__delete.gif"
- link-text-too=1
- confirm='[L]Are you sure you want to delete the checked orders?[/L]']deleteorder=1
- [/button]
- [/if]
+[output name=bottom_buttons]
+
+[if scratch can_delete]
+ [button form=batch text="[L]Delete checked[/L]"
+ no-src="__UI_IMG__delete.gif"
+ extra="class=s3"
+ link-text-too=1
+ confirm='[L]Are you sure you want to delete the checked orders?[/L]']deleteorder=1
+ [/button]
- </td>
- <td>
- [button form=batch src="[scratch archive_img]"
- link-text-too=1
+[/if]
+
+[button form=batch
+ no-src="[scratch archive_img]"
+ extra="class=s3"
+ link-text-too=1
text=`
- my $tmp = "$Scratch->{archive_nm} checked orders";
+ my $tmp = "$Scratch->{archive_nm} checked";
return errmsg("\u$tmp");
`]
-[scratch archive_nm]order=1[/button]
- </td>
- <td>
- [button form=batch src="__UI_IMG__icon_merch.gif"
+[scratch archive_nm]order=1
+[/button]
+
+<input type=button
+ onClick="location='[area href=__UI_BASE__/spread
+ form="
+ mv_data_table=transactions
+ ui_meta_view=tracking
+ ui_text_qualification=tracking_number=
+ "]'"
+ value="[L]Enter tracking numbers[/L]" class=s3>
+
+[button form=batch
+ no-src="__UI_IMG__icon_merch.gif"
link-text-too=1
- text="Ship checked orders"
+ extra="class=s3"
+ text="Ship checked"
]
ui_sequence_edit=[calc]
$CGI->{item_id} = delete $CGI->{order};
@@ -424,78 +407,93 @@
[/calc]
mv_nextpage=__UI_BASE__/order_status
[/button]
- </td>
-[if scratch old_browser]
- <td colspan=2>
+
<input
type=checkbox
name=ship_auto
- value=1>
- <span title="Ship all lines of all orders, archive[if variable SETTLE_TRANSACTION], settle[/if]">Ship all automatically</span>
- </td>
-[else]
- <td>
- <script>
- [calc]
- return join "\n", @els, '';
- [/calc]
- function div_vis (show) {
- var el = document.getElementById('ship_auto_help');
- el.style.display = show ? 'block' : 'none';
- }
- </script>
- <span onMouseOver="div_vis(1)" onMouseOut="div_vis(0)">
- <input type=checkbox name=ship_auto value=1> Ship all automatically
-
- </span>
- </td>
- <td rowspan=2>
- <div
- id=ship_auto_help
- style="
- display: none;
- border: 2px solid black;
- padding: 5px;
- ">
- Ship all lines of all orders,<br>
- archive[if variable SETTLE_TRANSACTION], settle[/if]
- </div>
- </td>
-[/else]
-[/if]
- </tr>
-[if !scratch old_browser]
- <tr>
- <td>
- <A HREF="javascript:checkAll(document.batch, 'order', 0)"><img src="__UI_IMG__box_checked.gif" border=0>Check all</A>
- </td>
- <td>
- <A HREF="javascript:checkAll(document.batch, 'order', 1)"><img src="__UI_IMG__box_empty.gif" border=0>Uncheck all</A>
+ value=1 class=s3>
+ <span title="Ship all lines of all orders, archive[if variable SETTLE_TRANSACTION], settle[/if]" class=s3>Ship all automatically</span>
- </td>
- <td>
-[page href=__UI_BASE__/spread
- form="
- mv_data_table=transactions
- ui_meta_view=tracking
- ui_text_qualification=tracking_number=
- "]<img src="__UI_IMG__box_checked.gif" border=0>Enter tracking numbers</A>
+[output name=""]
- </td>
- <tr>
- [loop list="shipped pending canceled partial"]
- <td width=100>
- <A HREF="javascript:checkType('[loop-code]')">
- <img src="__UI_IMG__box_checked.gif" border=0>Check all [loop-code]
- </A>
- </td>
- [/loop]
- </tr>
+[if !scratch old_browser]
+<script>
+ var stat_array = new Array;
+ function push_el (el, status) {
+ if(stat_array[status] == undefined) {
+ stat_array[status] = new Array;
+// alert('created ' + status + ' array');
+ }
+ var els = stat_array[status];
+ els[els.length] = el;
+ }
+
+ function checkType (type, cond) {
+ var other = false;
+ if(cond == undefined)
+ cond = true;
+ if(cond != true)
+ other = true;
+ if(stat_array == undefined) {
+ return;
+ }
+ var i;
+ var alerted;
+ for(i in stat_array) {
+// alert("checking status of " + i);
+ var els = stat_array[i];
+ for (var j = 0; j < els.length; j++) {
+ var el = document.getElementById(els[j]);
+ if(el != undefined) {
+ if( type == 'none' ) {
+ el.checked = false;
+ }
+ else {
+ if( type == 'all' ) {
+ el.checked = true;
+ }
+ else {
+ if(i == type)
+ el.checked = cond;
+ else
+ el.checked = other;
+ }
+ }
+ }
+ }
+ var image_dir = '[image dir-only=1 ui=1 secure="__UI_SECURE__"]';
+ var types = ['all', 'none', 'shipped', 'pending', 'canceled', 'partial'];
+ for(var i = 0; i < types.length; i++) {
+ var img = document.getElementById('img_check_' + types[i]);
+ if(img != undefined)
+ img.src= image_dir + 'box_empty.gif';
+ }
+ var img = document.getElementById('img_check_' + type);
+ img.src= image_dir + 'box_checked.gif';
+ }
+ }
+ [calc]
+ return join "\n", @els, '';
+ [/calc]
+</script>
+<br>
+ <A HREF="javascript:checkType('all')"><img id="img_check_all" src="__UI_IMG__box_empty.gif" border=0>Check all</A>
+
+ <A HREF="javascript:checkType('none')"><img id="img_check_none" src="__UI_IMG__box_empty.gif" border=0>Uncheck all</A>
+[loop list="shipped pending canceled partial"]
+
+ <A HREF="javascript:checkType('[loop-code]')">
+ <img id="img_check_[loop-code]" src="__UI_IMG__box_empty.gif" border=0>Check all [loop-code]
+ </A>
+[/loop]
[/if]
-</table>
+
+[output name=bottom_of_form]
</FORM>
+[output]
+
<!-- ----- END REAL STUFF ----- -->
@_UI_STD_FOOTER_@
-<!-- page: @@MV_PAGE@@ version: $Id: order.html,v 2.11 2002/11/04 14:48:27 mheins Exp $ -->
+<!-- page: @@MV_PAGE@@ version: $Id: order.html,v 2.12 2003/01/14 02:25:50 mheins Exp $ -->
2.11 +3 -1 interchange/dist/lib/UI/pages/admin/order_status.html
rev 2.11, prev_rev 2.10
Index: order_status.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/order_status.html,v
retrieving revision 2.10
retrieving revision 2.11
diff -u -r2.10 -r2.11
--- order_status.html 4 Nov 2002 14:48:27 -0000 2.10
+++ order_status.html 14 Jan 2003 02:25:50 -0000 2.11
@@ -148,6 +148,8 @@
[table-editor
table=transactions
key="[cgi order]"
+ output_map=1
+ button_delete=1
form-name=tform
table-width="100%"
next-text="Update status only, no ship function"
@@ -179,4 +181,4 @@
</script>
@_UI_STD_FOOTER_@
-<!-- page: @@MV_PAGE@@ version: $Id: order_status.html,v 2.10 2002/11/04 14:48:27 mheins Exp $ -->
+<!-- page: @@MV_PAGE@@ version: $Id: order_status.html,v 2.11 2003/01/14 02:25:50 mheins Exp $ -->
2.9 +314 -385 interchange/dist/lib/UI/pages/admin/order_view.html
rev 2.9, prev_rev 2.8
Index: order_view.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/order_view.html,v
retrieving revision 2.8
retrieving revision 2.9
diff -u -r2.8 -r2.9
--- order_view.html 27 Oct 2002 04:36:04 -0000 2.8
+++ order_view.html 14 Jan 2003 02:25:50 -0000 2.9
@@ -1,6 +1,5 @@
[set page_title][L]Order manager[/L]: [L]View order[/L][/set]
[set ui_class]Orders[/set]
-[set page_banner][L]View order[/L][/set]
[set help_name]order.view[/set]
[set icon_name]icon_orders.gif[/set]
@_UI_STD_HEAD_@
@@ -26,403 +25,332 @@
[bounce page="[scratch ui_bounce]"]
[/if]
-[if scratch ui_message]
-<BLOCKQUOTE>
- [scratch ui_message]
- [set ui_message][/set]
-</BLOCKQUOTE>
-<p>
-
-[/if]
-
-
<!-- ----- BEGIN REAL STUFF ----- -->
[update values]
[perl tables=country]### pre-open database for calcs below[/perl]
-[loop list="[value-extended order]"]
-
-<table __UI_T_PROPERTIES__>
-<tr>
-<td colspan=6 class=rborder><img src="bg.gif" height=1></td>
-</tr>
-
-<tr>
-<td colspan=6 align=left class=rnorm>
-<b>[L]Order number[/L]: [loop-code] [L]Order date[/L]: [convert-date][loop-data transactions order_date][/convert-date]</b>
-</td>
-</tr>
-<tr>
-<td colspan=6 align=left class=rnorm>
-<b>[L]Customer[/L]:
-[if-loop-data transactions username]
-<A HREF="[area
+[loop list="[value-extended order]"]
+<table width="100%" border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td>
+ <table width="100%" border="0" cellpadding="6" cellspacing="1" class="rseparator">
+ <tr>
+ <td width="25%" nowrap class="block4bold">User Name: <a href="[area href="admin/customer_view" form="customer=[loop-data transactions username]"]" title="View customer"><span class="maincontent">[loop-data transactions username]</span></a></td>
+ <td width="25%" nowrap class="block4bold">
+ Order Status:
+ [page href="admin/order_status" form="order=[loop-code]"]
+ <span class="alert">Pending</span>
+ </a>
+ [if-loop-data transactions archived == 1]
+ ([L]archived[/L])
+ [/if-loop-data]
+ [if-loop-data transactions deleted == 1]
+ ([L]deleted[/L])
+ [/if-loop-data]
+
+ </td>
+ <td width="25%" nowrap class="block4bold">
+
+ Affiliate:
+ [if-loop-data transactions affiliate]
+ [page href="admin/affiliate"
+ form="affiliate=[loop-data transactions affiliate]"
+ ]<span class="maincontent">[loop-data transactions affiliate]</span></A>
+ [else]
+ <span class="maincontent">none</span>
+ [/else]
+ [/if-loop-data]
+ </td>
+ <td width="25%" nowrap class="block4bold">
+ Order Date: <span class="maincontent">
+ [convert-date fmt="%b %e, %Y %l:%M %P"][loop-data transactions order_date][/convert-date]
+ </span>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td height="6"><img src="bg.gif" width="1" height="6"></td>
+ </tr>
+ <tr>
+ <td>
+ <table width="100%" border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <!-- CUSTOMER DETAILS -->
+ [loop prefix=customer list="[loop-data transactions username]"]
+ <td width="33%" valign="top">
+ <table width="100%" height="160" border="0" cellpadding="6" cellspacing="1" class="rseparator">
+ <tr>
+
+ <td height="1%" class="block4"><a href="[area href='admin/customer_view' form='customer=[loop-data transactions username]']">Customer Details</a></td>
+ </tr>
+ <tr>
+ <td height="99%" valign="top" class="block4">
+ <table width="100%" border="0" cellspacing="0" cellpadding="1">
+ <tr>
+ <td width="30%" class="block4bold">Customer:</td>
+ <td width="70%" class="maincontent"><a href="[area href='admin/customer_view' form='customer=[loop-data transactions username]']">[customer-data userdb fname] [customer-data userdb lname]</a>
+ </td>
+ </tr>
+ <tr>
+ <td class="block4bold"> [L]Company[/L]:</td>
+ <td class="maincontent">[customer-data userdb company]</td>
+ </tr>
+ <tr>
+ <td nowrap class="block4bold">[L]Home phone[/L]:</td>
+ <td class="maincontent">[customer-data userdb phone_night]</td>
+ </tr>
+ <tr>
+ <td nowrap class="block4bold"> [L]Work phone[/L]:</td>
+ <td class="maincontent">[customer-data userdb phone_night]</td>
+ </tr>
+ <tr>
+ <td class="block4bold">[L]Email[/L]:</td>
+ <td class="maincontent"><a href="mailto:[customer-data userdb email]">[loop-data transactions email]</a></td>
+ </tr>
+ <tr>
+ <td nowrap class="block4bold">[L]Payment type[/L]:</td>
+ <td class="maincontent">[loop-data transactions payment_method]</td>
+ </tr>
+ <tr>
+ <td height="15" colspan="2" class="block4bold"><img src="bg.gif" width="1" height="1"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </td>
+ [/loop]
+ <td width="3"><img src="bg.gif" width="3" height="1"></td>
+ <!-- BILLING DETAILS -->
+ <td width="33%" valign="top">
+ <table width="100%" height="160" border="0" cellpadding="6" cellspacing="1" class="rseparator">
+ <tr>
+ <td height="1%" class="block4"><a href="#">Billing Details</a></td>
+ </tr>
+ <tr>
+ <td height="99%" valign="top" class="block4">
+[if-loop-data transactions b_address1]
+ [loop prefix=bill list="[loop-code]"]
+ <table width="100%" border="0" cellspacing="0" cellpadding="1">
+ <tr>
+ <td width="30%" class="block4bold">[L]Name[/L]:</td>
+ <td width="70%" class="maincontent"><A HREF="[area
href=__UI_BASE__/customer_view
arg="[loop-data transactions username]"
- ]"><u>[loop-data transactions fname] [loop-data transactions lname]</u></A>
-[else]
- [loop-data transactions fname] [loop-data transactions lname]
-[/else]
-[/if-loop-data]
- </b>
-</td>
-</tr>
-
-<!-- ----- Affiliate Check ----- -->
-[if-loop-data transactions affiliate]
-<tr>
-<td colspan=6 align=left class=rnorm>
-<b>[L]Affiliate[/L]: [data table=affiliate column=name key="[loop-data transactions affiliate]"]</b>
-</td>
-</tr>
-[/if-loop-data]
-
-<tr>
-<td colspan=2 valign=top>
-
-<!-- ----- Customer information ----- -->
-
-<table>
-<tr><td align=right>
-<font size=2><b> [L]Company[/L]: </b></font>
-</td><td><font size=2>[loop-data transactions company]</font></td></tr>
-
-<tr><td align=right>
-<font size=2><b> [L]Home phone[/L]: </b></font>
-</td><td><font size=2>[loop-data transactions phone_night]</font></td></tr>
-
-<tr><td align=right>
-<font size=2><b> [L]Work phone[/L]: </b></font>
-</td><td><font size=2>[loop-data transactions phone_day]</font></td></tr>
-
-<tr><td align=right>
-<font size=2><b> [L]Email[/L]: </b></font>
-</td><td><font size=2> <a href="mailto:[loop-data transactions email]"><U>[loop-data transactions email]</U></a></font></td></tr>
-
-<tr><td align=right>
-<font size=2><b> [L]Payment type[/L]: </b></font>
-</td><td><font size=2>[loop-data transactions payment_method]</a></font></tr>
-
-[if-loop-data transactions order_id]
-<tr><td align=right>
-<font size=2><b> [L]Payment ID[/L]: </b></font>
-</td><td><font size=2>[loop-data transactions order_id]</a></font></tr>
-[/if-loop-data]
-
-<tr>
- <td colspan=2> </td>
-</tr>
-
-<tr>
- <td align=right> </td>
- <td>[page href="__UI_BASE__/flex_editor"
- form="
- mv_data_table=transactions
- item_id=[loop-code]
- ui_return_to=__UI_BASE__/order
- "][L]Edit order[/L]</a>
- </td>
-</tr>
-
-[if type=file term="[either]__ORDER_DIRECTORY__[or]orders[/either]/[loop-code]"]
-<tr>
- <td align=right> </td>
- <td>[page href="process/[loop-code].pgp"
- add_dot_html=0
- form="
- deliver_encrypted=1
- mv_todo=return
- mv_nextpage=@@MV_PAGE@@
- order=[loop-code]
- "][L]Decrypt Credit Card[/L]</a>
- </td>
-</tr>
-[/if]
-
-</table>
-
-</td><td valign=top colspan=4>
-[set bill_address]
-[loop-data transactions b_fname] [loop-data transactions b_lname]<br>
-[loop-data transactions b_address1]<br>
-[if-loop-data transactions b_address2]
-[loop-data transactions b_address2]<br>
-[/if-loop-data]
-[loop-data transactions b_city], [loop-data transactions b_state] [loop-data transactions b_zip]<br>
-[loop-calc]
- my $c = q{[loop-data transactions b_country]};
- return if '__SHIP_DEFAULT_COUNTRY__' eq $c;
- my $name = tag_data('country', 'name', $c);
- return qq{$name ($c)<br>};
-[/loop-calc]
-[/set]
-
-[set ship_address]
-[loop-data transactions fname] [loop-data transactions lname]<br>
-[loop-data transactions address1]<br>
-[if-loop-data transactions address2]
-[loop-data transactions address2]<br>
-[/if-loop-data]
-[loop-data transactions city], [loop-data transactions state] [loop-data transactions zip]<br>
-[loop-calc]
- my $c = q{[loop-data transactions country]};
- return if '__SHIP_DEFAULT_COUNTRY__' eq $c;
- my $name = tag_data('country', 'name', $c);
- return qq{$name ($c)<br>};
-[/loop-calc]
-[/set]
-
-<font size=2>
-<p>
-[if-loop-data transactions username]
-<A HREF="[area
- href=__UI_BASE__/flex_editor
- form=|
- ui_return_to=__UI_BASE__/order_view
- ui_return_to=order=[cgi order]
- ui_hide_key=1
- ui_data_fields=username b_company b_fname b_lname b_address1 b_address2 b_city b_state b_zip b_country b_email b_phone_day b_phone_night
- page_title=Customer: [loop-data transactions fname] [loop-data transactions lname]
- item_id=[loop-data transactions username]
- mv_data_table=userdb
- |
- ]"><b><u>[L]Bill To[/L]</u>:</b></A>
-[else]
- <b>[L]Bill To[/L]:</b>
-[/else]
-[/if-loop-data]
-<blockquote>
-[if-loop-data transactions b_address1]
-[scratch bill_address]
-[else]
-[scratch ship_address]
-[/else]
-[/if-loop-data]
-</blockquote>
-
-<b>
-[if-loop-data transactions username]
-<A HREF="[area
- href=__UI_BASE__/flex_editor
- form=|
- ui_return_to=__UI_BASE__/order_view
- ui_return_to=mv_arg=[cgi order]
- ui_hide_key=1
- ui_data_fields=username company fname lname address1 address2 city state zip country email phone_day phone_night
- page_title=Customer: [loop-data transactions fname] [loop-data transactions lname]
- item_id=[loop-data transactions username]
- mv_data_table=userdb
- |
- ]"><b><u>[L]Ship To[/L]</u>:</b></A>
+ ]"><u>[loop-data transactions b_fname] [loop-data transactions b_lname]</A>
+ </td>
+ </tr>
+ [if-bill-data transactions b_company]
+ <tr>
+ <td width="30%" class="block4bold">[L]Company[/L]:</td>
+ <td width="70%" class="maincontent">
+ [loop-data transactions b_company]
+ </td>
+ </tr>
+ [/if-bill-data]
+ <tr>
+ <td valign="top" class="block4bold">[L]Address[/L]:</td>
+ <td class="maincontent">
+ [loop-data transactions b_address1]
+ [if-bill-data transactions b_address2]
+ <br>
+ [loop-data transactions b_address2]
+ [/if-bill-data]
+ </td>
+ </tr>
+ [if-bill-data transactions b_country =~ /^US|^CA/]
+ <tr>
+ <td class="block4bold">[L]City, State, Zip[/L]:</td>
+ <td class="maincontent">[loop-data transactions b_city], [loop-data transactions state] [loop-data transactions zip]</td>
+ </tr>
+ [else]
+ <tr>
+ <td class="block4bold">[L]City[/L]:</td>
+ <td class="maincontent">[loop-data transactions b_city]</td>
+ </tr>
+ [if-bill-data transactions b_state]
+ <tr>
+ <td class="block4bold">[L]State[/L]:</td>
+ <td class="maincontent">[loop-data transactions b_state]</td>
+ </tr>
+ [/if-bill-data]
+ [if-bill-data transactions b_zip]
+ <tr>
+ <td class="block4bold">[L]Postal code[/L]:</td>
+ <td class="maincontent">[loop-data transactions b_zip]</td>
+ </tr>
+ [/if-bill-data]
+ [/else]
+ [/if-bill-data]
+ <tr>
+ <td class="block4bold">[L]Country[/L]:</td>
+ <td class="maincontent">[data table=country col=name key="[loop-data transactions b_country]"]</td>
+ </tr>
+ <tr>
+ <td height="15" colspan="2" class="block4bold"><img src="bg.gif" width="1" height="1"></td>
+ </tr>
+ </table>
+ [/loop]
[else]
- <b>[L]Ship To[/L]:</b>
+ <i>Same as shipping address</i>
[/else]
[/if-loop-data]
-<br>
-<blockquote>
-[scratch ship_address]
-</blockquote>
-</font>
-
-<P>
-<B>[L]Status[/L]:<B> [page href=__UI_BASE__/order_status form="order=[loop-code]"]
+ </td>
+ </tr>
+ </table>
+ </td>
+ <td width="3"><img src="bg.gif" width="3" height="1"></td>
+ <!-- SHIPPING DETAILS -->
+ <td width="34%" valign="top">
+ <table width="100%" height="160" border="0" cellpadding="6" cellspacing="1" class="rseparator">
+ <tr>
+ <td height="1%" class="block4"><a href="#">Shipping Details</a></td>
+ </tr>
+ <tr>
+ <td height="99%" valign="top" class="block4">
+ <table width="100%" border="0" cellspacing="0" cellpadding="1">
+ <tr>
+ <td width="30%" class="block4bold">[L]Name[/L]:</td>
+ <td width="70%" class="maincontent"><A HREF="[area
+ href=__UI_BASE__/customer_view
+ arg="[loop-data transactions username]"
+ ]"><u>[loop-data transactions fname] [loop-data transactions lname]</A>
+ </td>
+ </tr>
+ [if-loop-data transactions company]
+ <tr>
+ <td width="30%" class="block4bold">[L]Company[/L]:</td>
+ <td width="70%" class="maincontent">
+ [loop-data transactions company]
+ </td>
+ </tr>
+ [/if-loop-data]
+ <tr>
+ <td valign="top" class="block4bold">[L]Address[/L]:</td>
+ <td class="maincontent">
+ [loop-data transactions address1]
+ [if-loop-data transactions address2]
+ <br>
+ [loop-data transactions address2]
+ [/if-loop-data]
+ </td>
+ </tr>
+ [if-loop-data transactions country =~ /^US|^CA/]
+ <tr>
+ <td class="block4bold">[L]City, State, Zip[/L]:</td>
+ <td class="maincontent">[loop-data transactions city], [loop-data transactions state] [loop-data transactions zip]</td>
+ </tr>
+ [else]
+ <tr>
+ <td class="block4bold">[L]City[/L]:</td>
+ <td class="maincontent">[loop-data transactions city]</td>
+ </tr>
+ [if-loop-data transactions state]
+ <tr>
+ <td class="block4bold">[L]State[/L]:</td>
+ <td class="maincontent">[loop-data transactions state]</td>
+ </tr>
+ [/if-loop-data]
+ [if-loop-data transactions zip]
+ <tr>
+ <td class="block4bold">[L]Postal code[/L]:</td>
+ <td class="maincontent">[loop-data transactions zip]</td>
+ </tr>
+ [/if-loop-data]
+ [/else]
+ [/if-loop-data]
+ <tr>
+ <td class="block4bold">[L]Country[/L]:</td>
+ <td class="maincontent">[data table=country col=name key="[loop-data transactions country]"]</td>
+ </tr>
+ <tr>
+ <td height="15" colspan="2" class="block4bold"><img src="bg.gif" width="1" height="1"></td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ <tr>
+ <td height=6><img src="bg.gif" width=1 height=6></td>
+ </tr>
+ <tr>
+ <td>
+ <!-- CUSTOMERS ORDER GRID -->
+ <table width="100%" border=0 cellpadding=0 cellspacing=1 class=rseparator>
+ <tr>
+ <td width="14%" class=rhead style="padding: 5px">[L]Status[/L]</td>
+ <td width="14%" class=rhead style="padding: 5px">[L]SKU[/L]</td>
+ <td width="14%" class=rhead style="padding: 5px">[L]Name[/L]</td>
+ <td width="14%" class=rhead style="padding: 5px; text-align: right">[L]Qty[/L]</td>
+ <td width="14%" class=rhead style="padding: 5px; text-align: right">[L]Unit Price[/L]</td>
+ <td width="14%" class=rhead style="padding: 5px; text-align: right">[L]Total[/L]</td>
+ </tr>
+[query list=1 sql="select * from orderline where order_number = '[loop-code]'"]
+ <tr class="[sql-alternate 2]rowalt[else]rownorm[/else][/sql-alternate]">
+ <td style="padding: 5px">[page href="admin/order_status"
+ form="order=[loop-code]"
+ ]
[display table=transactions
column=status
key="[loop-code]"
arbitrary=order_view
]</A>
-[set bill_address][/set]
-[set ship_address][/set]
-</td></tr>
-
-<!-- ----- Order information ----- -->
-
-<tr>
-<td width=50 align=center class=rborder>
-<font size=2>
-<b>[L]Status[/L]</b></font></td>
-
-<td width=230 align=left class=rborder>
-<font size=2>
-<b>[L]Name[/L]</b></font></td>
-
-<td width=100 align=left class=rborder>
-<font size=2>
-<b>[L]SKU[/L]</b></font></td>
-
-<td width=50 align=right class=rborder>
-<font size=2>
-<b>[L]Qty.[/L]</b></font></td>
-
-<td width=70 align=right class=rborder>
-<font size=2>
-<b>[L]Each[/L]</b></font></td>
-
-<td width=70 align=right class=rborder>
-<font size=2>
-<b>[L]Discount[/L]</b></font></td>
-
-<td width=80 align=right class=rborder>
-<font size=2>
-<b>[L]Total[/L]</b></font></td>
-</tr>
-[query st=db sql="select * from orderline where order_number = '[loop-data transactions order_number]'" list=1]
-<tr><td width=50 align=center class=rnorm>
-<font size=2>
[calc]
$total_weight += ([field field=weight key="[sql-param sku]"] + 0 || 0) * [sql-data orderline quantity];
return;
[/calc]
-<B>[sql-filter loc upper][sql-data orderline status][/sql-filter]</B>
-<BR>
-</font></td>
-
-<td width=330 class=rnorm>
-<font size=2>
-[either][sql-data orderline description][or][data table=__ProductFiles_0__ col=description key="[sql-data orderline sku]"][/either]
-[if-sql-data orderline size]
-<BR>
-[L]Size[/L]: [sql-data orderline size]
-[/if-sql-data]
-[if-sql-data orderline color]
-<BR>
-[L]Color[/L]: [sql-data orderline color]
-[/if-sql-data]
-
-[if-sql-data orderline options]
-<BR>
-[L]Options[/L]: [sql-data orderline options]
-[/if-sql-data]
-</font></td>
-
-<td width=100 align=left class=rnorm>
-<font size=2>
-[sql-data orderline sku]
-</font></td>
-
-<td width=50 align=right class=rnorm>
-<font size=2>
-[sql-data orderline quantity]
-</font></td>
-
-<td width=70 align=right class=rnorm>
-<font size=2>
-[currency][sql-data orderline price][/currency]
-</font></td>
-
-<td width=70 align=right class=rnorm>
-<font size=2>
- [sql-data orderline discount]
-</font></td>
-
-<td width=80 align=right class=rborder>
-<font size=2>
-[currency][sql-data orderline subtotal][/currency]
-
-</font></td>
-</tr>
+ <td style="padding: 5px">[sql-param sku]</td>
+ <td style="padding: 5px">[sql-filter 30.][sql-param description][/sql-filter]</td>
+ <td align=right style="padding: 5px">[sql-param quantity]</td>
+ <td align=right style="padding: 5px">[sql-param price]</td>
+ <td align=right style="padding: 5px">[sql-param subtotal]</td>
+ </tr>
[/query]
+ <tr>
+ <td height=4 colspan=5 class=lightshade><img src="bg.gif" width=1 height=4></td>
+ <td class=lightshade><img src="bg.gif" width=1 height=4></td>
+ </tr>
+ <tr>
+ <td height=39 colspan=5 align=right class=rsubbold>[L]Item Total[/L]:</td>
+ <td class=rownorm align=right>[currency][loop-data transactions subtotal][/currency]</td>
+ </tr>
+ <tr>
+ <td colspan=5 align=right class=rsubbold>[L]Tax:[/L]</td>
+ <td class=rownorm align=right>[currency][loop-data transactions salestax][/currency]</td>
+ </tr>
+ <tr>
+ <td colspan=5 align=right class=rsubbold>[L]Total Weight:[/L]</td>
+ <td class=rownorm align=right>[calc]$total_weight[/calc]</td>
+ </tr>
+ [if-loop-data transactions handling > 0]
+ <tr>
+ <td colspan=5 align=right class=rsubbold>[L]Shipping[/L]</td>
+ <td class=rownorm align=right>[currency][loop-data transactions shipping][/currency]</td>
+ </tr>
+ [/if-loop-data]
+ <tr>
+ <td colspan=5 align=right class=rsubbold>[L]Shipping[/L]</td>
+ <td class=rownorm align=right>[currency][loop-data transactions shipping][/currency]</td>
+ </tr>
+ <tr>
+ <td colspan=5 align=right class=rsubbold>[L]GRAND TOTAL:[/L]</td>
+ <td class=rownormbold align=right>[currency][loop-data transactions total_cost][/currency]</td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+</table>
-<!-- ----- Product total ----- -->
-
-<tr>
-<td colspan=6 align=right>
-<font size=2>[L]Product Total[/L]:</font>
-</td>
-<td align=right class=rborder>
-<font size=2>[currency][loop-data transactions subtotal][/currency]</font>
-</td>
-</tr>
-
-<!-- ----- Tax total ----- -->
-
-<tr>
-<td colspan=6 align=right>
-<font size=2>[L]Tax[/L]:</font>
-</td>
-<td align=right class=rborder>
-<font size=2>[currency][loop-data transactions salestax][/currency]</font>
-</td>
-</tr>
-
-<!-- ----- Shipping total ----- -->
-
-<tr>
-<td colspan=6 align=right>
-<font size=2>[L]Shipping[/L]: [loop-data transactions shipmode]</font>
-</td>
-<td align=right class=rborder>
-<font size=2>
-[currency][loop-data transactions shipping][/currency]</font>
-</td>
-</tr>
-
-<!-- ----- Handling total (if any) ----- -->
-
-[if-loop-data transactions handling > 0]
-<tr>
-<td colspan=6 align=right>
-<font size=2>[L]Handling[/L]:</font>
-</td>
-<td align=right class=rborder>
-<font size=2>
-[currency][loop-data transactions handling][/currency]</font>
-</td>
-</tr>
-[/if-loop-data]
-
-<!-- ----- Grand total ----- -->
-
-<tr>
-<td colspan=6 align=right>
-<font size=3><b>[L]Grand total[/L]:</b></font>
-</td>
-<td align=right class=rborder>
-<font size=3><b>[currency][loop-data transactions total_cost][/currency]<br></b></font>
-</td>
-</tr>
-
-<!-- ----- Weight total ----- -->
-
-<tr></tr>
-
-<tr>
-<td colspan=6 align=right>
-<font size=2>[L]Total weight[/L]:</font>
-</td>
-<td align=right class=rborder>
-<font size=2>[calc] $total_weight [/calc]</font>
-</td>
-</tr>
-
-<!-- ----- Volume total ----- -->
-
-<tr>
-<td colspan=6 align=right>
-<font size=2>[L]Total volume[/L]:</font>
-</td>
-<td align=right class=rborder>
-<font size=2>0</font>
-</td>
-</tr>
-<tr>
-<td colspan=6>
-<b>[L]Comments[/L]:</b>
-</td>
-</tr>
-
-<tr>
-<td colspan=7 align=left class=rnorm>
-<pre>[loop-data transactions comments]</pre>
-</td>
-</tr>
-
-<tr>
-<td colspan=7 class=rborder><img src="bg.gif" height=1></td>
-</tr>
+[seti page_banner][L]View Order[/L]: [loop-code][/seti]
-</table>
-<SMALL>
+[output name=bottom_buttons]
<form action="[area __UI_BASE__/order]" method=post>
<input type=hidden name=mv_session_id value="[data session id]">
<input type=hidden name=mv_action value=back>
@@ -433,25 +361,26 @@
viewnext=
vieworder=
[/set]
-<input type=submit name=mv_click value="[L]Return[/L]">
-<input type=submit name="vieworder" value="[L]View next order[/L]">
+<input type=submit name=mv_click value="[L]Return[/L]" class=s3>
+<input type=submit name="vieworder" value="[L]View next order[/L]" class=s3>
[if-loop-data transactions archived]
-<input type=submit name="unarchiveorder" value="[L]Un-archive order and view next[/L]">
+<input type=submit name="unarchiveorder" value="[L]Un-archive order and view next[/L]" class=s3>
[else]
-<input type=submit name="archiveorder" value="[L]Archive order and view next[/L]">
+<input type=submit name="archiveorder" value="[L]Archive order and view next[/L]" class=s3>
[/else]
[/if-loop-data]
[if-mm advanced order=d]
<input type=submit name="deleteorder" value="[L]Delete order and view next[/L]"
- onClick="return confirm('[L]Are you sure you want to delete this order?[/L]')">
+ onClick="return confirm('[L]Are you sure you want to delete this order?[/L]')" class=s3>
[/if-mm]
-
</form>
-</SMALL>
+
+[output]
[/loop]
+
<!-- ----- END REAL STUFF ----- -->
@_UI_STD_FOOTER_@
-<!-- page: @@MV_PAGE@@ version: $Id: order_view.html,v 2.8 2002/10/27 04:36:04 mheins Exp $ -->
+<!-- page: @@MV_PAGE@@ version: $Id: order_view.html,v 2.9 2003/01/14 02:25:50 mheins Exp $ -->
2.4 +1 -0 interchange/dist/lib/UI/pages/admin/payment.html
rev 2.4, prev_rev 2.3
Index: payment.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/payment.html,v
retrieving revision 2.3
retrieving revision 2.4
diff -u -r2.3 -r2.4
--- payment.html 18 Aug 2002 15:38:26 -0000 2.3
+++ payment.html 14 Jan 2003 02:25:50 -0000 2.4
@@ -3,6 +3,7 @@
[set ui_class]Admin[/set]
[set help_name]payment.main[/set]
[set icon_name]icon_config.gif[/set]
+[set page_perm]payment[/set]
@_UI_STD_HEAD_@
<!-- ----- BEGIN REAL STUFF ----- -->
2.7 +30 -58 interchange/dist/lib/UI/pages/admin/preferences.html
rev 2.7, prev_rev 2.6
Index: preferences.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/preferences.html,v
retrieving revision 2.6
retrieving revision 2.7
diff -u -r2.6 -r2.7
--- preferences.html 18 Aug 2002 08:09:05 -0000 2.6
+++ preferences.html 14 Jan 2003 02:25:50 -0000 2.7
@@ -7,17 +7,11 @@
<!-- ----- BEGIN REAL STUFF ----- -->
[calc] $Config->{NoSearch} = ''; return; [/calc]
-<center>
-<table __UI_T_PROPERTIES__>
-<tr>
-<td class=rborder><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
-</tr>
-
-<tr>
- <td align=left class=rnorm>
- <table style="margin-left: 20px" width="70%">
- [table-organize columnize=1 cols=4]
+<div class=titlebox>Edit Preferences</div>
+
+<table style="margin-left: 20px" width="70%">
+ [table-organize columnize=1 cols=4]
[loop search="
fi=variable
st=db
@@ -29,7 +23,7 @@
"]
<TD width="25%">
[if-loop-pos 0]
-<a href="[area href="__UI_BASE__/flex_select" form=|
+<a href="[area href="__UI_BASE__/pref_select" form=|
mv_data_table=variable
ui_meta_specific=1
ui_hide_key=1
@@ -41,7 +35,7 @@
help_name=knar.main
|]">[loop-code]</A>
[else]
-<a href="[area href="__UI_BASE__/flex_select" form=|
+<a href="[area href="__UI_BASE__/pref_select" form=|
mv_data_table=variable
ui_meta_specific=1
ui_hide_key=1
@@ -61,13 +55,23 @@
[/table-organize]
</table>
+[output name=search_box]
+<FORM ACTION="[process href="__UI_BASE__/pref_select"]" METHOD=GET>
+<INPUT TYPE=hidden NAME=mv_session_id VALUE="[data session id]">
+<INPUT TYPE=hidden NAME=mv_data_table VALUE="variable">
+<INPUT TYPE=hidden NAME=ui_meta_specific VALUE="1">
+<INPUT TYPE=hidden NAME=mv_action VALUE=back>
+
+<span class="s3">Search for a preference:</span><input NAME=ui_text_qualification size=16 class=s3><INPUT TYPE=submit VALUE="[L]Search[/L]" class=s3>
+</FORM>
+
+[output name=""]
+
+
[if-mm super]
-<tr>
-<td class=rspacer><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
-</tr>
+ <br>
+<div class=titlebox>Table Editor Control</div>
-<tr>
-<td class=rnorm>
[if type=explicit compare=`
return
(! defined $Values->{ui_meta_force} and $Variable->{UI_META_LINK})
@@ -91,46 +95,22 @@
ui_meta_force=1"][L]Temporarily turn on meta links in database edit[/L]</A>
[/else]
[/if]
- </td>
-</tr>
+ <br>
+ [page href="__UI_BASE__/edit_metaconfig"]Configure defaults for table editor</A>
+<br>
[/if-mm]
-<tr>
-<td class=rspacer><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
-</tr>
-
-<tr>
- <td class=rnorm>
- <table width="100%">
- <tr>
- <td width="30%">
[if !variable UI_REGISTERED]
-<a href="http://interchange.redhat.com/cgi-bin/ic/register.html">[L]Register[/L]</a>
+<br>
+<div class=titlebox>Register </div>
+<a href="http://interchange.redhat.com/cgi-bin/ic/register.html" title="Completely optional">[L]Register[/L]</a>
[/if]
- </td>
- <td>
-<FORM ACTION="[process href="__UI_BASE__/flex_select"]" METHOD=GET>
-<INPUT TYPE=hidden NAME=mv_session_id VALUE="[data session id]">
-<INPUT TYPE=hidden NAME=mv_data_table VALUE="variable">
-<INPUT TYPE=hidden NAME=ui_meta_specific VALUE="1">
-<INPUT TYPE=hidden NAME=mv_action VALUE=back>
-Search for a preference: <input NAME=ui_text_qualification size=16><INPUT TYPE=submit VALUE="[L]Search[/L]">
-</FORM>
- </td>
- </tr>
- </table>
-
-</td></tr>
-
-<tr>
- <td class=rspacer><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
-</tr>
+<br>
+<br>
-<tr>
- <td class=rnorm valign=top>
+ <div class=titlebox>[L]Personal CSS[/L]</div>
<form action="[process href="@@MV_PAGE@@"]">
- <b>[L]Personal CSS[/L]</b>
[if cgi personal_css]
[if type=explicit compare="[userdb function=save profile=ui]"]
<span class=cmessage>(saved successfully)</span>
@@ -153,15 +133,7 @@
<textarea name=personal_css rows=24 cols=50>[value personal_css]</textarea>
</td>
</form>
- </td>
-</tr>
-
-<tr>
-<td class=rborder><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
-</tr>
-</table>
-</center>
<!-- ----- END REAL STUFF ----- -->
@_UI_STD_FOOTER_@
2.5 +18 -18 interchange/dist/lib/UI/pages/admin/reconfig.html
rev 2.5, prev_rev 2.4
Index: reconfig.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/reconfig.html,v
retrieving revision 2.4
retrieving revision 2.5
diff -u -r2.4 -r2.5
--- reconfig.html 28 Oct 2002 01:58:35 -0000 2.4
+++ reconfig.html 14 Jan 2003 02:25:50 -0000 2.5
@@ -5,32 +5,32 @@
[set help_name]reconfig[/set]
[set ui_class]Admin[/set]
[set page_title][L]Reconfiguring[/L]....[/set]
-[calc]
- my $hk = $Tag->global_value('Global::HouseKeeping');
- $hk += 2;
- $Scratch->{its} = join " ", 1 .. $hk;
- return;
-[/calc]
-[set icon_name]icon_regen.gif[/set]
-@_UI_STD_HEAD_@
+[tmp meta_header]
+<META HTTP-EQUIV="refresh" content="[calc]
+ my $secs = $Tag->global_value('Global::HouseKeeping') || 10;
+ $secs += 2;
+ my $url = $Tag->area({
+ href => 'admin/genconfig',
+ form => 'start_at_index=1',
+ });
+ return "$secs; URL=$url";
+ [/calc]">
+[/tmp]
-[L]Reconfiguring catalog[/L]: ...<BR>
-[tmp name=RECONFIG_STATUS send=1][reconfigure][/tmp]
+[set icon_name]icon_regen.gif[/set]
-[reconfig-wait]
+@_UI_STD_HEAD_@
-[if scratch possible_timeout]
- [L]WARNING: Reconfiguration may have timed out[/L].<BR>
-[L]Last config[/L]: [reconfig-time]
+[L]Reconfiguring catalog[/L]...
+[if type=explicit compare="[reconfigure]"]
+[L]Catalog reconfigure request was sent successfully, please wait....[/L]
[else]
-[L]SUCCESS[/L], config time [file name=`"etc/status.$Config->{CatalogName}"`]
-[value name=ui_changes_made set=""]
+[L]Catalog reconfigure request failed.[/L]
[/else]
[/if]
-(<A HREF="[area href="[either][data session arg][or]__UI_BASE__/index[/either]"]">[L]return[/L]</A>)<BR>
</HTML>
<!-- ----- END REAL STUFF ----- -->
@_UI_STD_FOOTER_@
-<!-- page: @@MV_PAGE@@ version: $Revision: 2.4 $ -->
+<!-- page: @@MV_PAGE@@ version: $Revision: 2.5 $ -->
1.5 +36 -30 interchange/dist/lib/UI/pages/admin/search_replace.html
rev 1.5, prev_rev 1.4
Index: search_replace.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/search_replace.html,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- search_replace.html 18 Aug 2002 08:09:05 -0000 1.4
+++ search_replace.html 14 Jan 2003 02:25:50 -0000 1.5
@@ -29,19 +29,17 @@
<input type=hidden name=mv_action value=back>
<table border=0 __UI_T_PROPERTIES__>
-<tr>
-<td colspan=2 class=rborder><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
-</tr>
-
-<tr class=rnorm>
-<td width=25%>
-
-1. Choose a table to operate on:
+<tr class=rownorm>
+<td class=clabel>
+[calc]++$numbering[/calc].
+</td>
+<td class=clabel width="25%">
+Choose a table to operate on:
</td>
-<td>
+<td class=cdata width="100%">
[if !cgi area_table]
- [value name=area_table set="[either][cgi mv_data_table][or]__ProductFiles_1__[/either]" hide=1]
+ [value name=area_table set="[either][cgi mv_data_table][or]__ProductFiles_0__[/either]" hide=1]
[value name=area_column set=category hide=1]
[/if]
<select name="area_table"
@@ -59,11 +57,14 @@
</select>
</td>
</tr>
-<tr>
-<td>
-2. Choose a column to operate on:
+<tr class=rownorm>
+<td class=clabel>
+[calc]++$numbering[/calc].
+</td>
+<td class=clabel width="25%">
+Choose a column to operate on:
</td>
-<td>
+<td class=cdata width="100%">
<select name="area_column">
<option value=""> -- none --
[loop list="[db-columns table='[value area_table]']" option=area_column]
@@ -72,29 +73,38 @@
</select>
</td>
</tr>
-<tr>
-<td>
-3. Set what to search for in that column:
+<tr class=rownorm>
+<td class=clabel>
+[calc]++$numbering[/calc].
</td>
-<td>
+<td class=clabel width="25%">
+Set what to search for in that column:
+</td>
+<td class=cdata width="100%">
<input name="search_for" type="text" size="30"> Case-sensitive? [display name=case_sensitive type=yesno cgi-default=1]
<br><i>(Exact text match or regular expression)</i>
</td>
</tr>
-<tr>
-<td>
-4. Choose the replacement string
+<tr class=rownorm>
+<td class=clabel>
+[calc]++$numbering[/calc].
+</td>
+<td class=clabel width="25%">
+Choose the replacement string
</td>
-<td>
+<td class=cdata width="100%">
<input name="replace_with" type="text" size="30">
<br><i>(Exact text to be inserted instead of search value. Replaces parenthisized text if parentheses are used.)</i>
</td>
</tr>
-<tr>
-<td>
-5. Click this button to do it:
+<tr class=rownorm>
+<td class=clabel>
+[calc]++$numbering[/calc].
+</td>
+<td class=clabel width="25%">
+Click this button to do it:
</td>
-<td>
+<td class=cdata width="100%">
[button text="Search and Replace"]
[flag type=write table="[cgi area_table]"]
[seti ui_failure]
@@ -176,10 +186,6 @@
[/button]
<BR>
</td>
-</tr>
-
-<tr>
-<td colspan=2 class=rmarq><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
</tr>
</table>
2.6 +2 -0 interchange/dist/lib/UI/pages/admin/search_wizard.html
rev 2.6, prev_rev 2.5
Index: search_wizard.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/search_wizard.html,v
retrieving revision 2.5
retrieving revision 2.6
diff -u -r2.5 -r2.6
--- search_wizard.html 18 Aug 2002 08:09:05 -0000 2.5
+++ search_wizard.html 14 Jan 2003 02:25:50 -0000 2.6
@@ -1,6 +1,7 @@
[seti page_title][L]Search Builder[/L][/seti]
[set help_name]search_builder[/set]
[set ui_class]Design[/set]
+[set display_class]type5[/set]
[set icon_name]icon_config.gif[/set]
[seti name=tables][list-databases][/seti]
[seti meta_header]
@@ -232,6 +233,7 @@
<INPUT TYPE=hidden NAME=ui_target VALUE="[cgi ui_target]">
<INPUT TYPE=hidden NAME=ui_source_form VALUE="[cgi ui_source_form]">
<INPUT TYPE=hidden NAME=ui_source_var VALUE="[cgi ui_source_var]">
+<INPUT TYPE=hidden NAME=display_class VALUE="[cgi display_class]">
[return-to]
<P>
2.3 +2 -0 interchange/dist/lib/UI/pages/admin/search_wizard2.html
rev 2.3, prev_rev 2.2
Index: search_wizard2.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/search_wizard2.html,v
retrieving revision 2.2
retrieving revision 2.3
diff -u -r2.2 -r2.3
--- search_wizard2.html 18 Aug 2002 08:09:05 -0000 2.2
+++ search_wizard2.html 14 Jan 2003 02:25:50 -0000 2.3
@@ -1,6 +1,7 @@
[seti page_title]Search Builder: criteria [calc] $CGI->{current_column} + 1[/calc][/seti]
[set help_name]search_builder[/set]
[set ui_class]Design[/set]
+[set display_class]type5[/set]
[set icon_name]icon_config.gif[/set]
[seti name=tables][list-databases][/seti]
[seti meta_header]
@@ -151,6 +152,7 @@
<INPUT TYPE=hidden NAME=ui_target VALUE="[cgi ui_target]">
<INPUT TYPE=hidden NAME=ui_source_form VALUE="[cgi ui_source_form]">
<INPUT TYPE=hidden NAME=ui_source_var VALUE="[cgi ui_source_var]">
+<INPUT TYPE=hidden NAME=display_class VALUE="[cgi display_class]">
[return-to]
<P>
<table __UI_T_PROPERTIES__>
2.3 +2 -0 interchange/dist/lib/UI/pages/admin/search_wizard3.html
rev 2.3, prev_rev 2.2
Index: search_wizard3.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/search_wizard3.html,v
retrieving revision 2.2
retrieving revision 2.3
diff -u -r2.2 -r2.3
--- search_wizard3.html 18 Aug 2002 08:09:05 -0000 2.2
+++ search_wizard3.html 14 Jan 2003 02:25:50 -0000 2.3
@@ -1,6 +1,7 @@
[seti page_title]Search Builder: sorting[/seti]
[set help_name]search_builder[/set]
[set ui_class]Design[/set]
+[set display_class]type5[/set]
[set icon_name]icon_config.gif[/set]
[seti name=tables][list-databases][/seti]
[seti meta_header]
@@ -139,6 +140,7 @@
<INPUT TYPE=hidden NAME=ui_target VALUE="[cgi ui_target]">
<INPUT TYPE=hidden NAME=ui_source_form VALUE="[cgi ui_source_form]">
<INPUT TYPE=hidden NAME=ui_source_var VALUE="[cgi ui_source_var]">
+<INPUT TYPE=hidden NAME=display_class VALUE="[cgi display_class]">
[return-to]
<P>
<table __UI_T_PROPERTIES__>
2.2 +1 -0 interchange/dist/lib/UI/pages/admin/search_wizard_results.html
rev 2.2, prev_rev 2.1
Index: search_wizard_results.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/search_wizard_results.html,v
retrieving revision 2.1
retrieving revision 2.2
diff -u -r2.1 -r2.2
--- search_wizard_results.html 6 Aug 2002 22:02:34 -0000 2.1
+++ search_wizard_results.html 14 Jan 2003 02:25:50 -0000 2.2
@@ -8,6 +8,7 @@
[/if-mm]
[seti page_title][cgi report_title][/seti]
[set icon_name]icon_stats.gif[/set]
+[set display_class]type5[/set]
[set ui_class]Design[/set]
[set help_name]report[/set]
2.5 +1 -0 interchange/dist/lib/UI/pages/admin/ship.html
rev 2.5, prev_rev 2.4
Index: ship.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/ship.html,v
retrieving revision 2.4
retrieving revision 2.5
diff -u -r2.4 -r2.5
--- ship.html 18 Aug 2002 15:38:26 -0000 2.4
+++ ship.html 14 Jan 2003 02:25:50 -0000 2.5
@@ -2,6 +2,7 @@
[set ui_class]Admin[/set]
[set page_title][L]Shipping configuration[/L][/set]
[set icon_name]icon_config.gif[/set]
+[set page_perm]shipping[/set]
@_UI_STD_HEAD_@
<!--
read=[calc]
2.3 +1 -0 interchange/dist/lib/UI/pages/admin/ship_data.html
rev 2.3, prev_rev 2.2
Index: ship_data.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/ship_data.html,v
retrieving revision 2.2
retrieving revision 2.3
diff -u -r2.2 -r2.3
--- ship_data.html 18 Aug 2002 08:09:05 -0000 2.2
+++ ship_data.html 14 Jan 2003 02:25:50 -0000 2.3
@@ -2,6 +2,7 @@
[set ui_class]Admin[/set]
[seti page_title]Shipping options: edit data for method [cgi ui_shipmode][/seti]
[seti page_banner]Shipping options: edit data for method <I>[cgi ui_shipmode]</I>[/seti]
+[set page_perm]shipping[/set]
[set icon_name]icon_config.gif[/set]
@_UI_STD_HEAD_@
2.2 +1 -0 interchange/dist/lib/UI/pages/admin/ship_edit.html
rev 2.2, prev_rev 2.1
Index: ship_edit.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/ship_edit.html,v
retrieving revision 2.1
retrieving revision 2.2
diff -u -r2.1 -r2.2
--- ship_edit.html 18 Aug 2002 08:09:05 -0000 2.1
+++ ship_edit.html 14 Jan 2003 02:25:50 -0000 2.2
@@ -2,6 +2,7 @@
[set ui_class]Admin[/set]
[seti page_title]Shipping options: edit method [cgi ui_shipmode][/seti]
[seti page_banner]Shipping options: edit method <I>[cgi ui_shipmode]</I>[/seti]
+[set page_perm]shipping[/set]
[set icon_name]icon_config.gif[/set]
[set meta_header]
<SCRIPT LANGUAGE=JavaScript>
2.2 +1 -0 interchange/dist/lib/UI/pages/admin/ship_range.html
rev 2.2, prev_rev 2.1
Index: ship_range.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/ship_range.html,v
retrieving revision 2.1
retrieving revision 2.2
diff -u -r2.1 -r2.2
--- ship_range.html 18 Aug 2002 08:09:05 -0000 2.1
+++ ship_range.html 14 Jan 2003 02:25:50 -0000 2.2
@@ -2,6 +2,7 @@
[set ui_class]Admin[/set]
[set page_banner]Shipping method tables[/set]
[set help_name]shipping.methodtables[/set]
+[set page_perm]shipping[/set]
[set icon_name]icon_config.gif[/set]
@_UI_STD_HEAD_@
2.2 +20 -3 interchange/dist/lib/UI/pages/admin/show_session.html
rev 2.2, prev_rev 2.1
Index: show_session.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/show_session.html,v
retrieving revision 2.1
retrieving revision 2.2
diff -u -r2.1 -r2.2
--- show_session.html 26 Sep 2002 04:35:02 -0000 2.1
+++ show_session.html 14 Jan 2003 02:25:50 -0000 2.2
@@ -6,10 +6,27 @@
@_UI_STD_HEAD_@
<!-- ----- BEGIN REAL STUFF ----- -->
- [if cgi show_session]
- <P><B>[L]Showing session[/L]: [cgi show_session]</B>
+
+[if cgi show_session]
+ <P><B>[L]Showing session[/L]: [cgi show_session]</B>
+
+(show only:
+[loop list="
+ values=Values,
+ scratch=Scratch,
+ carts=Carts,
+ errors=Errors,
+ History,
+ SCALAR=Scalars,
+ payment_stack=Payments
+" acclist=1]
+ [page href="@@MV_PAGE@@" form="
+ show_session=[cgi show_session]
+ key=[loop-code]
+ "][loop-param label]</A>
+[/loop])
<XMP>
-[dump-session name="[cgi show_session]"]
+[dump-session name="[cgi show_session]" key="[cgi key]"]
</XMP>
[else]
([L]last[/L]
2.10 +93 -83 interchange/dist/lib/UI/pages/admin/spread.html
rev 2.10, prev_rev 2.9
Index: spread.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/spread.html,v
retrieving revision 2.9
retrieving revision 2.10
diff -u -r2.9 -r2.10
--- spread.html 18 Oct 2002 06:00:10 -0000 2.9
+++ spread.html 14 Jan 2003 02:25:50 -0000 2.10
@@ -28,36 +28,35 @@
@_UI_STD_HEAD_@
+[tmp extra_title]
+[loop list="[cgi mv_data_table]"]
+ [if-loop-data __UI_META_TABLE__ name]
+ <B>[loop-data __UI_META_TABLE__ name]</B>
+ [/if-loop-data]
+ [if-loop-data __UI_META_TABLE__ help_url]
+ <small><A HREF="[loop-data __UI_META_TABLE__ help_url]">help</A></small>
+ [/if-loop-data]
+ [if-loop-data __UI_META_TABLE__ help]
+ <i>[loop-data __UI_META_TABLE__ name]</i>
+ [/if-loop-data]
+[/loop]
+[/tmp]
+[calc]
+ $Scratch->{page_banner} .= $Scratch->{extra_title};
+ $Scratch->{page_title} .= $Scratch->{extra_title};
+ return;
+[/calc]
+
+[output name=search_box]
<FORM ACTION="[area href="[either][cgi ui_searchpage][or]@@MV_PAGE@@[/either]"]" METHOD=GET>
<INPUT TYPE=hidden NAME=mv_session_id VALUE="[data session id]">
<INPUT TYPE=hidden NAME=mv_data_table VALUE="[cgi mv_data_table]">
<INPUT TYPE=hidden NAME=ui_meta_view value="[cgi ui_meta_view]">
<INPUT TYPE=hidden NAME=mv_action VALUE=back>
<INPUT TYPE=hidden NAME=ui_show_fields VALUE="[cgi ui_show_fields]">
-
-[if !scratch tmp_large]
-<table>
-<tr>
-<td>
- [loop list="[cgi mv_data_table]"]
- [if-loop-data __UI_META_TABLE__ name]
- <B>[loop-data __UI_META_TABLE__ name]</B>
- [/if-loop-data]
- [if-loop-data __UI_META_TABLE__ help_url]
- <small><A HREF="[loop-data __UI_META_TABLE__ help_url]">help</A></small>
- [/if-loop-data]
- [if-loop-data __UI_META_TABLE__ help]
- <BR><i>[loop-data __UI_META_TABLE__ name]</i>
- [/if-loop-data]
- [/loop]
-</td>
-<td>
-<input NAME=ui_text_qualification size=16><INPUT TYPE=submit VALUE="[L]Limit with search[/L]">
-</td>
-</tr>
-</table>
-[/if]
+<span class=s3>[L]Limit with search[/L]:</span> <input NAME=ui_text_qualification size=16 class=s2>
</FORM>
+[output name=""]
[perl tables="[cgi mv_data_table] __UI_META_TABLE__"]
my $table = $CGI->{mv_data_table};
@@ -121,6 +120,7 @@
return;
[/perl]
+[output name="top_of_form"]
<FORM METHOD=POST ACTION="[base-url]/ui">
<INPUT TYPE=hidden NAME="mv_todo" VALUE="set">
<INPUT TYPE=hidden NAME="mv_nextpage" VALUE="@@MV_PAGE@@">
@@ -137,25 +137,13 @@
<INPUT TYPE=hidden NAME="mv_data_fields" VALUE="[cgi mv_data_fields]">
<INPUT TYPE=hidden NAME="mv_data_function" VALUE="update">
+[output name=""]
[calc]
[/calc]
[search-region more=1 arg="[scratch mrec_options]"]
-<table cellpadding=2 cellspacing=0 width="90%">
+<table width="100%" border=0 cellpadding=0 cellspacing=1 class=rseparator>
-<tr>
-<td colspan="[scratch ui_num_col]" class=rborder><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
-</tr>
-<tr>
- <td class=rnorm> </td>
- <td colspan="[scratch ui_most_col]" class=rnorm>
- [button text="[L]Ok[/L]" extra=|style="font-weight: bold"|]
- mv_todo=set
- [return-to click]
- [/button]
- <INPUT TYPE=submit NAME=mv_click VALUE="[L]Cancel[/L]">
- </td>
-</tr>
[more-list]
[prev-anchor] <span style="font-size: larger; font-weight: bolder"><</span> [/prev-anchor]
[next-anchor] <span style="font-size: larger; font-weight: bolder">></span> [/next-anchor]
@@ -166,20 +154,16 @@
<td colspan="[scratch ui_num_col]" class=rspacer><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
</tr>
<tr>
-<td class=rnorm> </td>
-<td colspan="[scratch ui_most_col]" class=rnorm>
+<td class=rhead> </td>
+<td colspan="[scratch ui_most_col]" class=rhead>
[msg arg.0=`q{[more]}`]More pages: %s[/msg]
</td>
</tr>
[/more-list]
-<tr>
-<td colspan="[scratch ui_num_col]" class=rborder><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
-</tr>
-
-<TR class=rnorm CELLPADDING=2>
- <TH ALIGN=CENTER> </TH>
- <TH ALIGN=CENTER>[cgi ui_data_key_name]</TH>
+<TR class=rhead CELLPADDING=2>
+ <td align=center> </td>
+ <td>[cgi ui_data_key_name]</td>
[row-edit columns="[cgi mv_data_fields]" ]
</TR>
@@ -194,42 +178,41 @@
return $out;
[/item-sub]
[if-mm keys [item-code]]
-<TR class=rnorm>
+<TR class=rownorm>
<td valign=top><input type=checkbox name="batch_id" value="[item-code]"><input type=hidden name="[item-exec addnum][/item-exec][cgi ui_data_key_name]" value="[item-code]"></td>
<TD valign=top>
[page href="__UI_BASE__/flex_editor"
form=|
page_title=Edit [cgi mv_data_table]: [item-code]
mv_data_table=[cgi mv_data_table]
+ ui_meta_specific=[cgi ui_meta_specific]
item_id=[item-code]
- |]<small><small><u>edit</u></small></small> <b>[item-code]</b></A>
+ |][item-code]</A>
</TD>
[row-edit
key="[item-code]"
extra="valign=top"
pointer="[item-exec addnum]1[/item-exec]"
columns="[cgi mv_data_fields]"
+ ui_meta_specific="[cgi ui_meta_specific]"
]
-</TR>
-<tr>
-<td colspan="[scratch ui_num_col]" class=rspacer><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
</tr>
[/if-mm]
[set row_number][item-increment][/set]
[/search-list]
<tr>
-<td colspan="[scratch ui_num_col]" class=rmarq>New record</td>
+<td colspan="[scratch ui_num_col]" class=rhead><b>New record</b></td>
</tr>
-<TR class=rnorm CELLPADDING=2>
+<TR class=rhead CELLPADDING=2>
<TH ALIGN=CENTER> </TH>
<TH ALIGN=CENTER>[cgi ui_data_key_name]</TH>
- [row-edit columns="[cgi mv_data_fields]" ]
+ [row-edit columns="[cgi mv_data_fields]"]
</TR>
-<TR class=rnorm>
+<TR class=rownorm>
<td COLSPAN=2 valign=top>
<input type=text size=12 name="999999_[cgi ui_data_key_name]">
</TD>
@@ -249,34 +232,69 @@
[last-anchor] <span style="font-size: larger; font-weight: bolder">>></span>[/last-anchor]
[page-anchor] <span style="font-size: larger; font-weight: bolder">$PAGE$</span>[/page-anchor]
<tr>
-<td colspan="[scratch ui_num_col]" class=rspacer><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
-</tr>
-<tr>
-<td class=rnorm> </td>
-<td colspan="[scratch ui_most_col]" class=rnorm>
+<td class=rhead> </td>
+<td colspan="[scratch ui_most_col]" class=rhead>
[msg arg.0=`q{[more]}`]More pages: %s[/msg]
</td>
</tr>
[/more-list]
-<tr>
-<td colspan="[scratch ui_num_col]" class=rspacer><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
-</tr>
+</TABLE>
+</center>
+[/search-region]
-<tr>
-<td colspan="[scratch ui_num_col]" class=rborder><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
-</tr>
+[output name=top_buttons]
+ [button text="[L]Ok[/L]" extra=|style="font-weight: bold"|]
+ mv_todo=set
+ [return-to click]
+ [/button]
+ [button text="[L]Delete checked[/L]"
+ confirm="[L]Are you sure you want to delete the checked rows?[/L]"]
+[flag type=write table="[cgi mv_data_table]"]
+mv_nextpage=__UI_BASE__/flex_select
+mv_auto_export=
+mv_todo=return
+[if-mm tables =d]
+ [perl tables="[cgi mv_data_table]"]
+ my $tab = $CGI->{mv_data_table};
+ my $db = $Db{$tab};
+ unless ($db) {
+ $Scratch->{ui_message} = "No table '$tab'";
+ return;
+ }
+ my @items = split /\0/, $CGI->{batch_id};
+ foreach my $item (@items) {
+ if ($db->delete_record($item)) {
+ $out .= "Deleted $item from table $tab<BR>";
+ }
+ else {
+ $out .= "Item $item not in $tab table (or delete failed)<BR>";
+ }
+ }
+ $Scratch->{ui_message} = $out;
+ return;
+ [/perl]
+[else]
+ [set ui_message][L]Not authorized to delete items.[/L][/set]
+[/else]
+[/if-mm]
+ [return-to click]
+[/button]
-<tr>
-<td class=rnorm> </td>
-<td colspan="[scratch ui_most_col]" class=rnorm>
+ <INPUT TYPE=submit NAME=mv_click VALUE="[L]Cancel[/L]" type=s3>
+[output name=bottom_buttons]
- [button text="[L]Ok[/L]" extra=|style="font-weight: bold"|]
+ [if-mm super]
+ <INPUT TYPE=checkbox NAME=mv_auto_export [if !scratch ui_too_large]CHECKED [/if]VALUE="[cgi mv_data_table]" class=s3>
+ <span class=s3>[L]Auto-export[/L]</span>
+ [/if-mm]
+
+ [button text="[L]Ok[/L]" extra=|style="font-weight: bold"|]
mv_todo=set
[return-to click]
- [/button]
- [button text="[L]Delete checked rows[/L]"
+ [/button]
+ [button text="[L]Delete checked[/L]"
confirm="[L]Are you sure you want to delete the checked rows?[/L]"]
[flag type=write table="[cgi mv_data_table]"]
mv_nextpage=__UI_BASE__/flex_select
@@ -307,19 +325,11 @@
[/else]
[/if-mm]
[return-to click]
-[/button]
- <INPUT TYPE=submit NAME=mv_click VALUE="[L]Cancel[/L]">
- [if-mm super]
- <BR><b><INPUT TYPE=checkbox NAME=mv_auto_export [if !scratch ui_too_large]CHECKED [/if]VALUE="[cgi mv_data_table]">
- [L]Auto-export[/L]</b>
- [/if-mm]
+[/button]
-</td>
-</tr>
+ <INPUT TYPE=submit NAME=mv_click VALUE="[L]Cancel[/L]" type=s3>
+[output name="bottom_of_form"]
-</TABLE>
-</center>
-[/search-region]
</FORM>
2.2 +1 -1 interchange/dist/lib/UI/pages/admin/tax.html
rev 2.2, prev_rev 2.1
Index: tax.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/tax.html,v
retrieving revision 2.1
retrieving revision 2.2
diff -u -r2.1 -r2.2
--- tax.html 18 Aug 2002 08:09:06 -0000 2.1
+++ tax.html 14 Jan 2003 02:25:50 -0000 2.2
@@ -9,7 +9,7 @@
[/calc]
[flag type=write table=country]
[flag type=write table=state]
-[set table_perm]1[/set]
+[set page_perm]tax[/set]
[set ui_class]Admin[/set]
[set page_title][L]Tax configuration[/L][/set]
[set help_name]tax.main[/set]
2.1 interchange/dist/lib/UI/pages/admin/commerce.html
rev 2.1, prev_rev 2.0
2.1 interchange/dist/lib/UI/pages/admin/content_components.html
rev 2.1, prev_rev 2.0
2.1 interchange/dist/lib/UI/pages/admin/content_templates.html
rev 2.1, prev_rev 2.0
2.1 interchange/dist/lib/UI/pages/admin/dbconfig_save.html
rev 2.1, prev_rev 2.0
2.1 interchange/dist/lib/UI/pages/admin/edit_metaconfig.html
rev 2.1, prev_rev 2.0
2.1 interchange/dist/lib/UI/pages/admin/generic.html
rev 2.1, prev_rev 2.0
2.1 interchange/dist/lib/UI/pages/admin/genfunction.html
rev 2.1, prev_rev 2.0
2.1 interchange/dist/lib/UI/pages/admin/gpg_key.html
rev 2.1, prev_rev 2.0
2.1 interchange/dist/lib/UI/pages/admin/menu_loader.html
rev 2.1, prev_rev 2.0
2.1 interchange/dist/lib/UI/pages/admin/merge_meta.html
rev 2.1, prev_rev 2.0
2.1 interchange/dist/lib/UI/pages/admin/order_status_alt.html
rev 2.1, prev_rev 2.0
2.1 interchange/dist/lib/UI/pages/admin/page_metaconfig.html
rev 2.1, prev_rev 2.0
2.1 interchange/dist/lib/UI/pages/admin/pref_select.html
rev 2.1, prev_rev 2.0
1.3 +26 -28 interchange/dist/lib/UI/pages/admin/survey/index.html
rev 1.3, prev_rev 1.2
Index: index.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/survey/index.html,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- index.html 23 Nov 2002 03:54:12 -0000 1.2
+++ index.html 14 Jan 2003 02:25:52 -0000 1.3
@@ -4,16 +4,14 @@
return;
[/calc]
[set table_perm]1[/set]
-[set ui_class]Admin[/set]
+[set ui_class]Content[/set]
[set page_title][L]Set up a survey[/L][/set]
[set help_name]survey.main[/set]
-[set icon_name]icon_config.gif[/set]
+[set icon_name]icon_pages.gif[/set]
@_UI_STD_HEAD_@
<!-- BEGIN REAL STUFF -->
-<blockquote>
-
[tmp survey_keys]code label
[loop search="
ml=1000
@@ -27,51 +25,51 @@
"][loop-code] [loop-param label]
[/loop][/tmp]
+<div class=titlebox>Edit an existing survey</div>
+<ul>
+[loop list="[scratch survey_keys]" lr=1 head-skip=1]
+<li>[page href="__UI_BASE__/survey/overall" form="item_id=[loop-code]"][loop-code] -- [loop-param label]</A>
+ ([page href=survey/standard form="survey_start=[loop-code]"]run</a>)
+ </li>
+[/loop]
+</ul>
+
+
+<div class=titlebox>Create a new survey</div>
+<blockquote>
<form action="[area __UI_BASE__/survey/overall]">
<input type=hidden name=mv_action value=back>
<input type=hidden name=mv_session_id value="[data session_id]">
<input type=hidden name="mv_filter:item_id" value=word>
-<table>
-<tr>
- <td>New survey name</td>
- <td>Clone from</td>
- <td> </td>
+<table class=rseparator cellspacing=0 cellpadding=3>
+<tr class=rhead>
+ <td>Survey name</td>
+ <td colspan=2>Clone from</td>
</tr>
-<tr>
- <td>
- <input type=text size=16 name=item_id>
+<tr class=rownorm>
+ <td class=clabel>
+ <input type=text size=16 name=item_id class=s3>
</td>
- <td>
- <select name="survey_clone">
+ <td class=cdata>
+ <select name="survey_clone" class=s3>
<option value=""> -- none --
[loop list="[scratch survey_keys]" lr=1 head-skip=1]<option value="[loop-code]"> [loop-code]</option>[/loop]
</select>
</td>
- <td>
+ <td class=cdata>
<input type=submit value="[L]Create[/L]">
</td>
</tr>
</table>
</form>
-
-Edit an existing survey:
-<ul>
-[loop list="[scratch survey_keys]" lr=1 head-skip=1]
-<li>[page href="__UI_BASE__/survey/overall" form="item_id=[loop-code]"][loop-code] -- [loop-param label]</A>
- ([page href=survey/standard form="survey_start=[loop-code]"]run</a>)
- </li>
-[/loop]
-</ul>
</blockquote>
+<div class=titlebox>Access survey results</div>
<blockquote>
-<h2>Access survey results</h2>
-
[file-navigator initial_dir="logs/survey" no-up=1 no-new-file=1]
-
</blockquote>
<!-- ----- END REAL STUFF ----- -->
@_UI_STD_FOOTER_@
-<!-- page: @@MV_PAGE@@ version: $Id: index.html,v 1.2 2002/11/23 03:54:12 mheins Exp $ -->
+<!-- page: @@MV_PAGE@@ version: $Id: index.html,v 1.3 2003/01/14 02:25:52 mheins Exp $ -->
1.3 +3 -1 interchange/dist/lib/UI/pages/admin/survey/overall.html
rev 1.3, prev_rev 1.2
Index: overall.html
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/admin/survey/overall.html,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- overall.html 23 Nov 2002 03:54:12 -0000 1.2
+++ overall.html 14 Jan 2003 02:25:52 -0000 1.3
@@ -227,6 +227,8 @@
tabbed=1
table_width=620
tab_width=100
+ output-map="[scratch ui_style_edit]"
+ ui_style="[scratch ui_style_edit]"
break_row_class=rmarq
panel_width=600
panel_height=500
@@ -430,4 +432,4 @@
</table>
@_UI_STD_FOOTER_@
-<!-- page: @@MV_PAGE@@ version: $Revision: 1.2 $ -->
+<!-- page: @@MV_PAGE@@ version: $Revision: 1.3 $ -->
1.7 +2 -3 interchange/dist/lib/UI/pages/include/page_editor
rev 1.7, prev_rev 1.6
Index: page_editor
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/pages/include/page_editor,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- page_editor 3 Oct 2002 16:20:27 -0000 1.6
+++ page_editor 14 Jan 2003 02:25:53 -0000 1.7
@@ -280,7 +280,6 @@
value=1><br>
[loop list="[page-param ui_display_order]"]
<A
- style="font-size: larger; font-weight: bolder"
HREF="javascript:void(0)"
onClick="visible(1)"
title="edit page controls"
@@ -329,7 +328,6 @@
<A
HREF="javascript:void(0)"
TITLE="edit [comp-param component]"
- STYLE="font-size: larger; font-weight: bolder"
onClick="visible([comp-increment],'comp')"
>[if-comp-param component][comp-param component][else]-empty-[/else][/if-comp-param]</A> <input
type=checkbox
@@ -489,7 +487,7 @@
href="silent/ce_modify"
item_id="CONTENT"
js_changed=changed
- label.ui_body_text=| Page content<br><br><input type=button onClick="content_win();" Value="[L]Edit in Browser[/L]">|
+ label.ui_body_text=| Page content|
mv_nextpage=@@MV_PAGE@@
nocancel=1
notable=1
@@ -501,6 +499,7 @@
table_width="100%"
ui_data_fields="code ui_body_text"
ui_hide_key=1
+ filter.ui_body_text="linkdecode"
widget.ui_body_text="textarea"
view=ui_component
form-extra=|
1.1 interchange/dist/lib/UI/pages/include/meta/mv_metadata.asc
rev 1.1, prev_rev 1.0
Index: mv_metadata.asc
===================================================================
code type width height field db name outboard options attribute label help lookup filter help_url pre_filter lookup_exclude prepend append display_filter default extended
access table access 1 {'panel_shade' => "f",'ui_show_fields' => "username
name
last_login(strftime)
super(yesno)",'ui_sort_field' => "username",'ui_sort_option' => "f",}
access::super select 0=No, 1=Yes
affiliate table 25 affiliate,name,url,active Affiliates Data affiliate {'panel_shade' => "f",'ui_show_fields' => "affiliate
name
url
join_date(convert_date.%B.%d,.%Y)
active(yesno)",}
affiliate::active yesno Active?
affiliate::affiliate text 12 Affiliate ID word
affiliate::image text 70
affiliate::join_date date Join date date_change
affiliate::name text 50 Affiliate Name
affiliate::timeout text 8 Timeout delay (in seconds, 0 to disable)
affiliate::url text 70 URL Default URL to redirect to
area table code
name
which_page
url
search
page
selector Category Groups/Placement area
area::display_type select name=Banner Text or Name,url=URL only,icon=Icon and name, image=Image
area::image imagedir images
area::link_template textarea 30 4 none=No link, external=External link (http://...), internal=Interchange page, simple=Simple search, complex=Complex search
area::link_type select none=No link, external=External link (http://...), internal=Interchange page, simple=Simple search, complex=Complex search
banner table Banner ads code
category
weight
rotate
banner banner
cat table code
name
page
selector
url Categories cat {'bottom_buttons' => "",'spread_textarea' => "",'include_form_expand' => "",'tab_vert_offset' => "",'restrict_allow' => "",'widget_cell_class' => "",'ui_sort_field' => "",'link_table' => "",'ui_show_fields' => "",'link_extra' => "",'break_row_class' => "",'label_cell_class' => "",'tab_horiz_offset' => "",'link_before' => "",'ui_special_add' => "",'left_width' => "",'top_buttons' => "",'spread_fields' => "",'combo_row_class' => "",'include_before' => "",'ui_meta_specific' => "",'tab_height' => "",'link_view' => "",'link_fields' => "",'spread_meta' => "",'tab_width' => "",'data_row_class' => "",'ui_sort_option' => "",'panel_height' => "",'include_form' => "",'help_cell_class' => "",'filter_field' => "",'spacer_row_class' => "",'widget_class' => "s3",'ui_data_fields' => "",'ui_sort_combined' => "",'file_upload' => "",'spread_width' => "",'spread_height' => "",'tabbed' => "",'include_form_interpolate' => "",'table_width' => "",'spread_textarea_rows' => "",'link_sort' => "",'panel_width' => "",'link_key' => "",'data_cell_class' => "",'view_from' => "",'link_label' => "",}
cat::area multiple 5 area code
cat::display_type select name=Banner Text or Name,url=URL only,icon=Icon and name, image=Image
cat::link_template textarea 30 4 none=No link,
external=External link (http://...),
internal=Interchange page,
simple=Simple search,
complex=Complex search
cat::link_type select none=No link, external=External link (http://...), internal=Interchange page, simple=Simple search, complex=Complex search
cat::page text 80
cat::search textarea 50 4
cat::sel text Select code
cat::selector textarea 50 3
country table 200 code
name(40)
shipmodes
tax Int'l Shipping/Taxing Settings country {'panel_shade' => "f",'spread_height' => "50",'ui_data_fields' => "=Identification
code
name
=Shipping/Taxing
shipmodes
tax
=Sort/Display
region
sorder
=Extended information
iso
isonum",}
country::code text 5 Country Code Two-letter code
country::iso text 5 ISO Country code Not normally used by Interchange; some credit card companies require this. A three letter code.
country::isonum text 5 ISO Country Number Not normally used by Interchange.
country::name text 40 Country Name
country::region combo region nullselect
country::shipmodes text 30 Shipping modes Space-separated shipping modes for this country, in the order they should be displayed in the shipping selector.
country::tax textarea 20 8 Tax information Only used if <B>SalesTax</b> is set to "multi". Uses tax_category in products table to set level. If all items are to be taxed at 10%, the value used should be:
<PRE>
default=10%
</PRE>
custview::userdb::dealer display =No,1=Yes Dealer
custview::userdb::email_copy display =No, 1=Yes Payment method
custview::userdb::fax_order display =Credit Card*, 1=Fax or Mail, 2=Purchase order, 3=COD Payment method
custview::userdb::mail_list display offer=Special Offers, newsletter=Newsletter, alert=Alerts and Recalls, upgrade=Upgrades null_to_space
dbconfig::mv_metadata::attribute move_combo 30 10 columns:: Spreadsheet columns Must have the key field (usually it is the first one) null_to_comma
dbconfig::mv_metadata::code hidden_text Database table
dbconfig::mv_metadata::db reverse_combo tables last_non_null
dbconfig::mv_metadata::display_filter select =Yes,
1=No Backup select If Yes, table should be checked by default in backup/download.
dbconfig::mv_metadata::field move_combo 30 10 columns:: List on select page Must have the key field (usually it is the first one) null_to_comma
dbconfig::mv_metadata::filter multiple 5 filesafe=Safe for file name,
uc=Upper case,
nullselect=First non-null (combo box),
null_to_space=Translate null to space,
null_to_comma=Translate null to comma,
lc=Lower case,
digits_dot=Decimal number (not negative),
backslash=Remove backslashes,
namecase=Name case,
name=Turn LAST,FIRST into FIRST LAST,
digits=Digits only,
word=Word chars only (A-z0-9_),
unix=DOS to UNIX,
dos=UNIX to DOS,
mac=UNIX to MAC,
gate=Only allow if scratch set,
no_white=No whitespace,
strip=Strip leading/trailing whitespace,
sql=Escape single quotes (SQL),
text2html=Simple text to HTML,
urlencode=URL encode (%20, etc),
pagefile=Safe for Interchange page name,
entities=HTML entities (& -> &), date_change=MM/DD/YYYY to YYYYMMDD option_format
dbconfig::mv_metadata::height text 4 Select page rows Number of rows to display at selector page. digits
dbconfig::mv_metadata::help textarea 70 4 Help displays at top of page
dbconfig::mv_metadata::help_url text 70 4 Help URL links below help text
dbconfig::mv_metadata::lookup text 20
dbconfig::mv_metadata::name text 70 4 Description
dbconfig::mv_metadata::options move_combo 20 8 columns:: Fields to edit Recommended fields to display on editor screen, in order of
display. If a blank line is between them, a break line will
be put in.
dbconfig::mv_metadata::outboard multiple 8 NONE,
Qty price;pricing:q5:rn=Qty price,
Options;options:o_enable:r=Options,
Up-sell;merchandising:upsell_to:r=Up-sell,
Cross-sell;merchandising:cross_sell:r=Cross-sell,
Promo;merchandising:featured:r=Promo,
Inventory;inventory:quantity:rn=Inventory Special display These are extra links for the item editor -- various merchandising, inventory, and pricing links. null_to_comma
dbconfig::mv_metadata::type select =No,
1=Yes Display with meta (spreadsheet) filesafe
dbconfig::mv_metadata::width text 4 Default spreadsheet column width digits
gish::products table 50 Product information Qty price;pricing:q5:rn,Options;options:o_enable:r,Promo;merchandising:featured:r,Inventory;inventory:quantity:rn gish products {'bottom_buttons' => "",'include_form_expand' => "1",'spread_textarea' => "",'tab_vert_offset' => "",'widget_cell_class' => "cwidget",'restrict_allow' => "area",'ui_sort_field' => "",'link_table' => "",'ui_show_fields' => "sku
description(30.)
prod_group
category
price(%.2f align=right)",'link_extra' => "",'break_row_class' => "rmarq",'label_cell_class' => "clabel",'tab_horiz_offset' => "",'link_before' => "",'ui_special_add' => "Qty price;pricing:q5:rn,Options;options:o_enable:r,Promo;merchandising:featured:r,Inventory;inventory:quantity:rn",'top_buttons' => "",'left_width' => "20%",'spread_fields' => "sku
description
price
comment
nontaxable",'combo_row_class' => "rnorm",'include_before' => "price",'tab_height' => "",'ui_meta_specific' => "",'link_view' => "",'link_fields' => "",'spread_meta' => "comment nontaxable",'tab_width' => "120",'data_row_class' => "rnorm",'ui_sort_option' => "",'panel_height' => "700",'include_form' => "<td class=clabel> Product images </td>
<td class=cdata>
<script>
function get_images (sku) {
var path = '[var IMAGE_DIR]';
var el;
var divit = document.getElementById('images_table');
divit.style.display= 'none';
el = document.getElementById('thumb_img');
el.src = path + '/thumb/' + sku + '_b.gif';
el = document.getElementById('item_img');
el.src = path + '/items/' + sku + '.gif';
divit.style.display= 'block';
}
</script>
<table id=images_table>
<tr class=rmarq>
<td>Image</td>
<td>Thumb</td>
</tr>
<tr>
<td><img id=item_img src=\"[var IMAGE_DIR]/items/[cgi item_id].gif\"></td>
<td><img id=thumb_img src=\"[var IMAGE_DIR]/thumb/[cgi item_id]_b.gif\"></td>
</tr>
ll_class' => "chelp",'spacer_row_class' => "rspacer",'ui_data_fields' => "=General
sku
description
prod_group
category
comment
=Pricing
price
wholesale
=Images
image
thumb
image_large
=Shipping/Tax/Other
weight
gift_cert
nontaxable",'ui_sort_combined' => "",'spread_width' => "8",'file_upload' => "1",'spread_height' => "25",'tabbed' => "1",'include_form_interpolate' => "",'spread_textarea_rows' => "4",'table_width' => "800",'link_sort' => "",'panel_width' => "800",'link_key' => "",'data_cell_class' => "cdata",'link_label' => "",'view_from' => "",}
gish::products::image imagehelper Image <img src="_UI_VALUE_"><br>
ichelp table 100 ichelp {'bottom_buttons' => "",'spread_textarea' => "",'tab_vert_offset' => "",'include_form_expand' => "",'restrict_allow' => "",'widget_cell_class' => "",'ui_sort_field' => "code",'link_table' => "",'ui_show_fields' => "code
title",'link_extra' => "",'break_row_class' => "",'label_cell_class' => "",'tab_horiz_offset' => "",'link_before' => "",'ui_special_add' => "",'left_width' => "",'top_buttons' => "",'spread_fields' => "",'combo_row_class' => "",'include_before' => "",'ui_meta_specific' => "",'tab_height' => "",'link_view' => "",'link_fields' => "",'spread_meta' => "",'tab_width' => "",'data_row_class' => "",'ui_sort_option' => "",'panel_height' => "",'include_form' => "",'help_cell_class' => "",'spacer_row_class' => "",'ui_sort_combined' => "",'ui_data_fields' => "",'file_upload' => "",'spread_width' => "",'spread_height' => "",'tabbed' => "",'include_form_interpolate' => "",'table_width' => "",'spread_textarea_rows' => "",'link_sort' => "",'panel_width' => "",'link_key' => "",'data_cell_class' => "",'view_from' => "",'link_label' => "",}
ichelp::helptext textarea 72 15 Help Text
icmenu table 12 50 code
mgroup
msort
next_line
page
name(30)
inactive
Interchange menus icmenu
icmenu::debug yesno Debug Set to "Yes" to get debug messages relating to the item (if supported by menu).
icmenu::depends_on text 30 Include on Form parameter needed to cause inclusion of this option. Can be used differently by different menu versions. Normally, preceding it by an exlamation point (!) inverts the sense.
icmenu::exclude_on text 30 Exclude on Form parameter to cause exclusion of this option if otherwise included. Can be used differently by different menu versions. Normally, preceding it by an exlamation point (!) inverts the sense.
icmenu::help_name text 30 Help tag The page name for the help you should be pointed to when following this link. Can be used differently by different menus, sometimes not used at all.
icmenu::img_dn text 30 Image Down The image for presentation on hover -- for menus that support images.
icmenu::img_icon text 30 Title icon Icon image for display to the left of the name text. To replace name entirely, leave name blank (or make it an HTML comment).
icmenu::img_sel text 30 Image Down The image for presentation on selection of the item, for menus that support images.
icmenu::img_up text 30 Image Up The image for normal presentation -- on menus that support images.
icmenu::inactive yesno
icmenu::indicator text 30 Indicator Variable Form parameter to cause highlighting -- precede with ! to cause highlighting if <i>not</i> set.
icmenu::member select =All,1=Member only,0=Non-member only
icmenu::next_line yesno Go to next line Breaks menus at next line (or level)
icmenu::super yesno Only for superuser Menu option will be presented only to the super-user if this is Yes.
icmenu::url text 50 External URL On some menus, causes a link to an external URL instead of the internal one generated by "page" and "form".
inventory table 100 sku,quantity sku
=Quantity info
quantity
stock_message
=Accounting info
account
cogs_account inventory {'bottom_buttons' => "",'include_form_expand' => "",'tab_vert_offset' => "",'spread_textarea' => "",'widget_cell_class' => "",'restrict_allow' => "",'ui_sort_field' => "",'link_table' => "",'panel_style' => "",'ui_show_fields' => "",'link_extra' => "",'break_row_class' => "",'label_cell_class' => "",'tab_horiz_offset' => "",'link_before' => "",'panel_last_shade' => "d",'ui_special_add' => "",'top_buttons' => "",'left_width' => "",'include_before' => "",'combo_row_class' => "",'spread_fields' => "",'tab_height' => "",'ui_meta_specific' => "",'link_view' => "",'link_fields' => "",'spread_meta' => "",'data_row_class' => "",'tab_width' => "",'ui_sort_option' => "",'panel_height' => "",'include_form' => "",'tab_style' => "",'help_cell_class' => "",'filter_field' => "quantity=digits",'spacer_row_class' => "",'widget_class' => "",'ui_data_fields' => "=General
sku quantity
=Stock info
stock_message
account cogs_account
=Order parameters
min_order",'ui_sort_combined' => "",'spread_width' => "",'file_upload' => "",'panel_shade' => "f",'tabbed' => "",'spread_height' => "",'include_form_interpolate' => "",'spread_textarea_rows' => "",'table_width' => "",'link_sort' => "",'panel_width' => "",'link_key' => "",'data_cell_class' => "",'link_label' => "",'view_from' => "",}
inventory::account text 20 Sales account
inventory::cogs_account text 20 COGS Account
inventory::min_order text 5 Minimum Order Qty Minimum number allowed to order
inventory::quantity text 8 On hand
inventory::sku text 16 SKU
inventory::stock_message select In stock,Ships in 3-5 days,Ships in 4-6 weeks,Special order Out of stock message Some absurd amount of help on the same line to make sure the colspan is good for use. stock_message
item_select::products table 50 Item Editor item_select products {'ui_show_fields' => "sku
description
prod_group
category
price(%.2f align=right)",'ui_sort_field' => "description",'ui_special_add' => "Qty price;pricing:q5:rn,Options;options:o_enable:r,Promo;merchandising:featured:r,Inventory;inventory:quantity:rn",}
matrix::options::price text 12 Price digits_dot
matrix_options::options table 100 code
sku
=Option information
o_group
o_label
o_value
matrix_options options {'panel_shade' => "f",'ui_show_fields' => "code
sku
o_group
o_value
o_label",'ui_sort_field' => "sku",'ui_sort_combined' => "sku,o_group",}
merchandising::banner_image text Banner image if appropriate
merchandising::banner_text text Banner text for use where appropriate.
merchandising::blurb_begin text Teaser catch line for feature display
merchandising::blurb_end text Closer end text for feature display
merchandising::cross_category select products =- none - Cross-sale category If there are no item-specific cross sells for an item, it will fall
back to a cross-category sale. Select a category for <b>this item</b>
to be cross-sold to. category
merchandising::cross_sell text 50 products Cross-sell SKUs null_to_space <A HREF="admin/sku_selector?caller=item_cross&table=_UI_TABLE_&col=_UI_COLUMN_&item_id=_UI_KEY_&value=_UI_URL_VALUE_">select...</A>
merchandising::featured select =none,
specials=Specials,
new=New item,
expired=expired Promotions Selects where to feature the item for a promotion. option_format <A HREF="admin/add_meta_option?item_id=_UI_TABLE_::_UI_COLUMN_&ui_return_to=admin/item&ui_return_to=ui_return_table=products">add...</A>
merchandising::finish_date date End date date_change
merchandising::sku text products sku
merchandising::start_date date Start date date_change
merchandising::timed_promotion select =No,
1=Yes Timed? <B>Yes</B> if the promotion is timed with the start and end dates.
merchandising::upsell_to text 50 products Up-sell SKUs <A HREF="admin/sku_selector?caller=item_up&table=_UI_TABLE_&col=_UI_COLUMN_&item_id=_UI_KEY_&value=_UI_URL_VALUE_">select...</A>
metaconfig::mv_metadata::append textarea 60 5 Append HTML <SMALL>HTML to be appended to the widget.
Will substitute in the macros _UI_TABLE_, _UI_COLUMN_,
_UI_KEY, and _UI_VALUE_, and will resolve relative links
with absolute links.</SMALL>
metaconfig::mv_metadata::attribute text 20 Column name Do not set this.
metaconfig::mv_metadata::code text 30 Table::Column Table::Column to be operated on.
metaconfig::mv_metadata::db combo tables Lookup Table Table for an external lookup. nullselect
metaconfig::mv_metadata::field move_combo 20 10 columns:: Field for lookup Can be two comma separated fields, in which case second is used as the label text. Both must be in the same table.
metaconfig::mv_metadata::filter move_combo 30 1 filters Filter(s) Filters which can transform or constrain your data. Some widgets
require filters.
metaconfig::mv_metadata::height text 4 Height SIZE for SELECT<BR>
ROWS for TEXTAREA<BR> digits
metaconfig::mv_metadata::help textarea 70 4 Help This help text.
metaconfig::mv_metadata::help_url text 70 4 Help URL A URL which will provide more help
metaconfig::mv_metadata::lookup text 20 Lookup select <SMALL>Whether lookup is performed to get options for a select type.
If nothing is in the <B>field</B>, then used as the name of the field to lookup
in. Use <B>Lookup Table</B> if you want to look up in a different table.</SMALL>
metaconfig::mv_metadata::lookup_exclude text 20 Lookup exclude <B>ADVANCED</B>: regular expression that excludes certain keys from the lookup.
metaconfig::mv_metadata::name text 20 Variable name Normally left empty, changes variable name to send in form.
metaconfig::mv_metadata::options textarea 50 8 Options Options for SELECT/COMBO types (if lookup, prepended). Entered in the
interchange option format:<P>
<blockquote>
value=label*</blockquote>One per line. line2options options2line
metaconfig::mv_metadata::outboard text 30 Directory Select directory for image listing widget.
metaconfig::mv_metadata::prepend textarea 60 5 Prepend HTML <SMALL>HTML to be prepended to the widget.
Will substitute in the macros _UI_TABLE_, _UI_COLUMN_,
_UI_KEY, and _UI_VALUE_, and will resolve relative links
with absolute links.</SMALL>
metaconfig::mv_metadata::type select text=Text entry*,
textarea=Textarea,
select=Select box,
yesno=Yes/No (Yes=1),
noyes=No/Yes (No=1),
yesno radio=Yes/No (radio),
noyes radio=No/Yes (radio),
multiple=Multiple Select,
combo=Combo Select,
reverse_combo=Reverse Combo,
move_combo=Combo move,
display=Text of option,
hidden_text=Hidden (show text),
radio=Radio box,
radio_nbsp=Radio (nbsp),
checkbox=Checkbox,
check_nbsp=Checkbox (nbsp),
imagedir=Image listing,
imagehelper=Image upload,
date=Date selector,
value=Value,
option_format=Option formatter,
show=Show all options Widget type Select the basic display type for the field.
metaconfig::mv_metadata::width text 4 Width SIZE for TEXT<BR>
COLS for TEXTAREA<BR>
Label limit for SELECT digits
modular::options table 20 code
o_master
sku
o_enable options Modular option view code
o_master
sku
o_group
phantom
o_default
o_enable
=Ordering information
description
price
differential modular options
modular::options::differential text 12 Price offset Adjustment to option price when phantom. A positive or negative
number.
modular::options::o_default select =No,
1=Yes Default? Yes if the default selection for the group.
modular::options::o_enable select =No,
1=Yes Follow? Enable for next level
modular::options::o_group combo 5 options Option group Scanned to see if it applies (or doesn't apply) to this product. o_group nullselect
modular::options::o_master select options =none Master item Always included when the base SKU is equal to this. sku
modular::options::phantom select =No,
1=Yes Phantom? If yes, this item is just a placeholder for modular options.
modular::options::price text 12 Price Price of option
modular::options::sku text 20
modular_create::options table code
o_master
sku
o_group
description(30)
price code
o_master
sku
o_group
phantom
o_default
=Attributes
price
description
modular_create options
modular_create::options::code text 20 code will be auto-assigned if left blank
modular_create::options::description text 30 3 Option description
modular_create::options::o_default select =No,
1=Yes Default? Whether a/the default selection for this group.
modular_create::options::o_enable select =No,
1=Yes Sub-items
modular_create::options::phantom select =No,
1=Yes Phantom? Whether a phantom for structuring
modular_create::options::price text 12 Price Price of this option.
modular_create::options::sku text 20 Unique SKU
mv_metadata table 200 code
type
options mv_metadata 1
mv_metadata::append textarea 60 5 Append HTML <SMALL>HTML to be appended to the widget.
Will substitute in the macros _UI_TABLE_, _UI_COLUMN_,
_UI_KEY, and _UI_VALUE_, and will resolve relative links
with absolute links.</SMALL>
mv_metadata::attribute text 20 Column name Do not set this.
mv_metadata::code text 30 Table::Column Table::Column to be operated on.
mv_metadata::db combo tables Lookup Table Table for an external lookup. nullselect
mv_metadata::field move_combo 20 10 columns:: Field for lookup Can be two comma separated fields, in which case second is used as the label text. Both must be in the same table.
mv_metadata::filter move_combo 30 1 filters Filter(s) Filters which can transform or constrain your data. Some widgets
require filters.
mv_metadata::height text 4 Height SIZE for SELECT<BR>
ROWS for TEXTAREA<BR> digits
mv_metadata::help textarea 70 4 Help This help text.
mv_metadata::help_url text 70 4 Help URL A URL which will provide more help
mv_metadata::lookup text 20 Lookup select <SMALL>Whether lookup is performed to get options for a select type.
If nothing is in the <B>field</B>, then used as the name of the field to lookup
in. Use <B>Lookup Table</B> if you want to look up in a different table.</SMALL>
mv_metadata::lookup_exclude text 20 Lookup exclude <B>ADVANCED</B>: regular expression that excludes certain keys from the lookup.
mv_metadata::name text 20 Variable name Normally left empty, changes variable name to send in form.
mv_metadata::options textarea 50 8 Options Options for SELECT/COMBO types (if lookup, prepended). Entered in the
interchange option format:<P>
<blockquote>
value=label*</blockquote>One per line. line2options options2line
mv_metadata::outboard text 30 Directory Select directory for image listing widget.
mv_metadata::prepend textarea 60 5 Prepend HTML <SMALL>HTML to be prepended to the widget.
Will substitute in the macros _UI_TABLE_, _UI_COLUMN_,
_UI_KEY, and _UI_VALUE_, and will resolve relative links
with absolute links.</SMALL>
mv_metadata::type select text=Text entry*,
textarea=Textarea,
select=Select box,
yesno=Yes/No (Yes=1),
noyes=No/Yes (No=1),
yesno radio=Yes/No (radio),
noyes radio=No/Yes (radio),
multiple=Multiple Select,
combo=Combo Select,
reverse_combo=Reverse Combo,
move_combo=Combo move,
display=Text of option,
hidden_text=Hidden (show text),
radio=Radio box,
radio_nbsp=Radio (nbsp),
checkbox=Checkbox,
check_nbsp=Checkbox (nbsp),
imagedir=Image listing,
imagehelper=Image upload,
date=Date selector,
value=Value,
option_format=Option formatter,
show=Show all options,gpg_keys=GPG key selector Widget type Select the basic display type for the field.
mv_metadata::width text 4 Width SIZE for TEXT<BR>
COLS for TEXTAREA<BR>
Label limit for SELECT digits
optadd::mv_metadata::options textarea 20 8 Options Options in the format:<P>
<blockquote>
value=label*</blockquote>
option_format
options table code
sku
o_group
o_master
description(30)
price Product Options options
options::code text 10
options::description textarea 50 5 Description For description in display
options::o_exclude textarea 35 5 Exclude Only for modular options. Lists the option groups to exclude
once the include has been done. Takes the form of a number of wildcard atoms.
options::o_group text 20 Option name Name of option variable, i.e. "size"
options::o_height text 4 Height
options::o_include textarea 35 5 Include Only for modular options. Lists the option groups to include
with your item. Takes the form of a number of wildcard atoms.
options::o_label text 40 Label Short name for option display
options::o_matrix select =Non-matrix,!=Matrix options Matrix options Matrix options allow you to maintain multiple option sets with
inventory on each combination.
options::o_modular select =Not modular,Modular options Modular options Modular options allow you to attach multiple SKUs to the same item,
possibly with attached options of their own. Very complex but you can do
most anything.
options::o_value option_format 20 5 Possible Values In Interchange option format:<PRE>
VALUE1=Label 1,
VALUE2=Label 2*
</PRE>(* = default selection) option_format
options::o_widget select text=Text entry*,
textarea=Textarea,
select=Select box,
yesno=Yes/No (Yes=1),
noyes=No/Yes (No=1),
yesno radio=Yes/No (radio),
noyes radio=No/Yes (radio),
multiple=Multiple Select,
combo=Combo Select,
reverse_combo=Reverse Combo,
move_combo=Combo move,
display=Text of option,
hidden_text=Hidden (show text),
radio=Radio box,
radio_nbsp=Radio (nbsp),
checkbox=Checkbox,
check_nbsp=Checkbox (nbsp),
imagedir=Image listing,
imagehelper=Image upload,
date=Date selector,
value=Value,
option_format=Option formatter,
show=Show all options Widget type Select the basic display type for the field.
options::o_width text 4 Width
options::price text 12 Price Price data, either option=N.NN or
a number, depending on matrix settings.
options::sku text 20 Associated item
options::volume text 10 Volume (if different, mostly for matrix/modular)
options::weight text 10 Weight (if different, mostly for matrix/modular)
optmaster::options::code text 15
optmaster::options::o_enable select =No,1=Yes Enable options Whether any options processing is done
optmaster::options::o_exclude textarea 20 5 Exclude
optmaster::options::o_include textarea 20 5 Include
optmaster::options::o_matrix select =Non-matrix,1=Matrix options Matrix?
optmaster::options::o_modular select =Not modular,1=Modular options Modular options?
optmaster::options::o_simple select =No,1=Yes Enable options Whether any options processing is done
order_returns::username text Username
order_view::orderline::status display pending=Pending, shipped=Shipped, backorder=Back ordered, credit=Waiting for credit check, canceled=Canceled nullselect
order_view::transactions::status display pending=Pending, shipped=Shipped, partial=Partially shipped, backorder=Back ordered, credit=Waiting for credit check, canceled=Canceled nullselect
orderline table code,sku,description,price, quantity,subtotal orderline 1 {'bottom_buttons' => "",'spread_textarea' => "",'tab_vert_offset' => "",'widget_cell_class' => "",'ui_sort_field' => "",'link_table' => "",'ui_show_fields' => "",'link_extra' => "",'break_row_class' => "",'label_cell_class' => "",'tab_horiz_offset' => "",'link_before' => "",'ui_special_add' => "",'top_buttons' => "",'left_width' => "",'spread_fields' => "code
status
sku
quantity
price",'combo_row_class' => "",'include_before' => "",'ui_meta_specific' => "",'tab_height' => "",'link_view' => "",'link_fields' => "",'spread_meta' => "status",'tab_width' => "",'data_row_class' => "",'ui_sort_option' => "",'panel_height' => "",'include_form' => "",'help_cell_class' => "",'spacer_row_class' => "",'ui_data_fields' => "",'ui_sort_combined' => "",'spread_width' => "",'file_upload' => "",'spread_height' => "",'tabbed' => "",'table_width' => "",'spread_textarea_rows' => "",'link_sort' => "",'panel_width' => "",'link_key' => "",'data_cell_class' => "",'link_label' => "",}
orderline::status select pending=Pending, shipped=Shipped, backorder=Back ordered, credit=Waiting for credit check, canceled=Canceled nullselect
page_metaconfig::mv_metadata::code hidden_text Page
page_metaconfig::mv_metadata::extended.bottom_template combo UI_STD_FOOTER=Standard UI,NOLEFT_BOTTOM=Catalog page, no left/right,LEFTONLY_BOTTOM=Catalog page, left only,LEFTRIGHT_BOTTOM=Catalog page, left and right Variable for Bottom Template nullselect
page_metaconfig::mv_metadata::extended.display_class text Display Class Type of admin page template to use
page_metaconfig::mv_metadata::extended.help_name combo code,title ichelp =none Help key 1 nullselect
page_metaconfig::mv_metadata::extended.icon_name select =--use page value--,Accounting,icon_config.gif=Administration,icon_pages.gif=Content,icon_people.gif=Customers,icon_error.gif=Error,icon_design.gif=Design,icon_ic.gif=Interchange,icon_item.gif=Items,icon_merch.gif=Merchandising,bg.gif=None,icon_orders.gif=Orders,icon_stats.gif=Reports,icon_regen.gif=Wizard Icon type Icon to show (you clicked on it to get here)
page_metaconfig::mv_metadata::extended.meta_header textarea 80 8 Extra Header Info Meta tags, scripts, etc.
page_metaconfig::mv_metadata::extended.mv_logical_page text Logical Page You can create a tab-up indication on the second level menu by defining the logical page that is associated with a page containing a third_level menu.
page_metaconfig::mv_metadata::extended.page_banner text 40 Page Banner Same as page title if empty
page_metaconfig::mv_metadata::extended.page_content textarea 80 30 Content for page
page_metaconfig::mv_metadata::extended.page_css textarea 50 8 Custom CSS for this page
page_metaconfig::mv_metadata::extended.page_perm text Page Permissions Required
page_metaconfig::mv_metadata::extended.page_title text 40 Page Title Uses value set in page if blank
page_metaconfig::mv_metadata::extended.second_menu text Second Menu Default based on page class
page_metaconfig::mv_metadata::extended.superuser yesno Limit to superuser
page_metaconfig::mv_metadata::extended.table_perm text Table Permissions Required
page_metaconfig::mv_metadata::extended.third_menu text Third menu Default based on page class
page_metaconfig::mv_metadata::extended.top_menu text Top Menu Default "Top"
page_metaconfig::mv_metadata::extended.top_template combo UI_STD_HEAD=Standard UI,NOLEFT_TOP=Catalog Page, no left or right,LEFTONLY_TOP=Catalog Page, left side only,LEFTRIGHT_TOP=Catalog Page, left and right Variable for Top Template nullselect
page_metaconfig::mv_metadata::extended.ui_body_extra text Extra parameters for <body> tag
page_metaconfig::mv_metadata::extended.ui_class select =--use page value--,Accounting,Admin=Administration,Content,Customers,Design,Items,Merchandising,Misc=Miscellaneous,None,Orders,Reports,Tables,Wizard UI Class Selects default icon, help, and menus
page_metaconfig::mv_metadata::extended.ui_style_edit yesno New-style tabbed display If you are using the newer menuing system, which doesn't use third-level tabs on the table-editor pages, you can make the tabbed display in the browser look better by specifying "Yes" here. It puts the tabs in the HTML wrapper and improves appearance.
pages/ {'help_name' => "template.edit",}
pages/admin/access {'ui_class' => "Admin",}
pages/admin/content {'third_menu' => "ContentEdit",}
pages/admin/content_components {'mv_logical_page' => "admin/content",'third_menu' => "ContentEdit",}
pages/admin/content_templates {'mv_logical_page' => "admin/content",'third_menu' => "ContentEdit",'help_name' => "template.edit",}
pages/admin/db_metaconfig {'icon_name' => "icon_regen.gif",'ui_style_edit' => "1",'ui_class' => "Admin",}
pages/admin/dbconfig {'third_menu' => "DbConfig",}
pages/admin/dbconfig_save {'third_menu' => "DbConfig",}
pages/admin/dbdownload {'mv_logical_page' => "admin/gentable",'third_menu' => "uiExport",}
pages/admin/dbinfo {'third_menu' => "Tables",'mv_logical_page' => "admin/genconfig",'top_template' => "UI_STD_HEAD",'bottom_template' => "UI_STD_FOOTER",}
pages/admin/direct_sql {'ui_class' => "Tables",}
pages/admin/edit_metaconfig {'icon_name' => "icon_regen.gif",}
pages/admin/export_table {'third_menu' => "uiExport",'ui_class' => "Tables",}
pages/admin/file_transfer {'page_title' => "File Navigator",}
pages/admin/flex_editor {'icon_name' => "icon_stats.gif",'ui_style_edit' => "1",'ui_class' => "Tables",}
pages/admin/flex_select {'icon_name' => "icon_stats.gif",'second_menu' => "Tables",'ui_class' => "Tables",}
pages/admin/foo {'page_content' => "This is the foo page.",'top_template' => "UI_STD_HEAD",'bottom_template' => "UI_STD_FOOTER",}
pages/admin/foobar {'page_content' => "This is the foobar page!",'icon_name' => "icon_pages.gif",'page_title' => "The foobar page",'top_template' => "NOLEFT_TOP",'bottom_template' => "NOLEFT_BOTTOM",'ui_class' => "Content",}
pages/admin/genconfig {'icon_name' => "icon_config.gif",'page_title' => "Interchange Server Information",'ui_class' => "Admin",}
pages/admin/gentable {'icon_name' => "icon_stats.gif",'top_template' => "UI_STD_HEAD",'bottom_template' => "UI_STD_FOOTER",'ui_class' => "Tables",}
pages/admin/gpg_key {'mv_logical_page' => "admin/tax",'third_menu' => "Commerce",}
pages/admin/group {'mv_logical_page' => "admin/access",'ui_class' => "Admin",}
pages/admin/import_table {'ui_class' => "Tables",}
pages/admin/index {'icon_name' => "icon_ic.gif",'ui_class' => "None",}
pages/admin/item_cross {'mv_logical_page' => "admin/merchandising",'ui_class' => "Merchandising",}
pages/admin/item_edit {'ui_style_edit' => "1",}
pages/admin/item_feature {'mv_logical_page' => "admin/merchandising",'ui_class' => "Merchandising",}
pages/admin/item_inventory {'ui_class' => "Items",}
pages/admin/item_option {'ui_class' => "Items",}
pages/admin/item_up {'mv_logical_page' => "admin/merchandising",'ui_class' => "Merchandising",}
pages/admin/layout {'mv_logical_page' => "admin/genfunction",'third_menu' => "Legacy",'top_template' => "UI_STD_HEAD",'bottom_template' => "UI_STD_FOOTER",'ui_class' => "Misc",}
pages/admin/layout_auto {'page_banner' => "Auto-populate Area and Cat tables",'mv_logical_page' => "admin/genfunction",'third_menu' => "Legacy",'page_title' => "Auto-populate Area and Cat tables",'top_template' => "UI_STD_HEAD",'bottom_template' => "UI_STD_FOOTER",'ui_class' => "Misc",}
pages/admin/menu_editor {'top_template' => "UI_STD_HEAD",'bottom_template' => "UI_STD_FOOTER",}
pages/admin/order_status {'mv_logical_page' => "admin/order",'third_menu' => "OrderView",'top_template' => "UI_STD_HEAD",'bottom_template' => "UI_STD_FOOTER",}
pages/admin/order_view {'mv_logical_page' => "admin/order",'third_menu' => "OrderView",'top_template' => "UI_STD_HEAD",'bottom_template' => "UI_STD_FOOTER",}
pages/admin/page_metaconfig {'icon_name' => "icon_config.gif",'ui_class' => "Admin",}
pages/admin/payment {'mv_logical_page' => "admin/tax",'third_menu' => "Commerce",}
pages/admin/preferences {'help_name' => "knar.main",}
pages/admin/reconfig {'help_name' => "reconfig",}
pages/admin/search_replace {'ui_class' => "Tables",}
pages/admin/ship {'mv_logical_page' => "admin/tax",'third_menu' => "Commerce",}
pages/admin/show_session {'mv_logical_page' => "admin/genconfig",}
pages/admin/spread {'icon_name' => "icon_stats.gif",'ui_class' => "Tables",}
pages/admin/survey/index {'third_menu' => "Surveys",}
pages/admin/survey/overall {'mv_logical_page' => "admin/survey/index",'ui_style_edit' => "1",'icon_name' => "icon_pages.gif",'help_name' => "survey.overall",'ui_class' => "Content",}
pages/admin/tax {'third_menu' => "Commerce",}
pages/admin/testpage {'page_content' => "This is some content!!!",'icon_name' => "icon_regen.gif",'page_title' => "This is a test virtual page",'top_template' => "UI_STD_HEAD",'bottom_template' => "UI_STD_FOOTER",'ui_class' => "Admin",}
pricing table Pricing Settings 2 pricing {'panel_shade' => "f",'panel_height' => "400",'ui_show_fields' => "sku
price_group
w2(align=right)
w5(align=right)
w10(align=right)
w25(align=right)
w100(align=right)",'ui_data_fields' => "=General
sku
price_group
products:price
products:wholesale
=Retail quantity pricing (if used)
q2 q5 q10
q25 q100
=Wholesale quantity pricing (if used)
w2 w5 w10
w25 w100
",}
pricing::price_group combo pricing Discount group price_group nullselect
pricing::q10 text 6 Qty 10
pricing::q100 text 6 Qty 100
pricing::q2 text 6 Qty 2
pricing::q25 text 6 Qty 25
pricing::q3 text
pricing::q5 text 6 Qty 5
pricing::w10 text 6 Qty 10
pricing::w100 text 6 Qty 100
pricing::w2 text 6 Qty 2
pricing::w25 text 6 Qty 25
pricing::w5 text 6 Qty 5
products table 50 Product information Qty price;pricing:q5:rn,Options;options:o_enable:r,Promo;merchandising:featured:r,Inventory;inventory:quantity:rn products {'include_form_expand' => "1",'restrict_allow' => "area var page",'include_form' => "<td class=clabel> Product images </td>
<td class=cdata>
<script>
function get_images (sku) {
var path = '[var IMAGE_DIR]';
var el;
var divit = document.getElementById('images_table');
divit.style.display= 'none';
el = document.getElementById('thumb_img');
el.src = path + '/thumb/' + sku + '_b.gif';
el = document.getElementById('item_img');
el.src = path + '/items/' + sku + '.gif';
divit.style.display= 'block';
}
</script>
<table id=images_table>
<tr class=rmarq>
<td>Image</td>
<td>Thumb</td>
</tr>
<tr>
<td><a href=\"javascript:mvpan_tripTab(2)\"><img border=0 id=item_img src=\"[var IMAGE_DIR]/items/[cgi item_id].gif\"></a></td>
<td><a href=\"javascript:mvpan_tripTab(2)\"><img border=0 id=thumb_img src=\"[var IMAGE_DIR]/thumb/[cgi item_id]_b.gif\"></A></td>
</tr>
</table>
</td>
",'ui_show_fields' => "sku
description(30.)
prod_group
category
price(%.2f align=right)",'ui_data_fields' => "=General
sku
description
prod_group category
comment
inactive
=Pricing
price
wholesale
=Images
image
thumb
image_large
=Shipping/Tax/Other
weight
nontaxable gift_cert",'panel_shade' => "f",'file_upload' => "1",'spread_width' => "8",'tabbed' => "1",'spread_height' => "25",'ui_special_add' => "Qty price;pricing:q5:rn,Options;options:o_enable:r,Promo;merchandising:featured:r,Inventory;inventory:quantity:rn",'left_width' => "20%",'include_before' => "price",'spread_fields' => "sku
description
price
comment
nontaxable",'spread_textarea_rows' => "4",'spread_meta' => "comment nontaxable",'view_from' => "prod_group",}
products::artist text 30 Artist
products::category combo 20 1 products =--none-- Category Enter in box for new category. category nullselect nullselect
products::color textarea 70 2
products::comment textarea 70 8 Detailed Description
products::description text 60 Short Description
products::gift_cert select =No,1=Yes Gift certificate handling? Yes if price should appear to be quantity
products::image imagehelper images/items Image [var SAMPLEURL] <A HREF="admin/upload_file?ui_image_preview=[var IMAGE_DIR]/items/_UI_VALUE_&ui_upload_binary=1&ui_upload_backup=0&mv_arg=images/items/_UI_VALUE_&ui_start_dir=items&ui_return_to=admin/item_edit&ui_return_to=item_id=_UI_KEY_&ui_preload=_UI_TABLE_:_UI_COLUMN_">upload...</A>
products::image_large imagehelper images/items Large Image [var SAMPLEURL] <A HREF="admin/upload_file?ui_image_preview=[var IMAGE_DIR]/items/_UI_VALUE_&ui_upload_binary=1&ui_upload_backup=0&mv_arg=images/items/_UI_VALUE_&ui_start_dir=items&ui_return_to=admin/item_edit&ui_return_to=item_id=_UI_KEY_&ui_preload=_UI_TABLE_:_UI_COLUMN_">upload...</A>
products::inactive yesno Inactive?
products::nontaxable select =Yes, 1=No Taxable?
products::price text 12 Product Price digits_dot
products::prod_group combo 20 products Product Group prod_group nullselect
products::related multiple 5 sku products Related items space-separated SKUs
products::sale_price text 12 Sale Price
products::size textarea 70 2
products::sku text SKU <script>
function poke_iframe (value) {
var term = 'products::sku::';
term += value;
var url = '[area href=admin/quick_question
form="
type=data
style=padding: 0; font-size: 10pt
yes=Key exists!
yes_style=color: red
no=Key is available
"]';
url += '&term=' + term;
var el = document.getElementById('the');
el.src = url;
el.load();
}
</script>
<iframe frameborder=0 height=24 width=200 id=the src="[area
href=admin/quick_question
form="
type=data
term=products::sku::[cgi item_id]
style=padding: 0; font-size: 10pt
yes=Key exists!
yes_style=color: red
no=Key is available
"]">
Verify that SKU is unique!
</iframe>
{ extra => 'onChange="poke_iframe(this.value)" '}
products::thumb imagehelper 30 images/thumb Thumb nullselect [var SAMPLEURL] <A HREF="admin/upload_file?ui_image_preview=[var IMAGE_DIR]/thumb/_UI_VALUE_&ui_upload_binary=1&ui_upload_backup=0&mv_arg=images/thumb/_UI_VALUE_&ui_start_dir=items&ui_return_to=admin/item_edit&ui_return_to=item_id=_UI_KEY_&ui_preload=_UI_TABLE_:_UI_COLUMN_">upload...</A>
products::title text 30 Title namecase
products::weight text 4 Weight in pounds digits_dot
products::wholesale text 12 Dealer Price
promotion table {'panel_shade' => "f",'ui_show_fields' => "code
start_date
finish_date
discount_type
discount",'ui_sort_field' => "start_date",'ui_sort_option' => "r",}
promotion::discount text Discount Enter either a percent amount off like: 10%<br>
Or a dollar amount off: 10.00
promotion::discount_type select sku,description products ENTIRE_ORDER=Percent or dollars off ENTIRE ORDER,ALL_ITEMS=Percent off ALL ITEMS Promotion type Enter a SKU to give discount on one item 1
promotion::finish_date date Expires date_change
promotion::inactive yesno Inactive
promotion::merchandising::blurb_begin textarea 70 2 Teaser beginning text for feature display
promotion::merchandising::blurb_end textarea 70 2 Closer end text for feature display
promotion::note textarea 50 5 Notes for receipt
promotion::start_date date Start midnight of date_change
promotion::timed yesno Timed promotion?
shipping table description shipping
state table code
country
state
name
tax
tax_name State/Province Settings (tax, etc) state
state::state text 4 word
survey table survey {'panel_shade' => "f",'panel_height' => "600",'tabbed' => "1",'left_width' => "200",'table_width' => "900",'panel_width' => "900",'ui_show_fields' => "code
label
type",'tab_width' => "200",'ui_data_fields' => "=Question
code
label
type
options
extended.check
width
height
filter
=Explanation/Formatting
help
=Graphing
extended.graph_enable
extended.graph_type
extended.graph_label
extended.graph_low_water
extended.graph_width
extended.graph_height
extended.graph_title
",'ui_sort_combined' => "code,label",}
survey::code hidden_text 70 2 Survey::Field
survey::extended.check select =none,required=Required answer,state=US state,province=Canadian province,state_province=US state or Canada province,postcode=US or Canada postal code,phone=Like a phone number,us_phone_with_area=US phone (with area code),email=An email address,luhn=Pass LUHN-10 check Consistency check
survey::extended.graph_enable yesno Enable Graph Requires GD::Graph module installed.
survey::extended.graph_height text 6 Height of chart image Default 300.
survey::extended.graph_label textarea 30 8 Graph Labels Entered in option format, i.e.
<blockquote>
data_value=Label for Graph
</blockquote>
One per line. Any values not listed will be placed under "Other" label. line2options options2line
survey::extended.graph_low_water text 6 Low water for "other" The number of responses which should trigger placement in "Other" category. digits
survey::extended.graph_title text 50 Graph Title Default is question text.
survey::extended.graph_type select pie=Pie Chart,area=Area Chart Graph Type
survey::extended.graph_width text 6 Width of chart image Default 400.
survey::filter hidden_text my $wid = $CGI->{type};
if($wid =~ /fillin/) {
return 'nullselect';
}
elsif ($wid =~ /checkbox/) {
return 'checkbox null_to_comma';
}
return ''; calculated.mv_metadata.options.survey::filter
survey::height text 3 Height For option selects and text boxes
survey::help textarea 80 5 Explanation Text Explanation text to be shown above question
survey::label textarea 60 2 Question
survey::options textarea 100 10 Choices Choices for option types line2options options2line { default => '=-- select one --' }
survey::type select select=Simple select,
fillin_combo=Options with "other" text input,
radio_left=Select one (radio),
checkbox_left=Select any (checkbox),
textarea=Text Box,
text=One-line text Answer type
survey::width text 3 Width Applies to all
table-editor {'widget_cell_class' => "cwidget",'help_cell_class' => "chelp",'next_button_class' => "s3",'spacer_row_class' => "rnorm",'widget_class' => "s3",'break_row_class' => "rbreak",'label_cell_class' => "clabel",'output_map' => "0",'reset_button_class' => "s3",'panel_shade' => "f",'cancel_button_class' => "s3",'spacer_row_style' => "height: 8px; border-top: 0; border-left: 0; border-right: 0",'button_delete' => "1",'widget_cell_style' => "vertical-align: top",'delete_button_class' => "s3",'data_cell_class' => "cdata",'image_meta' => "1",'data_row_class' => "rnorm",'back_button_class' => "s3",}
tracking::transactions table tracking transactions {'panel_shade' => "f",'ui_show_fields' => "code
username
lname
nitems
total_cost
city
state",'spread_height' => "50",'ui_sort_field' => "tracking_number",'spread_meta' => "tracking_number",'spread_fields' => "code
lname
city
state
country
tracking_number",}
transactions table 100 transactions 1 {'panel_height' => "500",'panel_shade' => "f",'include_form' => "<td class=clabel>
Recompute?
</td>
<td class=cdata>
<input type=checkbox name=mv_cleanup value=recompute_transaction> Totals <input type=checkbox name=recompute_tax value=1> Tax <B>Warning: this will not work if your prices depend on options and you change them!
<input type=hidden name=mv_return_table value=transactions>
</td>
",'link_before' => "nitems",'tabbed' => "1",'ui_sort_field' => "order_number",'left_width' => "120",'link_table' => "orderline",'include_before' => "total_cost",'table_width' => "800",'link_sort' => "code",'ui_show_fields' => "code
username(lookup.userdb.fname)
nitems
total_cost",'link_key' => "order_number",'link_fields' => "code order_number sku quantity description price subtotal",'ui_data_fields' => "=Transaction info
order_number
order_date update_date
status
nitems
subtotal
salestax
shipping handling
total_cost
=General
code
store_id
username
comments
order_ymd order_wday
archived deleted complete
shipmode
payment_method
avs
po_number
order_id
=Shipping
fname lname
company
address1
address2
city state zip
country
phone_day phone_night fax
email
=Billing
b_fname b_lname
b_company
b_address1
b_address2
b_city b_state b_zip
b_country b_phone
=Tracking info
affiliate campaign
currency_locale
parent",'link_label' => "Ordered Items",}
transactions::archived yesno Archived
transactions::auth_code text 16 Authorization
transactions::deleted yesno Deleted
transactions::order_id text 32 Order ID
transactions::status select pending=Pending, shipped=Shipped, partial=Partially shipped, backorder=Back ordered, credit=Waiting for credit check, canceled=Canceled nullselect
ui_component::mv_metadata table ui_component mv_metadata {'ui_data_fields' => "=Main
code
label
default
type
width
height
options
filter
=Database lookup
lookup
field
db
=Help and misc
help
help_url
prepend
append
pre_filter",'table_width' => "80%",'left_width' => "30%",}
ui_component::mv_metadata::append textarea 60 5 Append HTML <SMALL>HTML to be appended to the widget.
Will substitute in the macros _UI_TABLE_, _UI_COLUMN_,
_UI_KEY, and _UI_VALUE_, and will resolve relative links
with absolute links.</SMALL>
ui_component::mv_metadata::attribute text 20 Column name Do not set this.
ui_component::mv_metadata::code text 30 Identifier identifier for this control, will be placed with [control identifier] word lc
ui_component::mv_metadata::db combo tables Lookup Table Table for an external lookup. nullselect
ui_component::mv_metadata::default text 40 Default value
ui_component::mv_metadata::field move_combo 30 1 columns:: Field for lookup Can be two comma separated fields, in which case second is used as the label text. Both must be in the same table.
ui_component::mv_metadata::filter move_combo 30 1 filters Filter(s) Filters which can transform or constrain your data. Some widgets
require filters.
ui_component::mv_metadata::height text 4 Height SIZE for SELECT<BR>
ROWS for TEXTAREA<BR> digits
ui_component::mv_metadata::help textarea 70 4 Help This help text.
ui_component::mv_metadata::help_url text 70 4 Help URL A URL which will provide more help
ui_component::mv_metadata::label text 40 Label
ui_component::mv_metadata::lookup text 20 Lookup select <SMALL>Whether lookup is performed to get options for a select type.
If nothing is in the <B>field</B>, then used as the name of the field to lookup
in. Use <B>Lookup Table</B> if you want to look up in a different table.</SMALL>
ui_component::mv_metadata::lookup_exclude text 20 Lookup exclude <B>ADVANCED</B>: regular expression that excludes certain keys from the lookup.
ui_component::mv_metadata::name text 20 Variable name Normally left empty, changes variable name to send in form.
ui_component::mv_metadata::options textarea 20 8 Options Options for SELECT/COMBO types (if lookup, prepended). Entered in the
interchange option format:<P>
<blockquote>
value=label*</blockquote> option_format
ui_component::mv_metadata::outboard text 30 Directory Select directory for image listing widget.
ui_component::mv_metadata::prepend textarea 60 5 Prepend HTML <SMALL>HTML to be prepended to the widget.
Will substitute in the macros _UI_TABLE_, _UI_COLUMN_,
_UI_KEY, and _UI_VALUE_, and will resolve relative links
with absolute links.</SMALL>
ui_component::mv_metadata::type select text=Text entry*,
textarea=Textarea,
select=Select box,
yesno=Yes/No (Yes=1),
noyes=No/Yes (No=1),
multiple=Multiple Select,
combo=Combo Select,
reverse_combo=Reverse Combo,
move_combo=Combo move,
display=Text of option,
hidden_text=Hidden (show text),
radio=Radio box,
radio_nbsp=Radio (nbsp),
checkbox=Checkbox,
check_nbsp=Checkbox (nbsp),
imagedir=Image listing,
imagehelper=Image upload,
date=Date selector,
value=Value,
option_format=Option formatter,
show=Show all options Widget type Select the basic display type for the field.
ui_component::mv_metadata::ui_body textarea 80 30 Component Body digits
ui_component::mv_metadata::ui_body_text textarea 80 30 Component Body
ui_component::mv_metadata::width text 4 Width SIZE for TEXT<BR>
COLS for TEXTAREA<BR>
Label limit for SELECT digits
userdb table username,company,lname,fname Users userdb {'tab_horiz_offset' => "",'tab_vert_offset' => "",'panel_height' => "400",'file_upload' => "",'tabbed' => "1",'left_width' => "",'table_width' => "800",'tab_height' => "",'panel_width' => "800",'tab_width' => "",'ui_data_fields' => "=Name and Contact Info
phone_day
phone_night
email
fax
fax_order
username
password
email_copy
mail_list
mod_time
inactive
=Shipping Info
company
fname
lname
address1
address2
address3
city
state
zip
country
mv_shipmode
=Billing Info
b_company
b_fname
b_lname
b_address1
b_address2
b_address3
b_city
b_state
b_zip
b_country
b_phone
=Order Info
project_id
account_id
credit_limit
dealer
price_level
order_dest
mv_credit_card_type
mv_credit_card_exp_month
mv_credit_card_exp_year
order_numbers
=Repositories
s_nickname
address_book
b_nickname
accounts
p_nickname
preferences
carts
=Permissions
owner
file_acl
db_acl
acl
",}
userdb::address1 text 40 Address
userdb::address2 text 40
userdb::b_address1 text 40 Billing Address
userdb::b_address2 text 40
userdb::b_city text 40 Billing City
userdb::b_company text 30 Billing Company If different
userdb::b_country text 10 Billing Country
userdb::b_fname text 40 Billing First Name
userdb::b_lname text 40 Billing Last Name
userdb::b_phone text Billing Phone
userdb::b_state text 10 Billing State
userdb::b_zip text 10 Billing Postcode
userdb::city text 40 City
userdb::comment text Comments by user
userdb::company text 40 Company
userdb::country text 10 Country
userdb::dealer yesno =No,1=Yes Dealer
userdb::email text 40 Email Address
userdb::email_copy select =No, 1=Yes
userdb::fax_order select =Credit Card*, 1=Fax or Mail, 2=Purchase order, 3=COD Payment method
userdb::feedback textarea 70 8
userdb::fname text 30 First Name
userdb::inactive yesno Inactive
userdb::lname text 30 Last Name
userdb::mail_list check_nbsp offer=Special Offers, newsletter=Newsletter, alert=Alerts and Recalls, upgrade=Upgrades null_to_space
userdb::mod_time text 20
userdb::phone_day text 30 Daytime Phone
userdb::phone_night text 30 Home Phone
userdb::price_level select =Retail,dealer=Dealer,distributor=Distributor Price level
userdb::project_id textarea Purchase Order No.
userdb::state text 10 State
userdb::subject text Subject
userdb::username hidden_text 16 Username no_white
userdb::zip text 10 Postcode uc word
variable table variable 1 {'ui_meta_specific' => "1",'panel_shade' => "f",'spread_height' => "25",'spread_meta' => "Variable pref_group",'ui_sort_combined' => "pref_group,code",}
variable::Variable text 60 Preference value
variable::Variable::ADDRESS text Company Address
variable::Variable::CATALOG_STATIC select No, Yes Enabled for users? <b>Yes</b> will cause Interchange to generate static links where possible.<BR><BR>
<b>No</b> disables generation of static links for users; you can still send a search engine to the statically generated URL and it will spider the static links on the page.
variable::Variable::CGI_URL text CGI URL URL that calls Interchange, without the server name
variable::Variable::CHECK_ACCEPTED select 0=No, 1=Yes
variable::Variable::COD_ACCEPTED select 0=No, 1=Yes
variable::Variable::CREDIT_CARDS_ACCEPTED checkbox visa=Visa, mc=Mastercard, discover=Discover, amex=American Express null_to_space
variable::Variable::CUSTOMER_VIEW_DEALER yesno Show dealer info Set to Yes to show dealer status on customer view page
variable::Variable::CUSTOMER_VIEW_LARGE yesno Query by example view Select if you have a very large customer database, to prevent building huge lists of customers every time you access the customer tab.
variable::Variable::DOCROOT text Document root This is the directory where your HTML originates. It should match the DocumentRoot
of your HTTP server. http://www.apache.org/docs/mod/core.html#documentroot
variable::Variable::ENCRYPTOR text 80 Encryption command Normally should not be set if you use GPG and your key file is in your Interchange user's home directory
variable::Variable::FORUM_ANON_NAME text 20 Forum Anonymous Name Name to use when a user posts anonymously to a forum
variable::Variable::FORUM_EMAIL_NOTIFY text 50 Forum notify email An email address to send copies of user comments on products.
variable::Variable::FORUM_PRODUCTS yesno Enable Product Forums This enables user comments on products in the flypage. Only enabled by default if using MySQL or Postgres, as it will not work well on DBM and is not tested on Oracle.
variable::Variable::MULTIORDER select =No,1=Yes Whether users should by default have multipage order forms.
variable::Variable::MV_PAYMENT_HOST text 64 Payment Host Many payment processors allow setting the host that the transaction
is sent to, but most provide a default. This need not be set for most gateways.
variable::Variable::MV_PAYMENT_ID text 20 Payment Gateway ID The account ID for your payment gateway.
variable::Variable::MV_PAYMENT_MODE select =none,
authorizenet=Authorize.net,
boa=Bank of America,
ccvs=CCVS,
echo=ECHO,
itransact=iTransact,
mcve=MCVE,
skipjack=Skipjack IC,
signio=Verisign Payflow Pro,
testpayment=TestPayment module,
tclink=Trust Commerce,
wellsfargo=Wells Fargo
Payment Gateway Which payment processor module you wish to use. You always have to sign up with your merchant bank and their credit card processor to enable this, without fail. The TestPayment module is just for testing purposes.
<p>
See the documentation in the associated module for how to implement.
variable::Variable::MV_PAYMENT_REFERER text 40 Payment Referer Some payment systems (notably AuthorizeNet) want to know that the
REFERER value is correct. Most don't need this.
variable::Variable::MV_PAYMENT_SECRET text 20 Payment Secret Some payment gateways require a password or "secret". Many don't,
so this may not be necessary.
variable::Variable::MYSQL select 0=No, 1=Yes
variable::Variable::ORDER_VIEW_LARGE yesno Query by example view Select when you have large numbers of pending orders to display, to prevent long startup times when clicking the Orders tab.
variable::Variable::PGP_KEY gpg_keys Key selector [page admin/gpg_key]Add a GPG/PGP key</A>
variable::Variable::POSTAL_ACCEPTED select =No,
1=Yes Accept postal orders?
variable::Variable::PO_ACCEPTED select 0=No, 1=Yes
variable::Variable::SECURE_ENABLE yesno Enable Secure URL?
variable::Variable::SETTLE_TRANSACTION yesno Settle transactions If you ship hard goods and only do an authorization at order time, you may choose to settle the transaction automatically via the Order manager. This needs to be set to Yes to enable this.
variable::Variable::STATIC_LOGGED select No, Yes Enabled for logged in users? <b>Yes</b> will cause Interchange to generate static links where possible, even when users are logged in.
variable::Variable::STYLE select foundation=Foundation Red,purpleyellow=Purple and Yellow,grayorange=Gray and Orange,fixedwidth=Fixed Width,greens=Green,grayscale=Gray,blueyellow=Blue and Yellow Theme
variable::Variable::TAXFIELD select state=Simple state-based,
multi=State/Province and VAT Type of tax You must <b>apply changes</b> after changing this.
variable::Variable::UI_DBCONFIG yesno Offer Database Config Link Shows Database configuration link on Tables main manu
variable::Variable::UI_IMAGE_META yesno New table display style Image meta llink
variable::Variable::UI_IMAGE_META-_NULL_-UI_META_LINK yesno New table display style
variable::Variable::UI_ITEM_EXPUNGE text 60 Item expunge tables The tables that should have the SKU removed when you DELETE ITEM from the items menu.
variable::Variable::UI_META_LINK select 0=No, 1=Yes Meta edit links Determines whether enabled by default. They can be turned on in Preferences.
variable::Variable::UI_SECURE yesno Determines whether to force UI into secure mode or not.
variable::code text Variable name
variable::pref_group combo 20 Preferences area pref_group nullselect
variant::inventory::quantity text 8 On hand Inventory of this variant.
variant::options::code text 20 SKU
variant::options::description textarea 60 3 Variant description
variant::options::o_height text 4 Height of Widget Height of widget (if applicable)
variant::options::o_width text 4 Width of widget
variant::options::price text 12 Price Price of this variant.
variant::options::weight text 8 Weight Weight for this variant.
variant::options::wholesale text 12 Dealer price
wiki::wikitext textarea 80 24 Body
1.1 interchange/dist/lib/UI/pages/include/templates/ui_type1
rev 1.1, prev_rev 1.0
Index: ui_type1
===================================================================
<html>
<html[scratch ui_language_direction]>
<head>
<title>[scratch page_title]</title>
[tmp window_name][tag time]%m%d%H%M%S[/tag][/tmp]
<script language="JavaScript">
<!--
function open_help(url) {
if(url == undefined)
url = '[area href="[either]@_UI_HELP_URL_@[or]@_UI_BASE_@/help[/either]" form="topic=[scratch help_name]"]';
opts="top=0,left=0,scrollbars,status=no,menubar=no,location=yes,toolbar=no,resizable=yes,fullsize=no,width=__UI_HELP_WIDTH__,height=__UI_HELP_HEIGHT__";
window.open(url, 'Help', opts);
}
function checkAll(form,what,uncheck) {
var i, n, check;
n = form.elements[what].length;
if (!n) {
if (uncheck == 1) {
form.elements[ what ].checked=false;
} else {
form.elements[ what ].checked=true;
}
} else {
var checkval;
if (uncheck == 1) { checkval=false; } else { checkval=true; }
for (i=0; i < n; i++) {
check = form.elements[ what ][ i ];
check.checked = checkval;
}
}
}
function addItem(selector, receptor, joiner) {
if (joiner == null) { joiner = " "; } else { joiner = "\n"; }
if (receptor.value != '') receptor.value = receptor.value + joiner;
if (selector[selector.selectedIndex].value != null) {
receptor.value = receptor.value + selector[selector.selectedIndex].value;
} else {
if (selector[selector.selectedIndex].text != null) {
receptor.value = receptor.value + selector[selector.selectedIndex].text;
}
}
return true;
}
//-->
</SCRIPT>
<link href="__UI_IMG__interchange.css" rel="stylesheet" type="text/css">
[if value personal_css]<style>[value personal_css]</style>[/if]
{{HEADER}}
[scratchd meta_header]
</head>
<body [scratch ui_body_extra] marginwidth="0" marginheight="0">
<table height="100%" width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="121"><a href="[area admin/index]"><img src="logo.gif" width="121" height="32" border=0></A></td>
<td width="100%" align=right valign=bottom>
<a href="[area admin/index]"><img border=0 width=100 height=29 src="bg.gif"></a>
</td>
{{FIXED_MENU}}
</tr>
</table>
</td>
</tr>
<tr>
<td height=15>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<!-- FIRST LEVEL TABS -->
<tr>
{{TOP_TABS}}
<td width="100%" style="vertical-align:bottom;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="lightshade"><img src="bg.gif" height="1"></td></tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class=block1 height="100%">
<table width="100%" border=0 cellspacing=0 cellpadding=0 height="100%">
<tr>
<td class=lightshade><img src="bg.gif" width=1></td>
<td width="100%" class=block1inner height="100%">
<table width="100%" border=0 cellspacing=0 cellpadding=0 height="100%">
<tr>
<td colspan=3>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr>
<td><img src="bg.gif" height=1></td>
<td width="100%" rowspan=2 valign=bottom align=right>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr>
<td align=right><img src="bg.gif" width=1 height=1></td>
</tr>
<tr>
{{SEARCH_BOX?}}
<td style="
text-align: right;
padding-right: 5px;
">
{{SEARCH_BOX}}
</td>
{{/SEARCH_BOX?}}
{{SEARCH_BOX:}}
<td height=3><img src="bg.gif" height=3></td>
{{/SEARCH_BOX:}}
</tr>
<tr>
<td class=lightshade><img src="bg.gif" height=1></td>
</tr>
</table>
</td>
</tr>
<tr>
<td valign=bottom>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<!-- SECOND LEVEL TABS -->
<tr>
{{SECOND_TABS}}
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{TOP_OF_FORM}}
{{HIDDEN_FIELDS}}
<tr>
<td width=1 class=lightshade><img src="bg.gif" width=1 height=1></td>
<td width="100%" class=block3inner>
<table width="100%" border=0 cellspacing=0 cellpadding=1>
<!-- TABLE TITLE ROW -->
<tr>
<td>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr>
<td class=rtitle><img src="bg.gif" width=29 height=1></td>
<td class=rtitle><img src="bg.gif" width=1 height=1></td>
</tr>
<tr>
<td width=29 height=22 align=center class=rtitle><a href="[area href='admin/page_metaconfig' form='page=[var MV_PAGE 1]']" title="[L]Page properties[/L]"><img src="[either][scratch icon_name][or]icon_error.gif[/either]" border=0></a></td>
<td class=rtitle>[either][scratch page_banner][or][scratch page_title][/either]</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height=4><img src="bg.gif" width=1 height=4></td>
</tr>
<!-- THIRD_TABS -->
<tr>
<td valign=bottom style="padding-bottom: 0">
<table cellpadding=0 cellspacing=2 width="100%">
<tr>
<td height=4><img src="bg.gif" width=1 height=4></td>
<td align=right nowrap width="100%" rowspan=2>
<!-- TOP BUTTONS -->
{{TOP_BUTTONS}}
</td>
</tr>
<tr>
<td>
<table border=0 cellspacing=0 cellpadding=0>
<!-- THIRD LEVEL TABS -->
<tr>
{{THIRD_TABS}}
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="darkshade">
<table width="100%" border="0" cellspacing="0" cellpadding="7">
<tr>
<td class="workarea">
[if warnings]
<blockquote class=cmessage>
[warnings]
</blockquote>
[/if]
[if errors]
<blockquote class=cerror>
[error show_var=1 all=1 show_error=1 joiner="<br>"]
</blockquote>
[/if]
{{:DEFAULT}}
</td>
</tr>
</table>
</td>
</tr>
{{BOTTOM_BUTTONS?}}
<tr>
<td height="4" align=right>{{EXTRA_BUTTONS}} {{BOTTOM_BUTTONS}}</td>
</tr>
{{/BOTTOM_BUTTONS?}}
{{BOTTOM_BUTTONS:}}
<tr>
<td height="4"><img src="bg.gif" width="1" height="4"></td>
</tr>
{{/BOTTOM_BUTTONS:}}
</table>
</td>
<td width="1" class="darkshade"><img src="bg.gif" width="1" height="1"></td>
</tr>
{{BOTTOM_OF_FORM}}
<tr>
<td colspan="3" class="darkshade"><img src="bg.gif" width="1" height="1"></td>
</tr>
<!-- FOOTER -->
<tr>
<td colspan="3" class="darkshade"><img src="bg.gif" width="1" height="1"></td>
</tr>
<tr>
<td height="28" class="footer" colspan=2>
<a href="@_INTERCHANGE_URL_@" class=footer>
Interchange
</A>
[version] © 2002-2003 Interchange Development Group
Username:
<a href="[area href='__UI_BASE__/access_permissions' form='user_id=[data session username]']" class=footer>[data session username]</A>
[time]%e %b %Y %H:%M:%S[/time]
StoreID: <a href="[calc]$Config->{VendURLOriginal}[/calc]" class=footer>[calc]$Config->{CatalogName}[/calc]</A>
([var MV_PAGE 1])
</td>
<td align=right class=footer>
</td>
</tr>
</table>
</td>
<td class="darkshade"><img src="bg.gif" width="1"></td>
</tr>
<tr>
<td colspan=3 class=darkshade><img src="bg.gif" width=1></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
1.1 interchange/dist/lib/UI/pages/include/templates/ui_type2
rev 1.1, prev_rev 1.0
Index: ui_type2
===================================================================
<html>
<html[scratch ui_language_direction]>
<head>
<title>[scratch page_title]</title>
[tmp window_name][tag time]%m%d%H%M%S[/tag][/tmp]
<script language="JavaScript">
<!--
function open_help(url) {
if(url == undefined)
url = '[area href="[either]@_UI_HELP_URL_@[or]@_UI_BASE_@/help[/either]" form="topic=[scratch help_name]"]';
opts="top=0,left=0,scrollbars,status=no,menubar=no,location=yes,toolbar=no,resizable=yes,fullsize=no,width=__UI_HELP_WIDTH__,height=__UI_HELP_HEIGHT__";
window.open(url, 'Help', opts);
}
function checkAll(form,what,uncheck) {
var i, n, check;
n = form.elements[what].length;
if (!n) {
if (uncheck == 1) {
form.elements[ what ].checked=false;
} else {
form.elements[ what ].checked=true;
}
} else {
var checkval;
if (uncheck == 1) { checkval=false; } else { checkval=true; }
for (i=0; i < n; i++) {
check = form.elements[ what ][ i ];
check.checked = checkval;
}
}
}
function addItem(selector, receptor, joiner) {
if (joiner == null) { joiner = " "; } else { joiner = "\n"; }
if (receptor.value != '') receptor.value = receptor.value + joiner;
if (selector[selector.selectedIndex].value != null) {
receptor.value = receptor.value + selector[selector.selectedIndex].value;
} else {
if (selector[selector.selectedIndex].text != null) {
receptor.value = receptor.value + selector[selector.selectedIndex].text;
}
}
return true;
}
//-->
</SCRIPT>
<link href="__UI_IMG__interchange.css" rel="stylesheet" type="text/css">
[if value personal_css]<style>[value personal_css]</style>[/if]
[scratchd meta_header]
</head>
<body [scratch ui_body_extra] marginwidth="0" marginheight="0">
<table height="100%" width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="121"><a href="http://www.icdevgroup.org/" target=icdevgroup><img src="logo.gif" width="121" height="32" border=0></A></td>
<td width="100%" align=right valign=bottom>
<a href="[area admin/index]"><img border=0 width=300 height=29 src="bg.gif"></a>
</td>
{{FIXED_MENU}}
</tr>
</table>
</td>
</tr>
<tr>
<td height=15>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<!-- FIRST LEVEL TABS -->
<tr>
{{TOP_TABS}}
<td width="100%" style="vertical-align:bottom;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="lightshade"><img src="bg.gif" height="1"></td></tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class=block1 height="100%">
<table width="100%" border=0 cellspacing=0 cellpadding=0 height="100%">
<tr>
<td class=lightshade><img src="bg.gif" width=1></td>
<td width="100%" class=block1inner height="100%">
<table width="100%" border=0 cellspacing=0 cellpadding=0 height="100%">
<tr>
<td colspan=3>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr>
<td><img src="bg.gif" height=1></td>
<td width="100%" rowspan=2 valign=bottom align=right>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr>
<td align=right><img src="bg.gif" width=1 height=1></td>
</tr>
<tr>
{{SEARCH_BOX?}}
<td style="
text-align: right;
padding-right: 5px;
">
{{SEARCH_BOX}}
</td>
{{/SEARCH_BOX?}}
{{SEARCH_BOX:}}
<td height=3><img src="bg.gif" height=3></td>
{{/SEARCH_BOX:}}
</tr>
<tr>
<td class=lightshade><img src="bg.gif" height=1></td>
</tr>
</table>
</td>
</tr>
<tr>
<td valign=bottom>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<!-- SECOND LEVEL TABS -->
<tr>
{{SECOND_TABS}}
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{TOP_OF_FORM}}
{{HIDDEN_FIELDS}}
<tr>
<td width=1 class=lightshade><img src="bg.gif" width=1 height=1></td>
<td width="100%" class=block3inner>
<table width="100%" border=0 cellspacing=0 cellpadding=1>
<!-- TABLE TITLE ROW -->
<tr>
<td>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr>
<td class=rtitle><img src="bg.gif" width=29 height=1></td>
<td class=rtitle><img src="bg.gif" width=1 height=1></td>
</tr>
<tr>
<td width=29 height=22 align=center class=rtitle>[if scratch icon_name]<img src="[scratch icon_name]" width=16 height=14>[else] [/else][/if]</td>
<td class=rtitle>[either][scratch page_banner][or][scratch page_title][/either]</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height=4><img src="bg.gif" width=1 height=4></td>
</tr>
<!-- THIRD_TABS -->
<tr>
<td valign=bottom>
<table cellpadding=0 cellspacing=2 width="100%">
<tr>
<td>
<table border=0 cellspacing=0 cellpadding=0>
<!-- THIRD LEVEL TABS -->
<tr>
{{THIRD_TABS}}
</tr>
</table>
</td>
<td align=right nowrap width="100%">
{{SECTION_BUTTONS_TOP}}
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="darkshade">
<table width="100%" border="0" cellspacing="0" cellpadding="7">
<tr>
<td class="workarea">
{{:DEFAULT}}
</td>
</tr>
</table>
</td>
</tr>
{{SECTION_BUTTONS_BOTTOM?}}
<tr>
<td height="4" align=right>{{SECTION_BUTTONS_BOTTOM}}</td>
</tr>
{{/SECTION_BUTTONS_BOTTOM?}}
{{SECTION_BUTTONS_BOTTOM:}}
<tr>
<td height="4"><img src="bg.gif" width="1" height="4"></td>
</tr>
{{/SECTION_BUTTONS_BOTTOM:}}
</table>
</td>
<td width="1" class="darkshade"><img src="bg.gif" width="1" height="1"></td>
</tr>
{{BOTTOM_OF_FORM}}
<tr>
<td colspan="3" class="darkshade"><img src="bg.gif" width="1" height="1"></td>
</tr>
<!-- FOOTER -->
<tr>
<td colspan="3" class="darkshade"><img src="bg.gif" width="1" height="1"></td>
</tr>
<tr>
<td height="28" class="footer" colspan=2>
<a href="@_INTERCHANGE_URL_@" class=footer>
Interchange
</A>
[version] © 2002-2003 Interchange Development Group
Username:
<a href="[area href='__UI_BASE__/access_permissions' form='user_id=[data session username]']" class=footer>[data session username]</A>
[time]%e %b %Y %H:%M:%S[/time]
StoreID: <a href="[calc]$Config->{VendURLOriginal}[/calc]" class=footer>[calc]$Config->{CatalogName}[/calc]</A>
([var MV_PAGE 1])
</td>
<td align=right class=footer>
</td>
</tr>
</table>
</td>
<td class="darkshade"><img src="bg.gif" width="1"></td>
</tr>
<tr>
<td colspan=3 class=darkshade><img src="bg.gif" width=1></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
1.1 interchange/dist/lib/UI/pages/include/templates/ui_type3
rev 1.1, prev_rev 1.0
Index: ui_type3
===================================================================
<html>
<html[scratch ui_language_direction]>
<head>
<title>[scratch page_title]</title>
[tmp window_name][tag time]%m%d%H%M%S[/tag][/tmp]
<script language="JavaScript">
<!--
function open_help(url) {
if(url == undefined)
url = '[area href="[either]@_UI_HELP_URL_@[or]@_UI_BASE_@/help[/either]" form="topic=[scratch help_name]"]';
opts="top=0,left=0,scrollbars,status=no,menubar=no,location=yes,toolbar=no,resizable=yes,fullsize=no,width=__UI_HELP_WIDTH__,height=__UI_HELP_HEIGHT__";
window.open(url, 'Help', opts);
}
function checkAll(form,what,uncheck) {
var i, n, check;
n = form.elements[what].length;
if (!n) {
if (uncheck == 1) {
form.elements[ what ].checked=false;
} else {
form.elements[ what ].checked=true;
}
} else {
var checkval;
if (uncheck == 1) { checkval=false; } else { checkval=true; }
for (i=0; i < n; i++) {
check = form.elements[ what ][ i ];
check.checked = checkval;
}
}
}
function addItem(selector, receptor, joiner) {
if (joiner == null) { joiner = " "; } else { joiner = "\n"; }
if (receptor.value != '') receptor.value = receptor.value + joiner;
if (selector[selector.selectedIndex].value != null) {
receptor.value = receptor.value + selector[selector.selectedIndex].value;
} else {
if (selector[selector.selectedIndex].text != null) {
receptor.value = receptor.value + selector[selector.selectedIndex].text;
}
}
return true;
}
//-->
</SCRIPT>
<link href="__UI_IMG__interchange.css" rel="stylesheet" type="text/css">
[if value personal_css]<style>[value personal_css]</style>[/if]
{{HEADER}}
[scratchd meta_header]
</head>
<body [scratch ui_body_extra] marginwidth="0" marginheight="0">
<table height="100%" width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="121"><a href="http://www.icdevgroup.org/" target=icdevgroup><img src="logo.gif" width="121" height="32" border=0></A></td>
<td width="100%" align=right valign=bottom>
<a href="[area admin/index]"><img border=0 width=300 height=29 src="bg.gif"></a>
</td>
{{FIXED_MENU}}
</tr>
</table>
</td>
</tr>
<tr>
<td height=15>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<!-- FIRST LEVEL TABS -->
<tr>
{{TOP_TABS}}
<td width="100%" style="vertical-align:bottom;">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr><td class="lightshade"><img src="bg.gif" height="1"></td></tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class=block1 height="100%">
<table width="100%" border=0 cellspacing=0 cellpadding=0 height="100%">
<tr>
<td class=lightshade><img src="bg.gif" width=1></td>
<td width="100%" class=block1inner height="100%">
<table width="100%" border=0 cellspacing=0 cellpadding=0 height="100%">
<tr>
<td colspan=3>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr>
<td><img src="bg.gif" height=1></td>
<td width="100%" rowspan=2 valign=bottom align=right>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr>
<td align=right><img src="bg.gif" width=1 height=1></td>
</tr>
<tr>
{{SEARCH_BOX?}}
<td style="
text-align: right;
padding-right: 5px;
">
{{SEARCH_BOX}}
</td>
{{/SEARCH_BOX?}}
{{SEARCH_BOX:}}
<td height=3><img src="bg.gif" height=3></td>
{{/SEARCH_BOX:}}
</tr>
<tr>
<td class=lightshade><img src="bg.gif" height=1></td>
</tr>
</table>
</td>
</tr>
<tr>
<td valign=bottom>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<!-- SECOND LEVEL TABS -->
<tr>
{{SECOND_TABS}}
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{TOP_OF_FORM}}
{{HIDDEN_FIELDS}}
<tr>
<td width=1 class=lightshade><img src="bg.gif" width=1 height=1></td>
<td width="100%" class=block3inner>
<table width="100%" border=0 cellspacing=0 cellpadding=1>
<!-- TABLE TITLE ROW -->
<tr>
<td>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr>
<td class=rtitle><img src="bg.gif" width=29 height=1></td>
<td class=rtitle><img src="bg.gif" width=1 height=1></td>
</tr>
<tr>
<td width=29 height=22 align=center class=rtitle><a href="[area href='admin/page_metaconfig' form='page=[var MV_PAGE 1]']" title="[L]Page properties[/L]"><img src="[either][scratch icon_name][or]icon_error.gif[/either]" width=16 height=14 border=0></a></td>
<td class=rtitle>[either][scratch page_banner][or][scratch page_title][/either]</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height=4><img src="bg.gif" width=1 height=4></td>
</tr>
<!-- THIRD_TABS -->
<tr>
<td valign=bottom style="padding-bottom: 0">
<table cellpadding=0 cellspacing=2 width="100%">
<tr>
<td height=4><img src="bg.gif" width=1 height=4></td>
<td align=right nowrap width="100%" rowspan=2>
<!-- TOP BUTTONS -->
{{TOP_BUTTONS}}
</td>
</tr>
<tr>
<td>
<table border=0 cellspacing=0 cellpadding=0>
<!-- THIRD LEVEL TABS -->
<tr>
{{THIRD_TABS}}
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
<tr>
<td class="darkshade">
<table width="100%" border="0" cellspacing="0" cellpadding="7">
<tr>
<td class="workarea">
[if warnings]
<blockquote class=cmessage>
[warnings]
</blockquote>
[/if]
[if errors]
<blockquote class=cerror>
[error show_var=1 all=1 show_error=1 joiner="<br>"]
</blockquote>
[/if]
{{:DEFAULT}}
</td>
</tr>
</table>
</td>
</tr>
{{BOTTOM_BUTTONS?}}
<tr>
<td height="4" align=right>{{EXTRA_BUTTONS}} {{BOTTOM_BUTTONS}}</td>
</tr>
{{/BOTTOM_BUTTONS?}}
{{BOTTOM_BUTTONS:}}
<tr>
<td height="4"><img src="bg.gif" width="1" height="4"></td>
</tr>
{{/BOTTOM_BUTTONS:}}
</table>
</td>
<td width="1" class="darkshade"><img src="bg.gif" width="1" height="1"></td>
</tr>
{{BOTTOM_OF_FORM}}
<tr>
<td colspan="3" class="darkshade"><img src="bg.gif" width="1" height="1"></td>
</tr>
<!-- FOOTER -->
<tr>
<td colspan="3" class="darkshade"><img src="bg.gif" width="1" height="1"></td>
</tr>
<tr>
<td height="28" class="footer" colspan=2>
<a href="@_INTERCHANGE_URL_@" class=footer>
Interchange
</A>
[version] © 2002-2003 Interchange Development Group
Username:
<a href="[area href='__UI_BASE__/access_permissions' form='user_id=[data session username]']" class=footer>[data session username]</A>
[time]%e %b %Y %H:%M:%S[/time]
StoreID: <a href="[calc]$Config->{VendURLOriginal}[/calc]" class=footer>[calc]$Config->{CatalogName}[/calc]</A>
([var MV_PAGE 1])
</td>
<td align=right class=footer>
</td>
</tr>
</table>
</td>
<td class="darkshade"><img src="bg.gif" width="1"></td>
</tr>
<tr>
<td colspan=3 class=darkshade><img src="bg.gif" width=1></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
1.1 interchange/dist/lib/UI/pages/include/templates/ui_type5
rev 1.1, prev_rev 1.0
Index: ui_type5
===================================================================
<html>
<html[scratch ui_language_direction]>
<head>
<title>[scratch page_title]</title>
[tmp window_name][tag time]%m%d%H%M%S[/tag][/tmp]
<script language="JavaScript">
<!--
function open_help(url) {
if(url == undefined)
url = '[area href="[either]@_UI_HELP_URL_@[or]@_UI_BASE_@/help[/either]" form="topic=[scratch help_name]"]';
opts="top=0,left=0,scrollbars,status=no,menubar=no,location=yes,toolbar=no,resizable=yes,fullsize=no,width=__UI_HELP_WIDTH__,height=__UI_HELP_HEIGHT__";
window.open(url, 'Help', opts);
}
function checkAll(form,what,uncheck) {
var i, n, check;
n = form.elements[what].length;
if (!n) {
if (uncheck == 1) {
form.elements[ what ].checked=false;
} else {
form.elements[ what ].checked=true;
}
} else {
var checkval;
if (uncheck == 1) { checkval=false; } else { checkval=true; }
for (i=0; i < n; i++) {
check = form.elements[ what ][ i ];
check.checked = checkval;
}
}
}
function addItem(selector, receptor, joiner) {
if (joiner == null) { joiner = " "; } else { joiner = "\n"; }
if (receptor.value != '') receptor.value = receptor.value + joiner;
if (selector[selector.selectedIndex].value != null) {
receptor.value = receptor.value + selector[selector.selectedIndex].value;
} else {
if (selector[selector.selectedIndex].text != null) {
receptor.value = receptor.value + selector[selector.selectedIndex].text;
}
}
return true;
}
//-->
</SCRIPT>
<link href="__UI_IMG__interchange.css" rel="stylesheet" type="text/css">
[if value personal_css]<style>[value personal_css]</style>[/if]
{{HEADER}}
[scratchd meta_header]
</head>
<body [scratch ui_body_extra] marginwidth="0" marginheight="0">
<table height="100%" width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class=block1 height="100%">
<table width="100%" border=0 cellspacing=0 cellpadding=0 height="100%">
<tr>
<td class=lightshade><img src="bg.gif" width=1></td>
<td width="100%" class=block1inner height="100%">
<table width="100%" border=0 cellspacing=0 cellpadding=0 height="100%">
<tr>
<td colspan=3>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr>
<td><img src="bg.gif" height=1></td>
<td width="100%" rowspan=2 valign=bottom align=right>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr>
<td align=right><img src="bg.gif" width=1 height=1></td>
</tr>
<tr>
{{SEARCH_BOX?}}
<td style="
text-align: right;
padding-right: 5px;
">
{{SEARCH_BOX}}
</td>
{{/SEARCH_BOX?}}
{{SEARCH_BOX:}}
<td height=3><img src="bg.gif" height=3></td>
{{/SEARCH_BOX:}}
</tr>
<tr>
<td class=lightshade><img src="bg.gif" height=1></td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
{{TOP_OF_FORM}}
{{HIDDEN_FIELDS}}
<tr>
<td width=1 class=lightshade><img src="bg.gif" width=1 height=1></td>
<td width="100%" class=block3inner>
<table width="100%" border=0 cellspacing=0 cellpadding=1>
<!-- TABLE TITLE ROW -->
<tr>
<td>
<table width="100%" border=0 cellspacing=0 cellpadding=0>
<tr>
<td class=rtitle><img src="bg.gif" width=29 height=1></td>
<td class=rtitle><img src="bg.gif" width=1 height=1></td>
</tr>
<tr>
<td width=29 height=22 align=center class=rtitle><a href="[area href='admin/page_metaconfig' form='page=[var MV_PAGE 1]']" title="[L]Page properties[/L]"><img src="[either][scratch icon_name][or]icon_error.gif[/either]" width=16 height=14 border=0></a></td>
<td class=rtitle>[either][scratch page_banner][or][scratch page_title][/either]</td>
</tr>
</table>
</td>
</tr>
<tr>
<td height=4><img src="bg.gif" width=1 height=4></td>
</tr>
<tr>
<td class="darkshade">
<table width="100%" border="0" cellspacing="0" cellpadding="7">
<tr>
<td class="workarea">
[if warnings]
<blockquote class=cmessage>
[warnings]
</blockquote>
[/if]
[if errors]
<blockquote class=cerror>
[error show_var=1 all=1 show_error=1 joiner="<br>"]
</blockquote>
[/if]
{{:DEFAULT}}
</td>
</tr>
</table>
</td>
</tr>
{{BOTTOM_BUTTONS?}}
<tr>
<td height="4" align=right>{{EXTRA_BUTTONS}} {{BOTTOM_BUTTONS}}</td>
</tr>
{{/BOTTOM_BUTTONS?}}
{{BOTTOM_BUTTONS:}}
<tr>
<td height="4"><img src="bg.gif" width="1" height="4"></td>
</tr>
{{/BOTTOM_BUTTONS:}}
</table>
</td>
<td width="1" class="darkshade"><img src="bg.gif" width="1" height="1"></td>
</tr>
{{BOTTOM_OF_FORM}}
<tr>
<td colspan="3" class="darkshade"><img src="bg.gif" width="1" height="1"></td>
</tr>
<!-- FOOTER -->
<tr>
<td colspan="3" class="darkshade"><img src="bg.gif" width="1" height="1"></td>
</tr>
<tr>
<td height="28" class="footer" colspan=2>
<a href="@_INTERCHANGE_URL_@" class=footer>
Interchange
</A>
[version] © 2002-2003 Interchange Development Group
Username:
<a href="[area href='__UI_BASE__/access_permissions' form='user_id=[data session username]']" class=footer>[data session username]</A>
[time]%e %b %Y %H:%M:%S[/time]
StoreID: <a href="[calc]$Config->{VendURLOriginal}[/calc]" class=footer>[calc]$Config->{CatalogName}[/calc]</A>
([var MV_PAGE 1])
</td>
<td align=right class=footer>
</td>
</tr>
</table>
</td>
<td class="darkshade"><img src="bg.gif" width="1"></td>
</tr>
<tr>
<td colspan=3 class=darkshade><img src="bg.gif" width=1></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
</html>
2.1 +32 -8 interchange/dist/lib/UI/profiles/db_maintenance
rev 2.1, prev_rev 2.0
Index: db_maintenance
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/profiles/db_maintenance,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- db_maintenance 18 Jul 2001 02:22:13 -0000 2.0
+++ db_maintenance 14 Jan 2003 02:25:53 -0000 2.1
@@ -112,14 +112,14 @@
}
#Log("using idp=$idp, value=$CGI->{$idp}");
- $return unless $idp;
+ return unless $idp;
delete $Scratch->{ui_location};
$Config->{NoSearch} = '';
- my $out = '';
my @deltables = split /[\s0,]/, $CGI->{ui_delete_tables};
unshift @deltables, $CGI->{mv_data_table};
+ my @out;
for(@{$CGI_array->{$idp}}) {
my $key = $_;
my $db;
@@ -127,11 +127,12 @@
my ($t, $col) = split /:/, $_;
next unless $t;
if ( $Tag->if_mm('!tables', "$t=d") ) {
- push @errors, "Not authorized to delete from table $t";
+ push @errors,
+ errmsg("Not authorized to delete from table %s", $t);
next;
}
unless ($db = $Db{$t}) {
- push @errors, "Table $t not available.";
+ push @errors, errmsg("Table %s not available.", $t);
next;
}
if($col) {
@@ -139,10 +140,21 @@
$key = $db->quote($key, $col);
my $num = $db->query("delete from $t where $col = $key");
if($num > 0) {
- $out .= "deleted $num records from $t where $col = $key</BR>";
+ push @out, errmsg(
+ "deleted %s records from %s where %s = %s",
+ $num,
+ $t,
+ $col,
+ $key,
+ );
}
else {
- $out .= "No records in $t where $col = $key</BR>";
+ push @errors, errmsg(
+ "No records in %s where %s = %s",
+ $t,
+ $col,
+ $key,
+ );
}
}
else {
@@ -152,11 +164,23 @@
push @errors, $@;
next;
};
- $out .= "deleted $key from $t<br>";
+ push @out, errmsg("Deleted %s from %s", $key, $t);
}
}
}
-
+ if(@errors) {
+ my $str = '<ul><li>';
+ $str .= join '<li>', @errors;
+ $str .= '</ul>';
+ $Tag->error({ name => 'db_maintenance', set => $str });
+ }
+ if(@out) {
+ my $str = '<ul><li>';
+ $str .= join '<li>', @out;
+ $str .= '</ul>';
+ $Tag->warnings($str);
+ }
+ return;
[/perl]
[/if]
2.3 +4 -3 interchange/dist/lib/UI/profiles/process_filter
rev 2.3, prev_rev 2.2
Index: process_filter
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/profiles/process_filter,v
retrieving revision 2.2
retrieving revision 2.3
diff -u -r2.2 -r2.3
--- process_filter 14 Oct 2002 21:35:02 -0000 2.2
+++ process_filter 14 Jan 2003 02:25:53 -0000 2.3
@@ -1,7 +1,7 @@
__NAME__ process_filter
[flag type=write table="[cgi mv_data_table]"]
[perl tables="[list-databases]"]
-# $Id: process_filter,v 2.2 2002/10/14 21:35:02 mheins Exp $
+# $Id: process_filter,v 2.3 2003/01/14 02:25:53 mheins Exp $
my @filters = grep /^ui_filter:/, keys %$CGI;
FILTERS: {
last FILTERS unless @filters;
@@ -19,7 +19,7 @@
}
}
- SERIALIZE: {
+ SERIALIZE: {
last SERIALIZE unless $CGI->{ui_serial_fields};
#Debug("Found serialzed values $CGI->{ui_serial_fields}");
my(@scols) = split /\s+/, $CGI->{ui_serial_fields};
@@ -45,6 +45,7 @@
$serial_data{$maincol},
$hashkey,
$val,
+ 1,
);
}
@@ -54,7 +55,7 @@
for(@cols) {
#Debug("after serialize data for $_: $CGI->{$_}");
}
- }
+ }
my @uploads = grep /^ui_upload_file_path:/, keys %$CGI;
#Debug("Check uploads: " . join ",", @uploads);
2.5 +2 -2 interchange/dist/lib/UI/vars/UI_STD_FILE_NAV
rev 2.5, prev_rev 2.4
Index: UI_STD_FILE_NAV
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/vars/UI_STD_FILE_NAV,v
retrieving revision 2.4
retrieving revision 2.5
diff -u -r2.4 -r2.5
--- UI_STD_FILE_NAV 26 Aug 2002 02:56:27 -0000 2.4
+++ UI_STD_FILE_NAV 14 Jan 2003 02:25:53 -0000 2.5
@@ -40,7 +40,7 @@
</SELECT>
<INPUT TYPE=submit VALUE="[msg]Find files[/msg]"><BR>
<small>
- <INPUT TYPE=checkbox NAME="find_session" VALUE=1> [msg]Look in session and temporary files[/msg]
+ <INPUT TYPE=checkbox NAME="find_session" VALUE=1 [checked cgi=1 name=find_session value=1]> [msg]Look in session and temporary files[/msg]
[if type=explicit
compare=`
@@ -84,7 +84,7 @@
]
[else]
<table width="100%">
-[table-organize columns=3 columnize=1 interpolate=1]
+[table-organize columns=3 columnize=1 min-rows=15 interpolate=1]
[file-navigator
mask="[scratch dir_mask]"
include_mask="[scratch include_mask]"
2.8 +17 -44 interchange/dist/lib/UI/vars/UI_STD_FOOTER
rev 2.8, prev_rev 2.7
Index: UI_STD_FOOTER
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/vars/UI_STD_FOOTER,v
retrieving revision 2.7
retrieving revision 2.8
diff -u -r2.7 -r2.8
--- UI_STD_FOOTER 18 Aug 2002 08:17:44 -0000 2.7
+++ UI_STD_FOOTER 14 Jan 2003 02:25:53 -0000 2.8
@@ -1,46 +1,19 @@
Variable UI_STD_FOOTER <<EOV
-[if scratch ui_checklist]
- </td>
- </tr>
-</table>[set ui_checklist][/set][/if]
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- <!-- end of main wrapper table -->
- </td>
- </tr>
- <!-- start of bottom -->
- <tr>
- <td valign=bottom>
- <table width="100%" border=0 cellpadding=0 cellspacing=0>
- <tr>
- <td height=1 class=hrmedium><img src="bg.gif" height=1></td>
- </tr>
- <tr>
- <td height=24 class=tabdark>
- <table border=0 cellspacing=0 cellpadding=0>
- <tr>
- <td width=6><img src="bg.gif"></td>
- <td><img src="icfooter.gif"></td>
- <td nowrap class=footer>
- [version] © 2002-2003 Interchange Development Group
- <font class=footerb>[msg]Username[/msg]: </font>[data session username]
- <font class=footerb>[msg]StoreID[/msg]: </font> <A HREF="[scratch ui_catalog_url]">[calc]$Config->{CatalogName}[/calc] </b></a>
- [tag time]%d %B %Y %H:%M:%S[/tag] ([var MV_PAGE 1])
- </td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <!-- end of bottom -->
-</table>
-<!-- end of outer wrapper table -->
-</body>
-</html>
+[unpack]
+[include file="include/templates/ui_[either][scratch display_class][or]type1[/either]"]
+[/unpack]
+[comment] Clear these puppies [/comment][calc]
+ for (qw/
+ page_title
+ page_banner
+ icon_name
+ help_name
+ page_perm
+ table_perm
+ ui_body_extra
+ display_class
+ /) { delete $Scratch->{$_} }
+ return;
+[/calc]
+
EOV
2.36 +191 -348 interchange/dist/lib/UI/vars/UI_STD_HEAD
rev 2.36, prev_rev 2.35
Index: UI_STD_HEAD
===================================================================
RCS file: /var/cvs/interchange/dist/lib/UI/vars/UI_STD_HEAD,v
retrieving revision 2.35
retrieving revision 2.36
diff -u -r2.35 -r2.36
--- UI_STD_HEAD 10 Jan 2003 21:10:50 -0000 2.35
+++ UI_STD_HEAD 14 Jan 2003 02:25:53 -0000 2.36
@@ -1,4 +1,4 @@
-## UI Header vars, version: $Id: UI_STD_HEAD,v 2.35 2003/01/10 21:10:50 jon Exp $
+## UI Header vars, version: $Id: UI_STD_HEAD,v 2.36 2003/01/14 02:25:53 mheins Exp $
Variable UI_STD_INIT <<EOV
[calcn]
# is this browser able to grok DHTML ?
@@ -19,7 +19,7 @@
# of Interchange's automatic image path rewriting
$Config->{ImageDirOriginal} = $Config->{ImageDir};
$Config->{ImageDirSecureOriginal} = $Config->{ImageDirSecure};
- $Config->{ImageDir} =
+ $Variable->{UI_IMG} = $Config->{ImageDir} =
$Tag->image( { ui => 1, secure => 0, dir_only => 1 } );
$Config->{ImageDirSecure} =
$Tag->image( { ui => 1, secure => 1, dir_only => 1 } );
@@ -27,11 +27,12 @@
# force using secure URL for this page?
$Config->{VendURLOriginal} = $Config->{VendURL};
if ($Variable->{UI_SECURE} or $Tag->var('UI_SECURE', 1)) {
+ $Variable->{UI_IMG} = $Config->{ImageDirSecure};
$Config->{VendURL} = $Config->{SecureURL};
}
''
-[/calcn]
+[/calcn][page-meta]
EOV
Variable UI_STD_HEAD <<EOV
@@ -63,6 +64,12 @@
$last = $_;
}
$last =~ s/ui_class_//;
+ if($CGI->{display_class}) {
+ $Scratch->{display_class} = $CGI->{display_class};
+ }
+ if($Scratch->{check_publish} and $Scratch->{check_publish} =~ /^[1yt].?.?$/) {
+ $Scratch->{check_publish} = q{ onClick="return check_publish()" };
+ }
$ui_tag = (delete $Scratch->{ui_class} || $CGI->{ui_class} || $last || 'None');
$Scratch->{ui_class} = $ui_tag;
$Scratch->{"ui_class_$ui_tag"} = 1;
@@ -95,398 +102,234 @@
[bounce page="__UI_BASE__/error"]
[/if-mm]
[/if]
+[if scratch superuser]
+ [if-mm !super]
+ [seti ui_error][msg arg.0="[var MV_PAGE 1]"]Sorry, must be superuser for page '%s'.[/msg][/seti]
+ [bounce page="__UI_BASE__/error"]
+ [/if-mm]
+[/if]
[if scratch dhtml_required]
[and scratch ui_old_browser]
[seti ui_error][loc]Modern browser like Mozilla or MSIE 5 required for page accessed[/loc][/seti]
[bounce page="__UI_BASE__/error"]
[/if]
-<html[scratch ui_language_direction]>
-<head>
-<title>[scratch page_title]</title>
-[tmp window_name][tag time]%m%d%H%M%S[/tag][/tmp]
-<script language="JavaScript">
-<!--
-function open_help(url) {
- if(url == undefined)
- url = '[area href="[either]@_UI_HELP_URL_@[or]@_UI_BASE_@/help[/either]" form="topic=[scratch help_name]"]';
- opts="top=0,left=0,scrollbars,status=no,menubar=no,location=yes,toolbar=no,resizable=yes,fullsize=no,width=__UI_HELP_WIDTH__,height=__UI_HELP_HEIGHT__";
- window.open(url, 'Help', opts);
-}
-function checkAll(form,what,uncheck) {
- var i, n, check;
- n = form.elements[what].length;
- if (!n) {
- if (uncheck == 1) {
- form.elements[what].checked=false;
- } else {
- form.elements[what].checked=true;
- }
- } else {
- var checkval;
- if (uncheck == 1) { checkval=false; } else { checkval=true; }
- for (i=0; i < n; i++) {
- check = form.elements[what][i];
- check.checked = checkval;
- }
- }
-}
-function addItem(selector, receptor, joiner) {
- if (joiner == null) { joiner = " "; } else { joiner = "\n"; }
- if (receptor.value != '') receptor.value = receptor.value + joiner;
- if (selector[selector.selectedIndex].value != null) {
- receptor.value = receptor.value + selector[selector.selectedIndex].value;
- } else {
- if (selector[selector.selectedIndex].text != null) {
- receptor.value = receptor.value + selector[selector.selectedIndex].text;
- }
- }
- return true;
-}
-//-->
-</SCRIPT>
-<link href="@_UI_IMAGE_DIR_@ic.css" rel="stylesheet" type="text/css" title="Main IC stylesheet">
-<link href="@_UI_IMAGE_DIR_@ic1.css" rel="alternate stylesheet" type="text/css" title="Working IC stylesheet">
-</STYLE>[calc]
- %cstyles = (
- interfacemain => '#D4D0C8',
- tabdark => '#B4B0AA',
- hrdark => '#404040',
- hrmedium => '#E4E4E4',
- hrlight => '#FFFFFF',
- headerrow => '#CCCCCC',
- tabborder => '#404040',
- tablightborder => '#FFFFFF',
- vr => '#999999',
- );
- my @styles = keys %cstyles;
- if($CGI->{set_styles}) {
- for(@styles) {
- $CGI->{$_} =~ s/[^#\w]+//g;
- if($CGI->{$_}) {
- $Scratch->{$_} = $CGI->{$_};
- }
- }
- }
- if($CGI->{reset_styles}) {
- for(@styles) {
- delete $Scratch->{$_};
- }
- }
-
- $Scratch->{interesting} ||= 'interfacemain tabdark';
- if($CGI->{interesting}) {
- my @ary = grep /^\w+$/, split /[\s,\0]+/, $CGI->{interesting};
- $Scratch->{interesting} = join " ", @ary;
- }
-
- my @interested = grep /^\w+$/, split /[\s,\0]+/, $Scratch->{interesting};
- @interesting{@interested} = @interested;
-
- for(@styles) {
- next unless $Scratch->{$_};
-
- push @out, qq(.$_ {
- background-color: $Scratch->{$_};
-}
-);
- }
- if(@out) {
- return join "\n", '<STYLE>', @out, '</STYLE>';
- }
- return;
-[/calc]
-[if value personal_css]<style>[value personal_css]</style>[/if]
-[scratchd meta_header]
-</head>
-<body [scratch ui_body_extra] leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">
-<!-- outer wrapper table to enable the interface to scale to full browser height -->
-<table width="100%" height="100%" border=0 cellpadding=0 cellspacing=0>
- <tr>
- <td height=115 valign=top>
- <!-- start of main wrapper table -->
- <table width="100%" border=0 cellpadding=0 cellspacing=0>
- <!-- row 1: logo and generic menu options -->
- <tr>
- <td height=42 valign=middle class=interfacemain>
- <table width="100%" border=0 cellspacing=0 cellpadding=0>
- <tr>
- <td width="30%" rowspan=2 valign=middle>
- <table width=132 border=0 cellspacing=0 cellpadding=0>
- <tr>
- <td width=5 height=42> </td>
- <td width=127><a href="http://www.icdevgroup.org/" target=icdevgroup><img src="iclogo.gif" border=0></a></td>
- <td width="70%" height=31 align=right valign=bottom><a href="[area admin/index]"><img border=0 width=300 height=29 src="bg.gif"></a>
- </td>
- </tr>
- </table>
- </td>
- <td width="70%" height=31 align=right valign=bottom>
- <table border=0 cellspacing=0 cellpadding=0>
- <tr>
+[output name=fixed_menu]
[if session logged_in]
[menu
name=Bottom
ui_security=depends_on
+ extra_value.check_publish=`$Scratch->{check_publish}`
superuser=super
full_interpolate=page
localize="name,description"
]
- <td align=left valign=bottom> <a href="{HREF}" title="{DESCRIPTION}" class=menufont>{NAME}</a> </td>
+ <td nowrap> <a href="{HREF}" {CHECK_PUBLISH} title="{DESCRIPTION}" class=toplink>{NAME}</a> </td>
[menu-footer]
[if-mm super]
[if scratch ui_meta_link]
- <td align=left valign=bottom>
- <a
- href="[area href='admin/menu_editor' form='qmenu_name=Bottom']"
- style="font-size: 7pt">edit</A>
- </td>
+ <td nowrap>
+ <a
+ href="[area href='admin/menu_editor' form='qmenu_name=Bottom']"
+ style="font-size: 7pt" class=edittablink {CHECK_PUBLISH} title="[msg]Edit this menu[/msg]">edit</A>
+ </td>
[/if]
[/if-mm]
[/menu-footer]
[/menu]
[/if]
- </tr>
- </table>
- </td>
- </tr>
- <tr>
- <td height=11><img src="bg.gif" height=1></td>
- </tr>
- </table>
- </td>
- </tr>
- <!-- row 2: dark grey space above the tabs -->
- <tr>
- <td height=2 align=left valign=middle class=tabdark><img src="bg.gif"></td>
- </tr>
-[if session logged_in]
- <!-- row 3: tab row -->
- <tr>
- <td height=18 align=left valign=middle class=tabdark>
- <table width="100%" border=0 cellspacing=0 cellpadding=0>
- <tr>
- <td>
- <table border=0 cellspacing=0 cellpadding=0>
- <tr>
- <!-- tab: menu entry -->
+[output name=top_tabs]
[menu
- name=Top
+ name="[either][scratch top_menu][or]Top[/either]"
superuser=super
inactive=inactive
localize=name
indicator=indicator
ui_security=depends_on
+ extra_value.check_publish=`$Scratch->{check_publish}`
link_class=menufont
entities=description
]
{INDICATED:}
<!-- class={NAME} down -->
- <td valign=bottom>
- <table width="100%" border=0 cellspacing=0 cellpadding=0>
- <tr>
- <td width=14 rowspan=3 class=shrink><a
- href="{HREF}"
- title="{DESCRIPTION}"><img border=0 src="tab_dark_left.gif"></A></td>
- <td height=1 width=69 class=tabborder><img src="bg.gif" height=1></td>
- <td width=2 rowspan=3><img src="tab_dark_right.gif"></td>
- </tr>
- <tr>
- <td height=2><img src="bg.gif" height=1></td>
- </tr>
- <tr>
- <td height=13 align=left valign=top><a
- id="{CODE}"
- href="{HREF}"
- title="{DESCRIPTION}"
- class=menufont>{NAME}</a> </td>
- </tr>
- <tr>
- <td height=1 colspan=3 class=hrdark><img src="bg.gif" height=1></td>
- </tr>
- <tr>
- <td height=1 colspan=3 class=hrlight><img src="bg.gif" height=1></td>
- </tr>
- </table>
- </td>
+ <td height=15 class=tabdown>
+ <table width="100%" border=0 cellspacing=0 cellpadding=0>
+ <tr>
+ <td class=tabdownleft><a href="{HREF}" {CHECK_PUBLISH} title="{DESCRIPTION}" class=tablink><img src="bg.gif" width=24 height=15 border=0></A></td>
+ <td nowrap class=tabdownfill><a href="{HREF}" {CHECK_PUBLISH} title="{DESCRIPTION}" class=tablink>{NAME}</a></td>
+ <td class=tabdownright><a href="{HREF}" {CHECK_PUBLISH} title="{DESCRIPTION}" class=tablink><img src="bg.gif" width=24 height=15 border=0></A></td>
+ </tr>
+ <tr><td colspan=3 class=darkshade><img src="bg.gif" height=1></td></tr>
+ <tr><td colspan=3 class=lightshade><img src="bg.gif" height=1></td></tr>
+ </table>
+ </td>
{/INDICATED:}
{INDICATED?}
<!-- tab: {NAME} (up) -->
-<td valign=bottom>
-<table width="100%" border=0 cellspacing=0 cellpadding=0 class=interfacemain>
- <tr>
- <td width=17 rowspan=4 class=shrink><img src="tab_light_left.gif"></td>
- <td height=1 width=53 class=tabborder><img src="bg.gif" height=1></td>
- <td width=2 rowspan=4><img src="tab_light_right.gif"></td>
- </tr>
- <tr>
- <td height=1 class=hrlight><img src="bg.gif" height=1></td>
- </tr>
- <tr>
- <td height=1><img src="bg.gif" height=1></td>
- </tr>
- <tr>
- <td height=13 align=left valign=top><a href="{HREF}" title="{DESCRIPTION}" class=menufont>{NAME}</a> </td>
- </tr>
- <tr>
- <td height=1 colspan=3><img src="bg.gif" height=1></td>
- </tr>
- <tr>
- <td height=1 colspan=3><img src="bg.gif" height=1></td>
- </tr>
-</table>
+ <td class=block1>
+ <table width="100%" border=0 cellspacing=0 cellpadding=0>
+ <tr>
+ <td class=tableft><a href="{HREF}" {CHECK_PUBLISH} title="{DESCRIPTION}" class=tablink><img src="bg.gif" width=24 height=15 border=0></A></td>
+ <td nowrap class=tabfill><a href="{HREF}" {CHECK_PUBLISH} title="{DESCRIPTION}" class=tablink>{NAME}</a></td>
+ <td class=tabright><a href="{HREF}" {CHECK_PUBLISH} title="{DESCRIPTION}" class=tablink><img src="bg.gif" width=24 height=15 border=0></A></td>
+ </tr>
+ </table>
+ </td>
+{/INDICATED?}
+[/menu]
+ <!-- menu edit=Top -->
+ [if-mm super][if scratch ui_meta_link]
+ <td height=15 class=tabdown>
+ <table width="100%" border=0 cellspacing=0 cellpadding=0>
+ <tr>
+ <td class=tabdownleft><a href="[area href='admin/menu_editor' form='qmenu_name=Top']" {CHECK_PUBLISH} title="[msg]Edit these menu tabs[/msg]"><img src="bg.gif" width=24 height=15 border=0></td>
+ <td nowrap class=tabdownfill><a href="[area href='admin/menu_editor' form='qmenu_name=[either][scratch top_menu][or]Top[/either]']" {CHECK_PUBLISH} title="[msg]Edit these menu tabs[/msg]" class=edittablink>edit</A></td>
+ <td class=tabdownright><a href="[area href='admin/menu_editor' form='qmenu_name=Top']" {CHECK_PUBLISH} title="[msg]Edit these menu tabs[/msg]"><img src="bg.gif" width=24 height=15 border=0></td>
+ </tr>
+ <tr><td colspan=3 class=darkshade><img src="bg.gif" height=1></td></tr>
+ <tr><td colspan=3 class=lightshade><img src="bg.gif" height=1></td></tr>
+ </table>
+ </td>
+[/if][/if-mm]
+
+[output name=second_tabs]
+[menu
+ name="[either][scratch second_menu][or][scratch ui_class][/either]"
+ superuser=super
+ exclude_on=exclude_on
+ depends_on=depends_on
+ expand_values=name,page
+ expand_values_form=form
+ extra_value.check_publish=`$Scratch->{check_publish}`
+ localize=name
+ indicator=indicator
+ last_line="[if scratch third_menu]next_line[/if]"
+ indicator_page=page
+ inactive=inactive
+ entities=description
+ nbsp=name
+ reparse=1
+]
+<!-- PAGE=[var MV_PAGE 1] -->
+{NEXT_LINE?}[output name=third_tabs]{/NEXT_LINE?}
+{INDICATED?}
+<td class=block3>
+ <table width="100%" border=0 cellspacing=0 cellpadding=0>
+ <tr>
+ <td class=subtableft><a href="{HREF}" {CHECK_PUBLISH} title="{DESCRIPTION}"><img src="bg.gif" width=16 height=16 border=0></a></td>
+ <td nowrap class=subtabfill><a href="{HREF}" {CHECK_PUBLISH} title="{DESCRIPTION}" class=subtablink>{NAME}</a></td>
+ <td class=subtabright><a href="{HREF}" {CHECK_PUBLISH} title="{DESCRIPTION}"><img src="bg.gif" width=16 height=16 border=0></a></td>
+ </tr>
+ <tr>
+ <td colspan=3 class=subtabfilllwr><img src="bg.gif" height=1></td>
+ </tr>
+ </table>
</td>
{/INDICATED?}
+{INDICATED:}
+<td class=subtabdown>
+ <table width="100%" border=0 cellspacing=0 cellpadding=0>
+ <tr>
+ <td class=subtabdownleft><a href="{HREF}" {CHECK_PUBLISH} title="{DESCRIPTION}"><img src="bg.gif" width=16 height=16 border=0></a></td>
+ <td nowrap class=subtabdownfill><a href="{HREF}" {CHECK_PUBLISH} title="{DESCRIPTION}" class=subtablink>{NAME}</a></td>
+ <td class=subtabdownright><a href="{HREF}" {CHECK_PUBLISH} title="{DESCRIPTION}"><img src="bg.gif" width=16 height=16 border=0></a></td>
+ </tr>
+ <tr>
+ <td colspan=3 class=darkshade><img src="bg.gif" height=1></td>
+ </tr>
+ <tr>
+ <td colspan=3 class=lightshade><img src="bg.gif" height=1></td>
+ </table>
+</td>
+{/INDICATED:}
[/menu]
- </tr>
- </table>
- </td>
- <!-- black and white horizontal rules to stretch to width=100% -->
- <td height=18 width="100%" valign=bottom class=shrink>
- <table width="100%" border=0 cellpadding=0 cellspacing=0>
- <tr>
- <td width="100%" height=16 class=shrink align=right>
-[if-mm super]
- [if scratch ui_meta_link]
- <a
- href="[area href='admin/menu_editor' form='qmenu_name=Top']"
- style="font-size: 7pt">edit</A>
-
- [/if]
-[/if-mm]
-
- </td>
- </tr>
- <tr>
- <td height=1 class=hrdark><img src="bg.gif" width=1></td>
- </tr>
- <tr>
- <td height=1 class=hrlight><img src="bg.gif" width=1></td>
- </tr>
- </table>
- </td>
- </tr>
- </table>
- </td>
- </tr>
- <!-- row 4: sub-menu -->
- <tr>
- <td height=28 class=interfacemain>
- <table border=0 cellpadding=0 cellspacing=0>
- <tr>
- <td width=16><img src="bg.gif" height=1></td>
+[output name=second_tabs]
+<!-- menu edit=Second -->
+[if-mm super][if scratch ui_meta_link]
+<td class=subtabdown>
+ <table width="100%" border=0 cellspacing=0 cellpadding=0>
+ <tr>
+ <td class=subtabdownleft><img src="bg.gif" width=16 height=16></td>
+ <td nowrap class=subtabdownfill><a href="[area href='admin/menu_editor' form='qmenu_name=[either][scratch second_menu][or][scratch ui_class][/either]']" {CHECK_PUBLISH} title="[msg]Edit these menu tabs[/msg]" class=edittablink>edit</a></td>
+ <td class=subtabdownright><img src="bg.gif" width=16 height=16></td>
+ </tr>
+ <tr>
+ <td colspan=3 class=darkshade><img src="bg.gif" height=1></td>
+ </tr>
+ <tr>
+ <td colspan=3 class=lightshade><img src="bg.gif" height=1></td>
+ </table>
+</td>
+[/if][/if-mm]
+
+[if scratch third_menu]
+[output name=third_tabs]
[menu
- name="[scratch ui_class]"
+ name="[scratch third_menu]"
superuser=super
+ extra_value.check_publish=`$Scratch->{check_publish}`
exclude_on=exclude_on
depends_on=depends_on
- expand_values=name,page,form
+ expand_values=name,page
+ expand_values_form=form
localize=name
- indicator=indicator,page
+ indicator=indicator
+ indicator_page=page
inactive=inactive
entities=description
nbsp=name
-]{NEXT_LINE?}
- </tr>
- </table>
- </td>
- </tr>
- <!-- row 5: dark horizontal rule -->
- <tr>
- <td height=1 class=hrdark><img src="bg.gif" height=1></td>
- </tr>
- <!-- row 6: light horizontal rule -->
- <tr>
- <td height=1 class=hrlight><img src="bg.gif" height=1></td>
- </tr>
- <!-- row 7: menu options for component type -->
- <tr>
- <td height=17 align=left valign=middle class=interfacemain>
- <table border=0 cellspacing=0 cellpadding=0>
- <tr>{/NEXT_LINE?}
- <td align=center valign=middle> {PAGE?}<A href="{HREF}" title="{DESCRIPTION}"
- style="{INDICATED?}font-weight: bolder;{/INDICATED?}" class=menufont>{NAME}</A>{/PAGE?}{PAGE:}{NAME}{/PAGE:} </td>
- <td width=1 class=vr><img src="bg.gif" width=1></td>
- [menu-footer]
-[if-mm super]
- [if scratch ui_meta_link]
- <td width="100%" align=right valign=middle>
- <a
- href="[area href='admin/menu_editor' form='qmenu_name=[scratch ui_class]']"
- style="font-size: 7pt">edit</A>
- </td>
- [/if]
-[/if-mm]
- </tr>
- </table>
- </td>
- </tr>
- <!-- row 8: dark horizontal rule -->
- <tr>
- <td height=1 class=hrdark><img src="bg.gif" height=1></td>
- </tr>
-[/menu-footer][/menu]
- [if !scratch ui_no_title]
- <!-- row 9: heading row -->
- <tr>
- <td height=19 align=left valign=middle class=headerrow>
- <table border=0 cellspacing=0 cellpadding=0>
- <tr>
- <td width=13><img src="bg.gif"></td>
- <td nowrap class=heading>
- [calc]
- my $tit = $Scratch->{page_banner} || $Scratch->{page_title};
- return $tit if $tit =~ /^\s*</s;
- $tit =~ s{(.*?)(:|$)}{<span style="font-weight: bold">$1</span>$2};
- return $tit;
- [/calc]
- [if type=explicit compare="[error all=1 show_var=1 keep=1]"]
- <blockquote class=cerror>
- [error show_var=1 all=1 show_error=1 joiner="<br>"]
- </blockquote>
- [/if]
- [if scratch ui_failure]
- <blockquote class=cerror>
- [scratchd ui_failure]
- </blockquote>
- [/if]
- [if scratch ui_message]
- <blockquote class=cmessage>
- [scratchd ui_message]
- </blockquote>
- [/if]
- [warnings auto=1]
- </td>
- </tr>
- </table>
- </td>
- </tr>
- [/if]
+ reparse=1
+]
+<!-- PAGE=[var MV_PAGE 1] -->
+{INDICATED?}
+<td class=block3>
+ <table width="100%" border=0 cellspacing=0 cellpadding=0>
+ <tr>
+ <td class=subtableft><a href="{HREF}" {CHECK_PUBLISH} title="{DESCRIPTION}"><img src="bg.gif" width=16 height=16 border=0></a></td>
+ <td nowrap class=subtabfill><a href="{HREF}" {CHECK_PUBLISH} title="{DESCRIPTION}" class=subtablink>{NAME}</a></td>
+ <td class=subtabright><a href="{HREF}" {CHECK_PUBLISH} title="{DESCRIPTION}"><img src="bg.gif" width=16 height=16 border=0></a></td>
+ </tr>
+ <tr>
+ <td colspan=3 class=subtabfilllwr><img src="bg.gif" height=1></td>
+ </tr>
+ </table>
+</td>
+{/INDICATED?}
+{INDICATED:}
+<td class=subtabdown>
+ <table width="100%" border=0 cellspacing=0 cellpadding=0>
+ <tr>
+ <td class=subtabdownleft><a href="{HREF}" {CHECK_PUBLISH} title="{DESCRIPTION}"><img src="bg.gif" width=16 height=16 border=0></a></td>
+ <td nowrap class=subtabdownfill><a href="{HREF}" {CHECK_PUBLISH} title="{DESCRIPTION}" class=subtablink>{NAME}</a></td>
+ <td class=subtabdownright><a href="{HREF}" {CHECK_PUBLISH} title="{DESCRIPTION}"><img src="bg.gif" width=16 height=16 border=0></a></td>
+ </tr>
+ <tr>
+ <td colspan=3 class=darkshade><img src="bg.gif" height=1></td>
+ </tr>
+ <tr>
+ <td colspan=3 class=lightshade><img src="bg.gif" height=1></td>
+ </table>
+</td>
+{/INDICATED:}
+[/menu]
+ <!-- menu edit=Third -->
+ [if-mm super][if scratch ui_meta_link]
+ <td class=subtabdown>
+ <table width="100%" border=0 cellspacing=0 cellpadding=0>
+ <tr>
+ <td class=subtabdownleft><img src="bg.gif" width=16 height=16></td>
+ <td nowrap class=subtabdownfill><a href="[area href='admin/menu_editor' form='qmenu_name=[scratch third_menu]']" {CHECK_PUBLISH} title="[msg]Edit these menu tabs[/msg]" class=edittablink>edit</a></td>
+ <td class=subtabdownright><img src="bg.gif" width=16 height=16></td>
+ </tr>
+ <tr>
+ <td colspan=3 class=darkshade><img src="bg.gif" height=1></td>
+ </tr>
+ <tr>
+ <td colspan=3 class=lightshade><img src="bg.gif" height=1></td>
+ </table>
+ </td>
+ [/if][/if-mm]
[/if]
-<!-- END MENUBAR -->
- <!-- row 10: main content -->
- <tr>
- <td align=left valign=top>
- <table width="100%" border=0 cellspacing=0 cellpadding=0>
- <tr>
- <td class="[either][scratch display_class][or]maincontent[/either]" valign=top>[if scratch ui_checklist]
-<table>
- <tr>
- <td width="20%">
- [include file=include/wizard_checklist locale="[scratch mv_locale]"]
- </td>
- <td width="80%" valign=top>
-[/if][comment] Clear these puppies [/comment][calc]
- for (qw/
- page_title
- page_banner
- icon_name
- help_name
- page_perm
- table_perm
- ui_body_extra
- /) { delete $Scratch->{$_} }
- return;
-[/calc]
+[output name=""]
EOV
1.8 +27 -8 interchange/lib/Vend/Dispatch.pm
rev 1.8, prev_rev 1.7
Index: Dispatch.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Dispatch.pm,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- Dispatch.pm 18 Nov 2002 16:55:15 -0000 1.7
+++ Dispatch.pm 14 Jan 2003 02:25:53 -0000 1.8
@@ -1,6 +1,6 @@
# Vend::Dispatch - Handle Interchange page requests
#
-# $Id: Dispatch.pm,v 1.7 2002/11/18 16:55:15 mheins Exp $
+# $Id: Dispatch.pm,v 1.8 2003/01/14 02:25:53 mheins Exp $
#
# Copyright (C) 2002 ICDEVGROUP <interchange@icdevgroup.org>
# Copyright (C) 2002 Mike Heins <mike@perusion.net>
@@ -26,7 +26,7 @@
package Vend::Dispatch;
use vars qw($VERSION);
-$VERSION = substr(q$Revision: 1.7 $, 10);
+$VERSION = substr(q$Revision: 1.8 $, 10);
use POSIX qw(strftime);
use Vend::Util;
@@ -67,13 +67,32 @@
}
sub response {
- my ($output) = @_;
- my $out = ref $output ? $output : \$output;
- if (defined $Vend::CheckHTML) {
- require Vend::External;
- Vend::External::check_html($out);
+ my $possible = shift;
+ if(defined $possible) {
+ push @Vend::Output, ( ref $possible ? $possible : \$possible);
}
- $H->respond($out);
+#::logDebug("output=" . ::uneval(\@Vend::Output) . "\nnames=" . ::uneval(\%Vend::OutPtr) . "\nfilters=" . ::uneval(\%Vend::OutFilter));
+ if($Vend::MultiOutput) {
+ for my $space (keys %Vend::OutPtr) {
+ my $things = $Vend::OutPtr{$space} || [];
+ for my $ptr (@$things) {
+ my $subs = $Vend::OutFilter{$space} || [];
+ for my $sub (@$subs) {
+ $sub->($Vend::Output[$ptr]);
+ }
+ }
+ }
+ for(grep $_, @Vend::Output) {
+ $H->respond($_);
+ }
+ }
+ else {
+ for(@Vend::Output) {
+ Vend::Interpolate::substitute_image($_);
+ $H->respond($_);
+ }
+ }
+ @Vend::Output = ();
}
# Parse the mv_click and mv_check special variables
2.6 +4 -3 interchange/lib/Vend/Error.pm
rev 2.6, prev_rev 2.5
Index: Error.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Error.pm,v
retrieving revision 2.5
retrieving revision 2.6
diff -u -r2.5 -r2.6
--- Error.pm 16 Sep 2002 23:06:31 -0000 2.5
+++ Error.pm 14 Jan 2003 02:25:53 -0000 2.6
@@ -1,6 +1,6 @@
# Vend::Error - Handle Interchange error pages and messages
#
-# $Id: Error.pm,v 2.5 2002/09/16 23:06:31 mheins Exp $
+# $Id: Error.pm,v 2.6 2003/01/14 02:25:53 mheins Exp $
#
# Copyright (C) 1996-2002 Red Hat, Inc. <interchange@redhat.com>
#
@@ -37,7 +37,7 @@
use vars qw/$VERSION/;
-$VERSION = substr(q$Revision: 2.5 $, 10);
+$VERSION = substr(q$Revision: 2.6 $, 10);
sub get_locale_message {
my ($code, $message, @arg) = @_;
@@ -81,7 +81,8 @@
$page = readin(find_special_page('interact'));
if (defined $page) {
$page =~ s#\[message\]#$msg#ig;
- ::response(::interpolate_html($page, 1));
+ ::interpolate_html($page, 1);
+ ::response();
}
else {
logError( "Missing special page: interact" , '');
2.142 +35 -69 interchange/lib/Vend/Interpolate.pm
rev 2.142, prev_rev 2.141
Index: Interpolate.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Interpolate.pm,v
retrieving revision 2.141
retrieving revision 2.142
diff -u -r2.141 -r2.142
--- Interpolate.pm 2 Jan 2003 22:41:31 -0000 2.141
+++ Interpolate.pm 14 Jan 2003 02:25:53 -0000 2.142
@@ -1,6 +1,6 @@
# Vend::Interpolate - Interpret Interchange tags
#
-# $Id: Interpolate.pm,v 2.141 2003/01/02 22:41:31 jon Exp $
+# $Id: Interpolate.pm,v 2.142 2003/01/14 02:25:53 mheins Exp $
#
# Copyright (C) 1996-2002 Red Hat, Inc. <interchange@redhat.com>
#
@@ -27,7 +27,7 @@
require Exporter;
@ISA = qw(Exporter);
-$VERSION = substr(q$Revision: 2.141 $, 10);
+$VERSION = substr(q$Revision: 2.142 $, 10);
@EXPORT = qw (
@@ -455,6 +455,9 @@
sub substitute_image {
my ($text) = @_;
+ ## Allow no substitution of downloads
+ return if $::Pragma->{download};
+
## If post_page routine processor returns true, return. Otherwise,
## continue image rewrite
if($::Pragma->{post_page}) {
@@ -502,54 +505,6 @@
}
}
-#
-# This is one entry point for page display.
-# Evaluates all of the Interchange tags. Does some basic cache management
-# for static page building.
-#
-
-sub cache_html {
- my ($html,$wantref) = @_;
- my ($name, @post);
- my ($bit, %post);
-
- # static page building should be independent from secure mode
- my $secure = $CGI::secure;
- $CGI::secure = 0;
-
- $CacheInvalid = 0;
-
- vars_and_comments(\$html);
-
- my $complete;
- my $full = '';
- my $parse = new Vend::Parse;
- $parse->parse($html);
- while($parse->{_buf}) {
- substitute_image(\$parse->{OUT});
- Vend::Dispatch::response( \$parse->{OUT});
- $full .= $parse->{OUT};
- $parse->{OUT} = '';
- $parse->parse('');
- }
- substitute_image(\$parse->{OUT})
- unless $parse->{ABORT};
- $full .= $parse->{OUT} if $full;
- $CacheInvalid++ if $parse->{INVALID};
- $Vend::CachePage = $CacheInvalid ? undef : 1;
- $complete = \$full if $full;
-
- # restore secure mode
- $CGI::secure = $secure;
-
- if (defined $Vend::BuildingPages) {
- return $full if $full;
- return $parse->{OUT};
- }
- return (\$parse->{OUT}, $complete || undef) if defined $wantref;
- return ($parse->{OUT});
-}
-
sub dynamic_var {
my $varname = shift;
@@ -641,22 +596,22 @@
unless $opt and $opt->{onfly};
# Returns, could be recursive
- my $parse = new Vend::Parse;
+ my $parse = new Vend::Parse $wantref;
$parse->parse($html);
while($parse->{_buf}) {
if($toplevel and $parse->{SEND}) {
delete $parse->{SEND};
- substitute_image(\$parse->{OUT});
- ::response(\$parse->{OUT});
- $parse->{OUT} = '';
+ ::response();
+ $parse->destination($parse->{_current_output});
}
$parse->parse('');
}
- substitute_image(\$parse->{OUT});
- return \$parse->{OUT} if defined $wantref;
- return $parse->{OUT};
+ return $parse->{OUT} if defined $wantref;
+ return ${$parse->{OUT}};
}
+*cache_html = \&interpolate_html;
+
my $Filters_initted;
sub filter_value {
@@ -1426,6 +1381,13 @@
$op .= qq% $operator $comp%
if defined $comp;
}
+ elsif($base =~ /^warnings?$/) {
+ my $warn = 0;
+ if(my $ary = $Vend::Session->{warnings}) {
+ ref($ary) eq 'ARRAY' and $warn = scalar(@$ary);
+ }
+ $op = $warn;
+ }
elsif($base eq 'validcc') {
$CacheInvalid = 1;
no strict 'refs';
@@ -1478,7 +1440,7 @@
for(@addl) {
my $chain = /^\[[Aa]/;
last if ($chain ^ $status);
- $status = (new Vend::Parse)->parse($_)->{OUT};
+ $status = ${(new Vend::Parse)->parse($_)->{OUT}};
}
#::logDebug("if status=$status");
@@ -4185,14 +4147,14 @@
return undef if ! ref $hash;
}
if($ucase) {
- $body =~ s!\{($Codere)\}!$hash->{"\L$1"}!g;
- $body =~ s!\{($Codere)\?($Codere)\:($Codere)\}!
+ $body =~ s!\{([A-Z_][A-Z_]+)\}!$hash->{"\L$1"}!g;
+ $body =~ s!\{([A-Z_][A-Z_]+)\?([A-Z_][A-Z_]+)\:([A-Z_][A-Z_]+)\}!
length($hash->{lc $1}) ? $hash->{lc $2} : $hash->{lc $3}
!eg;
- $body =~ s!\{($Codere)\|($Some)\}!$hash->{lc $1} || $2!eg;
- $body =~ s!\{($Codere)\s+($Some)\}! $hash->{lc $1} ? $2 : ''!eg;
- 1 while $body =~ s!\{($Codere)\?\}($Some){/\1\?\}! $hash->{lc $1} ? $2 : ''!eg;
- 1 while $body =~ s!\{($Codere)\:\}($Some){/\1\:\}! $hash->{lc $1} ? '' : $2!eg;
+ $body =~ s!\{([A-Z_][A-Z_]+)\|($Some)\}!$hash->{lc $1} || $2!eg;
+ $body =~ s!\{([A-Z_][A-Z_]+)\s+($Some)\}! $hash->{lc $1} ? $2 : ''!eg;
+ 1 while $body =~ s!\{([A-Z_][A-Z_]+)\?\}($Some){/\1\?\}! $hash->{lc $1} ? $2 : ''!eg;
+ 1 while $body =~ s!\{([A-Z_][A-Z_]+)\:\}($Some){/\1\:\}! $hash->{lc $1} ? '' : $2!eg;
$body =~ s!\{(\w+)\:+(\w+)\:+(.*?)\}! tag_data($1, $2, $3) !eg;
}
else {
@@ -5244,8 +5206,12 @@
}
my $id = $tab;
$id .= "::$key" if $key;
- my $meta = Vend::Table::Editor::meta_record($id, $view, $opt->{table});
-
+ my $meta = Vend::Table::Editor::meta_record(
+ $id,
+ $view,
+ $opt->{table},
+ $opt->{extended_only},
+ );
if(! $meta) {
$opt->{object} = {
matches => 1,
@@ -5908,9 +5874,9 @@
$file = Vend::Util::escape_chars($file);
if(!$opt->{auto} and $Global::NoAbsolute and (file_name_is_absolute($file) or $file =~ m#\.\./.*\.\.#)) {
- ::logError("Can't use file '%s' with NoAbsolute set", $file);
- ::logGlobal({ level => 'auth'}, "Can't use file '%s' with NoAbsolute set", $file);
- return '';
+ ::logError("Can't use file '%s' with NoAbsolute set", $file);
+ ::logGlobal({ level => 'auth'}, "Can't use file '%s' with NoAbsolute set", $file);
+ return '';
}
if( ! -f $file or $secs && (stat(_))[9] < (time() - $secs) ) {
2.9 +85 -4 interchange/lib/Vend/Page.pm
rev 2.9, prev_rev 2.8
Index: Page.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Page.pm,v
retrieving revision 2.8
retrieving revision 2.9
diff -u -r2.8 -r2.9
--- Page.pm 7 Sep 2002 18:45:42 -0000 2.8
+++ Page.pm 14 Jan 2003 02:25:53 -0000 2.9
@@ -1,6 +1,6 @@
# Vend::Page - Handle Interchange page routing
#
-# $Id: Page.pm,v 2.8 2002/09/07 18:45:42 mheins Exp $
+# $Id: Page.pm,v 2.9 2003/01/14 02:25:53 mheins Exp $
#
# Copyright (C) 1996-2002 Red Hat, Inc. <interchange@redhat.com>
#
@@ -45,7 +45,7 @@
use vars qw/$VERSION/;
-$VERSION = substr(q$Revision: 2.8 $, 10);
+$VERSION = substr(q$Revision: 2.9 $, 10);
my $wantref = 1;
@@ -70,7 +70,8 @@
unless defined $page;
$page =~ s#\[subject\]#$subject#ig;
$Vend::PageInit = 0;
- return ::response(::interpolate_html($page, 1));
+ interpolate_html($page, 1);
+ ::response();
}
# Displays the catalog page NAME. If the file is not found, displays
@@ -122,7 +123,8 @@
if (defined $page) {
$Vend::PageInit = 0;
- ::response(::interpolate_html($page, 1, $opt));
+ interpolate_html($page, 1, $opt);
+ ::response();
return 1;
}
else {
@@ -191,6 +193,85 @@
|| find_special_page('search')
if ! $CGI::values{mv_nextpage};
return 1;
+}
+
+sub output_test {
+ my ($tag) = @_;
+ my $ary;
+ return '' unless $ary = $Vend::OutPtr{lc $tag};
+ for(@$ary) {
+ next unless $Vend::Output[$_];
+ next unless length(${$Vend::Output[$_]});
+ return 1;
+ }
+ return '';
+}
+
+sub output_cat {
+ my ($tag) = @_;
+ my $ary;
+ return '' unless $ary = $Vend::OutPtr{lc $tag};
+ my $out = '';
+ for(@$ary) {
+ next unless $Vend::Output[$_];
+ $out .= ${$Vend::Output[$_]};
+ undef $Vend::Output[$_];
+ }
+ return $out;
+}
+
+sub output_ary {
+ my ($tag) = @_;
+ my $ary;
+ return '' unless $ary = $Vend::OutPtr{lc $tag};
+ my @out;
+ for(@$ary) {
+ next unless $Vend::Output[$_];
+ push @out, ${$Vend::Output[$_]};
+ undef $Vend::Output[$_];
+ }
+ return \@out;
+}
+
+sub output_rest {
+ my ($tag) = @_;
+ my $out = '';
+ for(@$Vend::Output) {
+ next unless $_;
+ $out .= ${$Vend::Output[$_]};
+ undef $Vend::Output[$_];
+ }
+ return $out;
+}
+
+sub templatize {
+ my ($template) = @_;
+ $template ||= $Vend::Cfg->{PageTemplate} || '{:REST}';
+#::logDebug("Templatizing, template length=" . length($template));
+ my $body = $template;
+
+ $body =~ s!\{\{\@([A-Z][A-Z_]*[A-Z])\}\}(.*?)\{\{/\@\1\}\}!
+ my $tag = lc $1;
+ my $ary;
+ return '' unless $ary = $Vend::OutPtr{$tag};
+ my $tpl = $2;
+ my $out = '';
+ for(@$ary) {
+ my $ref = $Vend::Output[$_]
+ or next;
+ my $chunk = $tpl;
+ $chunk =~ s/\{$tag\}/$$ref/;
+ undef $Vend::Output[$_];
+ $out .= $chunk;
+ }
+ $out;
+ !sge;
+ 1 while $body =~ s!\{\{([A-Z][A-Z_]*[A-Z])\?\}\}(.*?)\{\{/\1\?\}\}! output_test(lc $1) ? $2 : ''!egs;
+ 1 while $body =~ s!\{\{([A-Z][A-Z_]*[A-Z])\:\}\}(.*?)\{\{/\1\:\}\}! output_test(lc $1) ? '' : $2!egs;
+ $body =~ s!\{\{([A-Z][A-Z_]*[A-Z])\}\}!output_cat($1)!eg;
+ $body =~ s!\{\{:DEFAULT\}\}!output_cat('')!e;
+ $body =~ s!\{\{:REST\}\}!output_rest('')!e;
+ @Vend::Output = (\$body);
}
1;
2.24 +127 -30 interchange/lib/Vend/Parse.pm
rev 2.24, prev_rev 2.23
Index: Parse.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Parse.pm,v
retrieving revision 2.23
retrieving revision 2.24
diff -u -r2.23 -r2.24
--- Parse.pm 3 Nov 2002 14:17:15 -0000 2.23
+++ Parse.pm 14 Jan 2003 02:25:53 -0000 2.24
@@ -1,6 +1,6 @@
# Vend::Parse - Parse Interchange tags
#
-# $Id: Parse.pm,v 2.23 2002/11/03 14:17:15 kwalsh Exp $
+# $Id: Parse.pm,v 2.24 2003/01/14 02:25:53 mheins Exp $
#
# Copyright (C) 1996-2002 Red Hat, Inc. <interchange@redhat.com>
#
@@ -35,7 +35,7 @@
@ISA = qw(Exporter Vend::Parser);
-$VERSION = substr(q$Revision: 2.23 $, 10);
+$VERSION = substr(q$Revision: 2.24 $, 10);
@EXPORT = ();
@EXPORT_OK = qw(find_matching_end);
@@ -155,8 +155,14 @@
unless => \&Vend::Interpolate::tag_unless,
);
+my %Special = qw/
+ goto 1
+ bounce 1
+ output 1
+ /;
my %Routine = (
+ output => sub { return '' },
bounce => sub { return '' },
if => \&Vend::Interpolate::tag_self_contained_if,
unless => \&Vend::Interpolate::tag_unless,
@@ -277,7 +283,7 @@
mvasp 1
/ );
-my $Initialized = 0;
+my $Initialized;
sub global_init {
add_tags($Global::UserTag);
@@ -292,17 +298,88 @@
sub new {
my $class = shift;
+ my $opt = shift;
my $self = new Vend::Parser;
$self->{INVALID} = 0;
add_tags($Vend::Cfg->{UserTag})
unless $Vend::Tags_added++;
- $self->{TOPLEVEL} = 1 if ! $Initialized;
-
- $self->{OUT} = '';
bless $self, $class;
- $Initialized = $self;
+
+ if($opt) {
+ $self->destination('');
+ }
+ else {
+ my $string = '';
+ $self->{OUT} = $self->{DEFAULT_OUT} = \$string;
+ }
+#::logDebug("OUT=$self->{OUT}");
+
+ if (! $Initialized) {
+ $Initialized = $self;
+ $self->{TOPLEVEL} = 1;
+ }
+
+ return $self;
+}
+
+sub destination {
+ my ($s, $name, $attr) = @_;
+ $s->{_outname} ||= [];
+
+ if(! defined $name) {
+ pop @{$s->{_outname}};
+ $name = pop @{$s->{_outname}};
+ }
+ else {
+ $name = lc $name;
+ push @{$s->{_outname}}, $name;
+ }
+
+#::logDebug("destination set to '$name'");
+ $name ||= '';
+
+ my $string = '';
+ $s->{OUT} = \$string;
+ push @Vend::Output, $s->{OUT};
+
+ my $nary = $Vend::OutPtr{$name} ||= [];
+ push @$nary, $#Vend::Output;
+
+ return unless $attr;
+#::logDebug("destination extended output settings");
+
+ my $fary = $Vend::OutFilter{$name};
+
+ if ($name) {
+ $Vend::MultiOutput = 1;
+ if(! $Vend::OutFilter{''}) {
+ my $ary = [];
+ push @$ary, \&Vend::Interpolate::substitute_image
+ unless $::Pragma->{no_image_rewrite};
+ $Vend::OutFilter{''} = $ary;
+ }
+
+ if(! $fary) {
+ $fary = $Vend::OutFilter{$name} = [];
+ if($attr->{output_filter}) {
+ my $filt = $attr->{output_filter};
+ push @$fary, sub {
+ my $ref = shift;
+ $$ref = Vend::Interpolate::filter_value($filt, $$ref);
+ return;
+ };
+ }
+ if (! $attr->{no_image_parse} and ! $::Pragma->{no_image_rewrite}) {
+ push @$fary, \&Vend::Interpolate::substitute_image;
+ }
+ if ($attr->{output_extended}) {
+ $Vend::OutExtended{$name} = $attr;
+ }
+ }
+ }
+ return $s->{OUT};
}
my %noRearrange = qw//;
@@ -358,7 +435,15 @@
}
$tag = $Alias{$tag};
};
- if(
+ if($Special{$tag}) {
+ my $ref = pop(@_);
+ my @args = @$ref{ @{$Order{$tag}} };
+ push @args, $ref if $addAttr{$tag};
+#::logDebug("Parse-do_tag: args now=" . ::uneval_it(\@args) );
+ $Initialized->start($tag, $ref);
+ return;
+ }
+ elsif(
( ref($_[-1]) && scalar @{$Order{$tag}} > scalar @_ and ! $noRearrange{$tag})
)
{
@@ -434,7 +519,7 @@
sub text {
my($self, $text) = @_;
- $self->{OUT} .= $text;
+ ${$self->{OUT}} .= $text;
}
my %Monitor = ( qw( tag_ary 1 ) );
@@ -504,6 +589,7 @@
my($self, $tag, $attr, $attrseq, $origtext, $empty_container) = @_;
$tag =~ tr/-/_/; # canonical
$Vend::CurrentTag = $tag = lc $tag;
+#::logDebug("start tag=$tag");
my $buf = \$self->{_buf};
my($tmpbuf);
@@ -521,7 +607,7 @@
$Vend::restricted,
);
}
- $self->{OUT} .= $origtext;
+ ${$self->{OUT}} .= $origtext;
return 1;
}
elsif (! $Vend::admin) {
@@ -549,7 +635,8 @@
return 1;
}
else {
- $self->{OUT} .= $origtext;
+#::logDebug("no alias. origtext: $origtext");
+ ${$self->{OUT}} .= $origtext;
return 1;
}
}
@@ -572,7 +659,7 @@
my $p = new Vend::Parse;
$p->parse($attr->{$trib});
- $attr->{$trib} = $p->{OUT};
+ $attr->{$trib} = ${$p->{OUT}};
$self->{INVALID} += $p->{INVALID};
}
@@ -617,22 +704,13 @@
#interpolate=$attr->{interpolate}
#EOF
- if($tag =~ /^[gb]o/) {
- if($tag eq 'goto') {
- return 1 if resolve_if_unless($attr);
- if(! $args[0]) {
- $$buf = '';
- $Initialized->{_buf} = '';
- $self->{ABORT} = 1
- if $attr->{abort};
- return ($self->{SEND} = 1);
- }
- goto_buf($args[0], $buf);
- $self->{ABORT} = 1;
- $self->{SEND} = 1 if ! $$buf;
+ if($Special{$tag}) {
+ if($tag eq 'output') {
+ $self->destination($attr->{name}, $attr);
return 1;
}
elsif($tag eq 'bounce') {
+#::logDebug("bouncing...");
return 1 if resolve_if_unless($attr);
if(! $attr->{href} and $attr->{page}) {
$attr->{href} = Vend::Interpolate::tag_area($attr->{page});
@@ -652,9 +730,27 @@
$self->{SEND} = 1;
return 1;
}
+ elsif($tag eq 'goto') {
+ return 1 if resolve_if_unless($attr);
+ if(! $args[0]) {
+ $$buf = '';
+ $Initialized->{_buf} = '';
+ $self->{ABORT} = 1
+ if $attr->{abort};
+ return ($self->{SEND} = 1);
+ }
+ goto_buf($args[0], $buf);
+ $self->{ABORT} = 1;
+ $self->{SEND} = 1 if ! $$buf;
+ return 1;
+ }
}
local($SIG{__DIE__}) = \&eval_die;
+
+#::logDebug("output attr=$attr->{_output}");
+ $self->destination($attr->{_output}) if $attr->{_output};
+
if($hasEndTag{$tag}) {
# Handle embedded tags, but only if interpolate is
# defined (always if using old tags)
@@ -664,17 +760,17 @@
if ($attr->{interpolate} and !$empty_container) {
my $p = new Vend::Parse;
$p->parse($tmpbuf);
- $tmpbuf = $p->{ABORT} ? '' : $p->{OUT};
+ $tmpbuf = $p->{ABORT} ? '' : ${$p->{OUT}};
}
if($attr->{reparse} ) {
$$buf = ($routine->(@args,$tmpbuf)) . $$buf;
}
else {
- $self->{OUT} .= &{$routine}(@args,$tmpbuf);
+ ${$self->{OUT}} .= &{$routine}(@args,$tmpbuf);
}
}
elsif(! $attr->{interpolate}) {
- $self->{OUT} .= &$routine( @args );
+ ${$self->{OUT}} .= &$routine( @args );
}
else {
$$buf = &$routine( @args ) . $$buf;
@@ -682,6 +778,7 @@
$self->{SEND} = $attr->{'send'} || undef;
#::logDebug("Returning from $tag");
+ $self->destination() if $attr->{_output};
return 1;
}
@@ -689,7 +786,7 @@
my($self, $tag) = @_;
my $save = $tag;
$tag =~ tr/-/_/; # canonical
- $self->{OUT} .= "[/$save]";
+ ${$self->{OUT}} .= "[/$save]";
}
sub find_html_end {
@@ -797,7 +894,7 @@
and do {
my $p = new Vend::Parse;
$p->parse($val);
- $val = $p->{OUT};
+ $val = ${$p->{OUT}};
};
}
# truncated just after the '=' or inside the attribute
2.8 +5 -4 interchange/lib/Vend/Parser.pm
rev 2.8, prev_rev 2.7
Index: Parser.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Parser.pm,v
retrieving revision 2.7
retrieving revision 2.8
diff -u -r2.7 -r2.8
--- Parser.pm 14 Aug 2002 15:32:04 -0000 2.7
+++ Parser.pm 14 Jan 2003 02:25:53 -0000 2.8
@@ -1,6 +1,6 @@
# Vend::Parser - Interchange parser class
#
-# $Id: Parser.pm,v 2.7 2002/08/14 15:32:04 mheins Exp $
+# $Id: Parser.pm,v 2.8 2003/01/14 02:25:53 mheins Exp $
#
# Copyright (C) 1997-2002 Red Hat, Inc. <interchange@redhat.com>
#
@@ -66,7 +66,7 @@
use HTML::Entities ();
use vars qw($VERSION);
-$VERSION = substr(q$Revision: 2.7 $, 10);
+$VERSION = substr(q$Revision: 2.8 $, 10);
sub new
@@ -101,7 +101,8 @@
while (1) { # the loop will end by returning when text is parsed
# If a preceding routine sent the response, stop
if ($Vend::Sent) {
- $self->{OUT} = $self->{_buf} = '';
+ ${$self->{OUT}} = $self->{_buf} = '';
+ @Vend::Output = ();
return $self;
}
# We try to pull off any plain text (anything before a '[')
@@ -142,7 +143,7 @@
#::logDebug("tag='$tag' eat='$eaten'");
# Then we would like to find some attributes
- while ( $$buf =~ s|^(([a-zA-Z][-a-zA-Z0-9._]*)\s*)|| or
+ while ( $$buf =~ s|^(([_a-zA-Z][-a-zA-Z0-9._]*)\s*)|| or
$$buf =~ s|^(([=!<>][=~]?)\s+)|| )
{
$eaten .= $1;
2.5 +16 -4 interchange/lib/Vend/Table/DB_File.pm
rev 2.5, prev_rev 2.4
Index: DB_File.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Table/DB_File.pm,v
retrieving revision 2.4
retrieving revision 2.5
diff -u -r2.4 -r2.5
--- DB_File.pm 10 Sep 2002 17:29:09 -0000 2.4
+++ DB_File.pm 14 Jan 2003 02:25:53 -0000 2.5
@@ -1,6 +1,6 @@
# Vend::Table::DB_File - Access an Interchange table stored in a DB file hash
#
-# $Id: DB_File.pm,v 2.4 2002/09/10 17:29:09 mheins Exp $
+# $Id: DB_File.pm,v 2.5 2003/01/14 02:25:53 mheins Exp $
#
# Copyright (C) 1996-2002 Red Hat, Inc. <interchange@redhat.com>
#
@@ -30,7 +30,7 @@
use Vend::Table::Common;
@ISA = qw(Vend::Table::Common);
-$VERSION = substr(q$Revision: 2.4 $, 10);
+$VERSION = substr(q$Revision: 2.5 $, 10);
sub create {
my ($class, $config, $columns, $filename) = @_;
@@ -100,8 +100,20 @@
}
}
- my $dbm = tie(%$tie, 'DB_File', $filename, $flags, 0600)
- or die "Could not open '$filename': $!";
+ my $dbm;
+ my $failed = 0;
+
+ my $retry = $Vend::Cfg->{Limit}{dbm_open_retries} || 10;
+
+ while( $failed < $retry ) {
+ $dbm = tie(%$tie, 'DB_File', $filename, $flags, 0600)
+ and undef($failed), last;
+ $failed++;
+ select(undef,undef,undef,$failed * .100);
+ }
+
+ die ::errmsg("%s could not tie to '%s': %s", 'DB_File', $filename, $!)
+ unless $dbm;
my $columns = [split(/\t/, $tie->{'c'})];
1.22 +574 -278 interchange/lib/Vend/Table/Editor.pm
rev 1.22, prev_rev 1.21
Index: Editor.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Table/Editor.pm,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- Editor.pm 13 Dec 2002 12:53:22 -0000 1.21
+++ Editor.pm 14 Jan 2003 02:25:53 -0000 1.22
@@ -1,6 +1,6 @@
# Vend::Table::Editor - Swiss-army-knife table editor for Interchange
#
-# $Id: Editor.pm,v 1.21 2002/12/13 12:53:22 mheins Exp $
+# $Id: Editor.pm,v 1.22 2003/01/14 02:25:53 mheins Exp $
#
# Copyright (C) 2002 ICDEVGROUP <interchange@icdevgroup.org>
# Copyright (C) 2002 Mike Heins <mike@perusion.net>
@@ -26,7 +26,7 @@
package Vend::Table::Editor;
use vars qw($VERSION);
-$VERSION = substr(q$Revision: 1.21 $, 10);
+$VERSION = substr(q$Revision: 1.22 $, 10);
use Vend::Util;
use Vend::Interpolate;
@@ -157,7 +157,7 @@
}
sub meta_record {
- my ($item, $view, $mdb) = @_;
+ my ($item, $view, $mdb, $extended_only) = @_;
#::logDebug("meta_record: item=$item view=$view mdb=$mdb");
return undef unless $item;
@@ -191,14 +191,19 @@
# Get additional settings from extended field, which is a serialized
# hash
my $hash;
- if($record->{extended}) {
+ if(! $record->{extended}) {
+ return undef if $extended_only;
+ }
+ else {
## From Vend::Util
$hash = get_option_hash($record->{extended});
+ $record = {} if $extended_only;
if(ref $hash eq 'HASH') {
@$record{keys %$hash} = values %$hash;
}
else {
undef $hash;
+ return undef if $extended_only;
}
}
@@ -306,6 +311,7 @@
append
attribute
db
+ class
extra
field
filter
@@ -490,7 +496,7 @@
<B>$LABEL$</B>
</TD>
<TD VALIGN=TOP>
- <TABLE CELLSPACING=0 CELLMARGIN=0><TR><TD>$WIDGET$</TD><TD><I>$HELP$</I>{HELP_URL}<BR><A HREF="$HELP_URL$">help</A>{/HELP_URL}</TD></TR></TABLE>
+ <TABLE CELLSPACING=0 CELLMARGIN=0><TR><TD>$WIDGET$</TD><TD>$HELP${HELP_URL}<BR><A HREF="$HELP_URL$">help</A>{/HELP_URL}</TD></TR></TABLE>
</TD>
</TR>
EOF
@@ -536,42 +542,49 @@
$opt ||= {};
- my @chars = reverse(0 .. 9, 'a' .. 'e');
my @colors;
$opt->{tab_bgcolor_template} ||= '#xxxxxx';
- $opt->{tab_height} ||= '30';
- $opt->{tab_width} ||= '120';
- $opt->{panel_height} ||= '600';
- $opt->{panel_width} ||= '800';
+ $opt->{tab_height} ||= '20'; $opt->{tab_width} ||= '120';
$opt->{panel_id} ||= 'mvpan';
$opt->{tab_horiz_offset} ||= '10';
$opt->{tab_vert_offset} ||= '8';
+ my $width_height;
$opt->{tab_style} ||= q{
text-align:center;
font-family: sans-serif;
line-height:150%;
+ font-size: smaller;
border:2px;
border-color:#999999;
border-style:outset;
border-bottom-style:none;
};
- $opt->{panel_style} ||= q{
+ if($opt->{ui_style}) {
+ $opt->{panel_style} ||= q{
+ padding: 0;
+ };
+ $width_height = '';
+ }
+ else {
+ $opt->{panel_style} ||= q{
font-family: sans-serif;
font-size: smaller;
+ padding: 0;
border: 2px;
border-color:#999999;
border-style:outset;
};
- $opt->{layer_tab_style} ||= q{
- font-weight:bold;
- text-align:center;
- font-family:sans-serif;
- };
- $opt->{layer_panel_style} ||= q{
- font-family:sans-serif;
- padding:6px;
- };
+ $opt->{panel_height} ||= '600';
+ $opt->{panel_width} ||= '800';
+ $width_height = <<EOF;
+ width: $opt->{panel_width}px;
+ height: $opt->{panel_height}px;
+EOF
+ }
+
+ $opt->{panel_shade} ||= 'e';
+ my @chars = reverse(0 .. 9, 'a' .. $opt->{panel_shade});
my $id = $opt->{panel_id};
my $vpf = $id . '_';
my $num_panels = scalar(@$cont);
@@ -579,15 +592,24 @@
my $num_rows = POSIX::ceil( $num_panels / $opt->{tab_width});
my $width = $opt->{panel_width};
my $height = $opt->{tab_height} * $num_rows + $opt->{panel_height};
- my $panel_y =
+ my $panel_y;
+ my $int1;
+ my $int2;
+ if($opt->{ui_style}) {
+ $panel_y = 2;
+ $int1 = $int2 = 0;
+ }
+ else {
+ $panel_y =
$num_rows
* ($opt->{tab_height} - $opt->{tab_vert_offset})
+ $opt->{tab_vert_offset};
- my $int1 = $panel_y - 2;
- my $int2 = $opt->{tab_height} * $num_rows;
+ $int1 = $panel_y - 2;
+ $int2 = $opt->{tab_height} * $num_rows;
+ }
for(my $i = 0; $i < $num_panels; $i++) {
my $c = $opt->{tab_bgcolor_template} || '#xxxxxx';
- $c =~ s/x/$chars[$i] || 'e'/eg;
+ $c =~ s/x/$chars[$i] || $opt->{panel_shade}/eg;
$colors[$i] = $c;
}
my $cArray = qq{var ${vpf}colors = ['} . join("','", @colors) . qq{'];};
@@ -606,6 +628,8 @@
var ${vpf}hOffset = $opt->{tab_horiz_offset};
$cArray
+var ${vpf}uptabs = new Array;
+var ${vpf}dntabs = new Array;
var ${vpf}divLocation = new Array(${vpf}numLocations)
var ${vpf}newLocation = new Array(${vpf}numLocations)
for(var i=0; i<${vpf}numLocations; ++i) {
@@ -642,6 +666,40 @@
div.style.left = (newPos % ${vpf}tabsPerRow) * ${vpf}tabWidth + (${vpf}hOffset * (Math.floor(newPos / ${vpf}tabsPerRow)))
}
+function ${vpf}tripTab(n) {
+ // n is the ID of the division that was clicked
+ // firstTab is the location of the first tab in the selected row
+ var el;
+ for(var i = 0; i < ${vpf}dntabs.length; i++) {
+ el = document.getElementById('${vpf}td' + i);
+ if(el != undefined) {
+ el.innerHTML = ${vpf}dntabs[ i ];
+ el.style.backgroundColor = '#B4B0AA';
+ }
+ }
+ el = document.getElementById('${vpf}td' + n);
+ el.innerHTML = ${vpf}uptabs[ n ];
+ el.style.backgroundColor = '#D4D0C8';
+ // Set tab positions & zIndex
+ // Update location
+ var j = 1;
+ for(var i=0; i<${vpf}numDiv; ++i) {
+ var loc = ${vpf}newLocation[i]
+ var div = ${vpf}getDiv("panel",i)
+ if(i == n) {
+ ${vpf}setZIndex(div, ${vpf}numLocations +1);
+ div.style.display = 'block';
+ div.style.backgroundColor = ${vpf}colors[0];
+ }
+ else {
+ ${vpf}setZIndex(div, ${vpf}numLocations - loc)
+ div.style.display = 'none';
+ div.style.backgroundColor = ${vpf}colors[j++];
+ }
+ ${vpf}divLocation[i] = loc
+ }
+}
+
function ${vpf}selectTab(n) {
// n is the ID of the division that was clicked
// firstTab is the location of the first tab in the selected row
@@ -681,13 +739,6 @@
}
}
-// Nav4: position component into a table
-function ${vpf}positionPanel() {
- document.$id.top=document.panelLocator.pageY;
- document.$id.left=document.panelLocator.pageX;
-}
-if (document.layers) window.onload=${vpf}positionPanel;
-
//-->
</SCRIPT>
<STYLE type="text/css">
@@ -716,6 +767,8 @@
EOF
my $s1 = '';
my $s2 = '';
+ my @dntabs;
+ my @uptabs;
for(my $i = 0; $i < $num_panels; $i++) {
my $zi = $num_panels - $i;
my $pnum = $i + 1;
@@ -737,6 +790,47 @@
$cont->[$i]
$opt->{panel_append}
</DIV>
+EOF
+ if($opt->{ui_style}) {
+ $s2 .= <<EOF;
+<td class=subtabdown id="${vpf}td$i">
+EOF
+
+ $dntabs[$i] = <<EOF;
+ <table width="100%" border=0 cellspacing=0 cellpadding=0>
+ <tr>
+ <td class=subtabdownleft><a href="javascript:${vpf}tripTab($i,1)"><img src="bg.gif" width=16 height=16 border=0></a></td>
+ <td nowrap class=subtabdownfill><a href="javascript:${vpf}tripTab($i,1)" class=subtablink>$tit->[$i]</a></td>
+ <td class=subtabdownright><a href="javascript:${vpf}tripTab($i,1)"><img src="bg.gif" width=16 height=16 border=0></a></td>
+ </tr>
+ <tr>
+ <td colspan=3 class=darkshade><img src="bg.gif" height=1></td>
+ </tr>
+ <tr>
+ <td colspan=3 class=lightshade><img src="bg.gif" height=1></td>
+ </tr>
+ </table>
+EOF
+
+ $s2 .= $dntabs[$i];
+
+ $uptabs[$i] = <<EOF;
+ <table width="100%" border=0 cellspacing=0 cellpadding=0>
+ <tr>
+ <td class=subtableft><a href="javascript:${vpf}tripTab($i,1)"><img src="bg.gif" width=16 height=16 border=0></a></td>
+ <td nowrap class=subtabfill><a href="javascript:${vpf}tripTab($i,1)" class=subtablink>$tit->[$i]</a></td>
+ <td class=subtabright><a href="javascript:${vpf}tripTab($i,1)"><img src="bg.gif" width=16 height=16 border=0></a></td>
+ </tr>
+ <tr>
+ <td colspan=3 class=subtabfilllwr><img src="bg.gif" height=1></td>
+ </tr>
+ </table>
+EOF
+ $s2 .= "</td>\n";
+
+ }
+ else {
+ $s1 .= <<EOF;
<DIV
onclick="${vpf}selectTab($i)"
id="${id}tab$i"
@@ -752,53 +846,51 @@
$tit->[$i]
</DIV>
EOF
- my $lheight = $opt->{tab_height} * $num_rows;
- my $ltop = $num_rows * ($opt->{tab_height} - $opt->{tab_vert_offset})
- + $opt->{tab_vert_offset} - 2;
- $s2 .= <<EOF;
-<LAYER
- bgcolor="$colors[$i]"
- style="$opt->{layer_tab_style}"
- width="$opt->{tab_width}"
- height="$lheight"
- left="$left"
- top="$top"
- z-index="$zi"
- id="${id}tab$i"
- onfocus="${vpf}selectTab($i)"
- >
-<table width="100%" cellpadding=2 cellspacing=0>
-$tit->[$i]
-</LAYER>
-<LAYER
- bgcolor="$colors[$i]"
- style="$opt->{layer_panel_style}"
- width="$opt->{panel_width}"
- height="$opt->{panel_height}"
- left="0"
- top="$ltop"
- z-index="$zi"
- id="${id}panel$i"
- >$cont->[$i]
-</LAYER>
-EOF
+ }
}
my $start_index = $opt->{start_at_index} || 0;
$start_index += 0;
- return <<EOF;
-$out
+ if($s2) {
+ $Tag->output_to('third_tabs', { name => 'third_tabs' }, $s2);
+ }
+ $out .= <<EOF;
<div style="
position: relative;
left: 0; top: 0; width=100%; height=100%;
z-index: 0;
">
$s1
+EOF
+ if($s2) {
+ $out .= <<EOF;
+<script>
+EOF
+ for(my $i = 0; $i < @dntabs; $i++) {
+ $out .= "${vpf}uptabs[ $i ] = ";
+ $out .= $Tag->jsq($uptabs[$i]);
+ $out .= ";\n";
+ $out .= "${vpf}dntabs[ $i ] = ";
+ $out .= $Tag->jsq($dntabs[$i]);
+ $out .= ";\n";
+ }
+ $out .= <<EOF;
+ ${vpf}tripTab($start_index);
+</script>
+EOF
+ }
+ else {
+ $out .= <<EOF;
<script>
${vpf}selectTab($start_index);
</script>
+EOF
+ }
+
+ $out .= <<EOF;
</div>
EOF
+
}
my $tcount_all;
@@ -923,6 +1015,7 @@
break_row_class => 'rbreak',
title_row_class => 'rmarq',
data_row_class => 'rnorm',
+ ok_button_style => 'font-weight: bold; width: 40px; text-align: center',
);
my %o_default_var = (qw/
@@ -932,7 +1025,7 @@
my %o_default_defined = (
mv_update_empty => 1,
- restrict_allow => 'page area var cgi',
+ restrict_allow => 'page area var',
);
my %o_default = (
@@ -947,7 +1040,6 @@
border_height => 1,
clear_image => 'bg.gif',
table_width => '100%',
- table_height => '100%',
);
# Build maps for ui_te_* option pass
@@ -1078,82 +1170,30 @@
#::logDebug("options now=" . ::uneval($opt));
}
- my $tmeta;
- if($opt->{no_table_meta}) {
- $tmeta = {};
- }
- else {
- $tmeta = meta_record($table, $opt->{ui_meta_view}) || {};
- }
-
- $opt->{view_from} ||= $tmeta->{view_from};
-
- if( ! $opt->{ui_meta_view}
- and $opt->{view_from}
- and $data
- and $opt->{ui_meta_view} = $data->{$opt->{view_from}}
- )
- {
- $tmeta = meta_record($table, $opt->{ui_meta_view}) || {};
- }
-
- # This section checks the passed options and converts them from
- # strings to refs if necessary
- FORMATS: {
- no strict 'refs';
- my $ref;
- for(qw/
- append
- default
- database
- error
- extra
- field
- filter
- form
- height
- help
- help_url
- label
- lookup
- lookup_query
- meta
- options
- outboard
- override
- passed
- pre_filter
- prepend
- template
- wid_href
- widget
- width
- / )
- {
- next if ref $opt->{$_};
- ($opt->{$_} = {}, next) if ! $opt->{$_};
- my $ref = {};
- my $string = $opt->{$_};
- $string =~ s/^\s+//gm;
- $string =~ s/\s+$//gm;
- while($string =~ m/^(.+?)=\s*(.+)/mg) {
- $ref->{$1} = $2;
- }
- $opt->{$_} = $ref;
- }
- }
-
my @mapdirect = qw/
- bottom_buttons
border_cell_class
border_height
- break_cell_style
border_height
+ bottom_buttons
break_cell_class
break_cell_style
+ break_cell_style
break_row_class
break_row_style
+ button_delete
clear_image
+ cancel_button_class
+ cancel_button_style
+ reset_button_class
+ reset_button_style
+ delete_button_class
+ delete_button_style
+ ok_button_class
+ ok_button_style
+ next_button_class
+ next_button_style
+ back_button_class
+ back_button_style
data_cell_class
data_cell_style
data_row_class
@@ -1161,9 +1201,10 @@
default_widget
display_type
file_upload
+ help_anchor
help_cell_class
help_cell_style
- help_anchor
+ image_meta
include_before
include_form
include_form_expand
@@ -1173,15 +1214,18 @@
label_cell_style
left_width
link_before
- link_table
+ link_extra
link_fields
- link_label
- link_sort
link_key
- link_view
+ link_label
link_no_blank
+ link_row_qual
+ link_auto_number
+ link_row_blank
+ link_sort
+ link_table
link_template
- link_extra
+ link_view
mv_blob_field
mv_blob_label
mv_blob_nick
@@ -1190,13 +1234,17 @@
mv_data_decode
mv_data_table
mv_update_empty
+ output_map
panel_height
panel_id
+ panel_class
+ panel_shade
+ panel_style
panel_width
restrict_allow
+ spacer_height
spacer_row_class
spacer_row_style
- spacer_height
start_at
tab_bgcolor_template
tab_cellpadding
@@ -1205,6 +1253,8 @@
tab_horiz_offset
tab_vert_offset
tab_width
+ tab_class
+ tab_style
tabbed
table_height
table_width
@@ -1227,20 +1277,10 @@
view_from
widget_cell_class
widget_cell_style
+ widget_class
/;
- for(grep defined $tmeta->{$_}, @mapdirect) {
- $opt->{$_} = $tmeta->{$_} if ! defined $opt->{$_};
- }
-
if($opt->{cgi}) {
- unshift @mapdirect, qw/
- item_id
- item_id_left
- ui_clone_id
- ui_clone_tables
- ui_sequence_edit
- /;
for(@mapdirect) {
next if ! defined $CGI->{$_};
$opt->{$_} = $CGI->{$_};
@@ -1253,10 +1293,108 @@
and $opt->{$row->[1]}{$1} = $CGI->{$_};
}
}
+ }
+
+#::logDebug("no_meta_display=$opt->{ui_no_meta_display}");
+ my $tmeta;
+ if($opt->{no_table_meta} || $opt->{ui_no_meta_display}) {
+ $tmeta = {};
+ }
+ else {
+ $tmeta = meta_record($table, $opt->{ui_meta_view}) || {};
+ }
+
+ $opt->{view_from} ||= $tmeta->{view_from};
+
+ my $baseopt;
+ if($opt->{no_base_meta} || $opt->{ui_no_meta_display}) {
+ $baseopt = {};
+ }
+ else {
+ $baseopt = meta_record('table-editor') || {};
+ delete $baseopt->{extended};
+ }
+
+ if( ! $opt->{ui_meta_view}
+ and $opt->{view_from}
+ and $opt->{view_from}
+ and $data
+ and ! $opt->{ui_no_meta_display}
+ and $opt->{ui_meta_view} = $data->{$opt->{view_from}}
+ )
+ {
+ $tmeta = meta_record($table, $opt->{ui_meta_view}) || {};
+ }
+
+ # This section checks the passed options and converts them from
+ # strings to refs if necessary
+ FORMATS: {
+ no strict 'refs';
+ my $ref;
+ for(qw/
+ append
+ default
+ database
+ error
+ extra
+ field
+ filter
+ form
+ height
+ help
+ help_url
+ label
+ lookup
+ lookup_query
+ meta
+ options
+ outboard
+ override
+ passed
+ pre_filter
+ prepend
+ template
+ wid_href
+ widget
+ width
+ / )
+ {
+ next if ref $opt->{$_};
+ ($opt->{$_} = {}, next) if ! $opt->{$_};
+ my $ref = {};
+ my $string = $opt->{$_};
+ $string =~ s/^\s+//gm;
+ $string =~ s/\s+$//gm;
+ while($string =~ m/^(.+?)=\s*(.+)/mg) {
+ $ref->{$1} = $2;
+ }
+ $opt->{$_} = $ref;
+ }
+ }
+
+ for(grep length($baseopt->{$_}), @mapdirect) {
+#::logDebug("checking baseopt->{$_}, baseopt=$baseopt->{$_} tmeta=$tmeta->{$_}");
+ $tmeta->{$_} = $baseopt->{$_} unless length $tmeta->{$_};
+ }
+
+ for(grep defined $tmeta->{$_}, @mapdirect) {
+#::logDebug("checking tmeta->{$_}, tmeta=$tmeta->{$_} opt=$opt->{$_}");
+#::logDebug("opt->{$_} is " . (defined $opt->{$_} ? 'defined' : 'undefined'));
+ $opt->{$_} = $tmeta->{$_} unless defined $opt->{$_};
+ }
- ### Why these here?
- #$table = $opt->{mv_data_table};
- #$key = $opt->{item_id};
+ if($opt->{cgi}) {
+ my @extra = qw/
+ item_id
+ item_id_left
+ ui_clone_id
+ ui_clone_tables
+ ui_sequence_edit
+ /;
+ for(@extra) {
+ next if ! defined $CGI->{$_};
+ $opt->{$_} = $CGI->{$_};
+ }
}
if($opt->{wizard}) {
@@ -1375,19 +1513,24 @@
$opt->{$mainp} = $thing;
}
- #### This code is also in main editor routine, change there too!
- my $rowdiv = $opt->{across} || 1;
- my $cells_per_span = $opt->{cell_span} || 2;
- my $rowcount = 0;
- my $span = $rowdiv * $cells_per_span;
- ####
+ # Init the button styles
- # Make standard fixed rows
- $opt->{spacer_row} = <<EOF;
-<tr$opt->{spacer_row_extra}>
-<td colspan=$span $opt->{spacer_row_extra}><img src="$opt->{clear_image}" width=1 height="$opt->{spacer_height}" alt=x></td>
-</tr>
-EOF
+ for my $ctype (qw/ok next back cancel delete reset/) {
+ my $mainp = $ctype . '_button_extra';
+ my $thing = '';
+ for my $ptype (qw/class style/) {
+ my $parm = $ctype . '_button_' . $ptype;
+ $opt->{$parm} ||= $tmeta->{$parm};
+ if(defined $opt->{$parm}) {
+ $thing .= qq{ $ptype="$opt->{$parm}"};
+ }
+ }
+ $opt->{$mainp} ||= $tmeta->{$mainp};
+ if($opt->{$mainp}) {
+ $thing .= " " . $opt->{$mainp};
+ }
+ $opt->{$mainp} = $thing;
+ }
###############################################################
# Get the field display information including breaks and labels
@@ -1396,6 +1539,7 @@
$opt->{ui_data_fields} = $tmeta->{ui_data_fields} || $tmeta->{options};
}
#::logDebug("fields were=$opt->{ui_data_fields}");
+
$opt->{ui_data_fields} =~ s/\r\n/\n/g;
$opt->{ui_data_fields} =~ s/\r/\n/g;
$opt->{ui_data_fields} =~ s/^[ \t]+//mg;
@@ -1421,6 +1565,42 @@
$opt->{ui_data_fields} =~ s/[\s,\0]+$//;
#::logDebug("fields now=$opt->{ui_data_fields}");
+ ## Visual field layout
+ if($opt->{ui_data_fields} =~ /[\w:.]+[ \t,]+\w+.*\n\w+/) {
+ my $cs = $opt->{colspan} ||= {};
+ my @things = split /\n/, $opt->{ui_data_fields};
+ my @rows;
+ my $max = 0;
+ for(@things) {
+ my @cols = split /[\s\0,]+/, $_;
+ my $cnt = scalar(@cols);
+ $max = $cnt if $cnt > $max;
+ push @rows, \@cols;
+ }
+ $opt->{across} = $max;
+ for(@rows) {
+ my $cnt = scalar(@$_);
+ if ($cnt < $max) {
+ my $name = $_->[-1];
+ $cs->{$name} = (($max - $cnt) * 2) + 1;
+ }
+ }
+ }
+
+ #### This code is also in main editor routine, change there too!
+ my $rowdiv = $opt->{across} || 1;
+ my $cells_per_span = $opt->{cell_span} || 2;
+ my $rowcount = 0;
+ my $span = $rowdiv * $cells_per_span;
+ ####
+
+ # Make standard fixed rows
+ $opt->{spacer_row} = <<EOF;
+<tr$opt->{spacer_row_extra}>
+<td colspan=$span $opt->{spacer_row_extra}><img src="$opt->{clear_image}" width=1 height="$opt->{spacer_height}" alt=x></td>
+</tr>
+EOF
+
$opt->{mv_nextpage} = $Global::Variable->{MV_PAGE}
if ! $opt->{mv_nextpage};
@@ -1470,9 +1650,9 @@
$key ||= $opt->{item_id};
if($opt->{cgi}) {
- $key ||= delete $CGI->{item_id};
- $opt->{item_id_left} ||= delete $CGI::values{item_id_left};
- $opt->{ui_sequence_edit} ||= delete $CGI::values{ui_sequence_edit};
+ $key ||= $CGI->{item_id};
+ $opt->{item_id_left} ||= $CGI::values{item_id_left};
+ $opt->{ui_sequence_edit} ||= $CGI::values{ui_sequence_edit};
}
if($key =~ /\0/ or (! $key and $key = delete $opt->{item_id_left}) ) {
@@ -1534,6 +1714,7 @@
my $append = $opt->{append};
my $check = $opt->{check};
+ my $class = $opt->{class} || {};
my $database = $opt->{database};
my $default = $opt->{default};
my $error = $opt->{error};
@@ -1558,6 +1739,7 @@
my $template = $opt->{template};
my $widget = $opt->{widget};
my $width = $opt->{width};
+ my $colspan = $opt->{colspan} || {};
my $blabel = $opt->{blabel};
my $elabel = $opt->{elabel};
@@ -1960,7 +2142,7 @@
}
$blob_widget = <<EOF unless $opt->{ui_blob_hidden};
<B>$msg1:</B> $blob_widget
-<INPUT TYPE=checkbox NAME=mv_blob_only VALUE=1$checked> $msg2</SMALL>
+<INPUT TYPE=checkbox NAME=mv_blob_only class="$opt->{widget_class}" VALUE=1$checked> $msg2</SMALL>
EOF
}
@@ -1970,7 +2152,7 @@
<SMALL>$opt->{mv_blob_title}<BR>
$loaded_from
</td>
- <td$opt->{widget_cell_extra}>
+ <td$opt->{data_cell_extra}>
$blob_widget
</td>
</TR>
@@ -2033,8 +2215,9 @@
no strict 'subs';
- chunk 'FORM_BEGIN', <<EOF; # unless $wo;
-$restrict_begin<FORM METHOD=$opt->{method} ACTION="$opt->{href}"$opt->{enctype}$opt->{form_extra}>
+ chunk ttag(), $restrict_begin;
+ chunk 'FORM_BEGIN', 'OUTPUT_MAP', <<EOF; # unless $wo;
+<FORM METHOD=$opt->{method} ACTION="$opt->{href}"$opt->{enctype}$opt->{form_extra}>
EOF
$hidden->{mv_click} = $opt->{process_filter};
@@ -2043,7 +2226,7 @@
$hidden->{mv_data_table} = $table;
$hidden->{mv_data_key} = $keycol;
- chunk 'HIDDEN_ALWAYS', <<EOF;
+ chunk 'HIDDEN_ALWAYS', 'OUTPUT_MAP', <<EOF;
<INPUT TYPE=hidden NAME=mv_session_id VALUE="$Vend::Session->{id}">
<INPUT TYPE=hidden NAME=mv_click VALUE="process_filter">
EOF
@@ -2107,9 +2290,13 @@
while ( ($hk, $hv) = each %{$opt->{hidden}} ) {
push @o, produce_hidden($hk, $hv);
}
- chunk 'HIDDEN_USER', join("", @o); # unless $wo;
+ chunk 'HIDDEN_USER', 'OUTPUT_MAP', join("", @o); # unless $wo;
}
+ if($opt->{tabbed} and $Session->{browser} !~ /Gecko/) {
+ $opt->{table_width} ||= $opt->{panel_width} + 10;
+ $opt->{table_height} ||= $opt->{panel_height} + 10;
+ }
chunk ttag(), <<EOF; # unless $wo;
<table class=touter border="0" cellspacing="0" cellpadding="0" width="$opt->{table_width}" height="$opt->{table_height}">
<tr>
@@ -2117,7 +2304,7 @@
<table class=tinner width="$opt->{inner_table_width}" height="$opt->{inner_table_height}" cellspacing=0 cellmargin=0 cellpadding="2" align="center" border="0">
EOF
- chunk ttag(), 'NO_TOP', <<EOF; # unless $opt->{no_top} or $wo;
+ chunk ttag(), 'NO_TOP OUTPUT_MAP', <<EOF; # unless $opt->{no_top} or $wo;
<tr>
<td colspan=$span$opt->{border_cell_extra}><img src="$opt->{clear_image}" width=1 height="$opt->{border_height}" alt=x></td>
</tr>
@@ -2134,21 +2321,22 @@
#### Extra buttons
my $extra_ok = $blob_widget
+ || $opt->{output_map}
|| $linecount > 4
|| defined $opt->{include_form}
|| $mlabel;
if ($extra_ok and ! $opt->{no_top} and ! $opt->{nosave}) {
if($opt->{back_text}) {
- chunk ttag(), '', <<EOF; # unless $wo;
+ chunk ttag(), 'OUTPUT_MAP', <<EOF; # unless $wo;
<tr$opt->{data_row_extra}>
-<td> </td>
+<td$opt->{label_cell_extra}> </td>
<td align=left colspan=$oddspan$opt->{data_cell_extra}>
EOF
- chunk 'COMBINED_BUTTONS_TOP', 'BOTTOM_BUTTONS', <<EOF; # if ! $opt->{bottom_buttons};
-<INPUT TYPE=submit NAME=mv_click VALUE="$opt->{back_text}"> <INPUT TYPE=submit NAME=mv_click VALUE="$opt->{cancel_text}"> <B><INPUT TYPE=submit NAME=mv_click VALUE="$opt->{next_text}"></B>
+ chunk 'COMBINED_BUTTONS_TOP', 'BOTTOM_BUTTONS OUTPUT_MAP', <<EOF;
+<INPUT TYPE=submit NAME=mv_click VALUE="$opt->{back_text}"$opt->{back_button_extra}> <INPUT TYPE=submit NAME=mv_click VALUE="$opt->{cancel_text}"$opt->{cancel_button_extra}> <B><INPUT TYPE=submit NAME=mv_click VALUE="$opt->{next_text}"$opt->{next_button_extra}></B>
<BR>
EOF
- chunk 'MLABEL', '', 'MESSAGES', $mlabel;
+ chunk 'MLABEL', 'OUTPUT_MAP', 'MESSAGES', $mlabel;
chunk ttag(), <<EOF;
</td>
</tr>
@@ -2156,47 +2344,46 @@
EOF
}
elsif ($opt->{wizard}) {
- chunk ttag(), 'NO_TOP', <<EOF;
+ chunk ttag(), 'NO_TOP OUTPUT_MAP', <<EOF;
<TR$opt->{data_row_extra}>
-<td> </td>
+<td$opt->{label_cell_extra}> </td>
<td align=left colspan=$oddspan$opt->{data_cell_extra}>
EOF
- chunk 'WIZARD_BUTTONS_TOP', 'BOTTOM_BUTTONS NO_TOP', <<EOF; # if ! $opt->{bottom_buttons};
-<INPUT TYPE=submit NAME=mv_click VALUE="$opt->{cancel_text}"> <B><INPUT TYPE=submit NAME=mv_click VALUE="$opt->{next_text}"></B>
+ chunk 'WIZARD_BUTTONS_TOP', 'BOTTOM_BUTTONS NO_TOP OUTPUT_MAP', <<EOF;
+<INPUT TYPE=submit NAME=mv_click VALUE="$opt->{cancel_text}"$opt->{cancel_button_extra}> <B><INPUT TYPE=submit NAME=mv_click VALUE="$opt->{next_text}"$opt->{next_button_extra}></B>
<BR>
EOF
- chunk 'MLABEL', 'BOTTOM_BUTTONS', 'MESSAGES', $mlabel;
- chunk ttag(), <<EOF;
+ chunk 'MLABEL', 'BOTTOM_BUTTONS OUTPUT_MAP', 'MESSAGES', $mlabel;
+ chunk ttag(), 'NO_TOP OUTPUT_MAP', <<EOF;
</td>
</tr>
$opt->{spacer_row}
EOF
}
else {
- chunk ttag(), 'BOTTOM_BUTTONS NO_TOP', <<EOF;
+ chunk ttag(), 'BOTTOM_BUTTONS NO_TOP OUTPUT_MAP', <<EOF;
<TR$opt->{data_row_extra}>
-<td> </td>
+<td$opt->{label_cell_extra}> </td>
<td align=left colspan=$oddspan$opt->{data_cell_extra}>
EOF
- $opt->{ok_button_style} = 'font-weight: bold; width: 40px; text-align: center'
- unless defined $opt->{ok_button_style};
-
- chunk 'OK_TOP', 'NO_TOP', <<EOF;
-<INPUT TYPE=submit NAME=mv_click VALUE="$opt->{next_text}" style="$opt->{ok_button_style}">
+ chunk 'OK_TOP', 'NO_TOP OUTPUT_MAP', <<EOF;
+<INPUT TYPE=submit NAME=mv_click VALUE="$opt->{next_text}"$opt->{ok_button_extra}>
EOF
- chunk 'CANCEL_TOP', 'NOCANCEL BOTTOM_BUTTONS NO_TOP', <<EOF;
+ chunk 'CANCEL_TOP', 'NOCANCEL BOTTOM_BUTTONS NO_TOP OUTPUT_MAP', <<EOF;
-<INPUT TYPE=submit NAME=mv_click VALUE="$opt->{cancel_text}" style="$opt->{cancel_button_style}">
+<INPUT TYPE=submit NAME=mv_click VALUE="$opt->{cancel_text}"$opt->{cancel_button_extra}>
EOF
- chunk 'RESET_TOP', '_SHOW_RESET BOTTOM_BUTTONS NO_TOP', <<EOF;
+ if($opt->{show_reset}) {
+ chunk 'RESET_TOP', 'BOTTOM_BUTTONS NO_TOP OUTPUT_MAP', <<EOF;
-<INPUT TYPE=reset>
+<INPUT TYPE=reset$opt->{reset_button_extra}>
EOF
+ }
- chunk 'MLABEL', 'BOTTOM_BUTTONS', $mlabel;
- chunk ttag(), 'BOTTOM_BUTTONS NO_TOP', <<EOF;
+ chunk 'MLABEL', 'BOTTOM_BUTTONS OUTPUT_MAP', $mlabel;
+ chunk ttag(), 'BOTTOM_BUTTONS NO_TOP OUTPUT_MAP', <<EOF;
</td>
</tr>
$opt->{spacer_row}
@@ -2258,7 +2445,7 @@
@tables = grep $_ !~ /:/, @tables;
for(@tables) {
next unless $possible{$_};
- my $db = database_exists_ref($_);
+ my $db = $Db{$_} || Vend::Data::database_exists_ref($_);
next unless $db;
my $new =
my $res = $db->clone_row($id, $new);
@@ -2271,7 +2458,7 @@
}
for(@sets) {
my ($t, $col) = split /:/, $_;
- my $db = database_exists_ref($t) or next;
+ my $db = $Db{$t} || Vend::Data::database_exists_ref($t) or next;
my $res = $db->clone_set($col, $id, $new);
if($res) {
$out .= "cloned $col=$id to to $col=$new in table $t<BR>\n";
@@ -2328,8 +2515,6 @@
OK_TOP
CANCEL_TOP
RESET_TOP
- BLOB_WIDGET
- CLONE_TABLES
/;
my %break;
@@ -2467,7 +2652,7 @@
$opt->{meta_extra} ||= "";
$opt->{meta_extra} .= qq{ class="$opt->{meta_class}"}
if $opt->{meta_class};
- $opt->{meta_extra} .= qq{ class="$opt->{meta_style}"}
+ $opt->{meta_extra} .= qq{ style="$opt->{meta_style}"}
if $opt->{meta_style};
}
@@ -2481,22 +2666,26 @@
<td$opt->{label_cell_extra}>
{BLABEL}{LABEL}{ELABEL}
</td>
- <td$opt->{data_cell_extra}>{WIDGET}{HELP_EITHER?} <a href="{HELP_URL}" title="{HELP}">$opt->{help_anchor}</a>{/HELP_EITHER?} {META_URL?}<A HREF="{META_URL}">$opt->{meta_anchor}</A>{/META_URL?}
+ <td$opt->{data_cell_extra}\{COLSPAN}>{WIDGET}{HELP_EITHER?} <a href="{HELP_URL}" title="{HELP}">$opt->{help_anchor}</a>{/HELP_EITHER?} {META_URL?}<A HREF="{META_URL}">$opt->{meta_anchor}</A>{/META_URL?}
</td>
EOF
}
elsif($opt->{image_meta}) {
+ $opt->{break_template} ||= <<EOF;
+$opt->{spacer_row}
+<tr$opt->{break_row_extra}><td colspan=$span $opt->{break_cell_extra}>{ROW}</td></tr>
+EOF
$row_template = <<EOF;
<td$opt->{label_cell_extra}>
{BLABEL}{LABEL}{ELABEL}
</td>
- <td$opt->{data_cell_extra}>
+ <td$opt->{data_cell_extra}\{COLSPAN}>
<table cellspacing=0 cellmargin=0 width="100%">
<tr>
<td$opt->{widget_cell_extra}>
{WIDGET}
</td>
- <td$opt->{help_cell_extra}>{TKEY}{HELP?}<i>{HELP}</i>{/HELP?}{HELP_URL?}<BR><A HREF="{HELP_URL}">$opt->{help_anchor}</A>{/HELP_URL?}</td>
+ <td$opt->{help_cell_extra}>{TKEY}{HELP?}{HELP}{/HELP?}{HELP_URL?}<BR><A HREF="{HELP_URL}">$opt->{help_anchor}</A>{/HELP_URL?}</td>
<td align=right>{META_STRING}</td>
</tr>
</table>
@@ -2526,7 +2715,7 @@
<td$opt->{label_cell_extra}>
{BLABEL}{LABEL}{ELABEL}{META_STRING}
</td>
- <td$opt->{data_cell_extra}>
+ <td$opt->{data_cell_extra}\{COLSPAN}>
<table cellspacing=0 cellmargin=0 width="100%">
<tr>
<td$opt->{widget_cell_extra}>
@@ -2587,6 +2776,9 @@
my @llab;
my @ltpl;
my @lnb;
+ my @lrq;
+ my @lra;
+ my @lrb;
my @lbefore;
my @lsort;
my $tcount = 1;
@@ -2598,6 +2790,9 @@
@llab = @{$opt->{link_label}};
@ltpl = @{$opt->{link_template}};
@lnb = @{$opt->{link_no_blank}};
+ @lrq = @{$opt->{link_row_qual}};
+ @lra = @{$opt->{link_auto_number}};
+ @lrb = @{$opt->{link_rows_blank}};
@lbefore = @{$opt->{link_before}};
@lsort = @{$opt->{link_sort}};
}
@@ -2609,6 +2804,9 @@
@llab = $opt->{link_label};
@ltpl = $opt->{link_template};
@lnb = $opt->{link_no_blank};
+ @lrq = $opt->{link_row_qual};
+ @lra = $opt->{link_auto_number};
+ @lrb = $opt->{link_rows_blank};
@lbefore = $opt->{link_before};
@lsort = $opt->{link_sort};
}
@@ -2620,6 +2818,9 @@
my $lb = shift @lbefore;
my $lnb = shift @lnb;
my $ls = shift @lsort;
+ my $lrq = shift @lrq;
+ my $lra = shift @lra;
+ my $lrb = shift @lrb;
my $rcount = 0;
@@ -2637,6 +2838,15 @@
$lf ||= $lmeta->{spread_fields};
my $l_pkey = $ldb->config('KEY');
+ $lrq ||= $l_pkey;
+
+ my $an_piece = '';
+ if($lra) {
+ $an_piece = <<EOF;
+<input type=hidden name="mv_data_auto_number__$tcount" value="$lra">
+<input type=hidden name="mv_data_function__$tcount" value="insert">
+EOF
+ }
my @cf = grep /\S/, split /[\s,\0]+/, $lf;
@cf = grep $_ ne $l_pkey, @cf;
@@ -2650,6 +2860,8 @@
<input type=hidden name="mv_data_fields__$tcount" value="$lf">
<input type=hidden name="mv_data_multiple__$tcount" value="1">
<input type=hidden name="mv_data_key__$tcount" value="$l_pkey">
+<input type=hidden name="mv_data_multiple_qual__$tcount" value="$lrq">
+$an_piece
$l_pkey</td>};
push @lout, $Tag->row_edit({ table => $lt, columns => $lf });
push @lout, '</tr>';
@@ -2681,20 +2893,25 @@
push @lout, "</tr>";
}
unless($lnb) {
- my %o = (
- table => $lt,
- blank => 1,
- extra => $opt->{link_extra},
- pointer => 999999,
- stacker => $tcount,
- columns => $lf,
- extra => $opt->{link_extra},
- );
- push @lout, qq{<tr><td$lextra>};
- push @lout, qq{<input size=8 name="999999_${l_pkey}__$tcount" value="">};
- push @lout, '</td>';
- push @lout, $Tag->row_edit(\%o);
- push @lout, '</tr>';
+ my $start_ptr = 999000;
+ $lrb ||= 1;
+ for(0 .. $opt->{link_rows_blank}) {
+ my %o = (
+ table => $lt,
+ blank => 1,
+ extra => $opt->{link_extra},
+ pointer => $start_ptr,
+ stacker => $tcount,
+ columns => $lf,
+ extra => $opt->{link_extra},
+ );
+ push @lout, qq{<tr><td$lextra>};
+ push @lout, qq{<input size=8 name="${start_ptr}_${l_pkey}__$tcount" value="">};
+ push @lout, '</td>';
+ push @lout, $Tag->row_edit(\%o);
+ push @lout, '</tr>';
+ $start_ptr++;
+ }
}
push @lout, "</table>";
$whash->{LABEL} = $ll;
@@ -2864,7 +3081,7 @@
my $namecol;
if($serialize) {
-#Debug("serialize=$serialize");
+#::logDebug("serialize=$serialize");
if($serialize{$col}) {
push @{$serialize{$col}}, $serialize;
}
@@ -2875,18 +3092,18 @@
$sd = tag_data($tt, $tc, $k);
}
else {
- $sd = $data->{$col} || $def->{$col};
+ $sd = $data->{$col} || $default->{$col};
}
-#Debug("serial_data=$sd");
+#::logDebug("serial_data=$sd");
$serial_data{$col} = $sd;
$opt->{hidden}{$col} = $data->{$col};
$serialize{$col} = [$serialize];
}
$c =~ /\.(.*)/;
my $hk = $1;
-#Debug("fetching serial_data for $col hk=$hk data=$serial_data{$col}");
+#::logDebug("fetching serial_data for $col hk=$hk data=$serial_data{$col}");
$currval = dotted_hash($serial_data{$col}, $hk);
-#Debug("fetched hk=$hk value=$currval");
+#::logDebug("fetched hk=$hk value=$currval");
$overridden = 1;
$namecol = $c = $serialize;
}
@@ -2990,11 +3207,14 @@
}
}
+ $class->{$c} ||= $opt->{widget_class};
+
#::logDebug("col=$c currval=$currval widget=$widget->{$c} label=$label->{$c}");
my $display = display($t, $c, $key, {
append => $append->{$c},
applylocale => 1,
arbitrary => $opt->{ui_meta_view},
+ class => $class->{$c},
column => $c,
db => $database->{$c},
default => $currval,
@@ -3042,6 +3262,8 @@
$display->{TKEY} = $tkey_message;
$display->{BLABEL} = $blabel;
$display->{ELABEL} = $elabel;
+ $display->{COLSPAN} = " colspan=$colspan->{$namecol}"
+ if $colspan->{$namecol};
$display->{ERROR} = $err_string;
$update_ctl = 0;
@@ -3111,12 +3333,12 @@
if(@ext_enable) {
$::Scratch->{mv_data_enable} .= " " . join(" ", @ext_enable) . " ";
}
-#Debug("setting mv_data_enable to $::Scratch->{mv_data_enable}");
+#::logDebug("setting mv_data_enable to $::Scratch->{mv_data_enable}");
my @serial = keys %serialize;
my @serial_fields;
my @o;
for (@serial) {
-#Debug("$_ serial_data=$serial_data{$_}");
+#::logDebug("$_ serial_data=$serial_data{$_}");
$serial_data{$_} = uneval($serial_data{$_})
if is_hash($serial_data{$_});
$serial_data{$_} =~ s/\&/&/g;
@@ -3129,7 +3351,7 @@
push @o, qq{<INPUT TYPE=hidden NAME="ui_serial_fields" VALUE="};
push @o, join " ", @serial_fields;
push @o, qq{">};
- chunk 'SERIAL_FIELDS', join("", @o);
+ chunk 'HIDDEN_SERIAL', 'OUTPUT_MAP', join("", @o);
}
###
@@ -3158,63 +3380,43 @@
my ($beghid, $endhid) = split m{</td>}i, $opt->{spacer_row}, 2;
$endhid = "</td>$endhid" if $endhid;
- chunk ttag(), $beghid;
- chunk 'HIDDEN_EXTRA', qq{<INPUT TYPE=hidden NAME=mv_data_fields VALUE="$passed_fields">@extra_hidden};
- chunk ttag(), $endhid;
+ chunk ttag(), 'OUTPUT_MAP', $beghid;
+ chunk 'HIDDEN_EXTRA', 'OUTPUT_MAP', qq{<INPUT TYPE=hidden NAME=mv_data_fields VALUE="$passed_fields">@extra_hidden};
+ chunk ttag(), 'OUTPUT_MAP', $endhid;
SAVEWIDGETS: {
last SAVEWIDGETS if $wo || $opt->{nosave};
#::logDebug("in SAVEWIDGETS");
- chunk ttag(), <<EOF;
+ chunk ttag(), 'OUTPUT_MAP', <<EOF;
<TR$opt->{data_row_extra}>
-<td> </td>
+<td$opt->{label_cell_extra}> </td>
<td align=left colspan=$oddspan$opt->{data_cell_extra}>
EOF
-
if($opt->{back_text}) {
- chunk 'COMBINED_BUTTONS_BOTTOM', <<EOF;
-<INPUT TYPE=submit NAME=mv_click VALUE="$opt->{back_text}"> <INPUT TYPE=submit NAME=mv_click VALUE="$opt->{cancel_text}"> <B><INPUT TYPE=submit NAME=mv_click VALUE="$opt->{next_text}"></B>
+ chunk 'COMBINED_BUTTONS_BOTTOM', 'OUTPUT_MAP', <<EOF;
+<INPUT TYPE=submit NAME=mv_click VALUE="$opt->{back_text}"$opt->{back_button_extra}> <INPUT TYPE=submit NAME=mv_click VALUE="$opt->{cancel_text}"$opt->{cancel_button_extra}> <B><INPUT TYPE=submit NAME=mv_click VALUE="$opt->{next_text}"$opt->{next_button_extra}></B>
EOF
}
elsif($opt->{wizard}) {
- chunk 'WIZARD_BUTTONS_BOTTOM', <<EOF;
-<TR$opt->{data_row_extra}>
-<td> </td>
-<td align=left colspan=$oddspan$opt->{data_cell_extra}>
-<INPUT TYPE=submit NAME=mv_click VALUE="$opt->{cancel_text}"> <B><INPUT TYPE=submit NAME=mv_click VALUE="$opt->{next_text}"></B>
+ chunk 'WIZARD_BUTTONS_BOTTOM', 'OUTPUT_MAP', <<EOF;
+<INPUT TYPE=submit NAME=mv_click VALUE="$opt->{cancel_text}"$opt->{cancel_button_extra}> <B><INPUT TYPE=submit NAME=mv_click VALUE="$opt->{next_text}"$opt->{next_button_extra}></B>
EOF
}
else {
- chunk 'OK_BOTTOM', <<EOF;
-<INPUT TYPE=submit NAME=mv_click VALUE="$opt->{next_text}" style="$opt->{ok_button_style}">
+ chunk 'OK_BOTTOM', 'OUTPUT_MAP', <<EOF;
+<INPUT TYPE=submit NAME=mv_click VALUE="$opt->{next_text}"$opt->{ok_button_extra}>
EOF
- chunk 'CANCEL_BOTTOM', 'NOCANCEL', <<EOF;
- <INPUT TYPE=submit NAME=mv_click VALUE="$opt->{cancel_text}" style="$opt->{cancel_button_style}">
+ chunk 'CANCEL_BOTTOM', 'NOCANCEL OUTPUT_MAP', <<EOF;
+ <INPUT TYPE=submit NAME=mv_click VALUE="$opt->{cancel_text}"$opt->{cancel_button_extra}>
EOF
- chunk 'RESET_BOTTOM', qq{ <INPUT TYPE=reset>}
+ chunk 'RESET_BOTTOM', 'OUTPUT_MAP', qq{ <INPUT TYPE=reset$opt->{reset_button_extra}>}
if $opt->{show_reset};
}
- if(! $opt->{notable} and $Tag->if_mm('tables', "$table=x") and ! $db->config('LARGE') ) {
- my $checked = ' CHECKED';
- $checked = ''
- if defined $opt->{mv_auto_export} and ! $opt->{mv_auto_export};
- my $autoexpstr = errmsg('Auto-export');
- chunk 'AUTO_EXPORT', 'NOEXPORT NOSAVE', <<EOF; # unless $opt->{noexport} or $opt->{nosave};
-<small>
-
-
-
-
-
- <INPUT TYPE=checkbox NAME=mv_auto_export VALUE="$table"$checked> $autoexpstr
-EOF
-
- }
if($exists and ! $opt->{nodelete} and $Tag->if_mm('tables', "$table=d")) {
my $extra = $Tag->return_to( { type => 'click', tablehack => 1 });
@@ -3233,17 +3435,44 @@
});
my $delstr = errmsg('Delete');
my $delmsg = errmsg('Are you sure you want to delete %s?',$key);
- chunk 'DELETE_BUTTON', 'NOSAVE', <<EOF; # if ! $opt->{nosave};
-<BR><BR><A
-onClick="return confirm('$delmsg')"
-HREF="$url"><IMG SRC="delete.gif" ALT="Delete $key" BORDER=0></A> $delstr
+ if($opt->{output_map} or $opt->{button_delete}) {
+ chunk 'DELETE_BUTTON', 'NOSAVE OUTPUT_MAP', <<EOF;
+
+ <input
+ type=button
+ onClick="if(confirm('$delmsg')) { location='$url' }"
+ title="Delete $key"
+ value="$delstr"$opt->{delete_button_extra}>
+EOF
+ }
+ else {
+ chunk 'DELETE_BUTTON', 'NOSAVE OUTPUT_MAP', <<EOF; # if ! $opt->{nosave};
+<BR><BR><A onClick="return confirm('$delmsg')" HREF="$url"><IMG SRC="delete.gif" ALT="Delete $key" BORDER=0></A> $delstr
EOF
+ }
}
+
+ if(! $opt->{notable} and $Tag->if_mm('tables', "$table=x") and ! $db->config('LARGE') ) {
+ my $checked = ' CHECKED';
+ my $msg = errmsg("Automatically export to text file");
+ $checked = ''
+ if defined $opt->{mv_auto_export} and ! $opt->{mv_auto_export};
+ my $autoexpstr = errmsg('Auto-export');
+ chunk 'AUTO_EXPORT', 'NOEXPORT NOSAVE OUTPUT_MAP', <<EOF;
+<small>
+
+
+ <INPUT TYPE=checkbox class="$opt->{widget_class}" title="$msg" NAME=mv_auto_export VALUE="$table"$checked><span class="$opt->{widget_class}" title="$msg"> $autoexpstr</span>
+EOF
+
+ }
+
chunk_alias 'HIDDEN_FIELDS', qw/
HIDDEN_ALWAYS
- HIDDEN_AUTO
HIDDEN_EXTRA
+ HIDDEN_SERIAL
+ HIDDEN_USER
/;
chunk_alias 'BOTTOM_BUTTONS', qw/
WIZARD_BUTTONS_BOTTOM
@@ -3251,9 +3480,12 @@
OK_BOTTOM
CANCEL_BOTTOM
RESET_BOTTOM
+ /;
+ chunk_alias 'EXTRA_BUTTONS', qw/
AUTO_EXPORT
- DELETE_BUTTON/;
- chunk ttag(), <<EOF;
+ DELETE_BUTTON
+ /;
+ chunk ttag(), 'OUTPUT_MAP', <<EOF;
</small>
</td>
</tr>
@@ -3299,9 +3531,26 @@
</td></tr></table>
EOF
- chunk 'FORM_END', '', 'BOTTOM_OF_FORM', <<EOF;
-</form>$restrict_end
+ my $end_script = '';
+ if( $opt->{start_at}
+ and
+ $opt->{form_name}
+ and
+ $widget->{$opt->{start_at}} !~ /radio|check/i
+ )
+ {
+ $end_script = <<EOF;
+<script>
+ document.$opt->{form_name}.$opt->{start_at}.focus();
+</script>
EOF
+ }
+ chunk 'FORM_END', 'OUTPUT_MAP', <<EOF;
+</form>$end_script
+EOF
+ chunk ttag(), $restrict_end;
+
+ chunk_alias 'BOTTOM_OF_FORM', qw/ FORM_END /;
my %ehash = (
);
@@ -3311,6 +3560,7 @@
NOEXPORT
NOSAVE
NO_BOTTOM
+ OUTPUT_MAP
NO_TOP
SHOW_RESET
/)
@@ -3321,6 +3571,38 @@
$ehash{MESSAGE} = length($message) ? 1 : 0;
#::logDebug("exclude is " . uneval(\%exclude));
+
+ if($opt->{output_map}) {
+ $opt->{output_map} =~ s/^\s+//;
+ $opt->{output_map} =~ s/\s+$//;
+ my %map;
+ my @map = split /[\s,=\0]+/, $opt->{output_map};
+ if(@map > 1) {
+ for(my $i = 0; $i <= @map; $i += 2) {
+ $map{ uc $map[$i] } = lc $map[$i + 1];
+ }
+ }
+ else {
+ %map = qw/
+ TOP_OF_FORM top_of_form
+ BOTTOM_OF_FORM bottom_of_form
+ HIDDEN_FIELDS hidden_fields
+ TOP_BUTTONS top_buttons
+ BOTTOM_BUTTONS bottom_buttons
+ EXTRA_BUTTONS extra_buttons
+ /;
+ }
+
+ while(my($al, $to) = each %map) {
+#::logDebug("outputting alias $al to output $to");
+ my $ary = $alias{$al} || [];
+#::logDebug("alias $al means " . join(" ", @$ary));
+ my $string = join("", @outhash{@$ary});
+#::logDebug("alias $al string is $string");
+ $Tag->output_to($to, { name => $to}, $string );
+ }
+ }
+
resolve_exclude(\%ehash);
if($wo) {
@@ -3381,7 +3663,9 @@
for(@controls) {
push @tabcont, create_rows($opt, $_);
}
- $opt->{panel_prepend} ||= '<table>';
+ $opt->{panel_table_extra} ||= 'width="100%" cellpadding=3 cellspacing=1';
+ $opt->{panel_table_extra} =~ s/^/ /;
+ $opt->{panel_prepend} ||= "<table$opt->{panel_table_extra}>";
$opt->{panel_append} ||= '</table>';
push @put, tabbed_display(\@titles,\@tabcont,$opt);
}
@@ -3407,7 +3691,9 @@
for(@controls) {
push @tabcont, create_rows($opt, $_);
}
- $opt->{panel_prepend} ||= '<table>';
+ $opt->{panel_table_extra} ||= 'width="100%" cellpadding=3 cellspacing=1';
+ $opt->{panel_table_extra} =~ s/^/ /;
+ $opt->{panel_prepend} ||= "<table$opt->{panel_table_extra}>";
$opt->{panel_append} ||= '</table>';
push @put, tabbed_display(\@titles,\@tabcont,$opt);
}
@@ -3452,15 +3738,20 @@
my $rowcount = 0;
my $span = $rowdiv * $cells_per_span;
my $oddspan = $span - 1;
+ my $colspan = $opt->{colspan};
+#::logDebug("colspan=" . ::uneval($colspan));
my @out;
- for(@$columns) {
+ for my $c (@$columns) {
+ my $colname = $c;
+ $colname =~ s/^COLUMN_//;
+#::logDebug("doing column $c name=$colname");
# If doesn't exist, was brought in before.
- my $ref = delete $outhash{$_}
+ my $ref = delete $outhash{$c}
or next;
if($ref->{ROW}) {
-#::logDebug("outputting ROW $_=$ref->{ROW}");
+#::logDebug("outputting ROW $c=$ref->{ROW}");
my $tpl = $ref->{TEMPLATE} || $opt->{combo_template};
push @out, tag_attr_list($tpl, $ref);
$rowcount = 0;
@@ -3468,6 +3759,11 @@
}
my $w = '';
$w .= "<tr$opt->{data_row_extra}>\n" unless $rowcount++ % $rowdiv;
+ if(my $s = $colspan->{$colname}) {
+#::logDebug("found colspan=$s (ref=$ref->{COLSPAN}) for $colname");
+ my $extra = ($s - 1) / $cells_per_span;
+ $rowcount += $extra;
+ }
$w .= tag_attr_list($ref->{TEMPLATE}, $ref);
$w .= "</tr>" unless $rowcount % $rowdiv;
push @out, $w;
2.5 +8 -5 interchange/lib/Vend/Table/GDBM.pm
rev 2.5, prev_rev 2.4
Index: GDBM.pm
===================================================================
RCS file: /var/cvs/interchange/lib/Vend/Table/GDBM.pm,v
retrieving revision 2.4
retrieving revision 2.5
diff -u -r2.4 -r2.5
--- GDBM.pm 10 Sep 2002 17:29:09 -0000 2.4
+++ GDBM.pm 14 Jan 2003 02:25:53 -0000 2.5
@@ -1,6 +1,6 @@
# Vend::Table::GDBM - Access an Interchange table stored in a GDBM file
#
-# $Id: GDBM.pm,v 2.4 2002/09/10 17:29:09 mheins Exp $
+# $Id: GDBM.pm,v 2.5 2003/01/14 02:25:53 mheins Exp $
#
# Copyright (C) 1996-2002 Red Hat, Inc. <interchange@redhat.com>
#
@@ -29,7 +29,7 @@
use Vend::Table::Common;
@ISA = qw(Vend::Table::Common);
-$VERSION = substr(q$Revision: 2.4 $, 10);
+$VERSION = substr(q$Revision: 2.5 $, 10);
sub new {
my ($class, $obj) = @_;
@@ -105,15 +105,18 @@
my $dbm;
my $failed = 0;
- while( $failed < 10 ) {
+ my $retry = $Vend::Cfg->{Limit}{dbm_open_retries} || 10;
+
+ while( $failed < $retry ) {
$dbm = tie(%$tie, 'GDBM_File', $filename, $flags, 0777)
and undef($failed), last;
$failed++;
select(undef,undef,undef,$failed * .100);
}
- die ::errmsg("Could not tie to '%s': %s", $filename, $!)
- if $failed;
+ die ::errmsg("%s could not tie to '%s': %s", 'GDBM', $filename, $!)
+ unless $dbm;
+
my $columns = [split(/\t/, $tie->{'c'})];
my $column_index = Vend::Table::Common::create_columns($columns, $config);
2.66 +4 -4 interchange/scripts/interchange.PL
rev 2.66, prev_rev 2.65
Index: interchange.PL
===================================================================
RCS file: /var/cvs/interchange/scripts/interchange.PL,v
retrieving revision 2.65
retrieving revision 2.66
diff -u -r2.65 -r2.66
--- interchange.PL 14 Dec 2002 17:59:30 -0000 2.65
+++ interchange.PL 14 Jan 2003 02:25:54 -0000 2.66
@@ -1,9 +1,9 @@
#!/usr/bin/perl
##!~_~perlpath~_~
#
-# Interchange version 4.9.6
+# Interchange version 4.9.7
#
-# $Id: interchange.PL,v 2.65 2002/12/14 17:59:30 jon Exp $
+# $Id: interchange.PL,v 2.66 2003/01/14 02:25:54 mheins Exp $
#
# Copyright (C) 1996-2002 Red Hat, Inc. and others.
# http://www.icdevgroup.org/
@@ -126,7 +126,7 @@
require Exporter;
BEGIN {
- $VERSION = '4.9.6';
+ $VERSION = '4.9.7';
unless ($] >= 5.006) {
die "Interchange $VERSION requires Perl 5.6.0 or later,\nbut you're trying to run it under Perl $]. Exiting.\n";
@@ -355,7 +355,7 @@
=head1 VERSION
-4.9.6
+4.9.7
=head1 DESCRIPTION