From: Aaron Trevena Date: Sat, 19 Nov 2005 16:46:53 +0000 (+0000) Subject: moved templates X-Git-Tag: 2.11~90 X-Git-Url: https://git.decadent.org.uk/gitweb/?a=commitdiff_plain;h=48c86c6ba8c5db11ea6906e3237db1322f8dc5e0;p=maypole.git moved templates git-svn-id: http://svn.maypole.perl.org/Maypole/trunk@428 48953598-375a-da11-a14b-00016c27c3ee --- diff --git a/lib/Maypole/templates/beer/addnew b/lib/Maypole/templates/beer/addnew new file mode 100644 index 0000000..ad51f01 --- /dev/null +++ b/lib/Maypole/templates/beer/addnew @@ -0,0 +1,21 @@ +[% USE element_maker = Class("HTML::Element") %] +
+
+
+Add a new [%classmetadata.moniker%] + + + [% FOR col = classmetadata.columns; + NEXT IF col == "id"; + SET element = classmetadata.cgi.$col; + %] + + + [% END; %] + + +
+
+
diff --git a/lib/Maypole/templates/factory/addnew b/lib/Maypole/templates/factory/addnew new file mode 100644 index 0000000..bf2b9ce --- /dev/null +++ b/lib/Maypole/templates/factory/addnew @@ -0,0 +1,41 @@ +[%# + +=head1 addnew + +This is the interface to adding a new instance of an object. (or a new +row in the database, if you want to look at it that way) It displays a +form containing a list of HTML components for each of the columns in the +table. + +=cut + +#%] + +
+
+
+Add a new [% classmetadata.moniker %] + [% FOR col = classmetadata.columns %] + [% NEXT IF col == "id" %] + + [% IF errors.$col %] + [% errors.$col %] + [% END %] + + [% END; %] + + +
+
+
diff --git a/lib/Maypole/templates/factory/edit b/lib/Maypole/templates/factory/edit new file mode 100644 index 0000000..6bdad79 --- /dev/null +++ b/lib/Maypole/templates/factory/edit @@ -0,0 +1,38 @@ +[%# + +=head1 edit + +This is the edit page. It edits the passed-in object, by displaying a +form similar to L but with the current values filled in. + +=cut + +#%] +[% PROCESS macros %] +[% INCLUDE header %] +[% INCLUDE title %] +[% IF objects.size %] +
Edit a [% classmetadata.moniker %]
+[% FOR item = objects; %] +
+
+Edit [% item.name %] +[% FOR col = classmetadata.columns; + NEXT IF col == "id"; + '"; + IF errors.$col; + ''; errors.$col;''; + END; + END %] + + +
+ + [% END %] +[% ELSE %] +[% INCLUDE addnew %] +[% END %] +[% INCLUDE footer %] diff --git a/lib/Maypole/templates/factory/footer b/lib/Maypole/templates/factory/footer new file mode 100644 index 0000000..1b8ae55 --- /dev/null +++ b/lib/Maypole/templates/factory/footer @@ -0,0 +1,3 @@ + + + diff --git a/lib/Maypole/templates/factory/frontpage b/lib/Maypole/templates/factory/frontpage new file mode 100644 index 0000000..ac47269 --- /dev/null +++ b/lib/Maypole/templates/factory/frontpage @@ -0,0 +1,27 @@ +[%# + +=head1 frontpage + +This is the frontpage for your Maypole application. +It shows a list of all tables it is allowed to display. + +=cut + +#%] +[% INCLUDE header %] +
+ [% config.application_name || "A poorly configured Maypole application" %] +
+
+ +
+ +[% INCLUDE maypole %] + +[% INCLUDE footer %] diff --git a/lib/Maypole/templates/factory/header b/lib/Maypole/templates/factory/header new file mode 100644 index 0000000..5c8a592 --- /dev/null +++ b/lib/Maypole/templates/factory/header @@ -0,0 +1,16 @@ + + + + + [% + title || config.application_name || + "A poorly configured Maypole application" + %] + + + + + + +
diff --git a/lib/Maypole/templates/factory/list b/lib/Maypole/templates/factory/list new file mode 100644 index 0000000..dbbedaf --- /dev/null +++ b/lib/Maypole/templates/factory/list @@ -0,0 +1,62 @@ +[% PROCESS macros %] +[% INCLUDE header %] +[% INCLUDE title %] +[% IF search %] +
Search results
+[% ELSE %] +
Listing of all [% classmetadata.plural %]
+[% END %] +[% INCLUDE navbar %] +
+ + + [% FOR col = classmetadata.list_columns.list; + NEXT IF col == "id"; + ""; + END %] + + + [% SET count = 0; + FOR item = objects; + SET count = count + 1; + ""; + display_line(item); + ""; + END %] +
"; + SET additional = "?order=" _ col; + SET additional = additional _ "&page=" _ pager.current_page + IF pager; + SET additional = additional _ "&o2=desc" + IF col == request.params.order and request.params.o2 != "desc"; + SET action = "list"; + FOR name = classmetadata.columns.list; + IF request.query.$name; + SET additional = + additional _ "&" _ name _ "=" _ + request.params.$name; + SET action = "search"; + END; + END; + IF model_obj.find_column(col); + link(classmetadata.table, action, additional, + classmetadata.colnames.$col); + IF col == request.params.order; + IF request.params.o2 != "desc"; + "↓"; + ELSE; + "↑"; + END; + END; + ELSE; + classmetadata.colnames.$col || col FILTER ucfirst; + END; + "Actions
+ +[% INCLUDE pager %] +[% INCLUDE addnew %] +[% INCLUDE search_form %] +
+[% INCLUDE footer %] diff --git a/lib/Maypole/templates/factory/login b/lib/Maypole/templates/factory/login new file mode 100644 index 0000000..266921a --- /dev/null +++ b/lib/Maypole/templates/factory/login @@ -0,0 +1,25 @@ +[% PROCESS macros %] +[% INCLUDE header %] +[% INCLUDE title %] +
You need to log in
+ +
+ [% IF login_error %] +
[% login_error %]
+ [% END %] +
+
+ Login + + + +
+
+
+ diff --git a/lib/Maypole/templates/factory/macros b/lib/Maypole/templates/factory/macros new file mode 100644 index 0000000..59d6c92 --- /dev/null +++ b/lib/Maypole/templates/factory/macros @@ -0,0 +1,174 @@ +[%# + +=head1 MACROS + +These are some default macros which are used by various templates in the +system. + +=head2 link + +This creates an to a command in the Apache::MVC system by +catenating the base URL, table, command, and any arguments. + +#%] +[% +MACRO link(table, command, additional, label) BLOCK; + SET lnk = base _ "/" _ table _ "/" _ command _ "/" _ additional; + lnk = lnk | uri | html; + ''; + label; + ""; +END; +%] + +[%# + +=head2 maybe_link_view + +C takes something returned from the database - either +some ordinary data, or an object in a related class expanded by a +has-a relationship. If it is an object, it constructs a link to the view +command for that object. Otherwise, it just displays the data. + +#%] + +[% +MACRO maybe_link_view(object) BLOCK; + IF object.isa('Maypole::Model::Base'); + link(object.table, "view", object.id.join('/'), object); + ELSE; + object; + END; +END; +%] + +[%# + +=head2 display_line + +C is used in the list template to display a row from the +database, by iterating over the columns and displaying the data for each +column. It misses out the C column by default, and magically +URLifies columns called C. This may be considered too much magic +for some. + +#%] +[% MACRO display_line(item) BLOCK; + FOR col = classmetadata.list_columns; + NEXT IF col == "id"; + ""; + IF col == "url" AND item.url; + ' '; item.url; ''; + ELSIF col == classmetadata.stringify_column; + maybe_link_view(item); + ELSE; + accessor = item.accessor_name(col); + maybe_link_view(item.$accessor); + END; + ""; + END; + ''; + button(item, "edit"); + button(item, "delete"); + ""; +END %] +[%# + +=head2 button + +This is a generic button, which performs an action on an object. + +=cut + +#%] +[% MACRO button(obj, action) BLOCK; %] +[% IF obj.is_public(action) %] +
+
+[% END %] +[% END %] +[%# + +=head2 view_related + +This takes an object, and looks up the C; this should +give a list of accessors that can be called to get a list of related +objects. It then displays a title for that accessor, (i.e. "Beers" for a +brewery) calls the accesor, and displays a list of the results. + +=cut + +#%] +[% +MACRO view_related(object) BLOCK; + FOR accessor = classmetadata.related_accessors.list; + "
"; accessor | ucfirst; "
\n"; + "
    "; + FOR thing = object.$accessor; + "
  • "; maybe_link_view(thing); "
  • \n"; + END; + "
"; + END; +END; + +MACRO test_xxxx(myblock) BLOCK; + FOR col = classmetadata.columns; + NEXT IF col == "id"; + myblock; + END; +END; +%] +[%# + +=head2 view_item + +This takes an object and and displays its properties in a table. + +=cut + +#%] +[% MACRO view_item(item) BLOCK; %] + [% SET string = classmetadata.stringifycolumn %] +
[% item.$string %]
+ [% INCLUDE navbar %] + + + + + + [% FOR col = classmetadata.columns.list; + NEXT IF col == "id" OR col == string; + NEXT UNLESS item.$col; + %] +[%# + +=for doc + +It gets the displayable form of a column's name from the hash returned +from the C method: + +#%] + + + + + [% END; %] +
[% classmetadata.colnames.$string %][% item.$string %]
[% classmetadata.colnames.$col; %] + [% IF col == "url" && item.url; # Possibly too much magic. + ' '; item.url; ''; + ELSE; + maybe_link_view(item.$col); + END; %] +[%# + +This tests whether or not the returned value is an object, and if so, +creates a link to a page viewing that object; if not, it just displays +the text as normal. The object is linked using its stringified name; +by default this calls the C method, or returns the object's ID +if there is no C method or other stringification method defined. + +=cut + +#%] +
+[% END %] diff --git a/lib/Maypole/templates/factory/maypole b/lib/Maypole/templates/factory/maypole new file mode 100644 index 0000000..7ab2744 --- /dev/null +++ b/lib/Maypole/templates/factory/maypole @@ -0,0 +1,7 @@ + +
 
+
 
+
 
+
 
+
 
+ diff --git a/lib/Maypole/templates/factory/maypole.css b/lib/Maypole/templates/factory/maypole.css new file mode 100644 index 0000000..51d99a4 --- /dev/null +++ b/lib/Maypole/templates/factory/maypole.css @@ -0,0 +1,376 @@ +html { + padding-right: 0px; + padding-left: 0px; + padding-bottom: 0px; + margin: 0px; + padding-top: 0px +} +body { + font-family: sans-serif; + padding-right: 0px; + padding-left: 0px; + padding-bottom: 0px; + margin: 0px; padding-top: 0px; + background-color: #fff; +} +#frontpage_list { + position: absolute; + z-index: 5; + padding: 0px 100px 0px 0px; + margin:0 0.5%; + margin-bottom:1em; + margin-top: 1em; + background-color: #fff; +} + +#frontpage_list a:hover { + background-color: #d0d8e4; +} + +#frontpage_list ul { + list-style-type: square; +} + +.content { + padding: 12px; + margin-top: 1px; + margin-bottom:0px; + margin-left: 15px; + margin-right: 15px; + border-color: #000000; + border-top: 0px; + border-bottom: 0px; + border-left: 1px; + border-right: 1px; +} + +A { + text-decoration: none; + color:#225 +} +A:hover { + text-decoration: underline; + color:#222 +} + +#title { + z-index: 6; + width: 100%; + height: 18px; + margin-top: 10px; + font-size: 90%; + border-bottom: 1px solid #ddf; + text-align: left; +} + +#subtitle { + postion: absolute; + z-index: 6; + padding: 10px; + margin-top: 2em; + height: 18px; + text-align: left; + background-color: #fff; +} + +input[type=text] { + height: 16px; + width: 136px; + font-family: sans-serif; + font-size: 11px; + color: #2E415A; + padding: 0px; + margin-bottom: 5px; +} + +input[type=submit] { + height: 18px; + width: 60px; + font-family: sans-serif; + font-size: 11px; + border: 1px outset; + background-color: #fff; + padding: 0px 0px 2px 0px; + margin-bottom: 5px; +} + +input:hover[type=submit] { + color: #fff; + background-color: #7d95b5; +} + +textarea { + width: 136px; + font-family: sans-serif; + font-size: 11px; + color: #2E415A; + padding: 0px; + margin-bottom: 5px; +} + +select { + height: 16px; + width: 140px; + font-family: sans-serif; + font-size: 12px; + color: #202020; + padding: 0px; + margin-bottom: 5px; +} + +.deco1 { + font-size: 0px; + z-index:1; + border:0px; + border-style:solid; + border-color:#4d6d99; + background-color:#4d6d99; +} + +.deco2 { + z-index:2; + border:0px; + border-style:solid; + border-color:#627ea5; + background-color:#627ea5; +} + + +.deco3 { + z-index:3; + border:0px; + border-style:solid; + border-color:#7d95b5; + background-color:#7d95b5; +} + +.deco4 { + z-index:4; + border:0px; + border-style:solid; + border-color:#d0d8e4; + background-color:#d0d8e4; +} + + +table { + border: 0px solid; + background-color: #ffffff; +} + +#matrix { width: 100%; } + +#matrix th { + background-color: #b5cadc; + border: 1px solid #778; + font: bold 12px Verdana, sans-serif; +} + +#matrix #actionth { + width: 1px; + padding: 0em 1em 0em 1em; +} + +#matrix tr.alternate { background-color:#e3eaf0; } +#matrix tr:hover { background-color: #b5cadc; } +#matrix td { font: 12px Verdana, sans-serif; } + +#navlist { + padding: 3px 0; + margin-left: 0; + margin-top:3em; + border-bottom: 1px solid #778; + font: bold 12px Verdana, sans-serif; +} + +#navlist li { + list-style: none; + margin: 0; + display: inline; +} + +#navlist li a { + padding: 3px 0.5em; + margin-left: 3px; + border: 1px solid #778; + border-bottom: none; + background: #b5cadc; + text-decoration: none; +} + +#navlist li a:link { color: #448; } +#navlist li a:visited { color: #667; } + +#navlist li a:hover { + color: #000; + background: #eef; + border-top: 4px solid #7d95b5; + border-color: #227; +} + +#navlist #active a { + background: white; + border-bottom: 1px solid white; + border-top: 4px solid; +} + +td { font: 12px Verdana, sans-serif; } + + +fieldset { + margin-top: 1em; + padding: 1em; + background-color: #f3f6f8; + font:80%/1 sans-serif; + border:1px solid #ddd; +} + +legend { + padding: 0.2em 0.5em; + background-color: #fff; + border:1px solid #aaa; + font-size:90%; + text-align:right; +} + +label { + display:block; +} + +label .field { + float:left; + width:25%; + margin-right:0.5em; + padding-top:0.2em; + text-align:right; + font-weight:bold; +} + +#vlist { + padding: 0 1px 1px; + margin-left: 0; + font: bold 12px Verdana, sans-serif; + background: gray; + width: 13em; +} + +#vlist li { + list-style: none; + margin: 0; + border-top: 1px solid gray; + text-align: left; +} + +#vlist li a { + display: block; + padding: 0.25em 0.5em 0.25em 0.75em; + border-left: 1em solid #7d95b5; + background: #d0d8e4; + text-decoration: none; +} + +#vlist li a:hover { + border-color: #227; +} + +.view .field { + background-color: #f3f6f8; + border-left: 1px solid #7695b5; + border-top: 1px solid #7695b5; + padding: 1px 10px 0px 2px; +} + +#addnew { + width: 50%; + float: left; +} + +#search { + width: 50%; + float:right; +} + +.error { color: #d00; } + +.action { + border: 1px outset #7d95b5; + style:block; +} + +.action:hover { + color: #fff; + text-decoration: none; + background-color: #7d95b5; +} + +.actionform { + display: inline; +} + +.actionbutton { + height: 16px; + width: 40px; + font-family: sans-serif; + font-size: 10px; + border: 1px outset; + background-color: #fff; + margin-bottom: 0px; +} + +.actionbutton:hover { + color: #fff; + background-color: #7d95b5; +} + +.actions { + white-space: nowrap; +} + +.field { + display:inline; +} + +#login { width: 400px; } + +#login input[type=text] { width: 150px; } +#login input[type=password] { width: 150px; } + +.pager { + font: 11px Arial, Helvetica, sans-serif; + text-align: center; + border: solid 1px #e2e2e2; + border-left: 0; + border-right: 0; + padding-top: 10px; + padding-bottom: 10px; + margin: 0px; + background-color: #f3f6f8; +} + +.pager a { + padding: 2px 6px; + border: solid 1px #ddd; + background: #fff; + text-decoration: none; +} + +.pager a:visited { + padding: 2px 6px; + border: solid 1px #ddd; + background: #fff; + text-decoration: none; +} + +.pager .current-page { + padding: 2px 6px; + font-weight: bold; + vertical-align: top; +} + +.pager a:hover { + color: #fff; + background: #7d95b5; + border-color: #036; + text-decoration: none; +} + diff --git a/lib/Maypole/templates/factory/navbar b/lib/Maypole/templates/factory/navbar new file mode 100644 index 0000000..0c8b168 --- /dev/null +++ b/lib/Maypole/templates/factory/navbar @@ -0,0 +1,22 @@ +[%# + +=head1 navbar + +This is a navigation bar to go across the page. (Or down the side, or +whatetver you want to do with it.) It displays all the tables which are +accessible, with a link to the list page for each one. + +#%] +[% PROCESS macros %] + diff --git a/lib/Maypole/templates/factory/pager b/lib/Maypole/templates/factory/pager new file mode 100644 index 0000000..78c89fd --- /dev/null +++ b/lib/Maypole/templates/factory/pager @@ -0,0 +1,48 @@ +[%# + +=head1 pager + +This controls the pager display at the bottom (by default) of the list +and search views. It expects a C template argument which responds +to the L interface. + +#%] +[% +IF pager AND pager.first_page != pager.last_page; +%] +

Pages: +[% + UNLESS pager_action; + SET pager_action = request.action; + END; + + SET begin_page = pager.current_page - 10; + IF begin_page < 1; + SET begin_page = pager.first_page; + END; + SET end_page = pager.current_page + 10; + IF pager.last_page < end_page; + SET end_page = pager.last_page; + END; + FOREACH num = [begin_page .. end_page]; + IF num == pager.current_page; + ""; num; ""; + ELSE; + SET label = num; + SET args = "?page=" _ num; + SET args = args _ "&order=" _ request.params.order + IF request.params.order; + SET args = args _ "&o2=desc" + IF request.params.o2 == "desc"; + FOR col = classmetadata.columns.list; + IF request.params.$col; + SET args = args _ "&" _ col _ "=" _ request.params.$col; + SET action = "search"; + END; + END; + link(classmetadata.table, pager_action, args, label); + END; + END; +%] +

+[% END %] diff --git a/lib/Maypole/templates/factory/search_form b/lib/Maypole/templates/factory/search_form new file mode 100644 index 0000000..1f07194 --- /dev/null +++ b/lib/Maypole/templates/factory/search_form @@ -0,0 +1,22 @@ + diff --git a/lib/Maypole/templates/factory/title b/lib/Maypole/templates/factory/title new file mode 100644 index 0000000..401f0a3 --- /dev/null +++ b/lib/Maypole/templates/factory/title @@ -0,0 +1 @@ + [% config.application_name %] diff --git a/lib/Maypole/templates/factory/view b/lib/Maypole/templates/factory/view new file mode 100644 index 0000000..328678c --- /dev/null +++ b/lib/Maypole/templates/factory/view @@ -0,0 +1,34 @@ +[%# + +=for doc + +The C template takes some objects (usually just one) from +C and displays the object's properties in a table. + +=cut + +#%] +[% PROCESS macros %] +[% INCLUDE header %] +[% FOR item = objects %] +[% view_item(item); %] +[%# + +=for doc + +The C template also displays a list of other objects related to the first +one via C style relationships; this is done by calling the +C method - see L - to return +a list of has-many accessors. Next it calls each of those accessors, and +displays the results in a table. + +#%] +
Back to listing +[% view_related(item); %] + +[% + button(item, "edit"); + button(item, "delete"); +%] +[% END; %] +[% INCLUDE footer %] diff --git a/templates/beer/addnew b/templates/beer/addnew deleted file mode 100644 index ad51f01..0000000 --- a/templates/beer/addnew +++ /dev/null @@ -1,21 +0,0 @@ -[% USE element_maker = Class("HTML::Element") %] -
-
-
-Add a new [%classmetadata.moniker%] - - - [% FOR col = classmetadata.columns; - NEXT IF col == "id"; - SET element = classmetadata.cgi.$col; - %] - - - [% END; %] - - -
-
-
diff --git a/templates/factory/addnew b/templates/factory/addnew deleted file mode 100644 index bf2b9ce..0000000 --- a/templates/factory/addnew +++ /dev/null @@ -1,41 +0,0 @@ -[%# - -=head1 addnew - -This is the interface to adding a new instance of an object. (or a new -row in the database, if you want to look at it that way) It displays a -form containing a list of HTML components for each of the columns in the -table. - -=cut - -#%] - -
-
-
-Add a new [% classmetadata.moniker %] - [% FOR col = classmetadata.columns %] - [% NEXT IF col == "id" %] - - [% IF errors.$col %] - [% errors.$col %] - [% END %] - - [% END; %] - - -
-
-
diff --git a/templates/factory/edit b/templates/factory/edit deleted file mode 100644 index 6bdad79..0000000 --- a/templates/factory/edit +++ /dev/null @@ -1,38 +0,0 @@ -[%# - -=head1 edit - -This is the edit page. It edits the passed-in object, by displaying a -form similar to L but with the current values filled in. - -=cut - -#%] -[% PROCESS macros %] -[% INCLUDE header %] -[% INCLUDE title %] -[% IF objects.size %] -
Edit a [% classmetadata.moniker %]
-[% FOR item = objects; %] -
-
-Edit [% item.name %] -[% FOR col = classmetadata.columns; - NEXT IF col == "id"; - '"; - IF errors.$col; - ''; errors.$col;''; - END; - END %] - - -
- - [% END %] -[% ELSE %] -[% INCLUDE addnew %] -[% END %] -[% INCLUDE footer %] diff --git a/templates/factory/footer b/templates/factory/footer deleted file mode 100644 index 1b8ae55..0000000 --- a/templates/factory/footer +++ /dev/null @@ -1,3 +0,0 @@ -
- - diff --git a/templates/factory/frontpage b/templates/factory/frontpage deleted file mode 100644 index ac47269..0000000 --- a/templates/factory/frontpage +++ /dev/null @@ -1,27 +0,0 @@ -[%# - -=head1 frontpage - -This is the frontpage for your Maypole application. -It shows a list of all tables it is allowed to display. - -=cut - -#%] -[% INCLUDE header %] -
- [% config.application_name || "A poorly configured Maypole application" %] -
-
- -
- -[% INCLUDE maypole %] - -[% INCLUDE footer %] diff --git a/templates/factory/header b/templates/factory/header deleted file mode 100644 index 5c8a592..0000000 --- a/templates/factory/header +++ /dev/null @@ -1,16 +0,0 @@ - - - - - [% - title || config.application_name || - "A poorly configured Maypole application" - %] - - - - - - -
diff --git a/templates/factory/list b/templates/factory/list deleted file mode 100644 index dbbedaf..0000000 --- a/templates/factory/list +++ /dev/null @@ -1,62 +0,0 @@ -[% PROCESS macros %] -[% INCLUDE header %] -[% INCLUDE title %] -[% IF search %] -
Search results
-[% ELSE %] -
Listing of all [% classmetadata.plural %]
-[% END %] -[% INCLUDE navbar %] -
- - - [% FOR col = classmetadata.list_columns.list; - NEXT IF col == "id"; - ""; - END %] - - - [% SET count = 0; - FOR item = objects; - SET count = count + 1; - ""; - display_line(item); - ""; - END %] -
"; - SET additional = "?order=" _ col; - SET additional = additional _ "&page=" _ pager.current_page - IF pager; - SET additional = additional _ "&o2=desc" - IF col == request.params.order and request.params.o2 != "desc"; - SET action = "list"; - FOR name = classmetadata.columns.list; - IF request.query.$name; - SET additional = - additional _ "&" _ name _ "=" _ - request.params.$name; - SET action = "search"; - END; - END; - IF model_obj.find_column(col); - link(classmetadata.table, action, additional, - classmetadata.colnames.$col); - IF col == request.params.order; - IF request.params.o2 != "desc"; - "↓"; - ELSE; - "↑"; - END; - END; - ELSE; - classmetadata.colnames.$col || col FILTER ucfirst; - END; - "Actions
- -[% INCLUDE pager %] -[% INCLUDE addnew %] -[% INCLUDE search_form %] -
-[% INCLUDE footer %] diff --git a/templates/factory/login b/templates/factory/login deleted file mode 100644 index 266921a..0000000 --- a/templates/factory/login +++ /dev/null @@ -1,25 +0,0 @@ -[% PROCESS macros %] -[% INCLUDE header %] -[% INCLUDE title %] -
You need to log in
- -
- [% IF login_error %] -
[% login_error %]
- [% END %] -
-
- Login - - - -
-
-
- diff --git a/templates/factory/macros b/templates/factory/macros deleted file mode 100644 index 59d6c92..0000000 --- a/templates/factory/macros +++ /dev/null @@ -1,174 +0,0 @@ -[%# - -=head1 MACROS - -These are some default macros which are used by various templates in the -system. - -=head2 link - -This creates an to a command in the Apache::MVC system by -catenating the base URL, table, command, and any arguments. - -#%] -[% -MACRO link(table, command, additional, label) BLOCK; - SET lnk = base _ "/" _ table _ "/" _ command _ "/" _ additional; - lnk = lnk | uri | html; - ''; - label; - ""; -END; -%] - -[%# - -=head2 maybe_link_view - -C takes something returned from the database - either -some ordinary data, or an object in a related class expanded by a -has-a relationship. If it is an object, it constructs a link to the view -command for that object. Otherwise, it just displays the data. - -#%] - -[% -MACRO maybe_link_view(object) BLOCK; - IF object.isa('Maypole::Model::Base'); - link(object.table, "view", object.id.join('/'), object); - ELSE; - object; - END; -END; -%] - -[%# - -=head2 display_line - -C is used in the list template to display a row from the -database, by iterating over the columns and displaying the data for each -column. It misses out the C column by default, and magically -URLifies columns called C. This may be considered too much magic -for some. - -#%] -[% MACRO display_line(item) BLOCK; - FOR col = classmetadata.list_columns; - NEXT IF col == "id"; - ""; - IF col == "url" AND item.url; - ' '; item.url; ''; - ELSIF col == classmetadata.stringify_column; - maybe_link_view(item); - ELSE; - accessor = item.accessor_name(col); - maybe_link_view(item.$accessor); - END; - ""; - END; - ''; - button(item, "edit"); - button(item, "delete"); - ""; -END %] -[%# - -=head2 button - -This is a generic button, which performs an action on an object. - -=cut - -#%] -[% MACRO button(obj, action) BLOCK; %] -[% IF obj.is_public(action) %] -
-
-[% END %] -[% END %] -[%# - -=head2 view_related - -This takes an object, and looks up the C; this should -give a list of accessors that can be called to get a list of related -objects. It then displays a title for that accessor, (i.e. "Beers" for a -brewery) calls the accesor, and displays a list of the results. - -=cut - -#%] -[% -MACRO view_related(object) BLOCK; - FOR accessor = classmetadata.related_accessors.list; - "
"; accessor | ucfirst; "
\n"; - "
    "; - FOR thing = object.$accessor; - "
  • "; maybe_link_view(thing); "
  • \n"; - END; - "
"; - END; -END; - -MACRO test_xxxx(myblock) BLOCK; - FOR col = classmetadata.columns; - NEXT IF col == "id"; - myblock; - END; -END; -%] -[%# - -=head2 view_item - -This takes an object and and displays its properties in a table. - -=cut - -#%] -[% MACRO view_item(item) BLOCK; %] - [% SET string = classmetadata.stringifycolumn %] -
[% item.$string %]
- [% INCLUDE navbar %] - - - - - - [% FOR col = classmetadata.columns.list; - NEXT IF col == "id" OR col == string; - NEXT UNLESS item.$col; - %] -[%# - -=for doc - -It gets the displayable form of a column's name from the hash returned -from the C method: - -#%] - - - - - [% END; %] -
[% classmetadata.colnames.$string %][% item.$string %]
[% classmetadata.colnames.$col; %] - [% IF col == "url" && item.url; # Possibly too much magic. - ' '; item.url; ''; - ELSE; - maybe_link_view(item.$col); - END; %] -[%# - -This tests whether or not the returned value is an object, and if so, -creates a link to a page viewing that object; if not, it just displays -the text as normal. The object is linked using its stringified name; -by default this calls the C method, or returns the object's ID -if there is no C method or other stringification method defined. - -=cut - -#%] -
-[% END %] diff --git a/templates/factory/maypole b/templates/factory/maypole deleted file mode 100644 index 7ab2744..0000000 --- a/templates/factory/maypole +++ /dev/null @@ -1,7 +0,0 @@ - -
 
-
 
-
 
-
 
-
 
- diff --git a/templates/factory/maypole.css b/templates/factory/maypole.css deleted file mode 100644 index 51d99a4..0000000 --- a/templates/factory/maypole.css +++ /dev/null @@ -1,376 +0,0 @@ -html { - padding-right: 0px; - padding-left: 0px; - padding-bottom: 0px; - margin: 0px; - padding-top: 0px -} -body { - font-family: sans-serif; - padding-right: 0px; - padding-left: 0px; - padding-bottom: 0px; - margin: 0px; padding-top: 0px; - background-color: #fff; -} -#frontpage_list { - position: absolute; - z-index: 5; - padding: 0px 100px 0px 0px; - margin:0 0.5%; - margin-bottom:1em; - margin-top: 1em; - background-color: #fff; -} - -#frontpage_list a:hover { - background-color: #d0d8e4; -} - -#frontpage_list ul { - list-style-type: square; -} - -.content { - padding: 12px; - margin-top: 1px; - margin-bottom:0px; - margin-left: 15px; - margin-right: 15px; - border-color: #000000; - border-top: 0px; - border-bottom: 0px; - border-left: 1px; - border-right: 1px; -} - -A { - text-decoration: none; - color:#225 -} -A:hover { - text-decoration: underline; - color:#222 -} - -#title { - z-index: 6; - width: 100%; - height: 18px; - margin-top: 10px; - font-size: 90%; - border-bottom: 1px solid #ddf; - text-align: left; -} - -#subtitle { - postion: absolute; - z-index: 6; - padding: 10px; - margin-top: 2em; - height: 18px; - text-align: left; - background-color: #fff; -} - -input[type=text] { - height: 16px; - width: 136px; - font-family: sans-serif; - font-size: 11px; - color: #2E415A; - padding: 0px; - margin-bottom: 5px; -} - -input[type=submit] { - height: 18px; - width: 60px; - font-family: sans-serif; - font-size: 11px; - border: 1px outset; - background-color: #fff; - padding: 0px 0px 2px 0px; - margin-bottom: 5px; -} - -input:hover[type=submit] { - color: #fff; - background-color: #7d95b5; -} - -textarea { - width: 136px; - font-family: sans-serif; - font-size: 11px; - color: #2E415A; - padding: 0px; - margin-bottom: 5px; -} - -select { - height: 16px; - width: 140px; - font-family: sans-serif; - font-size: 12px; - color: #202020; - padding: 0px; - margin-bottom: 5px; -} - -.deco1 { - font-size: 0px; - z-index:1; - border:0px; - border-style:solid; - border-color:#4d6d99; - background-color:#4d6d99; -} - -.deco2 { - z-index:2; - border:0px; - border-style:solid; - border-color:#627ea5; - background-color:#627ea5; -} - - -.deco3 { - z-index:3; - border:0px; - border-style:solid; - border-color:#7d95b5; - background-color:#7d95b5; -} - -.deco4 { - z-index:4; - border:0px; - border-style:solid; - border-color:#d0d8e4; - background-color:#d0d8e4; -} - - -table { - border: 0px solid; - background-color: #ffffff; -} - -#matrix { width: 100%; } - -#matrix th { - background-color: #b5cadc; - border: 1px solid #778; - font: bold 12px Verdana, sans-serif; -} - -#matrix #actionth { - width: 1px; - padding: 0em 1em 0em 1em; -} - -#matrix tr.alternate { background-color:#e3eaf0; } -#matrix tr:hover { background-color: #b5cadc; } -#matrix td { font: 12px Verdana, sans-serif; } - -#navlist { - padding: 3px 0; - margin-left: 0; - margin-top:3em; - border-bottom: 1px solid #778; - font: bold 12px Verdana, sans-serif; -} - -#navlist li { - list-style: none; - margin: 0; - display: inline; -} - -#navlist li a { - padding: 3px 0.5em; - margin-left: 3px; - border: 1px solid #778; - border-bottom: none; - background: #b5cadc; - text-decoration: none; -} - -#navlist li a:link { color: #448; } -#navlist li a:visited { color: #667; } - -#navlist li a:hover { - color: #000; - background: #eef; - border-top: 4px solid #7d95b5; - border-color: #227; -} - -#navlist #active a { - background: white; - border-bottom: 1px solid white; - border-top: 4px solid; -} - -td { font: 12px Verdana, sans-serif; } - - -fieldset { - margin-top: 1em; - padding: 1em; - background-color: #f3f6f8; - font:80%/1 sans-serif; - border:1px solid #ddd; -} - -legend { - padding: 0.2em 0.5em; - background-color: #fff; - border:1px solid #aaa; - font-size:90%; - text-align:right; -} - -label { - display:block; -} - -label .field { - float:left; - width:25%; - margin-right:0.5em; - padding-top:0.2em; - text-align:right; - font-weight:bold; -} - -#vlist { - padding: 0 1px 1px; - margin-left: 0; - font: bold 12px Verdana, sans-serif; - background: gray; - width: 13em; -} - -#vlist li { - list-style: none; - margin: 0; - border-top: 1px solid gray; - text-align: left; -} - -#vlist li a { - display: block; - padding: 0.25em 0.5em 0.25em 0.75em; - border-left: 1em solid #7d95b5; - background: #d0d8e4; - text-decoration: none; -} - -#vlist li a:hover { - border-color: #227; -} - -.view .field { - background-color: #f3f6f8; - border-left: 1px solid #7695b5; - border-top: 1px solid #7695b5; - padding: 1px 10px 0px 2px; -} - -#addnew { - width: 50%; - float: left; -} - -#search { - width: 50%; - float:right; -} - -.error { color: #d00; } - -.action { - border: 1px outset #7d95b5; - style:block; -} - -.action:hover { - color: #fff; - text-decoration: none; - background-color: #7d95b5; -} - -.actionform { - display: inline; -} - -.actionbutton { - height: 16px; - width: 40px; - font-family: sans-serif; - font-size: 10px; - border: 1px outset; - background-color: #fff; - margin-bottom: 0px; -} - -.actionbutton:hover { - color: #fff; - background-color: #7d95b5; -} - -.actions { - white-space: nowrap; -} - -.field { - display:inline; -} - -#login { width: 400px; } - -#login input[type=text] { width: 150px; } -#login input[type=password] { width: 150px; } - -.pager { - font: 11px Arial, Helvetica, sans-serif; - text-align: center; - border: solid 1px #e2e2e2; - border-left: 0; - border-right: 0; - padding-top: 10px; - padding-bottom: 10px; - margin: 0px; - background-color: #f3f6f8; -} - -.pager a { - padding: 2px 6px; - border: solid 1px #ddd; - background: #fff; - text-decoration: none; -} - -.pager a:visited { - padding: 2px 6px; - border: solid 1px #ddd; - background: #fff; - text-decoration: none; -} - -.pager .current-page { - padding: 2px 6px; - font-weight: bold; - vertical-align: top; -} - -.pager a:hover { - color: #fff; - background: #7d95b5; - border-color: #036; - text-decoration: none; -} - diff --git a/templates/factory/navbar b/templates/factory/navbar deleted file mode 100644 index 0c8b168..0000000 --- a/templates/factory/navbar +++ /dev/null @@ -1,22 +0,0 @@ -[%# - -=head1 navbar - -This is a navigation bar to go across the page. (Or down the side, or -whatetver you want to do with it.) It displays all the tables which are -accessible, with a link to the list page for each one. - -#%] -[% PROCESS macros %] - diff --git a/templates/factory/pager b/templates/factory/pager deleted file mode 100644 index 78c89fd..0000000 --- a/templates/factory/pager +++ /dev/null @@ -1,48 +0,0 @@ -[%# - -=head1 pager - -This controls the pager display at the bottom (by default) of the list -and search views. It expects a C template argument which responds -to the L interface. - -#%] -[% -IF pager AND pager.first_page != pager.last_page; -%] -

Pages: -[% - UNLESS pager_action; - SET pager_action = request.action; - END; - - SET begin_page = pager.current_page - 10; - IF begin_page < 1; - SET begin_page = pager.first_page; - END; - SET end_page = pager.current_page + 10; - IF pager.last_page < end_page; - SET end_page = pager.last_page; - END; - FOREACH num = [begin_page .. end_page]; - IF num == pager.current_page; - ""; num; ""; - ELSE; - SET label = num; - SET args = "?page=" _ num; - SET args = args _ "&order=" _ request.params.order - IF request.params.order; - SET args = args _ "&o2=desc" - IF request.params.o2 == "desc"; - FOR col = classmetadata.columns.list; - IF request.params.$col; - SET args = args _ "&" _ col _ "=" _ request.params.$col; - SET action = "search"; - END; - END; - link(classmetadata.table, pager_action, args, label); - END; - END; -%] -

-[% END %] diff --git a/templates/factory/search_form b/templates/factory/search_form deleted file mode 100644 index 1f07194..0000000 --- a/templates/factory/search_form +++ /dev/null @@ -1,22 +0,0 @@ - diff --git a/templates/factory/title b/templates/factory/title deleted file mode 100644 index 401f0a3..0000000 --- a/templates/factory/title +++ /dev/null @@ -1 +0,0 @@ - [% config.application_name %] diff --git a/templates/factory/view b/templates/factory/view deleted file mode 100644 index 328678c..0000000 --- a/templates/factory/view +++ /dev/null @@ -1,34 +0,0 @@ -[%# - -=for doc - -The C template takes some objects (usually just one) from -C and displays the object's properties in a table. - -=cut - -#%] -[% PROCESS macros %] -[% INCLUDE header %] -[% FOR item = objects %] -[% view_item(item); %] -[%# - -=for doc - -The C template also displays a list of other objects related to the first -one via C style relationships; this is done by calling the -C method - see L - to return -a list of has-many accessors. Next it calls each of those accessors, and -displays the results in a table. - -#%] -
Back to listing -[% view_related(item); %] - -[% - button(item, "edit"); - button(item, "delete"); -%] -[% END; %] -[% INCLUDE footer %]