Renamed main CSS and map JS file due to recent changes.
--- a/app/soc/content/css/soc-090708.css Thu Jul 30 14:00:37 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,865 +0,0 @@
-/*
-Copyright 2009 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
- */
-@import '/soc/content/css/ui.all.css';
-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 FIELDS */
-td.formfieldrequired {
- font-style: italic;
- font-size: small;
- text-align: center;
-}
-
-td.formfieldhelptext {
- font-style: italic;
- font-size: small;
- padding: 5px;
-}
-
-td.formfielderror {
- color: #FF0000;
- font-size: small;
-}
-
-td.formfieldheading {
- font-weight: bold;
- font-size: small;
-}
-
-td.formfieldlabel {
- font-weight: bold;
- font-size: small;
- text-align: right;
-}
-
-td.twolineformfieldlabel {
- font-weight: bold;
- font-size: small;
- text-align: left;
-}
-
-td.twolineformfieldlabel {
- font-weight: bold;
- font-size: small;
-}
-
-td.twolineformfielderrorlabel {
- font-weight: bold;
- color: #FF0000;
- font-size: small;
-}
-
-td.formfieldvalue {
- text-align: left;
-}
-
-td.formfieldvalue input {
- width: 100%;
-}
-
-td.formfieldvalue input[type=checkbox] {
- width: auto;
-}
-
-td.formfieldvalue input:focus {
- background-color: #FFFF99;
- font-weight: bold;
-}
-
-td.formfieldvalue textarea {
- width: 100%;
-}
-
-/*td.formfieldvalue select {
- width: 100%;
-}*/
-
-td.formfielderrorlabel, td.warning, span.formfielderrorlabel {
- font-weight: bold;
- color: #FF0000;
- font-size: small;
- text-align: right;
-}
-
-/* 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;
-}
-
-/* TOOLTIPS */
-
-#purr-container {
- position: fixed;
- bottom: 0;
- right: 0;
-}
-
-.tooltip {
- position: relative;
- width: 300px;
-}
-
-.tooltip .close {
- position: absolute;
- top: 12px;
- right: 12px;
- display: block;
- width: 18px;
- height: 17px;
- text-indent: -9999px;
- background: url('/soc/content/images/purrClose.png') no-repeat 0 10px;
-}
-
-.tooltip-body {
- min-height: 50px;
- padding: 22px 22px 0 22px;
- background: url('/soc/content/images/purrTop.png') no-repeat left top;
- color: #f9f9f9;
-}
-
-.tooltip-body img {
- width: 50px;
- margin: 0 10px 0 0;
- float: left;
-}
-
-.tooltip-body h3 {
- margin: 0;
- font-size: 1.1em;
-}
-
-.tooltip-body p {
- margin: 5px 0 0 60px;
- font-size: 0.8em;
- line-height: 1.4em;
-}
-
-.tooltip-bottom {
- height: 22px;
- background: url('/soc/content/images/purrBottom.png') no-repeat left top;
-}
-
-/*
- * 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;
- padding-left: 125px;
-}
-
-#footer .text {
- padding-top: 20px;
-}
-
-#created {
- font-size: x-small;
- color:#C0C0C0;
- text-align: right;
-}
-
-/* Google Map */
-#role_profile_map {
- height: 240px;
- width: 320px;
-}
-
-#org_home_extras {
- margin:2em 0em 2em;
- min-height:500px;
-}
-
-/* Organization home gmap */
-#org_home_map {
- height: 500px;
- width: 100%;
-}
-
-/* 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;
-}
-
-/* */
-
-span.unread {
- font-weight: bold;
- color: #FF0000;
-}
-
-span.edited {
- color: #808080;
-}
-
-/* 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;
- cursor: hand;
- cursor: pointer;
-}
-
-.list table tr.off {
- background-color: #fff;
-}
-
-.list table td.last {
- border-right: 1px solid lightgray;
-}
-
-.list table .first {
- border-left: 1px solid lightgray;
-}
-
-.list table td.no_hand {
- cursor: default;
-}
-
-/*
- * STUDENT PROPOSAL REVIEWS
- */
-.studentproposalreview {
- font-size: small;
-}
-
-.studentproposalreview .title {
- background-color: #e5ecf9;
-}
-
-.studentproposalreview .student{
- background: #d0f5a9;
-}
-
-.studentproposalcomment-public,
-.studentproposalreview-public .other {
- background: #f5f6ce;
-}
-
-.studentproposalcomment-private,
-.studentproposalreview-private .other {
- background: #D2EDF6;
-}
-
-/*
- * CUSTOM CLASSES
- */
-
-.assignedslot {
- background-color: #d0f5a9;
-}
-
-.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;
-}
-
-.fieldhelptext {
- width: 450px;
- background:#fad163;
- font-size: small;
- border: 1px solid black;
-}
-
-.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;
-}
-
-.plaintext {
- background:transparent none repeat scroll 0 0;
- border:0 none;
- color:black;
-}
-
-/* Surveys */
-
-
-div #survey_widget {
- margin: 20px;
- -moz-border-radius: 5px;
- -webkit-border-radius: 5px;
- background-color: #FFFEEB;
- border: 5px solid #F7CA75;
- padding: 15px;
- /*max-width: 700px;*/
-}
-
-
-div #survey_widget.survey_admin {
-/* TODO(ajaksu) remove if unnecessary */
-}
-
-div #survey_widget table {
- width:95%
-}
-
-div #survey_widget th,
-div #survey_widget td {
- padding-top: 15px;
-}
-
-/* fields */
-
-div #survey_widget textarea.long_answer {
- padding: 10px;
-}
-
-div #survey_widget textarea.tooltip_entry {
- padding: 10px;
- width: 80%;
-}
-
-div #survey_widget textarea {
- width: 90% !important;
-}
-
-div #survey_widget td.formfieldlabel {
- font-size: medium;
-}
-
-#survey_widget.view input[disabled="disabled"],
-#survey_widget.view textarea[disabled="disabled"],
-#survey_widget.view select[disabled="disabled"],
-#survey_widget.view option {
- color: black;
-}
-
-#survey_widget.quant_radio input,
-#survey_widget.quant_radio label {
- margin: 4px;
-}
-
-/* options */
-
-div #survey_options button {
- display: block;
- margin: 10px 0 0;
-}
-
-div #survey_options {
- margin: 20px 0 0 0;
-}
-
-div #survey_widget a.delete {
- float:left;
- margin:-1px 7px;
-}
-
-div #survey_widget th label {
- /*display: block;*/
- max-width: 180px;
-}
-
-div #survey_widget tr.role-specific label {
- color: #666666;
-}
-
-
-span.formfieldlabel {
- font-weight: bold;
- font-size: small;
-}
-
-.sortable_li {
- border: solid 1px !important;
- padding: 5px !important;
-}
-
-.sortable_li,
-div #survey_widget fieldset {
- -moz-border-radius: 5px;
- -webkit-border-radius: 5px;
-}
-
-div #survey_widget select {
- display: inline;
-}
-
-div #survey_widget td {
-}
-
-div #survey_widget label {
-}
-
-div #survey_widget fieldset select {
-}
-
-div #survey_widget fieldset textarea,
-div #survey_widget fieldset input {
- margin: 10px;
-}
-
-div #survey_widget textarea.comment{
- margin-bottom: 30px;
-}
-
-div #survey_widget td > fieldset > label {
- font-size: 11px;
-}
-
-.ui-dialog-content {
- padding: 0px !important;
- margin: 5px !important;
-}
-
-#dialog {
- font-size: 62.5%;
-}
-
-#dialog input {
- margin: 5px;
-}
-
-#dialog label, #dialog input {
- display: block;
-}
-
-#dialog p {
- text-align: center;
- padding-left: 0;
-}
-
-#dialog input.text {
- margin-bottom: 12px;
- width: 95%;
- padding: .4em;
-}
-
-#dialog fieldset {
- padding: 0;
- border: 0;
- margin-top: 25px;
-}
-
-#dialog h1 {
- font-size: 1.2em;
- margin: .6em 0;
-}
-
-.ui-button {
- outline: 0;
- margin: 0;
- padding: .4em 1em .5em;
- text-decoration: none;
- cursor:pointer;
- position: relative;
- text-align: center;
-}
-
-.ui-dialog .ui-state-highlight,
-.ui-dialog .ui-state-error {
- padding: .3em;
-}
-
-.pick_multi input,
-.quant_radio input {
- display: inline;
- width: auto !important;
-}
-
-/* NEWS FEED FEEDS */
-.news_feed {
- border: 10px solid #e5ecf9;
- border-top: 1px solid #3366cc;
- float:left;
-}
-
-.news_feed .inner{
- padding:0 20px;
-}
-
-.news_feed h2 {
- margin-top: 0.1em;
- background-color: #e5ecf9;
-}
-
-.news_feed h2 a {
- text-decoration: none;
- color: black;
-}
-
-.news_feed h2 a:visited {
- text-decoration: none;
- color: black;
-}
-
-.news_feed .entry {
- margin:1em 0.3em;
-}
-
-.news_feed .title {
- font-size: medium;
-}
-
-.news_feed .time {
- color: gray;
- margin-bottom: 0.5em;
-}
-
-.news_feed .snippet {
- background-color: white;
-}
-
-a#feed_icon img{
- margin:-1px 0;
-}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/soc/content/css/soc-090730.css Thu Jul 30 14:02:23 2009 +0200
@@ -0,0 +1,865 @@
+/*
+Copyright 2009 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
+ */
+@import '/soc/content/css/ui.all.css';
+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 FIELDS */
+td.formfieldrequired {
+ font-style: italic;
+ font-size: small;
+ text-align: center;
+}
+
+td.formfieldhelptext {
+ font-style: italic;
+ font-size: small;
+ padding: 5px;
+}
+
+td.formfielderror {
+ color: #FF0000;
+ font-size: small;
+}
+
+td.formfieldheading {
+ font-weight: bold;
+ font-size: small;
+}
+
+td.formfieldlabel {
+ font-weight: bold;
+ font-size: small;
+ text-align: right;
+}
+
+td.twolineformfieldlabel {
+ font-weight: bold;
+ font-size: small;
+ text-align: left;
+}
+
+td.twolineformfieldlabel {
+ font-weight: bold;
+ font-size: small;
+}
+
+td.twolineformfielderrorlabel {
+ font-weight: bold;
+ color: #FF0000;
+ font-size: small;
+}
+
+td.formfieldvalue {
+ text-align: left;
+}
+
+td.formfieldvalue input {
+ width: 100%;
+}
+
+td.formfieldvalue input[type=checkbox] {
+ width: auto;
+}
+
+td.formfieldvalue input:focus {
+ background-color: #FFFF99;
+ font-weight: bold;
+}
+
+td.formfieldvalue textarea {
+ width: 100%;
+}
+
+/*td.formfieldvalue select {
+ width: 100%;
+}*/
+
+td.formfielderrorlabel, td.warning, span.formfielderrorlabel {
+ font-weight: bold;
+ color: #FF0000;
+ font-size: small;
+ text-align: right;
+}
+
+/* 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;
+}
+
+/* TOOLTIPS */
+
+#purr-container {
+ position: fixed;
+ bottom: 0;
+ right: 0;
+}
+
+.tooltip {
+ position: relative;
+ width: 300px;
+}
+
+.tooltip .close {
+ position: absolute;
+ top: 12px;
+ right: 12px;
+ display: block;
+ width: 18px;
+ height: 17px;
+ text-indent: -9999px;
+ background: url('/soc/content/images/purrClose.png') no-repeat 0 10px;
+}
+
+.tooltip-body {
+ min-height: 50px;
+ padding: 22px 22px 0 22px;
+ background: url('/soc/content/images/purrTop.png') no-repeat left top;
+ color: #f9f9f9;
+}
+
+.tooltip-body img {
+ width: 50px;
+ margin: 0 10px 0 0;
+ float: left;
+}
+
+.tooltip-body h3 {
+ margin: 0;
+ font-size: 1.1em;
+}
+
+.tooltip-body p {
+ margin: 5px 0 0 60px;
+ font-size: 0.8em;
+ line-height: 1.4em;
+}
+
+.tooltip-bottom {
+ height: 22px;
+ background: url('/soc/content/images/purrBottom.png') no-repeat left top;
+}
+
+/*
+ * 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;
+ padding-left: 125px;
+}
+
+#footer .text {
+ padding-top: 20px;
+}
+
+#created {
+ font-size: x-small;
+ color:#C0C0C0;
+ text-align: right;
+}
+
+/* Google Map */
+#role_profile_map {
+ height: 240px;
+ width: 320px;
+}
+
+#org_home_extras {
+ margin:2em 0em 2em;
+ min-height:500px;
+}
+
+/* Organization home gmap */
+#org_home_map {
+ height: 500px;
+ width: 100%;
+}
+
+/* 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;
+}
+
+/* */
+
+span.unread {
+ font-weight: bold;
+ color: #FF0000;
+}
+
+span.edited {
+ color: #808080;
+}
+
+/* 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;
+ cursor: hand;
+ cursor: pointer;
+}
+
+.list table tr.off {
+ background-color: #fff;
+}
+
+.list table td.last {
+ border-right: 1px solid lightgray;
+}
+
+.list table .first {
+ border-left: 1px solid lightgray;
+}
+
+.list table td.no_hand {
+ cursor: default;
+}
+
+/*
+ * STUDENT PROPOSAL REVIEWS
+ */
+.studentproposalreview {
+ font-size: small;
+}
+
+.studentproposalreview .title {
+ background-color: #e5ecf9;
+}
+
+.studentproposalreview .student{
+ background: #d0f5a9;
+}
+
+.studentproposalcomment-public,
+.studentproposalreview-public .other {
+ background: #f5f6ce;
+}
+
+.studentproposalcomment-private,
+.studentproposalreview-private .other {
+ background: #D2EDF6;
+}
+
+/*
+ * CUSTOM CLASSES
+ */
+
+.assignedslot {
+ background-color: #d0f5a9;
+}
+
+.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;
+}
+
+.fieldhelptext {
+ width: 450px;
+ background:#fad163;
+ font-size: small;
+ border: 1px solid black;
+}
+
+.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;
+}
+
+.plaintext {
+ background:transparent none repeat scroll 0 0;
+ border:0 none;
+ color:black;
+}
+
+/* Surveys */
+
+
+div #survey_widget {
+ margin: 20px;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ background-color: #FFFEEB;
+ border: 5px solid #F7CA75;
+ padding: 15px;
+ /*max-width: 700px;*/
+}
+
+
+div #survey_widget.survey_admin {
+/* TODO(ajaksu) remove if unnecessary */
+}
+
+div #survey_widget table {
+ width:95%
+}
+
+div #survey_widget th,
+div #survey_widget td {
+ padding-top: 15px;
+}
+
+/* fields */
+
+div #survey_widget textarea.long_answer {
+ padding: 10px;
+}
+
+div #survey_widget textarea.tooltip_entry {
+ padding: 10px;
+ width: 80%;
+}
+
+div #survey_widget textarea {
+ width: 90% !important;
+}
+
+div #survey_widget td.formfieldlabel {
+ font-size: medium;
+}
+
+#survey_widget.view input[disabled="disabled"],
+#survey_widget.view textarea[disabled="disabled"],
+#survey_widget.view select[disabled="disabled"],
+#survey_widget.view option {
+ color: black;
+}
+
+#survey_widget.quant_radio input,
+#survey_widget.quant_radio label {
+ margin: 4px;
+}
+
+/* options */
+
+div #survey_options button {
+ display: block;
+ margin: 10px 0 0;
+}
+
+div #survey_options {
+ margin: 20px 0 0 0;
+}
+
+div #survey_widget a.delete {
+ float:left;
+ margin:-1px 7px;
+}
+
+div #survey_widget th label {
+ /*display: block;*/
+ max-width: 180px;
+}
+
+div #survey_widget tr.role-specific label {
+ color: #666666;
+}
+
+
+span.formfieldlabel {
+ font-weight: bold;
+ font-size: small;
+}
+
+.sortable_li {
+ border: solid 1px !important;
+ padding: 5px !important;
+}
+
+.sortable_li,
+div #survey_widget fieldset {
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+}
+
+div #survey_widget select {
+ display: inline;
+}
+
+div #survey_widget td {
+}
+
+div #survey_widget label {
+}
+
+div #survey_widget fieldset select {
+}
+
+div #survey_widget fieldset textarea,
+div #survey_widget fieldset input {
+ margin: 10px;
+}
+
+div #survey_widget textarea.comment{
+ margin-bottom: 30px;
+}
+
+div #survey_widget td > fieldset > label {
+ font-size: 11px;
+}
+
+.ui-dialog-content {
+ padding: 0px !important;
+ margin: 5px !important;
+}
+
+#dialog {
+ font-size: 62.5%;
+}
+
+#dialog input {
+ margin: 5px;
+}
+
+#dialog label, #dialog input {
+ display: block;
+}
+
+#dialog p {
+ text-align: center;
+ padding-left: 0;
+}
+
+#dialog input.text {
+ margin-bottom: 12px;
+ width: 95%;
+ padding: .4em;
+}
+
+#dialog fieldset {
+ padding: 0;
+ border: 0;
+ margin-top: 25px;
+}
+
+#dialog h1 {
+ font-size: 1.2em;
+ margin: .6em 0;
+}
+
+.ui-button {
+ outline: 0;
+ margin: 0;
+ padding: .4em 1em .5em;
+ text-decoration: none;
+ cursor:pointer;
+ position: relative;
+ text-align: center;
+}
+
+.ui-dialog .ui-state-highlight,
+.ui-dialog .ui-state-error {
+ padding: .3em;
+}
+
+.pick_multi input,
+.quant_radio input {
+ display: inline;
+ width: auto !important;
+}
+
+/* NEWS FEED FEEDS */
+.news_feed {
+ border: 10px solid #e5ecf9;
+ border-top: 1px solid #3366cc;
+ float:left;
+}
+
+.news_feed .inner{
+ padding:0 20px;
+}
+
+.news_feed h2 {
+ margin-top: 0.1em;
+ background-color: #e5ecf9;
+}
+
+.news_feed h2 a {
+ text-decoration: none;
+ color: black;
+}
+
+.news_feed h2 a:visited {
+ text-decoration: none;
+ color: black;
+}
+
+.news_feed .entry {
+ margin:1em 0.3em;
+}
+
+.news_feed .title {
+ font-size: medium;
+}
+
+.news_feed .time {
+ color: gray;
+ margin-bottom: 0.5em;
+}
+
+.news_feed .snippet {
+ background-color: white;
+}
+
+a#feed_icon img{
+ margin:-1px 0;
+}
--- a/app/soc/content/js/map-090420.js Thu Jul 30 14:00:37 2009 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,312 +0,0 @@
-role_profile_gmap = new function(){
- // Create global variables
- var map;
- var marker;
- var geocoder;
-
- // The following strings can be customized to reflect ids in the page.
- // You can also add or remove fields used for GMap Geocoding in
- // the JSON address object
-
- var current_lat = 0;
- var current_lng = 0;
-
- // Two different levels for zoom: Starting one and an inner that
- // is used when showing the map if lat and lon page fields are set
- var world_zoom = 0;
- var country_zoom = 4;
- var state_zoom = 6;
- var city_zoom = 10;
- var address_zoom = 13;
-
- // Do not add a starting # as this JQuery selector seems
- // incompatible with GMap API
- var map_div = "role_profile_map";
-
- var field_lat = "#id_latitude";
- var field_lng = "#id_longitude";
- // Need to save old values to avoid unwanted updating
- // of lat and lot if marker dragged and blur another time an address field
- var address = {
- street: {
- id: "#id_res_street",
- old_value: ""
- },
- city: {
- id: "#id_res_city",
- old_value: ""
- },
- state: {
- id: "#id_res_state",
- old_value: ""
- },
- country: {
- id: "#id_res_country",
- old_value: ""
- },
- postalcode: {
- id: "#id_res_postalcode",
- old_value: ""
- }
- }
-
- // Save current address fields in the JSON Object
- function saveOldAddress() {
- for (var a in address) {
- address[a].old_value = $(address[a].id).val();
- }
- }
-
- // Return true if the user has edited address fields
- function isNewAddress() {
- for (var a in address) {
- if ($(address[a].id).val() != address[a].old_value) return true;
- }
- return false;
- }
-
- // Write saved lat and lng values to page fields
- function setLatLngFields() {
- $(field_lat).val(current_lat);
- $(field_lng).val(current_lng);
- }
-
- // Read lat and lng fields and store them
- function readLatLngFields() {
- current_lat = $(field_lat).val();
- current_lng = $(field_lng).val();
- }
-
- // This function reads address fields, merge them and uses
- // GMap API geocoding to find the first hit
- // Using geocoding http://code.google.com/intl/it-IT/apis/maps/documentation/services.html#Geocoding
- function calculateAddress() {
- // If the user has really edited address fields...
- if (isNewAddress()) {
- // Merge address fields
- var address_string = "";
- for (var a in address) {
- address_string+=$(address[a].id).val();
- if (a!=address.length-1) {address_string+=","};
- }
-
- // Ask GMap API for geocoding
- geocoder.getLatLng(
- address_string,
- function(point) {
- // If a point is found
- if (point) {
- // Save the current address in the JSON object
- saveOldAddress();
- // Set the new zoom, map center and marker coords
- var zoom_set = world_zoom;
- if ($(address.street.id).val()!="") zoom_set = address_zoom;
- else if ($(address.city.id).val()!="") zoom_set = city_zoom;
- else if ($(address.state.id).val()!="") zoom_set = state_zoom;
- else if ($(address.country.id).val()!="") zoom_set = country_zoom;
- map.setCenter(point, zoom_set);
- marker.setPoint(point);
- map.clearOverlays();
- map.addOverlay(marker);
- // Save point coords in local variables and then update
- // the page lat/lng fields
- current_lat = point.lat();
- current_lng = point.lng();
- setLatLngFields();
- }
- }
- );
- }
- }
-
- // Public function to load the map
- this.map_load = function() {
- // All can happen only if there is gmap compatible browser.
- // TODO: Fallback in case the browser is not compatible
- if (GBrowserIsCompatible()) {
- // Save the address fields. This is useful if the page is being edited
- // to not update blindly the lat/lng fields with GMap geocoding if
- // blurring an address field
- saveOldAddress();
- var starting_point;
- var zoom_selected = world_zoom;
- var show_marker = true;
-
- // Create the map and add small controls
- map = new GMap2(document.getElementById(map_div));
- map.addControl(new GSmallMapControl());
- map.addControl(new GMapTypeControl());
-
- // Instantiate a global geocoder for future use
- geocoder = new GClientGeocoder();
-
- // If lat and lng fields are not void (the page is being edited) then
- // update the starting coords, modify the zoom level and tells following
- // code to show the marker
- if ($(field_lat).val()!="" && $(field_lng).val()!="") {
- readLatLngFields();
- zoom_selected = address_zoom;
- show_marker = true;
- }
-
- // Set map center, marker coords and show it if this is an editing
- starting_point = new GLatLng(current_lat,current_lng);
- map.setCenter(starting_point, zoom_selected);
- marker = new GMarker(starting_point, {draggable:true});
- if (show_marker) map.addOverlay(marker);
-
- // Adds a new event listener to geocode the address when an address
- // field is blurred
- for (var a in address) {
- $(address[a].id).blur(calculateAddress);
- }
-
- // Adds a new event listener: if the marker has been dragged around...
- GEvent.addListener(marker, "dragend", function() {
- // Update internal variables with current marker coords...
- current_lat = marker.getPoint().lat();
- current_lng = marker.getPoint().lng();
- // ...and set page fields accordingly
- setLatLngFields();
- });
- }
- }
-};
-
-org_home_gmap = new function(){
- // Global variables
- var map;
-
- // HTML div tag where map needs to be inserted
- var map_div = "org_home_map";
-
- // Setup required icons
- var base_icon = new GIcon();
- base_icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
- base_icon.iconSize = new GSize(20, 34);
- base_icon.shadowSize = new GSize(37, 34);
- base_icon.iconAnchor = new GPoint(9, 34);
- base_icon.infoWindowAnchor = new GPoint(9, 2);
- base_icon.infoShadowAnchor = new GPoint(18, 25);
- var student_icon = new GIcon(base_icon);
- student_icon.image = "http://www.google.com/mapfiles/marker.png";
- var mentor_icon = new GIcon(base_icon);
- mentor_icon.image = "/soc/content/images/mentor-marker.png";
-
- // Map load function
- this.map_load = function(map_data) {
-
- if (GBrowserIsCompatible()) {
- // Create the map and add small controls
- map = new GMap2(document.getElementById(map_div));
- map.addControl(new GLargeMapControl());
- map.addControl(new GMapTypeControl());
-
- // Set map center and initial zoom level
- map.setCenter(new GLatLng(0, 0), 1);
-
- var mentors = {};
- var students = {};
- var projects = {};
- var polylines = [];
-
- jQuery.each(map_data.people, function(key, person) {
- if (person.type === "student") {
- students[key] = {
- "name": person.name,
- "lat": person.lat,
- "long": person.long,
- "projects": person.projects
- }
- }
- if (person.type === "mentor") {
- mentors[key] = {
- "name": person.name,
- "lat": person.lat,
- "long": person.long,
- "projects": person.projects
- };
- }
- });
-
- // Iterate over projects to draw polylines
- jQuery.each(map_data.projects, function (key, project) {
- var current_student = students[project.student_key];
- var current_mentor = mentors[project.mentor_key];
- if (current_student !== undefined &&
- current_mentor !== undefined &&
- current_student.lat !== null &&
- current_student.long !== null &&
- current_mentor.lat !== null &&
- current_mentor.long !== null) {
- polylines.push([[current_student.lat,current_student.long],[current_mentor.lat,current_mentor.long]]);
- }
- });
-
- // Iterate over students
- jQuery.each(students, function(key, person) {
- var html = "";
- var marker = null;
-
- if (person.lat!==null && person.long!==null) {
- point = new GLatLng(person.lat,
- person.long);
-
- marker = new GMarker(point, student_icon);
- html = "<strong>" + person.name + "</strong><br />";
- html += "<span style='font-style:italic;'>Student</span><br />";
- html += "<div style='height:100px;width:300px;overflow:auto;font-size:70%'>";
- // iterate through projects
- jQuery.each(person.projects, function () {
- var current_project = map_data.projects[this];
- html += "<a href='"+ current_project.redirect + "'>" + current_project.title + "</a><br />";
- html += "Mentor: " + current_project.mentor_name + "<br />";
- });
- html+= "</div>";
- GEvent.addListener(marker, "click", function() {
- marker.openInfoWindowHtml(html);
- });
-
- map.addOverlay(marker);
- }
- });
-
- // Iterate over mentors
- jQuery.each(mentors, function(key, person) {
- var html = "";
- var marker = null;
-
- if (person.lat!==null && person.long!==null) {
- point = new GLatLng(person.lat,
- person.long);
-
- marker = new GMarker(point, mentor_icon);
- html = "<strong>" + person.name + "</strong><br />";
- html += "<span style='font-style:italic;'>Student</span><br />";
- html += "<div style='height:100px;width:300px;overflow:auto;font-size:70%'>";
- // iterate through projects
- jQuery.each(person.projects, function () {
- var current_project = map_data.projects[this];
- html += "<a href='"+ current_project.redirect + "'>" + current_project.title + "</a><br />";
- html += "Student: " + current_project.student_name + "<br />";
- });
- html+= "</div>";
-
- GEvent.addListener(marker, "click", function() {
- marker.openInfoWindowHtml(html);
- });
-
- map.addOverlay(marker);
- }
- });
-
- // Draw all polylines
- jQuery.each(polylines, function() {
- var from = new GLatLng(this[0][0],this[0][1]);
- var to = new GLatLng(this[1][0],this[1][1]);
- var polyline = new GPolyline([from, to], "#ff0000", 3);
- map.addOverlay(polyline);
- });
- }
- }
-};
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/app/soc/content/js/map-090730.js Thu Jul 30 14:02:23 2009 +0200
@@ -0,0 +1,312 @@
+role_profile_gmap = new function(){
+ // Create global variables
+ var map;
+ var marker;
+ var geocoder;
+
+ // The following strings can be customized to reflect ids in the page.
+ // You can also add or remove fields used for GMap Geocoding in
+ // the JSON address object
+
+ var current_lat = 0;
+ var current_lng = 0;
+
+ // Two different levels for zoom: Starting one and an inner that
+ // is used when showing the map if lat and lon page fields are set
+ var world_zoom = 0;
+ var country_zoom = 4;
+ var state_zoom = 6;
+ var city_zoom = 10;
+ var address_zoom = 13;
+
+ // Do not add a starting # as this JQuery selector seems
+ // incompatible with GMap API
+ var map_div = "role_profile_map";
+
+ var field_lat = "#id_latitude";
+ var field_lng = "#id_longitude";
+ // Need to save old values to avoid unwanted updating
+ // of lat and lot if marker dragged and blur another time an address field
+ var address = {
+ street: {
+ id: "#id_res_street",
+ old_value: ""
+ },
+ city: {
+ id: "#id_res_city",
+ old_value: ""
+ },
+ state: {
+ id: "#id_res_state",
+ old_value: ""
+ },
+ country: {
+ id: "#id_res_country",
+ old_value: ""
+ },
+ postalcode: {
+ id: "#id_res_postalcode",
+ old_value: ""
+ }
+ }
+
+ // Save current address fields in the JSON Object
+ function saveOldAddress() {
+ for (var a in address) {
+ address[a].old_value = $(address[a].id).val();
+ }
+ }
+
+ // Return true if the user has edited address fields
+ function isNewAddress() {
+ for (var a in address) {
+ if ($(address[a].id).val() != address[a].old_value) return true;
+ }
+ return false;
+ }
+
+ // Write saved lat and lng values to page fields
+ function setLatLngFields() {
+ $(field_lat).val(current_lat);
+ $(field_lng).val(current_lng);
+ }
+
+ // Read lat and lng fields and store them
+ function readLatLngFields() {
+ current_lat = $(field_lat).val();
+ current_lng = $(field_lng).val();
+ }
+
+ // This function reads address fields, merge them and uses
+ // GMap API geocoding to find the first hit
+ // Using geocoding http://code.google.com/intl/it-IT/apis/maps/documentation/services.html#Geocoding
+ function calculateAddress() {
+ // If the user has really edited address fields...
+ if (isNewAddress()) {
+ // Merge address fields
+ var address_string = "";
+ for (var a in address) {
+ address_string+=$(address[a].id).val();
+ if (a!=address.length-1) {address_string+=","};
+ }
+
+ // Ask GMap API for geocoding
+ geocoder.getLatLng(
+ address_string,
+ function(point) {
+ // If a point is found
+ if (point) {
+ // Save the current address in the JSON object
+ saveOldAddress();
+ // Set the new zoom, map center and marker coords
+ var zoom_set = world_zoom;
+ if ($(address.street.id).val()!="") zoom_set = address_zoom;
+ else if ($(address.city.id).val()!="") zoom_set = city_zoom;
+ else if ($(address.state.id).val()!="") zoom_set = state_zoom;
+ else if ($(address.country.id).val()!="") zoom_set = country_zoom;
+ map.setCenter(point, zoom_set);
+ marker.setPoint(point);
+ map.clearOverlays();
+ map.addOverlay(marker);
+ // Save point coords in local variables and then update
+ // the page lat/lng fields
+ current_lat = point.lat();
+ current_lng = point.lng();
+ setLatLngFields();
+ }
+ }
+ );
+ }
+ }
+
+ // Public function to load the map
+ this.map_load = function() {
+ // All can happen only if there is gmap compatible browser.
+ // TODO: Fallback in case the browser is not compatible
+ if (GBrowserIsCompatible()) {
+ // Save the address fields. This is useful if the page is being edited
+ // to not update blindly the lat/lng fields with GMap geocoding if
+ // blurring an address field
+ saveOldAddress();
+ var starting_point;
+ var zoom_selected = world_zoom;
+ var show_marker = true;
+
+ // Create the map and add small controls
+ map = new GMap2(document.getElementById(map_div));
+ map.addControl(new GSmallMapControl());
+ map.addControl(new GMapTypeControl());
+
+ // Instantiate a global geocoder for future use
+ geocoder = new GClientGeocoder();
+
+ // If lat and lng fields are not void (the page is being edited) then
+ // update the starting coords, modify the zoom level and tells following
+ // code to show the marker
+ if ($(field_lat).val()!="" && $(field_lng).val()!="") {
+ readLatLngFields();
+ zoom_selected = address_zoom;
+ show_marker = true;
+ }
+
+ // Set map center, marker coords and show it if this is an editing
+ starting_point = new GLatLng(current_lat,current_lng);
+ map.setCenter(starting_point, zoom_selected);
+ marker = new GMarker(starting_point, {draggable:true});
+ if (show_marker) map.addOverlay(marker);
+
+ // Adds a new event listener to geocode the address when an address
+ // field is blurred
+ for (var a in address) {
+ $(address[a].id).blur(calculateAddress);
+ }
+
+ // Adds a new event listener: if the marker has been dragged around...
+ GEvent.addListener(marker, "dragend", function() {
+ // Update internal variables with current marker coords...
+ current_lat = marker.getPoint().lat();
+ current_lng = marker.getPoint().lng();
+ // ...and set page fields accordingly
+ setLatLngFields();
+ });
+ }
+ }
+};
+
+org_home_gmap = new function(){
+ // Global variables
+ var map;
+
+ // HTML div tag where map needs to be inserted
+ var map_div = "org_home_map";
+
+ // Setup required icons
+ var base_icon = new GIcon();
+ base_icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
+ base_icon.iconSize = new GSize(20, 34);
+ base_icon.shadowSize = new GSize(37, 34);
+ base_icon.iconAnchor = new GPoint(9, 34);
+ base_icon.infoWindowAnchor = new GPoint(9, 2);
+ base_icon.infoShadowAnchor = new GPoint(18, 25);
+ var student_icon = new GIcon(base_icon);
+ student_icon.image = "http://www.google.com/mapfiles/marker.png";
+ var mentor_icon = new GIcon(base_icon);
+ mentor_icon.image = "/soc/content/images/mentor-marker.png";
+
+ // Map load function
+ this.map_load = function(map_data) {
+
+ if (GBrowserIsCompatible()) {
+ // Create the map and add small controls
+ map = new GMap2(document.getElementById(map_div));
+ map.addControl(new GLargeMapControl());
+ map.addControl(new GMapTypeControl());
+
+ // Set map center and initial zoom level
+ map.setCenter(new GLatLng(0, 0), 1);
+
+ var mentors = {};
+ var students = {};
+ var projects = {};
+ var polylines = [];
+
+ jQuery.each(map_data.people, function(key, person) {
+ if (person.type === "student") {
+ students[key] = {
+ "name": person.name,
+ "lat": person.lat,
+ "long": person.long,
+ "projects": person.projects
+ }
+ }
+ if (person.type === "mentor") {
+ mentors[key] = {
+ "name": person.name,
+ "lat": person.lat,
+ "long": person.long,
+ "projects": person.projects
+ };
+ }
+ });
+
+ // Iterate over projects to draw polylines
+ jQuery.each(map_data.projects, function (key, project) {
+ var current_student = students[project.student_key];
+ var current_mentor = mentors[project.mentor_key];
+ if (current_student !== undefined &&
+ current_mentor !== undefined &&
+ current_student.lat !== null &&
+ current_student.long !== null &&
+ current_mentor.lat !== null &&
+ current_mentor.long !== null) {
+ polylines.push([[current_student.lat,current_student.long],[current_mentor.lat,current_mentor.long]]);
+ }
+ });
+
+ // Iterate over students
+ jQuery.each(students, function(key, person) {
+ var html = "";
+ var marker = null;
+
+ if (person.lat!==null && person.long!==null) {
+ point = new GLatLng(person.lat,
+ person.long);
+
+ marker = new GMarker(point, student_icon);
+ html = "<strong>" + person.name + "</strong><br />";
+ html += "<span style='font-style:italic;'>Student</span><br />";
+ html += "<div style='height:100px;width:300px;overflow:auto;font-size:70%'>";
+ // iterate through projects
+ jQuery.each(person.projects, function () {
+ var current_project = map_data.projects[this];
+ html += "<a href='"+ current_project.redirect + "'>" + current_project.title + "</a><br />";
+ html += "Mentor: " + current_project.mentor_name + "<br />";
+ });
+ html+= "</div>";
+ GEvent.addListener(marker, "click", function() {
+ marker.openInfoWindowHtml(html);
+ });
+
+ map.addOverlay(marker);
+ }
+ });
+
+ // Iterate over mentors
+ jQuery.each(mentors, function(key, person) {
+ var html = "";
+ var marker = null;
+
+ if (person.lat!==null && person.long!==null) {
+ point = new GLatLng(person.lat,
+ person.long);
+
+ marker = new GMarker(point, mentor_icon);
+ html = "<strong>" + person.name + "</strong><br />";
+ html += "<span style='font-style:italic;'>Student</span><br />";
+ html += "<div style='height:100px;width:300px;overflow:auto;font-size:70%'>";
+ // iterate through projects
+ jQuery.each(person.projects, function () {
+ var current_project = map_data.projects[this];
+ html += "<a href='"+ current_project.redirect + "'>" + current_project.title + "</a><br />";
+ html += "Student: " + current_project.student_name + "<br />";
+ });
+ html+= "</div>";
+
+ GEvent.addListener(marker, "click", function() {
+ marker.openInfoWindowHtml(html);
+ });
+
+ map.addOverlay(marker);
+ }
+ });
+
+ // Draw all polylines
+ jQuery.each(polylines, function() {
+ var from = new GLatLng(this[0][0],this[0][1]);
+ var to = new GLatLng(this[1][0],this[1][1]);
+ var polyline = new GPolyline([from, to], "#ff0000", 3);
+ map.addOverlay(polyline);
+ });
+ }
+ }
+};
--- a/app/soc/templates/soc/base.html Thu Jul 30 14:00:37 2009 +0200
+++ b/app/soc/templates/soc/base.html Thu Jul 30 14:02:23 2009 +0200
@@ -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-090708.css" type="text/css"/>
+ <link rel="stylesheet" href="/soc/content/css/soc-090730.css" type="text/css"/>
<!--[if IE]>
<link rel="stylesheet" href="/soc/content/css/soc-090708-ie.css" type="text/css"/>
<![endif]-->
--- a/app/soc/templates/soc/organization/home.html Thu Jul 30 14:00:37 2009 +0200
+++ b/app/soc/templates/soc/organization/home.html Thu Jul 30 14:02:23 2009 +0200
@@ -17,7 +17,7 @@
{{ block.super }}
{% if gmaps_api_key %}
<script src="http://maps.google.com/maps?file=api&v=2&key={{ gmaps_api_key }}" type="text/javascript"></script>
- <script type="text/javascript" src="/soc/content/js/map-090420.js"></script>
+ <script type="text/javascript" src="/soc/content/js/map-090730.js"></script>
{% endif %}
{% endblock %}
--- a/app/soc/templates/soc/role/edit.html Thu Jul 30 14:00:37 2009 +0200
+++ b/app/soc/templates/soc/role/edit.html Thu Jul 30 14:02:23 2009 +0200
@@ -18,7 +18,7 @@
{{ block.super }}
{% if gmaps_api_key %}
<script src="http://maps.google.com/maps?file=api&v=2&key={{ gmaps_api_key }}" type="text/javascript"></script>
- <script type="text/javascript" src="/soc/content/js/map-090420.js"></script>
+ <script type="text/javascript" src="/soc/content/js/map-090730.js"></script>
{% endif %}
{% endblock %}