[interchange-cvs] interchange - heins modified 6 files

interchange-core@interchange.redhat.com interchange-core@interchange.redhat.com
Sun Jan 6 14:55:00 2002


User:      heins
Date:      2002-01-06 19:54:45 GMT
Modified:  dist/lib/UI/pages/admin page_edit.html page_save.html
Modified:  dist/lib/UI/pages/include page_edit page_save
Modified:  dist/lib/UI/usertag read_ui_page.tag read_ui_template.tag
Log:
	* Change page edit so that "Save" only saves a session-based
	  current copy of the file, and you must "Publish" to save
	  the actual page.

	* Put JS on component selectors so they automatically come
	  back with the proper widgets.

Revision  Changes    Path
2.1       +2 -2      interchange/dist/lib/UI/pages/admin/page_edit.html


rev 2.1, prev_rev 2.0
Index: page_edit.html
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/lib/UI/pages/admin/page_edit.html,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- page_edit.html	2001/07/18 02:22:00	2.0
+++ page_edit.html	2002/01/06 19:54:45	2.1
@@ -40,9 +40,9 @@
 [/perl]
 
 [if scratch ui_template_version]
-[include include/page_edit]
+[include file=include/page_edit locale=1]
 [else]
-[include include/page_edit_old]
+[include file=include/page_edit_old locale=1]
 [/else]
 [/if]
 



2.1       +9 -1      interchange/dist/lib/UI/pages/admin/page_save.html


rev 2.1, prev_rev 2.0
Index: page_save.html
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/lib/UI/pages/admin/page_save.html,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- page_save.html	2001/07/18 02:22:00	2.0
+++ page_save.html	2002/01/06 19:54:45	2.1
@@ -18,8 +18,16 @@
 			return;
 		[/calc]
 		[include file="[scratch ui_output_page]"]
-	[else]
+	[elsif cgi ui_page_finalize]
 		[bounce page="__UI_BASE__/page"]
+	[/elsif]
+	[else]
+		[tmp junkref][area
+							href=__UI_BASE__/page_edit
+							form=auto
+							ui_page="[cgi ui_page]"
+							][/tmp]
+		[bounce href="[scratch junkref]"]
 	[/else]
 	[/if]
 [else]



2.4       +40 -17    interchange/dist/lib/UI/pages/include/page_edit


rev 2.4, prev_rev 2.3
Index: page_edit
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/lib/UI/pages/include/page_edit,v
retrieving revision 2.3
retrieving revision 2.4
diff -u -r2.3 -r2.4
--- page_edit	2001/09/13 18:23:29	2.3
+++ page_edit	2002/01/06 19:54:45	2.4
@@ -37,7 +37,7 @@
 [/on-match]
 [/loop]
 
-<form action="[area ui]" method=POST ENCTYPE="multipart/form-data">
+<form action="[area __UI_BASE__/page_save]" method=POST ENCTYPE="multipart/form-data">
 <input type=hidden name=mv_session_id value="[data session id]">
 <input type=hidden name=mv_todo value=back>
 <input type=hidden name=ui_template_version value="[version]">
@@ -268,13 +268,13 @@
 		}
 		for($i = 0; $i < $found; $i++) {
 			$template_top .= $Tag->var($el[$i], 2);
-#Log("i=$i, reading top variable $el[$i]");
+#Debug("i=$i, reading top variable $el[$i]");
 		}
 		for($i = $found + 1; $i < @el; $i++) {
 			$template_bot .= $Tag->var($el[$i], 2);
-#Log("i=$i, reading bot variable $el[$i]");
+#Debug("i=$i, reading bot variable $el[$i]");
 		}
-#Log("Template top: $template_top");
+#Debug("Template top: $template_top");
 	}
 
 	$control_display = $tref->{ui_template_edit}
@@ -282,9 +282,10 @@
 
 	my %control_display = map { ($_, 1) } split /[\s\0,]/, $control_display;
 
-#Log("t_name=$t_name");
+#Debug("t_name=$t_name");
 
 	my $page = $CGI->{ui_page};
+#Debug("page_edit ui_page=$page");
 
 	$out .= title_row( errmsg("Page file: %s", $page ) );
 	$hidden{ui_page}			= $page;
@@ -406,19 +407,33 @@
 				 	(.*?)
 					<!--+ \s+ end \s+ component \s+ \1 \s+ --+> 
 				 | 
-				 	\[ include \s+ file \s*=\s*["'][^"]*/
+				 	\[ include \s+ (.*?) file \s*=\s*["'][^"]*/
 						(?:\[control \s+ component \s+ )?
 							(\w+)
 						\]? ['"]
-				 	\s*
-					(?:group=["']?(\w+)['"]?)?
-					.*?
+				 	(.*?)
 					\]  \s*  \[control\]
+				 |
+				 	\[ component \s+  (.*?) comp(?:[-_]name|onent) \s*=\s*["']\s*
+						(?:\[control \s+ component \s+ )?
+							(\w+)
+						\]? \s* ['"]
+					(.*?)
+					\]\s
 				 )
 			}gsix)
 		{
-			my $compname = $1 || $4;
-			my $comptype = $2 || $5;
+			my $compname = $1 || $5 || $8;
+			my $comptype = $2;
+			if(! $comptype) {
+				my @stuff = ($4, $6, $7, $9);
+#Debug("no comptype, stuff is: " . uneval(\@stuff));
+				@stuff = grep $_, @stuff;
+				my $stuff = join "", @stuff;
+				$stuff =~ /\s+group\s*=[\s'"]*(\w+)/i
+					and $comptype = $1;
+#Debug("comptype=$comptype");
+			}
 #Log("Found component $compname, group $comptype");
 			my $current_content = $3 || '';
 			
@@ -552,7 +567,7 @@
 		my %seen;
 		@comps = grep !$seen{$_}++, @comps;
 
-		my $out = qq{<SELECT NAME="$name">};
+		my $out = qq{<SELECT NAME="$name" onChange="this.form.submit()">};
 		for(@comps) {
 			$out .= qq{<OPTION VALUE="$_"};
 			$out .= " SELECTED" if $curr eq $_;
@@ -863,20 +878,28 @@
 
 <tr class=ralt>
 <td colspan=2>
-[set Preview]
+[set [L]Preview[/L]]
 mv_todo=back
 mv_nextpage=__UI_BASE__/page_preview
 [/set]
+
+[set [L]Save[/L]]
+ui_page_finalize=0
+mv_nextpage=__UI_BASE__/page_save
+[/set]
 
-[set Save]
+[set [L]Publish[/L]]
+ui_page_finalize=1
 mv_nextpage=__UI_BASE__/page_save
 [/set]
 
 [scratchd tmp_hidden]
-<INPUT TYPE=submit NAME=mv_click VALUE=Preview onClick="this.form.target='page_preview'; this.form.action='[area __UI_BASE__/page_preview]'">
+<INPUT TYPE=hidden NAME=mv_action VALUE="go">
+<INPUT TYPE=submit NAME=mv_click VALUE="[L]Preview[/L]" onClick="this.form.target='page_preview'; this.form.action='[area __UI_BASE__/page_preview]'">
 <INPUT TYPE=hidden NAME=ui_return_to VALUE="__UI_BASE__/page">
-<INPUT TYPE=submit NAME=mv_click VALUE=Save onClick="this.form.target='_self'; this.form.action='[area __UI_BASE__/page_save]'">
-<INPUT TYPE=submit NAME=mv_click VALUE=Cancel onClick="this.form.target='_self'; this.form.action='[area __UI_BASE__/page]'"><br>
+<INPUT TYPE=submit NAME=mv_click VALUE="[L]Save[/L]" onClick="this.form.target='_self'">
+<INPUT TYPE=submit NAME=mv_click VALUE="[L]Publish[/L]" onClick="this.form.target='_self'">
+<INPUT TYPE=submit NAME=mv_click VALUE="[L]Cancel[/L]" onClick="this.form.target='_self'; this.form.action='[area __UI_BASE__/page]'"><br>
 [comment]
 <!-- may come back someday -->
 <INPUT TYPE=checkbox NAME=ui_save_t_in_page VALUE=1 [cgi save_in_page]> Save template in page



2.1       +13 -3     interchange/dist/lib/UI/pages/include/page_save


rev 2.1, prev_rev 2.0
Index: page_save
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/lib/UI/pages/include/page_save,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- page_save	2001/07/18 02:22:11	2.0
+++ page_save	2002/01/06 19:54:45	2.1
@@ -156,25 +156,35 @@
 	delete $Scratch->{ui_output_page};
 
 	my $page = $Tag->filter('filesafe', $CGI->{ui_page});
+	my $tmpdir = "$Config->{ScratchDir}/pages/$Session->{id}";
+	$tmpdir =~ s:^$Config->{VendRoot}/::;
+
+#Debug("finalize=$CGI->{ui_page_finalize}");
 	if( $CGI->{ui_page_preview} ) {
 		$page = "preview.html" unless $page;
 		$page =~ s:.*/::;
 		$page = "tmp/$Session->{id}.$page";
 	}
+	elsif($CGI->{ui_page_finalize}) {
+		my $unlink = $Tag->unlink_file("$tmpdir/$page");
+#Debug("unlink=$unlink file=$tmpdir/$page");
+	}
 	elsif( ! $page) {
 		$Scratch->{ui_error} = errmsg("No page name given.");
 		$Tag->bounce('__UI_BASE__/error');
 		return;
 	}
+	else {
+		$page = "$tmpdir/$page";
+	}
 	$page .= $Config->{HTMLsuffix}
 		unless $page =~ /$Config->{HTMLsuffix}$/;
-	$page = "pages/$page" if $page !~ m{^pages/|^tmp/};
-#Log("final page=$page");
+#Debug("final page=$page");
 	push @out, '';
 
 	my $out = join "\n", @out;
 	unless ($Tag->write_relative_file($page, $out)) {
-#Log("failed to write page=$page");
+Debug("failed to write page=$page");
 		$Scratch->{ui_error} = errmsg("Couldn't save page %s.", $page);
 	}
 	$Scratch->{ui_output_page} = $page; 



2.1       +27 -5     interchange/dist/lib/UI/usertag/read_ui_page.tag


rev 2.1, prev_rev 2.0
Index: read_ui_page.tag
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/lib/UI/usertag/read_ui_page.tag,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- read_ui_page.tag	2001/07/18 02:22:15	2.0
+++ read_ui_page.tag	2002/01/06 19:54:45	2.1
@@ -65,19 +65,40 @@
 UserTag read-ui-page Routine <<EOR
 sub {
 	my ($pn, $opt) = @_;
-	
+#::logDebug("read_ui_page pn=$pn");
 	my $suffix  = $Vend::Cfg->{HTMLsuffix} || '.html';
+	my $tmpdir  = $Vend::Cfg->{ScratchDir} || 'tmp';
 	my $pagedir = $Vend::Cfg->{PageDir} || 'pages';
+	$tmpdir .= "/pages/$Session->{id}";
+	File::Path::mkpath($tmpdir) unless -d $tmpdir;
 	my $name = $pn;
 	my $data;
+	my $inprocess;
 
+	### We look for a saved but unpublished page in 
+	### the temporary space for the user, and use that if
+	### it is there. Otherwise, we read normally.
 	if($pn) {
-		if(not -f $pn) {
+		FINDPN: {
+			$pn = "$tmpdir/$name";
+			if(-f $pn) {
+				$inprocess = 1;
+				last FINDPN;
+			}
+
+			if ($pn !~ /$suffix$/) {
+				$pn .= $suffix;
+				if(-f $pn) {
+					$inprocess = 1;
+					last FINDPN;
+				}
+			}
+
+			$pn = $name;
+			last FINDPN if -f $pn;
+
 			$pn .= $suffix if $pn !~ /$suffix$/;
 		}
-		if(not -f $pn) {
-			$pn = "$pagedir/$pn";
-		}
 		$data = Vend::Util::readfile($pn, $Global::NoAbsolute, 0);
 	}
 	else {
@@ -93,6 +114,7 @@
 			ui_page_setting	=> {},
 			ui_pre_region	=> [],
 			ui_post_region	=> [],
+			ui_page_inprocess => $inprocess,
 		};
 
 	my $preamble;



2.1       +17 -2     interchange/dist/lib/UI/usertag/read_ui_template.tag


rev 2.1, prev_rev 2.0
Index: read_ui_template.tag
===================================================================
RCS file: /anon_cvs/repository/interchange/dist/lib/UI/usertag/read_ui_template.tag,v
retrieving revision 2.0
retrieving revision 2.1
diff -u -r2.0 -r2.1
--- read_ui_template.tag	2001/07/18 02:22:15	2.0
+++ read_ui_template.tag	2002/01/06 19:54:45	2.1
@@ -48,15 +48,30 @@
 	else {
 		@files = glob($fn);
 	}
+	
+	my $tmpdir = "$Config->{ScratchDir}/pages/$Session->{id}";
+	$tmpdir =~ s:^$Config->{VendRoot}/::;
 
 	my $data;
 	my %out;
 	my @out;
 	foreach my $fn (@files) {
 		my $name = $fn;
-		# force substitution of [L..]-stuff off by defining third param
-		$data = Vend::Util::readfile($fn, $Global::NoAbsolute, 0);
+
+		### We look for a saved but unpublished page in 
+		### the temporary space for the user, and use that if
+		### it is there. Otherwise, we read normally.
+		my $tmp = "$tmpdir/$name";
+		if(-f $tmp) {
+			# force substitution of [L..]-stuff off by defining third param
+			$data = Vend::Util::readfile($tmp, $Global::NoAbsolute, 0);
+		}
+		else {
+			# force substitution of [L..]-stuff off by defining third param
+			$data = Vend::Util::readfile($fn, $Global::NoAbsolute, 0);
+		}
 		next unless length($data);
+
 		$name =~ s:.*/::;
 		my $ref = {};
 		$data =~ m{\[comment\]\s*(ui_.*?)\[/comment\]\s*(.*)}s;