[interchange-cvs] interchange - heins modified 60 files
interchange-core@interchange.redhat.com
interchange-core@interchange.redhat.com
Sat Feb 16 04:40:00 2002
User: heins
Date: 2002-02-16 09:39:11 GMT
Modified: . MANIFEST
Modified: code/SystemTag attr_list.coretag warnings.coretag
Modified: code/UI_Tag content_editor.coretag display.coretag
Modified: file_navigator.coretag su.coretag
Modified: table_editor.coretag uneval.coretag
Modified: dist/foundation catalog.cfg
Modified: dist/foundation/products variable.txt
Modified: dist/foundation/templates leftonly leftright
Modified: dist/foundation/templates/components affiliate_receptor best
Modified: cart cart_display cart_tiny category_horizontal
Modified: category_vertical cross fortune none promo random
Modified: saved_carts_list_small search_box_small
Modified: search_box_small_top upsell
Modified: dist/lib/UI icmenu.txt
Modified: dist/lib/UI/pages/admin test_code.html
Modified: dist/lib/UI/vars UI_STD_HEAD
Modified: scripts interchange.PL
Added: code/SystemTag tmp_no.coretag
Added: code/UI_Tag auto_wizard.coretag content_info.coretag
Added: content_modify.coretag
Added: dist/lib/UI ContentEditor.pm
Added: dist/lib/UI/pages/admin auto_wizard.html content.html
Added: content_editor.html content_preview.html
Added: content_publish.html
Added: dist/lib/UI/pages/include component_editor page_editor
Added: template_editor
Removed: dist/lib/UI/pages/admin page.html page_edit.html
Removed: page_new.html page_preview.html page_save.html
Removed: template.html template_edit.html template_new.html
Removed: template_preview.html template_save.html
Removed: dist/lib/UI/pages/include page_edit page_edit_old page_save
Removed: page_save_old
Log:
* Major changes to the content editing scheme. I finally think it
is really usable.
* Requires a CSS/Javascript 1.3 compliant browser. Tested on Mozilla 0.9.8,
MSIE 5.51, Opera 6.0tp2. All work pretty well; Mozilla is a bit slow,
Opera doesn't have CSS widths down.
* Page editor has a quasi-visual layout that should be much more
intuitive. Support for a "PAGE_PICTURE" file in the templates
allows visual links to the editor page.
* Components, templates, and pages are now all editable. Template
and component editors need to be brought up to speed with the
page editor, but work fairly well.
* Publishing scripting not yet done.
* Added new lib/UI/ContentEditor.pm module which implements
this stuff in conjunction with lib/UI/pages/include/*_editor.
A bit of a JavaScript dependency nightmare on the generated
attribute editors, but I make get this more canned as time
goes on.
* Lets get this on record -- this content editiing WILL NOT UNDER
ANY CIRCUMSTANCES EVER WORK ON NETSCAPE 4. Do not ask, though I
know the people who monitor this stuff won't.
* Added new "auto_wizard" which builds a wizard from a file
like in the example. I think this is pretty cool, if I do
say so myself. It will be the method to provide scripted
content addition.
* More table-editor updates -- added notable option, and
all_opts option which allows building the options in
Perl and then doing:
[table-editor all-opts=`\%opts`]
* Look for major updates on the table editor to make it
completely templateable.
* That's all the comments for now -- try it out!
Revision Changes Path
2.32 +16 -15 interchange/MANIFEST
rev 2.32, prev_rev 2.31
Index: MANIFEST
===================================================================
RCS file: /anon_cvs/repository/interchange/MANIFEST,v
retrieving revision 2.31
retrieving revision 2.32
diff -u -r2.31 -r2.32
--- MANIFEST 5 Feb 2002 05:43:47 -0000 2.31
+++ MANIFEST 16 Feb 2002 09:39:08 -0000 2.32
@@ -88,6 +88,7 @@
code/SystemTag/time.coretag
code/SystemTag/timed_build.coretag
code/SystemTag/tmp.coretag
+code/SystemTag/tmp_no.coretag
code/SystemTag/total_cost.coretag
code/SystemTag/tree.coretag
code/SystemTag/try.coretag
@@ -97,13 +98,16 @@
code/SystemTag/value_extended.coretag
code/SystemTag/warnings.coretag
code/UI_Tag/add_gpg_key.coretag
+code/UI_Tag/auto_wizard.coretag
code/UI_Tag/available_ups_internal.coretag
code/UI_Tag/available_www_shipping.coretag
code/UI_Tag/backup_database.coretag
code/UI_Tag/backup_file.coretag
code/UI_Tag/base_url.coretag
code/UI_Tag/check_upload.coretag
-code/UI_Tag/component_editor.coretag
+code/UI_Tag/content_editor.coretag
+code/UI_Tag/content_info.coretag
+code/UI_Tag/content_modify.coretag
code/UI_Tag/cp.coretag
code/UI_Tag/crypt.coretag
code/UI_Tag/db_columns.coretag
@@ -150,6 +154,7 @@
code/UI_Tag/rotate_table.coretag
code/UI_Tag/row_edit.coretag
code/UI_Tag/run_profile.coretag
+code/UI_Tag/su.coretag
code/UI_Tag/substitute_file.coretag
code/UI_Tag/table_editor.coretag
code/UI_Tag/uneval.coretag
@@ -651,6 +656,7 @@
dist/foundation/upload/products.xls
dist/foundation/upload/sampledata.xls
dist/interchange.cfg.dist
+dist/lib/UI/ContentEditor.pm
dist/lib/UI/Primitive.pm
dist/lib/UI/ichelp.txt
dist/lib/UI/icmenu.txt
@@ -670,10 +676,15 @@
dist/lib/UI/pages/admin/add_meta_option.html
dist/lib/UI/pages/admin/advanced.html
dist/lib/UI/pages/admin/affiliates.html
+dist/lib/UI/pages/admin/auto_wizard.html
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/compedit.html
+dist/lib/UI/pages/admin/content.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/customer.html
dist/lib/UI/pages/admin/customer_all.html
dist/lib/UI/pages/admin/customer_bill.html
@@ -735,11 +746,6 @@
dist/lib/UI/pages/admin/order_status.html
dist/lib/UI/pages/admin/order_view.html
dist/lib/UI/pages/admin/orderstats.html
-dist/lib/UI/pages/admin/page.html
-dist/lib/UI/pages/admin/page_edit.html
-dist/lib/UI/pages/admin/page_new.html
-dist/lib/UI/pages/admin/page_preview.html
-dist/lib/UI/pages/admin/page_save.html
dist/lib/UI/pages/admin/payment.html
dist/lib/UI/pages/admin/preferences.html
dist/lib/UI/pages/admin/quicklinks.html
@@ -775,11 +781,7 @@
dist/lib/UI/pages/admin/tablereport.html
dist/lib/UI/pages/admin/tax.html
dist/lib/UI/pages/admin/tax_simple.html
-dist/lib/UI/pages/admin/template.html
-dist/lib/UI/pages/admin/template_edit.html
-dist/lib/UI/pages/admin/template_new.html
-dist/lib/UI/pages/admin/template_preview.html
-dist/lib/UI/pages/admin/template_save.html
+dist/lib/UI/pages/admin/test_code.html
dist/lib/UI/pages/admin/trafficstats.html
dist/lib/UI/pages/admin/upload_config.html
dist/lib/UI/pages/admin/upload_file.html
@@ -822,15 +824,14 @@
dist/lib/UI/pages/admin/wizard/step_style.html
dist/lib/UI/pages/admin/wizard/step_style_logo.html
dist/lib/UI/pages/admin/wizard/step_tax.html
+dist/lib/UI/pages/include/component_editor
dist/lib/UI/pages/include/item_option_matrix
dist/lib/UI/pages/include/item_option_modular
dist/lib/UI/pages/include/item_option_simple
dist/lib/UI/pages/include/order_delete_archive
-dist/lib/UI/pages/include/page_edit
-dist/lib/UI/pages/include/page_edit_old
-dist/lib/UI/pages/include/page_save
-dist/lib/UI/pages/include/page_save_old
+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/wizard_checklist
dist/lib/UI/pages/include/wizard_profiles
dist/lib/UI/profiles/Cancel
1.2 +9 -1 interchange/code/SystemTag/attr_list.coretag
rev 1.2, prev_rev 1.1
Index: attr_list.coretag
===================================================================
RCS file: /anon_cvs/repository/interchange/code/SystemTag/attr_list.coretag,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- attr_list.coretag 29 Jan 2002 05:52:38 -0000 1.1
+++ attr_list.coretag 16 Feb 2002 09:39:08 -0000 1.2
@@ -1,4 +1,12 @@
UserTag attr-list Order hash
UserTag attr-list hasEndTag
UserTag attr-list PosNumber 1
-UserTag attr-list MapRoutine Vend::Interpolate::tag_attr_list
+UserTag attr-list Routine <<EOR
+sub {
+ my ($opt, $body) = @_;
+ if( ref $opt->{hash} ) {
+ $opt = $opt->{hash};
+ }
+ return Vend::Interpolate::tag_attr_list($body, $opt);
+}
+EOR
1.2 +1 -1 interchange/code/SystemTag/warnings.coretag
rev 1.2, prev_rev 1.1
Index: warnings.coretag
===================================================================
RCS file: /anon_cvs/repository/interchange/code/SystemTag/warnings.coretag,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- warnings.coretag 29 Jan 2002 05:52:38 -0000 1.1
+++ warnings.coretag 16 Feb 2002 09:39:08 -0000 1.2
@@ -18,7 +18,7 @@
if(! length($opt->{joiner})) {
$opt->{joiner} = $opt->{auto} ? '<li>' : "\n";
}
- $out .= join $opt->{joiner}, @{$Vend::Session->{warnings}};
+ $out .= join $opt->{joiner}, grep /\S/, @{$Vend::Session->{warnings}};
$out .= '</ul>' if $opt->{auto};
$out .= $opt->{footer} if length($opt->{footer});
delete $Vend::Session->{warnings} unless $opt->{keep};
1.1 interchange/code/SystemTag/tmp_no.coretag
rev 1.1, prev_rev 1.0
Index: tmp_no.coretag
===================================================================
UserTag tmp-no Order name
UserTag tmp-no hasEndTag
UserTag tmp-no InvalidateCache
UserTag tmp-no PosNumber 1
UserTag tmp-no MapRoutine Vend::Interpolate::set_tmp
1.2 +3 -3 interchange/code/UI_Tag/content_editor.coretag
rev 1.2, prev_rev 1.1
Index: content_editor.coretag
===================================================================
RCS file: /anon_cvs/repository/interchange/code/UI_Tag/content_editor.coretag,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- content_editor.coretag 8 Feb 2002 05:26:01 -0000 1.1
+++ content_editor.coretag 16 Feb 2002 09:39:08 -0000 1.2
@@ -1,10 +1,10 @@
-UserTag content-editor Order item
+UserTag content-editor Order name
UserTag content-editor addAttr
UserTag content-editor hasEndTag
UserTag content-editor noReparse 1
UserTag content-editor Routine <<EOR
-use UI::ComponentEditor;
+use UI::ContentEditor;
sub {
- return UI::ComponentEditor::editor(@_);
+ return UI::ContentEditor::editor(@_);
}
EOR
1.5 +4 -4 interchange/code/UI_Tag/display.coretag
rev 1.5, prev_rev 1.4
Index: display.coretag
===================================================================
RCS file: /anon_cvs/repository/interchange/code/UI_Tag/display.coretag,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- display.coretag 8 Feb 2002 23:08:20 -0000 1.4
+++ display.coretag 16 Feb 2002 09:39:08 -0000 1.5
@@ -17,7 +17,7 @@
my $template = $opt->{type} eq 'hidden' ? '' : $opt->{template};
if($opt->{override}) {
- $opt->{value} = defined $opt->{default} ? $opt->{default} : undef;
+ $opt->{value} = defined $opt->{default} ? $opt->{default} : '';
}
if(! defined $opt->{value} and $table and $column and length($key)) {
@@ -28,7 +28,7 @@
my $record;
my $no_meta = $CGI::values{ui_no_meta_display};
-#::logDebug("no_meta=$no_meta");
+
METALOOK: {
## No meta display wanted
last METALOOK if $no_meta;
@@ -119,7 +119,7 @@
type
width
/;
- for(keys %$record) {
+ for(@override) {
delete $record->{$_} if ! length($record->{$_});
next unless defined $opt->{$_};
$record->{$_} = $opt->{$_};
@@ -204,7 +204,7 @@
my %things = (
attribute => $column,
cols => $opt->{cols} || $record->{width},
- field => $column,
+ column => $column,
passed => $record->{options},
rows => $opt->{rows} || $record->{height},
table => $table,
1.3 +20 -9 interchange/code/UI_Tag/file_navigator.coretag
rev 1.3, prev_rev 1.2
Index: file_navigator.coretag
===================================================================
RCS file: /anon_cvs/repository/interchange/code/UI_Tag/file_navigator.coretag,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- file_navigator.coretag 4 Feb 2002 01:31:17 -0000 1.2
+++ file_navigator.coretag 16 Feb 2002 09:39:08 -0000 1.3
@@ -22,19 +22,25 @@
my $base_admin = ( $::Variable->{UI_BASE} || 'admin');
my $base_url = $Vend::Cfg->{VendURL}
. '/'
- . $base_admin;
+ . ($opt->{base_url} || $base_admin);
+ my $view_href = $opt->{view_href} || "$base_admin/do_view";
+ my $view_form = $opt->{view_form} || 'mv_arg=~FN~';
my $full_path;
my $action = $CGI::values{action} || '';
my $already_found;
- my $edit_page = $opt->{edit_page} || 'page_edit';
+ my $edit_page = $opt->{edit_page} || "page_edit";
my $edit_var = $opt->{edit_var} || 'ui_page';
+ my $edit_form = $opt->{edit_form} || "$edit_var=~FN~";
my @errors;
my @messages;
- $Vend::Session->{ui_cwd} = $opt->{initial_dir}
- if $opt->{initial_dir};
+ my $idir_re;
+ if ($opt->{initial_dir}) {
+ $Vend::Session->{ui_cwd} = $opt->{initial_dir};
+ $idir_re = qr{^$opt->{initial_dir}/};
+ }
if($action eq 'chdir') {
my $newdir = $CGI::values{dir} || '.';
@@ -183,7 +189,7 @@
};
my $ftmpl = <<EOF;
-<A HREF="$Vend::Cfg->{VendURL}/ui_download/~FN~?~ID~">$dn_img</A>$del_string<A HREF="$base_url/upload_file?~ID~&mv_arg=~FN~&ui_return_to=$this_page">$up_img</A><A HREF="$base_url/do_view?~ID~&mv_arg=~FN~">$vw_img</A> %s <A HREF="$base_url/do_view?~ID~&mv_arg=~FN~">%s</A><BR>
+<A HREF="$Vend::Cfg->{VendURL}/ui_download/~FN~?~ID~">$dn_img</A>$del_string<A HREF="$base_url/upload_file?~ID~&mv_arg=~FN~&ui_return_to=$this_page">$up_img</A><A HREF="$base_url/do_view?~ID~&mv_arg=~FN~">$vw_img</A> %s <A HREF="$Vend::Cfg->{VendURL}/$view_href?~ID~&$view_form">%s</A><BR>
EOF
my $utmpl = <<EOF;
@@ -193,12 +199,12 @@
my $ftmpl_ed;
if(! $do_perms and $opt->{edit_only}) {
$ftmpl_ed = <<EOF;
-<A HREF="$base_url/$edit_page?~ID~&$edit_var=~FN~&ui_return_to=$this_page">$ed_img</A> %s <A HREF="$base_url/$edit_page?~ID~&$edit_var=~FN~&ui_return_to=$this_page">%s</A><BR>
+<A HREF="$base_url/$edit_page?~ID~&$edit_form&ui_return_to=$this_page">$ed_img</A> %s <A HREF="$base_url/$edit_page?~ID~&$edit_form&ui_return_to=$this_page">%s</A><BR>
EOF
}
else {
$ftmpl_ed = <<EOF;
-<A HREF="$Vend::Cfg->{VendURL}/ui_download/~FN~?~ID~">$dn_img</A>$del_string<A HREF="$base_url/upload_file?~ID~&mv_arg=~FN~&ui_return_to=$this_page">$up_img</A><A HREF="$base_url/$edit_page?~ID~&$edit_var=~FN~&ui_return_to=$this_page">$ed_img</A> %s <A HREF="$base_url/$edit_page?~ID~&$edit_var=~FN~&ui_return_to=$this_page">%s</A><BR>
+<A HREF="$Vend::Cfg->{VendURL}/ui_download/~FN~?~ID~">$dn_img</A>$del_string<A HREF="$base_url/upload_file?~ID~&mv_arg=~FN~&ui_return_to=$this_page">$up_img</A><A HREF="$base_url/$edit_page?~ID~&$edit_form&ui_return_to=$this_page">$ed_img</A> %s <A HREF="$base_url/$edit_page?~ID~&$edit_form&ui_return_to=$this_page">%s</A><BR>
EOF
}
@@ -274,7 +280,9 @@
push @dir, [$fe, $fn, $dtmpl, $perms];
}
elsif ($opt->{edit_all} || /\.html?$/) {
- push @plain, [$fe, $fn, $ftmpl_ed, $perms];
+ my $rn = '';
+ ($rn = $fn) =~ s/$idir_re// if $idir_re;
+ push @plain, [$fe, $fn, $ftmpl_ed, $perms, $rn];
}
else {
push @plain, [$fe, $fn, $ftmpl, $perms];
@@ -291,6 +299,7 @@
unshift @dir, [ $nd, $msg, $dtmpl ];
}
+ my $pc = \$Vend::Session->{pageCount};
unshift @dir, [ "$curdir/", errmsg('(new file)'), $utmpl ];
@dir = () if $opt->{no_dirs};
@@ -302,9 +311,11 @@
$out .= "<span class=cmessage>$_</span><br>";
}
for (@dir, @plain) {
+ $$pc++;
$_->[2] = sprintf($_->[2], $_->[3], $_->[1]);
$_->[2] =~ s/~FN~/$_->[0]/g;
- $_->[2] =~ s/~ID~/mv_session_id=$Session->{id}/g;
+ $_->[2] =~ s/~RN~/$_->[4]/g;
+ $_->[2] =~ s/~ID~/mv_session_id=$Session->{id}&mv_pc=$$pc/g;
$out .= $_->[2];
}
1.3 +3 -3 interchange/code/UI_Tag/su.coretag
rev 1.3, prev_rev 1.2
Index: su.coretag
===================================================================
RCS file: /anon_cvs/repository/interchange/code/UI_Tag/su.coretag,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- su.coretag 6 Feb 2002 01:50:32 -0000 1.2
+++ su.coretag 16 Feb 2002 09:39:08 -0000 1.3
@@ -99,17 +99,17 @@
elsif ($user) {
if( $u->{admin} and ! $super) {
}
-::logDebug("user table=$table ufield=$ufield");
+#::logDebug("user table=$table ufield=$ufield");
$table ||= 'userdb';
$ufield ||= 'username';
-::logDebug("user table=$table ufield=$ufield");
+#::logDebug("user table=$table ufield=$ufield");
if(! $Tag->data($table, $ufield, $user) ) {
$Scratch->{ui_error} = errmsg("attempt to su to non-existent user %s", $user);
return undef;
}
my $rand = random_string();
my $sess = uneval_it($Session);
-::logDebug("sess is $sess");
+#::logDebug("sess is $sess");
my $sesskey = generate_key($rand . $sess);
open(MDIT, "> $dir/$Session->{id}")
1.3 +123 -53 interchange/code/UI_Tag/table_editor.coretag
rev 1.3, prev_rev 1.2
Index: table_editor.coretag
===================================================================
RCS file: /anon_cvs/repository/interchange/code/UI_Tag/table_editor.coretag,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- table_editor.coretag 8 Feb 2002 23:08:20 -0000 1.2
+++ table_editor.coretag 16 Feb 2002 09:39:08 -0000 1.3
@@ -120,10 +120,19 @@
UserTag table-editor Routine <<EOR
sub {
my ($table, $key, $opt, $template) = @_;
+show_times("begin table editor call item_id=$key") if $Global::ShowTimes;
package Vend::Interpolate;
use vars qw/$Values $Scratch $Db $Tag $Config $CGI $Variable $safe_safe/;
+ if(ref($opt->{all_opts}) eq 'HASH') {
+ my $o = $opt->{all_opts};
+ for (keys %$o ) {
+ $opt->{$_} = $o->{$_};
+ }
+ }
+#Debug("options now=" . ::uneval($opt));
+
init_calc() if ! $Vend::Calc_initialized;
my @messages;
@@ -148,26 +157,22 @@
append
prepend
lookup
+ lookup_query
field
pre_filter
widget
width
+ meta
/ )
{
-#::logDebug("doing te_hash $_");
next if ref $opt->{$_};
-#::logDebug("te_hash $_ not a ref");
($opt->{$_} = {}, next) if ! $opt->{$_};
-#::logDebug("te_hash $_ has a value");
my $ref = {};
my $string = $opt->{$_};
-#::logDebug("te_hash $_ = $string");
$string =~ s/^\s+//gm;
$string =~ s/\s+$//gm;
-#::logDebug("te_hash $_ now = $string");
while($string =~ m/^(.+?)=\s*(.+)/mg) {
$ref->{$1} = $2;
-#::logDebug("te_hash $1 = $2");
}
$opt->{$_} = $ref;
}
@@ -212,10 +217,12 @@
my $prepend = $opt->{prepend};
my $append = $opt->{append};
my $lookup = $opt->{lookup};
+ my $lookup_query = $opt->{lookup_query};
my $database = $opt->{database};
my $field = $opt->{field};
my $widget = $opt->{widget};
my $width = $opt->{width};
+ my $pmeta = $opt->{meta};
#::logDebug("widget=" . ::uneval_it($widget) );
#::logDebug("label=" . ::uneval_it($label) );
@@ -300,7 +307,7 @@
$Scratch->{$opt->{cancel_text}} = $ctext if $ctext;
$Scratch->{$opt->{back_text}} = $btext if $btext;
- if($opt->{wizard} and ! $table) {
+ if($opt->{wizard} || $opt->{notable} and ! $table) {
$table = 'mv_null';
$Vend::Database{mv_null} =
bless [
@@ -401,7 +408,8 @@
my $error_show_var = 1;
my $have_errors;
if($opt->{ui_profile} or $check) {
- $Tag->error( { all => 1 } ) if ! $CGI->{mv_form_profile};
+ $Tag->error( { all => 1 } )
+ unless $CGI->{mv_form_profile} or $opt->{keep_errors};
my $prof = $opt->{ui_profile} || '';
if ($prof =~ s/^\*//) {
# special notation ui_profile="*whatever" means
@@ -505,14 +513,26 @@
return undef;
};
- my $db = Vend::Data::database_exists_ref($table)
+ my $db;
+ unless($opt->{notable}) {
+ $db = Vend::Data::database_exists_ref($table)
or return $die->('table-editor: bad table %s', $table);
+ }
if($opt->{ui_wizard_fields}) {
$opt->{ui_data_fields} = $opt->{ui_display_only} = $opt->{ui_wizard_fields};
}
- my $keycol = $db->config('KEY');
+ my $keycol;
+ if($opt->{notable}) {
+ $keycol = $opt->{ui_data_key_name};
+ }
+ else {
+ $keycol = $opt->{ui_data_key_name} || $db->config('KEY');
+ }
+
+ $opt->{form_extra} =~ s/^\s*/ /
+ if $opt->{form_extra};
$opt->{form_name} = qq{ NAME="$opt->{form_name}"}
if $opt->{form_name};
@@ -544,8 +564,17 @@
#::logDebug("break_before_label=$opt->{ui_break_before_label}");
}
- $opt->{ui_data_fields} = $opt->{mv_data_fields} || (join " ", $db->columns())
- if ! $opt->{ui_data_fields};
+ $opt->{ui_data_fields} ||= $opt->{mv_data_fields};
+
+ if(! $opt->{ui_data_fields}) {
+ if( $opt->{notable}) {
+ ::logError("table_editor: no place to get fields!");
+ return '';
+ }
+ else {
+ $opt->{ui_data_fields} = join " ", $db->columns();
+ }
+ }
$opt->{ui_data_fields} =~ s/[,\0\s]+/ /g;
###############################################################
@@ -564,7 +593,7 @@
my $url = $Tag->area('ui');
my $key_message;
- if($opt->{ui_new_item}) {
+ if($opt->{ui_new_item} and ! $opt->{notable}) {
if( ! $db->config('_Auto_number') ) {
$db->config('AUTO_NUMBER', '000001');
$key = $db->autonumber($key);
@@ -579,7 +608,10 @@
my $data;
my $exists;
- if($opt->{ui_clone_id} and $db->record_exists($opt->{ui_clone_id})) {
+ if($opt->{notable}) {
+ $data = {};
+ }
+ elsif($opt->{ui_clone_id} and $db->record_exists($opt->{ui_clone_id})) {
$data = $db->row_hash($opt->{ui_clone_id})
or
return $die->('table-editor: row_hash function failed for %s.', $key);
@@ -808,7 +840,7 @@
my @out;
push @out, '[restrict]' if $opt->{reparse};
push @out, <<EOF unless $wo;
-<FORM METHOD=$opt->{method} ACTION="$opt->{href}"$opt->{form_name}$opt->{enctype}>
+<FORM METHOD=$opt->{method} ACTION="$opt->{href}"$opt->{form_name}$opt->{enctype}$opt->{form_extra}>
$sidstr<INPUT TYPE=hidden NAME=mv_todo VALUE="$action">
<INPUT TYPE=hidden NAME=mv_click VALUE="process_filter">
<INPUT TYPE=hidden NAME=mv_nextpage VALUE="$opt->{mv_nextpage}">
@@ -898,18 +930,18 @@
|| $linecount > 4
|| defined $opt->{include_form}
|| $mlabel;
- if ($extra_ok and ! $opt->{no_top} and ! $opt->{nosave}) {
+ if ($extra_ok and ! $wo and ! $opt->{no_top} and ! $opt->{nosave}) {
if($opt->{back_text}) {
push @out, <<EOF unless $wo;
<TR class=rnorm>
<td> </td>
<td align=left colspan=$oddspan class=cdata>
EOF
- push @out, <<EOF if not $wo || $opt->{bottom_buttons};
+ push @out, <<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>
<BR>
EOF
- push @out, <<EOF unless $wo;
+ push @out, <<EOF;
$mlabel
</TD>
</TR>
@@ -920,16 +952,16 @@
EOF
}
elsif ($opt->{wizard}) {
- push @out, <<EOF unless $wo;
+ push @out, <<EOF;
<TR class=rnorm>
<td> </td>
<td align=left colspan=$oddspan class=cdata>
EOF
- push @out, <<EOF if (! $wo and ! $opt->{bottom_buttons});
+ push @out, <<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>
<BR>
EOF
- push @out, <<EOF unless $wo;
+ push @out, <<EOF;
$mlabel
</TD>
</TR>
@@ -940,14 +972,25 @@
EOF
}
else {
- push @out, <<EOF unless $wo;
+ push @out, <<EOF;
<TR class=rnorm>
<td> </td>
<td align=left colspan=$oddspan class=cdata>
<B><INPUT TYPE=submit NAME=mv_click VALUE="$opt->{next_text}">
</B>
+EOF
+ push @out, <<EOF unless $opt->{nocancel};
<INPUT TYPE=submit NAME=mv_click VALUE="$opt->{cancel_text}">$mlabel
+EOF
+
+ push @out, <<EOF if $opt->{show_reset};
+
+<INPUT TYPE=reset>
+EOF
+
+ push @out, <<EOF;
+$mlabel
</TD>
</TR>
@@ -1078,21 +1121,29 @@
}
}
}
- if(!$db) {
+ if(!$db and ! $opt->{notable}) {
return "<TR><TD>Broken table '$table'</TD></TR>";
}
my $passed_fields = $opt->{ui_data_fields};
+#::logDebug("extra=" . ::uneval($extra));
my @extra_cols;
my %email_cols;
my %ok_col;
+ my @cols;
+ my @dbcols;
+ my %display_only;
+
+ if($opt->{notable}) {
+ @cols = split /[\s,\0]+/, $passed_fields;
+ }
+ else {
while($passed_fields =~ s/(\w+[.:]+\S+)//) {
push @extra_cols, $1;
}
- my %display_only;
my @do = grep /\S/, split /[\0,\s]+/, $opt->{ui_display_only};
for(@do) {
$email_cols{$_} = 1 if $opt->{mailto};
@@ -1100,8 +1151,7 @@
push @extra_cols, $_;
}
- my @cols;
- my (@dbcols) = split /\s+/, $Tag->db_columns( {
+ @dbcols = split /\s+/, $Tag->db_columns( {
name => $table,
columns => $passed_fields,
passed_order => 1,
@@ -1127,18 +1177,22 @@
$ok_col{$_} = 1;
}
}
-
@cols = grep $ok_col{$_}, split /\s+/, $opt->{ui_data_fields};
+ }
+
+ $keycol = $cols[0] if ! $keycol;
if($opt->{defaults}) {
- for(@cols) {
if($opt->{force_defaults}) {
- $default->{$_} = $override->{$_} = $def->{$_};
+ $default->{$_} = $def->{$_} for @cols;
}
elsif($opt->{wizard}) {
+ for(@cols) {
$default->{$_} = $def->{$_} if defined $def->{$_};
}
+ }
else {
+ for(@cols) {
next if defined $default->{$_};
next unless defined $def->{$_};
$default->{$_} = $def->{$_};
@@ -1176,6 +1230,26 @@
my @controls;
+ if(my $jsc = $opt->{js_changed}) {
+ $jsc =~ /^\w+$/
+ and $jsc = qq{onChange="$jsc} . q{('$$KEY$$','$$COL$$');"};
+ foreach my $c (@cols) {
+ next if $extra->{$c} =~ /\bonchange\s*=/i;
+ my $tpl = $jsc;
+ $tpl .= $extra->{$c} if length $extra->{$c};
+ $tpl =~ s/\$\$KEY\$\$/$key/g;
+ $tpl =~ s/\$\$COL\$\$/$c/g;
+ if ($extra->{$c} and $extra->{$c} =~ /\bonchange\s*=/i) {
+ $tpl =~ s/onChange="//;
+ $tpl =~ s/"\s*$/;/;
+ $extra->{$c} =~ s/\b(onchange\s*=\s*["'])/$1$tpl/i;
+ }
+ else {
+ $extra->{$c} = $tpl;
+ }
+ }
+ }
+
foreach my $col (@cols) {
my $t;
my $c;
@@ -1224,7 +1298,7 @@
my $overridden;
$currval = $data->{$col} if defined $data->{$col};
- if (defined $override->{$c} ) {
+ if ($opt->{force_defaults} or defined $override->{$c} ) {
$currval = $override->{$c};
$overridden = 1;
#::logDebug("hit override for $col,currval=$currval");
@@ -1315,7 +1389,7 @@
$template =~ s/\$LABEL\$/$Tag->error($parm)/eg;
}
$template =~ s/~TKEY~/$tkey_message || ''/eg;
-#::logDebug("col=$c widget=$widget->{$c} label=$label->{$c} (type=$type)");
+#::logDebug("col=$c currval=$currval widget=$widget->{$c} label=$label->{$c} (type=$type)");
my $display = $Tag->display({
applylocale => 1,
arbitrary => $opt->{ui_meta_view},
@@ -1330,6 +1404,7 @@
help_url => $help_url->{$c},
label => $label->{$c},
key => $key,
+ meta => $pmeta->{$c},
name => $namecol,
override => $overridden,
passed => $passed->{$c},
@@ -1338,6 +1413,7 @@
append => $append->{$c},
prepend => $prepend->{$c},
lookup => $lookup->{$c},
+ lookup_query => $lookup_query->{$c},
db => $database->{$c},
pre_filter => $pre_filter->{$c},
table => $t,
@@ -1345,6 +1421,7 @@
width => $width->{$c},
template => $template,
});
+#::logDebug("finished display of col=$c");
if($super and ! $opt->{no_meta} and ($Variable->{UI_META_LINK} || $def->{ui_meta_force}) ) {
$meta .= '<BR><FONT SIZE=1>';
# Get global variables
@@ -1461,9 +1538,9 @@
EOF
SAVEWIDGETS: {
- last SAVEWIDGETS if $opt->{nosave};
+ last SAVEWIDGETS if $wo || $opt->{nosave};
if($opt->{back_text}) {
- push @out, <<EOF unless $wo;
+ push @out, <<EOF;
<TR class=rnorm>
<td> </td>
<td align=left colspan=$oddspan class=cdata>
@@ -1471,7 +1548,7 @@
EOF
}
elsif($opt->{wizard}) {
- push @out, <<EOF unless $wo;
+ push @out, <<EOF;
<TR class=rnorm>
<td> </td>
<td align=left colspan=$oddspan class=cdata>
@@ -1479,30 +1556,23 @@
EOF
}
else {
- push @out, <<EOF unless $wo;
-<TR class=rnorm>
+ push @out, qq{<TR class=rnorm>
<td> </td>
<td align=left colspan=$oddspan class=cdata>
-<B><INPUT TYPE=submit NAME=mv_click VALUE="$opt->{next_text}"></B> <INPUT TYPE=submit NAME=mv_click VALUE="$opt->{cancel_text}">
-EOF
+<B><INPUT TYPE=submit NAME=mv_click VALUE="$opt->{next_text}"></B>};
+ push @out,
+ qq{ <INPUT TYPE=submit NAME=mv_click VALUE="$opt->{cancel_text}">}
+ unless $opt->{nocancel};
+ push @out, qq{ <INPUT TYPE=reset>}
+ if $opt->{show_reset};
}
-#
-# $out .= <<EOF;
-#
-#<TR class=rnorm>
-#<td> </td>
-#<td align=left colspan=$oddspan>
-#<B><INPUT TYPE=submit NAME=mv_click VALUE="$opt->{next_text}"></B>
-#
-#
-#<INPUT TYPE=submit NAME=mv_click VALUE=$opt->{cancel_text}>
-#EOF
- if($Tag->if_mm('tables', "$table=x") and ! $db->config('LARGE') ) {
+
+ 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');
- push @out, <<EOF unless $wo or $opt->{noexport} or $opt->{nosave};
+ push @out, <<EOF unless $opt->{noexport} or $opt->{nosave};
<small>
@@ -1529,13 +1599,13 @@
$extra
!,
});
- push @out, <<EOF if !($wo || $opt->{nosave});
+ push @out, <<EOF if ! $opt->{nosave};
<BR><BR><A
onClick="return confirm('Are you sure you want to delete $key?')"
HREF="$url"><IMG SRC="delete.gif" ALT="Delete $key" BORDER=0></A> Delete
EOF
}
- push @out, <<EOF unless $wo;
+ push @out, <<EOF;
</small>
</td>
</tr>
1.2 +6 -2 interchange/code/UI_Tag/uneval.coretag
rev 1.2, prev_rev 1.1
Index: uneval.coretag
===================================================================
RCS file: /anon_cvs/repository/interchange/code/UI_Tag/uneval.coretag,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- uneval.coretag 29 Jan 2002 05:52:40 -0000 1.1
+++ uneval.coretag 16 Feb 2002 09:39:08 -0000 1.2
@@ -1,9 +1,13 @@
-UserTag uneval Order ref
+UserTag uneval Order name ref
UserTag uneval PosNumber 1
UserTag uneval Routine <<EOR
sub {
+ my ($name, $ref) = @_;
#::logError("args: @_" . Vend::Util::uneval_it(@_));
- return Vend::Util::uneval_it(@_);
+ if(! $ref) {
+ $ref = $Vend::Session->{$name};
+ }
+ return Vend::Util::uneval($ref);
}
EOR
1.1 interchange/code/UI_Tag/auto_wizard.coretag
rev 1.1, prev_rev 1.0
Index: auto_wizard.coretag
===================================================================
UserTag auto-wizard Order name
UserTag auto-wizard AddAttr
UserTag auto-wizard HasEndTag
UserTag auto-wizard Routine <<EOR
use vars qw/$Session $Tag $CGI $Tmp $Scratch $Values $ready_safe/;
sub compile_wizard {
my ($wizname, $opt, $script) = @_;
#Debug("script in: $script");
$script =~ s/^\s+//;
$script =~ s/\r\n/\n/g;
$script =~ s/\r/\n/g;
my @lines = split /\n/, $script;
my $ref;
my @pages;
my $qip; # question in progress
my $iip; # item in progress
my $fip; # final in progress
my $began; # We have begun
my $sip;
my $vip;
my $mark;
#Debug("Found some lines, number=" . scalar @lines);
for(@lines) {
if($mark) {
$sip .= "$_\n", next
unless $_ eq $mark;
$_ = $sip;
undef $mark;
undef $sip;
}
if (s/<<(\w+)$//) {
$mark = $1;
$sip = $_;
next;
}
s/\s+$//;
if(! $_) {
undef $iip;
next;
}
if(! $ref) {
if(/^(\w+):\s*(.*)/) {
$began = 1;
$wizname ||= $1;
my $title = $2;
$ref = { _page_name => 'begin', _name => [], title => $title };
}
next;
}
if(/^(\d+):\s*(.*)/) {
my $pn = $1; my $title = $2;
push @pages, $ref;
my $lastpage = $ref->{_page_name};
$qip = [];
$ref = { _page_name => $pn, _name => $qip, _page_title => $title};
next;
}
if(/^final:\s*(.*)/) {
undef $qip;
undef $iip;
$fip = 1;
my $title = $1;
push @pages, $ref;
my $lastpage = $ref->{_page_name};
$ref = { _page_name => 'final', _page_title => $title};
next;
}
if($fip) {
s/^\s+//;
unless (/^([A-Za-z]\w+)\s*:\s*(.*)/s) {
$Tag->warnings(qq{Unrecognized "$_" in middle of script.});
next;
}
my $thing = $1;
my $value = $2;
$ref->{$thing} = $value;
next;
}
if($qip) {
if(/^(itl|perl)(?:_condition)?:\s*(.*)$/s) {
if(! $ref->{_condition}) {
$ref->{_conditional_type} = $1;
$ref->{_condition} = $2;
}
else {
$Tag->error(
"%s_condition: cannot set twice in wizard %s screen %s",
$1,
$pages[0]->{_title},
$ref->{_page_name},
);
return;
}
next;
}
s/^\s+//;
unless (/^([A-Za-z]\w+)(?:=([^:]+))?\s*:\s*(.*)/s) {
$Tag->warnings(qq{Unrecognized "$_" in middle of script.});
next;
}
my $thing = $1;
my $modifier = $2;
my $value = $3;
if(! $iip) {
$iip = $thing;
push @$qip, $iip;
$ref->{label}{$iip} = $value;
next;
}
if($modifier) {
$ref->{_modifier} ||= {};
$ref->{_modifier}{$thing} ||= {};
$ref->{_modifier}{$thing}{$iip} = $modifier;
}
$ref->{$thing} ||= {};
$ref->{$thing}{$iip} = $value;
}
}
push @pages, $ref;
$wizname ||= 'default';
my $wiz_ary = $Session->{auto_wizard} ||= {};
$wiz_ary->{$wizname} = \@pages;
#Debug("Wizard $wizname=" . ::uneval(\@pages));
return $wizname;
}
sub {
my ($wizname, $opt, $body) = @_;
return $Tmp->{auto_wizard} if $opt->{show} and ! $opt->{run};
if($opt->{compile}) {
my $n;
$n = compile_wizard(@_)
or do {
$Tmp->{auto_wizard} = errmsg(
"Wizard %s failed to compile.",
$wizname,
);
return;
};
#Debug("compiler returned wizname=$n");
$wizname = $n;
undef $body;
}
if(! defined $opt->{run}) {
$opt->{run} = 1;
$opt->{show} = 0 if ! defined $opt->{show};
}
my $title_var = $opt->{title_scratch} || 'page_title';
my $banner_var = $opt->{banner_scratch} || 'page_banner';
my $wiz;
return unless $wiz = $Session->{auto_wizard};
$wizname ||= $CGI->{wizard_name} || 'default';
#Debug("wizname=$wizname");
return unless $wiz = $wiz->{$wizname};
#Debug("we have a wiz! wizname=$wizname");
my $beg = $wiz->[0];
my $fin = $wiz->[-1];
for($beg, $fin) {
die "Bad wizard!" unless ref($_) eq 'HASH';
}
my $lastwiz = $#$wiz;
my $lastpage = $CGI->{wizard_page} || 0;
my $current_page;
my %opts;
copyref($beg, \%opts);
# Get rid of internal stuff
for(keys %opts) {
next unless /^_/;
delete $opts{$_};
}
if($CGI->{ui_wizard_action} eq 'Back') {
$current_page = $lastpage - 1;
}
elsif($CGI->{ui_wizard_action} eq 'Cancel') {
$current_page = 0;
}
elsif($CGI->{ui_wizard_action} eq 'Next') {
$current_page = $lastpage + 1;
}
else {
$current_page = $lastpage;
}
my $finished;
my $condition_done;
my $optref;
GETSCREEN: {
$optref = $wiz->[$current_page];
if(! $condition_done and $optref->{_condition}) {
$condition_done = 1;
my $result;
if($optref->{_condition_type} eq 'itl') {
eval {
$result = interpolate_html($optref->{_condition});
};
$result =~ s/\s+$//;
$result =~ s/.*\s//s;
$result += 0;
$current_page += $result;
}
else {
eval {
$result = $ready_safe->reval($optref->{_condition});
};
if($@) {
$Tag->error(
"error during perl conditional: $@\ncode was:\n%s",
$@,
$optref->{_condition},
);
$current_page -= 1;
}
$result += 0;
#::logDebug("did perl conditional, result=$result");
$current_page += $result;
}
redo GETSCREEN;
}
if($current_page <= 0) {
$current_page = 1;
}
elsif ( ($current_page + 1) == $lastwiz ) {
$opts{next_text} = errmsg('Finish')
if $fin->{auto};
}
elsif ($current_page >= $lastwiz) {
$finished = 1;
}
$optref = $wiz->[$current_page];
}
my %attr;
$attr{TITLE} = $Scratch->{$title_var} = $optref->{_page_title};
$attr{BANNER} = $Scratch->{$banner_var} = $optref->{_page_title};
if($finished) {
my $ref = { %$fin };
my @vals;
for my $w (@$wiz) {
next unless ref($w->{_name}) eq 'ARRAY';
push @vals, @{$w->{_name}};
}
#Debug("finished, page ref=" . uneval($ref));
$ref->{href} ||= delete $ref->{page};
$attr{TITLE} = $Scratch->{$title_var}
= $ref->{_page_title} || "Finished with $wizname...";
$attr{PROMPT} = delete $ref->{prompt} || '';
$attr{ANCHOR} = delete $ref->{anchor} || 'Go';
$attr{EXTRA} = delete $ref->{extra} || '';
my $remap = delete $ref->{remap};
my $template = delete $ref->{template};
$attr{EXTRA} = " $attr{EXTRA}" if $attr{EXTRA};
my $auto = delete $ref->{auto};
for(keys %$ref) {
next unless /^_/;
delete $ref->{$_};
}
$ref->{form} = 'auto';
for(@vals) {
$ref->{$_} = $Values->{$_};
}
my $save = {};
if($remap) {
my @pairs = split /[\s,\0]+/, $remap;
for(@pairs) {
my ($k, $v) = split /=/, $_;
next unless $k and $v;
my $val = delete($ref->{$k}) || $save->{$k};
$save->{$k} = $val;
$ref->{$v} = $val;
}
}
$attr{URL} = $Tag->area($ref);
if($auto) {
$opt->{reparse} = 1;
return '[bounce href="' . $attr{URL} . '"]';
}
$template ||= <<'EOF';
<H1>{TITLE}</h1>
{PROMPT}
<p>
<blockquote>
<A HREF="{URL}"{EXTRA}>{ANCHOR}</A>
</blockquote>
EOF
$Tmp->{auto_wizard} = $Tag->attr_list( { hash => \%attr }, $template);
return $Tmp->{auto_wizard} if $opt->{show};
return;
}
#Debug("we have a wiz=$wizname! current_page = $current_page");
#Debug("optref=" . $Tag->uneval(undef, $optref));
my $name = $optref->{_name} || die;
$Scratch->{page_title} = $optref->{_page_title};
$opts{all_errors} = '1';
$opts{hidden} = {
wizard_name => $wizname,
wizard_page => $current_page,
};
$opts{wizard} = 1;
$opts{notable} = 1;
$opts{no_meta} = 1;
$opts{defaults} = 1;
$opts{mv_cancelpage} ||= 'admin/index';
$opts{row_template} = <<'EOF';
{HELP} <td> </td>
<td class=cdata>
<span style="color: blue">$HELP$</span>
</td>
</tr>
<tr class=rnorm>{/HELP}
<td class=cdata width="20%">
$BLABEL$$LABEL$$ELABEL$
</td>
<td class=cdata>
<table cellspacing=0 cellmargin=0 width="100%">
<tr>
<td class=cwidget>
$WIDGET$
</td>
<td class=chelp>~TKEY~{HELP_URL}<BR><A HREF="$HELP_URL$">more help</A>{/HELP_URL}</td>
</tr>
</table>
</td>
<tr class=rtitle>
<td colspan=2><img src="bg.gif"></td>
EOF
$opts{ui_wizard_fields} = join " ", @$name;
$opts{mv_nextpage} = $Global::Variable->{MV_PAGE};
$opts{mv_prevpage} = $Global::Variable->{MV_PAGE} if $current_page != 1;
$opts{bottom_buttons} = 1;
my %modsub = (
i => sub {
my $val = shift;
::logDebug("running interpolate of $val");
return interpolate_html($val);
},
default => sub {
my $val = shift;
my $filters = join " ", @_;
return $Tag->filter($filters, $val);
},
);
my $mod = $optref->{_modifier} || '';
for(keys %$optref) {
next if /^_/;
next unless ref($optref->{$_}) eq 'HASH';
$opts{$_} ||= {};
next unless ref($opts{$_}) eq 'HASH';
Vend::Util::copyref($optref->{$_}, $opts{$_});
my $m;
if($mod and $m = $mod->{$_}) {
my $r = $opts{$_};
for my $k (keys %$r) {
next unless $m->{$k};
my @subs = split /\s*,\s*/, $m->{$k};
for(@subs) {
my $sub = $modsub{$_} || $modsub{default};
$r->{$k} = $sub->($r->{$k}, $_);
}
}
}
}
$opts{widget} ||= {};
if( my $r = delete $opts{type} ) {
for(keys %$r) {
$opts{widget}{$_} = $r->{$_};
}
}
delete $opts{type};
$Tmp->{auto_wizard} = $Tag->table_editor( {all_opts => \%opts });
if($Tmp->{auto_wizard} !~ /<form\s+/i) {
$attr{auto_wizard} .= "\n";
my $msg = errmsg("Auto wizard failed to run wizard %s.", $name);
$Tmp->{auto_wizard} .= $Tag->error({ show => 1, set => $msg });
}
return $Tmp->{auto_wizard} if $opt->{show};
return;
}
EOR
1.1 interchange/code/UI_Tag/content_info.coretag
rev 1.1, prev_rev 1.0
Index: content_info.coretag
===================================================================
UserTag content-info Order dir
UserTag content-info addAttr
UserTag content-info Routine <<EOR
use UI::ContentEditor;
sub {
my ($dir, $opt) = @_;
$opt->{dir} = $dir if $dir;
my $delim = $opt->{delimiter} || ',';
my $type;
if( $opt->{templates} ) {
$type = 'templates';
}
else {
$type = 'components';
}
my $tpls;
my $comps;
my $things;
my $labels;
my $classes;
if($Vend::caCompCache{$type}) {
$things = $Vend::caCompCache{$type};
$labels = $Vend::clCompCache{$type};
$classes = $Vend::ccCompCache{$type};
}
else {
my $o = { dir => $opt->{dir}, $type => 1, available => 1};
$things = [];
@$things = UI::ContentEditor::read_template(undef, $o);
$Vend::caCompCache{$type} = $things;
$labels = $Vend::clCompCache{$type} = {};
$classes = $Vend::ccCompCache{$type} = {};
for(@$things) {
$Vend::clCompCache->{$_->[0]} = $_->[1];
$Vend::ccCompCache->{$_->[0]} = $_->[2];
}
}
if($opt->{label}) {
return $Vend::clCompCache->{$opt->{code}};
}
if($opt->{structure}) {
$opt->{type} = $opt->{ui_type} = 'component';
return Vend::ContentEditor::read_template($opt->{code}, $opt);
}
if ($opt->{show_class}) {
return $Vend::ccCompCache->{$opt->{code}};
}
## Default is to return options
my @out;
if(my $class = $opt->{class}) {
my $re = qr{\b(?:$class|ALL)\b};
my @comps = grep $_->[2] =~ $re, @$things;
$things = \@comps;
}
for(@$things) {
$_->[1] =~ s/($delim)/'&#' . ord($1) . ';'/ge;
push @out, join "=", $_->[0], $_->[1];
}
unshift @out, ($opt->{templates} ? "=No template" : "=No component");
return join $delim, @out;
}
EOR
1.1 interchange/code/UI_Tag/content_modify.coretag
rev 1.1, prev_rev 1.0
Index: content_modify.coretag
===================================================================
UserTag content-modify Order op name type
UserTag content-modify addAttr
UserTag content-modify Routine <<EOR
use UI::ContentEditor;
sub {
return UI::ContentEditor::content_modify(@_);
}
EOR
2.7 +22 -19 interchange/dist/foundation/catalog.cfg
rev 2.7, prev_rev 2.6
Index: catalog.cfg
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/foundation/catalog.cfg,v
retrieving revision 2.6
retrieving revision 2.7
diff -u -r2.6 -r2.7
--- catalog.cfg 1 Feb 2002 04:21:46 -0000 2.6
+++ catalog.cfg 16 Feb 2002 09:39:08 -0000 2.7
@@ -192,8 +192,30 @@
## Set this if you have a different secure server
#AlwaysSecure order ord/checkout ord/basket login change_password process
+## Payment-related stuff
+
EncryptKey __PGP_KEY__
+## These routes are not order routes, but payment routes
+Route authorizenet id "__AUTHNET_ID__"
+Route authorizenet secret "__AUTHNET_SECRET__"
+Route authorizenet host "__AUTHNET_HOST__"
+Route authorizenet referer "__AUTHNET_REFERER__"
+
+Route cybercash configfile "__CYBER_CONFIGFILE__"
+
+Route itransact id "__ITRANSACT_ID__"
+
+Route signio id "__SIGNIO_ID__"
+Route signio secret "__SIGNIO_SECRET__"
+Route signio partner "__SIGNIO_PARTNER__"
+Route signio vendor "__SIGNIO_VENDOR__"
+Route signio host "__SIGNIO_SERVER__"
+
+Route skipjack id "__SKIPJACK_ID__"
+Route skipjack partner "__SKIPJACK_PARTNER__"
+
+
# This prevents a user from setting this value, you may want to unset
# this if you have user-selectable handling charges like insurance
FormIgnore mv_handling
@@ -282,25 +304,6 @@
#Route default dynamic_routes 1
## Uncomment this if you want ITL allowed in routes
#Route default expandable 1
-
-## These routes are not order routes, but payment routes
-Route authorizenet id "__AUTHNET_ID__"
-Route authorizenet secret "__AUTHNET_SECRET__"
-Route authorizenet host "__AUTHNET_HOST__"
-Route authorizenet referer "__AUTHNET_REFERER__"
-
-Route cybercash configfile "__CYBER_CONFIGFILE__"
-
-Route itransact id "__ITRANSACT_ID__"
-
-Route signio id "__SIGNIO_ID__"
-Route signio secret "__SIGNIO_SECRET__"
-Route signio partner "__SIGNIO_PARTNER__"
-Route signio vendor "__SIGNIO_VENDOR__"
-Route signio host "__SIGNIO_SERVER__"
-
-Route skipjack id "__SKIPJACK_ID__"
-Route skipjack partner "__SKIPJACK_PARTNER__"
SalesTax __TAXFIELD__
2.7 +20 -17 interchange/dist/foundation/products/variable.txt
rev 2.7, prev_rev 2.6
Index: variable.txt
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/foundation/products/variable.txt,v
retrieving revision 2.6
retrieving revision 2.7
diff -u -r2.6 -r2.7
--- variable.txt 8 Aug 2001 21:46:14 -0000 2.6
+++ variable.txt 16 Feb 2002 09:39:09 -0000 2.7
@@ -9,17 +9,24 @@
COMPANY __MVC_COMPANY__ Company
CONTRAST RED Template
CREDIT_CARDS_ACCEPTED __MVC_PAYCC__ Payment
-SHIP_DEFAULT_COUNTRY US Shipping
-SHIP_DEFAULT_MODE upsg Shipping
DECREMENT_INVENTORY 1 Order
DEFAULT_FONT __MVC_DEFAULTFONT__ Template
DEFAULT_FONT __MVC_DEFAULTFONT__ Template
+DICT_PRICE_SALE __MVC_DICTPRICEALE__ Labels
+DICT_PRICE_STD __MVC_DICTPRICESTD__ Labels
DOCROOT __MVC_DOCUMENTROOT__ Directories and Paths
EMAIL_INFO __MVC_EMAILINFO__ Company
EMAIL_SERVICE __MVC_EMAILSERVICE__ Company
ENCRYPTOR Encryption
FAX __MVC_FAX__ Company
IMAGE_DIR __MVC_IMAGEURL__ Directories and Paths
+IMG_ADDCART __MVC_IMGADDCART__ Images
+IMG_CHECKOUT __MVC_IMGCHECKOUT__ Images
+IMG_CONTINUE __MVC_IMGCONTINUE__ Images
+IMG_MOREINFO __MVC_IMGMOREINFO__ Images
+IMG_PLACEORDER __MVC_IMGPLACEORDER__ Images
+IMG_RECALC __MVC_IMGRECALC__ Images
+IMG_VIEWCART __MVC_IMGVIEWCART__ Images
LOGGED_STATIC 1 Static pages
LOGO __MVC_LOGO__ Template
MV_DEFAULT_SEARCH_DB 1 Database
@@ -27,48 +34,44 @@
MV_OPTION_TABLE options Item display
MYSQL __MVC_MYSQL__ Database
ORACLE __MVC_ORACLE__ Database
-ORDER_ROUTES log main copy_user Order
ORDERS_TO __MVC_MAILORDERTO__ Order
-PGSQL __MVC_PGSQL__ Database
+ORDER_ROUTES log main copy_user Order
PGP_KEY Encryption
+PGSQL __MVC_PGSQL__ Database
PHONE __MVC_PHONE__ Company
-PO_ACCEPTED __MVC_PAYPO__ Payment
POSTAL_ACCEPTED 0 Payment
+PO_ACCEPTED __MVC_PAYPO__ Payment
SAMPLEHTML __MVC_SAMPLEHTML__ Directories and Paths
SAMPLEURL __MVC_SAMPLEURL__ Directories and Paths
SECURE_ENABLE __MVC_ENABLESECURE__ General
SECURE_SERVER __MVC_SECURESERVERNAME__ Directories and Paths
SERVER_NAME __MVC_SERVERNAME__ Directories and Paths
-STYLE __MVC_STYLE__ Template
+SHIP_DEFAULT_COUNTRY US Shipping
+SHIP_DEFAULT_MODE upsg Shipping
+SHIP_FLAT_DOM_RATE 5 Shipping
+SHIP_FLAT_INTL_RATE 10 Shipping
SQLPASS __MVC_SQLPASS__ Database
SQLUSER __MVC_SQLUSER__ Database
+STYLE __MVC_STYLE__ Template
TAXAREA __MVC_TAXAREA__ Tax
TAXFIELD state Tax
TAXRATE __MVC_TAXRATE__ Tax
TAXSHIPPING __MVC_TAXSHIPPING__ Tax
-SHIP_FLAT_INTL_RATE 10 Shipping
-SHIP_FLAT_DOM_RATE 5 Shipping
TOLLFREE __MVC_TOLLFREE__ Company
UI_ABOUT_LOGIN_URL http://www.redhat.com/ecommerce Admin layout
UI_ABOUT_NORMAL_URL http://www.redhat.com/ecommerce Admin layout
UI_ADMIN_TABLES mv_metadata locale variable dict icmenu ichelp route access Admin control
UI_BOTTOMIMG poweredby.gif Admin layout
+UI_COMPONENT_DIR templates/components Directories and Paths
UI_HELP_HEIGHT 480 Admin layout
UI_HELP_WIDTH 650 Admin layout
UI_IMAGE_DIR __MVC_SHAREURL__/interchange/ Admin control
UI_IMAGE_DIR_SECURE __MVC_SHAREURL__/interchange/ Admin control
UI_META_LINK 1 Admin control
+UI_PAGE_DIR pages Directories and Paths
UI_SECURE __MVC_UISECURE__ Admin control
+UI_TEMPLATE_DIR templates Directories and Paths
UI_TRAFFIC_STATS __MVC_TRAFFICSTATS__ Directories and Paths
UPS_COUNTRY_FIELD country Shipping
UPS_ORIGIN __MVC_UPSORIGIN__ Shipping
UPS_POSTCODE_FIELD zip Shipping
-IMG_ADDCART __MVC_IMGADDCART__ Images
-IMG_VIEWCART __MVC_IMGVIEWCART__ Images
-IMG_CONTINUE __MVC_IMGCONTINUE__ Images
-IMG_CHECKOUT __MVC_IMGCHECKOUT__ Images
-IMG_MOREINFO __MVC_IMGMOREINFO__ Images
-IMG_RECALC __MVC_IMGRECALC__ Images
-IMG_PLACEORDER __MVC_IMGPLACEORDER__ Images
-DICT_PRICE_STD __MVC_DICTPRICESTD__ Labels
-DICT_PRICE_SALE __MVC_DICTPRICEALE__ Labels
2.1 +50 -10 interchange/dist/foundation/templates/leftonly
rev 2.1, prev_rev 2.0
Index: leftonly
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/foundation/templates/leftonly,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- leftonly 18 Jul 2001 02:21:32 -0000 2.0
+++ leftonly 16 Feb 2002 09:39:09 -0000 2.1
@@ -1,18 +1,58 @@
[comment]
-ui_template: Yes
-ui_template_name: leftonly
-ui_template_version: 4.7.3
+ui_template: leftonly
+ui_type: template
+ui_name: leftonly
+ui_version: 4.9.0
+ui_label: Page with top/left areas.
+ui_source: templates/leftonly
ui_template_layout: LEFTONLY_TOP, UI_CONTENT, LEFTONLY_BOTTOM
-ui_template_description: Page with top/left areas.
-page_title:
- description: Page title
+page_title:
+ label: Page Title
+ width: 50
members_only:
+ code: members_only
+ label: Members only?
options: 1=Yes,=No*
- widget: radio
- description: Members only
+ type: yesno
[/comment]
-[set page_title][set]
-[set members_only][set]
+[set page_title][/set]
+[set members_only][/set]
+
+<!-- BEGIN PAGE_PICTURE -->
+<b>Representation</b><br>
+<table width="100%">
+<tr>
+ <td colspan=2 id=picture0>preamble</td>
+</tr>
+<tr>
+ <td colspan=2 id=picture1>controls</td>
+</tr>
+<tr>
+ <td colspan=2 bgcolor="#CCCCCC"><br>header<br> </td>
+</tr>
+<tr>
+ <td id=comp_picture1 width="25%">slot1</td>
+ <td rowspan=3>
+ <div id=comp_picture4 style="width: 100%">slot4</div>
+ <div id=comp_picture5 style="width: 100%"><br>CONTENT<br> </div>
+ <div id=comp_picture6 style="width: 100%">slot5</div>
+ </td>
+</tr>
+<tr>
+ <td id=comp_picture2 width="25%">slot2</td>
+</tr>
+<tr>
+ <td id=comp_picture3 width="25%">slot3</td>
+</tr>
+
+<tr>
+ <td colspan=2 bgcolor="#CCCCCC">footer</td>
+</tr>
+<tr>
+ <td colspan=2 id=picture2>postamble</td>
+</tr>
+</table>
+<!-- END PAGE_PICTURE -->
2.1 +56 -11 interchange/dist/foundation/templates/leftright
rev 2.1, prev_rev 2.0
Index: leftright
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/foundation/templates/leftright,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- leftright 18 Jul 2001 02:21:32 -0000 2.0
+++ leftright 16 Feb 2002 09:39:09 -0000 2.1
@@ -1,18 +1,63 @@
[comment]
-ui_template: Yes
-ui_template_name: leftright
-ui_template_version: 4.7.3
+ui_template: leftright
+ui_type: template
+ui_name: leftright
+ui_version: 4.9.0
+ui_label: Page with top/left/right areas.
+ui_source: templates/leftright
ui_template_layout: LEFTRIGHT_TOP, UI_CONTENT, LEFTRIGHT_BOTTOM
-ui_template_description: Page with top/left/right areas.
-page_title:
- description: Page title
+page_title:
+ label: Page title
+ width: 50
members_only:
- options: 1=Yes,=No*
- widget: radio
- description: Members only
+ label: Members only
+ type: yesno
+
+page_banner:
+ code: page_banner
+ label: Page Banner
+ type: text
+ width: 30
[/comment]
-[set page_title][set]
-[set members_only][set]
+
+<!-- BEGIN PAGE_PICTURE -->
+<b>Representation</b><br>
+<table width="100%">
+<tr>
+ <td colspan=3 id=picture0>preamble</td>
+</tr>
+<tr>
+ <td colspan=3 id=picture1>controls</td>
+</tr>
+<tr>
+ <td colspan=3 bgcolor="#CCCCCC"><br>header<br> </td>
+</tr>
+<tr>
+ <td id=comp_picture1 width="25%">slot1</td>
+ <td rowspan=3>
+ <div id=comp_picture4 style="width: 100%">slot4</div>
+ <div id=comp_picture5 style="width: 100%"><br>CONTENT<br> </div>
+ <div id=comp_picture6 style="width: 100%">slot5</div>
+ </td>
+ <td id=comp_picture7>slot6</td>
+</tr>
+<tr>
+ <td id=comp_picture2 width="25%">slot2</td>
+ <td id=comp_picture8 width="25%">slot7</td>
+</tr>
+<tr>
+ <td id=comp_picture3 width="25%">slot3</td>
+ <td id=comp_picture9 width="25%">slot8</td>
+</tr>
+
+<tr>
+ <td colspan=3 bgcolor="#CCCCCC">footer</td>
+</tr>
+<tr>
+ <td colspan=3 id=picture2>postamble</td>
+</tr>
+</table>
+<!-- END PAGE_PICTURE -->
2.1 +24 -20 interchange/dist/foundation/templates/components/affiliate_receptor
rev 2.1, prev_rev 2.0
Index: affiliate_receptor
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/foundation/templates/components/affiliate_receptor,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- affiliate_receptor 18 Jul 2001 02:21:34 -0000 2.0
+++ affiliate_receptor 16 Feb 2002 09:39:09 -0000 2.1
@@ -1,25 +1,29 @@
[comment]
ui_component: affiliate_receptor
-ui_component_type: content
-ui_component_label: Welcome affiliate program arrivals
-
-coupon_allowed:
- label: Allow discount coupons
- widget: select
- options: 1=Yes,0=No
-
-title_css:
- label: Style of title
- widget: textarea
- advanced: 1
-
-discount_css:
- label: Style of discount message
- widget: textarea
- advanced: 1
+ui_type: component
+ui_name: affiliate_receptor
+ui_class: content
+ui_label: Welcome affiliate program arrivals
+ui_source: templates/components/affiliate_receptor
+
+coupon_allowed:
+ code: coupon_allowed
+ label: Allow discount coupons
+ options: 1=Yes,0=No
+ type: select
+
+title_css:
+ advanced: 1
+ code: title_css
+ label: Style of title
+ type: textarea
+
+discount_css:
+ advanced: 1
+ label: Style of discount message
+ type: textarea
[/comment]
-
<!-- begin component [control component affiliate_receptor] -->
[if session source]
[calc]
@@ -35,9 +39,9 @@
$Scratch->{coupon_approve} = 1;
return;
[/calc]
-
+<!-- see if was published -->
<br>
-
+<!--Change some content-->
Welcome Affiliate Program Visitor:
<br>
2.1 +20 -15 interchange/dist/foundation/templates/components/best
rev 2.1, prev_rev 2.0
Index: best
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/foundation/templates/components/best,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- best 18 Jul 2001 02:21:34 -0000 2.0
+++ best 16 Feb 2002 09:39:09 -0000 2.1
@@ -1,38 +1,43 @@
-<!-- BEGIN COMPONENT [control component best] -->
[comment]
ui_component: best
-ui_component_type: vertical, content
-ui_component_group: promotion
-ui_component_label: Best sellers
+ui_type: component
+ui_name: best
+ui_class: vertical, content
+ui_group: promotion
+ui_label: Best sellers
+ui_source: templates/components/best
banner:
- widget: text
+ code: banner
+ type: text
width: 40
+ default: Best Sellers...
toprow_css:
+ advanced: 1
+ height: 4
label: CSS describing top row
- widget: textarea
+ type: textarea
width: 60
- height: 4
- advanced: 1
toprow_color:
- widget: text
- width: 7
advanced: 1
+ type: text
+ width: 7
matches:
- widget: select
- options: 1,2*,3,4,5,6,7,8,9,10
help: If you select more matches than columns, multiple rows will be generated.
+ options: 1,2,3,4,5,6,7,8,9,10
+ type: select
+ default: 2
cols:
label: Columns
- widget: select
- options: 1,2*,3,4
+ options: 1,2,3,4
+ type: select
+ default: 2
[/comment]
-
<table width="95%" align=center>
<tr>
<td class="categorybar">
2.3 +13 -11 interchange/dist/foundation/templates/components/cart
rev 2.3, prev_rev 2.2
Index: cart
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/foundation/templates/components/cart,v
retrieving revision 2.2
retrieving revision 2.3
diff -u -r2.2 -r2.3
--- cart 6 Feb 2002 16:42:23 -0000 2.2
+++ cart 16 Feb 2002 09:39:09 -0000 2.3
@@ -1,19 +1,21 @@
[comment]
ui_component: cart
-ui_component_type: content
-ui_component_group: checkout
-ui_component_label: Shopping cart display (full)
+ui_type: component
+ui_name: cart
+ui_class: content
+ui_group: checkout
+ui_label: Shopping cart display (full)
+ui_source: templates/components/cart
others_bought:
label: Use "others who bought this" here
- widget: yesno
+ type: yesno
upsell_in_cart:
label: Put upsell come-in under item
- widget: yesno
+ type: yesno
[/comment]
-
<!-- BEGIN COMPONENT [control component cart] -->
<table width="95%" cellspacing="0">
@@ -37,7 +39,7 @@
[/else]
[/if]
- <FORM ACTION="[process secure=1]" METHOD=POST name="basket">
+ <FORM ACTION="[process-target secure=1]" METHOD=POST name="basket">
<INPUT TYPE=hidden NAME=mv_session_id VALUE="[data session id]">
<INPUT TYPE=hidden NAME=mv_doit VALUE=refresh>
<INPUT TYPE=hidden NAME=mv_orderpage VALUE="ord/basket">
@@ -101,10 +103,10 @@
<TR class="[item-calc]$row_class || 'contentbar1'[/item-calc]">
<TD align=center>
- <INPUT TYPE=checkbox NAME="[quantity-name]" onClick="this.form.action='[process]', this.form.submit()" VALUE=0>
+ <INPUT TYPE=checkbox NAME="[quantity-name]" onClick="this.form.action='[process-target]', this.form.submit()" VALUE=0>
</TD>
<TD><b>[item-sku]</b></TD>
- <td>[page [item-sku]]<b>[item-description]</b></A>
+ <td>[page [item-sku]]<b>[item-data products description]</b></A>
[if scratch dealer]
[if-item-data pricing sku]
@@ -413,7 +415,7 @@
[if session logged_in][then]
[if value save_cart eq 'recurring']
- <FORM ACTION="[process]" METHOD=POST>
+ <FORM ACTION="[process-target]" METHOD=POST>
To save this recurring order, give it a nickname, then press 'Save Cart'.<br>
Nickname:
<INPUT TYPE=TEXT NAME="c_nickname" SIZE=11 VALUE="[scratch just_nickname]">
@@ -425,7 +427,7 @@
<INPUT TYPE=SUBMIT VALUE="Save Cart">
</FORM>
[elsif value save_cart eq 'cart']
- <FORM ACTION="[process]" METHOD=POST>
+ <FORM ACTION="[process-target]" METHOD=POST>
To save this cart, give it a nickname, then press 'Save Cart'.<br>
Nickname:
<INPUT TYPE=TEXT NAME="c_nickname" SIZE=11 VALUE="[scratch just_nickname]">
2.1 +7 -4 interchange/dist/foundation/templates/components/cart_display
rev 2.1, prev_rev 2.0
Index: cart_display
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/foundation/templates/components/cart_display,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- cart_display 18 Jul 2001 02:21:34 -0000 2.0
+++ cart_display 16 Feb 2002 09:39:09 -0000 2.1
@@ -1,11 +1,14 @@
[comment]
ui_component: cart_display
-ui_component_type: content
-ui_component_group: info
-ui_component_label: Smaller cart for display in content area
+ui_type: component
+ui_name: cart_display
+ui_class: content
+ui_group: info
+ui_label: Smaller cart for display in content area
+ui_source: templates/components/cart_display
-[/comment]
+[/comment]
<!-- BEGIN COMPONENT [control component cart_display] -->
[if items]
<center>
2.1 +7 -4 interchange/dist/foundation/templates/components/cart_tiny
rev 2.1, prev_rev 2.0
Index: cart_tiny
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/foundation/templates/components/cart_tiny,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- cart_tiny 18 Jul 2001 02:21:34 -0000 2.0
+++ cart_tiny 16 Feb 2002 09:39:09 -0000 2.1
@@ -1,11 +1,14 @@
[comment]
ui_component: cart_tiny
-ui_component_type: vertical
-ui_component_group: info
-ui_component_label: Small cart for left/right display
+ui_type: component
+ui_name: cart_tiny
+ui_class: vertical
+ui_group: info
+ui_label: Small cart for left/right display
+ui_source: templates/components/cart_tiny
-[/comment]
+[/comment]
<!-- BEGIN COMPONENT [control component cart_tiny] -->
<tr><td align="center">
2.1 +15 -12 interchange/dist/foundation/templates/components/category_horizontal
rev 2.1, prev_rev 2.0
Index: category_horizontal
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/foundation/templates/components/category_horizontal,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- category_horizontal 18 Jul 2001 02:21:34 -0000 2.0
+++ category_horizontal 16 Feb 2002 09:39:09 -0000 2.1
@@ -1,26 +1,29 @@
[comment]
ui_component: category_horizontal
-ui_component_type: horizontal
-ui_component_group: navigation
-ui_component_label: Horizontal category list
+ui_type: component
+ui_name: category_horizontal
+ui_class: horizontal
+ui_group: navigation
+ui_label: Horizontal category list
+ui_source: templates/components/category_horizontal
page_class:
- label: Page class
- widget: select
- lookup: which_page
+ advanced: 1
db: area
help: Defines which sets of items should be displayed
- advanced: 1
+ label: Page class
+ lookup: which_page
+ type: select
set_selector:
- label: Page area selector
- widget: select
+ advanced: 1
db: area
- lookup: sel
help: Defines which sets of items should be displayed
- advanced: 1
-[/comment]
+ label: Page area selector
+ lookup: sel
+ type: select
+[/comment]
<tr><td align="left" class="categorybar">
<br>
<table width="90%" align="center">
2.1 +20 -15 interchange/dist/foundation/templates/components/category_vertical
rev 2.1, prev_rev 2.0
Index: category_vertical
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/foundation/templates/components/category_vertical,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- category_vertical 18 Jul 2001 02:21:34 -0000 2.0
+++ category_vertical 16 Feb 2002 09:39:09 -0000 2.1
@@ -1,33 +1,37 @@
[comment]
ui_component: category_vertical
-ui_component_type: vertical
-ui_component_group: Navigation
-ui_component_label: Vertical category list
+ui_type: component
+ui_name: category_vertical
+ui_class: vertical
+ui_group: Navigation
+ui_label: Vertical category list
+ui_source: templates/components/category_vertical
page_class:
- label: Page class
- widget: select
- lookup: which_page
+ advanced: 1
db: area
help: Defines which sets of items should be displayed
- advanced: 1
+ label: Page class
+ lookup: which_page
+ type: select
set_selector:
- label: Page area selector
- widget: select
+ advanced: 1
db: area
- lookup: sel
help: Defines which sets of items should be displayed
- advanced: 1
+ label: Page area selector
+ lookup: sel
+ type: select
timed:
- label: Use timed build
- widget: select
+ advanced: 1
+ code: timed
help: Makes more efficient for large/busy catalogs
+ label: Use timed build
options: 0=No, 5=5 minutes, 10=10 minutes, 20=20 minutes, 60=60 minutes, 1440=Daily
- advanced: 1
-[/comment]
+ type: select
+[/comment]
<tr><td align="left" class="categorybar">
<br>
<table width="90%" align="center">
@@ -67,6 +71,7 @@
search="
fi=cat
st=db
+ co=yes
tf=sort
tf=name
rf=code,name
2.1 +18 -16 interchange/dist/foundation/templates/components/cross
rev 2.1, prev_rev 2.0
Index: cross
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/foundation/templates/components/cross,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- cross 18 Jul 2001 02:21:34 -0000 2.0
+++ cross 16 Feb 2002 09:39:09 -0000 2.1
@@ -1,38 +1,40 @@
[comment]
ui_component: cross
-ui_component_type: content, vertical
-ui_component_group: promotions
-ui_component_label: Cross-sell or specific feature
-ui_component_help: depends on setting cross_codes or cross_category in page, \
-falls back to featured/specials.
+ui_type: component
+ui_name: cross
+ui_class: content, vertical
+ui_group: promotions
+ui_help: depends on setting cross_codes or cross_category in page, falls back to featured/specials.
+ui_label: Cross-sell or specific feature
+ui_source: templates/components/cross
+
+banner:
+ code: banner
+ default: See also...
+ label: Top row banner
+ type: text
+ width: 40
size:
label: Number of selections
- widget: select
options: 1,2,3*,4,5,6,7,8,9,10
+ type: select
cols:
label: Number of columns
- widget: select
options: 1,2,3*,4,5,6,7,8,9,10
-
-banner:
- label: Top row banner
- widget: text
- width: 40
- default: See also...
+ type: select
cross_codes:
label: Specific featured products (sku)
- widget: text
+ type: text
width: 40
random:
label: Random order?
- widget: yesno
+ type: yesno
[/comment]
-
<!-- BEGIN COMPONENT [control component cross_horizontal] -->
[if !scratch cross_codes]
[tmp cross_codes][control cross_codes][/tmp]
2.1 +16 -13 interchange/dist/foundation/templates/components/fortune
rev 2.1, prev_rev 2.0
Index: fortune
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/foundation/templates/components/fortune,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- fortune 18 Jul 2001 02:21:34 -0000 2.0
+++ fortune 16 Feb 2002 09:39:09 -0000 2.1
@@ -1,23 +1,26 @@
[comment]
ui_component: fortune
-ui_component_type: vertical
-ui_component_group: info
-ui_component_label: Random saying
+ui_type: component
+ui_name: fortune
+ui_class: vertical
+ui_group: info
+ui_label: Random saying
+ui_source: templates/components/fortune
+
+banner:
+ code: banner
+ default: Just a thought...
+ label: Banner Foo
+ type: text
+ width: 33
short:
- widget: select
- options: Yes, No
default: 1
label: Short only?
-
-banner:
- widget: text_20
- default: Just a thought...
- label: Banner
+ type: yesno
[/comment]
-
-<!-- BEGIN COMPONENT [control component cart_tiny] -->
+<!-- BEGIN COMPONENT [control component fortune] -->
<tr><td align="center">
<table width="95%">
@@ -41,4 +44,4 @@
</table>
</td></tr>
-<!-- END COMPONENT [control component cart_tiny] -->
+<!-- END COMPONENT [control component fortune] -->
2.1 +7 -2 interchange/dist/foundation/templates/components/none
rev 2.1, prev_rev 2.0
Index: none
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/foundation/templates/components/none,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- none 18 Jul 2001 02:21:34 -0000 2.0
+++ none 16 Feb 2002 09:39:09 -0000 2.1
@@ -1,5 +1,10 @@
[comment]
ui_component: none
-ui_component_type: ALL
-ui_component_label: No component
+ui_type: component
+ui_name: none
+ui_class: ALL
+ui_label: No component
+ui_source: templates/components/none
+
+
[/comment]
2.4 +11 -9 interchange/dist/foundation/templates/components/promo
rev 2.4, prev_rev 2.3
Index: promo
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/foundation/templates/components/promo,v
retrieving revision 2.3
retrieving revision 2.4
diff -u -r2.3 -r2.4
--- promo 13 Oct 2001 23:27:49 -0000 2.3
+++ promo 16 Feb 2002 09:39:09 -0000 2.4
@@ -1,32 +1,34 @@
[comment]
ui_component: promo
-ui_component_type: content, vertical
-ui_component_group: promotion
-ui_component_label: Promotion
+ui_type: component
+ui_name: promo
+ui_class: content, vertical
+ui_group: promotion
+ui_label: Promotion
+ui_source: templates/components/promo
promo_type:
label: Promotion type
options: specials=Specials, new=New items
- widget: select
+ type: select
matches:
label: Number to show
- widget: select
options: 1,2,3*,4,5,6,7,8,9,10
+ type: select
cols:
label: Columns
options: 1,2,3*,4
- widget: select
+ type: select
banner:
- label: Banner for top box
default: Specials
- widget: text
+ label: Banner for top box
+ type: text
width: 40
[/comment]
-
<!-- BEGIN COMPONENT [control component promo] -->
<table width="95%" align=center>
2.1 +13 -12 interchange/dist/foundation/templates/components/random
rev 2.1, prev_rev 2.0
Index: random
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/foundation/templates/components/random,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- random 18 Jul 2001 02:21:34 -0000 2.0
+++ random 16 Feb 2002 09:39:09 -0000 2.1
@@ -1,39 +1,40 @@
[comment]
ui_component: random
-ui_component_type: content, vertical
-ui_component_group: promotion
-ui_component_label: Random items
+ui_type: component
+ui_name: random
+ui_class: content, vertical
+ui_group: promotion
+ui_label: Random items
+ui_source: templates/components/random
matches:
label: Number to show
- widget: select
options: 1,2*,3,4,5,6,7,8,9,10
+ type: select
pool:
+ help: Controls now many items will be returned and randomized, always from the beginning of the database/text file
label: Number to select from
- widget: select
options: 100,1000*,10000
- help: Controls now many items will be returned and randomized, \
-always from the beginning of the database/text file
+ type: select
table_width:
+ filter: nullselect
label: Table width
options: 150,300,450
- widget: combo
- filter: nullselect
+ type: combo
cols:
label: Columns
options: 1*,2,3,4
- widget: select
+ type: select
banner:
label: Banner for top box
- widget: text
+ type: text
width: 40
[/comment]
-
<!-- BEGIN COMPONENT [control component random] -->
<br>
2.1 +7 -4 interchange/dist/foundation/templates/components/saved_carts_list_small
rev 2.1, prev_rev 2.0
Index: saved_carts_list_small
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/foundation/templates/components/saved_carts_list_small,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- saved_carts_list_small 18 Jul 2001 02:21:34 -0000 2.0
+++ saved_carts_list_small 16 Feb 2002 09:39:09 -0000 2.1
@@ -1,11 +1,14 @@
[comment]
ui_component: saved_carts_list_small
-ui_component_type: vertical
-ui_component_group: info
-ui_component_label: Small saved cart list for left/right display
+ui_type: component
+ui_name: saved_carts_list_small
+ui_class: vertical
+ui_group: info
+ui_label: Small saved cart list for left/right display
+ui_source: templates/components/saved_carts_list_small
-[/comment]
+[/comment]
<!-- BEGIN COMPONENT [control component saved_carts_list_small] -->
[tmp myimagedir][image dir_only=1 ui=1][/tmp]
2.2 +15 -10 interchange/dist/foundation/templates/components/search_box_small
rev 2.2, prev_rev 2.1
Index: search_box_small
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/foundation/templates/components/search_box_small,v
retrieving revision 2.1
retrieving revision 2.2
diff -u -r2.1 -r2.2
--- search_box_small 28 Dec 2001 17:15:13 -0000 2.1
+++ search_box_small 16 Feb 2002 09:39:09 -0000 2.2
@@ -1,17 +1,18 @@
-<!-- BEGIN COMPONENT [control component search_box_small] -->
[comment]
ui_component: search_box_small
-ui_component_type: vertical
-ui_component_group: search
-ui_component_label: Small search box
+ui_type: component
+ui_name: search_box_small
+ui_class: vertical
+ui_group: search
+ui_label: Small search box
+ui_source: templates/components/search_box_small
matches:
- widget: select
- options: 1,2,3,5,10*,20,25,50,100
help: Matches to return to page
+ options: 1,2,3,5,10*,20,25,50,100
+ type: select
[/comment]
-
<tr><td align="center">
<table>
<tr>
@@ -22,16 +23,20 @@
<table border="0" width="95%">
<tr>
<td align="left">
+ <INPUT TYPE=hidden NAME=mv_coordinate VALUE=1>
<INPUT TYPE=hidden NAME=mv_searchtype VALUE=db>
<INPUT TYPE=hidden NAME=mv_matchlimit VALUE=[control matches 10]>
<INPUT TYPE=hidden NAME=mv_sort_field VALUE=category>
<INPUT TYPE=hidden NAME=mv_search_field VALUE="*">
- <INPUT TYPE=hidden NAME=mv_substring_match VALUE=1>
- <INPUT TYPE=text NAME=mv_searchspec SIZE=10 MAXLENGTH=30>
+ <input type=hidden name=mv_substring_match value=1>
+ <INPUT TYPE=hidden NAME=mv_column_op VALUE=ne>
+ <INPUT TYPE=hidden NAME=mv_column_op VALUE=rm>
+ <INPUT TYPE=hidden NAME=mv_searchspec VALUE=1>
+ <INPUT MAXLENGTH=30 NAME=mv_searchspec type=text size=8>
</td>
<td align="right" valign="middle" width="45">
<input type="image" alt="Search Go" width="45" border="0" src="__THEME_IMG_DIR__go.gif">
- <a href="[area advancedsearch]"><font size="-2" class="categorybar">Advanced</a>
+ <a href="[area advancedsearch]"><font size=-2 class="categorybar">Advanced</a>
</td>
</tr>
</table>
2.2 +16 -10 interchange/dist/foundation/templates/components/search_box_small_top
rev 2.2, prev_rev 2.1
Index: search_box_small_top
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/foundation/templates/components/search_box_small_top,v
retrieving revision 2.1
retrieving revision 2.2
diff -u -r2.1 -r2.2
--- search_box_small_top 28 Dec 2001 17:15:13 -0000 2.1
+++ search_box_small_top 16 Feb 2002 09:39:09 -0000 2.2
@@ -1,17 +1,19 @@
-<!-- BEGIN COMPONENT [control component search_box_small_top] -->
[comment]
ui_component: search_box_small_top
-ui_component_type: horizontal
-ui_component_group: search
-ui_component_label: Small search box (for top area)
+ui_type: component
+ui_name: search_box_small_top
+ui_class: horizontal
+ui_group: search
+ui_label: Small search box (for top area)
+ui_source: templates/components/search_box_small_top
matches:
- widget: select
- options: 1,2,3,5,10*,20,25,50,100
help: Matches to return to page
+ options: 1,2,3,5,10*,20,25,50,100
+ type: select
[/comment]
-
+<!-- BEGIN COMPONENT [control component search_box_small] -->
<tr><td align="center">
<table>
<tr>
@@ -22,16 +24,20 @@
<table border="0" width="95%">
<tr>
<td align="left">
+ <INPUT TYPE=hidden NAME=mv_coordinate VALUE=1>
<INPUT TYPE=hidden NAME=mv_searchtype VALUE=db>
<INPUT TYPE=hidden NAME=mv_matchlimit VALUE=[control matches 10]>
<INPUT TYPE=hidden NAME=mv_sort_field VALUE=category>
<INPUT TYPE=hidden NAME=mv_search_field VALUE="*">
- <INPUT TYPE=hidden NAME=mv_substring_match VALUE=1>
- <INPUT TYPE=text NAME=mv_searchspec SIZE=10 MAXLENGTH=30>
+ <input type=hidden name=mv_substring_match value=1>
+ <INPUT TYPE=hidden NAME=mv_column_op VALUE=ne>
+ <INPUT TYPE=hidden NAME=mv_column_op VALUE=rm>
+ <INPUT TYPE=hidden NAME=mv_searchspec VALUE=1>
+ <INPUT MAXLENGTH=30 NAME=mv_searchspec type=text size=8>
</td>
<td align="right" valign="middle" width="45">
<input type="image" alt="Search Go" width="45" border="0" src="__THEME_IMG_DIR__go.gif">
- <a href="[area advancedsearch]"><font size="-2" class="menubar">Advanced</a>
+ <a href="[area advancedsearch]"><font size=-2 class="menubar">Advanced</a>
</td>
</tr>
</table>
2.1 +15 -13 interchange/dist/foundation/templates/components/upsell
rev 2.1, prev_rev 2.0
Index: upsell
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/foundation/templates/components/upsell,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- upsell 18 Jul 2001 02:21:34 -0000 2.0
+++ upsell 16 Feb 2002 09:39:09 -0000 2.1
@@ -1,31 +1,33 @@
[comment]
ui_component: upsell
-ui_component_type: content, vertical
-ui_component_group: promotions
-ui_component_label: Upsell
-ui_component_help: depends on setting upsell codes in cart or flypage
+ui_type: component
+ui_name: upsell
+ui_class: content, vertical
+ui_group: promotions
+ui_help: depends on setting upsell codes in cart or flypage
+ui_label: Upsell
+ui_source: templates/components/upsell
+
+banner:
+ label: Top row banner
+ type: text
+ width: 40
size:
label: Number of selections
- widget: select
options: 1,2*,3,4,5,6,7,8,9,10
+ type: select
cols:
label: Number of selections
- widget: select
options: 1,2*,3,4,5,6,7,8,9,10
-
-banner:
- label: Top row banner
- widget: text
- width: 40
+ type: select
random:
label: Random order?
- widget: yesno
+ type: yesno
[/comment]
-
<!-- BEGIN COMPONENT [control component upsell] -->
[if scratch upsell]
2.4 +4 -4 interchange/dist/lib/UI/icmenu.txt
rev 2.4, prev_rev 2.3
Index: icmenu.txt
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/lib/UI/icmenu.txt,v
retrieving revision 2.3
retrieving revision 2.4
diff -u -r2.3 -r2.4
--- icmenu.txt 4 Feb 2002 07:44:49 -0000 2.3
+++ icmenu.txt 16 Feb 2002 09:39:10 -0000 2.4
@@ -2,7 +2,7 @@
0001 Top 01 Orders order admin/order Orders View and manage incoming orders, archive and access past orders B2.gif B2_b.gif B2_b.gif icon_orders.gif
0002 Top 02 Customers userdb admin/customer Customers View and manage customer information and order history B3.gif B3_b.gif B3_b.gif icon_people.gif
0003 Top 03 Items item admin/item Items Add and edit items displayed for sale on the site B4.gif B4_b.gif B4_b.gif icon_item.gif
-0004 Top 04 Content page admin/page Content Create, edit, upload and download pages B5.gif B5_b.gif B5_b.gif icon_pages.gif
+0004 Top 04 Content content admin/content Content Create, edit, upload and download pages B5.gif B5_b.gif B5_b.gif icon_pages.gif
0005 Top 05 Design layout admin/layout Design Organize site navigation, manage site layout B6.gif B6_b.gif B6_b.gif icon_design.gif
0006 Top 06 Merchandising item admin/merchandising Merchandising Set up quantity pricing, up-sell, promotions, and affiliates B7.gif B7_b.gif B7_b.gif icon_merch.gif
0007 Top 07 Reports stats admin/orderstats Reports View statistics on orders and site traffic, create custom reports B8.gif B8_b.gif B8_b.gif icon_stats.gif
@@ -15,7 +15,8 @@
0015 Admin 06 admin/preferences Preferences
0016 Admin 07 admin/flex_select mv_data_table=variable&page_title=Knar editor&ui_meta_specific=1&help_name=knar.main&ui_description_fields=code&ui_return_to=admin/flex_select&ui_return_to=mv_data_table=variable&ui_return_to=page_title=Knar Editor Knar 1
0017 Admin 08 admin/gentable Tables
-0017b Admin 08b admin/wizard/index Wizard
+0017b Admin 08b admin/auto_wizard Wizard
+0017c Admin 08c admin/test_code Test code
0018 Admin 09 admin/reconfig ui_changes_made Apply Changes
0019 Admin 10 1 no_dbmenu mv_data_table admin/flex_select mv_data_table=[cgi mv_data_table] Edit
0020 Admin 11 no_dbmenu mv_data_table admin/import_table mv_data_table=[cgi mv_data_table] Import Data
@@ -27,8 +28,7 @@
0024 Admin 15 no_dbmenu mv_data_table admin/gentable Re-select Table
0025 Admin 16 1 access_menu admin/access Users
0026 Admin 17 access_menu admin/group Groups
-0027 Content 01 admin/page Page Edit
-0028 Content 02 admin/template Template Edit
+0027 Content 01 admin/content Content Edit
0029 Content 03 admin/file_transfer File Transfer
0030 Customers 01 showactive admin/customer showactive=1 Active Customers
0031 Customers 02 showinactive admin/customer showinactive=1 Inactive Customers
2.1 interchange/dist/lib/UI/ContentEditor.pm
rev 2.1, prev_rev 2.0
1.2 +6 -1 interchange/dist/lib/UI/pages/admin/test_code.html
rev 1.2, prev_rev 1.1
Index: test_code.html
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/lib/UI/pages/admin/test_code.html,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- test_code.html 8 Feb 2002 23:08:21 -0000 1.1
+++ test_code.html 16 Feb 2002 09:39:10 -0000 1.2
@@ -23,7 +23,12 @@
[/if]
<tr>
<td>
- <textarea name=itl_code rows=20 cols=80>[filter op=entities][scratchd itl_code][/filter]</textarea>
+ [display
+ type=textarea
+ name=itl_code
+ rows=20 cols=80
+ value="[scratchd itl_code]"
+ enable-itl=1]
<br>
<input type=submit value="[L]Run[/L]"> <input type=button value="[L]Clear[/L]" onClick="this.form.itl_code.value=''"> [display type=select name=xmp cgi-default=1 options="1=Source, 0=HTML"]
</td>
1.1 interchange/dist/lib/UI/pages/admin/auto_wizard.html
rev 1.1, prev_rev 1.0
Index: auto_wizard.html
===================================================================
[set page_title]Auto-wizard[/set]
[set ui_class]Admin[/set]
[set help_name]autowizard[/set]
[set icon_name]icon_pages.gif[/set]
[set ui_body_extra][/set]
[if cgi script]
[auto-wizard compile=1 interpolate=1]
[calc reparse=0] return $CGI->{script} [/calc]
[/auto-wizard]
[elsif cgi wizard_name]
[auto-wizard name="[cgi wizard_name]"][/auto-wizard]
[/elsif]
[/if]
@_UI_STD_HEAD_@
<!-- BEGIN CONTENT -->
[if cgi wizard_name]
[auto-wizard show=1][/auto-wizard]
[else]
<FORM ACTION="[area @@MV_PAGE@@]" METHOD=POST>
<textarea cols=80 rows=20 name=script></textarea><BR>
Wizard Name: <input type=text name=wizard_name value="default">
<input type=submit value="Save wizard">
<input type=checkbox name=do_now value=1 CHECKED> Do now
</form>
<br>
<FORM ACTION="[area @@MV_PAGE@@]" METHOD=POST>
You can create a wizard with a text file like the below, which will create
one named <b><i>begin</i></b>:<BR>
<textarea name=script cols=80 rows=44>
[filter entities]
begin: test_wizard
1: What is your name and address?
fname: First name
type: text
check: required
help: <<EOF
Some help is needed on this one.
<br>
And it has more than one line.
EOF
width: 20
lname: Last name
check: required
type: text
width: 20
country: Country
type: select
lookup_query: select code,name from country order by name
database: country
default: US
2: What is your city and state?
perl: <<EOR
if( $Values->{country} eq 'CA' ) {
$Tag->error( { name => 'country', set => 'Not those hosers! 8-)' });
return -1;
}
else {
return 0;
}
EOR
address: Address
type: textarea
height: 4
width: 50
city: City
state: State
type: select
lookup_query=i: select state,name from state where country = '[value country]'
database: state
3: What is fast contact info?
phone_day: Daytime phone
widget: text
width: 15
email: Email Address
check: email
final: Finished collection...
page: account
mv_action: return
remap: address=address1
auto: 1
template: <<EOF
<A HREF="{URL}"> This is a fed-in template, use this link</A>
EOF
[/filter]
</textarea><BR>
Wizard Name: <input type=text name=wizard_name value="default">
<input type=submit value="Save wizard">
<input type=checkbox name=do_now value=1 CHECKED> Do now
</form>
Clip and past it in to give it a try.
[/else]
[/if]
<!-- END CONTENT -->
@_UI_STD_FOOTER_@
<!-- page: @@MV_PAGE@@ -->
1.1 interchange/dist/lib/UI/pages/admin/content.html
rev 1.1, prev_rev 1.0
Index: content.html
===================================================================
[set page_perm]page[/set]
[set page_title][L]Content editor[/L][/set]
[set ui_class]Content[/set]
[set help_name]page.editor[/set]
[set icon_name]icon_pages.gif[/set]
@_UI_STD_HEAD_@
<!-- ----- BEGIN REAL STUFF ----- -->
<form action="[area @@MV_PAGE@@]" method=POST>
<input type=hidden name=mv_session_id value="[data session id]">
<input type=hidden name=mv_action value=back>
[if scratch ui_error]
<BLOCKQUOTE>
<FONT COLOR="__CONTRAST__" SIZE=+1>
[scratchd ui_error]
</FONT>
</BLOCKQUOTE>
[/if]
[calc]
sub tmp_display_in_progress {
my ($type) = shift;
my $store;
return unless exists $Session->{content_edit} and $Session->{content_edit};
return unless $store = $Session->{content_edit}{$type};
my $out = '';
for (sort keys %$store) {
defined $store->{$_}
or delete $store->{$_}, next;
$store->{$_}{ui_name}
or delete $store->{$_}, next;
$out .= $Tag->page( {
href => '__UI_BASE__/content_editor',
form => 'auto',
ui_name => $_,
ui_type => $type,
});
$out .= "$_</a> (";
$out .= $Tag->page( {
href => '@@MV_PAGE@@',
form => 'auto',
ui_name => $_,
ui_type => $type,
ui_content_op => 'cancel',
});
$out .= "cancel</a>)<br>";
}
return unless $out;
$out = '<b>In process</b><br>' . $out . '<br>';
return $out;
}
return;
[/calc]
[if cgi ui_content_op]
<!-- [content-modify] -->
[/if]
[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]"]
<B>There were errors:<br>
<blockquote>
<FONT color="__CONTRAST__">
[error all=1 keep=1 show_error=1 show_label=1 joiner="<br>"]
</font>
</blockquote>
[/if]
<table border=0 __UI_T_PROPERTIES__>
<tr>
<td colspan=3 bgcolor=__UI_C_TOPBLOCKBAR__><img src="bg.gif" width="100%" height=1></td>
</tr>
<tr>
<td bgcolor="__UI_C_INTBLOCK__" 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>
[file-navigator
initial_dir="__UI_PAGE_DIR__"
start_open="__UI_PAGE_DIR__"
edit_only=1
edit_all=1
edit_page=content_editor
edit_form="ui_name=~RN~&ui_type=page"
]
</td>
<td bgcolor="__UI_C_INTBLOCK__" 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>
[file-navigator
initial_dir="__UI_TEMPLATE_DIR__"
start_open="__UI_TEMPLATE_DIR__"
edit_only=1
edit_all=1
edit_page=content_editor
edit_form="ui_name=~RN~&ui_type=template"
]
</td>
<td bgcolor="__UI_C_INTBLOCK__" 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>
[file-navigator
initial_dir="__UI_COMPONENT_DIR__"
start_open="__UI_COMPONENT_DIR__"
edit_only=1
edit_all=1
edit_page=content_editor
edit_form="ui_name=~RN~&ui_type=component"
]
</td>
</tr>
<tr>
<td colspan=3 bgcolor=__UI_C_TOPBLOCKBAR__><img src="bg.gif" width=__UI_MAIN_WIDTH__ height=1></td>
</tr>
</table>
</form>
<!-- ----- END REAL STUFF ----- -->
@_UI_STD_FOOTER_@
<!-- page: @@MV_PAGE@@ -->
1.1 interchange/dist/lib/UI/pages/admin/content_editor.html
rev 1.1, prev_rev 1.0
Index: content_editor.html
===================================================================
[set page_perm]page[/set]
[set ui_class]Content[/set]
[set help_name]page.editor[/set]
[set icon_name]icon_pages.gif[/set]
[seti page_title]Edit [cgi ui_type] [cgi ui_name][/seti]
[seti page_banner]Edit [cgi ui_type] <i>[cgi ui_name]<i>[/seti]
[comment]This modifies content when regular CGI submit is used[/comment]
[if cgi ui_content_op]
[tmp ce_status][content-modify][/tmp]
[/if]
[comment]
This modifies content when silent process is used, set also in
ContentEditor.pm
[/comment]
[set ce_modify][content-modify][/set]
@_UI_STD_HEAD_@
<!-- [pragma safe_data] -->
[comment]
These files are kept in lib/UI/pages/include so that
there will be little chance of a parsing error.
Include files: lib/UI/pages/include/*_editor
They can be relocated to a catalog-specific place
by copying to CATROOT/include.
[/comment]
[if cgi ui_type eq component]
[include include/component_editor]
[elsif cgi ui_type eq template]
[include include/template_editor]
[/elsif]
[else]
[include include/page_editor]
[/else]
[/if]
@_UI_STD_FOOTER_@
1.1 interchange/dist/lib/UI/pages/admin/content_preview.html
rev 1.1, prev_rev 1.0
Index: content_preview.html
===================================================================
[tmp tmp_junk][content-modify][/tmp][include file="[scratchd tmp_tmpfile]"]
1.1 interchange/dist/lib/UI/pages/admin/content_publish.html
rev 1.1, prev_rev 1.0
Index: content_publish.html
===================================================================
[set page_perm]page[/set]
[set page_title][L]Content publisher[/L][/set]
[set ui_class]Content[/set]
[set help_name]content.editor[/set]
[set icon_name]icon_pages.gif[/set]
@_UI_STD_HEAD_@
<!-- ----- BEGIN REAL STUFF ----- -->
[perl tables="__UI_COMPONENT_TABLE__ __UI_TEMPLATE_TABLE__ __UI_PAGE_TABLE__ __UI_META_TABLE__"]
my $tab;
my $dir;
my $op = delete $CGI->{ui_content_op};
if($CGI->{ui_type} eq 'component') {
$tab = q{__UI_COMPONENT_TABLE__};
$dir = q{__UI_COMPONENT_DIR__};
}
elsif($CGI->{ui_type} eq 'component') {
$tab = q{__UI_TEMPLATE_TABLE__};
$dir = q{__UI_TEMPLATE_DIR__};
}
elsif($CGI->{ui_type} eq 'component') {
$tab = q{__UI_PAGE_TABLE__};
$dir = q{__UI_PAGE_DIR__};
}
my $db = $Db{$tab};
my @existing;
my $dest = $CGI->{ui_destination};
$dest =~ s/^\s+//;
$dest =~ s/\s+$//;
if(! $dest) {
## Publishing to same place, do nothing
}
elsif($dest =~ /::/ and $db) {
my $sqdest = $Tag->filter('sql', $dest);
my $q = "select * from $tab where base_code = '$sqdest'";
@existing = $db->query( { hashref => 1, sql => $q });
}
else {
@existing = glob("$dir/$dest*");
}
if(! $db and ! @existing) {
$CGI->{ui_content_op} = $op;
return;
}
[/perl]
[if cgi ui_content_op]
[if type=explicit compare="[content-modify]"]
[warnings message="Published [cgi ui_type] [cgi ui_name]."]
[/if]
[bounce page=__UI_BASE__/content]
[/if]
<!-- ----- END REAL STUFF ----- -->
@_UI_STD_FOOTER_@
<!-- page: @@MV_PAGE@@ -->
1.1 interchange/dist/lib/UI/pages/include/component_editor
rev 1.1, prev_rev 1.0
Index: component_editor
===================================================================
[content-editor name="[cgi ui_name]" type="[cgi ui_type]"]
[components]
<script language=JavaScript>
function changed (code, field) {
var name = "changed_" + code;
cbox = document.getElementById(name);
cbox.checked = true;
}
function submitted (code) {
var name = "changed_" + code;
cbox = document.getElementById(name);
cbox.checked = false;
return true;
}
function change_alert (code) {
if(code.length == 0) {
code = 'a new component';
}
var status;
status = confirm('You have changed ' + code + ". Choosing OK will lose these changes. Are you sure?");
return status;
}
function check_change () {
var el;
el = document.getElementById('changed_ui_body');
if(el != undefined && el.checked == true) {
return change_alert('the component body');
}
[comp-list]
el = document.getElementById('changed_[comp-code]');
if(el != undefined && el.checked == true) {
return change_alert('[comp-code]');
}
[/comp-list]
return true;
}
var visdone = new Array;
function visible (index, base) {
var ai;
var xi;
var dosel;
var selstd = 'dynform';
var clickstd = 'clicker';
if(base == undefined || base.length == 0) {
selbase = selstd;
clickbase = clickstd;
}
else {
selbase = base + '_' + selstd;
clickbase = base + '_' + clickstd;
var found = 0;
for(ai = 0; ai < visdone.length; ai++) {
if (visdone[ai].value == base) {
found = 1;
break;
}
}
if(found != 1)
visdone[ai] = base;
}
selnam = selbase + index;
clicknam = clickbase + index;
for(ai = 0; ai < visdone.length; ai++) {
sb = visdone[ai] + '_' + selstd;
cb = visdone[ai] + '_' + clickstd;
for( xi = 0; ; xi++) {
nam = sb + xi;
cnam = cb + xi;
var el = document.getElementById(nam);
if(el == undefined) {
break;
}
el.style.zIndex = 0;
el.style.visibility = 'Hidden';
var cel = document.getElementById(cnam);
if(cel != undefined) {
cel.style.background = '#FFFFFF';
}
}
}
for( xi = 0; ; xi++) {
nam = selstd + xi;
cnam = clickstd + xi;
var el = document.getElementById(nam);
if(el == undefined) {
break;
}
el.style.zIndex = 0;
el.style.visibility = 'Hidden';
var cel = document.getElementById(cnam);
if(cel != undefined) {
cel.style.background = '#FFFFFF';
}
}
if (index < 0) return;
var element = document.getElementById(selnam);
var celement = document.getElementById(clicknam);
element.style.visibility = 'Visible';
element.style.zIndex = 2;
if(celement != undefined) {
celement.style.background = '#EEEEEE';
}
return;
}
</script>
[if type=explicit compare="[error all=1 show_var=1 keep=1]"]
<B>There were errors:<br>
<blockquote>
<FONT color="__CONTRAST__">
[error all=1 keep=1 show_error=1 show_label=1 joiner="<br>"]
</font>
</blockquote>
[/if]
<form name=overall action="[area @@MV_PAGE@@]" method=POST>
<input type=hidden name="mv_content_op" value="modify_param">
<table>
<tr>
<td valign=top>
[on-match]
<h3>Component Attributes</h3>
<div align=right>
Description: <input type=text size=30 value="[comp-param ui_label]"><BR>
Classes: <input type=text size=30 value="[comp-param ui_class]"><BR>
Groups: <input type=text size=30 value="[comp-param ui_group]"><br>
<input type=submit value="Save" onClick="return check_change()">
</div>
<hr>
[/on-match]
<div id=clicker0 style="border: 1; border-style: thin">
<h3>Component HTML</h3>
Action:
<A NAME=clicker0
HREF="javascript:void(0)"
onClick="visible(0)"
>edit body</A>
<br>
<INPUT TYPE=checkbox VALUE=1 NAME=changed_ui_body id=changed_ui_body> changed
</div>
<hr>
<h3>Component Controls</h3>
[comp-list]
<div id=clicker[comp-increment] style="border: 1; border-style: thin">
[if-comp-param code]
Name: <A HREF="javascript:void(0)" NAME=clicker[comp-increment] onClick="visible([comp-increment])">[comp-param code]</A><BR>
Label: [comp-param label]<br>
Widget: [comp-param type]<br>
Action:
<A HREF="[area
href="@@MV_PAGE@@"
form=auto
code="[comp-param code]"
ui_content_op=delete
ui_name="[comp-parent name]"
ui_type=component
]" onClick="return check_change()">delete</A>
<A HREF="[area
href="@@MV_PAGE@@"
form=auto
ce_motion=up
code="[comp-param code]"
ui_content_op=motion
ui_name="[comp-parent name]"
ui_type=component
]" onClick="return check_change()">up</A>
<A HREF="[area
href="@@MV_PAGE@@"
form=auto
ce_motion=down
code="[comp-param code]"
ui_content_op=motion
ui_name="[comp-parent name]"
ui_type=component
]" onClick="return check_change()">down</A><BR>
<INPUT TYPE=checkbox VALUE=1 NAME="changed_[comp-param code]" id="changed_[comp-param code]"> changed
[else]
<A HREF="javascript:void(0)" NAME=clicker[comp-increment] onClick="visible([comp-increment])">Add a new control</A><BR>
[/else]
[/if-comp-param]
</div>
<p>
[/comp-list]
[on-match]
[set Publish]
ui_content_op=publish
mv_nextpage=__UI_BASE__/content_publish
[/set]
[set Cancel]
ui_content_op=cancel
mv_nextpage=__UI_BASE__/content
[/set]
<input type=hidden name=ui_name value="[comp-param ui_name]">
<input type=hidden name=ui_type value="[comp-param ui_type]">
<input type=hidden name=ui_source value="[comp-param ui_source]">
<input type=hidden name=mv_action value="return">
<input style="font-weight: bold" type=submit onClick="return check_change()" name=mv_click value="[L]Publish[/L]">
<input type=submit onClick="return check_change()" name=mv_click value="[L]Cancel[/L]"><br>
New name: <input type=text name=ui_destination size=22 value="">
</form>
</td>
<td>
<div
style="
Position:Relative;
Left:0; Top:0; Height:100%; Width:100%;
Visibility:Visible;
z-index:1;
">
<div
id=dynform0
style="
Position:Absolute;
Left:2; Top:2; Height:100%; Width:100%;
Visibility:Visible;
z-index:2;
">
[set c_content][comp-param ui_body][/set]
[table-editor
action=return
hidden.ui_content_op=modify_body
hidden.ui_name=[comp-param ui_name]
hidden.ui_type=[comp-param ui_type]
item_id=ui_body
href=silent/ce_modify
show_reset=1
nocancel=1
form-extra=|
onSubmit="submitted('ui_body')"
onReset="submitted('ui_body')"
|
js_changed=changed
override.ui_body_text=`$Scratch->{c_content}`
table=mv_metadata
ui_data_fields="ui_body_text"
ui_display_only="ui_body_text"
ui_hide_key=1
view=ui_component
]
[/on-match]
</div>
[comp-list]
<div
id=dynform[comp-increment]
style="
Position:Absolute;
Left:2; Top:2; Width:98%; Height: 98%;
Visibility: [comp-change 1][condition]1[/condition]Visible[else]Hidden[/else][/comp-change 1]
z-index:0;
">
[comp-param _editor_table]
</div>
[/comp-list]
</div>
<script>
visible(0);
</script>
</td>
</tr>
</table>
[/components]
[/content-editor]
1.1 interchange/dist/lib/UI/pages/include/page_editor
rev 1.1, prev_rev 1.0
Index: page_editor
===================================================================
[content-editor name="[cgi ui_name]" type="[cgi ui_type]"]
[pages]
<script language=JavaScript>
function changed (code, field) {
var name = "changed_" + code;
cbox = document.getElementById(name);
if(cbox != undefined)
cbox.checked = true;
}
function submitted (code) {
var name = "changed_" + code;
cbox = document.getElementById(name);
if(cbox != undefined)
cbox.checked = false;
return true;
}
function change_alert (code) {
if(code.length == 0) {
code = 'a new component';
}
var status;
status = confirm('You have changed ' + code + ". Choosing OK will lose these changes. Are you sure?");
return status;
}
function check_change () {
var el;
el = document.getElementById('changed_[page-param ui_name]');
if(el != undefined && el.checked == true) {
return change_alert('the page controls');
}
[components]
[if-comp-param code]
el = document.getElementById('changed_[comp-param code]');
if(el != undefined && el.checked == true) {
return change_alert('[comp-param code]');
}
[else]
el = document.getElementById('changed_CONTENT');
if(el != undefined && el.checked == true) {
return change_alert('the page content');
}
[/else]
[/if-comp-param]
[/components]
el = document.getElementById('[page-param ui_name]');
if(el != undefined && el.checked == true) {
return change_alert('the page controls');
}
el = document.getElementById('changed_PREAMBLE');
if(el != undefined && el.checked == true) {
return change_alert('the PREAMBLE');
}
el = document.getElementById('changed_POSTAMBLE');
if(el != undefined && el.checked == true) {
return change_alert('the POSTAMBLE');
}
return true;
}
function layback (nam) {
var el = document.getElementById(nam);
if(el != undefined) {
el.style.background = '#CCCCCC';
el.style.borderStyle = 'dotted';
el.style.borderWidth = 'thin';
}
}
function standout (nam) {
var el = document.getElementById(nam);
if(el != undefined) {
el.style.background = '#EEEEEE';
el.style.borderStyle = 'solid';
el.style.borderWidth = 'thin';
}
}
var visdone = new Array;
function visible (index, base) {
var ai;
var xi;
var dosel;
var selstd = 'dynform';
var clickstd = 'clicker';
var picstd = 'picture';
if(base == undefined || base.length == 0) {
selbase = selstd;
clickbase = clickstd;
picbase = picstd;
}
else {
selbase = base + '_' + selstd;
clickbase = base + '_' + clickstd;
picbase = base + '_' + picstd;
var found = 0;
for(ai = 0; ai < visdone.length; ai++) {
if (visdone[ai].value == base) {
found = 1;
break;
}
}
if(found != 1)
visdone[ai] = base;
}
selnam = selbase + index;
clicknam = clickbase + index;
picnam = picbase + index;
for(ai = 0; ai < visdone.length; ai++) {
sb = visdone[ai] + '_' + selstd;
cb = visdone[ai] + '_' + clickstd;
pb = visdone[ai] + '_' + picstd;
for( xi = 0; ; xi++) {
nam = sb + xi;
cnam = cb + xi;
pnam = pb + xi;
var el = document.getElementById(nam);
if(el == undefined) {
break;
}
el.style.zIndex = 0;
el.style.visibility = 'Hidden';
layback(cnam);
layback(pnam);
}
}
for( xi = 0; ; xi++) {
nam = selstd + xi;
cnam = clickstd + xi;
pnam = picstd + xi;
var el = document.getElementById(nam);
if(el == undefined) {
break;
}
el.style.zIndex = 0;
el.style.visibility = 'Hidden';
layback(pnam);
layback(cnam);
}
if (index < 0) return;
var element = document.getElementById(selnam);
element.style.visibility = 'Visible';
element.style.zIndex = 2;
standout(clicknam);
standout(picnam);
return;
}
</script>
<table width="98%" cellspacing=0 cellpadding=0>
<tr>
<td colspan=2>
<form name=overall action="[area @@MV_PAGE@@]" method=POST>
<input type=hidden name=ui_content_op value="modify">
<input type=hidden name=ui_name value="[page-param ui_name]">
<input type=hidden name=ui_type value="[page-param ui_type]">
<input type=hidden name=mv_action value="back">
<table width="100%" cellpadding=0 cellspacing=0 cellmargin=3>
<tr>
<td id=clicker>
<h3>Page Attributes/Controls</h3>
Name: <b>[page-param ui_name]</b><BR>
Source: [page-param ui_source]
[page-sub foo_sub]
shift;
my $item = shift;
## Set up access to the controls
for(keys %$item) {
$control{$_} = $item->{$_};
}
return;
[/page-sub]
[page-exec foo_sub][/page-exec]
</td>
<td align=right>
Template: [display
name=ui_page_template
type=select
default="[page-param ui_page_template]"
passed="[content-info templates=1]"
]<br>
[set Publish]
ui_content_op=publish
mv_nextpage=__UI_BASE__/content
[/set]
[set Cancel]
ui_content_op=cancel
mv_nextpage=__UI_BASE__/content
[/set]
[set Preview]
ui_content_op=preview
mv_nextpage=__UI_BASE__/content_preview
[/set]
<input
style="font-weight: bold"
type=submit onClick="return check_change()"
name=mv_click
value="[L]Publish[/L]"
>
<input
type=submit
onClick="return confirm(
'This will destroy all edits you have made to this page '
+ 'since the last Publish operation.\n Are you sure?'
)"
name=mv_click
value="[L]Cancel[/L]"
>
<input
type=submit
onClick="return check_change()"
name=mv_click
value="[L]Preview[/L]"
>
<input
type=submit
onClick="return confirm(
'This may delete components from your configuration.' +
'Continue?'
)"
value="Change template"
</td>
<td id=clicker1>
Page controls
<input type=checkbox
name="changed_[page-param ui_name]"
id="changed_[page-param ui_name]"
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"
>[loop-code]</A><br>
[/loop]
</td>
</tr>
</table>
</form>
</td>
</tr>
<tr>
<td width="20%" align=right valign=top>
<br>
<div id=clicker0
style="
padding: 1px;
width: 82%;
border-style: solid;
border-width: thin;
">
<A
href="javascript:void(0)"
title="edit page preamble"
onClick="visible(0)"
>PREAMBLE</A> <input
type=checkbox
name=changed_PREAMBLE
id=changed_PREAMBLE
value=1>
</div>
[components]
[comp-sub tmp_slot]
return ++$slot;
[/comp-sub]
<div id="comp_clicker[comp-increment]"
style="
padding: 1px;
width: 90%;
border-style: solid;
border-width: thin;
">
[if-comp-param where]
<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
name=changed_slot[comp-increment]
id=changed_slot[comp-increment]
value=1>
[else]
<A HREF="javascript:void(0)"
style="font-size: larger; font-weight: bolder"
onClick="visible([comp-increment],'comp')"
title="edit page content"
>CONTENT</A> <input
type=checkbox
name=changed_CONTENT
id=changed_CONTENT
value=1>
[/else]
[/if-comp-param]
</div>
[/components]
<div id=clicker2
style="
padding: 1px;
width: 82%;
border-style: solid;
border-width: thin;
">
<A
href="javascript:void(0)"
title="edit page postamble"
onClick="visible(2)"
>POSTAMBLE</A> <input
type=checkbox
name=changed_POSTAMBLE
id=changed_POSTAMBLE
value=1>
</div>
[if-page-param ui_page_image]
<IMG SRC="[page_param ui_page_image]">
[/if-page-param]
[page-param ui_page_picture]
</td>
<td width="80%" align=center valign=center>
<div
style="
Position:Relative;
Left:0; Top:0; Height:100%; Width:100%;
Visibility:Visible;
z-index:1;
">
<div
id=comp_dynform0
style="
border-style: inset;
border-width: thin;
Position:Absolute;
Left:0; Top:0; Height:100%; Width:100%;
Visibility:Visible;
z-index:0;
background: #EEEEEE;
">
<blockquote>
<h2>Edit area</H2>
When you select an element to the left, it will be edited here.
</blockquote>
</div>
[components]
<div
id="comp_dynform[comp-increment]"
style="
border-style: inset;
border-width: thin;
Position:Absolute;
Left:0; Top:0; Height:100%; Width:100%;
Visibility: Hidden;
z-index:0;
background: #EEEEEE;
">
[if-comp-param where]
[comp-param _editor_table]
<p>
<div
align=left
valign=bottom
border=1
style="
border-style: inset;
border-width: thin;
padding: .25in;
text-align: left;
margin: 1in;
font-size: larger;
background: #DDDDDD;
"
>
[if-comp-param component]
<b>Name</b>: <A HREF="[area
href=@@MV_PAGE@@
form=auto
ui_type=component
ui_name=[comp-param component]
]" TARGET="_blank">[comp-param component] - [content-info code="[comp-param component]" label=1]</a><br>
[else]
<B>No component here</B><br>
[/else]
[/if-comp-param]
<b>Class</b>: [comp-param class]<br>
<b>Where</b>: <A HREF="[area
href=@@MV_PAGE@@
form=auto
ui_type=template
ui_name=[page-param ui_page_template]
]" TARGET="_blank">[comp-param where]</A><br>
<b>Slot</b>: [comp-increment]<br>
</div>
[else]
[page-calc]
$page_content = <<'EoPA';
[page-param CONTENT]
EoPA
$page_preamble = <<'EoPB';
[page-param PREAMBLE]
EoPB
$page_postamble = <<'EoPC';
[page-param POSTAMBLE]
EoPC
for(\$page_content, \$page_preamble, \$page_postamble) {
chop $$_;
}
return;
[/page-calc]
[table-editor
action=return
height.ui_body_text="38"
width.ui_body_text="100%"
hidden.ui_content_op=modify_body
hidden.ui_name="[page-param ui_name]"
hidden.ui_type="[page-param ui_type]"
href="silent/ce_modify"
item_id="CONTENT"
js_changed=changed
label.ui_body_text=" Page content"
mv_nextpage=@@MV_PAGE@@
nocancel=1
notable=1
no_meta=1
override.ui_body_text=`$page_content`
show_reset=1
table=junk
table_width="100%"
ui_data_fields="code ui_body_text"
ui_hide_key=1
widget.ui_body_text="textarea"
view=ui_component
form-extra=|
onSubmit="submitted('[comp-param where]'); return check_change()"
onReset="submitted('[comp-param where]')"
|
]
[/else]
[/if-comp-param]
</div>
[/components]
<div
id=dynform0
style="
border-style: inset;
border-width: thin;
Position:Absolute;
Left:0; Top:0; Width:100%; Height: 100%;
Visibility: Hidden;
z-index:0;
background: #EEEEEE;
">
[table-editor
action=return
height.ui_body_text="10"
width.ui_body_text="100%"
hidden.ui_content_op=modify_body
hidden.ui_name="[page-param ui_name]"
hidden.ui_type="[page-param ui_type]"
href="silent/ce_modify"
item_id="PREAMBLE"
js_changed=changed
label.ui_body_text=" Preamble"
mv_nextpage=@@MV_PAGE@@
nocancel=1
notable=1
no_meta=1
override.ui_body_text=`$page_preamble`
show_reset=1
table=junk
table_width="100%"
ui_data_fields="code ui_body_text"
ui_hide_key=1
widget.ui_body_text="textarea"
view=ui_component
form-extra=|
onSubmit="submitted('PREAMBLE'); return check_change()"
onReset="submitted('PREAMBLE')"
|
]
<div
align=left
valign=bottom
border=1
style="
border-style: inset;
border-width: thin;
padding: .25in;
text-align: left;
margin: 1in;
font-size: larger;
background: #DDDDDD;
"
>
<b>Name</b>: Page preamble<br>
<b>Slot</b>: N/A (precedes all slots and control settings)<br>
</div>
</div>
<div
id=dynform1
style="
border-style: inset;
border-width: thin;
Position:Absolute;
Left:0; Top:0; Width:100%; Height: 100%;
Visibility: Hidden;
z-index:0;
background: #EEEEEE;
">
[page-param _editor_table]
<div
align=left
valign=bottom
border=1
style="
border-style: inset;
border-width: thin;
padding: .25in;
text-align: left;
margin: 1in;
font-size: larger;
background: #DDDDDD;
"
>
<b>Name</b>: Page controls<br>
<b>Slot</b>: N/A (precedes all except preamble)<br>
</div>
</div>
<div
id=dynform2
style="
border-style: inset;
border-width: thin;
Position:Absolute;
Left:0; Top:0; Width:100%; Height: 100%;
Visibility: Hidden;
z-index:0;
background: #EEEEEE;
">
[table-editor
action=return
height.ui_body_text="10"
width.ui_body_text="100%"
hidden.ui_content_op=modify_body
hidden.ui_name="[page-param ui_name]"
hidden.ui_type="[page-param ui_type]"
href="silent/ce_modify"
item_id="POSTAMBLE"
js_changed=changed
label.ui_body_text=" Postamble"
mv_nextpage=@@MV_PAGE@@
nocancel=1
notable=1
no_meta=1
override.ui_body_text=`$page_postamble`
show_reset=1
table=junk
table_width="100%"
ui_data_fields="code ui_body_text"
ui_hide_key=1
widget.ui_body_text="textarea"
view=ui_component
form-extra=|
onSubmit="submitted('POSTAMBLE'); return check_change()"
onReset="submitted('POSTAMBLE')"
|
]
<div
align=left
valign=bottom
border=1
style="
border-style: inset;
border-width: thin;
padding: .25in;
text-align: left;
margin: 1in;
font-size: larger;
background: #DDDDDD;
"
>
<b>Name</b>: Page postamble<br>
<b>Slot</b>: N/A (after all slots and control settings)<br>
</div>
</div>
</div>
[components]
[if cgi ui_content_pos]
<script>
visible([calc]
$CGI->{ui_content_pos} + 1
[/calc], 'comp')
</script>
[else]
[if-comp-param !code]
<script>
visible([comp-increment], 'comp');
</script>
[/if-comp-param]
[/else]
[/if]
[/components]
</td>
</tr>
</table>
[/pages]
[/content-editor]
[comment]
<xmp>
[dump content_edit]
</xmp>
[/comment]
1.1 interchange/dist/lib/UI/pages/include/template_editor
rev 1.1, prev_rev 1.0
Index: template_editor
===================================================================
[content-editor name="[cgi ui_name]" type="[cgi ui_type]"]
[templates]
<script language=JavaScript>
function changed (code, field) {
var name = "changed_" + code;
cbox = document.getElementById(name);
cbox.checked = true;
}
function submitted (code) {
var name = "changed_" + code;
cbox = document.getElementById(name);
cbox.checked = false;
return true;
}
function change_alert (code) {
if(code.length == 0) {
code = 'a new component';
}
var status;
status = confirm('You have changed ' + code + ". Choosing OK will lose these changes. Are you sure?");
return status;
}
function check_change () {
var el;
el = document.getElementById('changed_ui_body');
if(el != undefined && el.checked == true) {
return change_alert('the component body');
}
[controls]
el = document.getElementById('changed_[cont-code]');
if(el != undefined && el.checked == true) {
return change_alert('[cont-code]');
}
[/controls]
[components]
[comp-change 1][condition][comp-param where][/condition]
[if-comp-param code]
el = document.getElementById('changed_[comp-param where]');
if(el != undefined && el.checked == true) {
return change_alert('[comp-param where]');
}
[/if-comp-param]
[/comp-change 1]
[/components]
return true;
}
var visdone = new Array;
function visible (index, base) {
var ai;
var xi;
var dosel;
var selstd = 'dynform';
var clickstd = 'clicker';
if(base == undefined || base.length == 0) {
selbase = selstd;
clickbase = clickstd;
}
else {
selbase = base + '_' + selstd;
clickbase = base + '_' + clickstd;
var found = 0;
for(ai = 0; ai < visdone.length; ai++) {
if (visdone[ai].value == base) {
found = 1;
break;
}
}
if(found != 1)
visdone[ai] = base;
}
selnam = selbase + index;
clicknam = clickbase + index;
for(ai = 0; ai < visdone.length; ai++) {
sb = visdone[ai] + '_' + selstd;
cb = visdone[ai] + '_' + clickstd;
for( xi = 0; ; xi++) {
nam = sb + xi;
cnam = cb + xi;
var el = document.getElementById(nam);
if(el == undefined) {
break;
}
el.style.zIndex = 0;
el.style.visibility = 'Hidden';
var cel = document.getElementById(cnam);
if(cel != undefined) {
cel.style.background = '#FFFFFF';
}
}
}
for( xi = 0; ; xi++) {
nam = selstd + xi;
cnam = clickstd + xi;
var el = document.getElementById(nam);
if(el == undefined) {
break;
}
el.style.zIndex = 0;
el.style.visibility = 'Hidden';
var cel = document.getElementById(cnam);
if(cel != undefined) {
cel.style.background = '#FFFFFF';
}
}
if (index < 0) return;
var element = document.getElementById(selnam);
var celement = document.getElementById(clicknam);
element.style.visibility = 'Visible';
element.style.zIndex = 2;
if(celement != undefined) {
celement.style.background = '#EEEEEE';
}
return;
}
</script>
<table>
<tr>
<td valign=top>
<form name=overall action="[area @@MV_PAGE@@]" method=POST>
<h3>Template Attributes</h3>
<div align=right>
Description: <input type=text size=30 value="[tem-param ui_label]"><BR>
</div>
<hr>
<h3>Template Controls</h3>
[controls]
<div id=clicker[cont-increment] style="border: 1; border-style: thin">
[if-cont-param code]
Name: <A
HREF="javascript:void(0)"
NAME=clicker[cont-increment]
onClick="visible([cont-increment])"
title="edit [cont-param code]"
><span
style="font-size: larger; font-weight: bolder"
>[cont-param code]</span></A><BR>
Label: [cont-param label]<br>
Widget: [cont-param type]<br>
Action:
<A HREF="[area
href="@@MV_PAGE@@"
form=auto
code="[cont-param code]"
ui_content_op=delete
ui_name="[cont-parent ui_name]"
ui_type="[cont-parent ui_type]"
]" onClick="return check_change()">delete</A>
<A HREF="[area
href="@@MV_PAGE@@"
form=auto
ce_motion=up
code="[cont-param code]"
ui_content_op=motion
ui_name="[cont-parent ui_name]"
ui_type="[cont-parent ui_type]"
]" onClick="return check_change()">up</A>
<A HREF="[area
href="@@MV_PAGE@@"
form=auto
ce_motion=down
code="[cont-param code]"
ui_content_op=motion
ui_name="[cont-parent ui_name]"
ui_type="[cont-parent ui_type]"
]" onClick="return check_change()">down</A><BR>
[else]
<A HREF="javascript:void(0)"
NAME=clicker[cont-increment]
onClick="visible([cont-increment])">Add a new control</A><BR>
[/else]
[/if-cont-param]
<INPUT TYPE=checkbox VALUE=1 NAME="changed_[cont-param code]" id="changed_[cont-param code]"> changed
</div>
<p>
[/controls]
<table border=1 borderstyle=thin>
<tr>
<td>
<b>Page layout</b>
[components]
[comp-sub tmp_slot]
return ++$slot;
[/comp-sub]
[if-comp-param where]
[comp-change 1][condition][comp-param where][/condition]
</td>
</tr>
<tr>
<td id="comp_clicker[comp-increment]">
Template area
<A HREF="javascript:void(0)"
onClick="visible([comp-increment],'comp')"
title="edit [comp-param where]"
><span
style="font-size: larger; font-weight: bolder"
>[comp-param where]</span></A><br>
<INPUT TYPE=checkbox
VALUE=1
NAME="changed_[comp-param where]"
id="changed_[comp-param where]"
> changed<br>
[/comp-change 1]
[if-comp-param code]
Slot [comp-exec tmp_slot][/comp-exec]:
class=[comp-param class],
default=[content-info label=1 code="[comp-code]"] ([comp-code])<br>
[/if-comp-param]
[else]
</td>
</tr>
<tr>
<td>
Page content<BR>
[/else]
[/if-comp-param]
</div>
[/components]
</td>
</tr>
</table>
[set Publish]
ui_content_op=publish
mv_nextpage=__UI_BASE__/content
[/set]
[set Cancel]
ui_content_op=cancel
mv_nextpage=__UI_BASE__/content
[/set]
<input type=hidden name=ui_name value="[tem-param ui_name]">
<input type=hidden name=ui_type value="[tem-param ui_type]">
<input type=hidden name=mv_action value="return">
<input style="font-weight: bold" type=submit onClick="return check_change()" name=mv_click value="[L]Publish[/L]">
<input type=submit onClick="return check_change()" name=mv_click value="[L]Cancel[/L]"><br>
New name: <input type=text name=ui_destination size=22 value="">
</form>
</td>
<td>
<div
style="
Position:Relative;
Left:0; Top:0; Height:100%; Width:100%;
Visibility:Visible;
z-index:1;
">
<div
id=dynform0
style="
Position:Absolute;
Left:0; Top:0; Height:100%; Width:100%;
Visibility:Visible;
z-index:2;
">
<blockquote>
<h2>Edit area</H2>
When you select an element to the left, it will be edited here.
</blockquote>
</div>
<div
id=comp_dynform0
style="
Position:Absolute;
Left:0; Top:0; Height:100%; Width:100%;
Visibility:Visible;
z-index:0;
">
<blockquote>
<h2>Edit area</H2>
When you select an element to the left, it will be edited here.
</blockquote>
</div>
[components]
<div
id="comp_dynform[comp-increment]"
style="
Position:Absolute;
Left:0; Top:0; Height:100%; Width:100%;
Visibility: Hidden;
z-index:0;
">
[comp-change 1][condition][comp-param where][/condition]
[if-comp-param where]
[set c_content][comp-parent [comp-param where]][/set]
[table-editor
form-extra=|
onSubmit="submitted('[comp-param where]'); return check_change()"
onReset="submitted('[comp-param where]')"
|
action=back
height.ui_body_text="40"
href="[area @@MV_PAGE@@]"
hidden.ui_content_op=modify_body
hidden.ui_name=[comp-parent ui_name]
hidden.ui_type=[comp-parent ui_type]
hidden.visible=[comp-increment]
hidden.visible_mod=comp
item_id="[comp-param where]"
js_changed=changed
label.ui_body_text="[comp-param where] body"
ui_nextpage=@@MV_PAGE@@
nocancel=1
override.ui_body_text=`$Scratch->{c_content}`
show_reset=1
table=mv_metadata
ui_data_fields="code ui_body_text"
ui_display_only="ui_body_text"
ui_hide_key=1
view=ui_component
]
[/if-comp-param]
[/comp-change 1]
</div>
[/components]
[controls]
<div
id=dynform[cont-increment]
style="
Position:Absolute;
Left:0; Top:0; Width:98%; Height: 98%;
Visibility: Hidden;
z-index:0;
">
[cont-param _editor_table]
</div>
[/controls]
</div>
<script>
visible([either][cgi visible][or] 0 [/either],'[cgi visible_mod]');
</script>
</td>
</tr>
</table>
[/templates]
[/content-editor]
2.13 +3 -1 interchange/dist/lib/UI/vars/UI_STD_HEAD
rev 2.13, prev_rev 2.12
Index: UI_STD_HEAD
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/lib/UI/vars/UI_STD_HEAD,v
retrieving revision 2.12
retrieving revision 2.13
diff -u -r2.12 -r2.13
--- UI_STD_HEAD 18 Jan 2002 18:24:31 -0000 2.12
+++ UI_STD_HEAD 16 Feb 2002 09:39:11 -0000 2.13
@@ -339,11 +339,12 @@
<br>
[if scratch icon_name]<img src="[scratch icon_name]" width=16 height=16 border=0 valign=top alt=icon> [/if]
<font size="+1" face="Verdana,arial,helvetica,sans-serif" color="__UI_C_HEADERTXT__">[either][scratch page_banner][or][scratch page_title][/either] </font><p>
+
[if type=explicit compare="[error all=1 show_var=1 keep=1]"]
<P>
<B>Error:</B>
<BLOCKQUOTE class=cerror>
- [error all=1 show_error=1 joiner="<br>"]
+ [error show_var=1 all=1 show_error=1 joiner="<br>"]
</BLOCKQUOTE>
</P>
[/if]
@@ -361,6 +362,7 @@
</BLOCKQUOTE>
</P>
[/if]
+ [warnings auto=1]
[/if]
[comment] Clear these puppies [/comment]
[calc]
2.24 +14 -3 interchange/scripts/interchange.PL
rev 2.24, prev_rev 2.23
Index: interchange.PL
===================================================================
RCS file: /anon_cvs/repository/interchange/scripts/interchange.PL,v
retrieving revision 2.23
retrieving revision 2.24
diff -u -r2.23 -r2.24
--- interchange.PL 7 Feb 2002 02:15:21 -0000 2.23
+++ interchange.PL 16 Feb 2002 09:39:11 -0000 2.24
@@ -50,7 +50,7 @@
#
# Interchange version 4.9.0
#
-# $Id: interchange.PL,v 2.23 2002/02/07 02:15:21 mheins Exp $
+# $Id: interchange.PL,v 2.24 2002/02/16 09:39:11 mheins Exp $
#
# Copyright (C) 1996-2001 Red Hat, Inc. <interchange@redhat.com>
#
@@ -1746,16 +1746,27 @@
ui_wrap => \&UI::Primitive::ui_wrap,
ui=> sub {
&UI::Primitive::ui_acl_global();
- \&do_process(@_);
+ &do_process(@_);
},
minimate=> sub {
&MiniMate::CfgMgr::mm_acl_global;
- \&do_process(@_);
+ &do_process(@_);
},
scan => \&do_scan,
search => \&do_search,
order => \&do_order,
obtain => \&do_order,
+ silent => sub {
+ $Vend::StatusLine = "Status: 204 No content";
+ my $extra_click = $Vend::FinalPath;
+ $extra_click =~ s:/:\0:g;
+ $CGI->{mv_click} = $CGI->{mv_click}
+ ? "$CGI->{mv_click}\0$extra_click"
+ : $extra_click;
+ do_process(@_);
+ ::respond('');
+ return 0;
+ },
);
sub dispatch {