Changeset 66 for trunk/feeds-app-lite
- Timestamp:
- 06/28/06 09:40:35 (4 years ago)
- Location:
- trunk/feeds-app-lite/plugins/feeds-app-lite
- Files:
-
- 2 added
- 1 removed
- 8 modified
-
lib/MT/App/FeedsWidget.pm (modified) (8 diffs)
-
lib/MT/Feeds/Find.pm (modified) (1 diff)
-
lib/MT/Feeds/Lite.pm (modified) (4 diffs)
-
mt-feeds.pl (modified) (6 diffs)
-
tmpl/config.tmpl (modified) (1 diff)
-
tmpl/footer.tmpl (added)
-
tmpl/header.tmpl (added)
-
tmpl/msg.tmpl (modified) (2 diffs)
-
tmpl/select.tmpl (modified) (4 diffs)
-
tmpl/start.tmpl (modified) (1 diff)
-
tmpl/weblog_config.tmpl (deleted)
Legend:
- Unmodified
- Added
- Removed
-
trunk/feeds-app-lite/plugins/feeds-app-lite/lib/MT/App/FeedsWidget.pm
r41 r66 18 18 $app->{requires_login} = 1; 19 19 $app->{user_class} = 'MT::Author'; 20 $app->{help_url} = File::Spec->catdir($app->static_path, 'plugins', 21 'feeds-app-lite', 'docs', 'index.html'); 20 22 $app; 21 23 } … … 28 30 or return $app->error(MT::Blog->errstr); 29 31 my $p = {blog_id => $blog_id, site_url => $blog->site_url}; 32 $p->{need_uri} = $app->param('need_uri'); 33 $p->{help_url} = $app->{help_url}; 34 $app->add_breadcrumb("Main Menu", $app->mt_uri); 35 $app->add_breadcrumb($blog->name, $app->mt_uri(mode => 'menu', args => { blog_id => $blog_id })); 36 $app->add_breadcrumb('Templates', $app->mt_uri(mode => 'list', args => { _type => 'template', blog_id => $blog_id })); 37 $app->add_breadcrumb('Feeds.App Lite', 'index.cgi'); 38 39 $app->{breadcrumbs}[-1]{is_last} = 1; 40 $p->{breadcrumbs} = $app->{breadcrumbs}; 30 41 $app->build_page("start.tmpl", $p); 31 42 } … … 38 49 or return $app->error(MT::Blog->errstr); 39 50 my $uri = $app->param('uri') 40 or return $app->redirect($app->app_uri . "?blog_id=$blog_id ");51 or return $app->redirect($app->app_uri . "?blog_id=$blog_id&need_uri=1"); 41 52 $uri = 'http://' . $uri unless $uri =~ m{^https?://}; 42 53 require MT::Util; … … 47 58 $p->{not_found} = 1; 48 59 $p->{wizard_uri} = $app->uri . '?blog_id=' . $blog_id; 49 $p->{uri} = $uri; 60 $p->{uri} = $uri; 61 if ($app->wm_url) { 62 $p->{wm_url} = $app->wm_url . '?blog_id=' . $blog_id; 63 $p->{wm_is} = 1; 64 } 65 $app->add_breadcrumb("Main Menu", $app->mt_uri); 66 $app->add_breadcrumb($blog->name, $app->mt_uri(mode => 'menu', args => { blog_id => $blog_id })); 67 $app->add_breadcrumb('Templates', $app->mt_uri(mode => 'list', args => { _type => 'template', blog_id => $blog_id })); 68 $app->add_breadcrumb('Feeds.App Lite', 'index.cgi'); 50 69 return $app->build_page("msg.tmpl", $p); 51 70 } elsif (@feeds == 1) { # skip to the next step if only one choice … … 57 76 MT::Util::mark_odd_rows(\@feeds); 58 77 $p->{feeds} = \@feeds; 78 $p->{help_url} = $app->{help_url}; 79 $app->add_breadcrumb("Main Menu", $app->mt_uri); 80 $app->add_breadcrumb($blog->name, $app->mt_uri(mode => 'menu', args => { blog_id => $blog_id })); 81 $app->add_breadcrumb('Templates', $app->mt_uri(mode => 'list', args => { _type => 'template', blog_id => $blog_id })); 82 $app->add_breadcrumb('Feeds.App Lite', 'index.cgi'); 59 83 $app->build_page("select.tmpl", $p); 60 84 } … … 76 100 $p->{wizard_uri} = $app->uri . '?blog_id=' . $blog_id; 77 101 $p->{uri} = $uri; 102 $app->add_breadcrumb("Main Menu", $app->mt_uri); 103 $app->add_breadcrumb($blog->name, $app->mt_uri(mode => 'menu', args => { blog_id => $blog_id })); 104 $app->add_breadcrumb('Templates', $app->mt_uri(mode => 'list', args => { _type => 'template', blog_id => $blog_id })); 105 $app->add_breadcrumb('Feeds.App Lite', 'index.cgi'); 106 if ($app->wm_url) { 107 $p->{wm_url} = $app->wm_url . '?blog_id=' . $blog_id; 108 $p->{wm_is} = 1; 109 } 78 110 return $app->build_page("msg.tmpl", $p); 79 111 } 80 112 $p->{feed_title} = $feed->find_title($feed->feed) || $uri; 81 113 $p->{feed_uri} = $uri; 114 $p->{help_url} = $app->{help_url}; 115 $app->add_breadcrumb("Main Menu", $app->mt_uri); 116 $app->add_breadcrumb($blog->name, $app->mt_uri(mode => 'menu', args => { blog_id => $blog_id })); 117 $app->add_breadcrumb('Templates', $app->mt_uri(mode => 'list', args => { _type => 'template', blog_id => $blog_id })); 118 $app->add_breadcrumb('Feeds.App Lite', 'index.cgi'); 82 119 $app->build_page("config.tmpl", $p); 83 120 } … … 94 131 my $lastn = $app->param('lastn'); 95 132 my $title = $app->param('feed_title'); 133 # XXX Hack-truncate feed widget title to the magic literal of 42 characters. 134 $title = substr $title, 0, 42; 96 135 my $p = {blog_id => $blog_id, site_url => $blog->site_url}; 97 136 my $name = "Widget: $title"; … … 114 153 $title = MT::Util::encode_html($title); 115 154 my $txt = <<TEXT; 116 <MTFeeds uri="$uri"> 117 <h2>$title</h2> 155 <div class="module-feed module"> 156 <div class="module-content"> 157 <MTFeed uri="$uri"> 158 <h2 class="module-header">$title</h2> 118 159 <ul><MTFeedEntries$lastn> 119 160 <li><a href="<MTFeedEntryLink>"><MTFeedEntryTitle encode_html="1"></a></li> 120 161 </MTFeedEntries></ul> 121 </MTFeeds> 162 </MTFeed> 163 </div> 164 </div> 122 165 TEXT 123 166 $tmpl->text($txt); 124 167 $tmpl->save or return $app->error($tmpl->errstr); 125 168 $p->{module} = $name; 169 $p->{module_id} = $tmpl->id; 126 170 $p->{saved} = 1; 127 171 $p->{wizard_uri} = $app->uri . '?blog_id=' . $blog_id; 128 172 $p->{uri} = $uri; 173 $app->add_breadcrumb("Main Menu", $app->mt_uri); 174 $app->add_breadcrumb($blog->name, $app->mt_uri(mode => 'menu', args => { blog_id => $blog_id })); 175 $app->add_breadcrumb('Templates', $app->mt_uri(mode => 'list', args => { _type => 'template', blog_id => $blog_id })); 176 $app->add_breadcrumb('Feeds.App Lite', 'index.cgi'); 177 if ($app->wm_url) { 178 $p->{wm_url} = $app->wm_url . '?blog_id=' . $blog_id; 179 $p->{wm_is} = 1; 180 } 181 $p->{help_url} = $app->{help_url}; 129 182 $app->build_page("msg.tmpl", $p); 130 183 } 131 184 185 sub wm_url { 186 my $app = shift; 187 eval { require WidgetManager::App; }; 188 # if { MT::Plugin::WidgetManager::VERSION } is better 189 190 unless ($@) { 191 my $wm = WidgetManager::App->new( Directory => $app->config_dir ); 192 return $wm->{script_url}; 193 } 194 return 0; 195 } 196 132 197 1; -
trunk/feeds-app-lite/plugins/feeds-app-lite/lib/MT/Feeds/Find.pm
r41 r66 11 11 12 12 use vars qw( $VERSION ); 13 $VERSION = ' 0.01';13 $VERSION = '1.0'; 14 14 15 15 use constant FEED_MIME_TYPES => [ -
trunk/feeds-app-lite/plugins/feeds-app-lite/lib/MT/Feeds/Lite.pm
r41 r66 7 7 use URI::Fetch; 8 8 use MT::Feeds::Lite::CacheMgr; 9 use XML::Elemental;10 use XML::Elemental::Util qw( process_name );11 9 use MT::Util qw( encode_xml ); 12 10 13 11 use vars qw( $VERSION ); 14 $VERSION = ' 0.86';12 $VERSION = '1.0'; 15 13 16 14 my %Types = ( … … 85 83 my ($class, $xml) = @_; 86 84 my $self = bless {}, $class; 85 MT::Util::init_sax(); # Make sure XML::SAX knows about available parsers 86 require XML::Elemental; 87 require XML::Elemental::Util; 87 88 my $p = XML::Elemental->parser; 88 89 my $tree; … … 92 93 grep { ref $_ eq 'XML::Elemental::Element' } @{$tree->contents}; 93 94 $self->{root} = $root; 94 my ($name, $ns) = process_name($root->name);95 my ($name, $ns) = XML::Elemental::Util::process_name($root->name); 95 96 $ns = 'http://purl.org/rss/1.0/' 96 97 if $ns eq 'http://www.w3.org/1999/02/22-rdf-syntax-ns#'; # rss 1.0 … … 224 225 225 226 # it must be an element then. 226 my ($name, $ns) = process_name($node->name);227 my ($name, $ns) = XML::Elemental::Util::process_name($node->name); 227 228 my $xml = "<$name"; 228 229 my $a = $node->attributes; 229 230 my $children = $node->contents; 230 231 foreach (keys %$a) { 231 my ($aname, $ans) = process_name($_);232 my ($aname, $ans) = XML::Elemental::Util::process_name($_); 232 233 $xml .= " $aname=\"" . encode_xml($a->{$_}, 1) . "\""; 233 234 } -
trunk/feeds-app-lite/plugins/feeds-app-lite/mt-feeds.pl
r52 r66 1 package MT:: Template::Tags::FeedsLite;1 package MT::FeedsLite; 2 2 use strict; 3 3 4 4 use vars qw($VERSION); 5 $VERSION = ' 0.9';5 $VERSION = '1.0'; 6 6 7 7 my $plugin = MT::Plugin::FeedsLite->new; 8 8 MT->add_plugin($plugin); 9 9 10 MT->add_plugin_action('blog','index.cgi?', "Create a feed widget"); 11 MT->add_plugin_action('list_template','index.cgi?', "Create a feed widget"); 12 10 13 use MT::Template::Context; 11 14 12 MT::Template::Context->add_container_tag(Feed s => \&feeds);15 MT::Template::Context->add_container_tag(Feed => \&feed); 13 16 MT::Template::Context->add_tag(FeedTitle => \&feed_title); 14 17 MT::Template::Context->add_tag(FeedLink => \&feed_link); … … 21 24 use constant ENTRY => 'MT::Plugin::FeedsLite::entry'; 22 25 23 sub feed s{26 sub feed { 24 27 my ($ctx, $args, $cond) = @_; 25 28 my $uri = $args->{uri} … … 27 30 $ctx->error( 28 31 MT->translate( 29 "'[_1]' is a required argument of [_2]", 'uri', 'MTFeed s'32 "'[_1]' is a required argument of [_2]", 'uri', 'MTFeed' 30 33 ) 31 34 ); … … 109 112 my $lastn = $args->{lastn} ? ' lastn="' . $args->{lastn} . '"' : ''; 110 113 my $body = <<BODY; 111 <MTFeed suri="$uri">114 <MTFeed uri="$uri"> 112 115 <h2><MTFeedTitle encode_html="1"></h2> 113 116 <ul><MTFeedEntries$lastn> 114 117 <li><a href="<MTFeedEntryLink>"><MTFeedEntryTitle encode_html="1"></a></li> 115 118 </MTFeedEntries></ul> 116 </MTFeed s>119 </MTFeed> 117 120 BODY 118 121 require MT::Template; … … 127 130 128 131 sub _error { 129 $_[0]->error( 'MT[_1] was not used in the proper context.',130 $_[0]->stash('tag')) ;132 $_[0]->error(MT->translate('MT[_1] was not used in the proper context.', 133 $_[0]->stash('tag'))); 131 134 } 132 135 … … 140 143 sub author_link { 'http://www.appnel.com/' } 141 144 sub plugin_link { '' } 142 sub version { $MT:: Template::Tags::FeedsLite::VERSION }143 sub doc_link { ' ' }145 sub version { $MT::FeedsLite::VERSION } 146 sub doc_link { 'docs/index.html' } 144 147 145 148 sub description { 146 149 return <<DESC; 150 <p class="plugin-desc"><MT_TRANS phrase="Feeds.App Lite helps you republish feeds on your blogs. Want to do more with feeds in Movable Type?"> <a href="http://code.appnel.com/feeds-app" target="_blank"><MT_TRANS phrase="Upgrade to Feeds.App"></a>.</p> 147 151 DESC 148 152 } 149 153 150 sub init { $_[0]->{blog_config_template} = 'weblog_config.tmpl'}154 sub init { } 151 155 152 156 sub load_config { -
trunk/feeds-app-lite/plugins/feeds-app-lite/tmpl/config.tmpl
r52 r66 1 <TMPL_INCLUDE NAME="header -popup.tmpl">1 <TMPL_INCLUDE NAME="header.tmpl"> 2 2 3 3 <h2><MT_TRANS phrase="Feeds.App Lite Widget Creator"></h2> 4 4 5 5 <form method="post" action="<TMPL_VAR NAME=SCRIPT_URL>"> 6 <input type="hidden" name="blog_id" value="<TMPL_VAR NAME=BLOG_ID>"/> 7 <input type="hidden" name="__mode" value="save"/> 8 <input type="hidden" name="uri" value="<TMPL_VAR NAME=FEED_URI ESCAPE=HTML>"/> 9 <div class="field"> 10 <div class="label-column"><h5>Feed:</h5></div> 11 <div class="field-column"> 12 <p> 13 <strong><TMPL_VAR NAME=FEED_TITLE ESCAPE=HTML></strong><br> 14 <TMPL_VAR NAME=FEED_URI ESCAPE=HTML> 15 </p> 6 7 <fieldset> 8 <h3><MT_TRANS phrase="Feed Configuration">: <TMPL_VAR NAME=FEED_TITLE ESCAPE=HTML></h3> 9 10 <div class="inner"> 11 12 13 <input type="hidden" name="blog_id" value="<TMPL_VAR NAME=BLOG_ID>" /> 14 <input type="hidden" name="__mode" value="save" /> 15 <input type="hidden" name="uri" value="<TMPL_VAR NAME=FEED_URI ESCAPE=HTML>" /> 16 17 <div class="setting"> 18 <div class="label" style="width: 70px;"><label><MT_TRANS phrase="Feed URL">:</label></div> 19 <div class="field" style="width: 250px;"> 20 <p><TMPL_VAR NAME=FEED_URI ESCAPE=HTML></p> 16 21 </div> 17 22 </div> 18 23 19 <hr> 20 21 <div class="field"> 22 <div class="label-column"><h5><label for="feed_title"><MT_TRANS phrase="Title">:</label></h5></div> 23 <div class="field-column"> 24 25 <p><input name="feed_title" value="<TMPL_VAR NAME=FEED_TITLE ESCAPE=HTML>" type="text"></p> 26 <p><MT_TRANS phrase="Enter a title to be displayed above the feed contents in your widget."></p> 24 <div class="setting"> 25 <div class="label" style="width: 50px;"><label for="feed_title"><MT_TRANS phrase="Title">:</label></div> 26 <div class="field" style="width: 270px;"> 27 <input name="feed_title" id="feed_title" value="<TMPL_VAR NAME=FEED_TITLE ESCAPE=HTML>" maxlength="42" size="40" type="text" /> 28 <p><MT_TRANS phrase="Enter a title for your widget. This will also be displayed as the title of the feed when used on your published blog."></p> 27 29 </div> 28 30 </div> 29 31 30 <div class="field"> 31 <div class=" label-column"><h5><label for="lastn"><MT_TRANS phrase="Display">:</label></h5></div>32 <div class=" field-column">33 < p>34 <select name="lastn" >35 <option value="3"> 3</option>36 <option value="5" selected=" 1">5</option>37 <option value="10"> 10</option>38 <option value=""> All</option>32 33 <div class="setting"> 34 <div class="label" style="width: 50px;"><label for="lastn"><MT_TRANS phrase="Display">:</label></div> 35 <div class="field" style="width: 270px;"> 36 <select name="lastn" id="lastn"> 37 <option value="3"><MT_TRANS phrase="3"></option> 38 <option value="5" selected="selected"><MT_TRANS phrase="5"></option> 39 <option value="10"><MT_TRANS phrase="10"></option> 40 <option value=""><MT_TRANS phrase="All"></option> 39 41 </select> 40 </p>41 42 <p><MT_TRANS phrase="Select the maximum number of entries to display."></p> 42 43 </div> 43 44 </div> 44 45 46 47 <div style="margin-left:70px;"> 48 <input type="submit" value="<MT_TRANS phrase="Save">" /> 45 49 </div> 46 47 <div align="center">48 <input type="submit" value="<MT_TRANS phrase="Save">" /> 49 <input onclick="window.close()" type="button" value="<MT_TRANS phrase="Cancel">" />50 50 </div> 51 51 </fieldset> 52 52 </form> 53 54 <TMPL_INCLUDE NAME="footer-popup.tmpl"> 55 56 53 <TMPL_INCLUDE NAME="footer.tmpl"> -
trunk/feeds-app-lite/plugins/feeds-app-lite/tmpl/msg.tmpl
r52 r66 1 <TMPL_INCLUDE NAME="header -popup.tmpl">1 <TMPL_INCLUDE NAME="header.tmpl"> 2 2 3 3 <h2><MT_TRANS phrase="Feeds.App Lite Widget Creator"></h2> … … 12 12 13 13 <TMPL_IF NAME=SAVED> 14 <p ><MT_TRANS phrase="A template module named <strong>[_1]</strong> has been created." params="<TMPL_VAR NAME=MODULE ESCAPE=HTML>"></p>14 <p style="width: 400px;"><MT_TRANS phrase="Congratulations! A template module Widget named <strong>[_1]</strong> has been created which you can further <a href="[_2]">edit</a> to customize its display." params="<TMPL_VAR NAME=MODULE ESCAPE=HTML>%%<TMPL_VAR NAME=MT_URL>?__mode=view&amp;_type=template&amp;blog_id=<TMPL_VAR NAME=BLOG_ID>&amp;id=<TMPL_VAR NAME=MODULE_ID>"></p> 15 15 16 <MT_TRANS phrase="_FEEDS_APP_LITE_SAVED"> 16 <TMPL_IF NAME=WM_IS> 17 <p><MT_TRANS phrase="It can be included onto your published blog using <a href="[_1]">WidgetManager</a> or this MTInclude tag" params="<TMPL_VAR NAME=WM_URL ESCAPE=HTML>">.</p> 18 <TMPL_ELSE> 19 <p><MT_TRANS phrase="It can be included onto your published blog using this MTInclude tag" params="<TMPL_VAR NAME=WM_URL ESCAPE=HTML>">.</p> 20 </TMPL_IF> 21 22 <blockquote><p><strong><$MTInclude module="<TMPL_VAR NAME=MODULE ESCAPE=HTML>"$></strong></p></blockquote> 17 23 18 24 </TMPL_IF> 19 25 20 <div align="center"> 21 <input type="button" onclick="window.close()" value="<MT_TRANS phrase="Close">" /> 26 <div style="width: 400px; text-align: center;"> 22 27 <input type="button" onclick="window.location='<TMPL_VAR NAME=WIZARD_URI ESCAPE=HTML>'" value="<TMPL_UNLESS NAME=SAVED><MT_TRANS phrase="Go Back"><TMPL_ELSE><MT_TRANS phrase="Create Another"></TMPL_UNLESS>" /> 23 28 </div> 24 29 25 <TMPL_INCLUDE NAME="footer -popup.tmpl">30 <TMPL_INCLUDE NAME="footer.tmpl"> 26 31 27 32 -
trunk/feeds-app-lite/plugins/feeds-app-lite/tmpl/select.tmpl
r52 r66 1 <TMPL_INCLUDE NAME="header -popup.tmpl">1 <TMPL_INCLUDE NAME="header.tmpl"> 2 2 3 3 <h2><MT_TRANS phrase="Feeds.App Lite Widget Creator"></h2> 4 4 5 <p><MT_TRANS phrase="Multiple feeds were discovered. Select the feed you wish to use. "></p>5 <p><MT_TRANS phrase="Multiple feeds were discovered. Select the feed you wish to use. Feeds.App lite supports text-only RSS 1.0, 2.0 and Atom feeds."></p> 6 6 7 7 <form method="post" action="<TMPL_VAR NAME=SCRIPT_URL>"> … … 10 10 11 11 <div class="list"> 12 <table class="compact" cellspacing="0" >12 <table class="compact" cellspacing="0" style="width:600px;"> 13 13 <thead> 14 14 <tr> 15 <th class="cb"></th>16 <th style="width: 40%;"><MT_TRANS phrase="Title"></th>17 <th style="width: 55%;"><MT_TRANS phrase="URL"></th>15 <th style="width:10%;" class="cb"></th> 16 <th style="width:50%;"><MT_TRANS phrase="Type"></th> 17 <th style="width:40%;"><MT_TRANS phrase="URI"></th> 18 18 </tr> 19 19 </thead> … … 22 22 <TMPL_LOOP NAME=FEEDS> 23 23 <tr class="<TMPL_IF NAME=IS_ODD>odd<TMPL_ELSE>even</TMPL_IF>"> 24 <td class="cb"><input type="radio" name="uri" value="<TMPL_VAR NAME=URI ESCAPE=HTML>" /></td>24 <td class="cb"><input type="radio" name="uri" value="<TMPL_VAR NAME=URI ESCAPE=HTML>" /></td> 25 25 <td><TMPL_VAR NAME=TITLE ESCAPE=HTML></td> 26 26 <td><TMPL_VAR NAME=URI ESCAPE=HTML></td> … … 32 32 </div> 33 33 34 <br />34 <br /> 35 35 36 <div align="center">36 <div> 37 37 <input type="submit" value="<MT_TRANS phrase="Continue">" /> 38 <input onclick="window.close()" type="button" value="<MT_TRANS phrase="Cancel">" />39 38 </div> 40 39 41 40 </form> 42 41 43 <TMPL_INCLUDE NAME="footer -popup.tmpl">42 <TMPL_INCLUDE NAME="footer.tmpl"> 44 43 45 44 -
trunk/feeds-app-lite/plugins/feeds-app-lite/tmpl/start.tmpl
r52 r66 1 <TMPL_INCLUDE NAME="header -popup.tmpl">1 <TMPL_INCLUDE NAME="header.tmpl"> 2 2 3 3 <h2><MT_TRANS phrase="Feeds.App Lite Widget Creator"></h2> 4 4 5 5 <form method="post" action="<TMPL_VAR NAME=SCRIPT_URL>"> 6 <input type="hidden" name="blog_id" value="<TMPL_VAR NAME=BLOG_ID>" />7 <input type="hidden" name="__mode" value="select" />6 <input type="hidden" name="blog_id" value="<TMPL_VAR NAME=BLOG_ID>" /> 7 <input type="hidden" name="__mode" value="select" /> 8 8 9 9 <div class="field"> 10 10 11 <p ><MT_TRANS phrase="The Feeds.App Lite Widget Creator enables you to include content from any type of RSS or Atom feed into a weblog. This tool will help you create a template module that you can include in your weblog and manage with the Widget Manager."></p>11 <p style="width: 400px"><MT_TRANS phrase="Feeds.App Lite creates modules that include feed data. Once you've used it to create those modules, you can then use them in your blog templates."></p> 12 12 13 <TMPL_IF NAME=NEED_URI><h5 class="error-message"><MT_TRANS phrase="You must enter an address to proceed"></h5></TMPL_IF> 13 14 <div class="label-column"><h5><label for="uri"><MT_TRANS phrase="Enter the URL of a feed, or the URL of a site that has a feed."></label></h5></div> 14 15 <div class="field-column"> 15 <input style="width:300px;" type="text" name="uri" id="uri" /></p>16 <input style="width:300px;" type="text" name="uri" id="uri" /> 16 17 </div> 17 18 </div> 18 19 19 <div style="text-align:center"><input type="submit" value="<MT_TRANS phrase="Continue">" /> 20 <input onclick="window.close()" type="button" value="<MT_TRANS phrase="Cancel">" /> 21 </div> 20 <div><input type="submit" value="<MT_TRANS phrase="Continue">" /></div> 22 21 23 22 </form> 24 23 25 <TMPL_INCLUDE NAME="footer -popup.tmpl">24 <TMPL_INCLUDE NAME="footer.tmpl">
