Allowing + and - to be clicked in the menu
authorDmitri Gaskin <dmitrig01@gmail.com>
Sat, 08 Nov 2008 17:06:35 +0000
changeset 449 a4dc4c9e7356
parent 448 075360be6743
child 450 365c2cc68bd7
Allowing + and - to be clicked in the menu
app/soc/content/css/soc-081027.css
app/soc/content/css/soc-081108.css
app/soc/content/js/menu-081026.js
app/soc/content/js/menu-081108.js
app/soc/templates/soc/base.html
app/soc/views/helper/html_menu.py
--- a/app/soc/content/css/soc-081027.css	Fri Nov 07 22:24:01 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,472 +0,0 @@
-/*
-Copyright 2008 the Melange authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
- */
- 
-/* 
- * STANDARD HTML TAGS 
- */ 
-
-body {
-  background-color: white;
-  color: black;
-
-  font-family: Arial, sans-serif;
-  font-size: medium;
-
-  margin: 8px;
-  margin-top: 3px;
-}
-
-img {
-  border: 0;
-}
-
-form {
-  margin: 0;
-  padding: 0;
-}
-
-li {
-  margin-bottom: 0.25em;
-}
-
-/* HEADERS */
-h1 {
-  font-size: x-large;
-  margin-top: 0px;
-}
-
-h2 {
-  font-size: large;
-}
-
-h3 {
-  font-size: medium;
-}
-
-h4 {
-  font-size: small;
-}
-
-/* PRE-FORMATTED TEXT */
-pre, code {
-  color: #007000;
-  font-family: "bogus font here", monospace;
-  font-size: 100%;
-}
-
-pre {
-  border: 1px solid silver;
-  background-color: #f5f5f5;
-  padding: 0.5em;
-  overflow: auto;
-  margin: 2em;
-}
-
-pre ins {
-  color: #cc0000;
-  font-weight: bold;
-  text-decoration: none;
-}
-
-/* LINKS AND ANCHORS */ 
-a:link {
-  color: #0000cc;
-}
-
-a:active {
-  color: #cc0000;
-}
-
-a:visited {
-  color: #551a8b;
-}
-
-a.selected, .selected a, .selected {
-  color: black;
-  font-weight: bold;
-  text-decoration: none;
-}
-
-a.novisit {
-  color: #2a55a3;
-}
-
-a.noul, a.noulv {
-  color: #4182fa; /* #93b7fa; */
-  text-decoration: none;
-}
-
-a:hover.noul {
-  text-decoration: underline;
-}
-
-a:visited.noul {
-  color: #a32a91; /* #2a55a3; */
-}
-
-
-/* Styles used by Django Forms */
-ul.errorlist {
-  color: #FF0000;
-  font-size: small;
-}
-
-
-/* TABLES */
-table {
-  border-collapse: collapse;
-}
-
-th, td {
-  /*padding: 0;*/
-  padding:2px 5px;
-  vertical-align: top;
-  text-align: left;
-}
-
-/* FORM TABLE FIELDS */ 
-td.formfieldrequired {
-  font-style: italic;
-  font-size: small;
-}
-
-td.formfieldhelptext {
-  font-style: italic;
-  font-size: small;
-}
-
-td.formfielderror {
-  color: #FF0000;
-  font-size: small;
-}
-
-td.formfieldheading {
-  font-weight: bold;
-  font-size: small;
-}
-
-td.formfieldlabel {
-  font-weight: bold;
-  font-size: small;
-}
-
-td.formfielderrorlabel {
-  font-weight: bold;
-  color: #FF0000;
-  font-size: small;
-}
-
-/* TABLE QUEUES (used with .list) */
-table#queues {
-  border-collapse: collapse;
-  width: 100%;
-}
-
-table#queues tr {
-  border-bottom: thin solid lightgray;
-}
-
-table#queues td {
-  padding: 2px;
-}  
-
-/* 
- * PAGE ELEMENTS 
- */
-
-#title {
-  border-top: 1px solid #3366cc;
-  background-color: #e5ecf9;
-  font-size: large;
-  font-weight: bold;
-  margin: 0;
-  padding: 0;
-  padding-top: 1px;
-  padding-bottom: 1px;
-  margin-top: 5px;
-  margin-left: 200px;
-  padding-left: 3px;
-}
-
-#notice {
-  margin-left: 200px;
-  padding: 3px;
-}
-
-#logo {
-  padding-right: 18px;
-  position: absolute;
-  left: 0;
-  top: -5px;
-}
-
-#login {
-  text-align: right;
-}
-
-#badge {
-  clear: both;
-  margin-top: 3.5em;
-  margin-bottom: 1em;
-  height: 53px;
-  font-style: italic;
-}
-
-#body {
-  border-left: 1px dotted silver;
-  margin-left: 200px;
-  margin-right: 25px;
-  padding-left: 18px;
-  padding-bottom: 25px;
-}
-
-#body .buttons {
-  margin-right: 4px;
-  margin-top: 20px;
-}
-  
-#body a.button, input[type^="submit"], input[type^="button"] {
-  margin: 0;
-  padding: 2px 5px 2px 5px;
-  font-family: Arial, Sans-serif;
-  font-size: 12px;
-  text-decoration: none;
-  color: #222;
-  cursor: default;
-  background: #ddd url("/soc/content/images/button-background.gif") repeat-x 0 0;
-  border: 1px solid #aaa;
-}
-
-#body a.button:hover, input[type^="submit"]:hover, input[type^="button"]:hover {
-  border-color: #9cf #69e #69e #7af;
-}
-
-#header {
-  height: 50px;
-  margin-bottom: 11px;
-  position: relative;
-}
-
-#footer {
-  clear: both;
-  text-align: center;
-  margin-top: 3.5em;
-  margin-bottom: 1em;
-  background-image: url("http://www.google.com/images/art.gif");
-  height: 53px;
-  background-repeat: no-repeat;
-  background-position: left center;
-}
-
-#footer .text {
-  padding-top: 20px;
-}
-
-#lastmodified {
-  text-align: right;
-  font-size: small;
-}
-
-#createdon {
-  text-align: right;
-  font-size: small;
-}
-
-#createdby {
-  text-align: right;
-  font-size: small;
-}
-
-/* SIDEBAR MENU */
-#side {
-  width: 200px;
-  margin-bottom: 3em;
-  float: left;
-  font-size: small;
-}
-
-#menu ul {
-  margin: 0;
-  padding: 0;
-  list-style-type: none;
-  margin-bottom: 1em;
-  font-size: 95%;
-}
-
-#menu ul ul {
-  margin-left: 10px;
-  margin-bottom: 0;
-}
-
-#menu li {
-  margin-top: 4px;
-}
-
-#menu li.leaf {
-  list-style-type: none;
-  list-style-image: none;
-}
-
-#menu li.expandable {
-  list-style-type: disc;
-  list-style-image: url(../images/minus.gif);
-}
-
-#menu li.closed {
-  list-style-image: url(../images/plus.gif);
-}
-
-#menu h4 {
-  margin: 0;
-  padding: 0;
-  margin-bottom: 1em;
-}
-
- 
-/* SEARCH FIELD */ 
-#search {
-  margin-top: 2em;
-}
-
-#search .header {
-  font-weight: bold;
-  font-size: 90%;
-  margin-bottom: 1px;
-}
-
-#search .button {
-  margin-top: 1px;
-}
-
-#search .input input {
-  width: 125px;
-}
-
-/* BLOG FEEDS */
-.blog {
-  border: 10px solid #e5ecf9;
-  border-top: 1px solid #3366cc;
-}
-
-.blog h2 {
-  margin-top: 0.1em;
-  background-color: #e5ecf9;
-}
-
-.blog h2 a {
-  text-decoration: none;
-  color: black;
-}
-
-.blog h2 a:visited {
-  text-decoration: none;
-  color: black;
-}
-
-
-.blog .entry {
-  margin-bottom: 1em;
-}
-
-.blog .title {
-   font-size: medium;
-}
-
-.blog .author {
-  color: gray;
-  margin-bottom: 0.5em;
-}
-
-.blog .snippet {
-  background-color: white;
-}
-
-/* LIST */
-.list {
-  background-color: #E5ECF9;
-  border: 1px solid  #93b7fa;
-  border-bottom: 2px solid #93b7fa;
-  padding: 3px;
-  -moz-border-radius: 5px 5px 0px 0px;
-}
-
-.list .pagination {
-  text-align: right;
-  padding: 3px;
-}
-
-.list table{
-  background-color: white;
-}
-  
-.list table th {
-  background-color: #eeeeec;
-  border-right: 1px solid lightgray;
-  border-top: 1px solid lightgray;
-}
-
-.list table tr.on {
-  background-color: #ff9;
-}
-
-.list table tr.off {
-  background-color: #fff;
-}
-
-.list table td.last {
-  border-right: 1px solid lightgray;
-}
-
-.list table .first {
-  border-left: 1px solid lightgray;
-}
-
-/* 
- * CUSTOM CLASSES 
- */
-
-.todo {
-  color: #cc0000;
-  font-size: 80%;
-}
-
-.newmark {
-  color: red;
-  font-size: 80%;
-  vertical-align: top;
-}
-
-.error {
-  color: red;
-}
-
-.notice { 
-  background:#fad163; 
-  font-size: small;
-  font-weight: bold;
-}
-
-.rounded_ul { background: url(/soc/content/images/ul.gif) no-repeat top left; }
-.rounded_ur { background: url(/soc/content/images/ur.gif) no-repeat top right; }
-.rounded_ll { background: url(/soc/content/images/ll.gif) no-repeat bottom left; }
-.rounded_lr { background: url(/soc/content/images/lr.gif) no-repeat bottom right; }
-
-/* Disabled text. */
-.disabled {
-  color: gray;
-}
-
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/soc/content/css/soc-081108.css	Sat Nov 08 17:06:35 2008 +0000
@@ -0,0 +1,468 @@
+/*
+Copyright 2008 the Melange authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+ */
+ 
+/* 
+ * STANDARD HTML TAGS 
+ */ 
+
+body {
+  background-color: white;
+  color: black;
+
+  font-family: Arial, sans-serif;
+  font-size: medium;
+
+  margin: 8px;
+  margin-top: 3px;
+}
+
+img {
+  border: 0;
+}
+
+form {
+  margin: 0;
+  padding: 0;
+}
+
+li {
+  margin-bottom: 0.25em;
+}
+
+/* HEADERS */
+h1 {
+  font-size: x-large;
+  margin-top: 0px;
+}
+
+h2 {
+  font-size: large;
+}
+
+h3 {
+  font-size: medium;
+}
+
+h4 {
+  font-size: small;
+}
+
+/* PRE-FORMATTED TEXT */
+pre, code {
+  color: #007000;
+  font-family: "bogus font here", monospace;
+  font-size: 100%;
+}
+
+pre {
+  border: 1px solid silver;
+  background-color: #f5f5f5;
+  padding: 0.5em;
+  overflow: auto;
+  margin: 2em;
+}
+
+pre ins {
+  color: #cc0000;
+  font-weight: bold;
+  text-decoration: none;
+}
+
+/* LINKS AND ANCHORS */ 
+a:link {
+  color: #0000cc;
+}
+
+a:active {
+  color: #cc0000;
+}
+
+a:visited {
+  color: #551a8b;
+}
+
+a.selected, .selected a, .selected {
+  color: black;
+  font-weight: bold;
+  text-decoration: none;
+}
+
+a.novisit {
+  color: #2a55a3;
+}
+
+a.noul, a.noulv {
+  color: #4182fa; /* #93b7fa; */
+  text-decoration: none;
+}
+
+a:hover.noul {
+  text-decoration: underline;
+}
+
+a:visited.noul {
+  color: #a32a91; /* #2a55a3; */
+}
+
+
+/* Styles used by Django Forms */
+ul.errorlist {
+  color: #FF0000;
+  font-size: small;
+}
+
+
+/* TABLES */
+table {
+  border-collapse: collapse;
+}
+
+th, td {
+  /*padding: 0;*/
+  padding:2px 5px;
+  vertical-align: top;
+  text-align: left;
+}
+
+/* FORM TABLE FIELDS */ 
+td.formfieldrequired {
+  font-style: italic;
+  font-size: small;
+}
+
+td.formfieldhelptext {
+  font-style: italic;
+  font-size: small;
+}
+
+td.formfielderror {
+  color: #FF0000;
+  font-size: small;
+}
+
+td.formfieldheading {
+  font-weight: bold;
+  font-size: small;
+}
+
+td.formfieldlabel {
+  font-weight: bold;
+  font-size: small;
+}
+
+td.formfielderrorlabel {
+  font-weight: bold;
+  color: #FF0000;
+  font-size: small;
+}
+
+/* TABLE QUEUES (used with .list) */
+table#queues {
+  border-collapse: collapse;
+  width: 100%;
+}
+
+table#queues tr {
+  border-bottom: thin solid lightgray;
+}
+
+table#queues td {
+  padding: 2px;
+}  
+
+/* 
+ * PAGE ELEMENTS 
+ */
+
+#title {
+  border-top: 1px solid #3366cc;
+  background-color: #e5ecf9;
+  font-size: large;
+  font-weight: bold;
+  margin: 0;
+  padding: 0;
+  padding-top: 1px;
+  padding-bottom: 1px;
+  margin-top: 5px;
+  margin-left: 200px;
+  padding-left: 3px;
+}
+
+#notice {
+  margin-left: 200px;
+  padding: 3px;
+}
+
+#logo {
+  padding-right: 18px;
+  position: absolute;
+  left: 0;
+  top: -5px;
+}
+
+#login {
+  text-align: right;
+}
+
+#badge {
+  clear: both;
+  margin-top: 3.5em;
+  margin-bottom: 1em;
+  height: 53px;
+  font-style: italic;
+}
+
+#body {
+  border-left: 1px dotted silver;
+  margin-left: 200px;
+  margin-right: 25px;
+  padding-left: 18px;
+  padding-bottom: 25px;
+}
+
+#body .buttons {
+  margin-right: 4px;
+  margin-top: 20px;
+}
+  
+#body a.button, input[type^="submit"], input[type^="button"] {
+  margin: 0;
+  padding: 2px 5px 2px 5px;
+  font-family: Arial, Sans-serif;
+  font-size: 12px;
+  text-decoration: none;
+  color: #222;
+  cursor: default;
+  background: #ddd url("/soc/content/images/button-background.gif") repeat-x 0 0;
+  border: 1px solid #aaa;
+}
+
+#body a.button:hover, input[type^="submit"]:hover, input[type^="button"]:hover {
+  border-color: #9cf #69e #69e #7af;
+}
+
+#header {
+  height: 50px;
+  margin-bottom: 11px;
+  position: relative;
+}
+
+#footer {
+  clear: both;
+  text-align: center;
+  margin-top: 3.5em;
+  margin-bottom: 1em;
+  background-image: url("http://www.google.com/images/art.gif");
+  height: 53px;
+  background-repeat: no-repeat;
+  background-position: left center;
+}
+
+#footer .text {
+  padding-top: 20px;
+}
+
+#lastmodified {
+  text-align: right;
+  font-size: small;
+}
+
+#createdon {
+  text-align: right;
+  font-size: small;
+}
+
+#createdby {
+  text-align: right;
+  font-size: small;
+}
+
+/* SIDEBAR MENU */
+#side {
+  width: 200px;
+  margin-bottom: 3em;
+  float: left;
+  font-size: small;
+}
+
+#menu ul {
+  margin: 0;
+  padding: 0;
+  list-style-type: none;
+  margin-bottom: 1em;
+  font-size: 95%;
+}
+
+#menu ul ul {
+  margin-left: 10px;
+  margin-bottom: 0;
+}
+
+#menu li {
+  margin-top: 4px;
+  list-style-type: none;
+  list-style-image: none;
+}
+
+#menu img {
+  margin-right: 4px;
+}
+
+#menu li.leaf {
+  padding-left: 14px;
+}
+
+#menu h4 {
+  margin: 0;
+  padding: 0;
+  margin-bottom: 1em;
+}
+
+ 
+/* SEARCH FIELD */ 
+#search {
+  margin-top: 2em;
+}
+
+#search .header {
+  font-weight: bold;
+  font-size: 90%;
+  margin-bottom: 1px;
+}
+
+#search .button {
+  margin-top: 1px;
+}
+
+#search .input input {
+  width: 125px;
+}
+
+/* BLOG FEEDS */
+.blog {
+  border: 10px solid #e5ecf9;
+  border-top: 1px solid #3366cc;
+}
+
+.blog h2 {
+  margin-top: 0.1em;
+  background-color: #e5ecf9;
+}
+
+.blog h2 a {
+  text-decoration: none;
+  color: black;
+}
+
+.blog h2 a:visited {
+  text-decoration: none;
+  color: black;
+}
+
+
+.blog .entry {
+  margin-bottom: 1em;
+}
+
+.blog .title {
+   font-size: medium;
+}
+
+.blog .author {
+  color: gray;
+  margin-bottom: 0.5em;
+}
+
+.blog .snippet {
+  background-color: white;
+}
+
+/* LIST */
+.list {
+  background-color: #E5ECF9;
+  border: 1px solid  #93b7fa;
+  border-bottom: 2px solid #93b7fa;
+  padding: 3px;
+  -moz-border-radius: 5px 5px 0px 0px;
+}
+
+.list .pagination {
+  text-align: right;
+  padding: 3px;
+}
+
+.list table{
+  background-color: white;
+}
+  
+.list table th {
+  background-color: #eeeeec;
+  border-right: 1px solid lightgray;
+  border-top: 1px solid lightgray;
+}
+
+.list table tr.on {
+  background-color: #ff9;
+}
+
+.list table tr.off {
+  background-color: #fff;
+}
+
+.list table td.last {
+  border-right: 1px solid lightgray;
+}
+
+.list table .first {
+  border-left: 1px solid lightgray;
+}
+
+/* 
+ * CUSTOM CLASSES 
+ */
+
+.todo {
+  color: #cc0000;
+  font-size: 80%;
+}
+
+.newmark {
+  color: red;
+  font-size: 80%;
+  vertical-align: top;
+}
+
+.error {
+  color: red;
+}
+
+.notice { 
+  background:#fad163; 
+  font-size: small;
+  font-weight: bold;
+}
+
+.rounded_ul { background: url(/soc/content/images/ul.gif) no-repeat top left; }
+.rounded_ur { background: url(/soc/content/images/ur.gif) no-repeat top right; }
+.rounded_ll { background: url(/soc/content/images/ll.gif) no-repeat bottom left; }
+.rounded_lr { background: url(/soc/content/images/lr.gif) no-repeat bottom right; }
+
+/* Disabled text. */
+.disabled {
+  color: gray;
+}
+
+
--- a/app/soc/content/js/menu-081026.js	Fri Nov 07 22:24:01 2008 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-$(function() {
-  var li = $('#side #menu span').parents('li').filter(':has(ul)');
-  li.children('a').dblclick(function() {
-    window.location = $(this).attr('href');
-  }).add(li.children('span')).click(function() {
-    $($(this).parents('li')[0]).toggleClass('closed').children("ul").toggle();
-    return false;
-  });
-});
-$(function() {
-  var li = $('#side #menu span').parents('li').filter(':has(ul)');
-  li.children('a').dblclick(function() {
-    window.location = $(this).attr('href');
-  }).add(li.children('span')).click(function() {
-    $($(this).parents('li')[0]).toggleClass('closed').children("ul").toggle();
-    return false;
-  });
-});
-$(function() {
-  var li = $('#side #menu span').parents('li').filter(':has(ul)');
-  li.children('a').dblclick(function() {
-    window.location = $(this).attr('href');
-  }).add(li.children('span')).click(function() {
-    $($(this).parents('li')[0]).toggleClass('closed').children("ul").toggle();
-    return false;
-  });
-});
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/soc/content/js/menu-081108.js	Sat Nov 08 17:06:35 2008 +0000
@@ -0,0 +1,12 @@
+$(function() {
+  $('#side #menu li.expandable > a').dblclick(function() {
+    window.location = $(this).attr('href');
+  })
+  $('#side #menu li.expandable > span').toggle(function() {
+    $(this).find("img").attr('src', '/soc/content/images/plus.gif').end().parent().children("ul").toggle();
+  }, function() {
+    $(this).find("img").attr('src', '/soc/content/images/minus.gif').end().parent().children("ul").toggle();
+    return false;
+  });
+  $('#side #menu li.expandable > span').contents().before('<img src="/soc/content/images/minus.gif" />');
+});  
--- a/app/soc/templates/soc/base.html	Fri Nov 07 22:24:01 2008 +0000
+++ b/app/soc/templates/soc/base.html	Sat Nov 08 17:06:35 2008 +0000
@@ -16,7 +16,7 @@
  <head>
   <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type">
 	{% block stylesheet %}
-  <link rel="stylesheet" href="/soc/content/css/soc-081027.css" type="text/css"/>
+  <link rel="stylesheet" href="/soc/content/css/soc-081108.css" type="text/css"/>
 	{% endblock %}
   <title>
     {% block page_title %}
@@ -29,7 +29,7 @@
   </title>
 	<script src="/jquery/jquery-1.2.6.js"></script>
 	<script src="/jquery/jquery-bt-0.7.js"></script>
-	<script src="/soc/content/js/menu-081026.js"></script>
+	<script src="/soc/content/js/menu-081108.js"></script>
 	<script src="/soc/content/js/tips-081027.js"></script>
 	{% block scripts %}{% endblock %}
  </head>
--- a/app/soc/views/helper/html_menu.py	Fri Nov 07 22:24:01 2008 +0000
+++ b/app/soc/views/helper/html_menu.py	Sat Nov 08 17:06:35 2008 +0000
@@ -219,7 +219,7 @@
       return ['%s<span>%s</span>' % (indent, self._item.name)]
   
     # URL supplied, so make an <a href="item.value">item.name</a> link
-    return ['%s<a href="%s"><span>%s</span></a>' % (indent, self._item.value, self._item.name)]
+    return ['%s<span><a href="%s">%s</a></span>' % (indent, self._item.value, self._item.name)]
 
 class LiMenuItem(AHrefMenuItem):
   """Provides HTML menu item properties as attributes as an <li> list item.