widelands-dev team mailing list archive
-
widelands-dev team
-
Mailing list archive
-
Message #00835
[Merge] lp:~widelands-dev/widelands-website/new-design into lp:widelands-website
Nasenbaer has proposed merging lp:~widelands-dev/widelands-website/new-design into lp:widelands-website.
Requested reviews:
Widelands Developers (widelands-dev)
Related bugs:
Bug #415959 in Widelands Website: "Unable to upload a widelands map"
https://bugs.launchpad.net/widelands-website/+bug/415959
Bug #590151 in Widelands Website: "screenshot application does only scale on width"
https://bugs.launchpad.net/widelands-website/+bug/590151
Bug #656567 in Widelands Website: "map upload link available if not logged in and no error message"
https://bugs.launchpad.net/widelands-website/+bug/656567
Bug #672291 in Widelands Website: "ware list: link to network pdf would be nice"
https://bugs.launchpad.net/widelands-website/+bug/672291
Bug #673112 in Widelands Website: "forum preview uses markdown although bbcode is selected"
https://bugs.launchpad.net/widelands-website/+bug/673112
Bug #674584 in Widelands Website: "Screenshot dialog opens in the same place as when first opened"
https://bugs.launchpad.net/widelands-website/+bug/674584
Bug #734725 in Widelands Website: "Websites online_help does not pick up changes in graphics"
https://bugs.launchpad.net/widelands-website/+bug/734725
Bug #736975 in Widelands Website: "The css-files contain invalid css"
https://bugs.launchpad.net/widelands-website/+bug/736975
Bug #965157 in Widelands Website: "No error when sending message to non-existing user"
https://bugs.launchpad.net/widelands-website/+bug/965157
For more details, see:
https://code.launchpad.net/~widelands-dev/widelands-website/new-design/+merge/113444
I guess this is kind of the wrong way, but I really wonder, what is missing for a backmerge and an update of the Widelands.org site.
I really liked the new design and the enhancements and I just can't wait to finally see it in full action.
--
https://code.launchpad.net/~widelands-dev/widelands-website/new-design/+merge/113444
Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands-website/new-design into lp:widelands-website.
=== modified file 'README.txt'
--- README.txt 2012-01-21 14:06:29 +0000
+++ README.txt 2012-07-04 18:20:26 +0000
@@ -101,6 +101,21 @@
See also http://docs.djangoproject.com/en/dev/ref/django-admin/#runserver-port-or-address-port
for further details.
+Setting up the online help / encyclopedia
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+You will need graphviz to generate the graphs for the online help. On Ubunutu run:
+
+ $ sudo apt-get install graphviz
+
+To generate the online help database switch to your local environment and run:
+
+ $ ./manage.py update_help
+
+After that you can create the overview pdf files with
+
+ $ ./manage.py update_help_pdf
+
Contact
=======
=== modified file 'media/css/base.css'
--- media/css/base.css 2011-11-19 17:37:52 +0000
+++ media/css/base.css 2012-07-04 18:20:26 +0000
@@ -1,368 +1,363 @@
-/* HEADER */
-div#headerbanner {
- background: url(../img/headback.jpg);
- background-repeat: repeat-x;
- color: #FFFFFF;
- text-align: center;
- height:110px;
- border-bottom:2px solid #090909;
-}
-
-/***************************************************************/
-/* SIDECOLUMNS */
-/***************************************************************/
-#leftcolumn, #rightcolumn {
- background-color: #555555;
- background-image: url('../img/Menubackground.png');
- border-left: 1px solid #151515;
- border-right: 1px solid #090909;
- border-bottom: 1px solid #090909;
- padding-top: 4px; /* A small space */
- vertical-align: top;
-
-}
-/* The content is capsuled in divs, because
- * Firefox is ignoring min-width arguments
- * for tables
- */
-#leftcontent {
- min-width: 175px;
-}
-#rightcontent {
- min-width: 185px;
-}
-
-
-/*
-* Mainmenu
-*/
-#mainmenu {
- margin: 0px;
- padding: 0px;
-}
-#mainmenu li {
- list-style-image: url('../img/1.gif');
- list-style-position: inside;
- font-weight: bold;
- padding: 4px;
-}
-#mainmenu .sub {
- padding-left: 20px;
- color: red;
- font-weight: normal;
-}
-
-
-/******************/
-/* CONTENT COLUMN */
-/******************/
-#content {
- text-align: left;
- vertical-align: top;
- padding: 8px;
- padding-top: 0px;
- background-color: #000000;
- background: url(../img/background.png);
-
- font-size: 12px;
- color: #D0DFFF;
- width: 100%;
-}
-
-/****************/
-/* BOTTOM TABLE */
-/****************/
-table#table_bottom {
- background-color: #333333;
- background: url(../img/background.png);
-
- width: 100%;
-}
-td#table_bottomleft {
- background: url(../img/table_bottomleft.png);
- background-repeat: no-repeat;
- background-position: left;
- height:8px;
- width:8px;
-}
-
-td#table_bottomright {
- background: url(../img/table_bottomright.png);
- background-repeat: no-repeat;
- background-position: right;
- height:8px;
- width:8px;
-}
-
-/**********/
-/* FOOTER */
-/**********/
-#footer {
- width: 100%;
- height: 8px;
- background: url(../img/background.png);
-}
-
-/*
- * Menu Blocks
- */
-h3.box_title {
- color: #D0DFFF;
- font-weight: bold;
- font-size: 12px;
- padding-left: 12px;
- background-image: url('../img/Navbar.png');
- background-repeat: repeat-x;
- border-left: 0px solid #999999;
- border-right: 0px solid #999999;
- border-bottom: 0px solid #999999;
- padding-top: 2px;
- padding-bottom: 6px;
- margin: 0px;
-}
-
-div.box_content {
- font-size:12px;
- line-height: 120%;
- border-left: 0px solid #999999;
- border-right: 0px solid #999999;
- padding: 6px;
- padding-top: 0px;
- padding-bottom: 20px;
- background-color: #555555;
- background-image: url('../img/Menubackground.png');
-}
-
-div.box_content .sub_content {
- margin-bottom: 15px;
-}
-
-.box_content p {
- margin: 0px;
- padding: 0px;
- padding-bottom: 4px;
-}
-
-.box_content h4 {
- margin: 0px;
- padding: 0px;
- padding-bottom: 4px;
-}
-
-.block_center {
- text-align: center;
-}
-
-/***************************************************************/
-/* GENERAL STYLE ELEMENTS */
-/***************************************************************/
+/* Common */
+
body {
- color: #D0DFFF;
- font-family: Verdana, Arial, Helvetica, sans-serif;
- font-size: 12px;
- background-color: #000000;
- margin: 0;
- padding: 0;
+ background-color: #e9c78a;
+ background-image: url("../img/parchment.png");
+ font-family: sans-serif;
+ font-size: 14px;
+ line-height: 20px;
+ color: #ffffee;
+ text-shadow: #000000 1px 1px 0px;
}
-img {
- border: 0px;
+a img {
+ border: none;
}
a {
- color: #D0DFFF;
- text-decoration: none;
- font-weight: bold;
- background-color: transparent;
-}
-a.external:before {
- padding-right: 2px;
- /* Must be an absolute reference, otherwise some browsers give errors */
- content: url(/wlmedia/img/external_link.gif);
-}
-a.missing {
- color: rgb(255, 85, 0);
-}
-
+ text-decoration: none;
+ color: #ffffee;
+ font-weight: bold;
+}
a:hover {
- color: #A0AAFF;
- text-decoration: underline;
-}
-
-/*
- * Default table layout
- */
-th {
- font-weight: bold;
- background-position: left;
- text-align: left;
- padding-left: 4px;
- background-image: url('../img/Navbar.png');
- background-repeat: repeat-x;
- height: 20px;
-}
-
-/*
- * Odd Even Tags (mainly for tables)
- */
+ color: #181;
+}
+
+a.invertedColor {
+ color: #181;
+}
+
+a.invertedColor:hover {
+ color: #ffffee;
+}
+
+form {
+ display: inline;
+}
+
+input, button, textarea {
+ margin-bottom: 5px;
+ padding: 2px 10px;
+ border: 1px solid black;
+ border-radius: 10px;
+ background: none;
+ background-image: url("../img/black50.png");
+ outline: none;
+ color: #ffffff;
+ text-shadow: #000000 1px 1px 0px;
+ vertical-align: middle;
+ cursor: pointer;
+ font-family: inherit;
+ font-size: 12px;
+ font-weight: bold;
+}
+
+textarea {
+ font-weight: normal;
+ font-size: 14px;
+}
+
+input:hover, button:hover, textarea:hover {
+ background-image: url("../img/black20.png");
+}
+
+input.radio {
+ background: none;
+ border: none;
+ vertical-align: middle;
+}
+
+h1, h2, h3, h4, h5, h6 {
+ color: #181;
+ margin-top: 0px;
+ font-weight: normal;
+}
+
+svg {
+ text-shadow: none;
+}
+
+td {
+ vertical-align: top;
+ line-height: 20px;
+}
+
+.posLeft {
+ float: left
+}
+
+.posRight {
+ float: right;
+}
+
+.clear {
+ clear: both;
+}
+
+.center {
+ text-align: center;
+}
+
+.middle {
+ vertical-align: middle;
+}
+
+.grey {
+ color: #998;
+}
+
+.green {
+ color: #181;
+}
+
+.green a {
+ color: #181;
+}
+
+.green a:hover {
+ color: #ffffee;
+}
+.small {
+ font-size: 12px;
+}
+
.even {
- background-color: #444444;
- background: url(../img/background-444.png);
- padding: 5px;
+ background-image: url("../img/black20.png");
}
.odd {
- background-color: #4f4f4f;
- background: url(../img/background-4F4F4F.png);
- padding: 5px;
-}
-
-/*
- * Error Handling
- */
+ background-image: url("../img/black50.png");
+}
+
+.placeholder {
+ color: #aaa !important;
+}
+
.errormessage {
- color: #ff0000;
- font-size: 13px;
-}
-
-/*
- * Search Box
- */
-#id_search {
- width: 150px;
-}
-
-/*
- * Events
- */
-.event {
- text-align: center;
- width: 100%;
- padding-bottom: 5px;
-}
-
-.event .date {
- font-size: 80%
-}
-
-
-/*
- * Box Item Model
- */
-.box_item_model {
-
-}
-
-.border {
- border: 1px solid rgb(9, 9, 9);
-}
-
-.full_site {
- width: 100%;
-}
-
-.fixed_site {
- width: 540px;
-}
-
-.box_item_model img.news {
- float: right;
- padding: 0px;
- width: 20px;
-}
-
-.box_item_model .border_top {
- border-top: 1px solid rgb(9, 9, 9);
-}
-
-.box_item_model h3.title {
- font-weight: bold;
- font-size: 12px;
- padding-left: 12px;
- background-image: url('../img/Navbar.png');
- background-repeat: repeat-x;
- border-left: 0px solid #999999;
- border-right: 0px solid #999999;
- border-top: 0px solid #999999;
- padding-top: 2px;
- padding-bottom: 0px;
- margin: 0px;
-}
-
-.box_item_model .content {
- line-height: 120%;
- border: 0px;
- padding: 2px;
- padding-top: 5px;
- padding-left: 15px;
- background-color: #3F3F3F;
- background: url('../img/background-3F3F3F.png');
-}
-
-.box_item_model .info_line {
- text-align: right;
- padding: 3px;
- margin: 0px;
- background-color: #222222;
- background: url('../img/background-222.png');
-}
-
-.box_item_model .text {
- vertical-align: baseline;
- margin-top: 5px;
- margin-bottom: 5px;
- margin: 0px;
- line-height: 130%;
-}
-
-.box_item_model .text:first-letter {
- color: #7070FF;
- font-size: 180%;
- font-family: Cretino, "Bitstream Vera Serif", serif;
- font-weight: bold;
-}
-
-.box_item_model .show_right {
- text-align: right;
- vertical-align: top;
-}
-
-.box_item_model .show_left {
- text-align: left;
- vertical-align: top;
-}
-
-.box_item_model .show_center {
- text-align: center;
- vertical-align: top;
-}
-
-.show_center {
- text-align: center;
- vertical-align: top;
-}
-.button_send {
- padding:0;
- margin:0;
- border:none;
- color: #222222;
- background: url(../forum/img/en/send.png) no-repeat center;
- background-repeat: no-repeat;
- font-size:12px;
- width:100px;
- height: 25px;
- cursor: pointer;
-}
-.button_preview {
- padding:0;
- margin:0;
- border:none;
- color: #222222;
- background: url(../forum/img/en/preview.png) no-repeat center;
- background-repeat: no-repeat;
- font-size:12px;
- width:100px;
- height: 25px;
- cursor: pointer;
+ color: #ff0000;
+}
+
+.errormessage ul {
+ margin: 0px;
+}
+
+.noshadow {
+ text-shadow: none;
+}
+
+.italic {
+ font-style: italic;
+}
+
+/* Base */
+
+div#wrapper {
+ min-width: 980px;
+ margin: 0px 20px;
+}
+
+div#header {
+
+}
+
+div #main {
+ min-height: 500px;
+}
+
+div#content {
+ margin-right: 240px;
+}
+
+div#footer {
+ background-color: #695536;
+ background-image: url("../img/wood.png");
+ padding: 15px;
+ margin-top: 20px;
+ text-align: center;
+ box-shadow: black 2px 2px 2px 2px;
+ border: 1px solid #222222;
+ -moz-border-radius-bottomleft: 15px;
+ -moz-border-radius-bottomright: 15px;
+ -khtml-border-radius-bottomleft: 15px;
+ -khtml-border-radius-bottomright: 15px;
+ -webkit-border-bottom-left-radius: 15px;
+ -webkit-border-bottom-right-radius: 15px;
+ border-bottom-left-radius: 15px;
+ border-bottom-right-radius: 15px;
+}
+
+/* Header */
+
+div#header img{
+ position: relative;
+ z-index: 10;
+}
+
+div.loginBox {
+ width: 320px;
+ height: 90px;
+ border: 1px solid black;
+ background-color: #332f29;
+ background-image: url("../img/but1.png");
+ -moz-border-radius: 15px;
+ -webkit-border-radius: 15px;
+ -khtml-border-radius: 15px;
+ border-radius: 15px;
+ position: relative;
+ z-index: 0;
+ padding: 15px;
+ box-shadow: black 2px 2px 2px 2px;
+}
+
+div.loginBox div.right{
+ width: 120px;
+}
+
+div.loginBox ul {
+ margin: 0px;
+ padding: 0px;
+ list-style-type: none;
+ line-height: 18px;
+}
+
+div.loginBox h4 {
+ margin-bottom: 5px;
+}
+
+div.loginBox input {
+ width: 100px;
+}
+
+div.loginBox button {
+ margin: 0px;
+ padding: 0px;
+ border: 1px solid black;
+ width: 60px;
+ height: 20px;
+ border-radius: 10px;
+ background: none;
+ background-image: url("../img/black50.png");
+ outline: none;
+ color: #ffffff;
+}
+
+/* Right Column */
+
+div#rightColumn {
+ width: 220px;
+}
+
+div.columnModule {
+ width: 220px;
+}
+
+div.columnModule h3 {
+ margin-bottom: 10px;
+}
+
+div.columnModuleBox {
+ width: 220px;
+ margin-bottom: 20px;
+ background-color: #695536;
+ background-image: url("../img/wood.png");
+ border: 1px solid black;
+ box-shadow: black 2px 2px 2px 2px;
+}
+
+div.columnModuleBox h4 {
+ color: #ffffee;
+ padding: 8px;
+ padding-bottom: 0px;
+ margin: 0px;
+}
+
+div.columnModuleBox ul.poll {
+ padding: 8px;
+ list-style-type: disc;
+ border: none;
+}
+
+div.columnModuleBox ul.poll li {
+ padding: 0px;
+ border: none;
+ height: 20px;
+}
+
+div.columnModuleBox p {
+ margin: 0px;
+ padding: 8px;
+}
+
+div.columnModuleBox ul {
+ width: 220px;
+ padding: 0px;
+ margin: 0px;
+ list-style-type: none;
+}
+
+div.columnModuleBox ul.player {
+ padding: 4px;
+ list-style-type: disc;
+}
+
+div.columnModuleBox ul.player li{
+ padding: 4px;
+ border: none;
+}
+
+div.columnModuleBox ul li {
+ display: block;
+ padding: 8px;
+ border-top: 1px solid black;
+ font-size: 12px;
+}
+
+div.columnModuleBox ul li:first-child {
+ border-top: none;
+}
+
+input.donate {
+ border: none;
+ background: none;
+}
+
+/* News Posts */
+
+img.landing {
+ margin-left: 20px;
+ margin-bottom: 15px;
+}
+
+div.blogEntry {
+ background-color: #332f29;
+ background-image: url("../img/but1.png");
+ -moz-border-radius: 15px;
+ -webkit-border-radius: 15px;
+ -khtml-border-radius: 15px;
+ border-radius: 15px;
+ border: 1px solid black;
+ padding: 15px;
+ padding-bottom: 30px;
+ margin-bottom: 20px;
+ box-shadow: black 2px 2px 2px 2px;
+}
+
+div.blogEntry img.title {
+ width: 150px;
+ margin-right: 20px;
+ margin-bottom: 10px;
+}
+
+div.blogEntry p {
+ text-align: justify;
+ margin: 0px;
+ margin-bottom: 10px;
+}
+
+div.blogEntry hr {
+ height: 1px;
+ background: #998;
+ border: none;
+ clear: left;
}
=== added file 'media/css/base_ielt8.css'
--- media/css/base_ielt8.css 1970-01-01 00:00:00 +0000
+++ media/css/base_ielt8.css 2012-07-04 18:20:26 +0000
@@ -0,0 +1,3 @@
+ul.menu li ul {
+ left: -41px;
+}
=== added file 'media/css/base_ielt9.css'
--- media/css/base_ielt9.css 1970-01-01 00:00:00 +0000
+++ media/css/base_ielt9.css 2012-07-04 18:20:26 +0000
@@ -0,0 +1,9 @@
+ul.menu li a:hover {
+ background-image: url("../img/black50.png");
+}
+
+div.loginBox button {
+ margin: 1px 0px 5px 5px;
+ vertical-align: top;
+ height: 22px;
+}
\ No newline at end of file
=== modified file 'media/css/comments.css'
--- media/css/comments.css 2010-06-12 14:58:31 +0000
+++ media/css/comments.css 2012-07-04 18:20:26 +0000
@@ -2,28 +2,33 @@
* Comment
*/
.comment {
- margin: 0px;
- padding-bottom: 2px;
- /*
- * border: 1px solid rgb(20%,20%,20%);
- */
- border-top: 0px;
- width: 100%;
-}
-.comment p {
- margin: 0px;
- margin-bottom: 4px;
-}
-.comment .at {
- text-align: right;
- font-size: 90%;
-}
+ border: 1px solid black;
+ padding: 8px;
+ margin-bottom: 5px;
+}
+
+.comment table {
+ border-collapse: collapse;
+ width: 100%;
+}
+
.comment .author {
- font-size: 110%;
- font-style: italic;
- vertical-align: top;
- margin-bottom: 5px;
-}
-.text textarea {
- width: 100%;
+ padding-right: 8px;
+ text-align: center;
+ border-right: 1px solid #998;
+ height: 100%;
+}
+
+.comment .text {
+ padding-left: 8px;
+ width: 100%;
+}
+
+textarea {
+ width: 97%;
+}
+
+.comment .reply_link {
+ vertical-align: bottom;
+ text-align: right;
}
=== added file 'media/css/documentation.css'
--- media/css/documentation.css 1970-01-01 00:00:00 +0000
+++ media/css/documentation.css 2012-07-04 18:20:26 +0000
@@ -0,0 +1,85 @@
+.sphinx a.headerlink {
+ padding: 0 4px 0 4px;
+ visibility: hidden;
+}
+
+.sphinx *:hover > a.headerlink {
+ visibility: visible;
+}
+
+/*******************************/
+/* Pygment Syntax Highlighting */
+/*******************************/
+pre {
+ margin: 0px;
+}
+.highlight {
+/* text-shadow: none;
+/* color: #000000;*/
+ padding: 4px;
+ border: 1px solid black;
+ background-image: url("../img/black20.png");
+ margin: 4px 0px;
+}
+.highlight .hll { background-color: #ffffcc }
+/*.highlight { background: #f0f0f0; }*/
+.highlight .c { color: #60a0b0; font-style: italic } /* Comment */
+.highlight .err { border: 1px solid #FF0000 } /* Error */
+.highlight .k { color: #007020; font-weight: bold } /* Keyword */
+.highlight .o { color: #998 } /* Operator */
+.highlight .cm { color: #60a0b0; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #007020 } /* Comment.Preproc */
+.highlight .c1 { color: #60a0b0; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #60a0b0; background-color: #fff0f0 } /* Comment.Special */
+.highlight .gd { color: #A00000 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #FF0000 } /* Generic.Error */
+.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #00A000 } /* Generic.Inserted */
+.highlight .go { color: #808080 } /* Generic.Output */
+.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
+.highlight .gt { color: #0040D0 } /* Generic.Traceback */
+.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */
+.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { color: #007020 } /* Keyword.Pseudo */
+.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #902000 } /* Keyword.Type */
+.highlight .m { color: #40a070 } /* Literal.Number */
+.highlight .s { color: #4070a0 } /* Literal.String */
+.highlight .na { color: #4070a0 } /* Name.Attribute */
+.highlight .nb { color: #007020 } /* Name.Builtin */
+.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */
+.highlight .no { color: #60add5 } /* Name.Constant */
+.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */
+.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */
+.highlight .ne { color: #007020 } /* Name.Exception */
+.highlight .nf { color: #aaaa00 } /* Name.Function */
+.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */
+.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */
+.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */
+.highlight .nv { color: #bb60d5 } /* Name.Variable */
+.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mf { color: #40a070 } /* Literal.Number.Float */
+.highlight .mh { color: #40a070 } /* Literal.Number.Hex */
+.highlight .mi { color: #40a070 } /* Literal.Number.Integer */
+.highlight .mo { color: #40a070 } /* Literal.Number.Oct */
+.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */
+.highlight .sc { color: #4070a0 } /* Literal.String.Char */
+.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */
+.highlight .s2 { color: #4070a0 } /* Literal.String.Double */
+.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */
+.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */
+.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */
+.highlight .sx { color: #c65d09 } /* Literal.String.Other */
+.highlight .sr { color: #235388 } /* Literal.String.Regex */
+.highlight .s1 { color: #4070a0 } /* Literal.String.Single */
+.highlight .ss { color: #517918 } /* Literal.String.Symbol */
+.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */
+.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */
+.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */
+.highlight .il { color: #40a070 } /* Literal.Number.Integer.Long */
\ No newline at end of file
=== modified file 'media/css/forum.css'
--- media/css/forum.css 2011-11-13 15:47:39 +0000
+++ media/css/forum.css 2012-07-04 18:20:26 +0000
@@ -1,108 +1,83 @@
-
-.index_category, .index_forum {
- margin-bottom: 20px;
- border-left: 0px;
- border-right: 0px;
-}
-
-.list_overview {
- display: block;
- font-weight: bold;
- padding: 0px;
- margin-top: 0px;
- margin-bottom: 0px;
- background: url('../img/background-444.png');
-}
-
-.title {
- display: block;
- font-weight: bold;
- padding: 5px;
- margin-top: 5px;
- margin-bottom: 1px;
- background: url('../img/background-444.png');
-}
-
-.author {
- text-align: center;
-}
-
-/*
- * POSTS
- */
-.posts {
- padding: 0px;
- margin: 0px;
-}
-.posts th {
- margin-top: 0px;
- margin-bottom: 0px;
- height: auto;
-}
-
-/*
- * Post
- */
-.post {
- background-color: rgb(20%,20%,20%);
- margin: 0px;
- padding-bottom: 2px;
-}
+.forum {
+ border: none;
+ border-collapse: collapse;
+ width: 100%;
+}
+
+.forum tr {
+ border: 1px solid black;
+}
+
+.forum thead tr {
+ border: none;
+}
+
+.forum td {
+ vertical-align: middle;
+ padding: 8px;
+}
+
+.forumIcon {
+ width: 50px;
+}
+
+.forumTitle {
+ width: 40%;
+}
+
+.forumCount {
+ width: 120px;
+}
+
+.lastPost {
+ text-align: right;
+}
+
+.forum .author {
+ width: 140px;
+ text-align: center;
+ border-right: 1px solid black;
+ vertical-align: top;
+}
+
+.forum .post {
+ vertical-align: top;
+}
+
+.authorStats {
+ text-align: left;
+ font-size: 10px;
+ line-height: 12px;
+}
+
+tr.spacer {
+ height: 10px;
+ border: none;
+}
+
.post p {
- margin: 8px 0px 8px;
- padding: 0px;
+ margin: 0px;
+ margin-bottom: 8px;
+ padding: 0px;
}
-.post .at {
- text-align: right;
- font-size: 90%;
-}
-.post .userinfo {
- font-size: 90%;
- vertical-align: top;
-}
-.post .odd {
- margin: 0px;
- padding: 0px;
-}
-.post table {
- border-collapse: collapse;
-}
-.post td {
- border: 1px solid rgb(20%,20%,20%);
-}
.post blockquote {
- background: rgb(51, 51, 51);
- border: 0px inset rgb(0, 0, 128);
- font-family: 'Courier New', Courier, monospace;
- padding: 0px 6px 6px 6px;
- margin: 2px;
- margin-left: 10px;
-}
-.post .tools {
- vertical-align: bottom;
-}
-.first_post {
- padding-bottom: 20px;
- border: 1px solid rgb(100,100,100);
- margin-bottom: 20px;
-}
-.post .avatar {
- width: 100%;
- padding: 2px;
-}
-.post .top {
- vertical-align: top;
-}
-.post .top .signature .line {
- color: #D0DFFF;
- font-weight: bolder;
-}
-
-
-/*
- * Compose
- */
+ background-image: url("../forum/img/quote.png");
+ background-repeat: no-repeat;
+ background-position: 4px 4px;
+ border: 1px solid black;
+ padding: 4px;
+ padding-left: 28px;
+ margin: 4px;
+}
+
+.preview-box .content {
+ background-image: url("../img/black50.png");
+ border: 1px solid black;
+ padding: 4px;
+ width: 98%;
+}
+
.post-form #id_subject {
width: 40%;
}
@@ -111,14 +86,16 @@
}
.post-form #id_body {
width: 98%;
+ max-width: 98%;
height: 150px;
}
-.post .bold {
- font-weight: bold;
-}
-.post .underline {
- text-decoration: underline;
-}
-.post .italic {
- font-style: italic;
+
+a.permalink {
+ width: 16px;
+ height: 20px;
+ background-image: url("../forum/img/permalink.png");
+}
+
+a.permalink:hover {
+ background-image: url("../forum/img/permalink_hover.png");
}
=== added file 'media/css/help.css'
--- media/css/help.css 1970-01-01 00:00:00 +0000
+++ media/css/help.css 2012-07-04 18:20:26 +0000
@@ -0,0 +1,25 @@
+table.help {
+ width: 100%;
+ border-collapse: collapse;
+ margin-bottom: 20px;
+}
+
+table.help tr {
+
+}
+
+table.help th {
+ padding: 4px;
+ font-weight: normal;
+ font-size: 12px;
+ text-align: left;
+}
+
+table.help td {
+ padding: 4px;
+ border: 1px solid black;
+}
+
+img.icon {
+ margin: 0px 10px 10px 0px;
+}
\ No newline at end of file
=== modified file 'media/css/maps.css'
--- media/css/maps.css 2009-04-11 15:21:15 +0000
+++ media/css/maps.css 2012-07-04 18:20:26 +0000
@@ -1,26 +1,27 @@
-
-#map_list {
- padding: 5px;
-}
-
-h1 {
- display: block;
- font-weight: bold;
- padding: 5px;
- margin-top: 5px;
- margin-bottom: 1px;
- background: url('../img/background-444.png');
-}
-
-.map_details .author {
- display: block;
-}
-.map_details .uploader {
- display: block;
- margin-bottom: 10px;
-}
-
-/* Modified css for jqModal */
-div.jqmDialog {
- width: 480px;
-}
+img.minimap {
+ max-height: 250px;
+}
+
+img.map {
+ margin: 0px 10px 10px 0px;
+}
+
+.forum table td {
+ padding: 2px;
+}
+
+.forum td {
+ vertical-align: top;
+}
+
+.forum .spacer {
+ width: 15px;
+}
+
+p {
+ vertical-align: top;
+}
+
+textarea {
+ width: 97%;
+}
\ No newline at end of file
=== modified file 'media/css/messages.css'
--- media/css/messages.css 2011-04-10 18:50:34 +0000
+++ media/css/messages.css 2012-07-04 18:20:26 +0000
@@ -1,74 +1,36 @@
-
-
-h1 {
- display: block;
- font-weight: bold;
- padding: 5px;
- margin-top: 5px;
- margin-bottom: 1px;
- background: url('../img/background-444.png');
-}
-
-/*
- * MESSAGES
- */
-.messages {
- margin-bottom: 20px;
- width: 100%;
-}
-.messages {
- padding: 0px;
- margin: 0px;
-}
.messages th {
- margin-top: 4px;
- margin-bottom: 2px;
-}
-
-/*
- * Post
- */
-.message {
- background-color: rgb(20%,20%,20%);
- margin: 0px;
- padding-bottom: 2px;
- border-top: 0px;
-}
-.message .odd {
- margin: 0px;
- padding: 0px;
-}
-.message_display {
- background: url('../img/background-3f3f3f.png');
- padding-bottom: 1px;
-}
-.message_display .content {
- background: url('../img/background-222.png');
- font-family: 'Courier New', Courier, monospace;
- padding: 10px;
- margin: 10px;
-}
-
-/*
- * Compose
- */
-#id_recipient {
- width: 40%;
-}
-#id_subject {
- width: 40%;
-}
-#id_body {
- width: 98%;
- height: 200px;
-}
-
-/*
- * MessageBox style
- */
-
-.message_image img {
- float: right;
- padding: 0px;
- margin-left: 20px;
+ border: 1px solid black;
+ font-size: 12px;
+ text-align: left;
+ font-weight: normal;
+ background-image: url("../img/black50.png");
+ padding: 4px;
+}
+
+.messages {
+ width: 100%;
+ border-collapse: collapse;
+}
+
+.messages td {
+ padding: 4px;
+}
+
+th.msg_menu {
+ width: 130px;
+ vertical-align: top;
+}
+
+td.msg_box {
+ padding-top: 0px;
+}
+
+.messages ul {
+ padding: 0px;
+ margin: 0px;
+ list-style-type: none;
+}
+
+.messages textarea {
+ width: 100%;
}
=== modified file 'media/css/navigation.css'
--- media/css/navigation.css 2011-07-03 18:14:07 +0000
+++ media/css/navigation.css 2012-07-04 18:20:26 +0000
@@ -1,60 +1,111 @@
-div.dropdown {
- width: auto;
- min-width: 920px;
- height: 20px;
+/* Top Menu */
+
+div.searchBox {
+ height: 20px;
+ padding: 15px;
+}
+
+div.searchBoxInner {
+ border: 1px solid black;
+ width: 150px;
+ padding: 0px 10px 0px 10px;
+ height: 20px;
+ border-radius: 10px;
+ -moz-border-radius: 10px;
+ -webkit-border-radius: 10px;
+ -khtml-border-radius: 10px;
+ background-color: #332f29;
+ background-image: url("../img/but1.png");
+}
+
+input.searchField {
+ margin: 0px;
+ border: none;
+ background: none;
+ width: 150px;
+ outline: none;
+ color: #ffffff;
+ padding: 0px;
+}
+
+div#topmenu {
+ position: relative;
+ z-index: 5;
+ top: -30px;
+ clear: both;
+ height: 50px;
+ background-color: #695536;
+ background-image: url("../img/wood.png");
+ border: 1px solid #222222;
+ box-shadow: black 2px 2px 2px 2px;
+}
+
+ul.menu {
+ margin: 0px;
+ padding: 0px;
+}
+
+ul.menu li {
+ list-style-type: none;
+ float: left;
+ position: relative;
+}
+
+ul.menu li a {
+ display: block;
+ width: 120px;
+ height: 50px;
+ line-height: 50px;
+ float: left;
+ border-right: 1px solid #222222;
+ text-align: center;
+ vertical-align: middle;
+ color: #ffffff;
+ text-transform: uppercase;
+ font-weight: normal;
+}
+
+ul.menu li a:hover {
+ box-shadow: black 0px 0px 10px 0px inset;
+}
+
+ul.menu li a.active {
+ box-shadow: black 0px 0px 10px 0px inset;
+ background-image: url("../img/black50.png");
+}
+
+ul.menu li ul {
+ display: none;
+ position: absolute;
+ top: 50px;
+ left: -1px;
+ background-color: #695536;
+ background-image: url("../img/wood.png");
+ padding: 0px;
+ border: 1px solid #222222;
+ box-shadow: black 2px 2px 2px 2px;
+}
+
+ul.menu li:hover ul {
+ display: block;
+}
+
+ul.menu li ul li {
+ clear: both;
+ border-top: 1px solid #222222;
+}
+
+ul.menu li ul li a {
+ display: block;
+ width: 250px;
+ height: 20px;
+ line-height: 20px;
+ padding: 4px;
text-align: left;
- position:relative;
- z-index:2;
-}
-
-div.dropdown ul {
- padding: 0;
- margin: 0;
- background-image: url(../img/Navbar.png);
- background-repeat: repeat-x;
-}
-
-div.dropdown li{
- list-style: none;
- position: relative;
- white-space: nowrap;
-}
-
-div.dropdown a {
- display: block;
- text-decoration: none;
- padding: 3px 20px;
-}
-
-div.dropdown > ul > li{
- display: inline-block;
-}
-
-div.dropdown li ul {
-/* Positions and hides submenus. */
- position: absolute;
- top: 19px;
- visibility: hidden;
- border: 1px solid rgb(12,12,12);
- background-image: url(../img/background-4A4A4A.png);
- background-repeat: repeat;
-}
-
-div.dropdown li li {
- border-bottom: 1px solid rgb(54,54,54);
-}
-
-div.dropdown li:hover > ul {
- visibility: visible;
-}
-
-div.arrow-down {
- position: relative;
- top: -12px;
- left: +20px;
- width: 0;
- height: 0;
- border-left: 5px solid transparent;
- border-right: 5px solid transparent;
- border-top: 5px solid #D0DFFF;
+ font-size: 12px;
+ border: none;
+}
+
+ul.menu li ul li:first-child {
+ border: none;
}
=== modified file 'media/css/news.css'
--- media/css/news.css 2010-10-30 18:33:48 +0000
+++ media/css/news.css 2012-07-04 18:20:26 +0000
@@ -1,68 +0,0 @@
-/**************************/
-/* General Style elements */
-/**************************/
-.text h1 {
- font-size: 2.5em;
- margin: 10px 0px;
-}
-.text h2 {
- font-size: 2em;
- margin: 25px 0px 10px;
- line-height: 70%;
-}
-.text h3 {
- font-size: 1.4em;
- margin: 5px 0px;
-}
-.text h4 {
- font-size: 1.30em;
- margin: 5px 0px;
- /*
- * text-decoration: underline;
- * */
-}
-.text h5 {
- font-size: 1.2em;
- margin: 5px 0px;
- /*
- * text-decoration: underline;
- * font-style: italic;
- * */
-}
-.text h6 {
- font-size: 1.1em;
- margin: 5px 0px;
- /*
- * font-style: italic;
- * */
-}
-
-.text h1:first-letter,.text h2:first-letter,.text h3:first-letter,.text h4:first-letter,.text h5:first-letter {
- vertical-align: baseline;
- color: #7070FF;
- font-size: 180%;
- font-family: Cretino, "Bitstream Vera Serif", serif;
- font-weight: bold;
-}
-.text h3:first-letter {
- color: rgb(156,156,86);
-}
-.text h4:first-letter {
- color: rgb(156,86,156);
- font-size: 150%;
-}
-.text h5:first-letter {
- color: rgb(86,156,156);
- font-size: 120%;
-}
-.news_poster {
- font-size: 90%;
-}
-.news_post_date {
- font-size: 90%;
-}
-.news_image img {
- float:right;
- margin-left:20px;
- padding:0;
-}
=== modified file 'media/css/notice.css'
--- media/css/notice.css 2010-06-12 15:25:46 +0000
+++ media/css/notice.css 2012-07-04 18:20:26 +0000
@@ -1,12 +1,30 @@
-.notice_poster {
- font-size: 90%;
-}
-.notice_post_date {
- font-size: 90%;
-}
-.notice_unseen_notice {
- font-style: italic;
-}
-.notice_type {
- font-weight: bold;
+.notifications {
+ width: 100%;
+ border-collapse: collapse;
+}
+
+.notifications td {
+ border: 1px solid black;
+ padding: 4px;
+ vertical-align: middle;
+}
+
+.notifications th {
+ border: none;
+ padding: 4px;
+ padding-top: 20px;
+ text-align: left;
+ font-weight: normal;
+}
+
+.notifications .type {
+ width: 20%;
+}
+
+.notifications .text{
+ width: 60%;
+}
+
+.notifications .date {
+ width: 20%;
}
=== modified file 'media/css/profile.css'
--- media/css/profile.css 2010-06-12 16:05:19 +0000
+++ media/css/profile.css 2012-07-04 18:20:26 +0000
@@ -1,11 +1,3 @@
-.profile_poster {
- font-size: 90%;
-}
-.profile_post_date {
- font-size: 90%;
-}
-.profile_image img {
- float: right;
- padding: 0px;
- margin-left: 20px;
-}
+td {
+ padding: 4px;
+}
\ No newline at end of file
=== modified file 'media/css/screens.css'
--- media/css/screens.css 2009-04-11 19:14:49 +0000
+++ media/css/screens.css 2012-07-04 18:20:26 +0000
@@ -1,22 +1,7 @@
-.category {
- font-weight: bold;
- padding: 5px;
- margin-top: 5px;
- margin-bottom: 1px;
- background: url('../img/background-444.png');
-}
-
-.image_display {
- margin: 4px 0px;
-}
-
-.sizes {
- text-align: right;
- font-size: 100%;
-}
-
.screenshot_list {
list-style-type: none;
+ margin: 0px;
+ padding: 0px;
}
.screenshot_list li {
=== modified file 'media/css/search.css'
--- media/css/search.css 2009-03-23 20:34:20 +0000
+++ media/css/search.css 2012-07-04 18:20:26 +0000
@@ -1,22 +0,0 @@
-
-
-.search h1 {
- display: block;
- font-weight: bold;
- padding: 5px;
- margin-top: 5px;
- margin-bottom: 1px;
- background: url('../img/background-444.png');
-}
-
-.search ul {
- list-style: none;
-}
-
-.search .results .wiki {
- margin-bottom: 2px;
-}
-
-.posted {
- font-size: 80%;
-}
=== modified file 'media/css/wiki.css'
--- media/css/wiki.css 2010-01-03 21:51:19 +0000
+++ media/css/wiki.css 2012-07-04 18:20:26 +0000
@@ -1,96 +1,57 @@
-/**************************/
-/* General Style elements */
-/**************************/
-.wiki_article h1 {
- font-size: 2.5em;
- margin: 10px 0px;
-}
-.wiki_article h2 {
- font-size: 2em;
- margin: 25px 3px 10px;
- line-height: 70%;
-}
-.wiki_article h3 {
- font-size: 1.4em;
- margin: 5px 5px;
-}
-.wiki_article h4 {
- font-size: 1.30em;
- margin: 5px 10px;
- text-decoration: underline;
-}
-.wiki_article h5 {
- font-size: 1.2em;
- margin: 5px 10px;
- text-decoration: underline;
- font-style: italic;
-}
-.wiki_article h6 {
- font-size: 1.1em;
- margin: 5px 10px;
- font-style: italic;
-}
-
-.wiki_article h1:first-letter,.wiki_article h2:first-letter,.wiki_article h3:first-letter {
- vertical-align: baseline;
- color: #7070FF;
- font-size: 180%;
- font-family: Cretino, "Bitstream Vera Serif", serif;
- font-weight: bold;
-}
-.wiki_article h3:first-letter {
- color: rgb(156,156,86);
-}
-
-.wiki_article p {
- margin: 7px 10px;
-}
-
+.toc {
+ border: 1px solid black;
+ display: inline-block;
+ padding: 0px 8px;
+ background-image: url("../img/black50.png");
+ font-size: 12px;
+ margin-bottom: 20px;
+ line-height: 18px;
+}
+
+.toc ul {
+ padding-left: 20px;
+}
/***********/
/* History */
/***********/
.history_list {
- width: 100%;
+ width: 100%;
+ border-collapse: collapse;
+}
+
+.history_list td {
+ border: 1px solid black;
+ padding: 4px;
+}
+
+.history_list th {
+ border: 1px solid black;
+ background-image: url("../img/black50.png");
+ padding: 4px;
}
/******************/
/* Edit Wiki Page */
/******************/
#edit_wiki_page_form {
- width: 100%;
+ width: 100%;
}
+
#edit_wiki_page_form th {
- background: None;
- margin-top: 15px;
- width: auto;
+ text-align: left;
}
+
#edit_wiki_page_form #id_title,#id_comment {
- width: 100%;
+ width: 98%;
}
-
+
#id_content {
- width: 100%;
- height: 400px;
+ width: 98%;
+ height: 400px;
}
+
#id_summary {
- width: 100%;
- height: 100px;
-}
-
-/*************/
-/* Changeset */
-/*************/
-
-.changeset_content {
- line-height: 120%;
- border: 0px;
- padding: 2px;
- padding-top: 5px;
- padding-left: 15px;
- background-color: #3F3F3F;
- background: url(../img/background-3F3F3F.png);
-}
-
-
-
+ width: 98%;
+ height: 100px;
+}
=== added directory 'media/fancybox'
=== added file 'media/fancybox/blank.gif'
Binary files media/fancybox/blank.gif 1970-01-01 00:00:00 +0000 and media/fancybox/blank.gif 2012-07-04 18:20:26 +0000 differ
=== added file 'media/fancybox/fancybox_loading.gif'
Binary files media/fancybox/fancybox_loading.gif 1970-01-01 00:00:00 +0000 and media/fancybox/fancybox_loading.gif 2012-07-04 18:20:26 +0000 differ
=== added file 'media/fancybox/fancybox_sprite.png'
Binary files media/fancybox/fancybox_sprite.png 1970-01-01 00:00:00 +0000 and media/fancybox/fancybox_sprite.png 2012-07-04 18:20:26 +0000 differ
=== added directory 'media/fancybox/helpers'
=== added file 'media/fancybox/helpers/fancybox_buttons.png'
Binary files media/fancybox/helpers/fancybox_buttons.png 1970-01-01 00:00:00 +0000 and media/fancybox/helpers/fancybox_buttons.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/fancybox/helpers/jquery.fancybox-buttons.css'
--- media/fancybox/helpers/jquery.fancybox-buttons.css 1970-01-01 00:00:00 +0000
+++ media/fancybox/helpers/jquery.fancybox-buttons.css 2012-07-04 18:20:26 +0000
@@ -0,0 +1,85 @@
+#fancybox-buttons {
+ position: fixed;
+ left: 0;
+ width: 100%;
+ z-index: 8050;
+}
+
+#fancybox-buttons.top {
+ top: 10px;
+}
+
+#fancybox-buttons.bottom {
+ bottom: 10px;
+}
+
+#fancybox-buttons ul {
+ display: block;
+ width: 170px;
+ height: 30px;
+ margin: 0 auto;
+ padding: 0;
+ list-style: none;
+ background: #111;
+ -webkit-box-shadow: 0 1px 3px #000,0 0 0 1px rgba(0,0,0,.7),inset 0 0 0 1px rgba(255,255,255,.05);
+ -moz-box-shadow: 0 1px 3px #000,0 0 0 1px rgba(0,0,0,.7),inset 0 0 0 1px rgba(255,255,255,.05);
+ background: #111 -webkit-gradient(linear,0% 0%,0% 100%,from(rgba(255,255,255,.2)),color-stop(.5,rgba(255,255,255,.15)),color-stop(.5,rgba(255,255,255,.1)),to(rgba(255,255,255,.15)));
+ background: #111 -moz-linear-gradient(top,rgba(255,255,255,.2) 0%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.1) 50%,rgba(255,255,255,.15) 100%);
+ border-radius: 3px;
+}
+
+#fancybox-buttons ul li {
+ float: left;
+ margin: 0;
+ padding: 0;
+}
+
+#fancybox-buttons a {
+ display: block;
+ width: 30px;
+ height: 30px;
+ text-indent: -9999px;
+ background-image: url('fancybox_buttons.png');
+ background-repeat: no-repeat;
+ outline: none;
+}
+
+#fancybox-buttons a.btnPrev {
+ width: 32px;
+ background-position: 6px 0;
+}
+
+#fancybox-buttons a.btnNext {
+ background-position: -33px 0;
+ border-right: 1px solid #3e3e3e;
+}
+
+#fancybox-buttons a.btnPlay {
+ background-position: 0 -30px;
+}
+
+#fancybox-buttons a.btnPlayOn {
+ background-position: -30px -30px;
+}
+
+#fancybox-buttons a.btnToggle {
+ background-position: 3px -60px;
+ border-left: 1px solid #111;
+ border-right: 1px solid #3e3e3e;
+ width: 35px
+}
+
+#fancybox-buttons a.btnToggleOn {
+ background-position: -27px -60px;
+}
+
+#fancybox-buttons a.btnClose {
+ border-left: 1px solid #111;
+ width: 38px;
+ background-position: -57px 0px;
+}
+
+#fancybox-buttons a.btnDisabled {
+ opacity : 0.5;
+ cursor: default;
+}
\ No newline at end of file
=== added file 'media/fancybox/helpers/jquery.fancybox-buttons.js'
--- media/fancybox/helpers/jquery.fancybox-buttons.js 1970-01-01 00:00:00 +0000
+++ media/fancybox/helpers/jquery.fancybox-buttons.js 2012-07-04 18:20:26 +0000
@@ -0,0 +1,115 @@
+ /*!
+ * Buttons helper for fancyBox
+ * version: 1.0.2
+ * @requires fancyBox v2.0 or later
+ *
+ * Usage:
+ * $(".fancybox").fancybox({
+ * buttons: {
+ * position : 'top'
+ * }
+ * });
+ *
+ * Options:
+ * tpl - HTML template
+ * position - 'top' or 'bottom'
+ *
+ */
+(function ($) {
+ //Shortcut for fancyBox object
+ var F = $.fancybox;
+
+ //Add helper object
+ F.helpers.buttons = {
+ tpl: '<div id="fancybox-buttons"><ul><li><a class="btnPrev" title="Previous" href="javascript:;"></a></li><li><a class="btnPlay" title="Start slideshow" href="javascript:;"></a></li><li><a class="btnNext" title="Next" href="javascript:;"></a></li><li><a class="btnToggle" title="Toggle size" href="javascript:;"></a></li><li><a class="btnClose" title="Close" href="javascript:jQuery.fancybox.close();"></a></li></ul></div>',
+ list: null,
+ buttons: {},
+
+ update: function () {
+ var toggle = this.buttons.toggle.removeClass('btnDisabled btnToggleOn');
+
+ //Size toggle button
+ if (F.current.canShrink) {
+ toggle.addClass('btnToggleOn');
+
+ } else if (!F.current.canExpand) {
+ toggle.addClass('btnDisabled');
+ }
+ },
+
+ beforeLoad: function (opts) {
+ //Remove self if gallery do not have at least two items
+ if (F.group.length < 2) {
+ F.coming.helpers.buttons = false;
+ F.coming.closeBtn = true;
+
+ return;
+ }
+
+ //Increase top margin to give space for buttons
+ F.coming.margin[ opts.position === 'bottom' ? 2 : 0 ] += 30;
+ },
+
+ onPlayStart: function () {
+ if (this.list) {
+ this.buttons.play.attr('title', 'Pause slideshow').addClass('btnPlayOn');
+ }
+ },
+
+ onPlayEnd: function () {
+ if (this.list) {
+ this.buttons.play.attr('title', 'Start slideshow').removeClass('btnPlayOn');
+ }
+ },
+
+ afterShow: function (opts) {
+ var buttons;
+
+ if (!this.list) {
+ this.list = $(opts.tpl || this.tpl).addClass(opts.position || 'top').appendTo('body');
+
+ this.buttons = {
+ prev : this.list.find('.btnPrev').click( F.prev ),
+ next : this.list.find('.btnNext').click( F.next ),
+ play : this.list.find('.btnPlay').click( F.play ),
+ toggle : this.list.find('.btnToggle').click( F.toggle )
+ }
+ }
+
+ buttons = this.buttons;
+
+ //Prev
+ if (F.current.index > 0 || F.current.loop) {
+ buttons.prev.removeClass('btnDisabled');
+ } else {
+ buttons.prev.addClass('btnDisabled');
+ }
+
+ //Next / Play
+ if (F.current.loop || F.current.index < F.group.length - 1) {
+ buttons.next.removeClass('btnDisabled');
+ buttons.play.removeClass('btnDisabled');
+
+ } else {
+ buttons.next.addClass('btnDisabled');
+ buttons.play.addClass('btnDisabled');
+ }
+
+ this.update();
+ },
+
+ onUpdate: function () {
+ this.update();
+ },
+
+ beforeClose: function () {
+ if (this.list) {
+ this.list.remove();
+ }
+
+ this.list = null;
+ this.buttons = {};
+ }
+ };
+
+}(jQuery));
\ No newline at end of file
=== added file 'media/fancybox/helpers/jquery.fancybox-media.js'
--- media/fancybox/helpers/jquery.fancybox-media.js 1970-01-01 00:00:00 +0000
+++ media/fancybox/helpers/jquery.fancybox-media.js 2012-07-04 18:20:26 +0000
@@ -0,0 +1,85 @@
+ /*!
+ * Media helper for fancyBox
+ * version: 1.0.0
+ * @requires fancyBox v2.0 or later
+ *
+ * Usage:
+ * $(".fancybox").fancybox({
+ * media: {}
+ * });
+ *
+ * Supports:
+ * Youtube
+ * http://www.youtube.com/watch?v=opj24KnzrWo
+ * http://youtu.be/opj24KnzrWo
+ * Vimeo
+ * http://vimeo.com/25634903
+ * Metacafe
+ * http://www.metacafe.com/watch/7635964/dr_seuss_the_lorax_movie_trailer/
+ * http://www.metacafe.com/watch/7635964/
+ * Dailymotion
+ * http://www.dailymotion.com/video/xoytqh_dr-seuss-the-lorax-premiere_people
+ * Twitvid
+ * http://twitvid.com/QY7MD
+ * Twitpic
+ * http://twitpic.com/7p93st
+ * Instagram
+ * http://instagr.am/p/IejkuUGxQn/
+ * http://instagram.com/p/IejkuUGxQn/
+ * Google maps
+ * http://maps.google.com/maps?q=Eiffel+Tower,+Avenue+Gustave+Eiffel,+Paris,+France&t=h&z=17
+ * http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16
+ * http://maps.google.com/?ll=48.859463,2.292626&spn=0.000965,0.002642&t=m&z=19&layer=c&cbll=48.859524,2.292532&panoid=YJ0lq28OOy3VT2IqIuVY0g&cbp=12,151.58,,0,-15.56
+ */
+(function ($) {
+ //Shortcut for fancyBox object
+ var F = $.fancybox;
+
+ //Add helper object
+ F.helpers.media = {
+ beforeLoad : function(opts, obj) {
+ var href = obj.href || '',
+ type = false,
+ rez;
+
+ if ((rez = href.match(/(youtube\.com|youtu\.be)\/(v\/|u\/|embed\/|watch\?v=)?([^#\&\?]*).*/i))) {
+ href = '//www.youtube.com/embed/' + rez[3] + '?autoplay=1&autohide=1&fs=1&rel=0&enablejsapi=1';
+ type = 'iframe';
+
+ } else if ((rez = href.match(/vimeo.com\/(\d+)\/?(.*)/))) {
+ href = '//player.vimeo.com/video/' + rez[1] + '?hd=1&autoplay=1&show_title=1&show_byline=1&show_portrait=0&color=&fullscreen=1';
+ type = 'iframe';
+
+ } else if ((rez = href.match(/metacafe.com\/watch\/(\d+)\/?(.*)/))) {
+ href = '//www.metacafe.com/fplayer/' + rez[1] + '/.swf?playerVars=autoPlay=yes';
+ type = 'swf';
+
+ } else if ((rez = href.match(/dailymotion.com\/video\/(.*)\/?(.*)/))) {
+ href = '//www.dailymotion.com/swf/video/' + rez[1] + '?additionalInfos=0&autoStart=1';
+ type = 'swf';
+
+ } else if ((rez = href.match(/twitvid\.com\/([a-zA-Z0-9_\-\?\=]+)/i))) {
+ href = '//www.twitvid.com/embed.php?autoplay=0&guid=' + rez[1];
+ type = 'iframe';
+
+ } else if ((rez = href.match(/twitpic\.com\/(?!(?:place|photos|events)\/)([a-zA-Z0-9\?\=\-]+)/i))) {
+ href = '//twitpic.com/show/full/' + rez[1];
+ type = 'image';
+
+ } else if ((rez = href.match(/(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i))) {
+ href = '//' + rez[1] + '/p/' + rez[2] + '/media/?size=l';
+ type = 'image';
+
+ } else if ((rez = href.match(/maps\.google\.com\/(\?ll=|maps\/?\?q=)(.*)/i))) {
+ href = '//maps.google.com/' + rez[1] + '' + rez[2] + '&output=' + (rez[2].indexOf('layer=c') ? 'svembed' : 'embed');
+ type = 'iframe';
+ }
+
+ if (type) {
+ obj.href = href;
+ obj.type = type;
+ }
+ }
+ }
+
+}(jQuery));
\ No newline at end of file
=== added file 'media/fancybox/helpers/jquery.fancybox-thumbs.css'
--- media/fancybox/helpers/jquery.fancybox-thumbs.css 1970-01-01 00:00:00 +0000
+++ media/fancybox/helpers/jquery.fancybox-thumbs.css 2012-07-04 18:20:26 +0000
@@ -0,0 +1,54 @@
+#fancybox-thumbs {
+ position: fixed;
+ left: 0;
+ width: 100%;
+ overflow: hidden;
+ z-index: 8050;
+}
+
+#fancybox-thumbs.bottom {
+ bottom: 2px;
+}
+
+#fancybox-thumbs.top {
+ top: 2px;
+}
+
+#fancybox-thumbs ul {
+ position: relative;
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+#fancybox-thumbs ul li {
+ float: left;
+ padding: 1px;
+ opacity: 0.5;
+}
+
+#fancybox-thumbs ul li.active {
+ opacity: 0.75;
+ padding: 0;
+ border: 1px solid #fff;
+}
+
+#fancybox-thumbs ul li:hover {
+ opacity: 1;
+}
+
+#fancybox-thumbs ul li a {
+ display: block;
+ position: relative;
+ overflow: hidden;
+ border: 1px solid #222;
+ background: #111;
+ outline: none;
+}
+
+#fancybox-thumbs ul li img {
+ display: block;
+ position: relative;
+ border: 0;
+ padding: 0;
+}
\ No newline at end of file
=== added file 'media/fancybox/helpers/jquery.fancybox-thumbs.js'
--- media/fancybox/helpers/jquery.fancybox-thumbs.js 1970-01-01 00:00:00 +0000
+++ media/fancybox/helpers/jquery.fancybox-thumbs.js 2012-07-04 18:20:26 +0000
@@ -0,0 +1,157 @@
+ /*!
+ * Thumbnail helper for fancyBox
+ * version: 1.0.4
+ * @requires fancyBox v2.0 or later
+ *
+ * Usage:
+ * $(".fancybox").fancybox({
+ * thumbs: {
+ * width : 50,
+ * height : 50
+ * }
+ * });
+ *
+ * Options:
+ * width - thumbnail width
+ * height - thumbnail height
+ * source - function to obtain the URL of the thumbnail image
+ * position - 'top' or 'bottom'
+ *
+ */
+(function ($) {
+ //Shortcut for fancyBox object
+ var F = $.fancybox;
+
+ //Add helper object
+ F.helpers.thumbs = {
+ wrap: null,
+ list: null,
+ width: 0,
+
+ //Default function to obtain the URL of the thumbnail image
+ source: function (el) {
+ var img;
+
+ if ($.type(el) === 'string') {
+ return el;
+ }
+
+ img = $(el).find('img');
+
+ return img.length ? img.attr('src') : el.href;
+ },
+
+ init: function (opts) {
+ var that = this,
+ list,
+ thumbWidth = opts.width || 50,
+ thumbHeight = opts.height || 50,
+ thumbSource = opts.source || this.source;
+
+ //Build list structure
+ list = '';
+
+ for (var n = 0; n < F.group.length; n++) {
+ list += '<li><a style="width:' + thumbWidth + 'px;height:' + thumbHeight + 'px;" href="javascript:jQuery.fancybox.jumpto(' + n + ');"></a></li>';
+ }
+
+ this.wrap = $('<div id="fancybox-thumbs"></div>').addClass(opts.position || 'bottom').appendTo('body');
+ this.list = $('<ul>' + list + '</ul>').appendTo(this.wrap);
+
+ //Load each thumbnail
+ $.each(F.group, function (i) {
+ $("<img />").load(function () {
+ var width = this.width,
+ height = this.height,
+ widthRatio, heightRatio, parent;
+
+ if (!that.list || !width || !height) {
+ return;
+ }
+
+ //Calculate thumbnail width/height and center it
+ widthRatio = width / thumbWidth;
+ heightRatio = height / thumbHeight;
+ parent = that.list.children().eq(i).find('a');
+
+ if (widthRatio >= 1 && heightRatio >= 1) {
+ if (widthRatio > heightRatio) {
+ width = Math.floor(width / heightRatio);
+ height = thumbHeight;
+
+ } else {
+ width = thumbWidth;
+ height = Math.floor(height / widthRatio);
+ }
+ }
+
+ $(this).css({
+ width: width,
+ height: height,
+ top: Math.floor(thumbHeight / 2 - height / 2),
+ left: Math.floor(thumbWidth / 2 - width / 2)
+ });
+
+ parent.width(thumbWidth).height(thumbHeight);
+
+ $(this).hide().appendTo(parent).fadeIn(300);
+
+ }).attr('src', thumbSource( F.group[ i ] ));
+ });
+
+ //Set initial width
+ this.width = this.list.children().eq(0).outerWidth(true);
+
+ this.list.width(this.width * (F.group.length + 1)).css('left', Math.floor($(window).width() * 0.5 - (F.current.index * this.width + this.width * 0.5)));
+ },
+
+ //Center list
+ update: function (opts) {
+ if (this.list) {
+ this.list.stop(true).animate({
+ 'left': Math.floor($(window).width() * 0.5 - (F.current.index * this.width + this.width * 0.5))
+ }, 150);
+ }
+ },
+
+ beforeLoad: function (opts) {
+ //Remove self if gallery do not have at least two items
+ if (F.group.length < 2) {
+ F.coming.helpers.thumbs = false;
+
+ return;
+ }
+
+ //Increase bottom margin to give space for thumbs
+ F.coming.margin[ opts.position === 'top' ? 0 : 2 ] = opts.height + 30;
+ },
+
+ afterShow: function (opts) {
+ //Check if exists and create or update list
+ if (this.list) {
+ this.update(opts);
+
+ } else {
+ this.init(opts);
+ }
+
+ //Set active element
+ this.list.children().removeClass('active').eq(F.current.index).addClass('active');
+ },
+
+ onUpdate: function () {
+ this.update();
+ },
+
+ beforeClose: function () {
+ if (this.wrap) {
+ this.wrap.remove();
+ }
+
+ this.wrap = null;
+ this.list = null;
+ this.width = 0;
+ }
+ }
+
+}(jQuery));
\ No newline at end of file
=== added file 'media/fancybox/jquery.fancybox.css'
--- media/fancybox/jquery.fancybox.css 1970-01-01 00:00:00 +0000
+++ media/fancybox/jquery.fancybox.css 2012-07-04 18:20:26 +0000
@@ -0,0 +1,234 @@
+/*! fancyBox v2.0.6 fancyapps.com | fancyapps.com/fancybox/#license */
+.fancybox-tmp iframe, .fancybox-tmp object {
+ vertical-align: top;
+ padding: 0;
+ margin: 0;
+}
+
+.fancybox-wrap {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 8020;
+}
+
+.fancybox-skin {
+ position: relative;
+ padding: 0;
+ margin: 0;
+ background: #f9f9f9;
+ color: #444;
+ text-shadow: none;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+}
+
+.fancybox-opened {
+ z-index: 8030;
+}
+
+.fancybox-opened .fancybox-skin {
+ -webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
+ -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
+ box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5);
+}
+
+.fancybox-outer, .fancybox-inner {
+ padding: 0;
+ margin: 0;
+ position: relative;
+ outline: none;
+}
+
+.fancybox-inner {
+ overflow: hidden;
+}
+
+.fancybox-type-iframe .fancybox-inner {
+ -webkit-overflow-scrolling: touch;
+}
+
+.fancybox-error {
+ color: #444;
+ font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
+ margin: 0;
+ padding: 10px;
+}
+
+.fancybox-image, .fancybox-iframe {
+ display: block;
+ width: 100%;
+ height: 100%;
+ border: 0;
+ padding: 0;
+ margin: 0;
+ vertical-align: top;
+}
+
+.fancybox-image {
+ max-width: 100%;
+ max-height: 100%;
+}
+
+#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span {
+ background-image: url('fancybox_sprite.png');
+}
+
+#fancybox-loading {
+ position: fixed;
+ top: 50%;
+ left: 50%;
+ margin-top: -22px;
+ margin-left: -22px;
+ background-position: 0 -108px;
+ opacity: 0.8;
+ cursor: pointer;
+ z-index: 8020;
+}
+
+#fancybox-loading div {
+ width: 44px;
+ height: 44px;
+ background: url('fancybox_loading.gif') center center no-repeat;
+}
+
+.fancybox-close {
+ position: absolute;
+ top: -18px;
+ right: -18px;
+ width: 36px;
+ height: 36px;
+ cursor: pointer;
+ z-index: 8040;
+}
+
+.fancybox-nav {
+ position: absolute;
+ top: 0;
+ width: 40%;
+ height: 100%;
+ cursor: pointer;
+ background: transparent url('blank.gif'); /* helps IE */
+ -webkit-tap-highlight-color: rgba(0,0,0,0);
+ z-index: 8040;
+}
+
+.fancybox-prev {
+ left: 0;
+}
+
+.fancybox-next {
+ right: 0;
+}
+
+.fancybox-nav span {
+ position: absolute;
+ top: 50%;
+ width: 36px;
+ height: 34px;
+ margin-top: -18px;
+ cursor: pointer;
+ z-index: 8040;
+ visibility: hidden;
+}
+
+.fancybox-prev span {
+ left: 20px;
+ background-position: 0 -36px;
+}
+
+.fancybox-next span {
+ right: 20px;
+ background-position: 0 -72px;
+}
+
+.fancybox-nav:hover span {
+ visibility: visible;
+}
+
+.fancybox-tmp {
+ position: absolute;
+ top: -9999px;
+ left: -9999px;
+ padding: 0;
+ overflow: visible;
+ visibility: hidden;
+}
+
+/* Overlay helper */
+
+#fancybox-overlay {
+ position: absolute;
+ top: 0;
+ left: 0;
+ overflow: hidden;
+ display: none;
+ z-index: 8010;
+ background: #000;
+}
+
+#fancybox-overlay.overlay-fixed {
+ position: fixed;
+ bottom: 0;
+ right: 0;
+}
+
+/* Title helper */
+
+.fancybox-title {
+ visibility: hidden;
+ font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif;
+ position: relative;
+ text-shadow: none;
+ z-index: 8050;
+}
+
+.fancybox-opened .fancybox-title {
+ visibility: visible;
+}
+
+.fancybox-title-float-wrap {
+ position: absolute;
+ bottom: 0;
+ right: 50%;
+ margin-bottom: -35px;
+ z-index: 8030;
+ text-align: center;
+}
+
+.fancybox-title-float-wrap .child {
+ display: inline-block;
+ margin-right: -100%;
+ padding: 2px 20px;
+ background: transparent; /* Fallback for web browsers that doesn't support RGBa */
+ background: rgba(0, 0, 0, 0.8);
+ -webkit-border-radius: 15px;
+ -moz-border-radius: 15px;
+ border-radius: 15px;
+ text-shadow: 0 1px 2px #222;
+ color: #FFF;
+ font-weight: bold;
+ line-height: 24px;
+ white-space: nowrap;
+}
+
+.fancybox-title-outside-wrap {
+ position: relative;
+ margin-top: 10px;
+ color: #fff;
+}
+
+.fancybox-title-inside-wrap {
+ margin-top: 10px;
+}
+
+.fancybox-title-over-wrap {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ color: #fff;
+ padding: 10px;
+ background: #000;
+ background: rgba(0, 0, 0, .8);
+}
\ No newline at end of file
=== added file 'media/fancybox/jquery.fancybox.js'
--- media/fancybox/jquery.fancybox.js 1970-01-01 00:00:00 +0000
+++ media/fancybox/jquery.fancybox.js 2012-07-04 18:20:26 +0000
@@ -0,0 +1,1463 @@
+/*!
+ * fancyBox - jQuery Plugin
+ * version: 2.0.6 (16/04/2012)
+ * @requires jQuery v1.6 or later
+ *
+ * Examples at http://fancyapps.com/fancybox/
+ * License: www.fancyapps.com/fancybox/#license
+ *
+ * Copyright 2012 Janis Skarnelis - janis@xxxxxxxxxxxxx
+ *
+ */
+
+(function (window, document, $, undefined) {
+ "use strict";
+
+ var W = $(window),
+ D = $(document),
+ F = $.fancybox = function () {
+ F.open.apply( this, arguments );
+ },
+ didResize = false,
+ resizeTimer = null,
+ isTouch = document.createTouch !== undefined,
+ isString = function(str) {
+ return $.type(str) === "string";
+ },
+ isPercentage = function(str) {
+ return isString(str) && str.indexOf('%') > 0;
+ },
+ getValue = function(value, dim) {
+ if (dim && isPercentage(value)) {
+ value = F.getViewport()[ dim ] / 100 * parseInt(value, 10);
+ }
+
+ return Math.round(value) + 'px';
+ };
+
+ $.extend(F, {
+ // The current version of fancyBox
+ version: '2.0.5',
+
+ defaults: {
+ padding: 15,
+ margin: 20,
+
+ width: 800,
+ height: 600,
+ minWidth: 100,
+ minHeight: 100,
+ maxWidth: 9999,
+ maxHeight: 9999,
+
+ autoSize: true,
+ autoResize: !isTouch,
+ autoCenter : !isTouch,
+ fitToView: true,
+ aspectRatio: false,
+ topRatio: 0.5,
+
+ fixed: false,
+ scrolling: 'auto', // 'auto', 'yes' or 'no'
+ wrapCSS: '',
+
+ arrows: true,
+ closeBtn: true,
+ closeClick: false,
+ nextClick : false,
+ mouseWheel: true,
+ autoPlay: false,
+ playSpeed: 3000,
+ preload : 3,
+
+ modal: false,
+ loop: true,
+ ajax: { dataType: 'html', headers: { 'X-fancyBox': true } },
+ keys: {
+ next: [13, 32, 34, 39, 40], // enter, space, page down, right arrow, down arrow
+ prev: [8, 33, 37, 38], // backspace, page up, left arrow, up arrow
+ close: [27] // escape key
+ },
+
+ // Override some properties
+ index: 0,
+ type: null,
+ href: null,
+ content: null,
+ title: null,
+
+ // HTML templates
+ tpl: {
+ wrap: '<div class="fancybox-wrap"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div></div>',
+ image: '<img class="fancybox-image" src="{href}" alt="" />',
+ iframe: '<iframe class="fancybox-iframe" name="fancybox-frame{rnd}" frameborder="0" hspace="0"' + ($.browser.msie ? ' allowtransparency="true"' : '') + '></iframe>',
+ swf: '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="wmode" value="transparent" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="{href}" /><embed src="{href}" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="100%" height="100%" wmode="transparent"></embed></object>',
+ error: '<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>',
+ closeBtn: '<div title="Close" class="fancybox-item fancybox-close"></div>',
+ next: '<a title="Next" class="fancybox-nav fancybox-next"><span></span></a>',
+ prev: '<a title="Previous" class="fancybox-nav fancybox-prev"><span></span></a>'
+ },
+
+ // Properties for each animation type
+ // Opening fancyBox
+ openEffect: 'fade', // 'elastic', 'fade' or 'none'
+ openSpeed: 300,
+ openEasing: 'swing',
+ openOpacity: true,
+ openMethod: 'zoomIn',
+
+ // Closing fancyBox
+ closeEffect: 'fade', // 'elastic', 'fade' or 'none'
+ closeSpeed: 300,
+ closeEasing: 'swing',
+ closeOpacity: true,
+ closeMethod: 'zoomOut',
+
+ // Changing next gallery item
+ nextEffect: 'elastic', // 'elastic', 'fade' or 'none'
+ nextSpeed: 300,
+ nextEasing: 'swing',
+ nextMethod: 'changeIn',
+
+ // Changing previous gallery item
+ prevEffect: 'elastic', // 'elastic', 'fade' or 'none'
+ prevSpeed: 300,
+ prevEasing: 'swing',
+ prevMethod: 'changeOut',
+
+ // Enabled helpers
+ helpers: {
+ overlay: {
+ speedIn: 0,
+ speedOut: 300,
+ opacity: 0.8,
+ css: {
+ cursor: 'pointer'
+ },
+ closeClick: true
+ },
+ title: {
+ type: 'float' // 'float', 'inside', 'outside' or 'over'
+ }
+ },
+
+ // Callbacks
+ onCancel: $.noop, // If canceling
+ beforeLoad: $.noop, // Before loading
+ afterLoad: $.noop, // After loading
+ beforeShow: $.noop, // Before changing in current item
+ afterShow: $.noop, // After opening
+ beforeClose: $.noop, // Before closing
+ afterClose: $.noop // After closing
+ },
+
+ //Current state
+ group: {}, // Selected group
+ opts: {}, // Group options
+ coming: null, // Element being loaded
+ current: null, // Currently loaded element
+ isOpen: false, // Is currently open
+ isOpened: false, // Have been fully opened at least once
+ wrap: null,
+ skin: null,
+ outer: null,
+ inner: null,
+
+ player: {
+ timer: null,
+ isActive: false
+ },
+
+ // Loaders
+ ajaxLoad: null,
+ imgPreload: null,
+
+ // Some collections
+ transitions: {},
+ helpers: {},
+
+ /*
+ * Static methods
+ */
+
+ open: function (group, opts) {
+ //Kill existing instances
+ F.close(true);
+
+ //Normalize group
+ if (group && !$.isArray(group)) {
+ group = group instanceof $ ? $(group).get() : [group];
+ }
+
+ F.isActive = true;
+
+ //Extend the defaults
+ F.opts = $.extend(true, {}, F.defaults, opts);
+
+ //All options are merged recursive except keys
+ if ($.isPlainObject(opts) && opts.keys !== undefined) {
+ F.opts.keys = opts.keys ? $.extend({}, F.defaults.keys, opts.keys) : false;
+ }
+
+ F.group = group;
+
+ F._start(F.opts.index || 0);
+ },
+
+ cancel: function () {
+ if (F.coming && false === F.trigger('onCancel')) {
+ return;
+ }
+
+ F.coming = null;
+
+ F.hideLoading();
+
+ if (F.ajaxLoad) {
+ F.ajaxLoad.abort();
+ }
+
+ F.ajaxLoad = null;
+
+ if (F.imgPreload) {
+ F.imgPreload.onload = F.imgPreload.onabort = F.imgPreload.onerror = null;
+ }
+ },
+
+ close: function (a) {
+ F.cancel();
+
+ if (!F.current || false === F.trigger('beforeClose')) {
+ return;
+ }
+
+ F.unbindEvents();
+
+ //If forced or is still opening then remove immediately
+ if (!F.isOpen || (a && a[0] === true)) {
+ $('.fancybox-wrap').stop().trigger('onReset').remove();
+
+ F._afterZoomOut();
+
+ } else {
+ F.isOpen = F.isOpened = false;
+
+ $('.fancybox-item, .fancybox-nav').remove();
+
+ F.wrap.stop(true).removeClass('fancybox-opened');
+ F.inner.css('overflow', 'hidden');
+
+ F.transitions[F.current.closeMethod]();
+ }
+ },
+
+ // Start/stop slideshow
+ play: function (a) {
+ var clear = function () {
+ clearTimeout(F.player.timer);
+ },
+ set = function () {
+ clear();
+
+ if (F.current && F.player.isActive) {
+ F.player.timer = setTimeout(F.next, F.current.playSpeed);
+ }
+ },
+ stop = function () {
+ clear();
+
+ $('body').unbind('.player');
+
+ F.player.isActive = false;
+
+ F.trigger('onPlayEnd');
+ },
+ start = function () {
+ if (F.current && (F.current.loop || F.current.index < F.group.length - 1)) {
+ F.player.isActive = true;
+
+ $('body').bind({
+ 'afterShow.player onUpdate.player': set,
+ 'onCancel.player beforeClose.player': stop,
+ 'beforeLoad.player': clear
+ });
+
+ set();
+
+ F.trigger('onPlayStart');
+ }
+ };
+
+ if (F.player.isActive || (a && a[0] === false)) {
+ stop();
+ } else {
+ start();
+ }
+ },
+
+ next: function () {
+ if (F.current) {
+ F.jumpto(F.current.index + 1);
+ }
+ },
+
+ prev: function () {
+ if (F.current) {
+ F.jumpto(F.current.index - 1);
+ }
+ },
+
+ jumpto: function (index) {
+ if (!F.current) {
+ return;
+ }
+
+ index = parseInt(index, 10);
+
+ if (F.group.length > 1 && F.current.loop) {
+ if (index >= F.group.length) {
+ index = 0;
+
+ } else if (index < 0) {
+ index = F.group.length - 1;
+ }
+ }
+
+ if (F.group[index] !== undefined) {
+ F.cancel();
+
+ F._start(index);
+ }
+ },
+
+ reposition: function (e, onlyAbsolute) {
+ var pos;
+
+ if (F.isOpen) {
+ pos = F._getPosition(onlyAbsolute);
+
+ if (e && e.type === 'scroll') {
+ delete pos.position;
+
+ F.wrap.stop(true, true).animate(pos, 200);
+
+ } else {
+ F.wrap.css(pos);
+ }
+ }
+ },
+
+ update: function (e) {
+ if (!F.isOpen) {
+ return;
+ }
+
+ // Run this code after a delay for better performance
+ if (!didResize) {
+ resizeTimer = setTimeout(function () {
+ var current = F.current, anyway = !e || (e && e.type === 'orientationchange');
+
+ if (didResize) {
+ didResize = false;
+
+ if (!current) {
+ return;
+ }
+
+ if ((!e || e.type !== 'scroll') || anyway) {
+ if (current.autoSize && current.type !== 'iframe') {
+ F.inner.height('auto');
+ current.height = F.inner.height();
+ }
+
+ if (current.autoResize || anyway) {
+ F._setDimension();
+ }
+
+ if (current.canGrow && current.type !== 'iframe') {
+ F.inner.height('auto');
+ }
+ }
+
+ if (current.autoCenter || anyway) {
+ F.reposition(e);
+ }
+
+ F.trigger('onUpdate');
+ }
+ }, 200);
+ }
+
+ didResize = true;
+ },
+
+ toggle: function () {
+ if (F.isOpen) {
+ F.current.fitToView = !F.current.fitToView;
+
+ F.update();
+ }
+ },
+
+ hideLoading: function () {
+ D.unbind('keypress.fb');
+
+ $('#fancybox-loading').remove();
+ },
+
+ showLoading: function () {
+ F.hideLoading();
+
+ //If user will press the escape-button, the request will be canceled
+ D.bind('keypress.fb', function(e) {
+ if (e.keyCode === 27) {
+ e.preventDefault();
+ F.cancel();
+ }
+ });
+
+ $('<div id="fancybox-loading"><div></div></div>').click(F.cancel).appendTo('body');
+ },
+
+ getViewport: function () {
+ // See http://bugs.jquery.com/ticket/6724
+ return {
+ x: W.scrollLeft(),
+ y: W.scrollTop(),
+ w: isTouch && window.innerWidth ? window.innerWidth : W.width(),
+ h: isTouch && window.innerHeight ? window.innerHeight : W.height()
+ };
+ },
+
+ // Unbind the keyboard / clicking actions
+ unbindEvents: function () {
+ if (F.wrap) {
+ F.wrap.unbind('.fb');
+ }
+
+ D.unbind('.fb');
+ W.unbind('.fb');
+ },
+
+ bindEvents: function () {
+ var current = F.current,
+ keys = current.keys;
+
+ if (!current) {
+ return;
+ }
+
+ W.bind('resize.fb orientationchange.fb' + (current.autoCenter && !current.fixed ? ' scroll.fb' : ''), F.update);
+
+ if (keys) {
+ D.bind('keydown.fb', function (e) {
+ var code, target = e.target || e.srcElement;
+
+ // Ignore key combinations and key events within form elements
+ if (!e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey && !(target && (target.type || $(target).is('[contenteditable]')))) {
+ code = e.keyCode;
+
+ if ($.inArray(code, keys.close) > -1) {
+ F.close();
+ e.preventDefault();
+
+ } else if ($.inArray(code, keys.next) > -1) {
+ F.next();
+ e.preventDefault();
+
+ } else if ($.inArray(code, keys.prev) > -1) {
+ F.prev();
+ e.preventDefault();
+ }
+ }
+ });
+ }
+
+ if ($.fn.mousewheel && current.mouseWheel && F.group.length > 1) {
+ F.wrap.bind('mousewheel.fb', function (e, delta) {
+ var target = e.target || null;
+
+ if (delta !== 0 && (!target || target.clientHeight === 0 || (target.scrollHeight === target.clientHeight && target.scrollWidth === target.clientWidth))) {
+ e.preventDefault();
+
+ F[delta > 0 ? 'prev' : 'next']();
+ }
+ });
+ }
+ },
+
+ trigger: function (event, o) {
+ var ret, obj = o || F[ $.inArray(event, ['onCancel', 'beforeLoad', 'afterLoad']) > -1 ? 'coming' : 'current' ];
+
+ if (!obj) {
+ return;
+ }
+
+ if ($.isFunction( obj[event] )) {
+ ret = obj[event].apply(obj, Array.prototype.slice.call(arguments, 1));
+ }
+
+ if (ret === false) {
+ return false;
+ }
+
+ if (obj.helpers) {
+ $.each(obj.helpers, function (helper, opts) {
+ if (opts && $.isPlainObject(F.helpers[helper]) && $.isFunction(F.helpers[helper][event])) {
+ F.helpers[helper][event](opts, obj);
+ }
+ });
+ }
+
+ $.event.trigger(event + '.fb');
+ },
+
+ isImage: function (str) {
+ return isString(str) && str.match(/\.(jpe?g|gif|png|bmp)((\?|#).*)?$/i);
+ },
+
+ isSWF: function (str) {
+ return isString(str) && str.match(/\.(swf)((\?|#).*)?$/i);
+ },
+
+ _start: function (index) {
+ var coming = {},
+ element = F.group[index] || null,
+ isDom,
+ href,
+ type,
+ rez,
+ hrefParts;
+
+ if (element && (element.nodeType || element instanceof $)) {
+ isDom = true;
+
+ if ($.metadata) {
+ coming = $(element).metadata();
+ }
+ }
+
+ coming = $.extend(true, {}, F.opts, {index : index, element : element}, ($.isPlainObject(element) ? element : coming));
+
+ // Re-check overridable options
+ $.each(['href', 'title', 'content', 'type'], function(i,v) {
+ coming[v] = F.opts[ v ] || (isDom && $(element).attr( v )) || coming[ v ] || null;
+ });
+
+ // Convert margin property to array - top, right, bottom, left
+ if (typeof coming.margin === 'number') {
+ coming.margin = [coming.margin, coming.margin, coming.margin, coming.margin];
+ }
+
+ // 'modal' propery is just a shortcut
+ if (coming.modal) {
+ $.extend(true, coming, {
+ closeBtn : false,
+ closeClick: false,
+ nextClick : false,
+ arrows : false,
+ mouseWheel : false,
+ keys : null,
+ helpers: {
+ overlay : {
+ css: {
+ cursor : 'auto'
+ },
+ closeClick : false
+ }
+ }
+ });
+ }
+
+ //Give a chance for callback or helpers to update coming item (type, title, etc)
+ F.coming = coming;
+
+ if (false === F.trigger('beforeLoad')) {
+ F.coming = null;
+ return;
+ }
+
+ type = coming.type;
+ href = coming.href || element;
+
+ ///Check if content type is set, if not, try to get
+ if (!type) {
+ if (isDom) {
+ type = $(element).data('fancybox-type');
+
+ if (!type) {
+ rez = element.className.match(/fancybox\.(\w+)/);
+ type = rez ? rez[1] : null;
+ }
+ }
+
+ if (!type && isString(href)) {
+ if (F.isImage(href)) {
+ type = 'image';
+
+ } else if (F.isSWF(href)) {
+ type = 'swf';
+
+ } else if (href.match(/^#/)) {
+ type = 'inline';
+ }
+ }
+
+ // ...if not - display element itself
+ if (!type) {
+ type = isDom ? 'inline' : 'html';
+ }
+
+ coming.type = type;
+ }
+
+ // Check before try to load; 'inline' and 'html' types need content, others - href
+ if (type === 'inline' || type === 'html') {
+ if (!coming.content) {
+ if (type === 'inline') {
+ coming.content = $( isString(href) ? href.replace(/.*(?=#[^\s]+$)/, '') : href ); //strip for ie7
+
+ } else {
+ coming.content = element;
+ }
+ }
+
+ if (!coming.content || !coming.content.length) {
+ type = null;
+ }
+
+ } else if (!href) {
+ type = null;
+ }
+
+ /*
+ * Add reference to the group, so it`s possible to access from callbacks, example:
+ * afterLoad : function() {
+ * this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : '');
+ * }
+ */
+
+ if (type === 'ajax' && isString(href)) {
+ hrefParts = href.split(/\s+/, 2);
+
+ href = hrefParts.shift();
+ coming.selector = hrefParts.shift();
+ }
+
+ coming.href = href;
+ coming.group = F.group;
+ coming.isDom = isDom;
+
+ switch (type) {
+ case 'image':
+ F._loadImage();
+ break;
+
+ case 'ajax':
+ F._loadAjax();
+ break;
+
+ case 'inline':
+ case 'iframe':
+ case 'swf':
+ case 'html':
+ F._afterLoad();
+ break;
+
+ default:
+ F._error( 'type' );
+ }
+ },
+
+ _error: function ( type ) {
+ F.hideLoading();
+
+ $.extend(F.coming, {
+ type : 'html',
+ autoSize : true,
+ minWidth : 0,
+ minHeight : 0,
+ padding : 15,
+ hasError : type,
+ content : F.coming.tpl.error
+ });
+
+ F._afterLoad();
+ },
+
+ _loadImage: function () {
+ // Reset preload image so it is later possible to check "complete" property
+ var img = F.imgPreload = new Image();
+
+ img.onload = function () {
+ this.onload = this.onerror = null;
+
+ F.coming.width = this.width;
+ F.coming.height = this.height;
+
+ F._afterLoad();
+ };
+
+ img.onerror = function () {
+ this.onload = this.onerror = null;
+
+ F._error( 'image' );
+ };
+
+ img.src = F.coming.href;
+
+ if (img.complete === undefined || !img.complete) {
+ F.showLoading();
+ }
+ },
+
+ _loadAjax: function () {
+ F.showLoading();
+
+ F.ajaxLoad = $.ajax($.extend({}, F.coming.ajax, {
+ url: F.coming.href,
+ error: function (jqXHR, textStatus) {
+ if (F.coming && textStatus !== 'abort') {
+ F._error( 'ajax', jqXHR );
+
+ } else {
+ F.hideLoading();
+ }
+ },
+ success: function (data, textStatus) {
+ if (textStatus === 'success') {
+ F.coming.content = data;
+
+ F._afterLoad();
+ }
+ }
+ }));
+ },
+
+ _preloadImages: function() {
+ var group = F.group,
+ current = F.current,
+ len = group.length,
+ item,
+ href,
+ i,
+ cnt = Math.min(current.preload, len - 1);
+
+ if (!current.preload || group.length < 2) {
+ return;
+ }
+
+ for (i = 1; i <= cnt; i += 1) {
+ item = group[ (current.index + i ) % len ];
+ href = item.href || $( item ).attr('href') || item;
+
+ if (item.type === 'image' || F.isImage(href)) {
+ new Image().src = href;
+ }
+ }
+ },
+
+ _afterLoad: function () {
+ F.hideLoading();
+
+ if (!F.coming || false === F.trigger('afterLoad', F.current)) {
+ F.coming = false;
+
+ return;
+ }
+
+ if (F.isOpened) {
+ $('.fancybox-item, .fancybox-nav').remove();
+
+ F.wrap.stop(true).removeClass('fancybox-opened');
+ F.inner.css('overflow', 'hidden');
+
+ F.transitions[F.current.prevMethod]();
+
+ } else {
+ $('.fancybox-wrap').stop().trigger('onReset').remove();
+
+ F.trigger('afterClose');
+ }
+
+ F.unbindEvents();
+
+ F.isOpen = false;
+ F.current = F.coming;
+
+ //Build the neccessary markup
+ F.wrap = $(F.current.tpl.wrap).addClass('fancybox-' + (isTouch ? 'mobile' : 'desktop') + ' fancybox-type-' + F.current.type + ' fancybox-tmp ' + F.current.wrapCSS).appendTo('body');
+ F.skin = $('.fancybox-skin', F.wrap).css('padding', getValue(F.current.padding));
+ F.outer = $('.fancybox-outer', F.wrap);
+ F.inner = $('.fancybox-inner', F.wrap);
+
+ F._setContent();
+ },
+
+ _setContent: function () {
+ var current = F.current,
+ content = current.content,
+ type = current.type,
+ minWidth = current.minWidth,
+ minHeight = current.minHeight,
+ maxWidth = current.maxWidth,
+ maxHeight = current.maxHeight,
+ loadingBay;
+
+ switch (type) {
+ case 'inline':
+ case 'ajax':
+ case 'html':
+ if (current.selector) {
+ content = $('<div>').html(content).find(current.selector);
+
+ } else if (content instanceof $) {
+ if (content.parent().hasClass('fancybox-inner')) {
+ content.parents('.fancybox-wrap').unbind('onReset');
+ }
+
+ content = content.show().detach();
+
+ $(F.wrap).bind('onReset', function () {
+ content.appendTo('body').hide();
+ });
+ }
+
+ if (current.autoSize) {
+ loadingBay = $('<div class="fancybox-wrap ' + F.current.wrapCSS + ' fancybox-tmp"></div>')
+ .appendTo('body')
+ .css({
+ minWidth : getValue(minWidth, 'w'),
+ minHeight : getValue(minHeight, 'h'),
+ maxWidth : getValue(maxWidth, 'w'),
+ maxHeight : getValue(maxHeight, 'h')
+ })
+ .append(content);
+
+ current.width = loadingBay.width();
+ current.height = loadingBay.height();
+
+ // Re-check to fix 1px bug in some browsers
+ loadingBay.width( F.current.width );
+
+ if (loadingBay.height() > current.height) {
+ loadingBay.width(current.width + 1);
+
+ current.width = loadingBay.width();
+ current.height = loadingBay.height();
+ }
+
+ content = loadingBay.contents().detach();
+
+ loadingBay.remove();
+ }
+
+ break;
+
+ case 'image':
+ content = current.tpl.image.replace('{href}', current.href);
+
+ current.aspectRatio = true;
+ break;
+
+ case 'swf':
+ content = current.tpl.swf.replace(/\{width\}/g, current.width).replace(/\{height\}/g, current.height).replace(/\{href\}/g, current.href);
+ break;
+
+ case 'iframe':
+ content = $(current.tpl.iframe.replace('{rnd}', new Date().getTime()) )
+ .attr('scrolling', current.scrolling)
+ .attr('src', current.href);
+
+ current.scrolling = isTouch ? 'scroll' : 'auto';
+
+ break;
+ }
+
+ if (type === 'image' || type === 'swf') {
+ current.autoSize = false;
+ current.scrolling = 'visible';
+ }
+
+ if (type === 'iframe' && current.autoSize) {
+ F.showLoading();
+
+ F._setDimension();
+
+ F.inner.css('overflow', current.scrolling);
+
+ content.bind({
+ onCancel : function() {
+ $(this).unbind();
+
+ F._afterZoomOut();
+ },
+ load : function() {
+ F.hideLoading();
+
+ try {
+ if (this.contentWindow.document.location) {
+ F.current.height = $(this).contents().find('body').height();
+ }
+ } catch (e) {
+ F.current.autoSize = false;
+ }
+
+ F[ F.isOpen ? '_afterZoomIn' : '_beforeShow']();
+ }
+ }).appendTo(F.inner);
+
+ } else {
+ F.inner.append(content);
+
+ F._beforeShow();
+ }
+ },
+
+ _beforeShow : function() {
+ F.coming = null;
+
+ //Give a chance for helpers or callbacks to update elements
+ F.trigger('beforeShow');
+
+ //Set initial dimensions and hide
+ F._setDimension();
+ F.wrap.hide().removeClass('fancybox-tmp');
+
+ F.bindEvents();
+
+ F._preloadImages();
+
+ F.transitions[ F.isOpened ? F.current.nextMethod : F.current.openMethod ]();
+ },
+
+ _setDimension: function () {
+ var wrap = F.wrap,
+ inner = F.inner,
+ current = F.current,
+ viewport = F.getViewport(),
+ margin = current.margin,
+ padding2 = current.padding * 2,
+ width = current.width,
+ height = current.height,
+ maxWidth = current.maxWidth + padding2,
+ maxHeight = current.maxHeight + padding2,
+ minWidth = current.minWidth + padding2,
+ minHeight = current.minHeight + padding2,
+ ratio,
+ height_;
+
+ viewport.w -= (margin[1] + margin[3]);
+ viewport.h -= (margin[0] + margin[2]);
+
+ if (isPercentage(width)) {
+ width = (((viewport.w - padding2) * parseFloat(width)) / 100);
+ }
+
+ if (isPercentage(height)) {
+ height = (((viewport.h - padding2) * parseFloat(height)) / 100);
+ }
+
+ ratio = width / height;
+ width += padding2;
+ height += padding2;
+
+ if (current.fitToView) {
+ maxWidth = Math.min(viewport.w, maxWidth);
+ maxHeight = Math.min(viewport.h, maxHeight);
+ }
+
+ if (current.aspectRatio) {
+ if (width > maxWidth) {
+ width = maxWidth;
+ height = ((width - padding2) / ratio) + padding2;
+ }
+
+ if (height > maxHeight) {
+ height = maxHeight;
+ width = ((height - padding2) * ratio) + padding2;
+ }
+
+ if (width < minWidth) {
+ width = minWidth;
+ height = ((width - padding2) / ratio) + padding2;
+ }
+
+ if (height < minHeight) {
+ height = minHeight;
+ width = ((height - padding2) * ratio) + padding2;
+ }
+
+ } else {
+ width = Math.max(minWidth, Math.min(width, maxWidth));
+ height = Math.max(minHeight, Math.min(height, maxHeight));
+ }
+
+ width = Math.round(width);
+ height = Math.round(height);
+
+ //Reset dimensions
+ $(wrap.add(inner)).width('auto').height('auto');
+
+ inner.width(width - padding2).height(height - padding2);
+ wrap.width(width);
+
+ height_ = wrap.height(); // Real wrap height
+
+ //Fit wrapper inside
+ if (width > maxWidth || height_ > maxHeight) {
+ while ((width > maxWidth || height_ > maxHeight) && width > minWidth && height_ > minHeight) {
+ height = height - 10;
+
+ if (current.aspectRatio) {
+ width = Math.round(((height - padding2) * ratio) + padding2);
+
+ if (width < minWidth) {
+ width = minWidth;
+ height = ((width - padding2) / ratio) + padding2;
+ }
+
+ } else {
+ width = width - 10;
+ }
+
+ inner.width(width - padding2).height(height - padding2);
+ wrap.width(width);
+
+ height_ = wrap.height();
+ }
+ }
+
+ current.dim = {
+ width : getValue(width),
+ height : getValue(height_)
+ };
+
+ current.canGrow = current.autoSize && height > minHeight && height < maxHeight;
+ current.canShrink = false;
+ current.canExpand = false;
+
+ if ((width - padding2) < current.width || (height - padding2) < current.height) {
+ current.canExpand = true;
+
+ } else if ((width > viewport.w || height_ > viewport.h) && width > minWidth && height > minHeight) {
+ current.canShrink = true;
+ }
+
+ F.innerSpace = height_ - padding2 - inner.height();
+ },
+
+ _getPosition: function (onlyAbsolute) {
+ var current = F.current,
+ viewport = F.getViewport(),
+ margin = current.margin,
+ width = F.wrap.width() + margin[1] + margin[3],
+ height = F.wrap.height() + margin[0] + margin[2],
+ rez = {
+ position: 'absolute',
+ top : margin[0] + viewport.y,
+ left : margin[3] + viewport.x
+ };
+
+ if (current.autoCenter && current.fixed && !onlyAbsolute && height <= viewport.h && width <= viewport.w) {
+ rez = {
+ position: 'fixed',
+ top : margin[0],
+ left : margin[3]
+ };
+ }
+
+ rez.top = getValue(Math.max(rez.top, rez.top + ((viewport.h - height) * current.topRatio)));
+ rez.left = getValue(Math.max(rez.left, rez.left + ((viewport.w - width) * 0.5)));
+
+ return rez;
+ },
+
+ _afterZoomIn: function () {
+ var current = F.current, scrolling = current ? current.scrolling : 'no';
+
+ if (!current) {
+ return;
+ }
+
+ F.isOpen = F.isOpened = true;
+
+ F.wrap.addClass('fancybox-opened');
+
+ F.inner.css('overflow', scrolling === 'yes' ? 'scroll' : (scrolling === 'no' ? 'hidden' : scrolling));
+
+ F.trigger('afterShow');
+
+ F.update();
+
+ //Assign a click event
+ if (current.closeClick || current.nextClick) {
+ F.inner.css('cursor', 'pointer').bind('click.fb', function(e) {
+ if (!$(e.target).is('a') && !$(e.target).parent().is('a')) {
+ F[ current.closeClick ? 'close' : 'next' ]();
+ }
+ });
+ }
+
+ //Create a close button
+ if (current.closeBtn) {
+ $(current.tpl.closeBtn).appendTo(F.skin).bind('click.fb', F.close);
+ }
+
+ //Create navigation arrows
+ if (current.arrows && F.group.length > 1) {
+ if (current.loop || current.index > 0) {
+ $(current.tpl.prev).appendTo(F.outer).bind('click.fb', F.prev);
+ }
+
+ if (current.loop || current.index < F.group.length - 1) {
+ $(current.tpl.next).appendTo(F.outer).bind('click.fb', F.next);
+ }
+ }
+
+ if (F.opts.autoPlay && !F.player.isActive) {
+ F.opts.autoPlay = false;
+
+ F.play();
+ }
+ },
+
+ _afterZoomOut: function () {
+ var current = F.current;
+
+ F.wrap.trigger('onReset').remove();
+
+ $.extend(F, {
+ group: {},
+ opts: {},
+ current: null,
+ isActive: false,
+ isOpened: false,
+ isOpen: false,
+ wrap: null,
+ skin: null,
+ outer: null,
+ inner: null
+ });
+
+ F.trigger('afterClose', current);
+ }
+ });
+
+ /*
+ * Default transitions
+ */
+
+ F.transitions = {
+ getOrigPosition: function () {
+ var current = F.current,
+ element = current.element,
+ padding = current.padding,
+ orig = $(current.orig),
+ pos = {},
+ width = 50,
+ height = 50,
+ viewport;
+
+ if (!orig.length && current.isDom && $(element).is(':visible')) {
+ orig = $(element).find('img:first');
+
+ if (!orig.length) {
+ orig = $(element);
+ }
+ }
+
+ if (orig.length) {
+ pos = orig.offset();
+
+ if (orig.is('img')) {
+ width = orig.outerWidth();
+ height = orig.outerHeight();
+ }
+
+ } else {
+ viewport = F.getViewport();
+
+ pos.top = viewport.y + (viewport.h - height) * 0.5;
+ pos.left = viewport.x + (viewport.w - width) * 0.5;
+ }
+
+ pos = {
+ top : getValue(pos.top - padding),
+ left : getValue(pos.left - padding),
+ width : getValue(width + padding * 2),
+ height : getValue(height + padding * 2)
+ };
+
+ return pos;
+ },
+
+ step: function (now, fx) {
+ var prop = fx.prop, value, ratio;
+
+ if (prop === 'width' || prop === 'height') {
+ value = Math.ceil(now - (F.current.padding * 2));
+
+ if (prop === 'height') {
+ ratio = (now - fx.start) / (fx.end - fx.start);
+
+ if (fx.start > fx.end) {
+ ratio = 1 - ratio;
+ }
+
+ value -= F.innerSpace * ratio;
+ }
+
+ F.inner[prop](value);
+ }
+ },
+
+ zoomIn: function () {
+ var wrap = F.wrap,
+ current = F.current,
+ effect = current.openEffect,
+ elastic = effect === 'elastic',
+ dim = current.dim,
+ startPos = $.extend({}, dim, F._getPosition( elastic )),
+ endPos = $.extend({opacity : 1}, startPos);
+
+ //Remove "position" property that breaks older IE
+ delete endPos.position;
+
+ if (elastic) {
+ startPos = this.getOrigPosition();
+
+ if (current.openOpacity) {
+ startPos.opacity = 0;
+ }
+
+ F.outer.add(F.inner).width('auto').height('auto');
+
+ } else if (effect === 'fade') {
+ startPos.opacity = 0;
+ }
+
+ wrap.css(startPos)
+ .show()
+ .animate(endPos, {
+ duration : effect === 'none' ? 0 : current.openSpeed,
+ easing : current.openEasing,
+ step : elastic ? this.step : null,
+ complete : F._afterZoomIn
+ });
+ },
+
+ zoomOut: function () {
+ var wrap = F.wrap,
+ current = F.current,
+ effect = current.openEffect,
+ elastic = effect === 'elastic',
+ endPos = {opacity : 0};
+
+ if (elastic) {
+ if (wrap.css('position') === 'fixed') {
+ wrap.css(F._getPosition(true));
+ }
+
+ endPos = this.getOrigPosition();
+
+ if (current.closeOpacity) {
+ endPos.opacity = 0;
+ }
+ }
+
+ wrap.animate(endPos, {
+ duration : effect === 'none' ? 0 : current.closeSpeed,
+ easing : current.closeEasing,
+ step : elastic ? this.step : null,
+ complete : F._afterZoomOut
+ });
+ },
+
+ changeIn: function () {
+ var wrap = F.wrap,
+ current = F.current,
+ effect = current.nextEffect,
+ elastic = effect === 'elastic',
+ startPos = F._getPosition( elastic ),
+ endPos = { opacity : 1 };
+
+ startPos.opacity = 0;
+
+ if (elastic) {
+ startPos.top = getValue(parseInt(startPos.top, 10) - 200);
+ endPos.top = '+=200px';
+ }
+
+ wrap.css(startPos)
+ .show()
+ .animate(endPos, {
+ duration : effect === 'none' ? 0 : current.nextSpeed,
+ easing : current.nextEasing,
+ complete : F._afterZoomIn
+ });
+ },
+
+ changeOut: function () {
+ var wrap = F.wrap,
+ current = F.current,
+ effect = current.prevEffect,
+ endPos = { opacity : 0 },
+ cleanUp = function () {
+ $(this).trigger('onReset').remove();
+ };
+
+ wrap.removeClass('fancybox-opened');
+
+ if (effect === 'elastic') {
+ endPos.top = '+=200px';
+ }
+
+ wrap.animate(endPos, {
+ duration : effect === 'none' ? 0 : current.prevSpeed,
+ easing : current.prevEasing,
+ complete : cleanUp
+ });
+ }
+ };
+
+ /*
+ * Overlay helper
+ */
+
+ F.helpers.overlay = {
+ overlay: null,
+
+ update: function () {
+ var width, scrollWidth, offsetWidth;
+
+ //Reset width/height so it will not mess
+ this.overlay.width('100%').height('100%');
+
+ if ($.browser.msie || isTouch) {
+ scrollWidth = Math.max(document.documentElement.scrollWidth, document.body.scrollWidth);
+ offsetWidth = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth);
+
+ width = scrollWidth < offsetWidth ? W.width() : scrollWidth;
+
+ } else {
+ width = D.width();
+ }
+
+ this.overlay.width(width).height(D.height());
+ },
+
+ beforeShow: function (opts) {
+ if (this.overlay) {
+ return;
+ }
+
+ opts = $.extend(true, {}, F.defaults.helpers.overlay, opts);
+
+ this.overlay = $('<div id="fancybox-overlay"></div>').css(opts.css).appendTo('body');
+
+ if (opts.closeClick) {
+ this.overlay.bind('click.fb', F.close);
+ }
+
+ if (F.current.fixed && !isTouch) {
+ this.overlay.addClass('overlay-fixed');
+
+ } else {
+ this.update();
+
+ this.onUpdate = function () {
+ this.update();
+ };
+ }
+
+ this.overlay.fadeTo(opts.speedIn, opts.opacity);
+ },
+
+ afterClose: function (opts) {
+ if (this.overlay) {
+ this.overlay.fadeOut(opts.speedOut || 0, function () {
+ $(this).remove();
+ });
+ }
+
+ this.overlay = null;
+ }
+ };
+
+ /*
+ * Title helper
+ */
+
+ F.helpers.title = {
+ beforeShow: function (opts) {
+ var title, text = F.current.title;
+
+ if (text) {
+ title = $('<div class="fancybox-title fancybox-title-' + opts.type + '-wrap">' + text + '</div>').appendTo('body');
+
+ if (opts.type === 'float') {
+ //This helps for some browsers
+ title.width(title.width());
+
+ title.wrapInner('<span class="child"></span>');
+
+ //Increase bottom margin so this title will also fit into viewport
+ F.current.margin[2] += Math.abs(parseInt(title.css('margin-bottom'), 10));
+ }
+
+ title.appendTo(opts.type === 'over' ? F.inner : (opts.type === 'outside' ? F.wrap : F.skin));
+ }
+ }
+ };
+
+ // jQuery plugin initialization
+ $.fn.fancybox = function (options) {
+ var that = $(this),
+ selector = this.selector || '',
+ index,
+ run = function(e) {
+ var what = this, idx = index, relType, relVal;
+
+ if (!(e.ctrlKey || e.altKey || e.shiftKey || e.metaKey) && !$(what).is('.fancybox-wrap')) {
+ e.preventDefault();
+
+ relType = options.groupAttr || 'data-fancybox-group';
+ relVal = $(what).attr(relType);
+
+ if (!relVal) {
+ relType = 'rel';
+ relVal = what[ relType ];
+ }
+
+ if (relVal && relVal !== '' && relVal !== 'nofollow') {
+ what = selector.length ? $(selector) : that;
+ what = what.filter('[' + relType + '="' + relVal + '"]');
+ idx = what.index(this);
+ }
+
+ options.index = idx;
+
+ F.open(what, options);
+ }
+ };
+
+ options = options || {};
+ index = options.index || 0;
+
+ if (selector) {
+ D.undelegate(selector, 'click.fb-start').delegate(selector, 'click.fb-start', run);
+
+ } else {
+ that.unbind('click.fb-start').bind('click.fb-start', run);
+ }
+
+ return this;
+ };
+
+ // Test for fixedPosition needs a body at doc ready
+ $(document).ready(function() {
+ F.defaults.fixed = $.support.fixedPosition || (!($.browser.msie && $.browser.version <= 6) && !isTouch);
+ });
+
+}(window, document, jQuery));
\ No newline at end of file
=== added file 'media/fancybox/jquery.fancybox.pack.js'
--- media/fancybox/jquery.fancybox.pack.js 1970-01-01 00:00:00 +0000
+++ media/fancybox/jquery.fancybox.pack.js 2012-07-04 18:20:26 +0000
@@ -0,0 +1,35 @@
+/*! fancyBox v2.0.6 fancyapps.com | fancyapps.com/fancybox/#license */
+(function(s,l,d,t){var m=d(s),q=d(l),a=d.fancybox=function(){a.open.apply(this,arguments)},u=!1,k=l.createTouch!==t,o=function(a){return"string"===d.type(a)},n=function(b,c){c&&o(b)&&0<b.indexOf("%")&&(b=a.getViewport()[c]/100*parseInt(b,10));return Math.round(b)+"px"};d.extend(a,{version:"2.0.5",defaults:{padding:15,margin:20,width:800,height:600,minWidth:100,minHeight:100,maxWidth:9999,maxHeight:9999,autoSize:!0,autoResize:!k,autoCenter:!k,fitToView:!0,aspectRatio:!1,topRatio:0.5,fixed:!1,scrolling:"auto",
+wrapCSS:"",arrows:!0,closeBtn:!0,closeClick:!1,nextClick:!1,mouseWheel:!0,autoPlay:!1,playSpeed:3E3,preload:3,modal:!1,loop:!0,ajax:{dataType:"html",headers:{"X-fancyBox":!0}},keys:{next:[13,32,34,39,40],prev:[8,33,37,38],close:[27]},tpl:{wrap:'<div class="fancybox-wrap"><div class="fancybox-skin"><div class="fancybox-outer"><div class="fancybox-inner"></div></div></div></div>',image:'<img class="fancybox-image" src="{href}" alt="" />',iframe:'<iframe class="fancybox-iframe" name="fancybox-frame{rnd}" frameborder="0" hspace="0"'+
+(d.browser.msie?' allowtransparency="true"':"")+"></iframe>",swf:'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%"><param name="wmode" value="transparent" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="{href}" /><embed src="{href}" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="100%" height="100%" wmode="transparent"></embed></object>',error:'<p class="fancybox-error">The requested content cannot be loaded.<br/>Please try again later.</p>',
+closeBtn:'<div title="Close" class="fancybox-item fancybox-close"></div>',next:'<a title="Next" class="fancybox-nav fancybox-next"><span></span></a>',prev:'<a title="Previous" class="fancybox-nav fancybox-prev"><span></span></a>'},openEffect:"fade",openSpeed:300,openEasing:"swing",openOpacity:!0,openMethod:"zoomIn",closeEffect:"fade",closeSpeed:300,closeEasing:"swing",closeOpacity:!0,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:300,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",
+prevSpeed:300,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:{speedIn:0,speedOut:300,opacity:0.8,css:{cursor:"pointer"},closeClick:!0},title:{type:"float"}}},group:{},opts:{},coming:null,current:null,isOpen:!1,isOpened:!1,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(b,c){a.close(!0);b&&!d.isArray(b)&&(b=b instanceof d?d(b).get():[b]);a.isActive=!0;a.opts=d.extend(!0,{},a.defaults,c);d.isPlainObject(c)&&c.keys!==t&&(a.opts.keys=c.keys?
+d.extend({},a.defaults.keys,c.keys):!1);a.group=b;a._start(a.opts.index||0)},cancel:function(){a.coming&&!1===a.trigger("onCancel")||(a.coming=null,a.hideLoading(),a.ajaxLoad&&a.ajaxLoad.abort(),a.ajaxLoad=null,a.imgPreload&&(a.imgPreload.onload=a.imgPreload.onabort=a.imgPreload.onerror=null))},close:function(b){a.cancel();a.current&&!1!==a.trigger("beforeClose")&&(a.unbindEvents(),!a.isOpen||b&&!0===b[0]?(d(".fancybox-wrap").stop().trigger("onReset").remove(),a._afterZoomOut()):(a.isOpen=a.isOpened=
+!1,d(".fancybox-item, .fancybox-nav").remove(),a.wrap.stop(!0).removeClass("fancybox-opened"),a.inner.css("overflow","hidden"),a.transitions[a.current.closeMethod]()))},play:function(b){var c=function(){clearTimeout(a.player.timer)},e=function(){c();a.current&&a.player.isActive&&(a.player.timer=setTimeout(a.next,a.current.playSpeed))},f=function(){c();d("body").unbind(".player");a.player.isActive=!1;a.trigger("onPlayEnd")};if(a.player.isActive||b&&!1===b[0])f();else if(a.current&&(a.current.loop||
+a.current.index<a.group.length-1))a.player.isActive=!0,d("body").bind({"afterShow.player onUpdate.player":e,"onCancel.player beforeClose.player":f,"beforeLoad.player":c}),e(),a.trigger("onPlayStart")},next:function(){a.current&&a.jumpto(a.current.index+1)},prev:function(){a.current&&a.jumpto(a.current.index-1)},jumpto:function(b){a.current&&(b=parseInt(b,10),1<a.group.length&&a.current.loop&&(b>=a.group.length?b=0:0>b&&(b=a.group.length-1)),a.group[b]!==t&&(a.cancel(),a._start(b)))},reposition:function(b,
+c){var e;a.isOpen&&(e=a._getPosition(c),b&&"scroll"===b.type?(delete e.position,a.wrap.stop(!0,!0).animate(e,200)):a.wrap.css(e))},update:function(b){a.isOpen&&(u||setTimeout(function(){var c=a.current,e=!b||b&&"orientationchange"===b.type;if(u&&(u=!1,c)){if(!b||"scroll"!==b.type||e)c.autoSize&&"iframe"!==c.type&&(a.inner.height("auto"),c.height=a.inner.height()),(c.autoResize||e)&&a._setDimension(),c.canGrow&&"iframe"!==c.type&&a.inner.height("auto");(c.autoCenter||e)&&a.reposition(b);a.trigger("onUpdate")}},
+200),u=!0)},toggle:function(){a.isOpen&&(a.current.fitToView=!a.current.fitToView,a.update())},hideLoading:function(){q.unbind("keypress.fb");d("#fancybox-loading").remove()},showLoading:function(){a.hideLoading();q.bind("keypress.fb",function(b){27===b.keyCode&&(b.preventDefault(),a.cancel())});d('<div id="fancybox-loading"><div></div></div>').click(a.cancel).appendTo("body")},getViewport:function(){return{x:m.scrollLeft(),y:m.scrollTop(),w:k&&s.innerWidth?s.innerWidth:m.width(),h:k&&s.innerHeight?
+s.innerHeight:m.height()}},unbindEvents:function(){a.wrap&&a.wrap.unbind(".fb");q.unbind(".fb");m.unbind(".fb")},bindEvents:function(){var b=a.current,c=b.keys;b&&(m.bind("resize.fb orientationchange.fb"+(b.autoCenter&&!b.fixed?" scroll.fb":""),a.update),c&&q.bind("keydown.fb",function(b){var f;f=b.target||b.srcElement;if(!b.ctrlKey&&!b.altKey&&!b.shiftKey&&!b.metaKey&&(!f||!f.type&&!d(f).is("[contenteditable]")))f=b.keyCode,-1<d.inArray(f,c.close)?(a.close(),b.preventDefault()):-1<d.inArray(f,c.next)?
+(a.next(),b.preventDefault()):-1<d.inArray(f,c.prev)&&(a.prev(),b.preventDefault())}),d.fn.mousewheel&&b.mouseWheel&&1<a.group.length&&a.wrap.bind("mousewheel.fb",function(b,c){var d=b.target||null;if(0!==c&&(!d||0===d.clientHeight||d.scrollHeight===d.clientHeight&&d.scrollWidth===d.clientWidth))b.preventDefault(),a[0<c?"prev":"next"]()}))},trigger:function(b,c){var e,f=c||a[-1<d.inArray(b,["onCancel","beforeLoad","afterLoad"])?"coming":"current"];if(f){d.isFunction(f[b])&&(e=f[b].apply(f,Array.prototype.slice.call(arguments,
+1)));if(!1===e)return!1;f.helpers&&d.each(f.helpers,function(c,e){if(e&&d.isPlainObject(a.helpers[c])&&d.isFunction(a.helpers[c][b]))a.helpers[c][b](e,f)});d.event.trigger(b+".fb")}},isImage:function(a){return o(a)&&a.match(/\.(jpe?g|gif|png|bmp)((\?|#).*)?$/i)},isSWF:function(a){return o(a)&&a.match(/\.(swf)((\?|#).*)?$/i)},_start:function(b){var c={},e=a.group[b]||null,f,g,i;if(e&&(e.nodeType||e instanceof d))f=!0,d.metadata&&(c=d(e).metadata());c=d.extend(!0,{},a.opts,{index:b,element:e},d.isPlainObject(e)?
+e:c);d.each(["href","title","content","type"],function(b,g){c[g]=a.opts[g]||f&&d(e).attr(g)||c[g]||null});"number"===typeof c.margin&&(c.margin=[c.margin,c.margin,c.margin,c.margin]);c.modal&&d.extend(!0,c,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,mouseWheel:!1,keys:null,helpers:{overlay:{css:{cursor:"auto"},closeClick:!1}}});a.coming=c;if(!1===a.trigger("beforeLoad"))a.coming=null;else{g=c.type;b=c.href||e;g||(f&&(g=d(e).data("fancybox-type"),g||(g=(g=e.className.match(/fancybox\.(\w+)/))?
+g[1]:null)),!g&&o(b)&&(a.isImage(b)?g="image":a.isSWF(b)?g="swf":b.match(/^#/)&&(g="inline")),g||(g=f?"inline":"html"),c.type=g);if("inline"===g||"html"===g){if(c.content||(c.content="inline"===g?d(o(b)?b.replace(/.*(?=#[^\s]+$)/,""):b):e),!c.content||!c.content.length)g=null}else b||(g=null);"ajax"===g&&o(b)&&(i=b.split(/\s+/,2),b=i.shift(),c.selector=i.shift());c.href=b;c.group=a.group;c.isDom=f;switch(g){case "image":a._loadImage();break;case "ajax":a._loadAjax();break;case "inline":case "iframe":case "swf":case "html":a._afterLoad();
+break;default:a._error("type")}}},_error:function(b){a.hideLoading();d.extend(a.coming,{type:"html",autoSize:!0,minWidth:0,minHeight:0,padding:15,hasError:b,content:a.coming.tpl.error});a._afterLoad()},_loadImage:function(){var b=a.imgPreload=new Image;b.onload=function(){this.onload=this.onerror=null;a.coming.width=this.width;a.coming.height=this.height;a._afterLoad()};b.onerror=function(){this.onload=this.onerror=null;a._error("image")};b.src=a.coming.href;(b.complete===t||!b.complete)&&a.showLoading()},
+_loadAjax:function(){a.showLoading();a.ajaxLoad=d.ajax(d.extend({},a.coming.ajax,{url:a.coming.href,error:function(b,c){a.coming&&"abort"!==c?a._error("ajax",b):a.hideLoading()},success:function(b,c){"success"===c&&(a.coming.content=b,a._afterLoad())}}))},_preloadImages:function(){var b=a.group,c=a.current,e=b.length,f,g,i,h=Math.min(c.preload,e-1);if(c.preload&&!(2>b.length))for(i=1;i<=h;i+=1)if(f=b[(c.index+i)%e],g=f.href||d(f).attr("href")||f,"image"===f.type||a.isImage(g))(new Image).src=g},_afterLoad:function(){a.hideLoading();
+!a.coming||!1===a.trigger("afterLoad",a.current)?a.coming=!1:(a.isOpened?(d(".fancybox-item, .fancybox-nav").remove(),a.wrap.stop(!0).removeClass("fancybox-opened"),a.inner.css("overflow","hidden"),a.transitions[a.current.prevMethod]()):(d(".fancybox-wrap").stop().trigger("onReset").remove(),a.trigger("afterClose")),a.unbindEvents(),a.isOpen=!1,a.current=a.coming,a.wrap=d(a.current.tpl.wrap).addClass("fancybox-"+(k?"mobile":"desktop")+" fancybox-type-"+a.current.type+" fancybox-tmp "+a.current.wrapCSS).appendTo("body"),
+a.skin=d(".fancybox-skin",a.wrap).css("padding",n(a.current.padding)),a.outer=d(".fancybox-outer",a.wrap),a.inner=d(".fancybox-inner",a.wrap),a._setContent())},_setContent:function(){var b=a.current,c=b.content,e=b.type,f=b.minWidth,g=b.minHeight,i=b.maxWidth,h=b.maxHeight;switch(e){case "inline":case "ajax":case "html":b.selector?c=d("<div>").html(c).find(b.selector):c instanceof d&&(c.parent().hasClass("fancybox-inner")&&c.parents(".fancybox-wrap").unbind("onReset"),c=c.show().detach(),d(a.wrap).bind("onReset",
+function(){c.appendTo("body").hide()}));b.autoSize&&(f=d('<div class="fancybox-wrap '+a.current.wrapCSS+' fancybox-tmp"></div>').appendTo("body").css({minWidth:n(f,"w"),minHeight:n(g,"h"),maxWidth:n(i,"w"),maxHeight:n(h,"h")}).append(c),b.width=f.width(),b.height=f.height(),f.width(a.current.width),f.height()>b.height&&(f.width(b.width+1),b.width=f.width(),b.height=f.height()),c=f.contents().detach(),f.remove());break;case "image":c=b.tpl.image.replace("{href}",b.href);b.aspectRatio=!0;break;case "swf":c=
+b.tpl.swf.replace(/\{width\}/g,b.width).replace(/\{height\}/g,b.height).replace(/\{href\}/g,b.href);break;case "iframe":c=d(b.tpl.iframe.replace("{rnd}",(new Date).getTime())).attr("scrolling",b.scrolling).attr("src",b.href),b.scrolling=k?"scroll":"auto"}if("image"===e||"swf"===e)b.autoSize=!1,b.scrolling="visible";"iframe"===e&&b.autoSize?(a.showLoading(),a._setDimension(),a.inner.css("overflow",b.scrolling),c.bind({onCancel:function(){d(this).unbind();a._afterZoomOut()},load:function(){a.hideLoading();
+try{this.contentWindow.document.location&&(a.current.height=d(this).contents().find("body").height())}catch(b){a.current.autoSize=!1}a[a.isOpen?"_afterZoomIn":"_beforeShow"]()}}).appendTo(a.inner)):(a.inner.append(c),a._beforeShow())},_beforeShow:function(){a.coming=null;a.trigger("beforeShow");a._setDimension();a.wrap.hide().removeClass("fancybox-tmp");a.bindEvents();a._preloadImages();a.transitions[a.isOpened?a.current.nextMethod:a.current.openMethod]()},_setDimension:function(){var b=a.wrap,c=
+a.inner,e=a.current,f=a.getViewport(),g=e.margin,i=2*e.padding,h=e.width,j=e.height,r=e.maxWidth+i,k=e.maxHeight+i,l=e.minWidth+i,m=e.minHeight+i,p;f.w-=g[1]+g[3];f.h-=g[0]+g[2];o(h)&&0<h.indexOf("%")&&(h=(f.w-i)*parseFloat(h)/100);o(j)&&0<j.indexOf("%")&&(j=(f.h-i)*parseFloat(j)/100);g=h/j;h+=i;j+=i;e.fitToView&&(r=Math.min(f.w,r),k=Math.min(f.h,k));if(e.aspectRatio){if(h>r&&(h=r,j=(h-i)/g+i),j>k&&(j=k,h=(j-i)*g+i),h<l&&(h=l,j=(h-i)/g+i),j<m)j=m,h=(j-i)*g+i}else h=Math.max(l,Math.min(h,r)),j=Math.max(m,
+Math.min(j,k));h=Math.round(h);j=Math.round(j);d(b.add(c)).width("auto").height("auto");c.width(h-i).height(j-i);b.width(h);p=b.height();if(h>r||p>k)for(;(h>r||p>k)&&h>l&&p>m;)j-=10,e.aspectRatio?(h=Math.round((j-i)*g+i),h<l&&(h=l,j=(h-i)/g+i)):h-=10,c.width(h-i).height(j-i),b.width(h),p=b.height();e.dim={width:n(h),height:n(p)};e.canGrow=e.autoSize&&j>m&&j<k;e.canShrink=!1;e.canExpand=!1;if(h-i<e.width||j-i<e.height)e.canExpand=!0;else if((h>f.w||p>f.h)&&h>l&&j>m)e.canShrink=!0;a.innerSpace=p-i-
+c.height()},_getPosition:function(b){var c=a.current,e=a.getViewport(),f=c.margin,d=a.wrap.width()+f[1]+f[3],i=a.wrap.height()+f[0]+f[2],h={position:"absolute",top:f[0]+e.y,left:f[3]+e.x};c.autoCenter&&c.fixed&&!b&&i<=e.h&&d<=e.w&&(h={position:"fixed",top:f[0],left:f[3]});h.top=n(Math.max(h.top,h.top+(e.h-i)*c.topRatio));h.left=n(Math.max(h.left,h.left+0.5*(e.w-d)));return h},_afterZoomIn:function(){var b=a.current,c=b?b.scrolling:"no";if(b&&(a.isOpen=a.isOpened=!0,a.wrap.addClass("fancybox-opened"),
+a.inner.css("overflow","yes"===c?"scroll":"no"===c?"hidden":c),a.trigger("afterShow"),a.update(),(b.closeClick||b.nextClick)&&a.inner.css("cursor","pointer").bind("click.fb",function(c){if(!d(c.target).is("a")&&!d(c.target).parent().is("a"))a[b.closeClick?"close":"next"]()}),b.closeBtn&&d(b.tpl.closeBtn).appendTo(a.skin).bind("click.fb",a.close),b.arrows&&1<a.group.length&&((b.loop||0<b.index)&&d(b.tpl.prev).appendTo(a.outer).bind("click.fb",a.prev),(b.loop||b.index<a.group.length-1)&&d(b.tpl.next).appendTo(a.outer).bind("click.fb",
+a.next)),a.opts.autoPlay&&!a.player.isActive))a.opts.autoPlay=!1,a.play()},_afterZoomOut:function(){var b=a.current;a.wrap.trigger("onReset").remove();d.extend(a,{group:{},opts:{},current:null,isActive:!1,isOpened:!1,isOpen:!1,wrap:null,skin:null,outer:null,inner:null});a.trigger("afterClose",b)}});a.transitions={getOrigPosition:function(){var b=a.current,c=b.element,e=b.padding,f=d(b.orig),g={},i=50,h=50;!f.length&&b.isDom&&d(c).is(":visible")&&(f=d(c).find("img:first"),f.length||(f=d(c)));f.length?
+(g=f.offset(),f.is("img")&&(i=f.outerWidth(),h=f.outerHeight())):(b=a.getViewport(),g.top=b.y+0.5*(b.h-h),g.left=b.x+0.5*(b.w-i));return g={top:n(g.top-e),left:n(g.left-e),width:n(i+2*e),height:n(h+2*e)}},step:function(b,c){var e=c.prop,d,g;if("width"===e||"height"===e)d=Math.ceil(b-2*a.current.padding),"height"===e&&(g=(b-c.start)/(c.end-c.start),c.start>c.end&&(g=1-g),d-=a.innerSpace*g),a.inner[e](d)},zoomIn:function(){var b=a.wrap,c=a.current,e=c.openEffect,f="elastic"===e,g=d.extend({},c.dim,
+a._getPosition(f)),i=d.extend({opacity:1},g);delete i.position;f?(g=this.getOrigPosition(),c.openOpacity&&(g.opacity=0),a.outer.add(a.inner).width("auto").height("auto")):"fade"===e&&(g.opacity=0);b.css(g).show().animate(i,{duration:"none"===e?0:c.openSpeed,easing:c.openEasing,step:f?this.step:null,complete:a._afterZoomIn})},zoomOut:function(){var b=a.wrap,c=a.current,d=c.openEffect,f="elastic"===d,g={opacity:0};f&&("fixed"===b.css("position")&&b.css(a._getPosition(!0)),g=this.getOrigPosition(),c.closeOpacity&&
+(g.opacity=0));b.animate(g,{duration:"none"===d?0:c.closeSpeed,easing:c.closeEasing,step:f?this.step:null,complete:a._afterZoomOut})},changeIn:function(){var b=a.wrap,c=a.current,d=c.nextEffect,f="elastic"===d,g=a._getPosition(f),i={opacity:1};g.opacity=0;f&&(g.top=n(parseInt(g.top,10)-200),i.top="+=200px");b.css(g).show().animate(i,{duration:"none"===d?0:c.nextSpeed,easing:c.nextEasing,complete:a._afterZoomIn})},changeOut:function(){var b=a.wrap,c=a.current,e=c.prevEffect,f={opacity:0};b.removeClass("fancybox-opened");
+"elastic"===e&&(f.top="+=200px");b.animate(f,{duration:"none"===e?0:c.prevSpeed,easing:c.prevEasing,complete:function(){d(this).trigger("onReset").remove()}})}};a.helpers.overlay={overlay:null,update:function(){var a,c;this.overlay.width("100%").height("100%");d.browser.msie||k?(a=Math.max(l.documentElement.scrollWidth,l.body.scrollWidth),c=Math.max(l.documentElement.offsetWidth,l.body.offsetWidth),a=a<c?m.width():a):a=q.width();this.overlay.width(a).height(q.height())},beforeShow:function(b){this.overlay||
+(b=d.extend(!0,{},a.defaults.helpers.overlay,b),this.overlay=d('<div id="fancybox-overlay"></div>').css(b.css).appendTo("body"),b.closeClick&&this.overlay.bind("click.fb",a.close),a.current.fixed&&!k?this.overlay.addClass("overlay-fixed"):(this.update(),this.onUpdate=function(){this.update()}),this.overlay.fadeTo(b.speedIn,b.opacity))},afterClose:function(a){this.overlay&&this.overlay.fadeOut(a.speedOut||0,function(){d(this).remove()});this.overlay=null}};a.helpers.title={beforeShow:function(b){var c;
+if(c=a.current.title)c=d('<div class="fancybox-title fancybox-title-'+b.type+'-wrap">'+c+"</div>").appendTo("body"),"float"===b.type&&(c.width(c.width()),c.wrapInner('<span class="child"></span>'),a.current.margin[2]+=Math.abs(parseInt(c.css("margin-bottom"),10))),c.appendTo("over"===b.type?a.inner:"outside"===b.type?a.wrap:a.skin)}};d.fn.fancybox=function(b){var c=d(this),e=this.selector||"",f,g=function(g){var h=this,j=f,k;!g.ctrlKey&&!g.altKey&&!g.shiftKey&&!g.metaKey&&!d(h).is(".fancybox-wrap")&&
+(g.preventDefault(),g=b.groupAttr||"data-fancybox-group",k=d(h).attr(g),k||(g="rel",k=h[g]),k&&""!==k&&"nofollow"!==k&&(h=e.length?d(e):c,h=h.filter("["+g+'="'+k+'"]'),j=h.index(this)),b.index=j,a.open(h,b))},b=b||{};f=b.index||0;e?q.undelegate(e,"click.fb-start").delegate(e,"click.fb-start",g):c.unbind("click.fb-start").bind("click.fb-start",g);return this};d(l).ready(function(){a.defaults.fixed=d.support.fixedPosition||!(d.browser.msie&&6>=d.browser.version)&&!k})})(window,document,jQuery);
\ No newline at end of file
=== added file 'media/forum/img/closed.png'
Binary files media/forum/img/closed.png 1970-01-01 00:00:00 +0000 and media/forum/img/closed.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/forum/img/delete.png'
Binary files media/forum/img/delete.png 1970-01-01 00:00:00 +0000 and media/forum/img/delete.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/forum/img/doc_big_work.png'
Binary files media/forum/img/doc_big_work.png 1970-01-01 00:00:00 +0000 and media/forum/img/doc_big_work.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/forum/img/doc_big_work_star.png'
Binary files media/forum/img/doc_big_work_star.png 1970-01-01 00:00:00 +0000 and media/forum/img/doc_big_work_star.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/forum/img/edit.png'
Binary files media/forum/img/edit.png 1970-01-01 00:00:00 +0000 and media/forum/img/edit.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/forum/img/folder_big_work.png'
Binary files media/forum/img/folder_big_work.png 1970-01-01 00:00:00 +0000 and media/forum/img/folder_big_work.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/forum/img/folder_big_work_star.png'
Binary files media/forum/img/folder_big_work_star.png 1970-01-01 00:00:00 +0000 and media/forum/img/folder_big_work_star.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/forum/img/new_topic.png'
Binary files media/forum/img/new_topic.png 1970-01-01 00:00:00 +0000 and media/forum/img/new_topic.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/forum/img/open.png'
Binary files media/forum/img/open.png 1970-01-01 00:00:00 +0000 and media/forum/img/open.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/forum/img/permalink.png'
Binary files media/forum/img/permalink.png 1970-01-01 00:00:00 +0000 and media/forum/img/permalink.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/forum/img/permalink_hover.png'
Binary files media/forum/img/permalink_hover.png 1970-01-01 00:00:00 +0000 and media/forum/img/permalink_hover.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/forum/img/preview.png'
Binary files media/forum/img/preview.png 1970-01-01 00:00:00 +0000 and media/forum/img/preview.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/forum/img/quote.png'
Binary files media/forum/img/quote.png 1970-01-01 00:00:00 +0000 and media/forum/img/quote.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/forum/img/send.png'
Binary files media/forum/img/send.png 1970-01-01 00:00:00 +0000 and media/forum/img/send.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/forum/img/send_pm.png'
Binary files media/forum/img/send_pm.png 1970-01-01 00:00:00 +0000 and media/forum/img/send_pm.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/forum/img/sticky.png'
Binary files media/forum/img/sticky.png 1970-01-01 00:00:00 +0000 and media/forum/img/sticky.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/forum/img/subscribe.png'
Binary files media/forum/img/subscribe.png 1970-01-01 00:00:00 +0000 and media/forum/img/subscribe.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/forum/img/top.png'
Binary files media/forum/img/top.png 1970-01-01 00:00:00 +0000 and media/forum/img/top.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/forum/img/unstick.png'
Binary files media/forum/img/unstick.png 1970-01-01 00:00:00 +0000 and media/forum/img/unstick.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/forum/img/unsubscribe.png'
Binary files media/forum/img/unsubscribe.png 1970-01-01 00:00:00 +0000 and media/forum/img/unsubscribe.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/img/black20.png'
Binary files media/img/black20.png 1970-01-01 00:00:00 +0000 and media/img/black20.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/img/black50.png'
Binary files media/img/black50.png 1970-01-01 00:00:00 +0000 and media/img/black50.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/img/but1.png'
Binary files media/img/but1.png 1970-01-01 00:00:00 +0000 and media/img/but1.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/img/delete.png'
Binary files media/img/delete.png 1970-01-01 00:00:00 +0000 and media/img/delete.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/img/download.png'
Binary files media/img/download.png 1970-01-01 00:00:00 +0000 and media/img/download.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/img/easter.png'
Binary files media/img/easter.png 1970-01-01 00:00:00 +0000 and media/img/easter.png 2012-07-04 18:20:26 +0000 differ
=== added directory 'media/img/lightbox'
=== added file 'media/img/lightbox/lightbox-blank.gif'
Binary files media/img/lightbox/lightbox-blank.gif 1970-01-01 00:00:00 +0000 and media/img/lightbox/lightbox-blank.gif 2012-07-04 18:20:26 +0000 differ
=== added file 'media/img/lightbox/lightbox-btn-close.gif'
Binary files media/img/lightbox/lightbox-btn-close.gif 1970-01-01 00:00:00 +0000 and media/img/lightbox/lightbox-btn-close.gif 2012-07-04 18:20:26 +0000 differ
=== added file 'media/img/lightbox/lightbox-btn-next.gif'
Binary files media/img/lightbox/lightbox-btn-next.gif 1970-01-01 00:00:00 +0000 and media/img/lightbox/lightbox-btn-next.gif 2012-07-04 18:20:26 +0000 differ
=== added file 'media/img/lightbox/lightbox-btn-prev.gif'
Binary files media/img/lightbox/lightbox-btn-prev.gif 1970-01-01 00:00:00 +0000 and media/img/lightbox/lightbox-btn-prev.gif 2012-07-04 18:20:26 +0000 differ
=== added file 'media/img/lightbox/lightbox-ico-loading.gif'
Binary files media/img/lightbox/lightbox-ico-loading.gif 1970-01-01 00:00:00 +0000 and media/img/lightbox/lightbox-ico-loading.gif 2012-07-04 18:20:26 +0000 differ
=== added file 'media/img/parchment.png'
Binary files media/img/parchment.png 1970-01-01 00:00:00 +0000 and media/img/parchment.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/img/replied.png'
Binary files media/img/replied.png 1970-01-01 00:00:00 +0000 and media/img/replied.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/img/smileys/face-confused.png'
Binary files media/img/smileys/face-confused.png 1970-01-01 00:00:00 +0000 and media/img/smileys/face-confused.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/img/smileys/face-cool.png'
Binary files media/img/smileys/face-cool.png 1970-01-01 00:00:00 +0000 and media/img/smileys/face-cool.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/img/smileys/face-mad.png'
Binary files media/img/smileys/face-mad.png 1970-01-01 00:00:00 +0000 and media/img/smileys/face-mad.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/img/smileys/face-shock.png'
Binary files media/img/smileys/face-shock.png 1970-01-01 00:00:00 +0000 and media/img/smileys/face-shock.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/img/smileys/face-tongue.png'
Binary files media/img/smileys/face-tongue.png 1970-01-01 00:00:00 +0000 and media/img/smileys/face-tongue.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/img/smileys/face-upset.png'
Binary files media/img/smileys/face-upset.png 1970-01-01 00:00:00 +0000 and media/img/smileys/face-upset.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/img/undelete.png'
Binary files media/img/undelete.png 1970-01-01 00:00:00 +0000 and media/img/undelete.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/img/welcome.png'
Binary files media/img/welcome.png 1970-01-01 00:00:00 +0000 and media/img/welcome.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/img/wood.png'
Binary files media/img/wood.png 1970-01-01 00:00:00 +0000 and media/img/wood.png 2012-07-04 18:20:26 +0000 differ
=== added file 'media/js/scripts.js'
--- media/js/scripts.js 1970-01-01 00:00:00 +0000
+++ media/js/scripts.js 2012-07-04 18:20:26 +0000
@@ -0,0 +1,15 @@
+$(document).ready(function() {
+ $('[placeholder]').focus(function() {
+ var input = $(this);
+ if (input.val() == input.attr('placeholder')) {
+ input.val('');
+ input.removeClass('placeholder');
+ }
+ }).blur(function() {
+ var input = $(this);
+ if (input.val() == '' || input.val() == input.attr('placeholder')) {
+ input.addClass('placeholder');
+ input.val(input.attr('placeholder'));
+ }
+ }).blur();
+});
=== added directory 'media/wlprofile'
=== added file 'media/wlprofile/anonymous.png'
Binary files media/wlprofile/anonymous.png 1970-01-01 00:00:00 +0000 and media/wlprofile/anonymous.png 2012-07-04 18:20:26 +0000 differ
=== removed directory 'online_help/templates'
=== removed file 'online_help/templates/inlines/display_building.html'
--- online_help/templates/inlines/display_building.html 2010-11-01 19:02:28 +0000
+++ online_help/templates/inlines/display_building.html 1970-01-01 00:00:00 +0000
@@ -1,232 +0,0 @@
-{% comment %}
- vim:ft=htmldjango
-{% endcomment %}
-
- <!-- Header -->
- <tr>
-
- {% if b.has_build_cost and b.has_outputs and b.has_stored_wares %}
- <!-- With build cost and production and stored wares 111 -->
- <th width="152px"><a href="{% url help_building_details b.tribe.name b.name %}" title="{{ b.displayname }}" name="{{ b.name }}">{{b.displayname|title }}</a></th>
- <th>Description</th>
- <th>Build cost</th>
- <th>Produces</th>
- <th>Stores</th>
- {% endif %}
-
- {% if b.has_build_cost and b.has_outputs and not b.has_stored_wares %}
- <!-- With build cost and production 110 -->
- <th width="152px"><a href="{% url help_building_details b.tribe.name b.name %}" title="{{ b.displayname }}" name="{{ b.name }}">{{b.displayname|title }}</a></th>
- <th colspan="2">Description</th>
- <th>Build cost</th>
- <th>Produces</th>
- {% endif %}
-
- {% if b.has_build_cost and not b.has_outputs and b.has_stored_wares %}
- <!-- With build cost and stored wares 101 -->
- <th width="152px"><a href="{% url help_building_details b.tribe.name b.name %}" title="{{ b.displayname }}" name="{{ b.name }}">{{b.displayname|title }}</a></th>
- <th colspan="2">Description</th>
- <th>Build cost</th>
- <th>Stores</th>
- {% endif %}
-
- {% if not b.has_build_cost and b.has_outputs and b.has_stored_wares %}
- <!-- With production and stored wares 011 -->
- <th width="152px"><a href="{% url help_building_details b.tribe.name b.name %}" title="{{ b.displayname }}" name="{{ b.name }}">{{b.displayname|title }}</a></th>
- <th colspan="2">Description</th>
- <th>Produces</th>
- <th>Stores</th>
- {% endif %}
-
- {% if b.has_build_cost and not b.has_outputs and not b.has_stored_wares %}
- <!-- With build cost 100 -->
- <th width="152px"><a href="{% url help_building_details b.tribe.name b.name %}" title="{{ b.displayname }}" name="{{ b.name }}">{{b.displayname|title }}</a></th>
- <th colspan="3">Description</th>
- <th>Build cost</th>
- {% endif %}
-
- {% if not b.has_build_cost and b.has_outputs and not b.has_stored_wares %}
- <!-- With production 010 -->
- <th width="152px"><a href="{% url help_building_details b.tribe.name b.name %}" title="{{ b.displayname }}" name="{{ b.name }}">{{b.displayname|title }}</a></th>
- <th colspan="3">Description</th>
- <th>Produces</th>
- {% endif %}
-
- {% if not b.has_build_cost and b.has_outputs and not b.has_stored_wares %}
- <!-- With stored wares 001 -->
- <th width="152px"><a href="{% url help_building_details b.tribe.name b.name %}" title="{{ b.displayname }}" name="{{ b.name }}">{{b.displayname|title }}</a></th>
- <th colspan="3">Description</th>
- <th>Stores</th>
- {% endif %}
-
- {% if not b.has_outputs and not b.has_build_cost and not b.has_stored_wares %}
- <!-- For headquaters 000 -->
- <th width="152px"><a href="{% url help_building_details b.tribe.name b.name %}" title="{{ b.displayname }}" name="{{ b.name }}">{{b.displayname|title }}</a></th>
- <th colspan="4">Description</th>
- {% endif %}
- </tr>
-
- <!-- Content -->
- <tr class="odd">
-
- {% if b.has_build_cost and b.has_outputs and b.has_stored_wares %}
- <!-- With build cost and production and stored wares 111 -->
- <td><a href="{% url help_building_details b.tribe.name b.name %}" title="{{ b.displayname }}"><img alt="{{b.displayname}}" src="{{ b.image_url }}" /></a></td>
- <td>{{ b.help }}</td>
- <td>
- {% for costs in b.get_build_cost %}
- {% for w in costs %}
- <a href="{% url help_ware_details w.tribe.name w.name %}" title="{{w.displayname}}"><img src="{{ w.image_url }}" alt="{{ w.name }}" /></a>
- {% endfor %}
- <br />
- {%endfor%}
- </td>
- <td>
- {% if b.produces and not b.trains %}
- {% for w in b.get_ware_outputs %}
- <a href="{% url help_ware_details w.tribe.name w.name %}" title="{{w.displayname}}"><img src="{{ w.image_url }}" alt="{{ w.name }}" /></a>
- {%endfor%}
- {% endif %}
- {% if b.trains and not b.produces %}
- {% for wor in b.get_worker_outputs %}
- <img src="{{ wor.image_url }}" alt="{{ wor.name }}" />
- {%endfor%}
- {% endif %}
- </td>
- <td>
- {% for costs in b.get_stored_wares %}
- {% for w in costs %}
- <a href="{% url help_ware_details w.tribe.name w.name %}" title="{{w.displayname}}"><img src="{{ w.image_url }}" alt="{{ w.name }}" /></a>
- {% endfor %}
- <br />
- {%endfor%}
- </td>
- {% endif %}
-
- {% if b.has_build_cost and b.has_outputs and not b.has_stored_wares %}
- <!-- With build cost and production 110 -->
- <td><a href="{% url help_building_details b.tribe.name b.name %}" title="{{ b.displayname }}"><img alt="{{b.displayname}}" src="{{ b.image_url }}" /></a></td>
- <td colspan="2">{{ b.help }}</td>
- <td>
- {% for costs in b.get_build_cost %}
- {% for w in costs %}
- <a href="{% url help_ware_details w.tribe.name w.name %}" title="{{w.displayname}}"><img src="{{ w.image_url }}" alt="{{ w.name }}" /></a>
- {% endfor %}
- <br />
- {%endfor%}
- </td>
- <td>
- {% if b.produces and not b.trains %}
- {% for w in b.get_ware_outputs %}
- <a href="{% url help_ware_details w.tribe.name w.name %}" title="{{w.displayname}}"><img src="{{ w.image_url }}" alt="{{ w.name }}" /></a>
- {%endfor%}
- {% endif %}
- {% if b.trains and not b.produces %}
- {% for wor in b.get_worker_outputs %}
- <img src="{{ wor.image_url }}" alt="{{ wor.name }}" />
- {%endfor%}
- {% endif %}
- </td>
- {% endif %}
-
- {% if b.has_build_cost and not b.has_outputs and b.has_stored_wares%}
- <!-- With build cost and stored wares 101 -->
- <td><a href="{% url help_building_details b.tribe.name b.name %}" title="{{ b.displayname }}"><img alt="{{b.displayname}}" src="{{ b.image_url }}" /></a></td>
- <td colspan="2">{{ b.help }}</td>
- <td>
- {% for costs in b.get_build_cost %}
- {% for w in costs %}
- <a href="{% url help_ware_details w.tribe.name w.name %}" title="{{w.displayname}}"><img src="{{ w.image_url }}" alt="{{ w.name }}" /></a>
- {% endfor %}
- <br />
- {%endfor%}
- </td>
- <td>
- {% for costs in b.get_stored_wares %}
- {% for w in costs %}
- <a href="{% url help_ware_details w.tribe.name w.name %}" title="{{w.displayname}}"><img src="{{ w.image_url }}" alt="{{ w.name }}" /></a>
- {% endfor %}
- <br />
- {%endfor%}
- </td>
- {% endif %}
-
- {% if not b.has_build_cost and b.has_outputs and b.has_stored_wares %}
- <!-- With production and stored wares 011 -->
- <td><a href="{% url help_building_details b.tribe.name b.name %}" title="{{ b.displayname }}"><img alt="{{b.displayname}}" src="{{ b.image_url }}" /></a></td>
- <td colspan="2">{{ b.help }}</td>
- <td>
- {% if b.produces and not b.trains %}
- {% for w in b.get_ware_outputs %}
- <a href="{% url help_ware_details w.tribe.name w.name %}" title="{{w.displayname}}"><img src="{{ w.image_url }}" alt="{{ w.name }}" /></a>
- {%endfor%}
- {% endif %}
- {% if b.trains and not b.produces %}
- {% for wor in b.get_worker_outputs %}
- <img src="{{ wor.image_url }}" alt="{{ wor.name }}" />
- {%endfor%}
- {% endif %}
- </td>
- <td>
- {% for costs in b.get_stored_wares %}
- {% for w in costs %}
- <a href="{% url help_ware_details w.tribe.name w.name %}" title="{{w.displayname}}"><img src="{{ w.image_url }}" alt="{{ w.name }}" /></a>
- {% endfor %}
- <br />
- {%endfor%}
- </td>
- {% endif %}
-
- {% if b.has_build_cost and not b.has_outputs and not b.has_stored_wares %}
- <!-- With build cost 100 -->
- <td><a href="{% url help_building_details b.tribe.name b.name %}" title="{{ b.displayname }}"><img alt="{{b.displayname}}" src="{{ b.image_url }}" /></a></td>
- <td colspan="3">{{ b.help }}</td>
- <td>
- {% for costs in b.get_build_cost %}
- {% for w in costs %}
- <a href="{% url help_ware_details w.tribe.name w.name %}" title="{{w.displayname}}"><img src="{{ w.image_url }}" alt="{{ w.name }}" /></a>
- {% endfor %}
- <br />
- {%endfor%}
- </td>
- {% endif %}
-
- {% if not b.has_build_cost and b.has_outputs and not b.has_stored_wares %}
- <!-- With production 010 -->
- <td><a href="{% url help_building_details b.tribe.name b.name %}" title="{{ b.displayname }}"><img alt="{{b.displayname}}" src="{{ b.image_url }}" /></a></td>
- <td colspan="3">{{ b.help }}</td>
- <td>
- {% if b.produces and not b.trains %}
- {% for w in b.get_ware_outputs %}
- <a href="{% url help_ware_details w.tribe.name w.name %}" title="{{w.displayname}}"><img src="{{ w.image_url }}" alt="{{ w.name }}" /></a>
- {%endfor%}
- {% endif %}
- {% if b.trains and not b.produces %}
- {% for wor in b.get_worker_outputs %}
- <img src="{{ wor.image_url }}" alt="{{ wor.name }}" />
- {%endfor%}
- {% endif %}
- </td>
- {% endif %}
-
- {% if not b.has_build_cost and not b.has_outputs and b.has_stored_wares %}
- <!-- With stored wares 001 -->
- <td><a href="{% url help_building_details b.tribe.name b.name %}" title="{{ b.displayname }}"><img alt="{{b.displayname}}" src="{{ b.image_url }}" /></a></td>
- <td colspan="3">{{ b.help }}</td>
- <td>
- {% for costs in b.get_stored_wares %}
- {% for w in costs %}
- <a href="{% url help_ware_details w.tribe.name w.name %}" title="{{w.displayname}}"><img src="{{ w.image_url }}" alt="{{ w.name }}" /></a>
- {% endfor %}
- <br />
- {%endfor%}
- </td>
- {% endif %}
-
- {% if not b.has_build_cost and not b.has_outputs and not b.has_stored_wares %}
- <!-- For headquaters 000 -->
- <td><a href="{% url help_building_details b.tribe.name b.name %}" title="{{b.displayname}}"><img alt="{{b.displayname}}" src="{{ b.image_url }}" /></a></td>
- <td colspan="4">{{ b.help }}</td>
- {% endif %}
- </tr>
-
=== removed file 'online_help/templates/inlines/display_ware.html'
--- online_help/templates/inlines/display_ware.html 2010-11-01 19:02:28 +0000
+++ online_help/templates/inlines/display_ware.html 1970-01-01 00:00:00 +0000
@@ -1,10 +0,0 @@
-{% comment %}
- vim:ft=htmldjango
-{% endcomment %}
-
- <tr class="odd">
- <td><a href="{% url help_ware_details ware.tribe.name ware.name %}" title="{{ ware.displayname }}"><img src="{{ ware.image_url }}" alt="{{ ware.name }}" /></a></td>
- <td><a href="{% url help_ware_details ware.tribe.name ware.name %}" title="{{ ware.displayname }}" name="{{ ware.name }}">{{ ware.displayname }}</a></td>
- <td>{{ ware.help }}</td>
- </tr>
-
=== removed file 'online_help/templates/inlines/display_worker.html'
--- online_help/templates/inlines/display_worker.html 2010-11-06 19:35:10 +0000
+++ online_help/templates/inlines/display_worker.html 1970-01-01 00:00:00 +0000
@@ -1,10 +0,0 @@
-{% comment %}
- vim:ft=htmldjango
-{% endcomment %}
-
- <tr class="odd">
- <td><img src="{{ worker.image_url }}" alt="{{ worker.name }}" /></td>
- <td><a name="{{ worker.name }}" href="{{worker.name}}/">{{ worker.displayname }}</a></td>
- <td>{{ worker.help }}</td>
- </tr>
-
=== modified file 'pybb/forms.py'
--- pybb/forms.py 2011-08-24 13:09:49 +0000
+++ pybb/forms.py 2012-07-04 18:20:26 +0000
@@ -27,7 +27,10 @@
self.ip = kwargs.pop('ip', None)
super(AddPostForm, self).__init__(*args, **kwargs)
- self.fields.keyOrder = ['name', 'body', 'markup', 'attachment']
+ self.fields.keyOrder = ['name',
+ 'body',
+ 'markup',
+ 'attachment']
if self.topic:
self.fields['name'].widget = forms.HiddenInput()
@@ -49,7 +52,7 @@
def save(self, *args, **kwargs):
if self.forum:
- topic_is_new = True
+ topic_is_new = True
topic = Topic(forum=self.forum,
user=self.user,
name=self.cleaned_data['name'])
@@ -91,7 +94,7 @@
class EditPostForm(forms.ModelForm):
class Meta:
model = Post
- fields = ['body']
+ fields = ['body', 'markup']
def save(self, *args, **kwargs):
post = super(EditPostForm, self).save(commit=False)
=== modified file 'pybb/templatetags/pybb_extras.py'
--- pybb/templatetags/pybb_extras.py 2011-09-11 18:15:47 +0000
+++ pybb/templatetags/pybb_extras.py 2012-07-04 18:20:26 +0000
@@ -90,7 +90,7 @@
return {
'posts': answer,
'user': context['user'],
- }
+ }
@register.simple_tag
def pybb_link(object, anchor=u''):
=== modified file 'pybb/urls.py'
--- pybb/urls.py 2010-06-08 19:08:52 +0000
+++ pybb/urls.py 2012-07-04 18:20:26 +0000
@@ -11,7 +11,7 @@
urlpatterns = patterns('',
# Misc
url('^$', views.index, name='pybb_index'),
- # url('^category/(?P<category_id>\d+)/$', views.show_category, name='pybb_category'),
+ url('^category/(?P<category_id>\d+)/$', views.show_category, name='pybb_category'),
url('^forum/(?P<forum_id>\d+)/$', views.show_forum, name='pybb_forum'),
url('^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed',
{'feed_dict': feeds}, name='pybb_feed'),
=== modified file 'pybb/util.py'
--- pybb/util.py 2010-09-28 21:26:23 +0000
+++ pybb/util.py 2012-07-04 18:20:26 +0000
@@ -170,11 +170,11 @@
"""
Quote message using selected markup.
"""
- text = user.username + " wrote:\n" + text
+ text = "*" + user.username + " wrote:*\n\n" + text
# if markup == 'markdown':
if markup == 'markdown':
- return '>'+text.replace('\n','\n>').replace('\r','\n>') + '\n'
+ return '>'+text.replace('\r','').replace('\n','\n>') + '\n'
elif markup == 'bbcode':
return '[quote]\n%s\n[/quote]\n' % text
else:
=== modified file 'pybb/views.py'
--- pybb/views.py 2011-11-13 15:20:13 +0000
+++ pybb/views.py 2012-07-04 18:20:26 +0000
@@ -31,17 +31,7 @@
'last_posts': Post.objects.order_by('-created').select_related()[:pybb_settings.QUICK_POSTS_NUMBER],
}
- cats = {}
- forums = {}
-
- for forum in Forum.objects.all().select_related():
- cat = cats.setdefault(forum.category.id,
- {'cat': forum.category, 'forums': []})
- cat['forums'].append(forum)
- forums[forum.id] = forum
-
- cmpdef = lambda a, b: cmp(a['cat'].position, b['cat'].position)
- cats = sorted(cats.values(), cmpdef)
+ cats = Category.objects.all().select_related()
return {'cats': cats,
'quick': quick,
@@ -161,7 +151,7 @@
quote = ''
else:
post = get_object_or_404(Post, pk=quote_id)
- quote = quote_text(post.body_text, post.user, "markdown")
+ quote = quote_text(post.body, post.user, "markdown")
ip = request.META.get('REMOTE_ADDR', '')
form = build_form(AddPostForm, request, topic=topic, forum=forum,
@@ -170,7 +160,7 @@
if form.is_valid():
post = form.save();
- if not topic:
+ if not topic:
post.topic.subscribers.add(request.user)
return HttpResponseRedirect(post.get_absolute_url())
@@ -348,7 +338,7 @@
@ajax
def post_ajax_preview(request):
content = request.POST.get('content')
- markup = "markdown"
+ markup = request.POST.get('markup')
if not markup in dict(MARKUP_CHOICES).keys():
return {'error': 'Invalid markup'}
=== modified file 'settings.py'
--- settings.py 2011-08-26 15:45:24 +0000
+++ settings.py 2012-07-04 18:20:26 +0000
@@ -29,7 +29,7 @@
# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
-LANGUAGE_CODE = 'de'
+LANGUAGE_CODE = 'en'
SITE_ID = 1
@@ -66,7 +66,7 @@
MIDDLEWARE_CLASSES = (
# 'simplestats.middleware.RegexLoggingMiddleware',
- 'django.middleware.gzip.GZipMiddleware', # Remove this, when load gets to high
+ 'django.middleware.gzip.GZipMiddleware', # Remove this, when load gets to high or attachments are enabled
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
@@ -103,12 +103,15 @@
# Wiki configuration #
######################
WIKI_LOCK_DURATION = 30
+WIKI_URL_RE = r'[:\-\w ]+'
+WIKI_WORD_RE = r'[:\-\w ]+'
######################
# User configuration #
######################
AUTH_PROFILE_MODULE = 'wlprofile.Profile'
DEFAULT_TIME_ZONE = 3
+DEFAULT_TIME_DISPLAY = r"%ND(m-d-y), H:i"
DEFAULT_MARKUP ="markdown"
SIGNATURE_MAX_LENGTH = 255
SIGNATURE_MAX_LINES = 8
@@ -118,8 +121,9 @@
######################
# Pybb Configuration #
######################
-PYBB_ATTACHMENT_ENABLE = False
+PYBB_ATTACHMENT_ENABLE = False # disable gzip middleware when enabling attachments
PYBB_DEFAULT_MARKUP = 'markdown'
+PYBB_FREEZE_FIRST_POST = False
##############################################
# Link classification and other Markup stuff #
@@ -131,27 +135,51 @@
# Keep this list ordered by length of smileys
SMILEYS = [
("O:-)", "face-angel.png"),
+ ("O:)", "face-angel.png"),
+ (":-/", "face-confused.png"),
+ #(":/", "face-confused.png"),
+ ("B-)", "face-cool.png"),
+ ("B)", "face-cool.png"),
(":'-(", "face-crying.png"),
+ (":'(", "face-crying.png"),
(">:-)", "face-devilish.png"), # Hack around markdown replacement. see also SMILEY_PREESCAPING
- (":(|)", "face-monkey.png"),
+ ("8-)", "face-glasses.png"),
+ #("8)", "face-glasses.png"), # Might occur unwanted
(":-D", "face-grin.png"),
- ("8-)", "face-glasses.png"),
+ (":D", "face-grin.png"),
(":-x", "face-kiss.png"),
+ (":x", "face-kiss.png"),
+ (":-*", "face-kiss.png"),
+ (":*", "face-kiss.png"),
+ (":-((", "face-mad.png"),
+ (":((", "face-mad.png"),
+ (":-||", "face-mad.png"),
+ (":||", "face-mad.png"),
+ (":(|)", "face-monkey.png"),
(":-|", "face-plain.png"),
+ (":|", "face-plain.png"),
(":-(", "face-sad.png"),
+ (":(", "face-sad.png"),
+ (":-O", "face-shock.png"),
+ (":O", "face-shock.png"),
+ (":-)", "face-smile.png"),
+ (":)", "face-smile.png"),
+ (":-))", "face-smile-big.png"),
(":))", "face-smile-big.png"),
- (":-)", "face-smile.png"),
- (":-O", "face-surprise.png"),
+ (":-o", "face-surprise.png"),
+ (":o", "face-surprise.png"),
+ (":-P", "face-tongue.png"),
+ (":P", "face-tongue.png"),
+ (":-S", "face-upset.png"),
+ (":S", "face-upset.png"),
(";-)", "face-wink.png"),
- (":D", "face-grin.png"),
- (":(", "face-sad.png"),
- (":)", "face-smile.png"),
- (":O", "face-surprise.png"),
(";)", "face-wink.png"),
]
# This needs to be done to keep some stuff hidden from markdown
SMILEY_PREESCAPING = [
(">:-)", "\>:-)"),
+ (":-*", ":-\*"),
+ #(":*", ":\*"),
]
###############################
@@ -183,6 +211,11 @@
###############
THUMBNAIL_SIZE = ( 160, 160 )
+########
+# Maps #
+########
+MAPS_PER_PAGE = 10
+
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
@@ -200,7 +233,7 @@
# Our own apps
'widelands.mainpage',
- 'widelands.online_help',
+ 'widelands.wlhelp',
'widelands.wlimages',
'widelands.wlwebchat',
'widelands.wlrecaptcha',
=== modified file 'templates/404.html'
--- templates/404.html 2009-02-25 18:41:03 +0000
+++ templates/404.html 2012-07-04 18:20:26 +0000
@@ -1,11 +1,15 @@
{% extends "base.html" %}
+{% block title %}
+Not found - {{ block.super}}
+{% endblock %}
+
{% block content %}
<h1>Not found...</h1>
-
-<p>
-The document you requested was not found....<br/>
-You went astray somewhere....
-</p>
+<div class="blogEntry">
+ <p>
+ The document you requested was not found....<br />
+ You went astray somewhere....
+ </p>
+</div>
{% endblock %}
-
=== modified file 'templates/500.html'
--- templates/500.html 2010-03-14 13:11:30 +0000
+++ templates/500.html 2012-07-04 18:20:26 +0000
@@ -1,11 +1,16 @@
{% extends "base.html" %}
+{% block title %}
+Internal server error - {{ block.super}}
+{% endblock %}
+
{% block content %}
<h1>Internal server error</h1>
-
-<p> If you think you didn't make any mistake, please inform
-<a href="mailto:sirver@xxxxxx?subject=[Widelands Homepage] bug in {{ request.path }}">SirVer</a> about
-the error you've received.
-</p>
+<div class="blogEntry">
+ <p>
+ If you think you didn't make any mistake, please inform
+ <a href="mailto:sirver@xxxxxx?subject=[Widelands Homepage] bug in {{ request.path }}">SirVer</a>
+ about the error you've received.
+ </p>
+</div>
{% endblock %}
-
=== modified file 'templates/base.html'
--- templates/base.html 2011-08-25 13:17:20 +0000
+++ templates/base.html 2012-07-04 18:20:26 +0000
@@ -1,126 +1,63 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!DOCTYPE html>
{% comment %}
vim:ft=htmldjango:
This file is extended by all other files which are not
included here
{% endcomment %}
-<html xmlns="http://www.w3.org/1999/xhtml">
-
- <head>
- <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
-
- <title>{% block title %}Widelands.org{% endblock %}</title>
- <link href="/wlmedia/favicon.ico" rel="SHORTCUT ICON" />
-
- <!-- CSS -->
- <link rel="stylesheet" type="text/css" media="all" href="/wlmedia/css/base.css" />
- <link rel="stylesheet" type="text/css" media="all" href="/wlmedia/css/navigation.css" />
-
- <!-- Javascript Bread & Butter Scripts -->
- <script type="text/javascript" src="/wlmedia/js/jquery.js"></script>
- <script type="text/javascript" src="/wlmedia/js/jquery_csrf_ajax.js"></script>
- {% block extra_head %}{% endblock %}
- </head>
-
- <body>
-
- <table border="0" cellpadding="0" cellspacing="0" style="width: 100%;">
-
- <tr>
- <td>
-
- <!-- Header Bar -->
- <div id="headerbanner">
- <a href="{% url mainpage %}"><img src="/wlmedia/img/Logo.png" alt="Logo" align="middle" /></a>
- </div>
- <!-- Navigation -->
- {% include "navigation.html" %}
- </td>
- </tr>
-
- {% comment %}
- <!-- Main Page starts here -->
- <!--
- The decision here was between this table madness or a CSS + JS hack (resize
- divisions after page load). Both solutions are ugly, but I prefer tables to JS hacks.
- Can't wait for CSS3.
- -->
- {% endcomment %}
-
- <tr>
- <td>
-
- {% comment %}
- <!--
- Top Tables are not used by current theme, they
- might be in a future one though
- -->
-
- <table border="0" cellpadding="0" cellspacing="0">
- <tr>
- <td id="table_topleft"></td>
- <td id="table_topright"></td>
- </tr>
- </table>
- {% endcomment %}
-
- <!-- Table with Menus and Content -->
- <table border="0" cellpadding="0" cellspacing="0" >
- <tr>
- {% comment %}
- <!-- Left Column -->
- <td id="leftcolumn">
- <div id="leftcontent">
- {% include "left_boxes.html" %}
- </div>
-
- </td>
- {% endcomment %}
-
- <!-- Center Column/Content -->
- <td id="content" style="overflow: hidden;">
- <!-- ################### CONTENT STARTS HERE ################### -->
- {% block content %}
- No Content here!
- {% endblock %}
- <!-- ################### CONTENT ENDS HERE ################### -->
- </td>
-
- <!-- Right Column -->
- <td id="rightcolumn">
- <div id="rightcontent">
- {% include "right_boxes.html" %}
- </div>
- </td>
- </tr>
- </table>
-
- </td>
- </tr>
-
-
- {% comment %}
- <tr>
- <td>
- <!-- Footer -->
- {% include "footer.html" %}
-
- <!-- Bottom Table -->
- <table border="0" cellpadding="0" cellspacing="0" id="table_bottom">
- <tr>
- <td id="table_bottomleft">
- </td>
- <td id="table_bottomright">
- </td>
- </tr>
- </table>
- </td>
- </tr>
- {% endcomment %}
-
- </table>
-
- </body>
+<html>
+
+ <head>
+ <meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
+
+ <title>{% block title %}Widelands.org{% endblock %}</title>
+ <link href="{{MEDIA_URL}}/favicon.ico" rel="SHORTCUT ICON" />
+
+ <!-- CSS -->
+ <link rel="stylesheet" type="text/css" media="all" href="{{MEDIA_URL}}/css/base.css" />
+ <link rel="stylesheet" type="text/css" media="all" href="{{MEDIA_URL}}/css/navigation.css" />
+ <!--[if lt IE 9]>
+ <link rel="stylesheet" type="text/css" href="{{MEDIA_URL}}/css/base_ielt9.css" />
+ <![endif]-->
+ <!--[if lt IE 8]>
+ <link rel="stylesheet" type="text/css" href="{{MEDIA_URL}}/css/base_ielt8.css" />
+ <![endif]-->
+
+ <!-- Javascript Bread & Butter Scripts -->
+ <script type="text/javascript" src="{{MEDIA_URL}}/js/jquery.js"></script>
+ <script type="text/javascript" src="{{MEDIA_URL}}/js/jquery_csrf_ajax.js"></script>
+ <script type="text/javascript" src="{{MEDIA_URL}}/js/scripts.js"></script>
+ {% block extra_head %}{% endblock %}
+ </head>
+
+ <body>
+ <a id="top"></a>
+ <div id="wrapper">
+ <div id="header">
+ <div class="loginBox posRight">
+ {% include "login_box.html" %}
+ </div>
+ <a href="{% url mainpage %}"><img src="{{MEDIA_URL}}/img/Logo.png" class="posLeft" alt="Widelands Logo" /></a>
+ </div>
+ <div id="topmenu">
+ <!-- Navigation -->
+ {% include "navigation.html" %}
+ </div>
+ <div id="main" class="clear">
+ <div id="rightColumn" class="posRight">
+ {% include "right_boxes.html" %}
+ </div>
+ <div id="content">
+ {% block content %}
+ No Content here!
+ {% endblock %}
+ </div>
+ </div>
+ <div class="clear"></div>
+
+ <!-- Footer -->
+ {% include "footer.html" %}
+
+ </div>
+ </body>
</html>
-
=== modified file 'templates/django_messages/base.html'
--- templates/django_messages/base.html 2009-03-17 15:02:13 +0000
+++ templates/django_messages/base.html 2012-07-04 18:20:26 +0000
@@ -5,9 +5,27 @@
{% block extra_head %}<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/messages.css" />{{ block.super}}{% endblock %}
{% block title %}
-Account - {{block.super}}
+Messages - {{block.super}}
{% endblock %}
-{% block content %}
+{% block content %}
+<h1>Messages: {% block msg_title %}{% endblock %}</h1>
+<div class="blogEntry">
+ <table class="messages messages_border">
+ <tr>
+ <th class="msg_menu">
+ <ul>
+ <li><a href="{% url messages_compose %}">{% trans "New Message" %}</a>
+ <li><a href="{% url messages_inbox %}">{% trans "Inbox" %}</a>
+ <li><a href="{% url messages_outbox %}">{% trans "Outbox" %}</a>
+ <li><a href="{% url messages_trash %}">{% trans "Trash" %}</a>
+ </ul>
+ </th>
+ <td class="msg_box">
+ {% block msg_content %}{% endblock %}
+ </td>
+ </tr>
+ </table>
+</div>
{% endblock %}
=== modified file 'templates/django_messages/compose.html'
--- templates/django_messages/compose.html 2011-07-04 01:14:23 +0000
+++ templates/django_messages/compose.html 2012-07-04 18:20:26 +0000
@@ -5,29 +5,20 @@
Compose - {{ block.super }}
{% endblock %}
-
-{% block content %}
-{% include "django_messages/inlines/navigation.html" %}
-<br />
-<br />
-<div class="box_item_model fixed_site border">
- <h3 class="title">{% trans "Compose Message"%}</h3>
- <form action="" method="post">
- <div class="content">
- <table class="text full_site" cellspacing="1">
- {% for field in form %}
- <tr>
- <td width="80" class="{% cycle "odd" "even" %}{% ifequal field.name "body" %} show_left{% endifequal %}">{{ field.label_tag }}:</td>
- <td class="{% cycle "odd" "even" %}">{{ field }}</td>
- </tr>
- {% endfor %}
- </table>
- </div>
- <div class="info_line show_center">
- <input type="submit" value="{% trans "Send" %} »"/>
- </div>
- {% csrf_token %}
- </form>
-</div>
-
+{% block msg_title %}Compose{% endblock %}
+
+{% block msg_content %}
+<form action="." method="post">
+ <table class="messages">
+ {% for field in form %}
+ <tr>
+ <td class="grey">{{ field.label_tag }}:</td>
+ <td>{{ field }}</td>
+ <td class="errormessage">{{ field.errors }}</td>
+ </tr>
+ {% endfor %}
+ </table>
+ <input type="submit" value="{% trans "Send" %}"/>
+ {% csrf_token %}
+</form>
{% endblock %}
=== modified file 'templates/django_messages/inbox.html'
--- templates/django_messages/inbox.html 2010-10-30 12:17:49 +0000
+++ templates/django_messages/inbox.html 2012-07-04 18:20:26 +0000
@@ -1,30 +1,42 @@
{% extends "django_messages/base.html" %}
{% load i18n %}
+{% load custom_date %}
+{% load wlprofile %}
{% block title %}
Inbox - {{ block.super }}
{% endblock %}
-{% block content %}
- {% include "django_messages/inlines/navigation.html" %}
- <br />
- <br />
- <div class="box_item_model border">
- <h3 class="title">{% trans "Inbox" %}</h3>
- <table class="messages" cellspacing="1">
- <thead>
- <tr>
- <td>{% trans "Sender" %}</td>
- <td>{% trans "Subject" %}</td>
- <td>{% trans "Received" %}</td>
- <td>{% trans "Action" %}</td>
- </tr>
- </thead>
- <tbody>
- {% for message in message_list %}
- {% include "django_messages/inlines/message_row.html" %}
- {% endfor %}
- </tbody>
- </table>
- </div>
+
+{% block msg_title %}Inbox{% endblock %}
+{% block msg_content %}
+ <table class="messages">
+ <thead>
+ <tr>
+ <th>{% trans "Sender" %}</th>
+ <th>{% trans "Subject" %}</th>
+ <th>{% trans "Received" %}</th>
+ <th>{% trans "Action" %}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for message in message_list %}
+ <tr class="{% if message.new %}italic{% endif %}">
+ <td>{{ message.sender|user_link }}</td>
+ <td>
+ {% if message.replied %}
+ <img src="{{ MEDIA_URL }}/img/replied.png" alt="replied" title="replied" />
+ {% endif %}
+ <a href="{{message.get_absolute_url }}">{{ message.subject }}</a>
+ </td>
+ <td>{{ message.sent_at|custom_date:user }}</td>
+ <td>
+ <a href="{% url django_messages.views.delete message.id %}">
+ <img src="{{ MEDIA_URL }}/img/delete.png" alt="delete" title="delete" />
+ </a>
+ </td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
{% endblock %}
=== modified file 'templates/django_messages/outbox.html'
--- templates/django_messages/outbox.html 2010-10-30 12:17:49 +0000
+++ templates/django_messages/outbox.html 2012-07-04 18:20:26 +0000
@@ -1,30 +1,38 @@
{% extends "django_messages/base.html" %}
{% load i18n %}
+{% load custom_date %}
+{% load wlprofile %}
{% block title %}
Outbox - {{ block.super }}
{% endblock %}
-{% block content %}
-{% include "django_messages/inlines/navigation.html" %}
-<br />
-<br />
-<div class="box_item_model border">
-<h3 class="title">{% trans "Sent Messages" %}</h3>
-<table class="messages" cellspacing="1">
- <thead>
- <tr>
- <td>{% trans "Recipient" %}</td>
- <td>{% trans "Subject" %}</td>
- <td>{% trans "Sent" %}</td>
- <td>{% trans "Action" %}</td>
- </tr>
- </thead>
- <tbody>
- {% for message in message_list %}
- {% include "django_messages/inlines/message_row.html" %}
- {% endfor %}
- </tbody>
-</table>
-</div>
+{% block msg_title %}Outbox{% endblock %}
+{% block msg_content %}
+ <table class="messages">
+ <thead>
+ <tr>
+ <th>{% trans "Recipient" %}</th>
+ <th>{% trans "Subject" %}</th>
+ <th>{% trans "Received" %}</th>
+ <th>{% trans "Action" %}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for message in message_list %}
+ <tr>
+ <td>{{ message.recipient|user_link }}</td>
+ <td>
+ <a href="{{message.get_absolute_url }}">{{ message.subject }}</a>
+ </td>
+ <td>{{ message.sent_at|custom_date:user }}</td>
+ <td>
+ <a href="{% url django_messages.views.delete message.id %}">
+ <img src="{{ MEDIA_URL }}/img/delete.png" alt="delete" title="delete" />
+ </a>
+ </td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
{% endblock %}
=== modified file 'templates/django_messages/trash.html'
--- templates/django_messages/trash.html 2010-10-30 12:17:49 +0000
+++ templates/django_messages/trash.html 2012-07-04 18:20:26 +0000
@@ -1,39 +1,47 @@
{% extends "django_messages/base.html" %}
{% load i18n %}
+{% load custom_date %}
+{% load wlprofile %}
{% block title %}
Trash - {{ block.super }}
{% endblock %}
-{% block content %}
-{% include "django_messages/inlines/navigation.html" %}
-<br />
-<br />
-<div class="box_item_model border">
- <h3 class="title">{% trans "Deleted Messages" %}</h3>
- <table class="messages" cellspacing="1">
- <thead>
- <tr>
- <td>{% trans "Sender" %}</td>
- <td>{% trans "Subject" %}</td>
- <td>{% trans "Date" %}</td>
- <td>{% trans "Action" %}</td>
- </tr>
- </thead>
- <tbody>
-{% for message in message_list %}
- {% include "django_messages/inlines/message_row.html" %}
-{% endfor %}
- </tbody>
- </table>
-</div>
-<br />
-<div class="box_item_model border">
- <div class="info_line show_center errormessage">
- <br />
- {% trans "Deleted Messages are removed from the trash at unregular intervals, don't rely on this feature for long-time storage." %}
- <br />
- <br />
- </div>
-</div>
+{% block msg_title %}Trash{% endblock %}
+
+{% block msg_content %}
+ <table class="messages">
+ <thead>
+ <tr>
+ <th>{% trans "Sender" %}</th>
+ <th>{% trans "Recipient" %}</th>
+ <th>{% trans "Subject" %}</th>
+ <th>{% trans "Received" %}</th>
+ <th>{% trans "Action" %}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for message in message_list %}
+ <tr class="{% if message.new %}italic{% endif %}">
+ <td>{{ message.sender|user_link }}</td>
+ <td>{{ message.recipient|user_link }}</td>
+ <td>
+ {% if message.replied %}
+ <img src="{{ MEDIA_URL }}/img/replied.png" alt="replied" title="replied" />
+ {% endif %}
+ <a href="{{message.get_absolute_url }}">{{ message.subject }}</a>
+ </td>
+ <td>{{ message.sent_at|custom_date:user }}</td>
+ <td>
+ <a href="{% url django_messages.views.undelete message.id %}">
+ <img src="{{ MEDIA_URL }}/img/undelete.png" alt="undelete" title="undelete" />
+ </a>
+ </td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+ <p class="errormessage">
+ {% trans "Deleted messages are removed from the trash at unregular intervals. Don't rely on this feature for long-time storage." %}
+ </p>
{% endblock %}
=== modified file 'templates/django_messages/view.html'
--- templates/django_messages/view.html 2010-03-14 14:13:24 +0000
+++ templates/django_messages/view.html 2012-07-04 18:20:26 +0000
@@ -1,57 +1,37 @@
{% extends "django_messages/base.html" %}
{% load i18n %}
{% load custom_date %}
+{% load wlprofile %}
{% block title %}
-Message - {{ block.super }}
+View - {{ block.super }}
{% endblock %}
-{% block content %}
-{% include "django_messages/inlines/navigation.html" %}
-<br />
-<br />
-<div class="message_item">
- <h3 class="title">{% trans "View Message" %}</h3>
- <div class="content">
- <table class="text" width="100%" cellspacing="1">
- <tr>
- <td width="80" class="odd">{% trans "Subject" %}:</td>
- <td width="120" class="odd">{{ message.subject }}</td>
- <td></td>
- </tr>
- <tr>
- <td class="even">{% trans "Sender" %}:</td>
- <td class="even">{{ message.sender }}</td>
- <td></td>
- </tr>
- <tr>
- <td class="odd">{% trans "Date" %}:</td>
- <td class="odd">{{ message.sent_at|custom_date:user }}</td>
- <td></td>
- </tr>
- <tr>
- <td class="even">{% trans "Recipient" %}:</td>
- <td class="even">{{ message.recipient }}</td>
- <td></td>
- </tr>
- <tr>
- <td colspan="3" class="odd">
- <div class="message_display content message">
- {{ message.body|urlize|linebreaksbr }}
- </div>
- </td>
- </tr>
- </table>
- </div>
- <table class="bottom_line" width="100%">
- <tr>
- <td class="admin">
- {% ifequal message.recipient user %}
- <a href="{% url messages_reply message.id %}">{% trans "Reply" %}</a> |
- {% endifequal %}
- <a href="{% url messages_delete message.id %}">{% trans "Delete" %}</a>
+{% block msg_title %}{{ message.subject }}{% endblock %}
+
+{% block msg_content %}
+ <table class="messages">
+ <tr>
+ <td class="grey">{% trans "Subject" %}:</td>
+ <td>{{ message.subject }}</td>
+ <td class="grey">{% trans "Date" %}:</td>
+ <td>{{ message.sent_at|custom_date:user }}</td>
+ </tr>
+ <tr>
+ <td class="grey">{% trans "Sender" %}:</td>
+ <td>{{ message.sender|user_link }}</td>
+ <td class="grey">{% trans "Recipient" %}:</td>
+ <td>{{ message.recipient|user_link }}</td>
+ <tr>
+ <td colspan="4">
+ <hr />
+ {{ message.body|urlize|linebreaksbr }}
+ <hr />
</td>
</tr>
</table>
-</div>
+ {% ifequal message.recipient user %}
+ <button type="button" onclick="location.href='{% url messages_reply message.id %}';">{% trans "Reply" %}</button>
+ {% endifequal %}
+ <button type="button" onclick="location.href='{% url messages_delete message.id %}';">{% trans "Delete" %}</button>
{% endblock %}
=== modified file 'templates/footer.html'
--- templates/footer.html 2009-02-26 12:45:58 +0000
+++ templates/footer.html 2012-07-04 18:20:26 +0000
@@ -4,8 +4,8 @@
This file is included by mainpage and contains the footer
(which contains nothing at the moment)
-
-
- <div id="footer">
- </div>
-{% endcomment %}
+{% endcomment %}
+
+<div id="footer">
+ Copyright © 2012 Widelands.org
+</div>
=== added file 'templates/login_box.html'
--- templates/login_box.html 1970-01-01 00:00:00 +0000
+++ templates/login_box.html 2012-07-04 18:20:26 +0000
@@ -0,0 +1,68 @@
+{% load inbox wlprofile %}
+
+<!-- Login form / User information -->
+{% if user.is_authenticated %}
+<div class="small posLeft">
+ Welcome {{ user|user_link }},<br/>
+ you have <a href="{% url messages_inbox %}">0 new messages</a>.
+</div>
+<div class="right small posRight">
+ <ul>
+ <li><a href="{% url messages_inbox %}">Messages</a></li>
+ <li><a href="{% url notification_notices %}">Notifications</a></li>
+ <li><a href="{% url profile_edit %}">Edit Profile</a></li>
+ <li><a href="{% url auth_logout %}?next={{ request.path|iriencode }}">Logout</a></li>
+ </ul>
+</div>
+{% else %}
+<h4>Login</h4>
+{% comment %}
+<form method="post" action="https://{{ request.META.HTTP_HOST }}/accounts/login/" id="login_box">
+ <input id="id_login_username" type="text" name="username" maxlength="30" placeholder="Username" />
+ <input id="id_login_password" type="password" name="password" />
+ <input type="hidden" id="submitted" value="false" />
+ <button type="submit">login</button>
+ <input type="hidden" name="next" value="{{ request.path|iriencode }}" />
+ {% csrf_token %}
+</form>
+{% endcomment %}
+<div class="small center">
+ <a href="{% url auth_login %}?next={{ request.path|iriencode }}">Click here to login</a><br />
+ <a href="{% url auth_password_reset %}">Lost password?</a> | <a href="{% url registration_register %}">Register now!</a>
+</div>
+{% endif %}
+{% comment %}
+{# Login via iframe does not work between http and https #}
+<script type="text/javascript">
+$("#login_box").submit( function(data) {
+ var frameName = "login_frame" + (new Date()).getTime();
+ var frameSrc = "http://{{ request.META.HTTP_HOST }}/accounts/login/?next="
+ + window.location.pathname + window.location.search + window.location.hash;
+ var loginFrame = $("<iframe name=\"" + frameName + "\" src=\"" + frameSrc + "\" />");
+
+ $("#login_box input[type='submit']").attr("disabled", "disabled")
+ loginFrame.css("display", "none");
+ loginFrame.load(function(data){
+ // get required fields
+ my_user_field = $(window.frames[ frameName ].document.getElementById("id_username"));
+ my_pass_field = $(window.frames[ frameName ].document.getElementById("id_password"));
+ parent_user_field = $("#id_login_username");
+ parent_pass_field = $("#id_login_password");
+ submitted_field = $("#submitted");
+
+ if (submitted_field.val() != "true") {
+ // copy login information and submit
+ my_user_field.val(parent_user_field.val() == "Username" ? "" : parent_user_field.val());
+ my_pass_field.val(parent_pass_field.val());
+ // submit form to parent
+ submitted_field.val("true");
+ login_form = $(window.frames[ frameName ].document.getElementById("login_form"));
+ login_form.attr('target', "_parent");
+ login_form.submit();
+ }
+ });
+ jQuery('body:first').append(loginFrame);
+ return false;
+});
+</script>
+{% endcomment %}
=== modified file 'templates/mainpage.html'
--- templates/mainpage.html 2011-08-20 17:03:21 +0000
+++ templates/mainpage.html 2012-07-04 18:20:26 +0000
@@ -16,55 +16,29 @@
{{ block.super}}{% endblock %}
{% block content %}
-
-<div class="block_center">
- <h1>Welcome to Widelands.org</h1>
- <h3>Home of the free realtime strategy game and its community</h3>
- <br/>
- <img src='{{ MEDIA_URL }}/img/HomepageSplash.jpg' title='Widelands' alt='Widelands-Screenshot' />
- <br/>
- <br/>
-</div>
-
-<!-- Begin of text -->
-<div class="itemText">
- <p>
- Widelands is an open source (GPLed) real-time strategy game.
- It is built upon the <a href='http://www.libsdl.org'>SDL</a> and other
- open source libraries and is (and will always be) under heavy
- development. If you knew Settlers I & II™ (© Bluebyte), then
- you already have a rough idea what Widelands is all about because
- widelands is heavily inspired by those two games.
- </p>
- <p>
- You can find detailed information on the game in our
- <a href="/wiki">Wiki</a>. I you want to get a quick Overview, go to the
- <a title="General Info" href="{% url wiki_article "GeneralInfo" %}">General Info</a>
- page.
- </p>
- <p>
- You can download the game on the
- <a href="{% url wiki_article "DownloadPage" %}">DownloadPage</a>. You
- can also find installation instructions and various troubleshooting
- hints there.
- </p>
- <p>
- You are also invited to visit the <a href="{% url pybb_index %}">Forums</a>:
- chat with the community about the game, find playing mates for
- multiplayer, help translating, discuss graphics, music and much more.
- </p>
-</div>
+<h1>Welcome to Widelands.org</h1>
+<div class="blogEntry" style="min-height: 380px;">
+ <img class="landing posRight" src="{{MEDIA_URL}}/img/welcome.png" alt="Welcome!" />
+ <p>
+ <a href="{% url wiki_article "Description" %}">Widelands</a> is an <a href="{% url wiki_article "TheWidelandsProject" %}">open source</a> real-time strategy game with a singleplayer campaign as well as a multiplayer mode. If you knew Settlers I & II™ (© Bluebyte), then you already have a rough idea what Widelands is all about because it is heavily inspired by those two games. For more information read the full <a href="{% url wiki_article "Description" %}">description</a> and look at some <a href="{% url wlscreens_index %}">screenshots</a>.
+ </p>
+ <p>
+ Widelands is currently (and will always be) under development, but you can play the newest beta build17. <a href="{% url wiki_article "Download" %}">Download</a> the game for different platforms or read the <a href="/changelog">changelog</a>.
+ </p>
+ <p>
+ You are also invited to visit the <a href="{% url pybb_index %}">forums</a>: chat with the community about the game, find playing mates for multiplayer, help translating, discuss graphics, music and much more.
+ </p>
+ <div style="clear: left"></div>
+</div>
+
{% get_latest_posts 3 as latest_posts_list %}
{% if latest_posts_list %}
-<h2>
- <a href="{% url news_index %}">Latest news:</a>
-</h2>
- {% for object in latest_posts_list %}
- {% include "news/inlines/post_detail.html" %}
- <br />
- {% endfor %}
- <a href="{% url news_index %}">News archive</a>
+ <h1>News</h1>
+ {% for object in latest_posts_list %}
+ {% include "news/inlines/post_detail.html" %}
+ {% endfor %}
+ <div class="center"><p><a class="invertedColor" href="{% url news_index %}">News archive</a></p></div>
{% endif %}
{% endblock %}
=== modified file 'templates/mainpage/changelog.html'
--- templates/mainpage/changelog.html 2009-04-01 14:19:17 +0000
+++ templates/mainpage/changelog.html 2012-07-04 18:20:26 +0000
@@ -1,16 +1,16 @@
{% extends "base.html" %}
{% load wl_markdown %}
-{% block title %}Change Log - {{ block.super }}{% endblock %}
+{% block title %}Changelog - {{ block.super }}{% endblock %}
{% block extra_head %}
-<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/wiki.css" />{{ block.super}}
+{{ block.super}}
{% endblock %}
{% block content %}
-<div class="wiki_article">
- <h1>Changelog</h1>
- {{ changelog|wl_markdown }}
+<h1>Changelog</h1>
+<div class="blogEntry">
+ {{ changelog|wl_markdown }}
</div>
{% endblock %}
=== modified file 'templates/mainpage/developers.html'
--- templates/mainpage/developers.html 2010-01-20 11:19:07 +0000
+++ templates/mainpage/developers.html 2012-07-04 18:20:26 +0000
@@ -1,16 +1,16 @@
{% extends "base.html" %}
{% load wl_markdown %}
-{% block title %}Developers - {{ block.super }}{% endblock %}
+{% block title %}Widelands Development Team - {{ block.super }}{% endblock %}
{% block extra_head %}
-<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/wiki.css" />{{ block.super}}
+{{ block.super}}
{% endblock %}
{% block content %}
-<div class="wiki_article">
- <h1>Widelands Development Team</h1>
- {{ developers|safe }}
+<h1>Widelands Development Team</h1>
+<div class="blogEntry">
+ {{ developers|safe }}
</div>
{% endblock %}
=== modified file 'templates/mainpage/online_users.html'
--- templates/mainpage/online_users.html 2010-10-30 02:57:08 +0000
+++ templates/mainpage/online_users.html 2012-07-04 18:20:26 +0000
@@ -1,12 +1,18 @@
{% load wlprofile %}
{% if users %}
- <h3 class="box_title">Currently online</h3>
- <div class="box_content">
- <ul>
- {% for user in users %}
- <li><a href="{% url profile_view user %}">{{user.username}}</a></li>
- {% endfor %}
- </ul>
- </div>
+<div class="columnModule">
+ <h3>Currently Online</h3>
+ <div class="columnModuleBox">
+ {% if users %}
+ <ul class="player">
+ {% for user in users %}
+ <li><a href="{% url profile_view user %}">{{user.username}}</a></li>
+ {% endfor %}
+ </ul>
+ {% else %}
+ <p>Currently nobody is online.</p>
+ {% endif %}
+ </div>
+</div>
{% endif %}
=== modified file 'templates/navigation.html'
--- templates/navigation.html 2011-07-03 18:14:07 +0000
+++ templates/navigation.html 2012-07-04 18:20:26 +0000
@@ -1,75 +1,79 @@
{% comment %}
vim:ft=htmldjango
{% endcomment %}
-<div class="dropdown">
-<ul>
-<li><a href="/">Home</a></li>
-<li>
- <a href="{% url wiki_article "DownloadPage" %}">  Downloads</a>
- <div class="arrow-down"></div>
- <ul>
- <li><a href="{% url wiki_article "DownloadPage" %}">The Game</a></li>
- <li><a href="{% url wiki_article "WidelandsArtwork" %}">Artworks</a></li>
- <li><a href="{% url wlmaps_index %}">Maps</a></li>
- </ul>
-</li>
-<li><a href="{% url wlscreens_index %}">Screenshots</a></li>
-<li>
- <a href="{% url wiki_index %}">  Wiki (Help & Docu.)</a>
- <div class="arrow-down"></div>
- <ul>
- <li><a href="/wiki/GameHelp">Game Help</a></li>
- <li><a href="{% url wiki_index %}">Main Page</a></li>
- <li><a href="{% url wiki_list %}">All articles</a></li>
- <li><a href="{% url wiki_history %}">Recent changes</a></li>
- </ul>
-</li>
-<li>
- <a href="{% url pybb_index %}">  Forum</a>
- <div class="arrow-down"></div>
- <ul>
- <li><a href="{% url pybb_forum 1 %}">Technical Help</a></li>
- <li><a href="{% url pybb_forum 2 %}">Game suggestions</a></li>
- <li><a href="{% url pybb_forum 3 %}">Playing widelands</a></li>
- <li><a href="{% url pybb_forum 4 %}">Editor Forum</a></li>
- <li><a href="{% url pybb_forum 5 %}">[Deutsch] - Spielerforum</a></li>
- <li><a href="{% url pybb_forum 6 %}">[Español] - Foro de jugadores</a></li>
- <li><a href="{% url pybb_forum 7 %}">[Française] - Forum de joueurs</a></li>
- <li><a href="{% url pybb_forum 13 %}">[English] - Player Forum</a></li>
- <li><a href="{% url pybb_forum 9 %}">Graphic Development</a></li>
- <li><a href="{% url pybb_forum 10 %}">Sound & Music Development</a></li>
- <li><a href="{% url pybb_forum 11 %}">Homepage</a></li>
- <li><a href="{% url pybb_forum 12 %}">Translations & Internationalization</a></li>
- </ul>
-</li>
-<li>
- <a href="{% url webchat_index %}">IRC Chat</a>
-</li>
-<li>
- <a href="{% url wiki_article "DevelopmentPage" %}">  Development</a>
- <div class="arrow-down"></div>
- <ul>
- <li><a href="{% url wiki_article "DevelopmentPage" %}">Development</a></li>
- <li><a href="{% url wiki_article "DevelopersPage" %}">Developers</a></li>
- <li><a href="{% url wiki_article "MailLists" %}">Mailing Lists</a></li>
- <li><a href="{% url wiki_article "WannaHelp" %}">Wanna help?</a></li>
- <li><a href="https://bugs.launchpad.net/widelands">Widelands Bugtracker</a></li>
- <li><a href="https://bugs.launchpad.net/widelands-website">Website Bugtracker</a></li>
- </ul>
-</li>
- {% comment %}
-<li>
- <a href="{% url wlggz_main %}">Online Gaming</a>
- <ul>
- <li><a href="{% url wlggz_ranking %}">GGZ Ranking</a></li>
- <li><a href="{% url wlggz_matches %}">GGZ Matches</a></li>
- {% if user.is_authenticated %}
- <li><a href="{% url wlggz_userstats %}">GGZ Status</a></li>
- {% endif %}
- <li><a href="{% url wiki_article "InternetGaming" %}">HowTo</a></li>
- </ul>
-</li>
- {% endcomment %}
- </ul>
-</div>
-
\ No newline at end of file
+
+<script type="text/javascript">
+ /* Enable dropdown menus on touch devices */
+ $(document).ready(function(){
+ $(".menu li").live("touchstart", function() {
+ $(this).next("ul").css("display", "block");
+ });
+ });
+</script>
+
+<ul class="menu posLeft">
+ <li><a href="/">Home</a>
+ <ul>
+ <li><a href="{% url news_index %}">News Archive</a></li>
+ <li><a href="{% url wlpoll_archive %}">Poll Archive</a></li>
+ </ul>
+ </li>
+ <li><a href="{% url wiki_article "Description" %}">The Game</a>
+ <ul>
+ <li><a href="{% url wiki_article "Description" %}">Description</a></li>
+ <li><a href="{% url wiki_article "Download" %}">Download</a></li>
+ <li><a href="{% url wlscreens_index %}">Screenshots</a></li>
+ <li><a href="{% url wiki_article "Artwork" %}">Artwork</a></li>
+ <li><a href="{% url wlmaps_index %}">Maps</a></li>
+ <li><a href="{% url wlhelp_index %}">Encyclopedia</a></li>
+ <li><a href="{% url changelog %}">Changelog</a></li>
+ <li><a href="{% url developers %}">Widelands Development Team</a></li>
+ </ul>
+ </li>
+ <li><a href="{% url wiki_index %}">Wiki</a>
+ <ul>
+ <li><a href="{% url wiki_article "Game Manual" %}">Game Manual</a></li>
+ <li><a href="{% url wiki_article "Creating Game Content" %}">Creating Game Content</a></li>
+ <li><a href="{% url wiki_article "The Widelands Project" %}">The Widelands Project</a></li>
+ </ul>
+ </li>
+ <li><a href="{% url pybb_index %}">Forums</a>
+ <ul>
+ <li><a href="{% url pybb_forum 1 %}">Technical Help</a></li>
+ <li><a href="{% url pybb_forum 2 %}">Game Suggestions</a></li>
+ <li><a href="{% url pybb_forum 3 %}">Playing Widelands</a></li>
+ <li><a href="{% url pybb_forum 4 %}">Editor Forum</a></li>
+ <li><a href="{% url pybb_forum 5 %}">[Deutsch] - Spielerforum</a></li>
+ <li><a href="{% url pybb_forum 6 %}">[Español] - Foro de jugadores</a></li>
+ <li><a href="{% url pybb_forum 7 %}">[Française] - Forum de joueurs</a></li>
+ <li><a href="{% url pybb_forum 13 %}">[English] - Player Forum</a></li>
+ <li><a href="{% url pybb_forum 9 %}">Graphic Development</a></li>
+ <li><a href="{% url pybb_forum 10 %}">Sound & Music Development</a></li>
+ <li><a href="{% url pybb_forum 11 %}">Homepage</a></li>
+ <li><a href="{% url pybb_forum 12 %}">Translations & Internationalization</a></li>
+ </ul>
+ </li>
+ <li><a href="{% url webchat_index %}">Chat</a></li>
+ <li><a href="{% url wiki_article "Development" %}">Development</a>
+ <ul>
+ <li><a href="{% url wiki_article "Contribute" %}">Contribute</a></li>
+ <li><a href="{% url developers %}">Widelands Development Team</a></li>
+ <li><a href="/docs/">Documentation</a></li>
+ <li><a href="https://bugs.launchpad.net/widelands">Widelands Bugtracker</a></li>
+ <li><a href="https://bugs.launchpad.net/widelands-website">Website Bugtracker</a></li>
+ </ul>
+ </li>
+</ul>
+<div class="searchBox posRight">
+ <form method="post" action="/search/">
+ <div class="searchBoxInner">
+ <input id="id_nav_search" type="text" name="search" class="searchField placeholder" placeholder="Search..." maxlength="200" />
+ <input id="id_nav_incl_wiki" type="hidden" name="incl_wiki" value="1" />
+ <input id="id_nav_incl_news" type="hidden" name="incl_news" value="1" />
+ <input id="id_nav_incl_maps" type="hidden" name="incl_maps" value="1" />
+ <input id="id_nav_incl_help" type="hidden" name="incl_help" value="1" />
+ <input id="id_nav_incl_forum" type="hidden" name="incl_forum" value="1" />
+ {% csrf_token %}
+ </div>
+ </form>
+</div>
=== modified file 'templates/news/base_news.html'
--- templates/news/base_news.html 2009-03-23 17:44:44 +0000
+++ templates/news/base_news.html 2012-07-04 18:20:26 +0000
@@ -1,11 +1,7 @@
{% extends "base.html" %}
-{% block title %}News - {{block.super}}{% endblock %}
+{% block title %}News Archive - {{block.super}}{% endblock %}
{% block extra_head %}
-<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/news.css" />
<link rel="alternate" type="application/rss+xml" title="Widelands News" href="/feeds/news/" />
-
{{ block.super}}{% endblock %}
-
-{% block body_class %}news{% endblock %}
=== modified file 'templates/news/inlines/post_detail.html'
--- templates/news/inlines/post_detail.html 2010-10-29 13:41:10 +0000
+++ templates/news/inlines/post_detail.html 2012-07-04 18:20:26 +0000
@@ -6,52 +6,22 @@
{% endcomment %}
{% load threadedcommentstags %}
{% load news wl_markdown tagging_tags wlprofile custom_date %}
- <div class="box_item_model border">
- <h3 class="title">{# TODO: categories! #} {{ object.title }}</h3>
- <div class="info_line">
- <span class="news_poster">Posted by {{object.author|user_link}}</span>
- <span class="news_post_date">on {{ object.publish|custom_date:user }}</span>
- </div>
- <div class="content">
-{% if object.has_image %}
- <span class="news_image"><img src='{{MEDIA_URL}}{{ object.image }}' alt='{{ object.image_alt }}' /></span>
- <div class="text" style='min-height: {{ object.image.height }}px;'>
-{% else %}
- <div class="text">
-{% endif %}
-{{ object.body|wl_markdown:"safe" }}
- </div>
- </div>
-
- <table class="info_line full_site">
- <tr>
-{% get_comment_count for object as ccount %}
- <td class="comments show_left">
- <a href="{{ object.get_absolute_url }}">{{ ccount }} comments</a>
- </td>
- <td class="show_center">
-{% if perms.news %}
- {% if perms.news.post_can_add %}
- <a href="/admin/news/post/add/">Add New Post</a>
- {% endif %}
- {% if perms.news.post_can_edit %}
- | <a href="/admin/news/post/{{object.id}}/">Edit</a>
- {% endif %}
- {% if perms.news.post_can_delete %}
- | <a href="/admin/news/post/{{object.id}}/delete/">Delete</a>
- {% endif %}
-{% endif %}
- </td>
-{% tags_for_object object as tag_list %}
- <td class="show_right">
-{% if tag_list %}
- <strong>Tags:</strong>
- {% for tag in tag_list %}
- {{ tag }}
- {% if not forloop.last %}, {% endif %}
- {% endfor %}
-{% endif %}
- </td>
- </tr>
- </table>
- </div>
+
+<div class="blogEntry">
+ {% if object.has_image %}
+ <a href="{{ object.get_absolute_url }}"><img class="title posLeft" src='{{MEDIA_URL}}{{ object.image|urlencode }}' alt='{{ object.image_alt }}' /></a>
+ {% endif %}
+ {% if perms.news %}
+ <div class="small posRight">
+ {% if perms.news.post_can_add %}<a href="/admin/news/post/add/">Add New Post</a>{% endif %}
+ {% if perms.news.post_can_edit %}| <a href="/admin/news/post/{{object.id}}/">Edit</a>{% endif %}
+ {% if perms.news.post_can_delete %}| <a href="/admin/news/post/{{object.id}}/delete/">Delete</a>{% endif %}
+ </div>
+ {% endif %}
+ <h2><a href="{{ object.get_absolute_url }}" class="invertedColor">{{ object.title }}</a></h2>
+ {{ object.body|wl_markdown:"safe" }}
+ <hr />
+ {% get_comment_count for object as ccount %}
+ <span class="small posLeft"><a href="{{ object.get_absolute_url }}">{{ ccount }} comments</a></span>
+ <span class="small posRight">Posted by {{object.author|user_link}} on {{ object.publish|custom_date:user }}</span>
+</div>
=== modified file 'templates/news/post_archive_month.html'
--- templates/news/post_archive_month.html 2010-06-14 18:13:06 +0000
+++ templates/news/post_archive_month.html 2012-07-04 18:20:26 +0000
@@ -2,32 +2,34 @@
{% load custom_date %}
{% load news %}
{% load pagination_tags %}
+{% load markup %}
-{% block title %}Post archive for {{ month|date:"F Y" }}{% endblock %}
-{% block body_class %}{{ block.super }} post_archive_month{% endblock %}
+{% block title %}{{ month|date:"F - Y" }} - {{block.super}}}{% endblock %}
{% block content %}
-{% load markup %}
-{% include "django_messages/inlines/navigation.html" %}
-<br />
-<br />
-<div class="muttis_liebling">
- <div class="box_item_model even show_center">
- <a href="{% url news_index %}{{ month|date:"Y" }}">Archiv {{ month|date:"Y" }}</a>
- {% for day in object_list %}
- {% endfor %}
- {% autopaginate object_list 10 %}
- {% paginate %}
- </div>
- <br />
- {% for object in object_list %}
- {% include "news/inlines/post_detail.html" %}
- <br />
- {% endfor %}
- {% if page_obj.has_other_pages %}
- <div class="box_item_model even show_center">
- {% paginate %}
- </div>
- {% endif %}
-</div>
+
+<h1>News Archive</h1>
+<a href="{% url news_index %}" class="invertedColor">News Archiv</a> »
+<a href="{% url news_index %}{{ month|date:"Y" }}/" class="invertedColor">{{ month|date:"Y" }}</a> »
+<a href="{% url news_index %}{{ month|date:"Y" }}/{{ month|date:"m" }}/" class="invertedColor">{{ month|date:"F" }}</a>
+{% for day in object_list %}
+{% endfor %}
+<br />
+
+<div class="center">
+{% autopaginate object_list 10 %}
+{% paginate %}
+</div>
+<br />
+
+{% for object in object_list %}
+ {% include "news/inlines/post_detail.html" %}
+{% endfor %}
+{% if page_obj.has_other_pages %}
+
+<div class="box_item_model even show_center">
+{% paginate %}
+</div>
+{% endif %}
+
{% endblock %}
=== modified file 'templates/news/post_archive_year.html'
--- templates/news/post_archive_year.html 2010-06-14 18:13:06 +0000
+++ templates/news/post_archive_year.html 2012-07-04 18:20:26 +0000
@@ -2,36 +2,35 @@
{% load custom_date %}
{% load news %}
{% load pagination_tags %}
-
-
-{% block title %}Post archive for {{ year }}{% endblock %}
-{% block body_class %}{{ block.super }} post_archive_year{% endblock %}
+{% load markup %}
+
+{% block title %}{{ year }} - {{ block.super }}{% endblock %}
{% block content %}
- {% load markup %}
-{% include "django_messages/inlines/navigation.html" %}
-<br />
-<br />
-<div class="muttis_liebling">
- <div class="box_item_model even show_center">
- <a href="/news/">News Archiv</a>
- {% for month in date_list %}
- | <a href="{% url news_index %}{{ year }}/{{ month|date:"m" }}/">{{ month|date:"F" }}</a>
- {% endfor %}
- <br />
- {% autopaginate object_list 10 %}
- {% paginate %}
- </div>
- <br />
- {% for object in object_list %}
- {% include "news/inlines/post_detail.html" %}
- <br />
- {% endfor %}
- {% if page_obj.has_other_pages %}
- <div class="box_item_model even show_center">
- {% paginate %}
- </div>
- {% endif %}
-
-</div>
+
+<h1>News Archive</h1>
+<a href="{% url news_index %}" class="invertedColor">News Archiv</a> »
+<a href="{% url news_index %}{{ year }}" class="invertedColor">{{ year }}</a>:
+{% for month in date_list %}
+ <a href="{% url news_index %}{{ year }}/{{ month|date:"m" }}/" class="invertedColor">{{ month|date:"F" }}</a>
+ {% if not forloop.last %} | {% endif %}
+{% endfor %}
+<br />
+
+<div class="center">
+{% autopaginate object_list 10 %}
+{% paginate %}
+</div>
+<br />
+
+{% for object in object_list %}
+ {% include "news/inlines/post_detail.html" %}
+{% endfor %}
+{% if page_obj.has_other_pages %}
+
+<div class="center">
+{% paginate %}
+</div>
+{% endif %}
+
{% endblock %}
=== modified file 'templates/news/post_detail.html'
--- templates/news/post_detail.html 2010-01-02 15:32:46 +0000
+++ templates/news/post_detail.html 2012-07-04 18:20:26 +0000
@@ -4,29 +4,29 @@
{% load threadedcommentstags %}
{% load news %}
-{% block title %}{{ object.title }} - {{ block.super }} {% endblock %}
-{% block body_class %}{{ block.super }} post_detail{% endblock %}
-{% block body_id %}post_{{ object.id }}{% endblock %}
+{% block title %}{{ object.title }} - {{ block.super }}{% endblock %}
{% block extra_head %}
-<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/news.css" />{{ block.super }}
-<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/comments.css" />{{ block.super }}
+{{ block.super }}
+<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/news.css" />
+<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/comments.css" />
{% endblock %}
{% block content %}
- <h2>{{ object.title }}</h2>
- <p class="other_posts">
- {% if object.get_previous_by_publish %}
- <a class="previous" href="{{ object.get_previous_post.get_absolute_url }}">« {{ object.get_previous_post }}</a>
- {% endif %}
- {% if object.get_next_by_publish %}
- | <a class="next" href="{{ object.get_next_post.get_absolute_url }}">{{ object.get_next_post }} »</a>
- {% endif %}
- </p>
-
- {% include "news/inlines/post_detail.html" %}
-
- <!-- Comments below -->
- <h3>Comments on this Post:</h3>
- {% include "threadedcomments/inlines/comments.html" %}
+<h1>{{ object.title }}</h1>
+{% if object.get_previous_by_publish %}
+<a class="invertedColor" href="{{ object.get_previous_post.get_absolute_url }}">« {{ object.get_previous_post }}</a>
+{% endif %}
+|
+{% if object.get_next_by_publish %}
+<a class="invertedColor" href="{{ object.get_next_post.get_absolute_url }}">{{ object.get_next_post }} »</a>
+{% endif %}
+<br /><br />
+
+{% include "news/inlines/post_detail.html" %}
+
+<div class="blogEntry">
+ <h3>Comments on this Post:</h3>
+ {% include "threadedcomments/inlines/comments.html" %}
+</div>
{% endblock %}
=== modified file 'templates/news/post_list.html'
--- templates/news/post_list.html 2010-06-14 18:17:35 +0000
+++ templates/news/post_list.html 2012-07-04 18:20:26 +0000
@@ -3,32 +3,32 @@
{% load news %}
{% load custom_date %}
{% load pagination_tags %}
-{% block title %}Post archive - {{ block.super }}{% endblock %}
-{% block body_class %}{{ block.super }} post_list{% endblock %}
{% block content %}
-{% include "django_messages/inlines/navigation.html" %}
-<br />
-<br />
-<div class="">
- {% get_news_years as news_years %}
- <div class="box_item_model even show_center">
- {% for muh in news_years %}
- <a href="{% url news_index %}{{ muh.year }}" >{{ muh.year }}</a>
- {% endfor %}
- {% autopaginate object_list 10 %}
- {% paginate %}
- </div>
- <br />
- {% for object in object_list %}
- {% include "news/inlines/post_detail.html" %}
- <br />
- {% endfor %}
- <br />
- {% if page_obj.has_other_pages %}
- <div class="box_item_model even show_center">
- {% paginate %}
- </div>
- {% endif %}
-</div>
+
+<h1>News Archive</h1>
+{% get_news_years as news_years %}
+<a href="{% url news_index %}" class="invertedColor">News Archiv</a>:
+{% for muh in news_years %}
+ <a href="{% url news_index %}{{ muh.year }}" class="invertedColor">{{ muh.year }}</a>
+ {% if not forloop.last %} | {% endif %}
+{% endfor %}
+<br />
+
+<div class="center">
+{% autopaginate object_list 10 %}
+{% paginate %}
+</div>
+<br />
+
+{% for object in object_list %}
+ {% include "news/inlines/post_detail.html" %}
+{% endfor %}
+{% if page_obj.has_other_pages %}
+
+<div class="center">
+{% paginate %}
+</div>
+{% endif %}
+
{% endblock %}
=== modified file 'templates/notification/base.html'
--- templates/notification/base.html 2009-02-20 16:46:21 +0000
+++ templates/notification/base.html 2012-07-04 18:20:26 +0000
@@ -1,1 +1,6 @@
{% extends "base.html" %}
+
+{% block extra_head %}
+ <link rel="alternate" type="application/atom+xml" title="Notices Feed" href="{% url notification_feed_for_user %}" />
+ <link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/notice.css" />{{ block.super}}
+{% endblock %}
\ No newline at end of file
=== modified file 'templates/notification/messages_received/notice.html'
--- templates/notification/messages_received/notice.html 2009-02-26 11:32:18 +0000
+++ templates/notification/messages_received/notice.html 2012-07-04 18:20:26 +0000
@@ -1,2 +1,3 @@
{% load i18n %}
-{% blocktrans with message.get_absolute_url as message_url and message.sender as message_sender %}You have received the message <a href="{{ message_url }}">{{ message }}</a> from {{ message_sender }}.{% endblocktrans %}
+{% load wlprofile %}
+{% blocktrans with message.get_absolute_url as message_url and message.sender|user_link as message_sender %}You have received the message <a href="{{ message_url }}">{{ message }}</a> from {{ message_sender }}.{% endblocktrans %}
=== modified file 'templates/notification/messages_replied/notice.html'
--- templates/notification/messages_replied/notice.html 2009-02-26 11:32:18 +0000
+++ templates/notification/messages_replied/notice.html 2012-07-04 18:20:26 +0000
@@ -1,2 +1,3 @@
{% load i18n %}
-{% blocktrans with message.parent_msg.get_absolute_url as message_url and message.parent_msg as message_parent_msg and message.recipient as message_recipient %}You have replied to <a href="{{ message_url }}">{{ message_parent_msg }}</a> from {{ message_recipient }}.{% endblocktrans %}
+{% load wlprofile %}
+{% blocktrans with message.parent_msg.get_absolute_url as message_url and message.parent_msg as message_parent_msg and message.recipient|user_link as message_recipient %}You have replied to <a href="{{ message_url }}">{{ message_parent_msg }}</a> from {{ message_recipient }}.{% endblocktrans %}
=== modified file 'templates/notification/messages_reply_received/notice.html'
--- templates/notification/messages_reply_received/notice.html 2009-02-26 11:32:18 +0000
+++ templates/notification/messages_reply_received/notice.html 2012-07-04 18:20:26 +0000
@@ -1,2 +1,3 @@
{% load i18n %}
-{% blocktrans with message.get_absolute_url as message_url and message.sender as message_sender and message.parent_msg as message_parent_msg %}{{ message_sender }} has sent you a reply to {{ message_parent_msg }}.{% endblocktrans %}
+{% load wlprofile %}
+{% blocktrans with message.get_absolute_url as message_url and message.sender|user_link as message_sender and message.parent_msg as message_parent_msg %}{{ message_sender }} has sent you a reply to {{ message_parent_msg }}.{% endblocktrans %}
=== modified file 'templates/notification/messages_sent/notice.html'
--- templates/notification/messages_sent/notice.html 2009-02-26 11:32:18 +0000
+++ templates/notification/messages_sent/notice.html 2012-07-04 18:20:26 +0000
@@ -1,2 +1,3 @@
-{% load i18n %}
-{% blocktrans with message.get_absolute_url as message_url and message.recipient as message_recipient %}You have sent the message <a href="{{ message_url }}">{{ message }}</a> to {{ message_recipient }}.{% endblocktrans %}
+{% load i18n %}
+{% load wlprofile %}
+{% blocktrans with message.get_absolute_url as message_url and message.recipient|user_link as message_recipient %}You have sent the message <a href="{{ message_url }}">{{ message }}</a> to {{ message_recipient }}.{% endblocktrans %}
=== modified file 'templates/notification/notices.html'
--- templates/notification/notices.html 2011-07-04 01:14:23 +0000
+++ templates/notification/notices.html 2012-07-04 18:20:26 +0000
@@ -5,110 +5,81 @@
{% load custom_date %}
{% block title %}
-{% trans "Notices "%} - Account - {{ block.super }}
-{% endblock %}
-
-{% block extra_head %}
- <link rel="alternate" type="application/atom+xml" title="Notices Feed" href="{% url notification_feed_for_user %}" />
- <link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/notice.css" />{{ block.super}}
+{% trans "Notifications "%} - {{ block.super }}
{% endblock %}
{% block content %}
- {% include "django_messages/inlines/navigation.html" %}
-<br />
-<br />
-<div class="box_item_model full_site border" width="100%">
- <h3 class="title">{% trans "Notices" %}</h3>
-
- {% autopaginate notices %}
-
- {% if notices %}
- <div class="info_line show_center">
- <br />
- <a href="{% url notification_mark_all_seen %}">{% trans "Mark all unseen notices seen" %}</a>
- <br />
- <br />
- </div>
- {# TODO: get timezone support working with regroup #}
- {% regroup notices by added.date as notices_by_date %}
-
- {% for date in notices_by_date %}
- <h3 class="title notice_date">{{ date.grouper|naturalday:_("MONTH_DAY_FORMAT")|capfirst }}</h3>
- {% for notice in date.list %}
- {% if notice.is_unseen %}
- <div class="{% cycle "odd" "even" %} notice_unseen_notice border_top">
- {% else %}
- <div class="{% cycle "odd" "even" %} border_top">
- {% endif %}
- <span class="notice_type"><a href="{% url notification_notice notice.pk %} ">[{% trans notice.notice_type.display %}]</a></span>
- <span class="notice_message">{{ notice.message|safe }}</span>
- <span class="notice_time">{{ notice.added }}</span>
- </div>
- {% endfor %}
- {% endfor %}
- <div class="info_line show_center">
- {% paginate %}
- </div>
- {% else %}
- <div class="info_line show_center">
- <br />
- {% trans "No notices." %}
- <br />
- <br />
- </div>
- {% endif %}
- </div>
- <br />
- <br />
- <div class="box_item_model full_site border">
- <h3 class="title">{% trans "Settings" %}</h2>
-
- {% url acct_email as email_url %}
- {% if user.email %}
- <div class="info_line show_center">
- <br />
- {% trans "Primary email" %}:<br />
- <b>{{ user.email }}</b><br />
- (change under <a href="{% url profile_view user %}">Account</a>)
- <br />
- <br />
- </div>
- {% else %}
- <div class="info_line show_center">
- <br />
- <span class="warning">{% trans "Note" %}</span>:
- You do not have a verified email address to which notices can be sent. You can add one by going to <a href="{% url profile_edit %}">Account</a>.
- <br />
- <br />
- </div>
- {% endif %}
-
- <form method="POST" action=""> {# doubt this easy to do in uni-form #}
- <table width="100%" class="notice_settings" cellspacing="1">
- <tr>
- <th>{% trans "Notification Type" %}</th>
- {% for header in notice_settings.column_headers %}
- <th>{{ header }}</th>
- {% endfor %}
- </tr>
- {% for row in notice_settings.rows %}
- <tr>
- <td class="{% cycle "odd" "even" %}">{% trans row.notice_type.display %}<br/>
- <span class="notice_type_description">{% trans row.notice_type.description %}</span>
- </td>
- {% for cell in row.cells %}
- <td class="{% cycle "odd" "even" %}">
- <input type="checkbox" name="{{ cell.0 }}" {% if cell.1 %}checked="yes"{% endif %}/>
- </td>
- {% endfor %}
- </tr>
- {% endfor %}
- <tr>
- <td class="info_line show_center" colspan="2"><input type="submit" value="{% trans "Change" %}" /></td>
- </tr>
- </table>
- {% csrf_token %}
+<h1>{% trans "Notifications" %}</h1>
+<div class="blogEntry">
+{% autopaginate notices %}
+
+{% if notices %}
+ <a href="{% url notification_mark_all_seen %}" class="posRight small">{% trans "Mark all as seen" %}</a>
+ {% paginate %}
+
+ {# TODO: get timezone support working with regroup #}
+ {% regroup notices by added.date as notices_by_date %}
+ {% for date in notices_by_date %}
+ <br />
+ <h3>{{ date.grouper|naturalday:_("MONTH_DAY_FORMAT")|capfirst }}</h3>
+ <table class="notifications">
+ {% for notice in date.list %}
+ <tr class="{% cycle "odd" "even" %} {% if notice.is_unseen %}italic{% endif %}">
+ <td class="type"><a href="{% url notification_notice notice.pk %} ">{% trans notice.notice_type.display %}</a></td>
+ <td class="text">{{ notice.message|safe }}</td>
+ <td class="date">{{ notice.added }}</td>
+ </tr>
+ {% endfor %}
+ </table>
+ {% endfor %}
+ <br />
+ {% paginate %}
+{% else %}
+ <p>
+ {% trans "No notifications." %}
+ </p>
+{% endif %}
+</div>
+<div class="blogEntry">
+ <h2>{% trans "Settings" %}</h2>
+
+ {% url acct_email as email_url %}
+ {% if user.email %}
+ <p>
+ {% trans "Primary email" %}: {{ user.email }}<br />
+ (You can change this in your <a href="{% url profile_edit %}">profile settings</a>.)
+ </p>
+ {% else %}
+ <p class="errormessage">
+ You do not have a verified email address to which notifications can be sent. You can add one by <a href="{% url profile_edit %}">editing your profile</a>.
+ </p>
+ {% endif %}
+
+ <form method="POST" action="."> {# doubt this easy to do in uni-form #}
+ <table class="notifications">
+ <tr>
+ <th class="small">{% trans "Notification Type" %}</th>
+ {% for header in notice_settings.column_headers %}
+ <th class="small">{{ header }}</th>
+ {% endfor %}
+ </tr>
+ {% for row in notice_settings.rows %}
+ <tr class="{% cycle "odd" "even" %}">
+ <td>
+ {% trans row.notice_type.display %}<br />
+ {% trans row.notice_type.description %}
+ </td>
+ {% for cell in row.cells %}
+ <td>
+ <input type="checkbox" name="{{ cell.0 }}" {% if cell.1 %}checked="checked" {% endif %}/>
+ </td>
+ {% endfor %}
+ </tr>
+ {% endfor %}
+ </table>
+ <br />
+ {% csrf_token %}
+ <input type="submit" value="{% trans "Change" %}" />
</form>
- </div>
-
+</div>
{% endblock %}
=== modified file 'templates/notification/single.html'
--- templates/notification/single.html 2010-06-12 15:25:46 +0000
+++ templates/notification/single.html 2012-07-04 18:20:26 +0000
@@ -1,50 +1,40 @@
{% extends "notification/base.html" %}
{% load humanize i18n %}
-{% load pagination_tags %}
{% load custom_date %}
{% block title %}
-{% trans "Notices "%} - Account - {{ block.super }}
-{% endblock %}
-
-{% block extra_head %}
- <link rel="alternate" type="application/atom+xml" title="Notices Feed" href="{% url notification_feed_for_user %}" />
- <link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/notice.css" />{{ block.super}}
+{% trans "Notification "%} - {{ block.super }}
{% endblock %}
{% block content %}
- {% include "django_messages/inlines/navigation.html" %}
- <br />
- <br />
- <div class="box_item_model fixed_site">
- <h3 class="title">{% trans "Notice" %}</h3>
- <table width="100%">
- <tr>
- <td class="odd">Notice:</td>
- <td class="odd">{{ notice.message|safe }}</td>
- </tr>
- <tr>
- <td class="even">Notice Type:</td>
- <td class="even">{{ notice.notice_type }}</td>
- </tr>
- <tr>
- <td class="odd">Date of Notice:</td>
- <td class="odd">{{ notice.added }}</td>
- </tr>
- <tr>
- <td class="even">Notice Unseen:</td>
- <td class="even">{{ notice.unseen }}</td>
- </tr>
- <tr>
- <td class="odd">Notice Archiv:</td>
- <td class="odd">{{ notice.archived }}</td>
- </tr>
- <tr>
- <td class="even">Notice Site:</td>
- <td class="even">{{ notice.on_site }}</td>
- </tr>
- </table>
- </div>
+<h1>{% trans "Notification" %}: {{ notice.notice_type.display }}</h1>
+<div class="blogEntry">
+ <table>
+ <tr>
+ <td class="grey">Notice:</td>
+ <td>{{ notice.message|safe }}</td>
+ </tr>
+ <tr>
+ <td class="grey">Notice Type:</td>
+ <td>{{ notice.notice_type.display }}</td>
+ </tr>
+ <tr>
+ <td class="grey">Date of Notice:</td>
+ <td>{{ notice.added }}</td>
+ </tr>
+ <tr>
+ <td class="grey">Notice Unseen:</td>
+ <td>{{ notice.unseen }}</td>
+ </tr>
+ <tr>
+ <td class="grey">Notice Archiv:</td>
+ <td>{{ notice.archived }}</td>
+ </tr>
+ <tr>
+ <td class="grey">Notice Site:</td>
+ <td>{{ notice.on_site }}</td>
+ </tr>
+ </table>
+</div>
{% endblock %}
-
=== modified file 'templates/pybb/add_post.html'
--- templates/pybb/add_post.html 2010-10-30 12:17:49 +0000
+++ templates/pybb/add_post.html 2012-07-04 18:20:26 +0000
@@ -2,11 +2,84 @@
{% load pybb_extras %}
{% load i18n %}
+{% block title %}
+{% if forum %}
+ {% trans "New Topic" %}
+{% else %}
+ {%if post %}
+ {% trans "Edit Reply" %}
+ {% else %}
+ {% trans "New Reply" %}
+ {% endif %}
+{% endif %}
+ - {{ block.super }}
+{% endblock %}
+
+{% block extra_head %}
+{{ block.super }}
+<script type="text/javascript" src="{{MEDIA_URL}}/js/disableOnSubmit.js"></script>
+<script type="text/javascript">
+ $(function() {
+ $('form').disableOnSubmit();
+ $('.post-form .preview-button').click(function() {
+ var raw_content = $.trim($('.post-form #id_body').val());
+ var markup = $('.post-form #id_markup').val();
+
+ args = {'content': raw_content, 'markup': markup}
+ $.post('{% url pybb_post_ajax_preview %}', args, function(data) {
+ if (data.error) {
+ alert(data.error);
+ } else {
+ $('.preview-box .content').html(data.content);
+ $('.preview-box').show();
+ }
+ }, 'json');
+ });
+ });
+</script>
+{% endblock %}
+
{% block content %}
-{% include "django_messages/inlines/navigation.html" %}
-<br />
-<br />
-<div class="box_item_model border">
- {% include "pybb/inlines/add_post_form.html" %}
-</div>
+<form class="post-form" action="{{ form_url }}" method="post" enctype="multipart/form-data">
+ <h1>
+ {% if forum %}
+ {% trans "New Topic" %}
+ {% else %}
+ {%if post %}
+ {% trans "Edit Reply" %}
+ {% else %}
+ {% trans "New Reply" %}
+ {% endif %}
+ {% endif %}
+ </h1>
+ <div class="blogEntry">
+ <a href="{% url pybb_index %}">Forums</a> »
+ {% if forum %}
+ <a href="{{ forum.category.get_absolute_url }}">{{ forum.category.name }}</a> »
+ {{ forum }}
+ {% else %}
+ {% pybb_link topic.forum.category %} »
+ <a href="{{ topic.forum.get_absolute_url }}">{{ topic.forum.name }}</a> »
+ {{ topic }}
+ {% endif %}
+
+ <div class="preview-box" style="display: none">
+ <br />
+ {% trans "Preview" %}:<br />
+ <div class="content post">
+ </div>
+ </div>
+
+ {{ form.as_p }}
+ {% csrf_token %}
+ <button type="submit">
+ <img src="{{MEDIA_URL}}/forum/img/send.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Send" %}</span>
+ </button>
+ <button type="button" class="preview-button">
+ <img src="{{MEDIA_URL}}/forum/img/preview.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Preview" %}</span>
+ </button>
+ </div>
+</form>
{% endblock %}
=== added file 'templates/pybb/category.html'
--- templates/pybb/category.html 1970-01-01 00:00:00 +0000
+++ templates/pybb/category.html 2012-07-04 18:20:26 +0000
@@ -0,0 +1,19 @@
+{% extends 'pybb/base.html' %}
+{% load pybb_extras %}
+
+{% block content %}
+<h1>Category: {{category.name}}</h1>
+
+<div class="blogEntry">
+ <a href="{% url pybb_index %}">Forums</a> » {{category.name}}
+ <br /><br />
+ {% include 'pybb/inlines/display_category.html' %}
+</div>
+
+<div class="center green">
+ <img src="{{MEDIA_URL}}/forum/img/folder_big_work_star.png" style="width: 48px; height:48px; margin: 0px;" alt="" class="middle" />
+ = Unread posts
+ <img src="{{MEDIA_URL}}/forum/img/folder_big_work.png" style="width: 48px; height:48px; margin: 0px;" alt="" class="middle" />
+ = No unread posts
+</div>
+{% endblock %}
=== modified file 'templates/pybb/delete_post.html'
--- templates/pybb/delete_post.html 2011-07-04 17:15:04 +0000
+++ templates/pybb/delete_post.html 2012-07-04 18:20:26 +0000
@@ -2,25 +2,24 @@
{% load i18n %}
{% block title %}
-Delete post - {{ block.super }}
+{% trans "Delete Post" %} - {{ block.super }}
{% endblock %}
{% block content %}
-{% include "django_messages/inlines/navigation.html" %}
-<br />
-<br />
-<div class="box_item_model fixed_site border">
- <h3 class="title">{% trans "Are you sure you want to delete this message?" %}</h3>
- <div class="even">
- <p class="post-preview">
- {{ post.body_html|safe }}
- </p>
- </div>
- <form method="post">
- <div class="info_line">
- <input type="submit" value="{% trans "Yes, I am sure." %}" />
- </div>
- {% csrf_token %}
- </form>
+<h1>{% trans "Delete Post" %}</h1>
+<div class="blogEntry">
+ <h3>{% trans "Are you sure you want to delete this message?" %}</h3>
+ <div class="preview-box">
+ <div class="content post">
+ {{ post.body_html|safe }}
+ </div>
+ </div>
+ <form method="post">
+ <div class="info_line">
+ <input type="submit" value="{% trans "Yes, I am sure." %}" />
+ <input type="button" value="{% trans "Cancel" %}" onclick="history.back();" />
+ </div>
+ {% csrf_token %}
+ </form>
</div>
{% endblock %}
=== modified file 'templates/pybb/edit_post.html'
--- templates/pybb/edit_post.html 2010-10-30 12:17:49 +0000
+++ templates/pybb/edit_post.html 2012-07-04 18:20:26 +0000
@@ -3,14 +3,60 @@
{% load i18n %}
{% block title %}
-Edit post - {{ block.super }}
+{% trans "Edit Reply" %} - {{ block.super }}
+{% endblock %}
+
+{% block extra_head %}
+{{ block.super }}
+<script type="text/javascript" src="{{MEDIA_URL}}/js/disableOnSubmit.js"></script>
+<script type="text/javascript">
+ $(function() {
+ $('form').disableOnSubmit();
+ $('.post-form .preview-button').click(function() {
+ var raw_content = $.trim($('.post-form #id_body').val());
+ var markup = $('.post-form #id_markup').val();
+
+ args = {'content': raw_content, 'markup': markup}
+ $.post('{% url pybb_post_ajax_preview %}', args, function(data) {
+ if (data.error) {
+ alert(data.error);
+ } else {
+ $('.preview-box .content').html(data.content);
+ $('.preview-box').show();
+ }
+ }, 'json');
+ });
+ });
+</script>
{% endblock %}
{% block content %}
-{% include "django_messages/inlines/navigation.html" %}
-<br />
-<br />
-<div class="box_item_model border">
- {% include "pybb/inlines/add_post_form.html" %}
-</div>
+<form class="post-form" action="{{ form_url }}" method="post" enctype="multipart/form-data">
+ <h1>{% trans "Edit Reply" %}</h1>
+
+ <div class="blogEntry">
+ <a href="{% url pybb_index %}">Forums</a> »
+ {% pybb_link post.topic.forum.category %} »
+ <a href="{{ post.topic.forum.get_absolute_url }}">{{ post.topic.forum.name }}</a> »
+ {{ post.topic }}
+
+ <div class="preview-box" style="display: none">
+ <br />
+ {% trans "Preview" %}:<br />
+ <div class="content post">
+ </div>
+ </div>
+
+ {{ form.as_p }}
+ {% csrf_token %}
+ <button type="submit">
+ <img src="{{MEDIA_URL}}/forum/img/send.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Send" %}</span>
+ </button>
+ <button type="button" class="preview-button">
+ <img src="{{MEDIA_URL}}/forum/img/preview.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Preview" %}</span>
+ </button>
+ </div>
+</form>
{% endblock %}
=== modified file 'templates/pybb/forum.html'
--- templates/pybb/forum.html 2010-10-29 13:41:10 +0000
+++ templates/pybb/forum.html 2012-07-04 18:20:26 +0000
@@ -1,6 +1,9 @@
{% extends 'pybb/base.html' %}
{% load pybb_extras %}
{% load i18n %}
+{% load humanize %}
+{% load wlprofile %}
+{% load custom_date %}
{% block title %}
{{ forum.name }} - {{ block.super }}
@@ -8,84 +11,78 @@
{% block extra_head %}
<link rel="alternate" type="application/atom+xml" title="Latest Posts on forum '{{ forum.name }}'" href="{% url pybb_feed "posts" %}{{forum.id}}/" />
-<link rel="alternate" type="application/atom+xml" title="Latest Topics on forum '{{ forum.name }}'" href="{% url pybb_feed "topics"%}{{forum.id}}/" />
+<link rel="alternate" type="application/atom+xml" title="Latest Topics on forum '{{ forum.name }}'" href="{% url pybb_feed "topics" %}{{forum.id}}/" />
{{ block.super }}
{% endblock %}
{% block content %}
-{% include "django_messages/inlines/navigation.html" %}
-<br />
-<br />
-<div class="box_item_model">
- <div class="forum-list">
- <span class="title"><a href="/forum/">Forum</a> ⇒ {{ forum }}</span>
- <br />
- <div class="index_forum">
- <table width="100%">
- <tr>
- <td>
- {% pybb_pagination _('Topics') %}
- </td>
- <td>
- <div class="controls">
- <a href="{% url pybb_add_topic forum.id %}">
- <img src="{{MEDIA_URL}}/forum/img/en/new_topic.png" height="25" alt ="{% trans "New Topic" %}" style="float:right" />
- </a>
- </div>
- </td>
- </tr>
- </table>
- <table cellspacing="1" width="100%">
- <tr align="center">
- <th width="5%"> </th>
- <th width="40%" nowrap="nowrap" align="left">Topic</th>
- <th nowrap="nowrap">Creator</th>
- <th nowrap="nowrap">At</th>
- <th nowrap="nowrap">Posts</th>
- <th nowrap="nowrap">Views</th>
- <th width="20%" nowrap="nowrap">Last Post</th>
- </tr>
-
- {# List all forums #}
- {% for topic in topics %}
- {% include "pybb/inlines/topic_row.html" %}
- {% endfor %}
- </table>
- <table width="100%">
- <tr>
- <td>
- {% pybb_pagination _('Topics') %}
- </td>
- <td>
- <div class="controls">
- <a href="{% url pybb_add_topic forum.id %}">
- <img src="{{MEDIA_URL}}/forum/img/en/new_topic.png" height="25" alt ="{% trans "New Topic" %}" style="float:right"/>
- </a>
- </div>
- </td>
- </tr>
- </table>
- </div>
-
- <table class="legend">
- <tr>
- <td>
- <img src="{{MEDIA_URL}}/forum/img/folder_new.png" style=":" alt="" align="middle" />
- </td>
- <td>= Unread posts</td>
- <td>
- <img src="{{MEDIA_URL}}/forum/img/folder.png" style="" alt="" align="middle" />
- </td>
- <td>= No unread posts</td>
- <td>
- </tr>
- </table>
- </div>
+<h1>Forum: {{ forum }}</h1>
+
+<div class="blogEntry">
+ <a href="{% url pybb_index %}">Forums</a> »
+ {% pybb_link forum.category %} »
+ {{ forum }}
+ <br /><br />
+ <button class="posRight" onclick="window.location.href='{% url pybb_add_topic forum.id %}';">
+ <img src="{{MEDIA_URL}}/forum/img/new_topic.png" alt ="{% trans "New Topic" %}" class="middle" />
+ <span class="middle">{% trans "New Topic" %}</span>
+ </button>
+ {% pybb_pagination _('Topics') %}
+ <br /><br />
+
+ <table class="forum">
+ <thead>
+ <tr>
+ <td class="forumIcon"></td>
+ <td class="forumTitle small">Title</td>
+ <td class="forumCount"></td>
+ <td class="lastPost small">Last Post by</td>
+ </tr>
+ </thead>
+ <tbody>
+ {% for topic in topics %}
+ <tr class="{% cycle 'odd' 'even' %}">
+ <td class="forumIcon center">
+ {% if topic|pybb_has_unreads:user %}
+ <img src="{{ MEDIA_URL }}/forum/img/doc_big_work_star.png" style="margin: 0px;" alt="" class="middle" />
+ {% else %}
+ <img src="{{ MEDIA_URL }}/forum/img/doc_big_work.png" style="margin: 0px;" alt="" class="middle" />
+ {% endif %}
+ </td>
+ <td class="forumTitle">
+ {% if topic.sticky %}<img src="{{MEDIA_URL}}/forum/img/sticky.png" alt="Sticky" title="Sticky" />{% endif %}
+ {% if topic.closed %}<img src="{{MEDIA_URL}}/forum/img/closed.png" alt="Closed" title="Closed" />{% endif %}
+ <a href="{{ topic.get_absolute_url }}">{{ topic.name }}</a><br />
+ <span class="small">Created by {{ topic.user|user_link }} on {{ topic.created|custom_date:user }}</span>
+ </td>
+ <td class="forumCount center small" style="width: 120px;">
+ Posts: {{ topic.post_count }}<br/>
+ Views: {{ topic.views }}
+ </td>
+ <td class="lastPost">
+ {%if topic.last_post %}
+ {{ topic.last_post.user|user_link }} <a href="{{ topic.last_post.get_absolute_url }}">»</a><br />
+ <span class="small">on {{ topic.last_post.created|custom_date:user }}</span>
+ {% endif %}
+ </td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+
+ <br />
+ <button class="posRight" onclick="window.location.href='{% url pybb_add_topic forum.id %}';">
+ <img src="{{MEDIA_URL}}/forum/img/new_topic.png" alt ="{% trans "New Topic" %}" class="middle" />
+ <span class="middle">{% trans "New Topic" %}</span>
+ </button>
+ {% pybb_pagination _('Topics') %}
+ <br />
+</div>
+
+<div class="center green">
+ <img src="{{MEDIA_URL}}/forum/img/doc_big_work_star.png" alt="" class="middle" />
+ = Unread posts
+ <img src="{{MEDIA_URL}}/forum/img/doc_big_work.png" alt="" class="middle" />
+ = No unread posts
</div>
{% endblock %}
-
-{% comment %}
-<div class="crumbs">
- <a href="{% url pybb_index %}">{% trans "Root" %}</a> / {% pybb_link forum.category %} / {% pybb_link forum %}
-</div>
-{% endcomment %}
=== modified file 'templates/pybb/index.html'
--- templates/pybb/index.html 2010-10-29 13:41:10 +0000
+++ templates/pybb/index.html 2012-07-04 18:20:26 +0000
@@ -2,14 +2,23 @@
{% load pybb_extras %}
{% block content %}
-{% include "django_messages/inlines/navigation.html" %}
-<br />
-<br />
-<div class="box_item_model">
+<h1>Forums</h1>
+
{% for category in cats %}
- {% include 'pybb/inlines/display_category.html' %}
+<div class="blogEntry">
+ <h3><a href="{{category.get_absolute_url}}" class="invertedColor">{{category.name}}</a></h3>
+ {% include 'pybb/inlines/display_category.html' %}
+</div>
{% endfor %}
+<div class="center green">
+ <img src="{{MEDIA_URL}}/forum/img/folder_big_work_star.png" style="width: 48px; height:48px; margin: 0px;" alt="" class="middle" />
+ = Unread posts
+ <img src="{{MEDIA_URL}}/forum/img/folder_big_work.png" style="width: 48px; height:48px; margin: 0px;" alt="" class="middle" />
+ = No unread posts
+</div>
+
+ {% comment %}
<table class="legend">
<tr>
<td>
@@ -20,7 +29,7 @@
<img src="{{MEDIA_URL}}/forum/img/folder_big.png" style="width: 48px; height:48px; margin: 0px;" alt="" align="middle" />
</td><td>= No unread posts</td>
</tr>
- {% comment %}
+
<tr>
<td>
<img src="{{MEDIA_URL}}/forum/img/folder_locked_big.png" style="width: 48px; height:48px; margin: 0px;" alt="" align="middle" />
@@ -29,8 +38,7 @@
<img src="{{MEDIA_URL}}/forum/img/folder_new_locked_big.png" style="width: 48px; height:48px; margin: 0px;" alt="" align="middle" />
</td><td>= Unread posts in locked topic</td>
</tr>
+</table>
{% endcomment %}
-</table>
-<div>
+
{% endblock %}
-
=== modified file 'templates/pybb/inlines/add_post_form.html'
--- templates/pybb/inlines/add_post_form.html 2011-11-13 15:47:39 +0000
+++ templates/pybb/inlines/add_post_form.html 2012-07-04 18:20:26 +0000
@@ -1,56 +1,61 @@
{% load i18n %}
+
{% block extra_head %}
-<script type="text/javascript" src="/wlmedia/js/disableOnSubmit.js"></script>
+{# block.super #}
+<script type="text/javascript" src="{{MEDIA_URL}}/js/disableOnSubmit.js"></script>
<script type="text/javascript">
- $(function() {
- $('form').disableOnSubmit();
- });
+ $(function() {
+ $('form').disableOnSubmit();
+ });
+
+ $(function() {
+ $('.post-form .preview-button').click(function() {
+ var raw_content = $.trim($('.post-form #id_body').val());
+ var markup = $('.post-form #id_markup').val();
+
+ args = {'content': raw_content, 'markup': markup}
+ $.post('{% url pybb_post_ajax_preview %}', args, function(data) {
+ if (data.error) {
+ alert(data.error);
+ } else {
+ $('.preview-box .content').html(data.content);
+ $('.preview-box').show();
+ }
+ }, 'json');
+ });
+ });
</script>
{% endblock %}
- <form class="post-form" action="{{ form_url }}" method="post" enctype="multipart/form-data">
- <div class="preview-box" style="display: none">
- <div class="header">
- <h3 class="title">{% trans "Preview" %}</h3>
- </div>
- <div class="content post top">
- </div>
- </div>
- <h3 class="title">
- {% if forum %}
- {% trans "New topic" %}
- {% else %}
- {%if post %}
- {% trans "Edit reply" %}
- {% else %}
- {% trans "New reply" %}
- {% endif %}
- {% endif %}
- </h3>
- <div class="content">
- {{ form.as_p }}
- </div>
- <div class="info_line show_left">
- <input type="submit" class="button_send" value="" />
- <input class="preview-button button_preview" type="button" value="" />
- </div>
- {% csrf_token %}
- </form>
-<script type="text/javascript">
-$(function() {
- $('.post-form .preview-button').click(function() {
- var raw_content = $.trim($('.post-form #id_body').val());
- var markup = $('.post-form #id_markup').val();
-
- args = {'content': raw_content, 'markup': markup}
- $.post('{% url pybb_post_ajax_preview %}', args, function(data) {
- if (data.error) {
- alert(data.error);
- } else {
- $('.preview-box .content').html(data.content);
- $('.preview-box').show();
- }
- }, 'json');
- });
-});
-
-</script>
+
+<form class="post-form" action="{{ form_url }}" method="post" enctype="multipart/form-data">
+ <div class="blogEntry">
+ <h3>
+ {% if forum %}
+ {% trans "New Topic" %}
+ {% else %}
+ {%if post %}
+ {% trans "Edit Reply" %}
+ {% else %}
+ {% trans "New Reply" %}
+ {% endif %}
+ {% endif %}
+ </h3>
+
+ <div class="preview-box" style="display: none">
+ {% trans "Preview" %}:<br />
+ <div class="content post">
+ </div>
+ </div>
+
+ {{ form.as_p }}
+ {% csrf_token %}
+ <button type="submit">
+ <img src="{{MEDIA_URL}}/forum/img/send.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Send" %}</span>
+ </button>
+ <button type="button" class="preview-button">
+ <img src="{{MEDIA_URL}}/forum/img/preview.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Preview" %}</span>
+ </button>
+ </div>
+</form>
=== modified file 'templates/pybb/inlines/display_category.html'
--- templates/pybb/inlines/display_category.html 2010-06-12 18:47:34 +0000
+++ templates/pybb/inlines/display_category.html 2012-07-04 18:20:26 +0000
@@ -1,22 +1,43 @@
{% comment %}
vim:ft=htmldjango:
- How to display a Forum list in the index page
+ How to display a Forum list
{% endcomment %}
-<div class="box_item_model index_category">
- <h3 class="title">{{category.cat}} </h3>
- <table class="full_site" cellspacing="1">
- <tr class="show_center" cellspacing="0">
- <td width="5%" class="info_line show_left"> </td>
- <td width="57%" nowrap="nowrap" class="info_line show_left">Forum</td>
- <td width="9%" nowrap="nowrap" class="info_line show_left">Topics</td>
- <td width="9%" nowrap="nowrap" class="info_line show_left">Posts</td>
- <td width="20%" nowrap="nowrap" class="info_line show_left">Last Post</td>
- </tr>
- {# List all forums #}
- {% for forum in category.forums %}
- {% include 'pybb/inlines/forum_row.html' %}
- {% endfor %}
- </table>
-</div>
-
+
+{% load humanize %}
+{% load pybb_extras %}
+{% load wlprofile %}
+{% load custom_date %}
+
+<table class="forum">
+ {# List all forums #}
+ {% for forum in category.forums.all %}
+ <tr class="{% cycle 'odd' 'even' %}">
+ <td class="forumIcon center">
+ {% if forum|pybb_has_unreads:user %}
+ <img src="{{ MEDIA_URL }}/forum/img/folder_big_work_star.png" style="width: 48px; height:48px; margin: 0px;" alt="" />
+ {% else %}
+ <img src="{{ MEDIA_URL }}/forum/img/folder_big_work.png" style="width: 48px; height:48px; margin: 0px;" alt="" />
+ {% endif %}
+ </td>
+ <td class="forumTitle">
+ <a href="{{ forum.get_absolute_url }}">{{ forum.name }}</a>
+ <br />
+ <span class="small">{{ forum.description }}</span>
+ </td>
+ <td class="forumCount center small" style="width: 120px;">
+ Topics: {{ forum.topics.count }}<br/>
+ Posts: {{ forum.posts.count }}
+ </td>
+ <td class="lastPost">
+ {%if forum.last_post %}
+ <a href="{{forum.last_post.get_absolute_url}}">{{ forum.last_post.topic.name }}</a><br />
+ <span class="small">by {{ forum.last_post.user|user_link }}<br />
+ on {{ forum.last_post.created|custom_date:user}}</span>
+ {% else %}
+
+ {% endif %}
+ </td>
+ </tr>
+ {% endfor %}
+</table>
=== modified file 'templates/pybb/last_posts.html'
--- templates/pybb/last_posts.html 2011-07-04 11:08:20 +0000
+++ templates/pybb/last_posts.html 2012-07-04 18:20:26 +0000
@@ -3,12 +3,19 @@
{% load custom_date %}
{% load pybb_extras %}
-<div>
-<br />
-{% for post in posts %}
- {{ post.topic.forum.name }}<br />
- <a href="{{ post.get_absolute_url }}" title="{{ post.topic.name }}">{{ post.topic.name|pybb_cut_string:25 }}</a><br />
- by {{ post.user.username }} {{ post.created|minutes }} ago <br />
- <br />
-{% endfor %}
+{% if posts %}
+<div class="columnModule">
+ <h3>Latest Posts</h3>
+ <div class="columnModuleBox">
+ <ul>
+ {% for post in posts %}
+ <li>
+ {{ post.topic.forum.name }}<br />
+ <a href="{{ post.get_absolute_url }}" title="{{ post.topic.name }}">{{ post.topic.name|pybb_cut_string:30 }}</a><br />
+ by <a href="{% url profile_view post.user %}">{{post.user.username}}</a> {{ post.created|minutes }} ago
+ </li>
+ {% endfor %}
+ </ul>
+ </div>
</div>
+{% endif %}
=== modified file 'templates/pybb/topic.html'
--- templates/pybb/topic.html 2010-10-30 12:17:49 +0000
+++ templates/pybb/topic.html 2012-07-04 18:20:26 +0000
@@ -1,6 +1,10 @@
{% extends 'pybb/base.html' %}
{% load pybb_extras %}
{% load i18n %}
+{% load humanize %}
+{% load wiki %}
+{% load wlprofile %}
+{% load custom_date %}
{% block title %}
{{ topic.name }} - {{ topic.forum.name }} - {{ block.super }}
@@ -13,84 +17,288 @@
{% endblock %}
{% block content %}
-{% include "django_messages/inlines/navigation.html" %}
-<br />
-<br />
-<div class="box_item_model">
- <span class="title"><a href="/forum/">Forum</a> ⇒ <a href="{{ topic.forum.get_absolute_url }}">{{ topic.forum.name }}</a> ⇒ {{ topic }}</span>
- <br />
- {% pybb_pagination _('Posts') %}
- <div class="posts" style="clear:left">
- <a name="top" id="top"></a>
- <table cellspacing="1" width="100%">
- <tr align="center">
- <th>Author</th>
- <th width="85%" nowrap="nowrap">Message</th>
- </tr>
- </table>
-
- {% if first_post %}
- {% ifnotequal first_post posts.0 %}
- {% with first_post as post %}
- <div class="post first_post">
- {% include "pybb/inlines/post.html" %}
- </div>
- {% endwith %}
- {% endifnotequal %}
- {% endif %}
- {% for post in posts %}
- <div class="post">
- {% include "pybb/inlines/post.html" %}
- </div>
- {% endfor %}
- </div>
- {% pybb_pagination _('Posts') %}
- <br />
- <div class="controls">
- <br />
- {% if moderator %}
- {% if topic.sticky %}
- <a href="{% url pybb_unstick_topic topic.id %}">
- <img src="{{MEDIA_URL}}/forum/img/en/unstick_topic.png" height="25" alr="{% trans "Unstick topic" %}" />
- </a>
- {% else %}
- <a href="{% url pybb_stick_topic topic.id %}">
- <img src="{{MEDIA_URL}}/forum/img/en/stick_topic.png" height="25" alt ="{% trans "Stick Topic" %}" />
- </a>
- {% endif %}
- {% if topic.closed %}
- <a href="{% url pybb_open_topic topic.id %}">
- <img src="{{MEDIA_URL}}/forum/img/en/open_topic.png" height="25" alt="{% trans "Open topic" %}" />
- </a>
- {% else %}
- <a href="{% url pybb_close_topic topic.id %}">
- <img src="{{MEDIA_URL}}/forum/img/en/close_topic.png" height="25" alt ="{% trans "Close Topic" %}" />
- </a>
- {% endif %}
- {% endif %}
-
-
- {% if user.is_authenticated %}
- {% if subscribed %}
- <a href="{% url pybb_delete_subscription topic.id %}?from_topic">
- <img src="{{MEDIA_URL}}/forum/img/en/unsubscribe.png" height="25" alt ="{% trans "Unsubscribe" %}" />
- </a>
- {% else %}
- <a href="{% url pybb_add_subscription topic.id %}">
- <img src="{{MEDIA_URL}}/forum/img/en/subscribe.png" height="25" alt="{% trans "Subscribe" %}" /></a>
- {% endif %}
- {% endif %}
-
- </div>
+<h1>Topic: {{ topic }}</h1>
+<div class="blogEntry">
+ <a href="{% url pybb_index %}">Forums</a> »
+ {% pybb_link topic.forum.category %} »
+ <a href="{{ topic.forum.get_absolute_url }}">{{ topic.forum.name }}</a> »
+ {{ topic }}
+ <br /><br />
+ <div class="posRight">
+ {% if moderator %}
+ {% if topic.sticky %}
+ <button onclick="window.location.href='{% url pybb_unstick_topic topic.id %}';">
+ <img src="{{MEDIA_URL}}/forum/img/unstick.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Unstick Topic" %}</span>
+ </button>
+ {% else %}
+ <button onclick="window.location.href='{% url pybb_stick_topic topic.id %}';">
+ <img src="{{MEDIA_URL}}/forum/img/sticky.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Stick Topic" %}</span>
+ </button>
+ {% endif %}
+ {% if topic.closed %}
+ <button onclick="window.location.href='{% url pybb_open_topic topic.id %}';">
+ <img src="{{MEDIA_URL}}/forum/img/open.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Open Topic" %}</span>
+ </button>
+ {% else %}
+ <button onclick="window.location.href='{% url pybb_close_topic topic.id %}';">
+ <img src="{{MEDIA_URL}}/forum/img/closed.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Close Topic" %}</span>
+ </button>
+ {% endif %}
+ {% endif %}
+ {% if user.is_authenticated %}
+ {% if subscribed %}
+ <button onclick="window.location.href='{% url pybb_delete_subscription topic.id %}?from_topic';">
+ <img src="{{MEDIA_URL}}/forum/img/unsubscribe.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Unsubscribe" %}</span>
+ </button>
+ {% else %}
+ <button onclick="window.location.href='{% url pybb_add_subscription topic.id %}';">
+ <img src="{{MEDIA_URL}}/forum/img/subscribe.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Subscribe" %}</span>
+ </button>
+ {% endif %}
+ <button onclick="window.location.href='{% url pybb_add_post topic.id %}';">
+ <img src="{{MEDIA_URL}}/forum/img/send.png" alt ="" class="middle" />
+ <span class="middle">{% trans "New Reply" %}</span>
+ </button>
+ {% endif %}
+ </div>
+ {% pybb_pagination _('Posts') %}
+ <br /><br />
+
+{% if first_post %}
+ {% ifnotequal first_post posts.0 %}
+ {% with first_post as post %}
+ {% trans "First Post" %}:
+ <table class="forum">
+ <tbody>
+ <tr class="odd">
+ <td class="author">
+ {{ post.user|user_link }}<br />
+ {% if post.user.wlprofile.avatar %}
+ <a href="{% url profile_view post.user %}">
+ <img src="{{ post.user.wlprofile.avatar.url }}" alt="Avatar" />
+ </a>
+ {% endif %}
+ <div class="authorStats">
+ <strong>Joined:</strong> {{ post.user.date_joined|custom_date:user|title }}<br />
+ <strong>Posts:</strong> {{ post.user.wlprofile.post_count }}<br />
+ <img src="{{ MEDIA_URL }}img/{{ post.user.wlprofile.user_status.image }}" alt="Ranking" /><br />
+ <strong>{{ post.user.wlprofile.user_status.text }}</strong><br />
+ {% if post.user.wlprofile.location %}
+ <strong>Location:</strong> {{ post.user.wlprofile.location }}<br />
+ {% endif %}
+ {% if post.user.wlprofile.get_ggzstats and post.user.wlprofile.get_ggzstats.ranking %}
+ <strong>GGZ ranking:</strong> {{ post.user.wlprofile.get_ggzstats.ranking|floatformat }}<br />
+ <strong>GGZ rating:</strong> {{ post.user.wlprofile.get_ggzstats.rating|floatformat }}<br />
+ <strong>GGZ win:</strong> {{ post.user.wlprofile.get_ggzstats.wins|floatformat }}<br />
+ <strong>GGZ loses:</strong> {{ post.user.wlprofile.get_ggzstats.losses|floatformat }}<br />
+ {% endif %}
+ </div>
+ </td>
+ <td class="post">
+ <a id="post-{{ post.id }}" href="{{post.get_absolute_url}}" title="{% trans "Permalink" %}" class="posRight small permalink"> </a>
+ <span class="small">Posted at: {{ post.created|custom_date:user}}</span>
+ <hr />
+ <div class="post">
+ {{ post.body_html|safe }}
+ </div>
+
+ {% if post.attachment_cache %}
+ {% for attach in post.attachment_cache %}
+ {% trans "Attachment" %}: <a href="{{ attach.get_absolute_url }}">{{ attach.name }}</a> ({{ attach.size_display }})
+ {% endfor %}
+ {% endif %}
+
+ {% if post.updated %}
+ <span class="small">{% trans "Edited" %}: {{ post.updated|custom_date:user|title}}</span>
+ {% endif %}
+ <hr />
+ {% if user.is_authenticated %}
+ {% ifequal user.wlprofile.show_signatures 1 %}
+ {% if post.user.wlprofile.signature %}
+ {{ post.user.wlprofile.signature|urlize|linebreaks }}
+ {% endif %}
+ {% endifequal %}
+ {% else %}
+ {% if post.user.wlprofile.signature %}
+ {{ post.user.wlprofile.signature|urlize|linebreaks }}
+ {% endif %}
+ {% endif %}
+
+ <button onclick="window.location.href='#top';" class="posRight">
+ <img src="{{MEDIA_URL}}/forum/img/top.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Top" %}</span>
+ </button>
+
+ <button onclick="window.location.href='{% url pybb_add_post topic.id %}?quote_id={{ post.id }}';">
+ <img src="{{MEDIA_URL}}/forum/img/quote.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Quote" %}</span>
+ </button>
+ {% if moderator or post|pybb_posted_by:user %}
+ <button onclick="window.location.href='{% url pybb_edit_post post.id %}';">
+ <img src="{{MEDIA_URL}}/forum/img/edit.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Edit" %}</span>
+ </button>
+ {% if moderator or post|pybb_equal_to:last_post %}
+ <button onclick="window.location.href='{% url pybb_delete_post post.id %}';">
+ <img src="{{MEDIA_URL}}/forum/img/delete.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Delete" %}</span>
+ </button>
+ {% endif %}
+ {% endif %}
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <br /><hr /><br />
+ {% endwith %}
+ {% endifnotequal %}
+{% endif %}
+
+ <table class="forum">
+ <tbody>
+ {% for post in posts %}
+ <tr class="{% cycle 'odd' 'even' %}">
+ <td class="author">
+ {{ post.user|user_link }}<br />
+ {% if post.user.wlprofile.avatar %}
+ <a href="{% url profile_view post.user %}">
+ <img src="{{ post.user.wlprofile.avatar.url }}" alt="Avatar" />
+ </a>
+ {% endif %}
+ <div class="authorStats">
+ <strong>Joined:</strong> {{ post.user.date_joined|custom_date:user|title }}<br />
+ <strong>Posts:</strong> {{ post.user.wlprofile.post_count }}<br />
+ <img src="{{ MEDIA_URL }}img/{{ post.user.wlprofile.user_status.image }}" alt="Ranking" /><br />
+ <strong>{{ post.user.wlprofile.user_status.text }}</strong><br />
+ {% if post.user.wlprofile.location %}
+ <strong>Location:</strong> {{ post.user.wlprofile.location }}<br />
+ {% endif %}
+ {% if post.user.wlprofile.get_ggzstats and post.user.wlprofile.get_ggzstats.ranking %}
+ <strong>GGZ ranking:</strong> {{ post.user.wlprofile.get_ggzstats.ranking|floatformat }}<br />
+ <strong>GGZ rating:</strong> {{ post.user.wlprofile.get_ggzstats.rating|floatformat }}<br />
+ <strong>GGZ win:</strong> {{ post.user.wlprofile.get_ggzstats.wins|floatformat }}<br />
+ <strong>GGZ loses:</strong> {{ post.user.wlprofile.get_ggzstats.losses|floatformat }}<br />
+ {% endif %}
+ </div>
+ </td>
+ <td class="post">
+ <a id="post-{{ post.id }}" href="{{post.get_absolute_url}}" title="{% trans "Permalink" %}" class="posRight small permalink"> </a>
+ <span class="small">Posted at: {{ post.created|custom_date:user}}</span>
+ <hr />
+ <div class="post">
+ {{ post.body_html|safe }}
+ </div>
+
+ {% if post.attachment_cache %}
+ {% for attach in post.attachment_cache %}
+ {% trans "Attachment" %}: <a href="{{ attach.get_absolute_url }}">{{ attach.name }}</a> ({{ attach.size_display }})
+ {% endfor %}
+ {% endif %}
+
+ {% if post.updated %}
+ <span class="small">{% trans "Edited" %}: {{ post.updated|custom_date:user|title}}</span>
+ {% endif %}
+ <hr />
+ {% if user.is_authenticated %}
+ {% ifequal user.wlprofile.show_signatures 1 %}
+ {% if post.user.wlprofile.signature %}
+ {{ post.user.wlprofile.signature|urlize|linebreaks }}
+ {% endif %}
+ {% endifequal %}
+ {% else %}
+ {% if post.user.wlprofile.signature %}
+ {{ post.user.wlprofile.signature|urlize|linebreaks }}
+ {% endif %}
+ {% endif %}
+
+ <button onclick="window.location.href='#top';" class="posRight">
+ <img src="{{MEDIA_URL}}/forum/img/top.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Top" %}</span>
+ </button>
+
+ <button onclick="window.location.href='{% url pybb_add_post topic.id %}?quote_id={{ post.id }}';">
+ <img src="{{MEDIA_URL}}/forum/img/quote.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Quote" %}</span>
+ </button>
+ {% if moderator or post|pybb_posted_by:user %}
+ <button onclick="window.location.href='{% url pybb_edit_post post.id %}';">
+ <img src="{{MEDIA_URL}}/forum/img/edit.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Edit" %}</span>
+ </button>
+ {% if moderator or post|pybb_equal_to:last_post %}
+ <button onclick="window.location.href='{% url pybb_delete_post post.id %}';">
+ <img src="{{MEDIA_URL}}/forum/img/delete.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Delete" %}</span>
+ </button>
+ {% endif %}
+ {% endif %}
+ </td>
+ </tr>
+ <tr class="spacer">
+ <td></td>
+ <td></td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+
+ <div class="posRight">
+ {% if moderator %}
+ {% if topic.sticky %}
+ <button onclick="window.location.href='{% url pybb_unstick_topic topic.id %}';">
+ <img src="{{MEDIA_URL}}/forum/img/unstick.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Unstick Topic" %}</span>
+ </button>
+ {% else %}
+ <button onclick="window.location.href='{% url pybb_stick_topic topic.id %}';">
+ <img src="{{MEDIA_URL}}/forum/img/sticky.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Stick Topic" %}</span>
+ </button>
+ {% endif %}
+ {% if topic.closed %}
+ <button onclick="window.location.href='{% url pybb_open_topic topic.id %}';">
+ <img src="{{MEDIA_URL}}/forum/img/open.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Open Topic" %}</span>
+ </button>
+ {% else %}
+ <button onclick="window.location.href='{% url pybb_close_topic topic.id %}';">
+ <img src="{{MEDIA_URL}}/forum/img/closed.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Close Topic" %}</span>
+ </button>
+ {% endif %}
+ {% endif %}
+ {% if user.is_authenticated %}
+ {% if subscribed %}
+ <button onclick="window.location.href='{% url pybb_delete_subscription topic.id %}?from_topic';">
+ <img src="{{MEDIA_URL}}/forum/img/unsubscribe.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Unsubscribe" %}</span>
+ </button>
+ {% else %}
+ <button onclick="window.location.href='{% url pybb_add_subscription topic.id %}';">
+ <img src="{{MEDIA_URL}}/forum/img/subscribe.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Subscribe" %}</span>
+ </button>
+ {% endif %}
+ <button onclick="window.location.href='{% url pybb_add_post topic.id %}';">
+ <img src="{{MEDIA_URL}}/forum/img/send.png" alt ="" class="middle" />
+ <span class="middle">{% trans "New Reply" %}</span>
+ </button>
+ {% endif %}
+ </div>
+ {% pybb_pagination _('Posts') %}
+ <br />
</div>
+
{% if user.is_authenticated %}
- {% if not topic.closed %}
-<br />
-<br />
-<div class="box_item_model border">
- {% include "pybb/inlines/add_post_form.html" %}
-</div>
- {% endif %}
+ {% if not topic.closed %}
+ {% include "pybb/inlines/add_post_form.html" %}
+ {% endif %}
{% endif %}
{% endblock %}
=== modified file 'templates/registration/activate.html'
--- templates/registration/activate.html 2012-03-17 16:00:49 +0000
+++ templates/registration/activate.html 2012-07-04 18:20:26 +0000
@@ -1,6 +1,18 @@
-{% extends "base.html" %}
+{% extends "registration/base.html" %}
+{% comment %}
+vim:ft=htmldjango:
+{% endcomment %}
+
+{% block title %}
+Activation - {{ block.super }}
+{% endblock %}
{% block content %}
-An error occured: Either this account has already been activated or activation key is invalid.<br>
-Try <a href="/accounts/login">logging in</a>.
+<h1>Activation</h1>
+<div class="blogEntry">
+ <p class="errormessage">
+ An error occured: Either this account has already been activated or activation key is invalid.<br />
+ Try <a href="{% url auth_login %}">logging in</a>.
+ </p>
+</div>
{% endblock %}
=== modified file 'templates/registration/activation_complete.html'
--- templates/registration/activation_complete.html 2010-01-02 22:47:18 +0000
+++ templates/registration/activation_complete.html 2012-07-04 18:20:26 +0000
@@ -1,13 +1,17 @@
-{% extends "base.html" %}
+{% extends "registration/base.html" %}
+{% comment %}
+vim:ft=htmldjango:
+{% endcomment %}
{% block title %}
-registration_form.html | {{ block.super }}
-{% endblock %}
-
-{% block header %}
-<h1>activate.html</h1>
+Activation - {{ block.super }}
{% endblock %}
{% block content %}
-You are now activated.
-{% endblock %}
\ No newline at end of file
+<h1>Activation</h1>
+<div class="blogEntry">
+ <p>
+ You are now activated and can <a href="{% url auth_login %}">log in</a>.
+ </p>
+</div>
+{% endblock %}
=== modified file 'templates/registration/login.html'
--- templates/registration/login.html 2011-07-04 01:14:23 +0000
+++ templates/registration/login.html 2012-07-04 18:20:26 +0000
@@ -1,56 +1,43 @@
{% extends "registration/base.html" %}
{% block title %}
-{{ block.super }} - Login
+Login - {{ block.super }}
{% endblock %}
{% block content %}
-{% include "django_messages/inlines/navigation.html" %}
-<br />
-<br />
-<div class="box_item_model fixed_site border">
- <h3 class="title">Login</h3>
+
+<h1>Login</h1>
+<div class="blogEntry">
{% if form.errors %}
- <div class="info_line show_center errormessage">
- <br />
- Your username and password didn't match.
- <br />
- Please try again.
- <br />
- <br />
- </div>
+ <p class="errormessage">
+ Your username and password didn't match.
+ <br />
+ Please try again.
+ </p>
{% endif %}
- <div class="info_line show_center">
- <br />
- <form method="post" action=".">
- <table>
- <tr>
- <td>
- {{ form.username.label_tag }}:
- </td>
- <td>
- {{ form.username }}
- </td>
- </tr>
- <tr>
- <td>
- {{ form.password.label_tag }}:
- </td>
- <td>
- {{ form.password }}
- </td>
- </tr>
- <tr>
- <td></td>
- <td class="show_right">
- <input type="submit" value="login" />
- <input type="hidden" name="next" value="{{ next }}" />
- </td>
- </tr>
- </table>
- {% csrf_token %}
- </form>
- <br />
- </div>
+ <form method="post" action="." id="login_form">
+ <table>
+ <tr>
+ <td class="grey">
+ {{ form.username.label_tag }}:
+ </td>
+ <td>
+ {{ form.username }}
+ </td>
+ </tr>
+ <tr>
+ <td class="grey">
+ {{ form.password.label_tag }}:
+ </td>
+ <td>
+ {{ form.password }}
+ </td>
+ </tr>
+ </table>
+ {% csrf_token %}
+ <input type="submit" value="login" />
+ <input type="hidden" name="next" value="{{ next }}" />
+ </form>
+ <p><a href="{% url auth_password_reset %}">Lost password?</a> | <a href="{% url registration_register %}">Register now!</a></p>
</div>
{% endblock %}
=== modified file 'templates/registration/password_change_done.html'
--- templates/registration/password_change_done.html 2010-10-30 12:17:49 +0000
+++ templates/registration/password_change_done.html 2012-07-04 18:20:26 +0000
@@ -3,25 +3,17 @@
vim:ft=htmldjango:
{% endcomment %}
+{% load i18n %}
+
{% block title %}
-{{ block.super }} - Change Password
+Password Change - {{ block.super }}
{% endblock %}
-{% load i18n %}
-
{% block content %}
-{% include "django_messages/inlines/navigation.html" %}
-
-<br />
-<br />
-<div class="box_item_model fixed_site border">
- <h3 class="title">Password change successful </h3>
- <div class="info_line">
- <br />
- <div class="show_center errormessage">
- Your password was changed.
- </div>
- <br />
- </div>
+<h1>Password Change</h1>
+<div class="blogEntry">
+ <p>
+ Your password was changed successfully.
+ </p>
</div>
{% endblock %}
=== modified file 'templates/registration/password_change_form.html'
--- templates/registration/password_change_form.html 2011-07-04 01:14:23 +0000
+++ templates/registration/password_change_form.html 2012-07-04 18:20:26 +0000
@@ -3,68 +3,56 @@
vim:ft=htmldjango:
{% endcomment %}
+{% load i18n %}
+
{% block title %}
-{{ block.super }} - Change Password
+Password Change - {{ block.super }}
{% endblock %}
-{% load i18n %}
-
{% block content %}
-{% include "django_messages/inlines/navigation.html" %}
-
-<br />
-<br />
-<div class="box_item_model fixed_site border">
- <h3 class="title">Password change</h3>
- <div class="info_line">
- <br />
- <div class="show_center errormessage">
- Please enter your old password,
- <br />
- for security's sake, and then enter your new password twice so we can verify you typed it in correctly.
- </div>
- <div >
- <br />
- <form action="" method="post">
- <table>
- <tr>
- <td class="show_right" width="120">
- <label for="id_old_password">{% trans 'Old password:' %}</label>
- </td>
- <td>
- {{ form.old_password }}
- <span class="errormessage">{{ form.old_password.errors }}</span>
- </td>
- </tr>
- <tr>
- <td class="show_right">
- <label for="id_new_password1">{% trans 'New password:' %}</label>
- </td>
- <td>
- {{ form.new_password1 }}
- <span class="errormessage">{{ form.new_password1.errors }}</span>
- </td>
- </tr>
- <tr>
- <td class="show_right">
- <label for="id_new_password2">{% trans 'Confirm password:' %}</label>
- </td>
- <td>
- {{ form.new_password2 }}
- <span class="errormessage">{{ form.new_password2.errors }}</span>
- </td>
- </tr>
- <tr>
- <td> </td>
- <td>
- <input type="submit" value="{% trans 'Change my password' %}" />
- </td>
- </tr>
- </table>
- {% csrf_token %}
- </form>
- <br />
- </div>
- </div>
+<h1>Password Change</h1>
+<div class="blogEntry">
+ <p>
+ Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly.
+ </p>
+ <form action="." method="post">
+ <table>
+ <tr>
+ <td class="grey" width="120">
+ <label for="id_old_password">{% trans 'Old password:' %}</label>
+ </td>
+ <td>
+ {{ form.old_password }}
+ </td>
+ <td class="errormessage">
+ {{ form.old_password.errors }}
+ </td>
+ </tr>
+ <tr>
+ <td class="grey">
+ <label for="id_new_password1">{% trans 'New password:' %}</label>
+ </td>
+ <td>
+ {{ form.new_password1 }}
+ </td>
+ <td class="errormessage">
+ {{ form.new_password1.errors }}
+ </td>
+ </tr>
+ <tr>
+ <td class="grey">
+ <label for="id_new_password2">{% trans 'Confirm password:' %}</label>
+ </td>
+ <td>
+ {{ form.new_password2 }}
+ </td>
+ <td class="errormessage">
+ {{ form.new_password2.errors }}
+ </td>
+ </tr>
+ </table>
+ {% csrf_token %}
+ <input type="submit" value="{% trans 'Change my password' %}" />
+ </form>
</div>
{% endblock %}
=== modified file 'templates/registration/password_reset_complete.html'
--- templates/registration/password_reset_complete.html 2010-10-30 12:17:49 +0000
+++ templates/registration/password_reset_complete.html 2012-07-04 18:20:26 +0000
@@ -3,25 +3,17 @@
vim:ft=htmldjango:
{% endcomment %}
+{% load i18n %}
+
{% block title %}
-{{ block.super }} - Change Password
+Password Reset - {{ block.super }}
{% endblock %}
-{% load i18n %}
-
{% block content %}
-{% include "django_messages/inlines/navigation.html" %}
-
-<br />
-<br />
-<div class="box_item_model fixed_site border">
- <h3 class="title">Password reset complete</h3>
- <div class="info_line">
- <br />
- <div>
- Your password has been set. You may go ahead and log in now.
- </div>
- <br />
- </div>
+<h1>Password Reset</h1>
+<div class="blogEntry">
+ <p>
+ Your new password has been set. You may go ahead and <a href="{% url auth_login %}">log in</a> now.
+ </p>
</div>
{% endblock %}
=== modified file 'templates/registration/password_reset_confirm.html'
--- templates/registration/password_reset_confirm.html 2011-07-04 01:14:23 +0000
+++ templates/registration/password_reset_confirm.html 2012-07-04 18:20:26 +0000
@@ -3,42 +3,51 @@
vim:ft=htmldjango:
{% endcomment %}
+{% load i18n %}
+
{% block title %}
-{{ block.super }} - Reset Password
+Password Reset - {{ block.super }}
{% endblock %}
-{% load i18n %}
-
{% block content %}
-{% include "django_messages/inlines/navigation.html" %}
-
-<br />
-<br />
-<div class="box_item_model fixed_site border">
- <h3 class="title">Password reset</h3>
- <div class="info_line">
- <br />
+<h1>Password Reset</h1>
+<div class="blogEntry">
{% if validlink %}
- <div class="show_center errormessage">
- Please enter your new password twice so we can verify you typed it in correctly.
- </div>
- <div>
- <br />
- <form action="" method="post">
- {{ form.new_password1.errors }}
- <p class="aligned wide"><label for="id_new_password1">{% trans 'New password:' %}</label>{{ form.new_password1 }}</p>
- {{ form.new_password2.errors }}
- <p class="aligned wide"><label for="id_new_password2">{% trans 'Confirm password:' %}</label>{{ form.new_password2 }}</p>
- <p><input type="submit" value="{% trans 'Change my password' %}" /></p>
- {% csrf_token %}
- </form>
- <br />
- </div>
+ <p>
+ Please enter your new password twice so we can verify you typed it in correctly.
+ </p>
+ <form action="." method="post">
+ <table>
+ <tr>
+ <td class="grey">
+ <label for="id_new_password1">{% trans 'New password:' %}</label>
+ </td>
+ <td>
+ {{ form.new_password1 }}
+ </td>
+ <td class="errormessage">
+ {{ form.new_password1.errors }}
+ </td>
+ </tr>
+ <tr>
+ <td class="grey">
+ <label for="id_new_password2">{% trans 'Confirm password:' %}</label>
+ </td>
+ <td>
+ {{ form.new_password2 }}
+ </td>
+ <td class="errormessage">
+ {{ form.new_password2.errors }}
+ </td>
+ </tr>
+ </table>
+ <input type="submit" value="{% trans 'Set new password' %}" />
+ {% csrf_token %}
+ </form>
{% else %}
- <div class="show_center errormessage">
- The password reset link was invalid, possibly because it has already been used. Please request a new password reset.
- </div>
+ <p class="errormessage">
+ The password reset link was invalid, possibly because it has already been used. Please request a new password reset.
+ </p>
{% endif %}
- </div>
</div>
{% endblock %}
=== modified file 'templates/registration/password_reset_done.html'
--- templates/registration/password_reset_done.html 2010-10-30 12:17:49 +0000
+++ templates/registration/password_reset_done.html 2012-07-04 18:20:26 +0000
@@ -3,25 +3,17 @@
vim:ft=htmldjango:
{% endcomment %}
+{% load i18n %}
+
{% block title %}
-{{ block.super }} - Reset Password
+Password Reset - {{ block.super }}
{% endblock %}
-{% load i18n %}
-
{% block content %}
-{% include "django_messages/inlines/navigation.html" %}
-
-<br />
-<br />
-<div class="box_item_model fixed_site border">
- <h3 class="title">Password reset successful</h3>
- <div class="info_line">
- <br />
- <div class="show_center errormessage">
- We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly.
- </div>
- <br />
- </div>
+<h1>Password Reset</h1>
+<div class="blogEntry">
+ <p>
+ We've e-mailed you instructions for setting your password to the e-mail address you submitted. You should be receiving it shortly.
+ </p>
</div>
{% endblock %}
=== modified file 'templates/registration/password_reset_form.html'
--- templates/registration/password_reset_form.html 2011-07-04 01:14:23 +0000
+++ templates/registration/password_reset_form.html 2012-07-04 18:20:26 +0000
@@ -3,39 +3,29 @@
vim:ft=htmldjango:
{% endcomment %}
+{% load i18n %}
+
{% block title %}
-{{ block.super }} - Register
+Password Reset - {{ block.super }}
{% endblock %}
-{% load i18n %}
-
{% block content %}
-{% include "django_messages/inlines/navigation.html" %}
-
-<br />
-<br />
-<div class="box_item_model fixed_site border">
- <h3 class="title">Password reset</h3>
- <div class="info_line">
- <br />
- <div class="show_center errormessage">
- Forgotten your password?
- <br />
- Enter your e-mail address below,
- <br />
- and we'll e-mail instructions for setting a new one.
- </div>
- <div class="show_right">
- <br />
- <form action="" method="post">
- {{ form.email.errors }}
- <label for="id_email">{% trans 'E-mail address:' %}</label> {{ form.email }}
- <input type="submit" value="{% trans 'Reset my password' %}" />
- {% csrf_token %}
- </form>
- <br />
- </div>
- </div>
+<h1>Password Reset</h1>
+<div class="blogEntry">
+ <p>
+ Forgotten your password?
+ </p>
+ <p>
+ Enter your e-mail address below, and we'll e-mail instructions for setting a new one.
+ </p>
+ <form action="." method="post">
+ {% for error in form.email.errors %}
+ <p class="errormessage">{{ error }}</p>
+ {% endfor %}
+ <label for="id_email" class="grey">{% trans 'E-mail address:' %}</label> {{ form.email }}
+ <br />
+ <input type="submit" value="{% trans 'Reset my password' %}" />
+ {% csrf_token %}
+ </form>
</div>
-
{% endblock %}
=== modified file 'templates/registration/registration_complete.html'
--- templates/registration/registration_complete.html 2010-10-30 12:17:49 +0000
+++ templates/registration/registration_complete.html 2012-07-04 18:20:26 +0000
@@ -4,21 +4,13 @@
{% endcomment %}
{% block title %}
-{{ block.super }} - Registration complete
+Registration - {{ block.super }}
{% endblock %}
{% block content %}
-{% include "django_messages/inlines/navigation.html" %}
-
-<br />
-<br />
-<div class="box_item_model fixed_site border">
- <h3 class="title">Registration</h3>
- <div class="info_line">
- <br />
- <div class="show_center errormessage">
- Thank you for signing up. An email with the activation code has been send to your inbox.
- </div>
- </div>
-</div>
+<h1>Registration</h1>
+<div class="blogEntry">
+ <p>
+ Thank you for signing up. An email with the activation code has been send to your inbox.
+ </p>
{% endblock %}
=== modified file 'templates/registration/registration_form.html'
--- templates/registration/registration_form.html 2011-07-04 01:14:23 +0000
+++ templates/registration/registration_form.html 2012-07-04 18:20:26 +0000
@@ -4,90 +4,62 @@
{% endcomment %}
{% block title %}
-{{ block.super }} - Register
+Registration - {{ block.super }}
{% endblock %}
{% block content %}
-{% include "django_messages/inlines/navigation.html" %}
-
-<br />
-<br />
-<div class="box_item_model fixed_site border">
- <h3 class="title">Registration</h3>
- <div class="info_line">
- <br />
- <form action="{% url registration_register %}" method="POST">
- <table>
- <tr>
- <td class="show_right">Username:</td>
- <td class="show_left">
- {{ registration_form.username }}
- <br/>
- {% for error in registration_form.username.errors %}
- <span class="errormessage">
- {{ error }}
- </span>
- {% endfor %}
- </td>
- </tr>
- <tr>
- <td class="show_right">Email:</td>
- <td class="show_left">
- {{ registration_form.email }}
- <br/>
- {% for error in registration_form.email.errors %}
- <span class="errormessage">
- {{ error }}
- </span>
- {% endfor %}
- </td>
- </tr>
- <tr>
- <td class="show_right">Password:</td>
- <td class="show_left">
- {{ registration_form.password1 }}
- <br/>
- {% for error in registration_form.password1.errors %}
- <span class="errormessage">
- {{ error }}
- </span>
- {% endfor %}
- </td>
- </tr>
- <tr>
- <td class="show_right">Password (again):</td>
- <td class="show_left">
- {{ registration_form.password2 }}
- <br/>
- {% for error in registration_form.password2.errors %}
- <span class="errormessage">
- {{ error }}
- </span>
- {% endfor %}
- </td>
- </tr>
- <tr>
- <td class="show_right">Prove that you're no spambot:</td>
- <td class="show_left">
- {{ registration_form.captcha|safe }}
- <br/>
- {% for error in registration_form.captcha.errors %}
- <span class="errormessage">
- {{ error }}
- </span>
- {% endfor %}
- </td>
- </tr>
- <tr>
- <td class="show_right"> </td>
- <td class="show_left">
- <input type="submit" value="Register" />
- </td>
- </tr>
- </table>
+<h1>Registration</h1>
+<div class="blogEntry">
+ <form action="." method="POST">
+ <table>
+ <tr>
+ <td class="grey">Username:</td>
+ <td>
+ {{ registration_form.username }}
+{% for error in registration_form.username.errors %}
+ <span class="errormessage">{{ error }}</span>
+{% endfor %}
+ </td>
+ </tr>
+ <tr>
+ <td class="grey">Email:</td>
+ <td>
+ {{ registration_form.email }}
+{% for error in registration_form.email.errors %}
+ <span class="errormessage">{{ error }}</span>
+{% endfor %}
+ </td>
+ </tr>
+ <tr>
+ <td class="grey">Password:</td>
+ <td>
+ {{ registration_form.password1 }}
+{% for error in registration_form.password1.errors %}
+ <span class="errormessage">{{ error }}</span>
+{% endfor %}
+ </td>
+ </tr>
+ <tr>
+ <td class="grey">Password (again):</td>
+ <td>
+ {{ registration_form.password2 }}
+ {% for error in registration_form.password2.errors %}
+ <span class="errormessage">{{ error }}</span>
+ {% endfor %}
+ </td>
+ </tr>
+ <tr>
+ <td class="grey">Prove that <br />you're no spambot:</td>
+ <td>
+ <div class="noshadow">{{ registration_form.captcha|safe }}</div>
+ {% for error in registration_form.captcha.errors %}
+ <span class="errormessage">{{error }}</span>
+ {% endfor %}
+ </td>
+ </tr>
+ </table>
+ <input type="submit" value="Register" />
{% csrf_token %}
</form>
- <br />
- </div>
</div>
{% endblock %}
=== modified file 'templates/right_boxes.html'
--- templates/right_boxes.html 2012-02-15 06:38:44 +0000
+++ templates/right_boxes.html 2012-07-04 18:20:26 +0000
@@ -6,130 +6,100 @@
{% endcomment %}
{% load inbox %}
{% load i18n %}
-{% load wlprofile wlpoll wlevents%}
+{% load wlprofile wlpoll wlevents %}
{% load pybb_extras secure_login %}
-
- <!-- Search Box -->
- <h3 class="box_title">Search</h3>
- <div class="box_content" align="center">
- <form method="post" action="/search/">
- <input id="id_search" type="text" name="search" maxlength="200" />
- <input id="id_incl_wiki" type="hidden" name="incl_wiki" value="1" />
- <input id="id_incl_news" type="hidden" name="incl_news" value="1" />
- <input id="id_incl_maps" type="hidden" name="incl_maps" value="1" />
- <input id="id_incl_help" type="hidden" name="incl_help" value="1" />
- <input id="id_incl_forum" type="hidden" name="incl_forum" value="1" />
- {% csrf_token %}
- </form>
- </div>
-
- <!-- Donation Box -->
-
- <h3 class="box_title">Donation</h3>
- <div class="box_content" align="center">
- Help us to pay our Server!<br/>(: Consider a donation :) <br/><br/>
- <div>
- <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
- <input type="hidden" name="cmd" value="_s-xclick" />
- <input type="hidden" name="lc" value="GB">
- <input type="hidden" name="hosted_button_id" value="JH5R7YHSVRMRG" />
- <input type="image" src="https://www.paypal.com/en_US/i/btn/btn_donate_SM.gif" name="submit" alt="PayPal - The safer, easier way to pay online!" />
- <img alt="" src="https://www.paypal.com/de_DE/i/scr/pixel.gif" width="1" height="1" />
- </form>
- </div>
- </div>
-
- <!-- Login Block / User informations -->
- {% if user.is_authenticated %}
- <h3 class="box_title">Account</h3>
- <div class="box_content">
- <p align="center">
- Welcome <b>{{ user|user_link }}</b>,<br />
- you've <a href="{% url messages_inbox %}">{% inbox_count %}</a> new messages
- </p>
- <ul>
- <li>
- <a href="{% url profile_edit %}">Edit Profile</a>
- </li>
- <li>
- <a href="{% url notification_notices %} ">Notifications</a>
- </li>
- <li>
- <a href="/accounts/logout/next={{ request.path }}">Logout</a>
- </li>
- </ul>
- </div>
- {% else %}
- <h3 class="box_title">Login</h3>
- <div class="box_content">
- <center>
- <a href="/accounts/login/?next={{ request.path }}">Click here to login</a><br/><br/>
- <a href="/accounts/password/reset/">Lost password?</a><br/>
- <a href="/accounts/register">Register now!</a><br/>
- </center>
- </div>
- {% endif %}
- <!-- Current polls if any -->
- {% get_open_polls as polls %}
- {% if polls %}
- <center>
- <h3 class="box_title">Polls</h3>
- <div class="box_content" align="center">
- {% for p in polls %}
- <div class="sub_content">
- <h4>{{p.name}}</h4>
- {% if not user.is_anonymous %}
- {% if p.user_has_voted %}
- <p>You already voted on this!</p>
- {% else %}
- <form method="post" action="{% url wlpoll_vote p.id %}">
- <table class="poll_vote">
- {% for c in p.choices.all %}
- <tr>
- <td><input type="radio" name="choice_id" value="{{ c.id }}" /></td>
- <td>{{ c.choice }}</td>
- </tr>
- {% endfor %}
- </table>
- <input type="submit" value="Vote" />
- {% csrf_token %}
- </form>
- {% endif %}
- {% else %}
- <p>Log in to vote!</p>
- {% endif %}
- <input type="button" value="Results" onclick="location='{% url wlpoll_detail p.id %}'" />
- </div>
- {% endfor %}
- <a href="{% url wlpoll_archive %}">Archive</a>
- </div>
- </center>
- {% endif %}
-
- <!-- Future Events if any -->
- {% get_future_events as events %}
- {% if events.count %}
- <h3 class="box_title">Important Dates</h3>
- <div class="box_content" align="center">
- {% for e in events %}
- <div class="event">
- <a href="{{e.link}}" class="link">{{e.name}}</a><br />
- <div class="date">
- {{e.start_date|date:"d M"}}
- {% ifnotequal e.start_date e.end_date %}
- - {{e.end_date|date:"d M"}}
- {% endifnotequal %}
- </div>
- </div>
- {% endfor %}
- </div>
- {% endif %}
-
- <!-- Logged in users -->
- {%load online_users %}
- {% online_users 10 %}
- <h3 class="box_title">Most recently posted</h3>
- <div class="box_content">
- {% pybb_last_posts %}
- </div>
-
+{% load online_users %}
+
+
+<!-- Donation Box -->
+<div class="columnModule">
+ <h3>Donation</h3>
+ <div class="columnModuleBox center">
+ <p>
+ Help us to pay our server!
+ <br />
+ (: Consider a donation :)
+ </p>
+ <form action="https://www.paypal.com/cgi-bin/webscr" method="post">
+ <input type="hidden" name="cmd" value="_s-xclick" />
+ <input type="hidden" name="lc" value="GB" />
+ <input type="hidden" name="hosted_button_id" value="JH5R7YHSVRMRG" />
+ <input type="image" class="donate" src="https://www.paypal.com/en_US/i/btn/btn_donate_SM.gif" name="submit" alt="PayPal - The safer, easier way to pay online!" />
+ <img alt="" src="https://www.paypal.com/de_DE/i/scr/pixel.gif" width="1" height="1" />
+ </form>
+ <br /><br />
+ </div>
+</div>
+
+
+<!-- TODO: design that -->
+<!-- Current polls if any -->
+{% get_open_polls as polls %}
+{% if polls %}
+<div class="columnModule">
+ <h3>Polls</h3>
+ <div class="columnModuleBox">
+ {% for p in polls %}
+ <h4>{{p.name}}</h4>
+ {% if not user.is_anonymous %}
+ {% if p.user_has_voted %}
+ <p class="small">You already voted on this!</p>
+ <div class="center">
+ <input type="button" value="Results" onclick="location='{% url wlpoll_detail p.id %}'" />
+ </div>
+ {% else %}
+ <form method="post" action="{% url wlpoll_vote p.id %}">
+ <ul class="poll">
+ {% for c in p.choices.all %}
+ <li><input id="{{ c.id }}" class="radio" type="radio" name="choice_id" value="{{ c.id }}" /><label for="{{ c.id }}">{{ c.choice }}</label></li>
+ {% endfor %}
+ </ul>
+ <div class="center">
+ <input type="submit" value="Vote" />
+ <input type="button" value="Results" onclick="location='{% url wlpoll_detail p.id %}'" />
+ </div>
+ {% csrf_token %}
+ </form>
+ {% endif %}
+ {% else %}
+ <p class="small"><a href="{% url auth_login %}?next={{ request.path|iriencode }}">Log in</a> to vote!</p>
+ <div class="center">
+ <input type="button" value="Results" onclick="location='{% url wlpoll_detail p.id %}'" />
+ </div>
+ {% endif %}
+ {% endfor %}
+ <div class="center">
+ <p><a href="{% url wlpoll_archive %}">Archive</a></p>
+ </div>
+ </div>
+</div>
+{% endif %}
+
+
+<!-- Future Events if any -->
+{% get_future_events as events %}
+{% if events.count %}
+<div class="columnModule">
+ <h3>Important Dates</h3>
+ <div class="columnModuleBox">
+ <ul>
+ {% for e in events %}
+ <li>
+ {{e.start_date|date:"d M"}}
+ {% ifnotequal e.start_date e.end_date %}
+ - {{e.end_date|date:"d M"}}
+ {% endifnotequal %}
+ - <a href="{{e.link}}">{{e.name}}</a></li>
+ {% endfor %}
+ </ul>
+ </div>
+</div>
+{% endif %}
+
+
+<!-- Logged in users -->
+{% online_users 10 %}
+
+
+<!-- Latest Post -->
+{% pybb_last_posts %}
=== modified file 'templates/sphinxdoc/app_list.html'
--- templates/sphinxdoc/app_list.html 2010-01-22 15:21:32 +0000
+++ templates/sphinxdoc/app_list.html 2012-07-04 18:20:26 +0000
@@ -1,14 +1,18 @@
-{% extends 'base.html' %}
+{% extends 'sphinxdoc/base.html' %}
-{% block title %}{{ block.super }} » Documentation Overview{% endblock %}
+{% block title %}Overview - {{ block.super }}{% endblock %}
{% block content %}
-<div>
- <h2 class="pagetitle">Documentation Overview</h2>
- <ul>
- {% for app in app_list %}
- <li><a href="{{ app.get_absolute_url }}">{{ app.name }}</a></li>
- {% endfor %}
- </ul>
+<h1>Documentation Overview</h1>
+<div class="blogEntry">
+ <a href="/docs/">Documentation</a>
+
+ <br />
+
+ <ul>
+ {% for app in app_list %}
+ <li><a href="{{ app.get_absolute_url }}">{{ app.name }}</a></li>
+ {% endfor %}
+ </ul>
</div>
{% endblock content %}
=== modified file 'templates/sphinxdoc/base.html'
--- templates/sphinxdoc/base.html 2010-01-22 15:21:32 +0000
+++ templates/sphinxdoc/base.html 2012-07-04 18:20:26 +0000
@@ -5,6 +5,7 @@
{% endblock %}
{% block extra_head %}
-<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/wiki.css" />{{ block.super}}
+<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/documentation.css" />
+{{ block.super}}
{% endblock %}
=== modified file 'templates/sphinxdoc/documentation.html'
--- templates/sphinxdoc/documentation.html 2010-01-22 15:21:32 +0000
+++ templates/sphinxdoc/documentation.html 2012-07-04 18:20:26 +0000
@@ -1,63 +1,58 @@
{% extends 'sphinxdoc/base.html' %}
+{% block title %}
+{{ app.name }} - {{ block.super }}
+{% endblock %}
+
{% block content %}
-<div class="pagination-top">
- » <a href="{{ app.get_absolute_url }}">{{ app.name }}</a>
- {% for p in doc.parents %}
- » <a href="{{ p.link }}">{{ p.title|safe }}</a>
- {% endfor %}
- » {{ doc.title|safe }}
- {% if doc.prev or doc.next %}
- <br /><br />
- <span class="left">
- {% if doc.prev %}
- Prev: <a href="{{ doc.prev.link }}">{{ doc.prev.title|safe }}</a>
- {% endif %}</span><span class="right">
- {% if doc.next %}
- Next: <a href="{{ doc.next.link }}">{{ doc.next.title|safe }}</a>
- {% endif %}</span>
- {% endif %}
-</div>
-
-<div class="sphinx">
- {% block doc_body %}
- {{ doc.body|safe }}
- {% endblock %}
-</div>
-
-<div class="pagination-bottom">
- {% if doc.prev or doc.next %}
- <span class="left">
- {% if doc.prev %}
- Prev: <a href="{{ doc.prev.link }}">{{ doc.prev.title|safe }}</a>
- {% endif %}</span><span class="right">
- {% if doc.next %}
- Next: <a href="{{ doc.next.link }}">{{ doc.next.title|safe }}</a>
- {% endif %}</span>
- <br /><br />
- {% endif %}
- » <a href="{{ app.get_absolute_url }}">{{ app.name }} documentation</a>
- {% for p in doc.parents %}
- » <a href="{{ p.link }}">{{ p.title|safe }}</a>
- {% endfor %}
- » {{ doc.title|safe }}
- <br /><br />
- Last update: {{ update_date|date:"Y-m-d H:i" }} (<a href="http://www.timeanddate.com/worldclock/city.html?n=37">CET</a>)
+<h1>Documentation: {{ app.name }}</h1>
+<div class="blogEntry">
+ <a href="/docs/">Documentation</a>
+ » <a href="{{ app.get_absolute_url }}">{{ app.name }}</a>
+ {% for p in doc.parents %}
+ » <a href="{{ p.link }}">{{ p.title|safe }}</a>
+ {% endfor %}
+ » {{ doc.title|safe }}
+ {% if doc.prev or doc.next %}
+ <br /><br />
+ <div class="posLeft">
+ {% if doc.prev %}
+ Prev: <a href="{{ doc.prev.link }}">{{ doc.prev.title|safe }}</a>
+ {% endif %}
+ </div>
+ <div class="posRight">
+ {% if doc.next %}
+ Next: <a href="{{ doc.next.link }}">{{ doc.next.title|safe }}</a>
+ {% endif %}
+ </div>
+ {% endif %}
+
+ <br /><br />
+
+ <div class="sphinx">
+ {% block doc_body %}
+ {{ doc.body|safe }}
+ {% endblock %}
+ </div>
+
+ <br />
+
+ <div class="pagination-bottom">
+ {% if doc.prev or doc.next %}
+ <div class="posLeft">
+ {% if doc.prev %}
+ Prev: <a href="{{ doc.prev.link }}">{{ doc.prev.title|safe }}</a>
+ {% endif %}
+ </div>
+ <div class="posRight">
+ {% if doc.next %}
+ Next: <a href="{{ doc.next.link }}">{{ doc.next.title|safe }}</a>
+ {% endif %}
+ </div>
+ <br />
+ {% endif %}
+ <hr />
+ <span class="small">Last update: {{ update_date|date:"Y-m-d H:i" }} (<a href="http://www.timeanddate.com/worldclock/city.html?n=37">CET</a>)</span>
+ </div>
</div>
{% endblock content %}
-
-{% block sidebar %}
- {% block doc_toc %}
-<div class="box">
- <h2>Contents</h2>
- {{ doc.toc|safe }}
-</div>
- {% endblock %}
-<div class="box">
- <h2>Search</h2>
- <em>Not yet implemented</em>
- {# {% load docs %} #}
- {# {% search_form %} #}
-</div>
- {{ block.super }}
-{% endblock sidebar %}
=== modified file 'templates/threadedcomments/inlines/comments.html'
--- templates/threadedcomments/inlines/comments.html 2011-07-04 01:14:23 +0000
+++ templates/threadedcomments/inlines/comments.html 2012-07-04 18:20:26 +0000
@@ -5,65 +5,53 @@
{% load wlprofile %}
{% load threadedcommentstags %}
- {% get_threaded_comment_form as form %}
- {% include "threadedcomments/inlines/reply_to.js" %}
-
- {% get_threaded_comment_tree for object as tree %}
- {% for comment in tree %}
- {% if comment.user.wlprofile.avatar %}
- <div style="margin-left: {{ comment.depth }}em; min-height: 80px;" class="comment {% cycle "odd" "even" %}">
- <span class="avatar" style="margin: 2px; margin-right: 10px; float: left;">
- <a href="{% url profile_view comment.user %}">
- <img src="{{ comment.user.wlprofile.avatar.url }}" />
- </a>
- </span>
- {% else %}
- <div style="margin-left: {{ comment.depth }}em;" class="comment {% cycle "odd" "even" %}">
- {% endif %}
- <p class="author">{{ comment.user|user_link }} said:</p>
- {% auto_transform_markup comment %}
- {% if user.is_authenticated %}
- <p><a id="c{{ comment.id }}" href="javascript:show_reply_form('c{{ comment.id }}','{% get_comment_url object comment %}','{{ comment.user.username }}')">Reply</a></p>
- {% endif %}
- </div>
- {% endfor %}
- <br />
+ {% get_threaded_comment_form as form %}
+ {% include "threadedcomments/inlines/reply_to.js" %}
+
+ {% get_threaded_comment_tree for object as tree %}
+ {% for comment in tree %}
+ <div id="c{{ comment.id }}" class="comment {% cycle "odd" "even" %}" style="margin-left: {{ comment.depth }}cm;">
+ <table>
+ <tr>
+ <td class="author" rowspan="2">
+ <a href="{% url profile_view comment.user %}">
+ <img style="width: 50px; height: 50px;" src="{{ comment.user.wlprofile.avatar.url }}" />
+ </a>
+ <br />
+ <span class="small">{{ comment.user|user_link }}</span>
+ </td>
+ <td class="text">
+ {% auto_transform_markup comment %}
+ </td>
+ </tr>
+ <tr>
+ <td class="reply_link small">
+ {% if user.is_authenticated %}
+ <a href="javascript:show_reply_form('c{{ comment.id }}','{% get_comment_url object comment %}', {{ comment.depth }})">Reply</a>
+ {% endif %}
+ </td>
+ </tr>
+ </table>
+ </div>
+ {% endfor %}
+
<br />
- <div class="box_item_model fixed_site border">
- {% if user.is_authenticated %}
- <h3 class="title">Reply to Original:</h3>
- <form method="POST" action="{% get_comment_url object %}?next={{object.get_absolute_url}}">
- <div class="content">
- <table class="text full_site">
- <tr>
- <td width="99%">
- <span class="errormessage">{{ form.comment.errors }}</span>
- {{ form.comment }}
- </td>
- <td width="1%"></td>
- </tr>
- </table>
- </div>
- <table class="info_line full_site">
- <tr>
- <td class="show_center">
- <input type="hidden" name="markup" value="1" />
- <input type="hidden" value="next" value="{{ object.get_absolute_url }}" />
- <input type="submit" value="Submit Comment" />
- </td>
- </tr>
- </table>
- {% csrf_token %}
+
+ <h3 class="title">Reply to Original:</h3>
+ {% if user.is_authenticated %}
+ <form method="POST" action="{% get_comment_url object %}?next={{object.get_absolute_url}}">
+ <span class="errormessage">{{ form.comment.errors }}</span>
+ {{ form.comment }}
+ <br />
+ <input type="hidden" name="markup" value="1" />
+ <input type="hidden" value="next" value="{{ object.get_absolute_url }}" />
+ <input type="submit" value="Submit Comment" />
+ {% csrf_token %}
</form>
- {% else %}
- <h3 class="title">Comments</h3>
- <div class="info_line errormessage show_center">
- <br />
- !!! Log in to post comments !!!
- <br />
- <br />
- </div>
- {% endif %}
- </div>
+ {% else %}
+ <p>
+ <a href="{% url auth_login %}?next={{ request.path }}">Log in</a> to post comments!
+ </p>
+ {% endif %}
=== modified file 'templates/threadedcomments/inlines/reply_to.js'
--- templates/threadedcomments/inlines/reply_to.js 2011-09-11 18:09:48 +0000
+++ templates/threadedcomments/inlines/reply_to.js 2012-07-04 18:20:26 +0000
@@ -2,42 +2,50 @@
vim:ft=htmldjango:
{% endcomment %}
{% load threadedcommentstags %}
+{% load wlprofile %}
<script type="text/javascript">
-<!--
-function show_reply_form(comment_id, url, person_name) {
- var comment_reply = $('#' + comment_id);
- var to_add = $( new Array(
- '<div class="response"><p>Reply to ' + person_name + ':</p>',
- '<form method="POST" action="' + url + '?next={{object.get_absolute_url}}">',
- '<div class="comment_post">', '<div class="comment text"> <span class=errorclass">{{ form.comment.errors }}</span>{{ form.comment }}',
- '</div> <input type="hidden" name="markup" value="1" />',
- '<input type="submit" value="Submit Comment" />',
- '</div>', "{% csrf_token %}", '</form>', '</div>').join(''));
- to_add.css("display", "none");
- comment_reply.after(to_add);
- to_add.slideDown(function() {
- comment_reply.replaceWith(new Array('<a id="',
- comment_id,'" href="javascript:hide_reply_form(\'',
- comment_id, '\',\'', url, '\',\'', person_name,
- '\')">Stop Replying</a>').join(''));
- });
+function show_reply_form(comment_id, url, depth) {
+ var comment = $('#' + comment_id);
+ var reply_link = $('#' + comment_id + " .reply_link");
+ var reply_form = $('<div class="comment odd response" style="margin-left: ' + (depth+1) +'cm;">'
+ + '<table>'
+ + '<tr>'
+ + '<td class="author">'
+ + '<a href="{% url profile_view user %}">'
+ + '<img style="width: 50px; height: 50px;" src="{{ user.wlprofile.avatar.url }}" />'
+ + '</a>'
+ + '<br />'
+ + '<span class="small">{{ user|user_link }}</span>'
+ + '</td>'
+ + '<td class="text">'
+ + '<form method="POST" action="' + url + '?next={{object.get_absolute_url}}">'
+ + '<span class="errormessage">{{ form.comment.errors }}</span>'
+ + '{{ form.comment }}'
+ + '<br />'
+ + '<input type="hidden" name="markup" value="1" />'
+ + '<input type="submit" value="Submit Comment" />'
+ + '<button type="button" onclick="javascript:hide_reply_form(\''+comment_id+'\', \''+url+'\', '+depth+')">Cancel</button>'
+ + "{% csrf_token %}"
+ + '</form>'
+ + '</td>'
+ + '</tr>'
+ + '</table>'
+ + '</div>');
+ reply_form.css("display", "none");
+ comment.after(reply_form);
+ reply_link.html('<a href="javascript:hide_reply_form(\''+comment_id+'\', \''+url+'\', '+depth+')">Stop Replying</a>');
+ reply_form.slideDown(function() {});
+}
- check_posting();
-}
-function hide_reply_form(comment_id, url, person_name) {
- var comment_reply = $('#' + comment_id);
- comment_reply.next().slideUp(function (){
- comment_reply.next('.response').remove();
- comment_reply.replaceWith(new Array('<a id="',
- comment_id,'" href="javascript:show_reply_form(\'',
- comment_id, '\',\'', url, '\',\'', person_name,
- '\')">Reply</a>').join(''));
- });
-
- check_posting();
-}
--->
+function hide_reply_form(comment_id, url, depth) {
+ var comment = $('#' + comment_id);
+ var reply_link = $('#' + comment_id + " .reply_link");
+ reply_link.html('<a href="javascript:show_reply_form(\''+comment_id+'\', \''+url+'\', '+depth+')">Reply</a>');
+ comment.next('.response').slideUp(function() {
+ comment.next('.response').remove();
+ });
+}
</script>
=== modified file 'templates/threadedcomments/preview_comment.html'
--- templates/threadedcomments/preview_comment.html 2011-07-04 01:14:23 +0000
+++ templates/threadedcomments/preview_comment.html 2012-07-04 18:20:26 +0000
@@ -2,28 +2,25 @@
{% load threadedcommentstags %}
+{% block extra_head %}
+{{ block.super }}
+<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/comments.css" />
+{% endblock %}
+
{% block content %}
- {% if comment %}
- <div id="comment_preview">{% auto_transform_markup comment %}</div>
- {% endif %}
- <form method="POST" action="">
- <div class="content">
- <table class="text" width="100%">
- <tr>
- <td width="99%">
- <span class="errormessage">{{ form.comment.errors }}</span>
- {{ form.comment }}
- </td>
- <td width="1%"></td>
- </tr>
- <tr>
- <td class="bottom_line show_center">
- <input type="hidden" name="markup" value="1" />
- <input type="submit" value="Submit Comment" />
- </td>
- </tr>
- </table>
- </div>
- {% csrf_token %}
- </form>
+<h1>Comment</h1>
+<div class="blogEntry">
+ {% if comment %}
+ <h3>Preview:</h3>
+ <div id="comment_preview">{% auto_transform_markup comment %}</div>
+ {% endif %}
+ <form method="POST" action=".">
+ <span class="errormessage">{{ form.comment.errors }}</span>
+ {{ form.comment }}
+ <br />
+ <input type="hidden" name="markup" value="1" />
+ <input type="submit" value="Submit Comment" />
+ {% csrf_token %}
+ </form>
+</div>
{% endblock %}
=== modified file 'templates/wiki/base.html'
--- templates/wiki/base.html 2009-03-29 09:34:30 +0000
+++ templates/wiki/base.html 2012-07-04 18:20:26 +0000
@@ -5,7 +5,8 @@
{% endblock %}
{% block extra_head %}
+{{ block.super}}
<link rel="alternate" type="application/rss+xml" title="Wiki History (RSS)" href="{% url wiki_history_feed "rss" %}" />
<link rel="alternate" type="application/atom+xml" title="Wiki History (Atom)" href="{% url wiki_history_feed "atom" %}" />
-<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/wiki.css" />{{ block.super}}
+<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/wiki.css" />
{% endblock %}
=== modified file 'templates/wiki/changeset.html'
--- templates/wiki/changeset.html 2010-01-03 21:51:19 +0000
+++ templates/wiki/changeset.html 2012-07-04 18:20:26 +0000
@@ -2,27 +2,28 @@
{% load i18n %}
{% block title %}
-Changes in {{ article_title }} - {{ block.super }}
+{% trans "Changes in" %} {{ article.title }} - {{ block.super }}
{% endblock %}
{% block content %}
- <div align="right">
- <a href="{% url wiki_article article.title %}">{% trans "Back to article" %}</a>
- |
- <a href="{% url wiki_article_history article.title %}">{% trans "Editing history" %}</a>
- </div>
- <h1> <a href="{% url wiki_article article_title %}"> {{ article_title }} </a> </h1>
- {% if changeset.old_title %}
- <h2> {{ changeset.old_title }} </h2>
- {% endif %}
- {% if changeset.comment %}
- <div class="comment">
- <p>Editor comment:<br />
- {{changeset.comment}}</p>
- </div>
- {%endif %}
- <h3>Revision differences</h3>
- <div class="changeset_content">
- {{ changeset.display_diff|safe }}
- </div>
+<div class="posRight small">
+ <a href="{% url wiki_article article.title %}" class="invertedColor">{% trans "Back to article" %}</a>
+ | <a href="{% url wiki_article_history article.title %}" class="invertedColor">{% trans "Editing history" %}</a>
+</div>
+<h1>{% trans "Changes in" %} {{ article.title }}</h1>
+
+<div class="blogEntry">
+ {% if changeset.old_title %}
+ <h3>{% trans "Old title" %}</h3>
+ <p>{{ changeset.old_title }}</p>
+ <br />
+ {% endif %}
+ {% if changeset.comment %}
+ <h3>Editor comment</h3>
+ <p>{{changeset.comment}}</p>
+ <br />
+ {%endif %}
+ <h3>Revision differences</h3>
+ {{ changeset.display_diff|safe }}
+</div>
{% endblock %}
=== modified file 'templates/wiki/edit.html'
--- templates/wiki/edit.html 2011-07-04 01:14:23 +0000
+++ templates/wiki/edit.html 2012-07-04 18:20:26 +0000
@@ -3,141 +3,126 @@
{% load wlimages %}
{% block title %}
-{% trans "Editing article" %} - {{ block.super }}
+{% trans "Editing" %} {{ article.title }} - {{ block.super }}
{% endblock %}
{% block extra_head %}
-<script type="text/javascript" src="/wlmedia/js/disableOnSubmit.js"></script>
+<script type="text/javascript" src="{{ MEDIA_URL }}/js/disableOnSubmit.js"></script>
<script type="text/javascript">
- $(function() {
- $('form').disableOnSubmit();
- });
+ $(function() {
+ $('form').disableOnSubmit();
+ });
+
+ $(document).ready(function() {
+ // Insert rendered markup for preview
+ $("#id_preview").click(function(){
+ // Activate preview
+ $("#preview").html("<h3>Preview</h3>\n<hr>\n<div class=\"wiki_article\" id=\"content_preview\">Loading...</div>\n<hr>");
+ $("#content_preview").load( "{% url wiki_preview %}",
+ {"body": $("#id_content").val()});
+ })
+
+ {% ifequal new_article 0 %}
+ // Insert diff
+ $("#id_diff").click(function(){
+ // Activate preview
+ $("#diff").html("<h3>Diff</h3>\n<hr>\n<div id=\"content_diff\">Loading...</div>\n<hr>");
+ $("#content_diff").load( "{% url wiki_preview_diff %}",
+ {"body": $("#id_content").val(), "article": {{ object_id }} });
+ })
+ {%endifequal%}
+ });
</script>
-
{{ block.super }}
{% endblock %}
{% block content %}
- <script type="text/javascript">
- $(document).ready(
- function() {
- // Insert rendered markup for preview
- $("#id_preview").click(function(){
- // Activate preview
- $("#preview").html("<h1>Preview</h1>\n<hr>\n<div class=\"wiki_article\" id=\"content_preview\">Loading...</div>\n<hr>");
-
- $("#content_preview").load( "{% url wiki_preview %}",
- {"body": $("#id_content").val(),
- });
- })
-
- {% ifequal new_article 0 %}
- // Insert diff
- $("#id_diff").click(function(){
- // Activate preview
- $("#diff").html("<h1>Diff</h1>\n<hr>\n<div id=\"content_diff\">Loading...</div>\n<hr>");
-
- $("#content_diff").load( "{% url wiki_preview_diff %}",
- {"body": $("#id_content").val(),
- "article": {{ object_id }},
- });
- })
- {%endifequal%}
- }
- );
- </script>
- {% if not new_article %}
- <div align="right">
- <a href="{% url wiki_article article.title %}">{% trans "Back to article" %}</a>
- |
- <a href="{% url wiki_article_history article.title %}">{% trans "Editing history" %}</a>
- </div>
- {% endif %}
-
- <h1>{% trans "Edit" %}</h1>
-
- <p>
- You can edit the wiki pages contents using the Syntax described on the
- <a href="/wiki/WikiSyntax">WikiSyntax</a>.
- </p>
-
- <div id="preview"></div>
-
- <div id="diff"></div>
-
- <form action="" method="post">
- <table id="edit_wiki_page_form">
- <!-- Title -->
- <tr>
- <th><label for="id_title">{% trans "Title" %}:</label></th>
- <td>{{ form.title.errors }}{{ form.title }}</td>
- </tr>
-
- <!-- Content -->
- <tr><th colspan="2"><label for="id_content">{% trans "Content" %}:</label></th></tr>
- <tr><td colspan="2" >{{ form.content.errors }}{{ form.content }}</td></tr>
-
- <!-- Summary -->
- <tr><th colspan="2"><label for="id_summary">{% trans "Page Summary" %}:</label></th></tr>
- <tr><td colspan="2" >{{ form.summary.errors }}{{ form.summary }}</td></tr>
-
- <!-- Comment -->
- <tr><th colspan=2><label for="id_comment">{% trans "Comment for this revision" %}:</label></th></tr>
- <tr><td colspan=2 >{{ form.comment.errors }}{{ form.comment }}</td></tr>
-
- </table>
- <!-- Markup as hidden element -->
- <input type="hidden" name="markup" value="mrk" />
- {{ form.content_type }}
- {{ form.object_id }}
- {{ form.action }}
- {{ form.user_ip }}
-
- <div class="submit">
+{% if not new_article %}
+<div class="posRight small">
+ <a href="{% url wiki_article article.title %}" class="invertedColor">{% trans "Back to article" %}</a>
+ |
+ <a href="{% url wiki_article_history article.title %}" class="invertedColor">{% trans "Editing history" %}</a>
+</div>
+{% endif %}
+<h1>{% trans "Editing" %} {{ article.title }}</h1>
+
+<div class="blogEntry">
+ <p>
+ You can edit the wiki pages contents using the syntax described on the <a href="/wiki/WikiSyntax">WikiSyntax</a>.
+ </p>
+
+ <div id="preview"></div>
+
+ <div id="diff"></div>
+
+ <form action="." method="post">
+ <table id="edit_wiki_page_form">
+ <!-- Title -->
+ <tr>
+ <th><label for="id_title">{% trans "Title" %}:</label></th>
+ <td>{{ form.title.errors }}{{ form.title }}</td>
+ </tr>
+ <!-- Content -->
+ <tr><th colspan="2"><label for="id_content">{% trans "Content" %}:</label></th></tr>
+ <tr><td colspan="2" >{{ form.content.errors }}{{ form.content }}</td></tr>
+ <!-- Summary -->
+ <tr><th colspan="2"><label for="id_summary">{% trans "Page Summary" %}:</label></th></tr>
+ <tr><td colspan="2" >{{ form.summary.errors }}{{ form.summary }}</td></tr>
+ <!-- Comment -->
+ <tr><th colspan=2><label for="id_comment">{% trans "Comment for this revision" %}:</label></th></tr>
+ <tr><td colspan=2 >{{ form.comment.errors }}{{ form.comment }}</td></tr>
+ </table>
+ <!-- Markup as hidden element -->
+ <input type="hidden" name="markup" value="mrk" />
+ {{ form.content_type }}
+ {{ form.object_id }}
+ {{ form.action }}
+ {{ form.user_ip }}
+
+ <div>
<input id="id_preview" type="button" value="{% trans "Preview" %}" />
- {% ifequal new_article 0 %}
+ {% ifequal new_article 0 %}
<input id="id_diff" type="button" value="{% trans "Diff" %}" />
- {% endifequal %}
- <br/>
+ {% endifequal %}
<input type="submit" value="{% trans "Save" %}" />
</div>
- {% csrf_token %}
- </form>
-
-
- {% if new_article %}
- <h2>Images</h2>
- You must save the article once before you can attach images to it
- {% else %}
- {% if images.count %}
- <h2>Images</h2>
- Images attached to this article:
- <table width="100%">
- <tr>
- <th>Image Title</th>
- <th>Image</th>
- <th>Code to include</th>
- </tr>
- {% for img in images %}
- <tr>
- <td>{{ img.name }}</td>
- <td><img src="{{ img.url }}"></td>
- <td>![{{img.name}}]({{ img.url }})</td>
- </tr>
- {% endfor %}
- </table>
- {%endif%}
-
- {% get_upload_form as iform %}
- <form enctype="multipart/form-data" action="/images/upload/{{content_type}}/{{object_id}}/{{request.path}}" method="POST">
- {{ iform.as_p }}
- <div class="submit">
- <input type="submit" value="{% trans "Upload Image" %}" />
- </div>
- {% csrf_token %}
- </form>
-
- {% endif%}
-
+ {% csrf_token %}
+ </form>
+ <br />
+ <h3>Images</h3>
+ {% if new_article %}
+ You must save the article once before you can attach images to it.
+ {% else %}
+ {% if images.count %}
+ Images attached to this article:
+ <table width="100%">
+ <thead>
+ <tr>
+ <th>Image Title</th>
+ <th>Image</th>
+ <th>Code to include</th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for img in images %}
+ <tr>
+ <td>{{ img.name }}</td>
+ <td><img src="{{ img.url }}"></td>
+ <td>![{{img.name}}]({{ img.url }})</td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+ {%endif%}
+
+ {% get_upload_form as iform %}
+ <form enctype="multipart/form-data" action="/images/upload/{{content_type}}/{{object_id}}/{{request.path|iriencode}}" method="POST">
+ {{ iform.as_p }}
+ <div>
+ <input type="submit" value="{% trans "Upload Image" %}" />
+ </div>
+ {% csrf_token %}
+ </form>
+ {% endif%}
+</div>
{% endblock %}
-
=== modified file 'templates/wiki/history.html'
--- templates/wiki/history.html 2009-03-28 19:37:44 +0000
+++ templates/wiki/history.html 2012-07-04 18:20:26 +0000
@@ -4,59 +4,55 @@
{% block title %}
-{% trans "History for" %} {{ article.title }} - {{ block.super }}
+{% trans "Article History of" %} {{ article.title }} - {{ block.super }}
{% endblock %}
{% block content %}
-<div align="right">
- <a href="{% url wiki_article article.title %}">{% trans "Back to article" %}</a>
-</div>
-
-<h1>
- <a href="{{ article.get_absolute_url }}"> {{ article.title }} </a>
-</h1>
-
-<h2> {% trans "Article History" %} </h2>
-
-<form action="{% url wiki_revert_to_revision article.title %}" method="post">
- <table class="history_list">
- <tr>
- <th>{% trans "At" %}</th>
- <th>{% trans "User" %}</th>
- <th>{% trans "Comment" %}</th>
- <th>{% trans "Revert" %}</th>
- </tr>
- {% for change in changes %}
- <tr class="{% cycle 'odd' 'even' %}">
- <td><a href="{{ change.get_absolute_url }}">
- {{ change.modified|custom_date:user }}</a>
- </td>
- <td>
- {% if change.is_anonymous_change %}
- {{ change.editor_ip }}
- {% else %}
- <a href="{% url wiki_article change.editor %}">{{ change.editor }}</a>
- {% endif %}
- </td>
- <td>
- {% if change.comment %}<i>'{{ change.comment}}'</i> {% endif %}
- </td>
- <td>
- {% if forloop.first %}
- {% trans "Current revision" %}
- {% else %}
- <input id="id_revision" name="revision"
- type="radio" value="{{ change.revision }}" />
- {% endif %}
- </td>
- </tr>
- {% endfor %}
- </table>
-
- <input type="submit" value="{% trans "Revert" %}" />
-
-</form>
-
-<a href="{% url wiki_article_history_feed title=article.title,feedtype="atom" %}">Atom Feed</a>
-
+<div class="posRight small">
+ <a href="{% url wiki_article article.title %}" class="invertedColor">{% trans "Back to article" %}</a>
+ | <a href="{% url wiki_article_history_feed title=article.title,feedtype="atom" %}" class="invertedColor">Atom Feed</a>
+</div>
+<h1>{% trans "Article History of" %} {{ article.title }}</h1>
+
+<div class="blogEntry">
+ <form action="{% url wiki_revert_to_revision article.title %}" method="post">
+ <table class="history_list">
+ <thead>
+ <tr>
+ <th>{% trans "At" %}</th>
+ <th>{% trans "User" %}</th>
+ <th>{% trans "Comment" %}</th>
+ <th>{% trans "Revert" %}</th>
+ </tr>
+ </thead>
+ <tbody>
+ {% for change in changes %}
+ <tr class="{% cycle 'odd' 'even' %}">
+ <td><a href="{{ change.get_absolute_url }}">
+ {{ change.modified|custom_date:user }}</a>
+ </td>
+ <td>
+ {% if change.is_anonymous_change %}
+ {{ change.editor_ip }}
+ {% else %}
+ <a href="{% url wiki_article change.editor %}">{{ change.editor }}</a>
+ {% endif %}
+ </td>
+ <td>
+ {% if change.comment %}<i>'{{ change.comment}}'</i> {% endif %}
+ </td>
+ <td>
+ {% if forloop.first %}
+ {% trans "Current revision" %}
+ {% else %}
+ <input id="id_revision" name="revision" type="radio" value="{{ change.revision }}" />
+ {% endif %}
+ </td>
+ </tr>
+ {% endfor %}
+ </tbody>
+ </table>
+ <input type="submit" value="{% trans "Revert" %}" />
+ </form>
+</div>
{% endblock %}
=== modified file 'templates/wiki/index.html'
--- templates/wiki/index.html 2009-02-25 16:39:09 +0000
+++ templates/wiki/index.html 2012-07-04 18:20:26 +0000
@@ -1,13 +1,11 @@
{% extends "wiki/base.html" %}
{% load i18n %}
-
-
{% block title %}Wiki Index - {{ block.super }}{% endblock %}
{% block content %}
- <h1>Wiki Index</h1>
-
+<h1>Wiki Index</h1>
+<div class="blogEntry">
{% if articles %}
<ul>
{% for article in articles %}
@@ -17,4 +15,5 @@
{% else %}
<p><a href="{% url wiki_edit "NewArticle" %}">{% trans "Create a new article" %}</a>.</p>
{% endif %}
+</div>
{% endblock %}
=== modified file 'templates/wiki/view.html'
--- templates/wiki/view.html 2009-03-29 09:34:30 +0000
+++ templates/wiki/view.html 2012-07-04 18:20:26 +0000
@@ -6,7 +6,6 @@
{{ article.title }} - {{block.super}}
{% endblock %}
-
{% block extra_head %}
<link rel="alternate" type="application/rss+xml" title="Wiki History for article {{ article.title }} (RSS)" href="{% url wiki_article_history_feed article.title "rss" %}" />
<link rel="alternate" type="application/atom+xml" title="Wiki History for article {{ article.title }} (Atom)" href="{% url wiki_article_history_feed article.title "atom" %}" />
@@ -14,30 +13,32 @@
{% endblock %}
{% block content %}
- <div class="wiki_article">
- <div align="right">
- {% if article.id %}
- <a href="{% url wiki_edit article.title %}">{% trans "Edit this article" %}</a>
- |
- <a href="{% url wiki_article_history article.title %}">{% trans "Editing history" %}</a>
- {% if can_observe %}
- |
- {% if is_observing %}
- <a href="{% url wiki_stop_observing article.title %}">{% trans "Stop observing" %}</a>
- {% else %}
- <a href="{% url wiki_observe article.title %}">{% trans "Observe" %}</a>
- {% endif %}
- {% endif %}
- {% else %}
- <a href="{% url wiki_edit article.title %}">{% trans "Create this article" %}</a>
- {% endif %}
- </div>
- {% if not article.id %}
- <p>{% trans "This article does not exist." %}
- <a href="{% url wiki_edit article.title %}">{% trans "Create it now?" %}</a></p>
- {% endif %}
-
- {% render_content article %}
- </div>
+<div class="posRight small">
+ {% if article.id %}
+ <a class="invertedColor" href="{% url wiki_edit article.title %}">{% trans "Edit this article" %}</a>
+ |
+ <a class="invertedColor" href="{% url wiki_article_history article.title %}">{% trans "Editing history" %}</a>
+ {% if can_observe %}
+ |
+ {% if is_observing %}
+ <a class="invertedColor" href="{% url wiki_stop_observing article.title %}">{% trans "Stop observing" %}</a>
+ {% else %}
+ <a class="invertedColor" href="{% url wiki_observe article.title %}">{% trans "Observe" %}</a>
+ {% endif %}
+ {% endif %}
+ {% else %}
+ <a href="{% url wiki_edit article.title %}">{% trans "Create this article" %}</a>
+ {% endif %}
+</div>
+<h1>{{ article.title }}</h1>
+<div class="blogEntry">
+ {% if not article.id %}
+ <p>
+ {% trans "This article does not exist." %}
+ <a href="{% url wiki_edit article.title %}">{% trans "Create it now?" %}</a>
+ </p>
+ {% endif %}
+ {% render_content article %}
+</div>
{% endblock %}
=== modified file 'templates/wlggz/edit_ggz.html'
--- templates/wlggz/edit_ggz.html 2011-07-04 01:14:23 +0000
+++ templates/wlggz/edit_ggz.html 2012-07-04 18:20:26 +0000
@@ -1,44 +1,26 @@
-{% extends "wlggz/base.html" %}
+{% extends "base.html" %}
{% load i18n %}
+{% block title %}
+{% trans "Set Online Gaming Password" %} - {{ block.super }}
+{% endblock %}
+
{% block content %}
-{% include "django_messages/inlines/navigation.html" %}
-<br />
-<br />
-<div class="box_item_model fixed_site border">
- <h3 class="title">{% trans "Set GGZ password" %}</h3>
- <form method="post" enctype="multipart/form-data">
- <div class="content">
- <table cellspacing="1" class="text full_site">
- {% if profile_form.errors %}
- <tr>
- <td class="even" colspan="2">{{ profile_form.errors }}</td>
- </tr>
- {% endif %}
- {% for field in ggz_form %}
- <tr>
- {% if field.errors %}
- <td colspan="2" class="{% cycle "odd" "even" %}">
- <div class="errormessage">{{ field.errors }}</div>
- </td>
- </tr>
- <tr>
- {% endif %}
- <td class="{% cycle "odd" "even" %}">{{ field.label_tag }}:</td>
- <td class="{% cycle "odd" "even" %}">{{ field }}
- {% ifequal field.name "time_display" %}
- <a href="/wiki/HomepageDocuTimeDisplay">Documented here</a>
- {% endifequal %}
- </td>
- </tr>
- {% endfor %}
- </table>
- </div>
- <div class="info_line">
- <input type="submit" value="{% trans "Save" %}" />
- </div>
- {% csrf_token %}
- </form>
+<h1>{% trans "Set Online Gaming Password" %}</h1>
+<div class="blogEntry">
+ <form method="post" enctype="multipart/form-data" action=".">
+ <table>
+ {% for field in ggz_form %}
+ <tr>
+ <td class="grey">{{ field.label_tag }}:</td>
+ <td>{{ field }}</td>
+ <td class="errormessage">{{ field.errors }}</td>
+ </tr>
+ {% endfor %}
+ </table>
+ <input type="submit" value="{% trans "Save" %}" />
+ {% csrf_token %}
+ </form>
</div>
{% endblock %}
=== added directory 'templates/wlhelp'
=== added file 'templates/wlhelp/base.html'
--- templates/wlhelp/base.html 1970-01-01 00:00:00 +0000
+++ templates/wlhelp/base.html 2012-07-04 18:20:26 +0000
@@ -0,0 +1,10 @@
+{% extends "base.html" %}
+
+{% block title %}
+Encyclopedia - {{ block.super }}
+{% endblock %}
+
+{% block extra_head %}
+<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/help.css" />
+{{ block.super}}
+{% endblock %}
\ No newline at end of file
=== renamed file 'online_help/templates/building_details.html' => 'templates/wlhelp/building_details.html'
--- online_help/templates/building_details.html 2010-11-02 14:02:06 +0000
+++ templates/wlhelp/building_details.html 2012-07-04 18:20:26 +0000
@@ -1,18 +1,64 @@
-{% extends "base.html" %}
+{% extends "wlhelp/base.html" %}
{% comment %}
vim:ft=htmldjango
{% endcomment %}
+{% block title %}
+{{ building.displayname }} - {{ tribe.displayname }} - {{ block.super }}
+{% endblock %}
{% block content %}
-
-
-<center>
-<img src="{{ building.graph_url }}" usemap="#G" alt="Graph for {{ building.name }}" />
-
-{{ building.imagemap|safe }}
-</center>
-
-Return to the <a href="../">Building overview/<a>.
-
+<h1>{{ tribe.displayname }}: {{ building.displayname }}</h1>
+<div class="blogEntry">
+ <a href="{% url wlhelp_index %}">Encyclopedia</a> »
+ <a href="{% url wlhelp_tribe_details tribe.name %}">{{ tribe.displayname }}</a> »
+ <a href="{% url wlhelp_buildings tribe.name %}">Buildings</a> »
+ {{ building.displayname }}
+ <br /><br />
+
+ <h2>Description</h2>
+ <p>{{ building.help }}</p>
+
+ <h2>Economy Graph</h2>
+ {{ building.imagemap|safe }}
+ <img src="{{ building.graph_url }}" usemap="#G" alt="Graph for {{ building.displayname }}" />
+
+{% comment %}
+
+{% if building.get_build_cost %}
+ <h2>Build Cost<h2>
+ {% for costs in building.get_build_cost %}
+ {% for w in costs %}
+ <a href="{% url wlhelp_ware_details w.tribe.name w.name %}" title="{{w.displayname}}"><img src="{{ w.image_url }}" alt="{{ w.name }}" /></a>
+ {% endfor %}
+ <br />
+ {% endfor %}
+{% endif %}
+
+{% if building.produces or building.trains %}
+ <h2>Produces</h2>
+ {% if building.produces and not building.trains %}
+ {% for w in building.get_ware_outputs %}
+ <a href="{% url wlhelp_ware_details w.tribe.name w.name %}" title="{{w.displayname}}"><img src="{{ w.image_url }}" alt="{{ w.name }}" /></a>
+ {% endfor %}
+ {% else %}
+ {% for wor in building.get_worker_outputs %}
+ <img src="{{ wor.image_url }}" alt="{{ wor.name }}" />
+ {% endfor %}
+ {% endif %}
+{% endif %}
+
+{% if building.get_stored_wares %}
+ <h2>Stores</h2>
+ {% for costs in building.get_stored_wares %}
+ {% for w in costs %}
+ <a href="{% url wlhelp_ware_details w.tribe.name w.name %}" title="{{w.displayname}}"><img src="{{ w.image_url }}" alt="{{ w.name }}" /></a>
+ {% endfor %}
+ <br />
+ {% endfor %}
+{% endif %}
+
+{% endcomment %}
+
+</div>
{% endblock %}
=== renamed file 'online_help/templates/buildings.html' => 'templates/wlhelp/buildings.html'
--- online_help/templates/buildings.html 2009-04-01 14:33:45 +0000
+++ templates/wlhelp/buildings.html 2012-07-04 18:20:26 +0000
@@ -1,92 +1,95 @@
-{% extends "base.html" %}
+{% extends "wlhelp/base.html" %}
{% comment %}
vim:ft=htmldjango
{% endcomment %}
+{% block title %}
+Buildings - {{ tribe.displayname }} - {{ block.super }}
+{% endblock %}
+
{% block content %}
-
-<h1>Buildings</h1>
-
-<!-- HQ -->
-<h1>Headquarters</h1>
-{% with buildings.headquarters as b %}
- <table class="building" width="100%" cellspacing="1">
- {% include "inlines/display_building.html" %}
-{% endwith %}
- </table>
-
-<!-- Small buildings -->
+<h1>{{ tribe.displayname }}: Buildings</h1>
+<div class="blogEntry">
+ <a href="{% url wlhelp_index %}">Encyclopedia</a> »
+ <a href="{% url wlhelp_tribe_details tribe.name %}">{{ tribe.displayname }}</a> »
+ Buildings
+ <br /><br />
+
+{# Headquarters #}
+ <h2>Headquarters</h2>
+ {% with buildings.headquarters as buildings %}
+ {% include "wlhelp/inlines/display_buildings.html" %}
+ {% endwith %}
+
+{# Small buildings #}
{% if buildings.small.count %}
-<h1>Small buildings</h1>
- <table class="building" width="100%" cellspacing="1">
- {% for b in buildings.small %}
- {% include "inlines/display_building.html" %}
- {% endfor %}
- </table>
+ <h2>Small Buildings</h2>
+ {% with buildings.small as buildings %}
+ {% include "wlhelp/inlines/display_buildings.html" %}
+ {% endwith %}
{% endif %}
{% if buildings.small_enhanced.count %}
-<h1>Small enhanced buildings</h1>
- <table class="building" width="100%" cellspacing="1">
- {% for b in buildings.small_enhanced %}
- {% include "inlines/display_building.html" %}
- {% endfor %}
- </table>
+ <h2>Small Enhanced Buildings</h2>
+ {% with buildings.small_enhanced as buildings %}
+ {% include "wlhelp/inlines/display_buildings.html" %}
+ {% endwith %}
{% endif %}
-<!-- Medium buildings -->
+{# Medium buildings #}
{% if buildings.medium.count %}
-<h1>Medium buildings</h1>
- <table class="building" width="100%" cellspacing="1">
- {% for b in buildings.medium %}
- {% include "inlines/display_building.html" %}
- {% endfor %}
- </table>
+ <h2>Medium Buildings</h2>
+ {% with buildings.medium as buildings %}
+ {% include "wlhelp/inlines/display_buildings.html" %}
+ {% endwith %}
{% endif %}
{% if buildings.medium_enhanced.count %}
-<h1>Medium enhanced buildings</h1>
- <table class="building" width="100%" cellspacing="1">
- {% for b in buildings.medium_enhanced %}
- {% include "inlines/display_building.html" %}
- {% endfor %}
- </table>
+ <h2>Medium Enhanced Buildings</h2>
+ {% with buildings.medium_enhanced as buildings %}
+ {% include "wlhelp/inlines/display_buildings.html" %}
+ {% endwith %}
{% endif %}
-<!-- Big buildings -->
+{# Big buildings #}
{% if buildings.big.count %}
-<h1>Big buildings</h1>
- <table class="building" width="100%" cellspacing="1">
- {% for b in buildings.big %}
- {% include "inlines/display_building.html" %}
- {% endfor %}
- </table>
+ <h2>Big Buildings</h2>
+ {% with buildings.big as buildings %}
+ {% include "wlhelp/inlines/display_buildings.html" %}
+ {% endwith %}
{% endif %}
{% if buildings.big_enhanced.count %}
-<h1>Big enhanced buildings</h1>
- <table class="building" width="100%" cellspacing="1">
- {% for b in buildings.big_enhanced %}
- {% include "inlines/display_building.html" %}
- {% endfor %}
- </table>
+ <h2>Big Enhanced Buildings</h2>
+ {% with buildings.big_enhanced as buildings %}
+ {% include "wlhelp/inlines/display_buildings.html" %}
+ {% endwith %}
{% endif %}
-<!-- Mines -->
+{# Mines #}
{% if buildings.mine.count %}
-<h1>Mines</h1>
- <table class="building" width="100%" cellspacing="1">
- {% for b in buildings.mine %}
- {% include "inlines/display_building.html" %}
- {% endfor %}
- </table>
+ <h2>Mines</h2>
+ {% with buildings.mine as buildings %}
+ {% include "wlhelp/inlines/display_buildings.html" %}
+ {% endwith %}
{% endif %}
{% if buildings.mine_enhanced.count %}
-<h1>Enhanced Mines</h1>
- <table class="building" width="100%" cellspacing="1">
- {% for b in buildings.mine_enhanced %}
- {% include "inlines/display_building.html" %}
- {% endfor %}
- </table>
-{% endif %}
-
-
+ <h2>Enhanced Mines</h2>
+ {% with buildings.mine_enhanced as buildings %}
+ {% include "wlhelp/inlines/display_buildings.html" %}
+ {% endwith %}
+{% endif %}
+
+{# Ports #}
+{% if buildings.port.count %}
+ <h2>Ports</h2>
+ {% with buildings.port as buildings %}
+ {% include "wlhelp/inlines/display_buildings.html" %}
+ {% endwith %}
+{% endif %}
+{% if buildings.port_enhanced.count %}
+ <h2>Enhanced Ports</h2>
+ {% with buildings.port_enhanced as buildings %}
+ {% include "wlhelp/inlines/display_buildings.html" %}
+ {% endwith %}
+{% endif %}
+
+</div>
{% endblock %}
-
=== added file 'templates/wlhelp/index.html'
--- templates/wlhelp/index.html 1970-01-01 00:00:00 +0000
+++ templates/wlhelp/index.html 2012-07-04 18:20:26 +0000
@@ -0,0 +1,22 @@
+{% extends "wlhelp/base.html" %}
+{% comment %}
+ vim:ft=htmldjango
+{% endcomment %}
+
+{% block title %}
+{{ block.super }}
+{% endblock %}
+
+{% block content %}
+<h1>Encyclopedia</h1>
+<div class="blogEntry">
+Encyclopedia » Index
+<br /><br />
+<p>This is a list of all tribes in Widelands:</p>
+<ul>
+{% for tribe in tribes %}
+ <li><a href="{% url wlhelp_tribe_details tribe.name %}">{{ tribe.displayname }}</a></li>
+{% endfor %}
+</ul>
+</div>
+{% endblock %}
=== renamed directory 'online_help/templates/inlines' => 'templates/wlhelp/inlines'
=== added file 'templates/wlhelp/inlines/display_buildings.html'
--- templates/wlhelp/inlines/display_buildings.html 1970-01-01 00:00:00 +0000
+++ templates/wlhelp/inlines/display_buildings.html 2012-07-04 18:20:26 +0000
@@ -0,0 +1,49 @@
+<table class="help">
+ <tr>
+ <th>Image</th>
+ <th>Description</th>
+ <th>Build cost</th>
+ <th>Produces</th>
+ <th>Stores</th>
+ </tr>
+{% for b in buildings %}
+ <tr class="{% cycle "odd" "even" %}">
+ <td>
+ <a href="{% url wlhelp_building_details b.tribe.name b.name %}" title="{{ b.displayname }}" id="{{ b.name }}">
+ {{ b.displayname|title }}
+ <br />
+ <img alt="{{b.displayname}}" src="{{ b.image_url }}" />
+ </a>
+ </td>
+ <td>{{ b.help }}</td>
+ <td>
+ {% for costs in b.get_build_cost %}
+ {% for w in costs %}
+ <a href="{% url wlhelp_ware_details w.tribe.name w.name %}" title="{{w.displayname}}"><img src="{{ w.image_url }}" alt="{{ w.name }}" /></a>
+ {% endfor %}
+ <br />
+ {% endfor %}
+ </td>
+ <td>
+ {% if b.produces and not b.trains %}
+ {% for w in b.get_ware_outputs %}
+ <a href="{% url wlhelp_ware_details w.tribe.name w.name %}" title="{{w.displayname}}"><img src="{{ w.image_url }}" alt="{{ w.name }}" /></a>
+ {% endfor %}
+ {% endif %}
+ {% if b.trains and not b.produces %}
+ {% for wor in b.get_worker_outputs %}
+ <img src="{{ wor.image_url }}" alt="{{ wor.name }}" />
+ {% endfor %}
+ {% endif %}
+ </td>
+ <td>
+ {% for costs in b.get_stored_wares %}
+ {% for w in costs %}
+ <a href="{% url wlhelp_ware_details w.tribe.name w.name %}" title="{{w.displayname}}"><img src="{{ w.image_url }}" alt="{{ w.name }}" /></a>
+ {% endfor %}
+ <br />
+ {% endfor %}
+ </td>
+ </tr>
+{% endfor %}
+</table>
=== added file 'templates/wlhelp/tribe_details.html'
--- templates/wlhelp/tribe_details.html 1970-01-01 00:00:00 +0000
+++ templates/wlhelp/tribe_details.html 2012-07-04 18:20:26 +0000
@@ -0,0 +1,26 @@
+{% extends "wlhelp/base.html" %}
+{% comment %}
+ vim:ft=htmldjango
+{% endcomment %}
+
+{% block title %}
+{{ tribe.displayname }} - {{ block.super }}
+{% endblock %}
+
+{% block content %}
+<h1>{{ tribe.displayname }}</h1>
+<div class="blogEntry">
+<a href="{% url wlhelp_index %}">Encyclopedia</a> »
+{{ tribe.displayname }}
+<br /><br />
+<img class="posLeft icon" src="{{ tribe.icon_url }}" alt="" />
+<p>{{ tribe.descr }}</p>
+<ul>
+ <li><a href="{% url wlhelp_buildings tribe.name %}">Buildings</a></li>
+ <li><a href="{% url wlhelp_wares tribe.name %}">Wares</a></li>
+ <li><a href="{% url wlhelp_workers tribe.name %}">Workers</a></li>
+ <li><a href="{{ tribe.network_pdf_url }}" target="_blank">Economy Network as PDF</a></li>
+ <li><a href="{{ tribe.network_gif_url }}" target="_blank">Economy Network as GIF</a></li>
+</ul>
+</div>
+{% endblock %}
=== renamed file 'online_help/templates/ware_details.html' => 'templates/wlhelp/ware_details.html'
--- online_help/templates/ware_details.html 2010-11-07 17:38:00 +0000
+++ templates/wlhelp/ware_details.html 2012-07-04 18:20:26 +0000
@@ -1,18 +1,28 @@
-{% extends "base.html" %}
+{% extends "wlhelp/base.html" %}
{% comment %}
vim:ft=htmldjango
{% endcomment %}
+{% block title %}
+{{ ware.displayname }} - {{ tribe.displayname }} - {{ block.super }}
+{% endblock %}
{% block content %}
-
-
-<center>
-<img src="{{ ware.graph_url }}" usemap="#G" alt="Graph for {{ ware.displayname }}" />
-
-{{ ware.imagemap|safe }}
-</center>
-
+<h1>{{ tribe.displayname }}: {{ ware.displayname }}</h1>
+<div class="blogEntry">
+ <a href="{% url wlhelp_index %}">Encyclopedia</a> »
+ <a href="{% url wlhelp_tribe_details tribe.name %}">{{ tribe.displayname }}</a> »
+ <a href="{% url wlhelp_wares tribe.name %}">Wares</a> »
+ {{ ware.displayname }}
+ <br /><br />
+
+ <h2>Description</h2>
+ <p>{{ ware.help }}</p>
+
+ <h2>Economy Graph</h2>
+ {{ ware.imagemap|safe }}
+ <img src="{{ ware.graph_url }}" usemap="#G" alt="Graph for {{ ware.displayname }}" />
+{% comment %}
{% if ware.build_ware_for_buildings.all %}
<h2>Used in the construction of</h2>
<table style="width:100%" class="building">
@@ -32,7 +42,6 @@
{% else %}
Not used for building.<br />
{% endif %}
-
-Return to the <a href="../">Ware overview</a>.
-
+{% endcomment %}
+</div>
{% endblock %}
=== renamed file 'online_help/templates/wares.html' => 'templates/wlhelp/wares.html'
--- online_help/templates/wares.html 2010-01-03 09:35:19 +0000
+++ templates/wlhelp/wares.html 2012-07-04 18:20:26 +0000
@@ -1,21 +1,37 @@
-{% extends "base.html" %}
+{% extends "wlhelp/base.html" %}
{% comment %}
vim:ft=htmldjango
{% endcomment %}
+{% block title %}
+Wares - {{ tribe.displayname }} - {{ block.super }}
+{% endblock %}
+
{% block content %}
+<h1>{{ tribe.displayname }}: Wares</h1>
+<div class="blogEntry">
+ <a href="{% url wlhelp_index %}">Encyclopedia</a> »
+ <a href="{% url wlhelp_tribe_details tribe.name %}">{{ tribe.displayname }}</a> »
+ Wares
+ <br /><br />
-<!-- Wares -->
-<h1>Wares</h1>
-<table class="ware" width="100%" cellspacing="1">
- <tr>
- <th width="48px">Image</th>
- <th width="96px">Name</th>
- <th >Description</th>
- </tr>
-{% for ware in wares %}
-{% include "inlines/display_ware.html" %}
-{% endfor %}
-</table>
+ <table class="help">
+ <tr>
+ <th>Image</th>
+ <th>Name</th>
+ <th>Description</th>
+ </tr>
+ {% for ware in wares %}
+ <tr class="{% cycle "odd" "even" %}">
+ <td>
+ <a href="{% url wlhelp_ware_details tribe.name ware.name %}">
+ <img src="{{ ware.image_url }}" alt="{{ ware.name }}" />
+ </a>
+ </td>
+ <td><a id="{{ ware.name }}" href="{% url wlhelp_ware_details tribe.name ware.name %}">{{ ware.displayname }}</a></td>
+ <td>{{ ware.help }}</td>
+ </tr>
+ {% endfor %}
+ </table>
+</div>
{% endblock %}
-
=== renamed file 'online_help/templates/worker_details.html' => 'templates/wlhelp/worker_details.html'
--- online_help/templates/worker_details.html 2010-11-02 14:02:06 +0000
+++ templates/wlhelp/worker_details.html 2012-07-04 18:20:26 +0000
@@ -1,18 +1,25 @@
-{% extends "base.html" %}
+{% extends "wlhelp/base.html" %}
{% comment %}
vim:ft=htmldjango
{% endcomment %}
+{% block title %}
+{{ worker.displayname }} - {{ tribe.displayname }} - {{ block.super }}
+{% endblock %}
{% block content %}
-
-
-<center>
-<img src="{{ worker.graph_url }}" usemap="#G" alt="Graph for {{ worker.name }}" />
-
-{{ worker.imagemap|safe }}
-</center>
-
-Return to the <a href="../">Worker overview</a>.
-
+<h1>{{ tribe.displayname }}: {{ worker.displayname }}</h1>
+<div class="blogEntry">
+ <a href="{% url wlhelp_index %}">Encyclopedia</a> »
+ <a href="{% url wlhelp_tribe_details tribe.name %}">{{ tribe.displayname }}</a> »
+ <a href="{% url wlhelp_workers tribe.name %}">Workers</a> »
+ {{ worker.displayname }}
+ <br /><br />
+
+ <h2>Description</h2>
+ <p>{{ worker.help }}</p>
+
+ <h2>Economy Graph</h2>
+ {{ worker.imagemap|safe }}
+ <img src="{{ worker.graph_url }}" usemap="#G" alt="Graph for {{ worker.displayname }}" />
{% endblock %}
=== renamed file 'online_help/templates/workers.html' => 'templates/wlhelp/workers.html'
--- online_help/templates/workers.html 2010-01-03 09:35:19 +0000
+++ templates/wlhelp/workers.html 2012-07-04 18:20:26 +0000
@@ -1,21 +1,37 @@
-{% extends "base.html" %}
+{% extends "wlhelp/base.html" %}
{% comment %}
vim:ft=htmldjango
{% endcomment %}
+{% block title %}
+Workers - {{ tribe.displayname }} - {{ block.super }}
+{% endblock %}
+
{% block content %}
+<h1>{{ tribe.displayname }}: Workers</h1>
+<div class="blogEntry">
+ <a href="{% url wlhelp_index %}">Encyclopedia</a> »
+ <a href="{% url wlhelp_tribe_details tribe.name %}">{{ tribe.displayname }}</a> »
+ Workers
+ <br /><br />
-<!-- Workers -->
-<h1>Workers</h1>
-<table class="ware" width="100%" cellspacing="1">
- <tr>
- <th width="48px">Image</th>
- <th width="96px">Name</th>
- <th >Description</th>
- </tr>
-{% for worker in workers %}
-{% include "inlines/display_worker.html" %}
-{% endfor %}
-</table>
+ <table class="help">
+ <tr>
+ <th>Image</th>
+ <th>Name</th>
+ <th>Description</th>
+ </tr>
+ {% for worker in workers %}
+ <tr class="{% cycle "odd" "even" %}">
+ <td>
+ <a href="{% url wlhelp_worker_details tribe.name worker.name %}">
+ <img src="{{ worker.image_url }}" alt="{{ worker.name }}" />
+ </a>
+ </td>
+ <td><a id="{{ worker.name }}" href="{% url wlhelp_worker_details tribe.name worker.name %}">{{ worker.displayname }}</a></td>
+ <td>{{ worker.help }}</td>
+ </tr>
+ {% endfor %}
+ </table>
+</div>
{% endblock %}
-
=== modified file 'templates/wlmaps/base.html'
--- templates/wlmaps/base.html 2009-04-05 16:28:57 +0000
+++ templates/wlmaps/base.html 2012-07-04 18:20:26 +0000
@@ -5,8 +5,8 @@
{% endcomment %}
{% block extra_head %}
+<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/forum.css" />
<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/maps.css" />
-
{{block.super}}
{% endblock %}
=== modified file 'templates/wlmaps/index.html'
--- templates/wlmaps/index.html 2011-11-13 15:50:58 +0000
+++ templates/wlmaps/index.html 2012-07-04 18:20:26 +0000
@@ -4,170 +4,62 @@
{% endcomment %}
{% load custom_date %}
-
-{% block extra_head %}
-<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}css/modal_windows.css" />
-{{ block.super }}
-
-{% endblock %}
-
-{% block title %}{{ block.super }}{% endblock %}
+{% load wlprofile %}
+{% load wlmaps_extra %}
+{% load threadedcommentstags %}
+{% load pagination_tags %}
{% block content %}
-<script src="{{ MEDIA_URL}}/js/jqModal.js" type="text/javascript"></script>
-<script type="text/javascript">
-$().ready(function() {
- $('#upload_map_dialog')
- .jqDrag('.jqDrag')
- .jqm({
- trigger:'#umdTrigger',
- overlay: 50,
- overlayClass: 'modalOverlay',
- onShow: function(h) {
- /* calculate correct position on screen */
- o = h.w
- if(o.css("top") == "0px") {
- cw = document.body.clientWidth;
- ch = document.body.clientHeight;
-
- top = document.body.scrollTop + (ch-o.height())/2;
- left = (cw-o.width())/2;
-
- o.css("top",top+"px").css("left",left+"px");
- }
- /* callback executed when a trigger click. Show notice */
- o.css('opacity',1).slideDown();
- },
- });
-});
-</script>
-
-<div id="map_list">
- <div align="right">
- <a href="#" id="umdTrigger">Upload a new map</a>
- </div>
-
- <h1>Widelands maps</h1>
-
- <table cellspacing="1" width="100%">
- <tr align="center">
- <th width=""> </th>
- <th width="" nowrap="nowrap" align="left">Name</th>
- <th width="" nowrap="nowrap">Author</th>
- <th width="" nowrap="nowrap">Max Players</th>
- <th width="" nowrap="nowrap">Size</th>
- <th width="" nowrap="nowrap">World</th>
- <th width="" nowrap="nowrap">Uploaded</th>
- <th width="" nowrap="nowrap">Downloaded</th>
- <th width="" nowrap="nowrap">Details</th>
- </tr>
-
- {% for o in object_list %}
- <tr class="{% cycle "odd" "even" %}">
- <td><a href="{{ o.get_absolute_url }}"><img src="{{ MEDIA_URL }}{{ o.minimap.url }}" alt="{{ o.name }}"/></a></td>
- <td><a href="{{ o.get_absolute_url }}">{{ o.name }}</a></td>
- <td>{{ o.author }}</td>
- <td>{{ o.nr_players }}</td>
- <td>{{ o.w }} x {{ o.h }}</td>
- <td>{{ o.world_name|title }}</td>
- <td>At {{ o.pub_date|custom_date:user }} by {{ o.uploader.username }}</td>
- <td>{{ o.nr_downloads }} times</td>
- <td>
- <p><a href="{{ o.get_absolute_url }}">Details</a></p>
- <p><a href="{% url wlmaps_download o.slug %}">Direct Download</a></p>
- </td>
- </tr>
- {% endfor %}
- </table>
-
-</div>
-
-<!-- Modal upload box -->
-<div id="upload_map_dialog" class="jqmDialog">
- <img src="{{ MEDIA_URL }}/img/close_icon.png" alt="close" class="jqmClose" />
-
- <div class="box_title jqDrag">
- <h3 class="box_title">Upload a new map</h3>
- </div>
-
- <div class="box_content">
- <form class="upload_form" enctype="multipart/form-data" action="{% url wlmaps_upload %}" method="post">{% csrf_token %}
- <label for="id_mapfile">Select map:</label>
- <input type="file" id="id_mapfile" name="mapfile"/><br />
- <label for="id_comment">Upload comment:</label><br />
- <textarea id="id_comment" rows="10" name="comment" style="width: 100%"></textarea>
- <br/>
-
- <!--<input class="upload_button" type="button" value="Upload" />-->
- <input type="submit" value="Upload" />
- <input class="cancel_button" type="button" value="Cancel" />
- </form>
-
- <div class="progress_indicator"></div>
- </div>
-
-</div>
-
-<script type="text/javascript">
-$(function() {
- /* Bind cancel button */
- $('.upload_form .cancel_button').click( function() {
- $('#upload_map_dialog').jqmHide();
- });
-
- /* On submit, create a hidden iframe, use this as target for
- our submit, extract the result and then delete it */
- jQuery(".upload_form").submit( function(data) {
- var submittingForm = jQuery( this );
- var frameName = ("upload"+(new Date()).getTime());
- var uploadFrame = jQuery("<iframe name=\""+frameName+"\" />");
-
- // Disable the submit and cancel until a unsuccesfull reply
- // was returned
- $(".upload_form input[type='submit']").attr("disabled","disabled")
- $(".upload_form input[type='button']").attr("disabled","disabled")
-
- o = $('#upload_map_dialog .progress_indicator')
- o.html("<h3>Uploading...</h3> <div>Uploading your map. Please wait...</div>");
- uploadFrame.css("display", "none");
- uploadFrame.load(function(data){
- // get the result
- fbody = jQuery(window.frames[ frameName ].document.getElementsByTagName( "body" )[ 0 ]);
-
- // Safari does beautification of the returned text (with pre tags)
- // so we extract the data using a regular expression
- json_data = eval('(' + /\{.*\}/.exec(fbody.html())[0] + ')') ;
-
- //submit is complete here, check the result
- o = $('#upload_map_dialog .progress_indicator')
- if(json_data["success_code"] == 0) {
- o.html('<h3>Success!</h3><br /> Your map has been added! Will reload page in 5s');
- setTimeout(function(){
- $('#upload_map_dialog').jqmHide();
- window.location.reload();
- },500);
-
- } else {
- o.html('<h3>An error occured:</h3><br /> <div class="errormessage">' + json_data["success_code"] + ': ' + json_data["error_msg"] + '</div>');
-
- // Enable the submit and cancel because the user might want to
- // try it again
- $(".upload_form input[type='submit']").removeAttr("disabled")
- $(".upload_form input[type='button']").removeAttr("disabled")
- }
-
- // make sure the iframe is removed again
- setTimeout(function(){
- uploadFrame.remove();},100);
-
- return false;
- });
- jQuery('body:first').append(uploadFrame);
-
- submittingForm.attr('target', frameName);
- });
-});
-</script>
-
-
+<a href="{% url wlmaps_upload %}" class="posRight invertedColor small">Upload a new map</a>
+<h1>Maps</h1>
+<div class="blogEntry">
+ {% autopaginate maps maps_per_page %}
+ {% paginate %}
+ <br />
+ <table class="forum">
+ {% for map in maps %}
+ <tr class="{% cycle "odd" "even" %}">
+ <td><a href="{{ map.get_absolute_url }}"><img class="minimap" src="{{ MEDIA_URL }}{{ map.minimap.url }}" alt="{{ map.name }}" /></a></td>
+ <td>
+ <h3><a class="invertedColor" href="{{ map.get_absolute_url }}">{{ map.name }}</a></h3>
+ <table>
+ <tr>
+ <td class="grey">Author:</td><td>{{ map.author }}</td>
+ <td class="spacer"></td>
+ <td class="grey">Dimensions:</td><td>{{ map.w }} x {{ map.h }}</td>
+ </tr>
+ <tr>
+ <td class="grey">World:</td><td>{{ map.world_name|title }}</td>
+ <td class="spacer"></td>
+ <td class="grey">Max. Players:</td><td>{{ map.nr_players }}</td>
+ </tr>
+ <tr>
+ <td class="grey">Rating:</td>
+ <td colspan="">{{ map.rating|average_rating }} ({{ map.rating.votes }} Votes)</td>
+ <td class="spacer"></td>
+ {% get_comment_count for map as ccount %}
+ <td class="grey">Comments:</td><td>{{ ccount }}</td>
+ </tr>
+ <tr>
+ <td class="grey">Upload:</td>
+ <td colspan="4">by {{ map.uploader|user_link }} at {{ map.pub_date|custom_date:user }}</td>
+ </tr>
+ <tr>
+ <td class="grey">Downloads:</td><td>{{ map.nr_downloads }}</td>
+ <td class="spacer"></td>
+ <td colspan="2">
+ <button onclick="window.location.href='{% url wlmaps_download map.slug %}';">
+ <img src="{{MEDIA_URL}}/img/download.png" alt ="" class="middle" />
+ <span class="middle">Direct Download</span>
+ </button>
+ </td>
+ </tr>
+ </table>
+ </td>
+ </tr>
+ {% endfor %}
+ </table>
+ <br />
+ {% paginate %}
+</div>
{% endblock %}
=== modified file 'templates/wlmaps/map_detail.html'
--- templates/wlmaps/map_detail.html 2009-04-12 11:34:59 +0000
+++ templates/wlmaps/map_detail.html 2012-07-04 18:20:26 +0000
@@ -3,9 +3,16 @@
vim:ft=htmldjango
{% endcomment %}
+{% load custom_date %}
+{% load wlmaps_extra %}
+{% load wlprofile %}
+{% load threadedcommentstags %}
+
+{% block title %}{{ map.name }} - {{ block.super }}{% endblock %}
+
{% block extra_head %}
{{ block.super }}
-
+<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/comments.css" />
{% if not user.is_anonymous %}
<script src="{{ MEDIA_URL}}/js/jquery.sexy-vote.js" type="text/javascript"></script>
<script type="text/javascript">
@@ -16,52 +23,82 @@
maxScore: 10,
messages: ["","","","","","","","","",""],
fn: function(e, score) {
- $.post("{% url wlmaps_rate object.slug %}",{ vote: score });
+ $.post("{% url wlmaps_rate map.slug %}",{ vote: score });
}
});
});
</script>
{% endif %}
-
{% endblock %}
-{% load custom_date %}
-{% block title %}{{ object.name }} - {{ block.super }}{% endblock %}
-
{% block content %}
-<div class="map_details">
-
- <h1>{{ object.name }}</h1>
- Votes: {{ object.rating.votes }}, Average: {{ average_rating }}
- {% if not user.is_anonymous %}
- <span id="vote"></span>
- {% else %}
- (Login to vote)
- {% endif %}
- <span class="author">by {{ object.author }}</span>
- <span class="uploader">uploaded by {{ object.uploader.username }} at {{ object.pub_date|custom_date:user }}</span>
-
- <span class="dimensions">{{ object.w }}x{{ object.h }}</span>, <span class="world">{{ object.world_name|title }}</span>, <span class="nr_players"> maximum of {{ object.nr_players }} players.</span>
- <br/>
- <img src="{{ MEDIA_URL }}{{ object.minimap.url }}" alt="{{ object.name }}" />
-
- <div class="map_description">
- {{ object.descr }}
- </div>
-
- <h3>Comment by uploader:</h3>
- <div class="uploader_comment">
- {{ object.uploader_comment }}
- </div>
-
- <span class="nr_downloads">{{ object.nr_downloads }} times</span><br />
-
- <a href="{% url wlmaps_download object.slug %}">Download</a>
-
- <!-- Comments below -->
- <h3>Comments on this Map:</h3>
- {% include "threadedcomments/inlines/comments.html" %}
-
-</div>
-
+<h1>Map: {{ map.name }}</h1>
+<div class="blogEntry">
+ <a href="{% url wlmaps_index %}">Maps</a> »
+ {{ map.name }}
+ <br /><br />
+ <img class="posLeft map" src="{{ MEDIA_URL }}{{ map.minimap.url }}" alt="{{ map.name }}" />
+
+ <div style="display: inline-block;">
+ <h3>Description:</h3>
+ <p>{{ map.descr }}</p>
+ </div>
+ <br />
+ <div style="display: inline-block;">
+ <h3>Comment by uploader:</h3>
+ <p>{{ map.uploader_comment }}</p>
+ </div>
+ <br />
+ <div style="display: inline-block;">
+ <h3>Basic Information:</h3>
+ <table>
+ <tr>
+ <td class="grey">Author:</td><td>{{ map.author }}</td>
+ </tr>
+ <tr>
+ <td class="grey">World:</td><td>{{ map.world_name|title }}</td>
+ </tr>
+ <tr>
+ <td class="grey">Dimensions:</td><td>{{ map.w }} x {{ map.h }}</td>
+ </tr>
+ <tr>
+ <td class="grey">Max. Players:</td><td>{{ map.nr_players }}</td>
+ </tr>
+ <tr>
+ <td class="grey">Downloads:</td><td>{{ map.nr_downloads }}</td>
+ </tr>
+ <tr>
+ {% get_comment_count for map as ccount %}
+ <td class="grey">Comments:</td><td>{{ ccount }}</td>
+ </tr>
+ <tr>
+ <td class="grey">Rating:</td>
+ <td>
+ {{ map.rating|average_rating }} ({{ map.rating.votes }} Votes)
+ {% if not user.is_anonymous %}
+ <span id="vote"></span>
+ {% else %}
+ - Login to vote
+ {% endif %}
+ </td>
+ </tr>
+ <tr>
+ <td class="grey">Upload:</td><td>by {{ map.uploader|user_link }} at {{ map.pub_date|custom_date:user }}</td>
+ </tr>
+ </table>
+ </div>
+ <br /><br />
+ <button onclick="window.location.href='{% url wlmaps_download map.slug %}';">
+ <img src="{{MEDIA_URL}}/img/download.png" alt ="" class="middle" />
+ <span class="middle">Download this map</span>
+ </button>
+ <div style="clear: left;"></div>
+</div>
+
+<div class="blogEntry">
+ <h3>Comments on this Map:</h3>
+ {% with map as object %}
+ {% include "threadedcomments/inlines/comments.html" %}
+ {% endwith %}
+</div>
{% endblock %}
=== added file 'templates/wlmaps/upload.html'
--- templates/wlmaps/upload.html 1970-01-01 00:00:00 +0000
+++ templates/wlmaps/upload.html 2012-07-04 18:20:26 +0000
@@ -0,0 +1,21 @@
+{% extends "wlmaps/base.html" %}
+{% comment %}
+ vim:ft=htmldjango
+{% endcomment %}
+
+{% block title %}Upload - {{ block.super }}{% endblock %}
+
+{% block content %}
+<h1>Map Upload</h1>
+<div class="blogEntry">
+ <a href="{% url wlmaps_index %}">Maps</a> » Upload
+ <br /><br />
+ <form enctype="multipart/form-data" action="{% url wlmaps_upload %}" method="post">
+ {{ form.file.label_tag }}: {{ form.file }}<br />
+ {{ form.uploader_comment.label_tag }}:<br />
+ {{ form.uploader_comment }}
+ {% csrf_token %}<br />
+ <input type="submit" value="Upload" />
+ </form>
+</div>
+{% endblock %}
=== modified file 'templates/wlpoll/base.html'
--- templates/wlpoll/base.html 2011-11-18 22:51:37 +0000
+++ templates/wlpoll/base.html 2012-07-04 18:20:26 +0000
@@ -4,6 +4,8 @@
{% endcomment %}
{% block extra_head %}
+{{block.super}}
+<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/comments.css" />
<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/poll.css" />
<script src="{{ MEDIA_URL }}/js/highcharts_219/highcharts.js" type="text/javascript"></script>
{% endblock %}
=== modified file 'templates/wlpoll/poll_detail.html'
--- templates/wlpoll/poll_detail.html 2010-01-02 15:32:46 +0000
+++ templates/wlpoll/poll_detail.html 2012-07-04 18:20:26 +0000
@@ -9,42 +9,24 @@
{% block title %}{{ object.name }} - {{ block.super }}{% endblock %}
{% block content %}
-<br />
-<div class="poll">
- <h3 class="title">{{ object.name }}</h3>
- <div class="info_line">
- <span class="post_date">Posted on {{ object.pub_date|custom_date:user }}</span>
- </div>
- <div class="content">
- <div class="poll_plot">
- {% display_poll object %}
- </div>
- </div>
-
- <table class="bottom_line" width="100%">
- <tr>
- {% get_comment_count for object as ccount %}
- <td class="comments">
- <a href="{{ object.get_absolute_url }}">{{ ccount }} comments, {{object.total_votes}} votes</a>
- </td>
-
- <td class="admin">
- {% if perms.news %}
- {% if perms.news.poll_can_add %}<a href="/admin/wlpoll/poll/add/">Add New Poll</a>{% endif %}
- {% if perms.news.poll_can_edit %}| <a href="/admin/wlpoll/poll/{{object.id}}/">Edit</a>{% endif %}
- {% if perms.news.poll_can_delete %}| <a href="/admin/wlpoll/poll/{{object.id}}/delete/">Delete</a>{% endif %}
- {% endif %}
- </td>
-
- <!-- Third column for the style -->
- <td>
- </td>
- </tr>
- </table>
-</div>
-
-
- <!-- Comments below -->
- <h3>Comments on this Poll:</h3>
- {% include "threadedcomments/inlines/comments.html" %}
+ {% if perms.wlpoll %}
+ <div class="small posRight">
+ {% if perms.wlpoll.poll_can_add %}<a href="/admin/wlpoll/poll/add/" class="invertedColor">Add New Poll</a>{% endif %}
+ {% if perms.wlpoll.poll_can_edit %}| <a href="/admin/wlpoll/poll/{{object.id}}/" class="invertedColor">Edit</a>{% endif %}
+ {% if perms.wlpoll.poll_can_delete %}| <a href="/admin/wlpoll/poll/{{object.id}}/delete/" class="invertedColor">Delete</a>{% endif %}
+ </div>
+ {% endif %}
+ <h1>Poll: {{ object.name }}</h1>
+ <div class="blogEntry">
+ {% display_poll object %}
+ <hr />
+ {% get_comment_count for object as ccount %}
+ <span class="small posLeft"><a href="{{ object.get_absolute_url }}">{{ ccount }} comments, {{object.total_votes}} votes</a></span>
+ <span class="small posRight">Posted on {{ object.pub_date|custom_date:user }}</span>
+ </div>
+
+ <div class="blogEntry">
+ <h3>Comments on this Poll:</h3>
+ {% include "threadedcomments/inlines/comments.html" %}
+ </div>
{% endblock %}
=== modified file 'templates/wlpoll/poll_list.html'
--- templates/wlpoll/poll_list.html 2010-01-02 15:32:46 +0000
+++ templates/wlpoll/poll_list.html 2012-07-04 18:20:26 +0000
@@ -1,4 +1,4 @@
-{% extends "wlpoll/base.html" %}
+{% extends "base.html" %}
{% comment %}
vim:ft=htmldjango
{% endcomment %}
@@ -6,18 +6,23 @@
{% load wlpoll wlprofile %}
{% load threadedcommentstags custom_date %}
-{% block title %}{{ object.name }} - {{ block.super }}{% endblock %}
+{% block title %}Poll Archive - {{ block.super }}{% endblock %}
{% block content %}
-
-<h1>Poll archive</h1>
-<ul>
-{% for o in object_list %}
-{% get_comment_count for o as ccount %}
-<li>
-<a href="{{o.get_absolute_url}}">{{ o.name }}</a> - <span class="post_date">posted at {{ o.pub_date|custom_date:user }}, {{ ccount }} comments, {{o.total_votes}} votes</span></li>
-{% endfor %}
-</ul>
-
-
+{% if perms.wlpoll %}
+ <div class="small posRight">
+ {% if perms.wlpoll.poll_can_add %}<a href="/admin/wlpoll/poll/add/" class="invertedColor">Add New Poll</a>{% endif %}
+ </div>
+ {% endif %}
+<h1>Poll Archive</h1>
+<div class="blogEntry">
+ <ul>
+ {% for o in object_list %}
+ {% get_comment_count for o as ccount %}
+ <li>
+ <a href="{{o.get_absolute_url}}">{{ o.name }}</a> - <span class="small">posted at {{ o.pub_date|custom_date:user }}, {{ ccount }} comments, {{o.total_votes}} votes</span>
+ </li>
+ {% endfor %}
+ </ul>
+</div>
{% endblock %}
=== modified file 'templates/wlprofile/base.html'
--- templates/wlprofile/base.html 2009-03-17 15:02:13 +0000
+++ templates/wlprofile/base.html 2012-07-04 18:20:26 +0000
@@ -4,7 +4,7 @@
{% endcomment %}
{% block title %}
-Profile - Account - {{ block.super }}
+{{ block.super }}
{% endblock %}
{% block extra_head %}
=== modified file 'templates/wlprofile/edit_profile.html'
--- templates/wlprofile/edit_profile.html 2011-09-02 11:15:39 +0000
+++ templates/wlprofile/edit_profile.html 2012-07-04 18:20:26 +0000
@@ -2,78 +2,56 @@
{% load i18n %}
+{% block title %}
+{% trans "Profile Editing" %} - {{ block.super }}
+{% endblock %}
+
{% block content %}
-{% ifequal user profile.user %}
- {% include "django_messages/inlines/navigation.html" %}
-{% endifequal %}
-<br />
-<br />
-<div class="box_item_model fixed_site border">
- <h3 class="title">{% trans "Profile editing" %}</h3>
- <div class="content">
- {% if profile.avatar %}
- <img src="{{ profile.avatar.url }}" />
- {% endif %}
-
- <form method="post" enctype="multipart/form-data">
- <table width="100%" cellspacing="1" class="text">
- {# FIXME: change the right color #}
- {% if profile_form.errors %}
- <tr>
- <td class="even" colspan="2">{{ profile_form.errors }}</td>
- </tr>
- {% endif %}
-
- {% for field in profile_form %}
- {% if field.errors %}
- <tr>
- <td colspan="2" class="{% cycle "odd" "even" %}">
- <div class="errormessage">{{ field.errors }}</div>
- </td>
- </tr>
- {% endif %}
- {% ifequal field.name "delete_avatar" %}
- {% if profile.avatar %}
- <tr>
- <td class="{% cycle "odd" "even" %}">{{ field.label_tag }}:</td>
- <td class="{% cycle "odd" "even" %}">{{ field }}
- </tr>
- {% endif %}
- {% else %}
- <tr>
- <td class="{% cycle "odd" "even" %} {%ifequal field.name "signature" %}show_left{% endifequal %}">{{ field.label_tag }}:</td>
- <td class="{% cycle "odd" "even" %}">{{ field }}
- {% ifequal field.name "time_display" %}
- <a href="/wiki/HomepageDocuTimeDisplay">Documented here</a>
- {% endifequal %}
- </td>
- </tr>
- {% endifequal %}
- {% endfor %}
- </table>
- </div>
- <div class="info_line">
- <input type="submit" value="{% trans "Save" %}" />
- </div>
- {% csrf_token %}
- </form>
-</div>
-<br />
-<div class="box_item_model fixed_site border">
- <div class="info_line show_left">
- <a href="{% url auth_change_password %}">Change website password</a>
- <br />
- <br />
- You will be redirected to an encrypted connections. Passwords are <b>not</b> transmitted in cleartext.
- </div>
-</div>
-<br />
-<div class="box_item_model fixed_site border">
- <div class="info_line show_left">
- <a href="{% url wlggz_changepw %}">Change online lobby password</a>
- <br />
- <br />
- <b class="errormessage">WARNING: GGZ transmitts the password in cleartext. Choose a different password for online gaming.</b>
- </div>
+<h1>{% trans "Profile Editing" %}</h1>
+
+<div class="blogEntry">
+ <form method="post" enctype="multipart/form-data" action=".">
+ <table>
+ {% for field in profile_form %}
+ <tr>
+ <td class="grey">
+ {{ field.label_tag }}:
+ </td>
+ <td>
+ {% ifequal field.name "avatar"%}
+ {% if profile.avatar %}
+ <img class="posLeft" src="{{ profile.avatar.url }}" alt="Avatar" />
+ {% endif %}
+ {% endifequal %}
+
+ {{ field }}
+
+ {% ifequal field.name "time_display" %}
+ <a href="/wiki/HomepageDocuTimeDisplay">Documented here</a>
+ {% endifequal %}
+ </td>
+ <td class="errormessage">
+ {% if field.errors %}
+ {{ field.errors }}
+ {% endif %}
+ </td>
+ </tr>
+ {% endfor %}
+ </table>
+ <input type="submit" value="{% trans "Save" %}" />
+ {% csrf_token %}
+ </form>
+ <br />
+ <br />
+ <p>
+ <a href="{% url auth_password_change %}">Change website password</a>
+ <br />
+ You will be redirected to an encrypted connection. The website password is <strong>not</strong> transmitted in cleartext.
+ </p>
+ <p>
+ <a href="{% url wlggz_changepw %}">Change online gaming password</a>
+ <br />
+ <strong class="errormessage">WARNING: The online gaming password is transmitted in cleartext. Do not use your website password!</strong>
+ </p>
</div>
{% endblock %}
=== modified file 'templates/wlprofile/view_profile.html'
--- templates/wlprofile/view_profile.html 2010-10-29 13:41:10 +0000
+++ templates/wlprofile/view_profile.html 2012-07-04 18:20:26 +0000
@@ -1,69 +1,81 @@
{% extends "wlprofile/base.html" %}
{% load i18n %}
+{% load custom_date %}
+
+{% block title %}
+{{ profile.user.username }}'s Profile - {{ block.super }}
+{% endblock %}
{% block content %}
-{% load custom_date %}
-
-{% include "django_messages/inlines/navigation.html" %}
-
-<br />
-<br />
-<div class="box_item_model fixed_site border">
- <h3 class="title">{% trans "View Profile" %}</h3>
- <div class="content">
- {% if profile.avatar %}
- <img src="{{ profile.avatar.url }}" />
- {% endif %}
- <table cellspacing="1" class="text full_site">
- <tr>
- <td class="odd">User:</td>
- <td class="odd">{{ profile.user.username }}</td>
- </tr>
- <tr>
- <td class="even">Joined:</td>
- <td class="even">{{ profile.user.date_joined|custom_date:user|title }}</td>
- </tr>
- <tr>
- <td class="odd">Nr posts:</td>
- <td class="odd">{{ profile.post_count }}</td>
- </tr>
- <tr>
- <td class="even">Website:</td>
- <td class="even"><a href="{{profile.site}}">{{ profile.site }}</a></td>
- </tr>
- <tr>
- <td class="odd">Location:</td>
- <td class="odd">{{ profile.location }}</td>
- </tr>
- <tr>
- <td class="even">Jabber:</td>
- <td class="even">{{ profile.jabber }}</td>
- </tr>
- <tr>
- <td class="odd">ICQ:</td>
- <td class="odd">{{ profile.icq }}</td>
- </tr>
- <tr>
- <td class="even">MSN:</td>
- <td class="even">{{ profile.msn }}</td>
- </tr>
- <tr>
- <td class="odd">AIM:</td>
- <td class="odd">{{ profile.aim }}</td>
- </tr>
- <tr>
- <td class="even">Yahoo:</td>
- <td class="even">{{ profile.yahoo }}</td>
- </tr>
- <tr>
- <td class="odd show_left">Signature:</td>
- <td class="odd show_left">{{ profile.signature|urlize|linebreaks }}</td>
+<div class="posRight small">
+ {% ifequal user profile.user %}
+ <a class="invertedColor" href="{% url profile_edit %}">Edit Profile</a>
+ {% endifequal %}
+</div>
+<h1>{{ profile.user.username }}'s Profile</h1>
+
+<div class="blogEntry">
+ <table>
+ <tr>
+ <td>
+ {% if profile.avatar %}
+ <img src="{{ profile.avatar.url }}" alt="Avatar" />
+ {% endif %}
+ </td>
+ <td>
+ {% ifnotequal user profile.user %}
+ <button onclick="window.location.href='{% url messages_compose_to profile.user %}';">
+ <img src="{{MEDIA_URL}}/forum/img/send_pm.png" alt ="" class="middle" />
+ <span class="middle">{% trans "Send PM" %}</span>
+ </button>
+ {% endifnotequal %}
+ </td>
+ </tr>
+ <tr>
+ <td class="grey">Joined:</td>
+ <td>{{ profile.user.date_joined|custom_date:user|title }}</td>
+ </tr>
+ <tr>
+ <td class="grey">Forum Posts:</td>
+ <td>{{ profile.post_count }}</td>
+ </tr>
+ <tr>
+ <td class="grey">Website:</td>
+ <td><a href="{{profile.site}}">{{ profile.site }}</a></td>
+ </tr>
+ <tr>
+ <td class="grey">Location:</td>
+ <td>{{ profile.location }}</td>
+ </tr>
+ <tr>
+ <td class="grey">Jabber:</td>
+ <td>{{ profile.jabber }}</td>
+ </tr>
+ <tr>
+ <td class="grey">ICQ:</td>
+ <td>{{ profile.icq }}</td>
+ </tr>
+ <tr>
+ <td class="grey">MSN:</td>
+ <td>{{ profile.msn }}</td>
+ </tr>
+ <tr>
+ <td class="grey">AIM:</td>
+ <td>{{ profile.aim }}</td>
+ </tr>
+ <tr>
+ <td class="grey">Yahoo:</td>
+ <td>{{ profile.yahoo }}</td>
+ </tr>
+ <tr>
+ <td class="grey">Signature:</td>
+ <td>{{ profile.signature|urlize|linebreaks }}</td>
</tr>
{% ifequal user profile.user %}
- <tr>
- <td class="even">Email:</td>
- <td class="even">{{ profile.user.email }}</td>
+ <tr>
+ <td class="grey">Email:</td>
+ <td>{{ profile.user.email }}</td>
</tr>
{% endifequal %}
</table>
@@ -72,21 +84,9 @@
<table class="bottom_line" width="100%">
<tr>
<td>
- {% ifequal user profile.user %}
- <a href="{% url profile_edit %}">Edit Profile</a>
- {% else %}
- <a href="{% url messages_compose_to profile.user %}">Send User a PM</a>
- {%endifequal%}
- </td>
- </tr>
-</table>
-<table class="bottom_line" width="100%">
- <tr>
- <td>
<a href="{% url wlggz_userstats profile.user %}">View GGZ Statistics of this user</a>
</td>
</tr>
</table>
{% endcomment %}
-</div>
{% endblock %}
=== modified file 'templates/wlscreens/base.html'
--- templates/wlscreens/base.html 2009-04-11 15:21:15 +0000
+++ templates/wlscreens/base.html 2012-07-04 18:20:26 +0000
@@ -5,7 +5,6 @@
{% block extra_head %}
{{ block.super }}
-
<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}css/screens.css" />
{% endblock %}
=== modified file 'templates/wlscreens/index.html'
--- templates/wlscreens/index.html 2009-04-11 19:14:49 +0000
+++ templates/wlscreens/index.html 2012-07-04 18:20:26 +0000
@@ -7,169 +7,51 @@
{% block extra_head %}
{{ block.super }}
-
-<script type="text/javascript" src="{{ MEDIA_URL }}js/jqModal.js"></script>
-<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}css/modal_windows.css" />
-
+<!-- Add fancyBox with button helper -->
+<link rel="stylesheet" href="{{ MEDIA_URL }}/fancybox/jquery.fancybox.css?v=2.0.6" type="text/css" media="screen" />
+<script type="text/javascript" src="{{ MEDIA_URL }}/fancybox/jquery.fancybox.pack.js?v=2.0.6"></script>
+<link rel="stylesheet" href="{{ MEDIA_URL }}/fancybox/helpers/jquery.fancybox-buttons.css?v=1.0.2" type="text/css" media="screen" />
+<script type="text/javascript" src="{{ MEDIA_URL }}/fancybox/helpers/jquery.fancybox-buttons.js?v=1.0.2"></script>
+<link rel="stylesheet" href="{{ MEDIA_URL }}/fancybox/helpers/jquery.fancybox-thumbs.css?v=2.0.6" type="text/css" media="screen" />
+<script type="text/javascript" src="{{ MEDIA_URL }}/fancybox/helpers/jquery.fancybox-thumbs.js?v=2.0.6"></script>
<script type="text/javascript">
-// {{{ Javascript Stuff
-var image_w = 0;
-// if initial_show is true, the resize_dialog function
-// will not animate the resize. This is set by the hide and show
-// function of our dialog
-var initial_show = true;
-var current_size = "";
-
-function determine_image_size() {
- // We decide by the client width which size we are going // to show
- cw = document.body.clientWidth;
- ch = document.body.clientHeight;
-
- margin = 12;
- if( (cw-80) > 1024) {
- w = 1024;
- } else if( (cw-80) > (800) ) {
- w = 800;
- } else {
- w = 640;
- }
-
- return w;
-}
-
-function resize_dialog() {
- if(image_w == 0) {
- image_w = determine_image_size();
- }
- cw = document.body.clientWidth;
-
- img = $(".image_display");
-
- if( current_size == image_w ) {
- return;
- }
-
- // reposition and resize the dialog
- dw = image_w+margin;
- x = (cw/2)-(dw/2);
-
- dialog = $("#dialog");
- if(initial_show) {
- dialog.css("width",dw + "px");
- dialog.css("left",x + "px");
- dialog.css("top",(document.body.scrollTop + 5) + "px");
-
- img.attr("width",w);
- } else {
- img.fadeOut( 250,
- function() {
- dialog.animate( {
- left: x+"px",
- top: (document.body.scrollTop+5)+"px",
- width: dw +"px",
- }, 500, function() {
- img.attr("width",w);
-
- img.fadeIn(250);
- });
- });
- }
-
- current_size = w;
-}
-
-$().ready(function() {
-
- // dialog
- $('#dialog').jqm( {
- onShow: function(h) {
- /* Enter image address */
- h.w.css('opacity',1.00).fadeIn();
- initial_show = false;
- },
- onHide: function(h) {
- h.w.fadeOut('slow');
- h.o.fadeOut('slow',
- function() { if(h.o) h.o.remove(); })
- initial_show = true;
- }
- });
- $('.image_display').click( function() {
- $('#dialog').jqmHide();
- });
-
- // Links
- $(".displayimage a.imagelink").click( function() {
- // Set the image
- src = $(this).attr("href");
- img = $(".image_display");
- img.attr("src",src);
-
- // Set the image comment
- comment = $($(this).parent().find(".comment")).html();
- $(".image_comment").html(comment);
-
- // Set the image title
- title = $(this).attr("name");
- $("h3.screenshot_title").html(title);
-
- resize_dialog();
-
- $('#dialog').jqmShow();
-
- return false;
- });
-
- // Resize links
- $('a.sizelink').click( function() {
- size = $(this).html().split("x");
- w = parseInt(size[0]);
-
- image_w = w;
- resize_dialog();
- });
-
-});
-// }}}
+ $(document).ready(function() {
+ $(".fancybox").fancybox({
+ openEffect : 'elastic',
+ closeEffect : 'elastic',
+ closeBtn : false,
+ helpers : {
+ title : {
+ type : 'outside'
+ },
+ buttons : {},
+ thumbs : {
+ width : 50,
+ height : 50
+ }
+ }
+ });
+ });
</script>
{% endblock %}
{% block content %}
-<!-- Image Dialog -->
-<div class="jqmDialog" id="dialog">
- <img src="{{ MEDIA_URL }}/img/close_icon.png" alt="close" class="jqmClose" />
-
- <div class="box_title">
- <h3 class="box_title screenshot_title"></h3>
- </div>
-
- <div class="box_content">
- <div class="sizes">
- <a class="sizelink" href="#">1024 x 768</a>
- | <a class="sizelink" href="#">800 x 600</a>
- | <a class="sizelink" href="#">640 x 480</a>
- </div>
-
- <img class="image_display" src="#" />
-
- <div class="image_comment"></div>
- </div>
+<h1>Screenshots</h1>
+
+{% for c in categories %}
+<div class="blogEntry">
+ <h2>{{ c.name }}</h2>
+ <ul class="screenshot_list">
+ {% for s in c.screenshots.all %}
+ <li>
+ <a class="fancybox" rel="{{ c.slug }}" href="{{ s.screenshot.url }}" title="{{ s.name }}: {{ s.comment }}">
+ <img src="{{ s.thumbnail.url }}" alt="" />
+ </a>
+ <br />
+ <span>{{ s.name }}</span>
+ </li>
+ {% endfor %}
+ </ul>
</div>
-
-<!-- True content -->
-{% for c in categories %}
-
-<h1 class="category">{{ c.name }}</h1>
-
-<ul class="screenshot_list">
-{% for s in c.screenshots.all %}
-<li class="displayimage">
-<div><a class="imagelink" name="{{s.name}}" href="{{ s.screenshot.url }}"><img src="{{ s.thumbnail.url }}" /></a><br/>
-<span class="name">{{ s.name }}</span>
-<div class="comment" style="display: none;">{{ s.comment|wl_markdown }}</div></div>
-</li>
-{% endfor %}
-</ul>
-
{% endfor %}
{% endblock %}
=== modified file 'templates/wlsearch/search.html'
--- templates/wlsearch/search.html 2011-07-04 01:14:23 +0000
+++ templates/wlsearch/search.html 2012-07-04 18:20:26 +0000
@@ -5,118 +5,124 @@
{% block extra_head %}
<link rel="stylesheet" type="text/css" media="all" href="{{ MEDIA_URL }}/css/search.css" />
-{{ block.super}}{% endblock %}
+{{ block.super}}
+{% endblock %}
{% block content %}
-<div class="search">
- <h1>Search</h1>
-
- <p>
- The search only matches complete words. Case is ignored.
- </p>
-
- <div class="form">
- <form method="post" action="">
- <p>{{ search_form.search.errors }}<label for="id_search">Search:</label>
- {{ search_form.search }}</p>
- <label for="id_incl_wiki">Online Help</label> {{ search_form.incl_help }}
- <label for="id_incl_wiki">Wiki</label> {{ search_form.incl_wiki }}
- <label for="id_incl_forum">Forum</label> {{ search_form.incl_forum }}
- <label for="id_incl_wiki">Maps</label> {{ search_form.incl_maps }}
- <label for="id_incl_news">News</label> {{ search_form.incl_news }}
-
- <input type="submit" value="Search" />
- {% csrf_token %}
- </form>
- </div>
-</div>
-
- <div class="results">
+<h1>Search</h1>
+<div class="blogEntry">
+ <p>
+ The search only matches complete words. Case is ignored.
+ </p>
+
+ <form method="post" action=".">
+ {% for error in search_form.search.errors %}
+ <p class="errormessage">{{ error }}</p>
+ {% endfor %}
+ <label for="id_search" class="grey">Search:</label> {{ search_form.search }}
+ <input type="submit" value="Search" />
+ <br />
+ <label for="id_incl_wiki">Wiki</label> {{ search_form.incl_wiki }}
+ <label for="id_incl_wiki">Encyclopedia</label> {{ search_form.incl_help }}
+ <label for="id_incl_forum">Forum</label> {{ search_form.incl_forum }}
+ <label for="id_incl_wiki">Maps</label> {{ search_form.incl_maps }}
+ <label for="id_incl_news">News</label> {{ search_form.incl_news }}
+ {% csrf_token %}
+ </form>
+
{% if post %}
-
-<h1>Your results</h1>
-
+<h2>Results</h2>
+
+{# Wiki #}
{% if wiki_results.count %}
- <h2>Wiki results</h2>
- <ul>
- {% for r in wiki_results %}
- <li class="wiki"><a href="{{r.get_absolute_url}}">{{r.title}}</a>
- </li>
- {% endfor %}
- </ul>
+ <h3>Wiki</h3>
+ <ul>
+ {% for r in wiki_results %}
+ <li><a href="{{r.get_absolute_url}}">{{r.title}}</a></li>
+ {% endfor %}
+ </ul>
{% endif %}
-{# Online help #}
+{# Encylcopedia #}
{% if help_hits %}
- <h2>Help results</h2>
-
- {% if help_results_buildings.count %}
- <ul>
- {% for b in help_results_buildings %}
- <li class="building"><a href="{% url help_building_details b.tribe.name b.name %}">{{ b.tribe.displayname }}: {{b.displayname}}</a></li>
- {% endfor %}
- </ul>
- {% endif %}
-
- {% if help_results_wares.count %}
- <ul>
- {% for w in help_results_wares %}
- <li class="ware"><a href="{% url help_ware_details w.tribe.name w.name %}">{{ w.tribe.displayname }}: {{w.displayname}}</a></li>
- {% endfor %}
- </ul>
- {% endif %}
+ <h3>Encyclopedia</h3>
+ {% if help_results_buildings.count %}
+ <h4>Buildings</h4>
+ <ul>
+ {% for b in help_results_buildings %}
+ <li><a href="{% url help_building_details b.tribe.name b.name %}">{{ b.tribe.displayname }} » {{b.displayname}}</a></li>
+ {% endfor %}
+ </ul>
+ {% endif %}
+
+ {% if help_results_wares.count %}
+ <h4>Wares</h4>
+ <ul>
+ {% for w in help_results_wares %}
+ <li><a href="{% url help_ware_details w.tribe.name w.name %}">{{ w.tribe.displayname }} » {{w.displayname}}</a></li>
+ {% endfor %}
+ </ul>
+ {% endif %}
{%endif %}
{# Forum #}
{% if forum_hits %}
- <h2>Forum results</h2>
- {% if forum_results_topic.count %}
- <h3>Topics</h3>
- <ul>
- {% for r in forum_results_topic %}
- <li class="topic"><a href="{{r.forum.get_absolute_url}}">{{r.forum.name}}</a>
- » <a href="{{r.get_absolute_url}}">{{r.name}}</a></li>
- {% endfor %}
- </ul>
- {%endif %}
+ <h3>Forum</h3>
+ {% if forum_results_topic.count %}
+ <h4>Topics</h4>
+ <ul>
+ {% for r in forum_results_topic %}
+ <li>
+ <a href="{{r.forum.get_absolute_url}}">{{r.forum.name}}</a>
+ » <a href="{{r.get_absolute_url}}">{{r.name}}</a>
+ , <span class="small">{{ r.created|custom_date:user }}</span>
+ </li>
+ {% endfor %}
+ </ul>
+ {%endif %}
- {% if forum_results_post.count %}
- <h3>Posts</h3>
- <ul>
- {% for r in forum_results_post %}
- <li class="post"><a href="{{r.topic.forum.get_absolute_url}}">{{r.topic.forum.name}}</a>
- » <a href="{{r.topic.get_absolute_url}}">{{r.topic.name}}</a> » <a href="{{r.get_absolute_url}}">Post by {{r.user.username}}</a>, <span class="posted">{{ r.created|custom_date:user }}</span></li>
- {% endfor %}
- </ul>
- {% endif %}
+ {% if forum_results_post.count %}
+ <h4>Posts</h4>
+ <ul>
+ {% for r in forum_results_post %}
+ <li>
+ <a href="{{r.topic.forum.get_absolute_url}}">{{r.topic.forum.name}}</a>
+ » <a href="{{r.topic.get_absolute_url}}">{{r.topic.name}}</a>
+ » <a href="{{r.get_absolute_url}}">Post by {{r.user.username}}</a>
+ , <span class="small">{{ r.created|custom_date:user }}</span>
+ </li>
+ {% endfor %}
+ </ul>
+ {% endif %}
{% endif %}
{# Maps #}
{% if map_results.count %}
- <h2>Map results</h2>
- <ul>
- {% for m in map_results %}
- <li class="map"><a href="{{m.get_absolute_url}}">{{ m.name }}</a> by
- <span class="author">{{ m.author }}</span>,
- <span class="posted">{{ m.pub_date|custom_date:user }}</span></li>
- {% endfor %}
- </ul>
+ <h3>Maps</h3>
+ <ul>
+ {% for m in map_results %}
+ <li>
+ <a href="{{m.get_absolute_url}}">{{ m.name }}</a> by {{ m.author }}
+ , <span class="small">{{ m.pub_date|custom_date:user }}</span>
+ </li>
+ {% endfor %}
+ </ul>
{% endif %}
-
{# News #}
{% if news_results.count %}
- <h2>News results</h2>
- <ul>
- {% for r in news_results %}
- <li class="news"><a href="{{r.get_absolute_url}}">{{ r.title }}</a>,
- <span class="posted">{{ r.publish|custom_date:user }}</span></li>
- {% endfor %}
- </ul>
-{% endif %}
-
-{% endif %}
- </div>
-
+ <h3>News results</h3>
+ <ul>
+ {% for r in news_results %}
+ <li>
+ <a href="{{r.get_absolute_url}}">{{ r.title }}</a>
+ , <span class="small">{{ r.publish|custom_date:user }}</span>
+ </li>
+ {% endfor %}
+ </ul>
+{% endif %}
+
+{% endif %}
+
+</div>
{% endblock %}
-
=== modified file 'templates/wlwebchat/index.html'
--- templates/wlwebchat/index.html 2011-12-10 16:30:00 +0000
+++ templates/wlwebchat/index.html 2012-07-04 18:20:26 +0000
@@ -6,29 +6,24 @@
{% block title %}Webchat - {{ block.super }}{% endblock %}
{% block content %}
-
<h1>Webchat</h1>
-
-<p>
-This is a webchat applet provided by the <a
- href="http://www.freenode.net">freenode network</a>. This is a convenient
-solution if you just want to chat in the #widelands channel on freenode.
-</p>
-
-
-<!-- Start of Webchat -->
-{% if user.is_anonymous %}
-<iframe src="http://webchat.freenode.net?nick=widelands_.&channels=widelands&uio=d4" width="647" height="400"></iframe>
-{% else %}
-<iframe src="http://webchat.freenode.net?nick={{ user.username }}&channels=widelands&uio=d4" width="100%" height="400"></iframe>
-{% endif %}
-<!-- End of Webchat -->
-
-<p>If you are not familiar with IRC (Internet Relay Chat), here's a few tips:</p>
-<ul>
- <li>Please be patient. #widelands is fairly low traffic so it might take a while before someone sees your question and replies.</li>
- <li>If you wish to change your nickname, do this with the command /nick. For instance type <kbd>/nick wl</kbd> in order to change it to wl.</li>
- <li>We also have a german speaking IRC channel, for those who prefer german. To join it, simply type <kbd>/join #widelands.de</kbd></li>
-</ul>
-
+<div class="blogEntry">
+ <p>
+ This is a webchat applet provided by the <a href="http://www.freenode.net">freenode network</a>. This is a convenient
+ solution if you just want to chat in the #widelands channel on freenode.
+ </p>
+
+ <!-- Start of Webchat -->
+ <iframe src="http://webchat.freenode.net?nick={% if user.is_authenticated %}{{ user.username }}{% else %}widelands_.{% endif %}&channels=widelands&uio=d4" style="width: 100%; height: 400px;"></iframe>
+ <!-- End of Webchat -->
+
+ <p>
+ If you are not familiar with IRC (Internet Relay Chat), here's a few tips:
+ </p>
+ <ul>
+ <li>Please be patient. #widelands is fairly low traffic so it might take a while before someone sees your question and replies.</li>
+ <li>If you wish to change your nickname, do this with the command <kbd>/nick</kbd>. For instance type <kbd>/nick wl</kbd> in order to change it to wl.</li>
+ <li>We also have a german speaking IRC channel, for those who prefer german. To join it, simply type <kbd>/join #widelands.de</kbd></li>
+ </ul>
+</div>
{% endblock %}
=== modified file 'urls.py'
--- urls.py 2010-06-10 12:42:55 +0000
+++ urls.py 2012-07-04 18:20:26 +0000
@@ -8,6 +8,7 @@
from widelands.news.feeds import NewsPostsFeed
from widelands.wiki.feeds import RssHistoryFeed
+from django.views.generic.simple import redirect_to
feeds = {
'news': NewsPostsFeed,
@@ -20,9 +21,8 @@
(r'^admin/', include(admin.site.urls)),
# Django builtin / Registration
- (r'^accounts/logout/(next=(?P<next_page>.*))?$', 'django.contrib.auth.views.logout'),
-url (r'^accounts/register/$', 'mainpage.views.register', name='registration_register'),
- url(r'^accounts/changepw/$', 'django.contrib.auth.views.password_change', name="auth_change_password"),
+ # overwrite registration with own implementation
+ url (r'^accounts/register/$', 'mainpage.views.register', name='registration_register'),
(r'^accounts/', include('registration.backends.default.urls')),
(r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict': feeds}),
@@ -42,7 +42,8 @@
url(r'^$', mainpage, name="mainpage"),
url(r'^changelog/$', "mainpage.views.changelog", name="changelog"),
url(r'^developers/$', "mainpage.views.developers", name="developers"),
- url(r'^help/', include("online_help.urls")),
+ url(r'^help/(?P<path>.*)', redirect_to, { "url": "/encyclopedia/%(path)s", "permanent": True }), # to not break old links
+ url(r'^encyclopedia/', include("wlhelp.urls")),
url(r'^webchat/', include("wlwebchat.urls")),
url(r'^images/', include("wlimages.urls")),
url(r'^profile/', include("wlprofile.urls")),
=== modified file 'widelandslib/tribe.py'
--- widelandslib/tribe.py 2010-11-01 21:02:39 +0000
+++ widelandslib/tribe.py 2012-07-04 18:20:26 +0000
@@ -6,8 +6,8 @@
import conf
from itertools import chain
import os.path as p
-from glob import glob
import re
+from string import replace
try:
from settings import WIDELANDS_SVN_DIR
basedir = WIDELANDS_SVN_DIR
@@ -75,7 +75,7 @@
@property
def image(self):
glob_pat = self._conf.getstring("idle", "pics")
- return p.abspath(glob(p.join(self._tdir,self.name,glob_pat))[0])
+ return p.abspath(p.join(self._tdir,self.name,replace(glob_pat,'?','0')))
@property
def buildcost(self):
@@ -93,7 +93,7 @@
@property
def outputs(self):
self_produced = set(sorted(
- i.strip() for i in re.findall(r'produce\s*=(\w+)',
+ i.strip() for i in re.findall(r'produce\s*=\s*(\w+)',
open(self._conf_file).read())
))
if not len(self_produced):
@@ -147,28 +147,28 @@
def __init__(self, name, bdir = basedir):
self.name = name
- tdir = p.join(bdir, "tribes", name)
-
- self._conf = WidelandsConfigParser(p.join(tdir, "conf"))
-
- self.wares = dict( (k,Ware(self, k, v, tdir)) for k,v in
+ self._tdir = p.join(bdir, "tribes", name)
+
+ self._conf = WidelandsConfigParser(p.join(self._tdir, "conf"))
+
+ self.wares = dict( (k,Ware(self, k, v, self._tdir)) for k,v in
self._conf.items("ware types"))
self.workers = dict(chain(
- ((k,Worker(self, k, v, tdir)) for k,v in
+ ((k,Worker(self, k, v, self._tdir)) for k,v in
self._conf.items("worker types")),
- ((k,Worker(self, k, v, tdir)) for k,v in
+ ((k,Worker(self, k, v, self._tdir)) for k,v in
self._conf.items("carrier types")),
))
self.buildings = dict(chain(
- ((k,ProductionSite(self, k, v, tdir)) for k,v in \
+ ((k,ProductionSite(self, k, v, self._tdir)) for k,v in \
self._conf.items("productionsite types")),
- ((k,MilitarySite(self, k, v, tdir)) for k,v in \
+ ((k,MilitarySite(self, k, v, self._tdir)) for k,v in \
self._conf.items("militarysite types")),
- ((k,Warehouse(self, k, v, tdir)) for k,v in \
+ ((k,Warehouse(self, k, v, self._tdir)) for k,v in \
self._conf.items("warehouse types")),
- ((k,TrainingSite(self, k, v, tdir)) for k,v in \
+ ((k,TrainingSite(self, k, v, self._tdir)) for k,v in \
self._conf.items("trainingsite types")),
))
=== modified file 'wiki/views.py'
--- wiki/views.py 2011-08-25 15:41:04 +0000
+++ wiki/views.py 2012-07-04 18:20:26 +0000
@@ -8,7 +8,7 @@
from django.core.urlresolvers import reverse
from django.http import (Http404, HttpResponseRedirect,
HttpResponseNotAllowed, HttpResponse, HttpResponseForbidden)
-from django.shortcuts import get_object_or_404, render_to_response
+from django.shortcuts import get_object_or_404, render_to_response, redirect
from django.views.generic.simple import redirect_to
from django.utils.translation import ugettext_lazy as _
from django.contrib.contenttypes.models import ContentType
@@ -280,7 +280,8 @@
{'title': new_article.title,
'group_slug': group_slug})
- return redirect_to(request, url)
+ #return redirect_to(request, url)
+ return redirect("wiki_article", title=new_article.title)
elif request.method == 'GET':
user_ip = get_real_ip(request)
=== modified file 'wlggz/forms.py'
--- wlggz/forms.py 2011-08-24 13:09:49 +0000
+++ wlggz/forms.py 2012-07-04 18:20:26 +0000
@@ -16,7 +16,7 @@
import re
class EditGGZForm(forms.ModelForm):
- password = forms.CharField(label=_(u'GGZ password'), widget = forms.PasswordInput(render_value = False), required=True)
+ password = forms.CharField(label=_(u'Online Gaming Password'), widget = forms.PasswordInput(render_value = False), required=True)
class Meta:
model = GGZAuth
=== renamed directory 'online_help' => 'wlhelp'
=== modified file 'wlhelp/management/commands/update_help.py'
--- online_help/management/commands/update_help.py 2010-11-06 19:35:10 +0000
+++ wlhelp/management/commands/update_help.py 2012-07-04 18:20:26 +0000
@@ -50,12 +50,24 @@
self._tribe = Tribe(name)
# Generate the Tribe
self._to = TribeModel.objects.get_or_create(name=name.lower())[0]
- self._to.displayname = normalize_name(self._tribe.name)
+ self._to.displayname = normalize_name(self._tribe._conf.getstring("tribe", "name"))
+ self._to.descr = normalize_name(self._tribe._conf.getstring("tribe", "descr"))
+ # copy icon
+ dn = "%s/wlhelp/img/%s/" % (MEDIA_ROOT,self._to.name)
+ try:
+ os.makedirs(dn)
+ except OSError, o:
+ if o.errno != 17:
+ raise
+ new_name = path.join(dn, "icon.png")
+ file = path.join(self._tribe._tdir,self._tribe._conf.getstring("tribe", "icon"))
+ shutil.copy(file, new_name )
+ self._to.icon_url = path.normpath("%s/%s" % (MEDIA_URL, new_name[len(MEDIA_ROOT):]))
self._to.save()
def parse( self ):
"""Put all data into the database"""
- self._delete_old_media_dir()
+ #self._delete_old_media_dir() why delete it? We can simply overwrite data
self._parse_workers()
self._parse_wares()
self._parse_buildings()
@@ -81,7 +93,7 @@
shutil.rmtree(tdir)
def _delete_old_media_dir(self):
- sdir = os.path.join(MEDIA_ROOT, "online_help", self._tribe.name)
+ sdir = os.path.join(MEDIA_ROOT, "wlhelp/img", self._to.name)
if os.path.exists(sdir):
shutil.rmtree(sdir)
@@ -93,7 +105,7 @@
name - name of the item (coal, iron...)
fname - file name of the picture
"""
- dn = "%s/online_help/img/%s/%s/" % (MEDIA_ROOT,self._to.name,name)
+ dn = "%s/wlhelp/img/%s/%s/" % (MEDIA_ROOT,self._to.name,name)
try:
os.makedirs(dn)
except OSError, o:
=== modified file 'wlhelp/management/commands/update_help_pdf.py'
--- online_help/management/commands/update_help_pdf.py 2010-11-01 18:54:41 +0000
+++ wlhelp/management/commands/update_help_pdf.py 2012-07-04 18:20:26 +0000
@@ -8,6 +8,8 @@
from os import path
from widelandslib.tribe import *
from widelandslib.make_flow_diagram import make_graph
+from wlhelp.models import Tribe
+from glob import glob
class Command(BaseCommand):
help =\
@@ -26,7 +28,7 @@
pdffile = path.join(gdir, tribename + ".pdf")
giffile = path.join(gdir, tribename + ".gif")
- targetdir = path.join(MEDIA_ROOT, "online_help", "network_graphs", tribename)
+ targetdir = path.join(MEDIA_ROOT, "wlhelp", "network_graphs", tribename)
try:
os.makedirs(targetdir)
@@ -36,4 +38,12 @@
shutil.copy(pdffile, targetdir)
shutil.copy(giffile, targetdir)
+ tribe = Tribe.objects.get(name=tribename)
+ if tribe:
+ tribe.network_pdf_url = path.normpath("%s/%s/%s" % (MEDIA_URL, targetdir[len(MEDIA_ROOT):], tribename + ".pdf"))
+ tribe.network_gif_url = path.normpath("%s/%s/%s" % (MEDIA_URL, targetdir[len(MEDIA_ROOT):], tribename + ".gif"))
+ tribe.save()
+ else:
+ print "Could not set tribe urls"
+
shutil.rmtree(gdir)
=== modified file 'wlhelp/models.py'
--- online_help/models.py 2011-08-25 13:42:22 +0000
+++ wlhelp/models.py 2012-07-04 18:20:26 +0000
@@ -7,6 +7,10 @@
class Tribe(models.Model):
name = models.CharField(max_length=100)
displayname = models.CharField(max_length=100)
+ descr = models.TextField()
+ icon_url = models.CharField( max_length=256 )
+ network_pdf_url = models.CharField( max_length=256 )
+ network_gif_url = models.CharField( max_length=256 )
class Worker(models.Model):
@@ -67,6 +71,8 @@
return self.all().filter(size="B")
def mine(self):
return self.all().filter(size="I")
+ def port(self):
+ return self.all().filter(size="P")
# return self.build_wares.count()
@@ -79,6 +85,7 @@
('M', 'medium'),
('B', 'big'),
('I', 'mine'),
+ ('P', 'port'),
)
TYPES = (
('P', 'productionsite'),
@@ -156,7 +163,7 @@
def produces(self):
return (self.output_wares.all().count() != 0)
- def get_outputs(self):
+ def get_ware_outputs(self):
return self.output_wares.all()
def trains(self):
return (self.output_workers.all().count() != 0)
=== modified file 'wlhelp/urls.py'
--- online_help/urls.py 2010-11-01 19:02:28 +0000
+++ wlhelp/urls.py 2012-07-04 18:20:26 +0000
@@ -13,12 +13,15 @@
from views import *
urlpatterns= patterns('',
- # Detail pages
- url(r'^(?P<tribe>\w+)/wares/(?P<ware>[^/]+)/$', ware_details, name="help_ware_details"),
- url(r'^(?P<tribe>\w+)/buildings/(?P<building>[^/]+)/$', building_details, name="help_building_details"),
- url(r'^(?P<tribe>\w+)/workers/(?P<worker>[^/]+)/$', worker_details, name="help_worker_details"),
-
- url(r'^(?P<tribe>\w+)/workers/$', workers, name="help_workers"),
- url(r'^(?P<tribe>\w+)/wares/$', wares, name="help_wares"),
- url(r'^(?P<tribe>\w+)/buildings/$', buildings, name="help_buildings"),
+ url(r'^$', index, name="wlhelp_index"),
+
+ # Detail pages
+ url(r'^(?P<tribe>\w+)/$', tribe_details, name="wlhelp_tribe_details"),
+ url(r'^(?P<tribe>\w+)/wares/(?P<ware>[^/]+)/$', ware_details, name="wlhelp_ware_details"),
+ url(r'^(?P<tribe>\w+)/buildings/(?P<building>[^/]+)/$', building_details, name="wlhelp_building_details"),
+ url(r'^(?P<tribe>\w+)/workers/(?P<worker>[^/]+)/$', worker_details, name="wlhelp_worker_details"),
+
+ url(r'^(?P<tribe>\w+)/workers/$', workers, name="wlhelp_workers"),
+ url(r'^(?P<tribe>\w+)/wares/$', wares, name="wlhelp_wares"),
+ url(r'^(?P<tribe>\w+)/buildings/$', buildings, name="wlhelp_buildings"),
)
=== modified file 'wlhelp/views.py'
--- online_help/views.py 2010-11-06 18:38:45 +0000
+++ wlhelp/views.py 2012-07-04 18:20:26 +0000
@@ -6,36 +6,55 @@
from settings import WIDELANDS_SVN_DIR, MEDIA_ROOT
import os
+def index( request ):
+ tribes = Tribe.objects.all().order_by("displayname")
+
+ return render_to_response('wlhelp/index.html',
+ context_instance=RequestContext(request,
+ { "tribes": tribes }))
+
+def tribe_details( request, tribe ):
+ t = get_object_or_404(Tribe, name=tribe)
+
+ return render_to_response('wlhelp/tribe_details.html',
+ context_instance=RequestContext(request,
+ { "tribe": t }))
+
def ware_details( request, tribe, ware ):
w = get_object_or_404(Ware,tribe__name=tribe,name=ware)
+ t = Tribe.objects.get(name=tribe)
- return render_to_response('ware_details.html',
+ return render_to_response('wlhelp/ware_details.html',
context_instance=RequestContext(request,
- { "ware": w}))
+ { "ware": w, "tribe": t }))
def building_details( request, tribe, building ):
b = get_object_or_404(Building,tribe__name=tribe,name=building)
+ t = Tribe.objects.get(name=tribe)
- return render_to_response('building_details.html',
+ return render_to_response('wlhelp/building_details.html',
context_instance=RequestContext(request,
- { "building": b }))
+ { "building": b, "tribe": t }))
def worker_details( request, tribe, worker ):
w = get_object_or_404(Worker,tribe__name=tribe,name=worker)
+ t = Tribe.objects.get(name=tribe)
- return render_to_response('worker_details.html',
+ return render_to_response('wlhelp/worker_details.html',
context_instance=RequestContext(request,
- { "worker": w }))
+ { "worker": w, "tribe": t }))
def workers(request, tribe="barbarians"):
t = get_object_or_404(Tribe,name=tribe)
- return render_to_response('workers.html', context_instance=RequestContext(request,
- { "workers": Worker.objects.filter(tribe=t) }))
+ return render_to_response('wlhelp/workers.html', context_instance=RequestContext(request,
+ { "workers": Worker.objects.filter(tribe=t).order_by("displayname"),
+ "tribe": t }))
def wares(request, tribe="barbarians"):
t = get_object_or_404(Tribe,name=tribe)
- return render_to_response('wares.html', context_instance=RequestContext(request,
- { "wares": Ware.objects.filter(tribe=t) }))
+ return render_to_response('wlhelp/wares.html', context_instance=RequestContext(request,
+ { "wares": Ware.objects.filter(tribe=t).order_by("displayname"),
+ "tribe": t }))
def buildings(request, tribe="barbarians"):
t = get_object_or_404(Tribe,name=tribe)
@@ -43,7 +62,7 @@
# Request all the objects
buildings = {}
- buildings["headquarters"] = Building.objects.get(tribe=t,name="headquarters")
+ buildings["headquarters"] = Building.objects.filter(tribe=t,name="headquarters").order_by("displayname")
all = Building.objects.filter(tribe=t).exclude(name="headquarters")
@@ -62,12 +81,17 @@
buildings["big"] = big.filter(enhanced_from=None)
buildings["big_enhanced"] = big.exclude(enhanced_from=None)
- # Now, all mines buildings
+ # Now, all mines
mine = all.filter(size="I",tribe=t).order_by("displayname")
buildings["mine"] = mine.filter(enhanced_from=None)
buildings["mine_enhanced"] = mine.exclude(enhanced_from=None)
- return render_to_response('buildings.html', context_instance=RequestContext(request,
- { "buildings": buildings }))
+ # Now, all ports
+ port = all.filter(size="P",tribe=t).order_by("displayname")
+ buildings["port"] = port.filter(enhanced_from=None)
+ buildings["port_enhanced"] = port.exclude(enhanced_from=None)
+
+ return render_to_response('wlhelp/buildings.html', context_instance=RequestContext(request,
+ { "buildings": buildings, "tribe": t }))
=== modified file 'wlmaps/forms.py'
--- wlmaps/forms.py 2009-04-05 16:28:57 +0000
+++ wlmaps/forms.py 2012-07-04 18:20:26 +0000
@@ -1,9 +1,67 @@
#!/usr/bin/env python -tt
# encoding: utf-8
+import Image
+from cStringIO import StringIO
+
from django import forms
-
-class UploadMapForm(forms.Form):
- mapfile = forms.FileField()
- comment = forms.CharField(required=False)
-
+from django.forms import ModelForm, ValidationError
+
+from settings import WIDELANDS_SVN_DIR, MEDIA_ROOT
+
+from wlmaps.models import Map
+from widelandslib.map import WidelandsMap, WlMapLibraryException
+
+
+class UploadMapForm(ModelForm):
+ class Meta:
+ model = Map
+ fields = ['file', 'uploader_comment']
+
+
+ def clean(self):
+ cleaned_data = super(UploadMapForm, self).clean()
+
+ file = cleaned_data.get('file')
+ if not file:
+ # no clean file => abort
+ return cleaned_data
+
+ mapdata = file.read()
+ wlmap = WidelandsMap()
+ try:
+ wlmap.load(StringIO(mapdata))
+ except WlMapLibraryException:
+ raise forms.ValidationError("The map file is invalid.")
+
+ if Map.objects.filter(name = wlmap.name):
+ raise forms.ValidationError("Map with the same name already exists.")
+
+ cleaned_data['file'].name = "%s/wlmaps/maps/%s.wmf" % (MEDIA_ROOT, wlmap.name)
+
+ # Create the minimap
+ minimap = wlmap.make_minimap(WIDELANDS_SVN_DIR)
+ minimap_path = "%s/wlmaps/minimaps/%s.png" % (MEDIA_ROOT, wlmap.name)
+ minimap_url = "/wlmaps/minimaps/%s.png" % wlmap.name
+ minimap_image = Image.fromarray(minimap)
+ minimap_image.save(minimap_path)
+ # TODO: handle filesystem errors
+
+ # Add information to the map
+ self.instance.name = wlmap.name
+ self.instance.author = wlmap.author
+ self.instance.w = wlmap.w
+ self.instance.h = wlmap.h
+ self.instance.nr_players = wlmap.nr_players
+ self.instance.descr = wlmap.descr
+ self.instance.minimap = minimap_url
+ self.instance.world_name = wlmap.world_name
+
+ return cleaned_data
+
+
+ def save(self, *args, **kwargs):
+ map = super(UploadMapForm, self).save(*args, **kwargs)
+ if not kwargs['commit'] == False:
+ map.save()
+ return map
=== modified file 'wlmaps/models.py'
--- wlmaps/models.py 2011-08-28 09:26:21 +0000
+++ wlmaps/models.py 2012-07-04 18:20:26 +0000
@@ -12,17 +12,6 @@
from djangoratings.fields import AnonymousRatingField
-class MapManager(models.Manager):
- def create(self,**kwargs):
- if 'slug' not in kwargs:
- name = kwargs['name']
- slug = slugify(name)
- m = super(MapManager,self).create(slug=slug, **kwargs)
- else:
- m = super(MapManager,self).create(**kwargs)
-
- return m
-
class Map(models.Model):
name = models.CharField( max_length = 255, unique = True )
@@ -33,15 +22,15 @@
nr_players = models.PositiveIntegerField( verbose_name = 'Max Players')
descr = models.TextField( verbose_name = "Description" )
- minimap = models.ImageField( upload_to ="/wlmaps/minimaps/" )
- file = models.FileField( upload_to ="/wlmaps/maps/" )
+ minimap = models.ImageField( verbose_name = "Minimap", upload_to = settings.MEDIA_ROOT + "/wlmaps/minimaps/" )
+ file = models.FileField( verbose_name = "Mapfile", upload_to = settings.MEDIA_ROOT + "/wlmaps/maps/" )
world_name = models.CharField( max_length = 50 )
pub_date = models.DateTimeField( default = datetime.datetime.now )
- uploader_comment = models.TextField( )
+ uploader_comment = models.TextField( verbose_name = "Uploader comment", blank = True )
uploader = models.ForeignKey(User)
- nr_downloads = models.PositiveIntegerField( verbose_name ="Download count", default = 0)
+ nr_downloads = models.PositiveIntegerField( verbose_name = "Download count", default = 0)
rating = AnonymousRatingField(range=10, can_change_vote = True)
@@ -50,6 +39,7 @@
weights = {
'name': 100,
'author': 60,
+ 'uploader_comment': 40,
}
)
@@ -57,11 +47,16 @@
ordering = ('-pub_date',)
get_latest_by = 'pub_date'
- objects = MapManager()
-
@models.permalink
def get_absolute_url( self ):
return ("wlmaps_view", None, {"map_slug": self.slug } )
def __unicode__(self):
return u'%s by %s' % (self.name, self.author)
+
+ def save(self, *args, **kwargs):
+ if not self.slug:
+ self.slug = slugify(self.name)
+
+ map = super(Map, self).save(*args, **kwargs)
+ return map
=== added directory 'wlmaps/templatetags'
=== added file 'wlmaps/templatetags/__init__.py'
=== added file 'wlmaps/templatetags/wlmaps_extra.py'
--- wlmaps/templatetags/wlmaps_extra.py 1970-01-01 00:00:00 +0000
+++ wlmaps/templatetags/wlmaps_extra.py 2012-07-04 18:20:26 +0000
@@ -0,0 +1,14 @@
+#!/usr/bin/env python -tt
+# encoding: utf-8
+
+from django import template
+
+register = template.Library()
+
+@register.filter
+def average_rating(rating):
+ if rating.votes > 0:
+ avg = "%.1f" %( float(rating.score) / rating.votes )
+ else:
+ avg = "0.0"
+ return avg
=== modified file 'wlmaps/views.py'
--- wlmaps/views.py 2010-11-01 17:52:47 +0000
+++ wlmaps/views.py 2012-07-04 18:20:26 +0000
@@ -8,27 +8,23 @@
from django.contrib.auth.decorators import login_required
from django.http import HttpResponseRedirect, HttpResponseNotAllowed, HttpResponse, HttpResponseBadRequest
from django.core.urlresolvers import reverse
-from django.utils import simplejson as json
from django.db import IntegrityError
-import Image
import models
-
-from widelandslib.map import WidelandsMap, WlMapLibraryException
+from settings import MAPS_PER_PAGE
import os
-from cStringIO import StringIO
import zipfile
-from settings import WIDELANDS_SVN_DIR, MEDIA_ROOT, MEDIA_URL
-
#########
# Views #
#########
def index( request ):
- objects = models.Map.objects.all()
+ maps = models.Map.objects.all()
return render_to_response("wlmaps/index.html",
- { "object_list": objects, },
+ { "maps": maps,
+ "maps_per_page": MAPS_PER_PAGE,
+ },
context_instance = RequestContext(request))
def rate( request, map_slug ):
@@ -88,92 +84,32 @@
return response
-
def view(request, map_slug):
- m = get_object_or_404( models.Map, slug = map_slug )
-
- if m.rating.votes > 0:
- avg = "%.1f" %( float(m.rating.score) /m.rating.votes )
- else:
- avg = "0"
+ map = get_object_or_404( models.Map, slug = map_slug )
context = {
- "average_rating": avg,
- "object": m,
+ #"average_rating": _average_rating( map.rating ),
+ "map": map,
}
return render_to_response( "wlmaps/map_detail.html",
context,
context_instance=RequestContext(request))
+
@login_required
def upload( request ):
- """
- Uploads a map. This is an ajax post and returns an JSON object
- with the following values.
-
- success_code - integer (0 means success else error)
- error_msg - if success_code = 1 this contains an descriptive error
- map_id - id of newly uploaded map
- """
- def JsonReply( success_code, error_msg = None, **kwargs):
- d = kwargs
- d['success_code'] = success_code
- if error_msg != None:
- d['error_msg'] = error_msg
- return HttpResponse( json.dumps(d), mimetype="application/javascript" )
-
- if request.method != "POST":
- return HttpResponseNotAllowed(["post"])
-
- form = UploadMapForm( request.POST )
- test = request.POST.get("test", False)
- comment = request.POST.get("comment",u"")
-
- if "mapfile" in request.FILES:
- mf = request.FILES["mapfile"]
-
- mfdata = mf.read()
-
- m = WidelandsMap()
- try:
- m.load(StringIO(mfdata))
- except WlMapLibraryException:
- return JsonReply( 3, "Invalid Map File" )
-
- # Draw the minimaps
- mm = m.make_minimap(WIDELANDS_SVN_DIR)
- mm_path = "%s/wlmaps/minimaps/%s.png" % (MEDIA_ROOT,m.name)
- mm_url = "/wlmaps/minimaps/%s.png" % m.name
- file_path = "%s/wlmaps/maps/%s.wmf" % (MEDIA_ROOT,m.name)
-
- if not test:
- f = open(file_path,"wb")
- f.write(mfdata)
- f.close()
- i = Image.fromarray(mm)
- i.save(mm_path)
-
- # Create the map
- try:
- nm = models.Map.objects.create(
- name = m.name,
- author = m.author,
- w = m.w,
- h = m.h,
- nr_players = m.nr_players,
- descr = m.descr,
- minimap = mm_url,
- file = file_path,
- world_name = m.world_name,
-
- uploader = request.user,
- uploader_comment = comment,
- )
- except IntegrityError:
- return JsonReply(2, "Map with the same name already exists in database!")
-
- nm.save()
-
- return JsonReply(0, map_id = nm.pk )
-
- return JsonReply(1, "No mapfile in request!")
+ if request.method == 'POST':
+ form = UploadMapForm(request.POST, request.FILES)
+ if form.is_valid():
+ map = form.save(commit = False)
+ map.uploader = request.user
+ map.save()
+ return HttpResponseRedirect(map.get_absolute_url())
+
+ else:
+ form = UploadMapForm()
+
+ context = { 'form': form, }
+ return render_to_response( "wlmaps/upload.html",
+ context,
+ context_instance=RequestContext(request))
=== modified file 'wlprofile/fields.py'
--- wlprofile/fields.py 2009-12-06 09:53:08 +0000
+++ wlprofile/fields.py 2012-07-04 18:20:26 +0000
@@ -45,12 +45,17 @@
def save_form_data(self, instance, data):
- if data and self.width and self.height:
- if instance.avatar:
- instance.avatar.delete()
-
- content = self.resize_image(data.read(), width=self.width, height=self.height)
- data = SimpleUploadedFile(instance.user.username + ".png", content, data.content_type)
+ if data is not None and data != self.default:
+ if not data:
+ data = self.default
+ if instance.avatar != self.default:
+ instance.avatar.delete()
+ else:
+ if hasattr(data, 'read') and self.width and self.height:
+ content = self.resize_image(data.read(), width=self.width, height=self.height)
+ data = SimpleUploadedFile(instance.user.username + ".png", content, "image/png")
+ if instance.avatar != self.default:
+ instance.avatar.delete()
super(ExtendedImageField, self).save_form_data(instance, data)
=== modified file 'wlprofile/forms.py'
--- wlprofile/forms.py 2011-08-24 13:09:49 +0000
+++ wlprofile/forms.py 2012-07-04 18:20:26 +0000
@@ -13,15 +13,13 @@
import re
class EditProfileForm(forms.ModelForm):
- delete_avatar = forms.BooleanField(initial=False,required=False)
email = forms.EmailField(required=True)
class Meta:
model = Profile
- fields = ['site', 'jabber', 'icq', 'msn', 'aim', 'yahoo',
- 'location', 'signature', 'time_zone', "time_display",
- 'avatar', 'delete_avatar', 'show_signatures', "email",
- ]
+ fields = ['avatar', 'site', 'location', 'jabber', 'icq', 'msn',
+ 'aim', 'yahoo', 'signature', 'email', 'show_signatures',
+ 'time_zone', 'time_display', ]
def __init__(self, *args, **kwargs):
=== modified file 'wlprofile/models.py'
--- wlprofile/models.py 2012-03-17 16:22:06 +0000
+++ wlprofile/models.py 2012-07-04 18:20:26 +0000
@@ -21,7 +21,7 @@
user = AutoOneToOneField(User, related_name='wlprofile', verbose_name=_('User'))
# Web related fields.
- site = models.URLField(_('Site'), verify_exists=False, blank=True, default='')
+ site = models.URLField(_('Website'), verify_exists=False, blank=True, default='')
jabber = models.CharField(_('Jabber'), max_length=80, blank=True, default='')
icq = models.CharField(_('ICQ'), max_length=12, blank=True, default='')
msn = models.CharField(_('MSN'), max_length=80, blank=True, default='')
@@ -33,12 +33,12 @@
# Configuration for Forum/Site
time_zone = models.FloatField(_('Time zone'), choices=TZ_CHOICES, default=float(settings.DEFAULT_TIME_ZONE))
- time_display = models.CharField(_('Time display'), max_length=80, default=r"%ND(m-d-y), H:i")
+ time_display = models.CharField(_('Time display'), max_length=80, default=settings.DEFAULT_TIME_DISPLAY)
signature = models.TextField(_('Signature'), blank=True, default='', max_length=settings.SIGNATURE_MAX_LENGTH)
# language = models.CharField(_('Language'), max_length=10, blank=True, default='',
# choices=settings.LANGUAGES)
- avatar = ExtendedImageField(_('Avatar'), blank=True, default='', upload_to="wlprofile/avatars/", width=settings.AVATAR_WIDTH, height=settings.AVATAR_HEIGHT)
+ avatar = ExtendedImageField(_('Avatar'), blank=True, default="wlprofile/anonymous.png", upload_to="wlprofile/avatars/", width=settings.AVATAR_WIDTH, height=settings.AVATAR_HEIGHT)
show_signatures = models.BooleanField(_('Show signatures'), blank=True, default=True)
# markup = models.CharField(_('Default markup'), max_length=15, default=settings.DEFAULT_MARKUP, choices=MARKUP_CHOICES)
=== modified file 'wlprofile/templatetags/custom_date.py'
--- wlprofile/templatetags/custom_date.py 2011-08-25 12:32:21 +0000
+++ wlprofile/templatetags/custom_date.py 2012-07-04 18:20:26 +0000
@@ -18,6 +18,7 @@
import re
from datetime import date as ddate, tzinfo, timedelta, datetime
+from settings import DEFAULT_TIME_ZONE, DEFAULT_TIME_DISPLAY
register = template.Library()
@@ -128,12 +129,12 @@
If this user is logged in, return his representation,
otherwise, return a sane default
"""
- if user.is_anonymous():
- return django_date("j F Y", date)
+ if not user.is_authenticated():
+ return do_custom_date( DEFAULT_TIME_DISPLAY, date, float(DEFAULT_TIME_ZONE) )
try:
return do_custom_date( user.get_profile().time_display, date, user.get_profile().time_zone )
except ObjectDoesNotExist:
- return django_date("j F Y", date)
+ return do_custom_date( DEFAULT_TIME_DISPLAY, date, float(DEFAULT_TIME_ZONE) )
custom_date.is_safe = False
=== modified file 'wlprofile/views.py'
--- wlprofile/views.py 2010-01-02 22:28:51 +0000
+++ wlprofile/views.py 2012-07-04 18:20:26 +0000
@@ -39,9 +39,6 @@
form = EditProfileForm(request.POST,
instance=instance, files = request.FILES)
if form.is_valid():
- if form.cleaned_data["delete_avatar"]:
- instance.avatar.delete()
-
form.save()
return HttpResponseRedirect(reverse(view))
=== modified file 'wlrecaptcha/forms.py'
--- wlrecaptcha/forms.py 2011-07-30 09:02:06 +0000
+++ wlrecaptcha/forms.py 2012-07-04 18:20:26 +0000
@@ -38,12 +38,12 @@
</script>
''' % self.options
return '''%(options)s<script type="text/javascript"
- src="http://api.recaptcha.net/challenge?k=%(public_key)s">
+ src="https://www.google.com/recaptcha/api/challenge?k=%(public_key)s">
</script>
<noscript>
- <iframe src="http://api.recaptcha.net/noscript?k=%(public_key)s"
- height="300" width="500" frameborder="0"></iframe><br />
+ <iframe src="https://www.google.com/recaptcha/api/noscript?k=%(public_key)s"
+ style="height: 300px; width: 500px; border: none;"></iframe><br />
<textarea name="recaptcha_challenge_field" rows="3" cols="40">
</textarea>
<input type="hidden" name="recaptcha_response_field"
=== modified file 'wlsearch/views.py'
--- wlsearch/views.py 2009-04-08 19:31:18 +0000
+++ wlsearch/views.py 2012-07-04 18:20:26 +0000
@@ -10,7 +10,7 @@
from wiki.models import Article
from pybb.models import Post, Topic
from news.models import Post as NewsPost
-from online_help.models import Building, Ware
+from wlhelp.models import Building, Ware
from wlmaps.models import Map
class DummyEmptyQueryset(object):
Follow ups