[ckan-changes] commit/ckan: 3 new changesets
Bitbucket
commits-noreply at bitbucket.org
Wed Oct 26 11:00:05 UTC 2011
3 new commits in ckan:
https://bitbucket.org/okfn/ckan/changeset/7c017d8f5133/
changeset: 7c017d8f5133
branch: feature-1380-fix-css
user: zephod
date: 2011-10-26 12:45:44
summary: [css][m]: Fixed up the user list template and linked it on the main page.
affected #: 3 files
diff -r 4c88433797b6e1997fd91d9833e60f0aeb937c6e -r 7c017d8f5133f2046b669594926fefcb61faad40 ckan/public/css/style.css
--- a/ckan/public/css/style.css
+++ b/ckan/public/css/style.css
@@ -280,6 +280,7 @@
padding-left: 0px;
}
#sidebar .widget-list li.widget-container {
+ padding-bottom: 1em;
border-bottom: 1px solid #e0e0e0;
margin-bottom: 1em;
}
@@ -549,6 +550,12 @@
ul.userlist .badge {
color: #fc0;
}
+.user-search input[type=text],
+.user-search input[type=password] {
+ width: 70%;
+ margin-top: 5px;
+}
+
/* ================== */
diff -r 4c88433797b6e1997fd91d9833e60f0aeb937c6e -r 7c017d8f5133f2046b669594926fefcb61faad40 ckan/templates/layout_base.html
--- a/ckan/templates/layout_base.html
+++ b/ckan/templates/layout_base.html
@@ -147,6 +147,11 @@
<div class="textwidget"><ul><li>
+ <a href="${url(controller='user', action='index')}">
+ Users
+ </a>
+ </li>
+ <li><a href="${url(controller='tag', action='index')}">
Tags
</a>
diff -r 4c88433797b6e1997fd91d9833e60f0aeb937c6e -r 7c017d8f5133f2046b669594926fefcb61faad40 ckan/templates/user/list.html
--- a/ckan/templates/user/list.html
+++ b/ckan/templates/user/list.html
@@ -9,26 +9,24 @@
<py:match path="primarysidebar"><li class="widget-container widget_text" py:if="not c.hide_welcome_message">
- <form id="user-search" action="" method="GET">
+ <form id="user-search" class="user-search" action="" method="GET"><input type="text" id="q" name="q" value="${c.q}" />
- <input type="submit" name="" value="Search »" />
+ <input type="submit" class="pretty-button small-button" name="" value="Search »" /></form>
- <p i18n:msg="item_count">
+ <p py:if="c.q" i18n:msg="item_count"><strong>${c.page.item_count}</strong> users found.
</p></li>
-
-
</py:match><py:match path="minornavigation"><ul class="tabbed">
- <li>
+ <li py:attrs="{'class':'current-tab'} if c.order_by=='name' else {}">
+ <a href="?q=${c.q}&order_by=name" rel="nofollow">Sort by name</a>
+ </li>
+ <li py:attrs="{'class':'current-tab'} if c.order_by=='edits' else {}"><a href="?q=${c.q}&order_by=edits" rel="nofollow">Sort by edits</a></li>
- <li>
- <a href="?q=${c.q}&order_by=name" rel="nofollow">Sort by name</a>
- </li></ul></py:match>
https://bitbucket.org/okfn/ckan/changeset/fc4fa7f93676/
changeset: fc4fa7f93676
branch: feature-1380-fix-css
user: zephod
date: 2011-10-26 12:50:01
summary: [close-branch]:
affected #: 0 files
https://bitbucket.org/okfn/ckan/changeset/f600e0d37f6c/
changeset: f600e0d37f6c
user: zephod
date: 2011-10-26 12:55:18
summary: [merge,from-branch]: Pulled in CSS fixes.
affected #: 22 files
diff -r 9f02da7ab51c65b9b0d549177243cf88a33a872f -r f600e0d37f6cbe3963b0ad610c08bd868f1d1f62 ckan/config/deployment.ini_tmpl
--- a/ckan/config/deployment.ini_tmpl
+++ b/ckan/config/deployment.ini_tmpl
@@ -152,6 +152,11 @@
## Enable if the API is at a different domain
# ckan.api_url = http://www.ckan.net
+## html content to be inserted just before </head> tag (e.g. extra stylesheet)
+## NB: can use html e.g. <strong>blah</strong>
+## NB: can have multiline strings just indent following lines
+# ckan.template_head_end = <link rel="stylesheet" href="http://mysite.org/css/custom.css" type="text/css">
+
## html content to be inserted just before </body> tag (e.g. google analytics code)
## NB: can use html e.g. <strong>blah</strong>
## NB: can have multiline strings just indent following lines
diff -r 9f02da7ab51c65b9b0d549177243cf88a33a872f -r f600e0d37f6cbe3963b0ad610c08bd868f1d1f62 ckan/lib/app_globals.py
--- a/ckan/lib/app_globals.py
+++ b/ckan/lib/app_globals.py
@@ -29,6 +29,7 @@
# has been setup in load_environment():
self.site_id = config.get('ckan.site_id')
+ self.template_head_end = config.get('ckan.template_head_end', '')
self.template_footer_end = config.get('ckan.template_footer_end', '')
# hide these extras fields on package read
diff -r 9f02da7ab51c65b9b0d549177243cf88a33a872f -r f600e0d37f6cbe3963b0ad610c08bd868f1d1f62 ckan/public/css/blueprint/screen.css
--- a/ckan/public/css/blueprint/screen.css
+++ b/ckan/public/css/blueprint/screen.css
@@ -93,15 +93,23 @@
textarea {width:390px;height:250px;padding:5px;}
form.inline {line-height:3;}
form.inline p {margin-bottom:0;}
-.error, .alert, .notice, .success, .info {padding:0.8em;margin-bottom:1em;border:2px solid #ddd;}
-.error, .alert {background:#fbe3e4;color:#8a1f11;border-color:#fbc2c4;}
-.notice {background:#fff6bf;color:#514721;border-color:#ffd324;}
-.success {background:#e6efc2;color:#264409;border-color:#c6d880;}
-.info {background:#d5edf8;color:#205791;border-color:#92cae4;}
-.error a, .alert a {color:#8a1f11;}
-.notice a {color:#514721;}
-.success a {color:#264409;}
-.info a {color:#205791;}
+.flash-messages .error,
+.flash-messages .alert,
+.flash-messages .notice,
+.flash-messages .success,
+.flash-messages .info {
+ padding:0.8em;margin-bottom:1em;border:2px solid #ddd;
+}
+.flash-messages .error,
+.flash-messages .alert {background:#fbe3e4;color:#8a1f11;border-color:#fbc2c4;}
+.flash-messages .notice {background:#fff6bf;color:#514721;border-color:#ffd324;}
+.flash-messages .success {background:#e6efc2;color:#264409;border-color:#c6d880;}
+.flash-messages .info {background:#d5edf8;color:#205791;border-color:#92cae4;}
+.flash-messages .error a,
+.flash-messages .alert a {color:#8a1f11; text-decoration: underline;}
+.flash-messages .notice a {color:#514721; text-decoration: underline;}
+.flash-messages .success a {color:#264409; text-decoration: underline;}
+.flash-messages .info a {color:#205791; text-decoration: underline;}
/* grid.css */
.container {width:950px;margin:0 auto;}
@@ -262,4 +270,4 @@
hr.space {background:#fff;color:#fff;visibility:hidden;}
.clearfix:after, .container:after {content:"\0020";display:block;height:0;clear:both;visibility:hidden;overflow:hidden;}
.clearfix, .container {display:block;}
-.clear {clear:both;}
\ No newline at end of file
+.clear {clear:both;}
diff -r 9f02da7ab51c65b9b0d549177243cf88a33a872f -r f600e0d37f6cbe3963b0ad610c08bd868f1d1f62 ckan/public/css/pretty_buttons.css
--- /dev/null
+++ b/ckan/public/css/pretty_buttons.css
@@ -0,0 +1,111 @@
+/* ================================== */
+/* = Twitter.Bootstrap Form Buttons = */
+/* ================================== */
+.pretty-button {
+ cursor: pointer;
+ display: inline-block;
+ background-color: #e6e6e6;
+ background-repeat: no-repeat;
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(0.25, #ffffff), to(#e6e6e6));
+ background-image: -webkit-linear-gradient(#ffffff, #ffffff 0.25, #e6e6e6);
+ background-image: -moz-linear-gradient(#ffffff, #ffffff 0.25, #e6e6e6);
+ background-image: -ms-linear-gradient(#ffffff, #ffffff 0.25, #e6e6e6);
+ background-image: -o-linear-gradient(#ffffff, #ffffff 0.25, #e6e6e6);
+ background-image: linear-gradient(#ffffff, #ffffff 0.25, #e6e6e6);
+ padding: 4px 14px;
+ text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+ color: #333;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-weight: normal;
+ font-size: 13px;
+ line-height: 18px;
+ border: 1px solid #ccc;
+ border-bottom-color: #bbb;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -webkit-transition: 0.1s linear all;
+ -moz-transition: 0.1s linear all;
+ transition: 0.1s linear all;
+}
+.pretty-button.depressed,
+.pretty-button:hover {
+ background-position: 0 -15px;
+ color: #333;
+ text-decoration: none;
+}
+.pretty-button.primary, .pretty-button.danger {
+ color: #fff;
+}
+.pretty-button.primary:hover, .pretty-button.danger:hover {
+ color: #fff;
+}
+.pretty-button.primary {
+ background-color: #0064cd;
+ background-repeat: repeat-x;
+ background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));
+ background-image: -moz-linear-gradient(#049cdb, #0064cd);
+ background-image: -ms-linear-gradient(#049cdb, #0064cd);
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));
+ background-image: -webkit-linear-gradient(#049cdb, #0064cd);
+ background-image: -o-linear-gradient(#049cdb, #0064cd);
+ background-image: linear-gradient(#049cdb, #0064cd);
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ border-color: #0064cd #0064cd #003f81;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+}
+.pretty-button.danger {
+ background-color: #9d261d;
+ background-repeat: repeat-x;
+ background-image: -khtml-gradient(linear, left top, left bottom, from(#d83a2e), to(#9d261d));
+ background-image: -moz-linear-gradient(#d83a2e, #9d261d);
+ background-image: -ms-linear-gradient(#d83a2e, #9d261d);
+ background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #d83a2e), color-stop(100%, #9d261d));
+ background-image: -webkit-linear-gradient(#d83a2e, #9d261d);
+ background-image: -o-linear-gradient(#d83a2e, #9d261d);
+ background-image: linear-gradient(#d83a2e, #9d261d);
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
+ border-color: #9d261d #9d261d #5c1611;
+ border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+}
+.pretty-button.large {
+ font-size: 16px;
+ line-height: 28px;
+ -webkit-border-radius: 6px;
+ -moz-border-radius: 6px;
+ border-radius: 6px;
+}
+.pretty-button.small-button {
+ padding-right: 9px;
+ padding-left: 9px;
+ font-size: 11px;
+}
+.pretty-button.disabled {
+ background-image: none;
+ filter: alpha(opacity=65);
+ -khtml-opacity: 0.65;
+ -moz-opacity: 0.65;
+ opacity: 0.65;
+ cursor: default;
+}
+.pretty-button:disabled {
+ background-image: none;
+ filter: alpha(opacity=65);
+ -khtml-opacity: 0.65;
+ -moz-opacity: 0.65;
+ opacity: 0.65;
+ cursor: default;
+}
+.pretty-button.depressed,
+.pretty-button:active {
+ -webkit-box-shadow: inset 0 3px 7px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.05);
+ -moz-box-shadow: inset 0 3px 7px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.05);
+ box-shadow: inset 0 3px 7px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.05);
+}
+button.pretty-button::-moz-focus-inner, input.pretty-button::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
diff -r 9f02da7ab51c65b9b0d549177243cf88a33a872f -r f600e0d37f6cbe3963b0ad610c08bd868f1d1f62 ckan/public/css/style.css
--- a/ckan/public/css/style.css
+++ b/ckan/public/css/style.css
@@ -1,4 +1,5 @@
@import url('/css/forms.css');
+ at import url('/css/pretty_buttons.css');
.header.outer {
background-color: #e2e2e2;
@@ -147,17 +148,67 @@
color: #183661;
}
+fieldset {
+ border: 0px;
+ border-bottom: 1px solid #e0e0e0;
+}
-/* Basic page elements */
+/* ====== */
+/* Tables */
+/* ====== */
+table th {
+ border: 1px solid #e0e0e0;
+ background-color: #e2e2e2;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f0f0f0), to(#e2e2e2));
+ background-image: -webkit-linear-gradient(top, #f0f0f0, #e2e2e2);
+ background-image: -moz-linear-gradient(top, #f0f0f0, #e2e2e2);
+ background-image: -ms-linear-gradient(top, #f0f0f0, #e2e2e2);
+ background-image: -o-linear-gradient(top, #f0f0f0, #e2e2e2);
+ background-image: linear-gradient(top, #f0f0f0, #e2e2e2);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f0f0f0', EndColorStr='#e2e2e2');
+}
+table caption {
+ caption-side: bottom;
+ color: #888;
+ font-size: 0.9em;
+ background-color: white;
+}
+tbody tr:nth-child(even) td, tbody tr.even td {
+ background-color: #FCF6CF;
+}
+tbody tr:nth-child(odd) td, tbody tr.odd td {
+ background-color: #FEFEF2;
+}
+tbody tr.table-empty td {
+ background: #f8f8f8;
+ border: 1px solid #eee;
+ font-style: italic;
+ color: #333;
+ font-size: 90%;
+}
+
+
+
+/* ==================== */
+/* Common page elements */
+/* ==================== */
+#content {
+ border-right: 1px solid #e0e0e0;
+}
.page_heading {
- margin-top: 1em;
- margin-bottom: 1em;
+ margin-top: 0.9em;
+ margin-bottom: 0.7em;
font-size: 2.2em;
font-weight: normal;
}
+
+/* =============== */
+/* MinorNavigation */
+/* =============== */
#minornavigation {
+ margin-bottom: 1em;
border: 1px solid #e0e0e0;
background-color: #e2e2e2;
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0f0f0), to(#e2e2e2));
@@ -173,23 +224,37 @@
border-radius: 5px;
-moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;
}
-
-#minornavigation ul.tabbed li.action {
- float: right;
+#minornavigation ul {
+ list-style: none;
+ padding: 4px;
+ margin: 0;
}
#minornavigation li {
- border: 1px solid transparent;
+ display: inline-block;
+ margin-right: 3px;
+ border: 2px solid transparent;
+ padding: 5px 11px 5px 9px
+}
+#minornavigation li.action {
+ float: right;
}
#minornavigation li.current-tab {
background: #000;
background-color: #fff;
border: 1px solid #777;
- border-bottom: 1px solid #ccc;
- border-right: 1px solid #ccc;
+ border-bottom: 0px solid #ccc;
+ border-right: 0px solid #ccc;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
-
+}
+#minornavigation li a {
+ text-decoration: none;
+ font-weight: bold;
+}
+#minornavigation li a img {
+ margin-bottom: -4px;
+ padding-right: 5px;
}
#minornavigation li.current-tab a,
#minornavigation li.current-tab a:hover,
@@ -197,18 +262,29 @@
color: #222;
}
-/* Side bar widgets */
-ul.widget-list {
+
+/* ======= */
+/* Sidebar */
+/* ======= */
+#sidebar {
+ margin-right: -10px;
+ padding-left: 9px;
+ overflow: hidden;
+}
+#sidebar h2,
+#sidebar h3 {
+ font-size: 1.3em;
+}
+#sidebar .widget-list {
list-style: none;
padding-left: 0px;
}
-
-ul.widget-list li.widget-container {
+#sidebar .widget-list li.widget-container {
+ padding-bottom: 1em;
border-bottom: 1px solid #e0e0e0;
margin-bottom: 1em;
}
-
-ul.widget-list li.widget-container.boxed {
+#sidebar .widget-list li.widget-container.boxed {
border-bottom: 0;
background-color: #FFF7C0;
padding: 15px;
@@ -218,854 +294,58 @@
border-radius: 15px;
}
-/* Notices */
-.notice a, .notice a:visited,
-.success a, .success a:visited {
- text-decoration: underline;
-}
-/* Hints */
-
-.hint {
- font-size: 0.8em;
- color: #888;
- margin-bottom: 0;
-}
-
-/* Tables */
-table th {
- border: 1px solid #e0e0e0;
- background-color: #e2e2e2;
- background-image: -webkit-gradient(linear, left top, left bottom, from(#f0f0f0), to(#e2e2e2));
- background-image: -webkit-linear-gradient(top, #f0f0f0, #e2e2e2);
- background-image: -moz-linear-gradient(top, #f0f0f0, #e2e2e2);
- background-image: -ms-linear-gradient(top, #f0f0f0, #e2e2e2);
- background-image: -o-linear-gradient(top, #f0f0f0, #e2e2e2);
- background-image: linear-gradient(top, #f0f0f0, #e2e2e2);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f0f0f0', EndColorStr='#e2e2e2');
-}
-
-table caption {
- caption-side: bottom;
- color: #888;
- font-size: 0.9em;
- background-color: white;
-}
-
-tbody tr:nth-child(even) td, tbody tr.even td {
- background-color: #FCF6CF;
-}
-tbody tr:nth-child(odd) td, tbody tr.odd td {
- background-color: #FEFEF2;
-}
-
-tbody tr.table-empty td {
- background: #f8f8f8;
- border: 1px solid #eee;
- font-style: italic;
- color: #333;
- font-size: 90%;
-}
-
-/* ============== */
-/* = Navigation = */
-/* ============== */
-
-#minornavigation {
- margin-bottom: 1em;
-}
-
-.nominor #minornavigation {
- display: none;
-}
-
-#minornavigation ul {
- list-style: none;
- padding: 1px;
- margin: 0;
-}
-
-#minornavigation ul li {
- display: inline-block;
- margin-right: 3px;
- padding: 5px 11px 5px 9px
-}
-
-#minornavigation ul li a {
- text-decoration: none;
- font-weight: bold;
-}
-
-#minornavigation ul li a img {
- margin-bottom: -4px;
- padding-right: 5px;
-}
-
-#sidebar {
- margin-right: -10px;
- padding-left: 9px;
- overflow: hidden;
-}
-
-#sidebar h2, #sidebar h3 {
- font-size: 1.3em;
-}
-
-#sidebar ul.property-list li ul {
- margin-left: -2em;
-}
-
-#content {
- border-right: 1px solid #e0e0e0;
-}
/* ============== */
/* = Pagination = */
/* ============== */
-
.pager {
width: 100%;
text-align: center;
margin: 0 0 1.2em 0;
clear: both;
}
-
.pager span, .pager a {
text-decoration: none;
margin: 0em;
border: none;
padding: 0.3em 0.1em;
}
-
.pager a:hover, .pager a:active {
color: #fff;
background-color: #c22;
}
-
.pager span.pager_dotdot {
color: #aaa;
}
-
.pager span.pager_curpage {
font-weight: bold;
border: 1px solid #ddd;
}
-/* ==========================
- * Facets
- */
-.facet-box {
-
-}
-
-#sidebar .facet-box h2 {
+/* ====== */
+/* Facets */
+/* ====== */
+.facet-box h2 {
color: #000;
font-size: 1.2em;
}
-
-.facet-options {
+.facet-box .facet-options {
margin-top: 0.5em;
}
-
-.facet-options li {
+.facet-box .facet-options li {
padding-top: 0.2em;
color: #000;
}
-.register-link {
- padding-top: 10px;
-}
-.dataset-search-filters {
- margin-top: 15px;
-}
-.search-field {
- display: inline-block;
- margin-right: 5px;
- margin-bottom: 10px;
- padding: 2px 2px 4px 3px;
- font-size: 14px;
- background-color: #FFF7C0;
- -moz-border-radius: 3px;
- -webkit-border-radius: 3px;
- border-radius: 3px;
- line-height: 16px;
- /*
- -moz-box-shadow: 1px 1px 3px #bbb;
- -webkit-box-shadow: 1px 1px 3px #bbb;
- box-shadow: 1px 1px 3px #bbb;
- */
-}
-
-.search-field img {
- margin-bottom: -3px;
-}
-
-.search-field-name::after {
- content: ":";
-}
-
-.search-field-value {
- font-weight: bold;
-}
-
-/* ================ */
-/* = Forms common = */
-/* ================ */
-
-fieldset {
- border: 0px;
- border-bottom: 1px solid #e0e0e0;
-}
-
-
-/* ============== */
-/* = Login Form = */
-/* ============== */
-
-form.simple-form label {
- display: inline-block;
- float: left;
- min-width: 40%;
- padding-top: 0.5em;
- padding-bottom: 1em;
-}
-
-form.simple-form fieldset input {
- border: 1px solid #E7E7E7;
- padding: 0.5em;
- width: 40%;
- margin-bottom: 1em
-}
-
-form.simple-form textarea {
- width: 99%;
-}
-
-.purge-button {
- border: none;
- background: none;
- background-color: #b33a3a;
- color: white;
- display: block;
- margin-bottom: 1em;
-}
-
-.purge-button:hover {
- border: none;
-}
-
-
-/* ===================== */
-/* = Dataset read view = */
-/* ===================== */
-
-.property-list {
- list-style: none;
- padding-left: 3em;
-}
-
-#sidebar .property-list li h3 {
- font-size: 1.1em;
- font-weight: bold;
- margin-bottom: 0.5em;
- margin-left: -2em;
-}
-
-#sidebar .property-list li {
- margin-bottom: 0.2em;
-}
-
-.dataset .api div {
- background:#f0f0f0;
- padding:10px;
-}
-
-.dataset .api h5 {
- font-weight:bold;
- margin-bottom:1em!important;
- font-size:1em;
-}
-
-.dataset .api code {
- background:#444;
- color:#fff;
- padding:3px 10px ;
- margin-bottom:1em;
- display:block;
-}
-.dataset .api code a {
- color:#fff;
-}
-
-/* ===================== */
-/* = User Listing = */
-/* ===================== */
-
-body.user-list #content {
-}
-
-ul.userlist, ul.userlist ul {
- list-style-type: none;
- margin: 0;
- padding: 0;
-}
-
-ul.userlist li.user {
- display: inline-block;
- width: 200px;
- margin-bottom: 15px;
-}
-
-ul.userlist li ul span.edits {
- color: #333;
- font-size: 1.1em;
- font-weight: bold;
- margin-left: 3px;
-}
-
-ul.userlist li.user .username {
-}
-
-#content ul.userlist .username img {
- margin-bottom: -3px;
-}
-
-ul.userlist .created {
- color: #888;
-}
-
-ul.userlist .badge {
- color: #fc0;
-}
-
-body.user-list .sort {
- float: right;
-}
-
-body.user-list .sort a {
- background: #eee;
- padding: 5px;
- border-bottom: 1px solid #ccc;
- border-right: 1px solid #ccc;
-}
-
-.gravatar {
- border: 1px solid #777;
- padding: 1px;
- width: 120px;
- height: 120px;
- margin: 0 auto 10px auto;
-}
-
-/* ===================== */
-/* = Stateful stuff = */
-/* ===================== */
-
-.state-deleted, .state-deleted a, .state-deleted * {
- color: rgba(0, 0, 0, 0.4);
-}
-
-.state-deleted {
- padding-left: 3px;
-}
-
-.state-deleted:hover * {
- color: rgba(0, 0, 0, 0.8);
-}
-
-.state-notice {
- text-transform: uppercase;
- font-size: 120%;
- background: #f4a83d;
- padding: 15px;
- text-align: center;
- color: #fff;
-}
-
-/* ================ */
-/* = Search boxes = */
-/* ================ */
-
-form.dataset-search {
- margin-bottom: 35px;
-}
-
-form.dataset-search input.search {
- width: 100%;
- font-size: 1.2em;
- margin: 0px;
-
- border: 1px solid #ccc;
- padding: 0.5em;
- font-weight: bold;
-
- -moz-border-radius: 5px;
- -webkit-border-radius: 5px;
- border-radius: 5px;
- -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;
-}
-
-.dataset-search input.button {
- display: inline-block;
- float: right;
- margin-top: 5px;
- margin-right: 10px !important;
- margin-bottom: 1px !important;
-}
-
-.dataset-search-filters {
- margin-top: 1em;
- margin-bottom: 1em;
- color: #888;
-}
-
-.dataset-search-filters label {
- padding-left: 1em;
-}
-
-/* =================== */
-/* = Dataset listing = */
-/* =================== */
-
-ul.datasets {
- padding-left: 0;
- margin: 0 0 1em 0;
-}
-
-.datasets .header {
- padding-top: 0.5em;
- font-weight: bold;
- font-size: 1.1em;
-}
-
-.datasets .extract {
- padding-top: 0.3em;
-}
-
-.datasets li {
- list-style: none;
- padding: 1em 0 0.2em 0.0em;
- border-bottom: 1px solid #ececec;
- overflow: hidden;
- /*white-space: nowrap;*/
-}
-
-.datasets li a {
- text-decoration: none;
-}
-
-.datasets li img {
- margin-bottom: -2px;
-}
-
-.search_meta {
- float:right;
-}
-
-ul.dataset_formats {
- float: right;
- padding: 0 0 3px 0;
- margin: 0;
- font-family: monospace;
-}
-
-ul.dataset_formats li {
- display: inline;
- margin: 0;
- padding: 0 5px 0 5px;
- border: none;
- font-weight: normal;
- font-size: 0.9em;
- color: #808080;
- background:#ececec;
-}
-
-.openness {
- clear:right;
- float:right;
- font-size:0.8em;
-}
-
-.openness img {
- vertical-align:top;
-}
-
-.openness li {
- margin:0;
- padding:0;
- border:none;
-}
-
-
-.signup {
- color: white;
- border-bottom: 0;
- background-color: #FFF7C0;
- padding: 15px;
- padding-top: 10px;
- -moz-border-radius: 15px;
- -webkit-border-radius: 15px;
- border-radius: 15px;
- padding-bottom: 10px;
-}
-
-.signup h2 {
- margin-top: 0;
- margin-bottom: 0;
- font-size: 1.2em;
-}
-
-.subscribe {
- float: right;
- margin-top: -6px;
- margin-bottom: -10px;
-}
-
-.subscribe input[type='text'] {
- border: 1px solid #ccc;
- padding: 4px;
- margin-right: 10px;
-}
-
-/* ===================== */
-/* = Edit Dataset Page = */
-/* ===================== */
-
-body.package.edit .edit-summary {
- display: none;
-}
-
-body.package.edit div#content {
- margin-right: 29px;
- margin-left: 0px;
- float: right;
- padding-right: 0;
- padding-left: 20px;
- border: none;
- border-left: 1px solid #eee;
-}
-body.package.edit div#sidebar {
- padding-left: 0px;
- float: left;
- margin-right: 0px;
-}
-body.package.edit ul.widget-list {
- margin-left: 1.5em;
- margin-right: 0;
-}
-ul.edit-form-navigation {
- list-style-type: none;
- padding-left: 0;
-}
-ul.edit-form-navigation li a {
- text-decoration: none;
- font-weight: bold;
- display: block;
- padding: 7px 0 7px 10px;
- margin-bottom: 7px;
- border: 1px transparent solid;
-}
-ul.edit-form-navigation li a.active,
-ul.edit-form-navigation li a:hover {
- border: 1px solid #e0e0e0;
- background-color: #e2e2e2;
- background-image: -webkit-gradient(linear, left top, left bottom, from(#f0f0f0), to(#e2e2e2));
- background-image: -webkit-linear-gradient(top, #f0f0f0, #e2e2e2);
- background-image: -moz-linear-gradient(top, #f0f0f0, #e2e2e2);
- background-image: -ms-linear-gradient(top, #f0f0f0, #e2e2e2);
- background-image: -o-linear-gradient(top, #f0f0f0, #e2e2e2);
- background-image: linear-gradient(top, #f0f0f0, #e2e2e2);
- filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f0f0f0', EndColorStr='#e2e2e2');
-
- border-right: none;
- -moz-border-radius-bottomleft: 5px;
- -webkit-border-bottom-left-radius: 5px;
- border-bottom-left-radius: 5px;
- -moz-border-radius-topleft: 5px;
- -webkit-border-top-left-radius: 5px;
- border-top-left-radius: 5px;
-
- -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;
-}
-
-div.markdown-editor {
- background: #EEE;
- border-radius: 5px 5px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border: 1px solid #CCC;
- padding: 0 5px 5px 10px;
- width: 32em;
-}
-div.markdown-editor .button-row {
- padding-right: 40px;
- text-align: center;
-}
-
-div.markdown-preview {
- background: white;
- border: 1px solid #CCC;
- padding: 5px;
- margin-bottom: 5px;
- overflow: auto;
-}
-
-textarea.markdown-input {
- margin-bottom: 5px;
- padding: 5px;
- display: block;
-}
-
-
-/* ====================== */
-/* = Add Resources Page = */
-/* ====================== */
-
-input#Resource--url {
- width: 60%;
-}
-
-button.done-editing {
- float: right;
-}
-
-div.resource-add {
- background: #eee;
- padding-top: 10px;
- padding-bottom: 5px;
- border: 1px solid #e0e0e0;
- border-left: none;
- border-right: none;
-}
-div.resource-add li h4 {
- display: inline;
- padding-right: 20px;
-}
-div.resource-add-subpane {
- margin-top: 10px;
-}
-div.resource-add .fileinfo {
- margin: 7px 0;
-}
-
-
-/* ==================== */
-/* = Add Dataset Page = */
-/* ==================== */
-
-/* do this here to avoid js flash when we hide in js */
-body.package.new form fieldset {
- display: none;
-}
-
-body.package.new form fieldset#basic-information {
- display: block;
-}
-
-body.package.new .edit-summary {
- display: none;
-}
-
-body.package.new dt.homepage-label,
-body.package.new dd.homepage-field,
-body.package.new dd.homepage-instructions
-{
- display: none;
-}
-body.package.new dt.tags-label,
-body.package.new dd.tags-field,
-body.package.new dd.tags-instructions
-{
- display: none;
-}
-body.package.new dt.description-label,
-body.package.new dd.description-field,
-body.package.new dd.description-instructions
-{
- display: none;
-}
-body.package.new dt.license-label,
-body.package.new dd.license-field,
-body.package.new dd.license-instructions
-{
- display: none;
-}
-
-body.package.new .instructions {
- font-size: 10px;
-}
-
-a.url-edit {
- font-weight: normal;
- margin-left: 10px;
-}
-dd.name-field {
- padding-top: 0.2em;
-}
-dd.name-field p {
- margin-bottom: 4px;
-}
-
-body.package.read #sidebar ul.tags,
-body.package.read #sidebar ul.groups {
- margin-bottom: 10px;
-}
-
-input.url-input {
- width: 250px;
-}
-
-
-.success .new-dataset {
- font-size: 150%;
-}
-.success .new-dataset a {
- font-weight: bold;
-}
-
-
-/* ================== */
-/* = Add Group Page = */
-/* ================== */
-
-body.group.new fieldset#extras,
-body.group.new fieldset#datasets {
- display: none;
-}
-body.group.new .description-label,
-body.group.new .description-field,
-body.group.new .state-label,
-body.group.new .state-field {
- display: none;
-}
-
-
-/* ============= */
-/* = Mini-Tabs = */
-/* ============= */
-ul.button-row {
- margin-bottom: 5px;
-}
-ul.button-row li {
- display: inline;
- margin-right: 10px;
-}
-
-
-
-/* ============================== */
-/* = Controller-specific tweaks = */
-/* ============================== */
-
-body.package.search #minornavigation {
- display: none;
-}
-body.package.search #menusearch {
- display: none;
-}
-
-body.index.home #minornavigation {
- display: none;
-}
-body.index.home #sidebar {
- display: none;
-}
-
-body.index.home .front-page .action-box h1 {
- padding-top: 0.6em;
- padding-bottom: 0.5em;
- font-size: 2.1em;
-}
-
-body.index.home .front-page .action-box {
- border-radius: 20px;
- background: #FFF7C0;
-}
-
-body.index.home .front-page .action-box-inner {
- margin: 20px;
- margin-bottom: 5px;
- min-height: 15em;
-}
-body.index.home .front-page .action-box-inner.collaborate {
- background:url(/img/collaborate.png) no-repeat right top;
-}
-
-body.index.home .front-page .action-box-inner.share {
- background:url(/img/share.png) no-repeat right top;
-}
-
-body.index.home .front-page .action-box-inner.find {
- background:url(/img/find.png) no-repeat right top;
-}
-
-body.index.home .front-page .action-box-inner a {
- font-weight: bold;
-}
-
-body.index.home .front-page .action-box-inner input {
- font-family: 'Ubuntu';
- border-radius: 10px;
- background-color: #fff;
- border: 0px;
- font-size: 1.3em;
- width: 90%;
- border: 1px solid #999;
- color: #666;
- padding: 0.5em;
-}
-
-body.index.home .front-page .action-box-inner .create-button {
- display: block;
- float: right;
- font-weight: normal;
- font-family: 'Ubuntu';
- margin-top: 1.5em;
- border-radius: 10px;
- background-color: #B22;
- border: 0px;
- font-size: 1.3em;
- color: #fff;
- padding: 0.5em;
-}
-
-body.index.home .front-page .action-box-inner .create-button:hover {
- background-color: #822;
-}
-
-body.index.home .front-page .action-box-inner ul {
-margin-top: 1em;
-margin-bottom: 0;
-}
-
-body.index.home .front-page .whoelse {
- margin-top: 1em;
-}
-
-body.index.home .front-page .group {
- overflow: hidden;
-}
-
-body.index.home .front-page .group h3 {
- margin-bottom: 0.5em;
-}
-
-body.index.home .front-page .group p {
- margin-bottom: 0em;
- min-height: 6em;
-}
-
-body.index.home .front-page .group strong {
- display: block;
- margin-bottom: 1.5em;
-}
-
-
+/* ======================= */
+/* = Generic Form Footer = */
+/* ======================= */
div.form-submit {
background: #eee;
padding: 20px;
@@ -1083,154 +363,384 @@
clear: both;
}
-/* ==================== */
-/* = Multi-form pages = */
-/* ==================== */
-body.admin form#form-purge-packages,
-body.admin form#form-purge-revisions {
- margin-bottom: 30px;
- text-align: right;
+
+
+/* ============= */
+/* = Home Page = */
+/* ============= */
+body.index.home #minornavigation {
+ display: none;
}
-body.admin .actions button,
-body.admin .actions input {
- margin: 0;
+body.index.home #sidebar {
+ display: none;
}
-body.authz form {
- margin-bottom: 30px;
+body.index.home .front-page .action-box h1 {
+ padding-top: 0.6em;
+ padding-bottom: 0.5em;
+ font-size: 2.1em;
}
-body.authz form button {
- width: 120px;
+body.index.home .front-page .action-box {
+ border-radius: 20px;
+ background: #FFF7C0;
+}
+body.index.home .front-page .action-box-inner {
+ margin: 20px;
+ margin-bottom: 5px;
+ min-height: 15em;
+}
+body.index.home .front-page .action-box-inner.collaborate {
+ background:url(/img/collaborate.png) no-repeat right top;
+}
+body.index.home .front-page .action-box-inner.share {
+ background:url(/img/share.png) no-repeat right top;
+}
+body.index.home .front-page .action-box-inner.find {
+ background:url(/img/find.png) no-repeat right top;
+}
+body.index.home .front-page .action-box-inner a {
+ font-weight: bold;
+}
+body.index.home .front-page .action-box-inner input {
+ font-family: 'Ubuntu';
+ border-radius: 10px;
+ background-color: #fff;
+ font-size: 1.3em;
+ width: 90%;
+ border: 1px solid #999;
+ color: #666;
+ padding: 0.5em;
+ display: inline-block;
+ margin-right: 5px;
+ margin-bottom: 10px;
+ line-height: 16px;
+}
+body.index.home .front-page .action-box-inner .create-button {
+ display: block;
float: right;
+ font-weight: normal;
+ font-family: 'Ubuntu';
+ margin-top: 1.5em;
+ border-radius: 10px;
+ background-color: #B22;
+ border: 0px;
+ font-size: 1.3em;
+ color: #fff;
+ padding: 0.5em;
+}
+body.index.home .front-page .action-box-inner .create-button:hover {
+ background-color: #822;
+}
+body.index.home .front-page .action-box-inner ul {
+ margin-top: 1em;
+ margin-bottom: 0;
+}
+body.index.home .front-page .whoelse {
+ margin-top: 1em;
+}
+body.index.home .front-page .group {
+ overflow: hidden;
+}
+body.index.home .front-page .group h3 {
+ margin-bottom: 0.5em;
+}
+body.index.home .front-page .group p {
+ margin-bottom: 0em;
+ min-height: 6em;
+}
+body.index.home .front-page .group strong {
+ display: block;
+ margin-bottom: 1.5em;
}
+/* ======================== */
+/* Search Page: Filter List */
+/* ======================== */
+.filter-list {
+ display: inline-block;
+ margin-right: 5px;
+ margin-bottom: 10px;
+ padding: 2px 2px 4px 3px;
+ font-size: 14px;
+ background-color: #FFF7C0;
+ -moz-border-radius: 3px;
+ -webkit-border-radius: 3px;
+ border-radius: 3px;
+ line-height: 16px;
+}
+.filter-list img {
+ margin-bottom: -3px;
+}
+.filter-list .name::after {
+ content: ":";
+}
+.filter-list .value {
+ font-weight: bold;
+}
+
+
+/* ============== */
+/* = Login Form = */
+/* ============== */
+form.simple-form label {
+ display: inline-block;
+ float: left;
+ min-width: 40%;
+ padding-top: 0.5em;
+ padding-bottom: 1em;
+}
+form.simple-form input[type=text],
+form.simple-form input[type=password] {
+ border: 1px solid #E7E7E7;
+ padding: 0.5em;
+ width: 40%;
+ margin-bottom: 1em
+}
+
+
+
/* ================================== */
-/* = Twitter.Bootstrap Form Buttons = */
+/* = Dataset/Group View: Sidebar List */
/* ================================== */
-.pretty-button {
- cursor: pointer;
+.property-list {
+ list-style: none;
+ padding-left: 3em;
+}
+.property-list li {
+ margin-bottom: 0.2em;
+}
+.property-list li ul {
+ margin-left: -2em;
+}
+.property-list li h3 {
+ font-size: 1.1em;
+ font-weight: bold;
+ margin-bottom: 0.5em;
+ margin-left: -2em;
+}
+
+
+
+/* ============== */
+/* = User Index = */
+/* ============== */
+ul.userlist,
+ul.userlist ul {
+ list-style-type: none;
+ margin: 0;
+ padding: 0;
+}
+ul.userlist li.user {
display: inline-block;
- background-color: #e6e6e6;
- background-repeat: no-repeat;
- background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), color-stop(0.25, #ffffff), to(#e6e6e6));
- background-image: -webkit-linear-gradient(#ffffff, #ffffff 0.25, #e6e6e6);
- background-image: -moz-linear-gradient(#ffffff, #ffffff 0.25, #e6e6e6);
- background-image: -ms-linear-gradient(#ffffff, #ffffff 0.25, #e6e6e6);
- background-image: -o-linear-gradient(#ffffff, #ffffff 0.25, #e6e6e6);
- background-image: linear-gradient(#ffffff, #ffffff 0.25, #e6e6e6);
- padding: 4px 14px;
- text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
+ width: 200px;
+ margin-bottom: 15px;
+}
+ul.userlist li ul span.edits {
color: #333;
- font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
- font-weight: normal;
- font-size: 13px;
- line-height: 18px;
- border: 1px solid #ccc;
- border-bottom-color: #bbb;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- border-radius: 4px;
- -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
- -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
- -webkit-transition: 0.1s linear all;
- -moz-transition: 0.1s linear all;
- transition: 0.1s linear all;
+ font-size: 1.1em;
+ font-weight: bold;
+ margin-left: 3px;
}
-.pretty-button.depressed,
-.pretty-button:hover {
- background-position: 0 -15px;
- color: #333;
- text-decoration: none;
+ul.userlist .username img {
+ margin-bottom: -3px;
}
-.pretty-button.primary, .pretty-button.danger {
+ul.userlist .created {
+ color: #888;
+}
+ul.userlist .badge {
+ color: #fc0;
+}
+.user-search input[type=text],
+.user-search input[type=password] {
+ width: 70%;
+ margin-top: 5px;
+}
+
+
+
+/* ================== */
+/* = User Read page = */
+/* ================== */
+.gravatar {
+ border: 1px solid #777;
+ padding: 1px;
+ width: 120px;
+ height: 120px;
+ margin: 0 auto 10px auto;
+}
+
+
+/* ========================= */
+/* = Dataset Snapshot View = */
+/* ========================= */
+.state-deleted, .state-deleted a, .state-deleted * {
+ color: rgba(0, 0, 0, 0.4);
+}
+.state-deleted {
+ padding-left: 3px;
+}
+.state-deleted:hover * {
+ color: rgba(0, 0, 0, 0.8);
+}
+.state-notice {
+ text-transform: uppercase;
+ font-size: 120%;
+ background: #aaa;
+ padding: 15px;
+ text-align: center;
color: #fff;
}
-.pretty-button.primary:hover, .pretty-button.danger:hover {
- color: #fff;
+
+
+/* =============== */
+/* = Search Page = */
+/* =============== */
+body.package.search #minornavigation {
+ display: none;
}
-.pretty-button.primary {
- background-color: #0064cd;
- background-repeat: repeat-x;
- background-image: -khtml-gradient(linear, left top, left bottom, from(#049cdb), to(#0064cd));
- background-image: -moz-linear-gradient(#049cdb, #0064cd);
- background-image: -ms-linear-gradient(#049cdb, #0064cd);
- background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #049cdb), color-stop(100%, #0064cd));
- background-image: -webkit-linear-gradient(#049cdb, #0064cd);
- background-image: -o-linear-gradient(#049cdb, #0064cd);
- background-image: linear-gradient(#049cdb, #0064cd);
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
- border-color: #0064cd #0064cd #003f81;
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+body.package.search #menusearch {
+ display: none;
}
-.pretty-button.danger {
- background-color: #9d261d;
- background-repeat: repeat-x;
- background-image: -khtml-gradient(linear, left top, left bottom, from(#d83a2e), to(#9d261d));
- background-image: -moz-linear-gradient(#d83a2e, #9d261d);
- background-image: -ms-linear-gradient(#d83a2e, #9d261d);
- background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #d83a2e), color-stop(100%, #9d261d));
- background-image: -webkit-linear-gradient(#d83a2e, #9d261d);
- background-image: -o-linear-gradient(#d83a2e, #9d261d);
- background-image: linear-gradient(#d83a2e, #9d261d);
- text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
- border-color: #9d261d #9d261d #5c1611;
- border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
+.dataset-search {
+ margin-bottom: 35px;
}
-.pretty-button.large {
- font-size: 16px;
- line-height: 28px;
- -webkit-border-radius: 6px;
- -moz-border-radius: 6px;
- border-radius: 6px;
+.dataset-search input.search {
+ width: 100%;
+ font-size: 1.2em;
+ margin: 0px;
+ border: 1px solid #ccc;
+ padding: 0.5em;
+ font-weight: bold;
+ -moz-border-radius: 5px;
+ -webkit-border-radius: 5px;
+ border-radius: 5px;
+ -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;
}
-.pretty-button.small {
- padding-right: 9px;
- padding-left: 9px;
- font-size: 11px;
-}
-.pretty-button.disabled {
- background-image: none;
- filter: alpha(opacity=65);
- -khtml-opacity: 0.65;
- -moz-opacity: 0.65;
- opacity: 0.65;
- cursor: default;
-}
-.pretty-button:disabled {
- background-image: none;
- filter: alpha(opacity=65);
- -khtml-opacity: 0.65;
- -moz-opacity: 0.65;
- opacity: 0.65;
- cursor: default;
-}
-.pretty-button.depressed,
-.pretty-button:active {
- -webkit-box-shadow: inset 0 3px 7px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.05);
- -moz-box-shadow: inset 0 3px 7px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.05);
- box-shadow: inset 0 3px 7px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-button.pretty-button::-moz-focus-inner, input.pretty-button::-moz-focus-inner {
- padding: 0;
- border: 0;
+.dataset-search input.button {
+ display: inline-block;
+ float: right;
+ margin-top: 5px;
+ margin-right: 10px !important;
+ margin-bottom: 1px !important;
}
-/* ====================================== */
-/* = Correct mistakes made by blueprint = */
-/* ====================================== */
-
-body.success,
-body.error {
- background: #fff;
- padding: 0;
- margin-bottom: 0;
- border: none;
- color: #000;
+/* ======================================== */
+/* = Dataset listing (eg. search results) = */
+/* ======================================== */
+ul.datasets {
+ padding-left: 0;
+ margin: 0 0 1em 0;
+}
+ul.datasets li {
+ list-style: none;
+ padding: 1em 0 0.2em 0.0em;
+ border-bottom: 1px solid #ececec;
+ overflow: hidden;
+}
+ul.datasets li .header {
+ padding-top: 0.5em;
+ font-weight: bold;
+ font-size: 1.1em;
+}
+ul.datasets li .extract {
+ padding-top: 0.3em;
+}
+ul.datasets li a {
+ text-decoration: none;
+}
+ul.datasets li img {
+ margin-bottom: -2px;
+}
+ul.datasets .search_meta {
+ float:right;
+}
+ul.datasets ul.dataset_formats {
+ float: right;
+ padding: 0 0 3px 0;
+ margin: 0;
+ font-family: monospace;
+}
+ul.datasets ul.dataset_formats li {
+ display: inline;
+ margin: 0;
+ padding: 0 5px 0 5px;
+ border: none;
+ font-weight: normal;
+ font-size: 0.9em;
+ color: #808080;
+ background:#ececec;
+}
+ul.datasets .openness {
+ clear:right;
+ float:right;
+ font-size:0.8em;
+}
+ul.datasets .openness img {
+ vertical-align:top;
+}
+ul.datasets .openness li {
+ margin:0;
+ padding:0;
+ border:none;
}
-.top-bar {
+
+
+/* =================== */
+/* = Markdown Editor = */
+/* =================== */
+.markdown-editor {
+ background: #EEE;
+ border-radius: 5px 5px;
+ -webkit-border-radius: 5px;
+ -moz-border-radius: 5px;
+ border: 1px solid #CCC;
+ padding: 0 5px 5px 10px;
+ width: 32em;
+}
+.markdown-editor .button-row {
+ padding-right: 40px;
+ text-align: center;
+}
+.markdown-editor div.markdown-preview {
+ background: white;
+ border: 1px solid #CCC;
+ padding: 5px;
+ margin-bottom: 5px;
+ overflow: auto;
+}
+.markdown-editor textarea.markdown-input {
+ margin-bottom: 5px;
+ padding: 5px;
+ display: block;
+}
+
+
+/* =================== */
+/* = URL Slug Editor = */
+/* =================== */
+input.url-slug-editor {
+ width: 250px;
+}
+
+
+/* ============= */
+/* = Mini-Tabs = */
+/* ============= */
+ul.button-row {
+ margin-bottom: 5px;
+}
+ul.button-row li {
+ display: inline;
+ margin-right: 10px;
+}
+
+
+/* ================== */
+/* = Welcome Banner = */
+/* ================== */
+.welcome-banner {
width: 100%;
/* Old background was a little less intrusive */
background: #fcba63;
@@ -1238,14 +748,12 @@
padding: 0;
border-bottom: 1px solid #faa;
font-weight: bold;
-}
-.top-bar-text {
line-height: 30px;
}
-.top-bar-text a {
+.welcome-banner a {
text-decoration: underline;
}
-.top-bar button.js-kill-button {
+.welcome-banner button {
float: right;
margin-right: 20px;
margin-top: 3px;
@@ -1253,10 +761,98 @@
}
-/* ============================= */
-/* = Inline resource edit form = */
-/* ============================= */
+/* ================================= */
+/* = Edit Dataset Page: Navigation = */
+/* ================================= */
+body.package.edit div#content {
+ /* Flip the sidebar to the left-hand side */
+ margin-right: 29px;
+ margin-left: 0px;
+ float: right;
+ padding-right: 0;
+ padding-left: 20px;
+ border: none;
+ border-left: 1px solid #eee;
+}
+body.package.edit div#sidebar {
+ /* Flip the sidebar to the left-hand side */
+ padding-left: 0px;
+ float: left;
+ margin-right: 0px;
+}
+body.package.edit ul.widget-list {
+ margin-left: 1.5em;
+ margin-right: 0;
+}
+ul.dataset-edit-nav {
+ list-style-type: none;
+ padding-left: 0;
+}
+ul.dataset-edit-nav li a {
+ text-decoration: none;
+ font-weight: bold;
+ display: block;
+ padding: 7px 0 7px 10px;
+ margin-bottom: 7px;
+ border: 1px transparent solid;
+}
+ul.dataset-edit-nav li a.active,
+ul.dataset-edit-nav li a:hover {
+ border: 1px solid #e0e0e0;
+ background-color: #e2e2e2;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f0f0f0), to(#e2e2e2));
+ background-image: -webkit-linear-gradient(top, #f0f0f0, #e2e2e2);
+ background-image: -moz-linear-gradient(top, #f0f0f0, #e2e2e2);
+ background-image: -ms-linear-gradient(top, #f0f0f0, #e2e2e2);
+ background-image: -o-linear-gradient(top, #f0f0f0, #e2e2e2);
+ background-image: linear-gradient(top, #f0f0f0, #e2e2e2);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f0f0f0', EndColorStr='#e2e2e2');
+ border-right: none;
+ -moz-border-radius-bottomleft: 5px;
+ -webkit-border-bottom-left-radius: 5px;
+ border-bottom-left-radius: 5px;
+ -moz-border-radius-topleft: 5px;
+ -webkit-border-top-left-radius: 5px;
+ border-top-left-radius: 5px;
+ -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;
+}
+
+
+/* ===================== */
+/* = Edit Dataset Page = */
+/* ===================== */
+.dataset-edit-form .edit-summary {
+ /* Needs refactoring. Clutters the page too much. */
+ display: none;
+}
+.dataset-edit-form input#Resource--url {
+ width: 60%;
+}
+.dataset-edit-form .resource-add {
+ background: #eee;
+ padding-top: 10px;
+ padding-bottom: 5px;
+ border: 1px solid #e0e0e0;
+ border-left: none;
+ border-right: none;
+}
+.dataset-edit-form .resource-add li h4 {
+ display: inline;
+ padding-right: 20px;
+}
+.dataset-edit-form .resource-add .subpane {
+ margin-top: 10px;
+}
+.dataset-edit-form .resource-add .fileinfo {
+ margin: 7px 0;
+}
+
+
+
+/* ================================ */
+/* = Edit Dataset Page: Resources = */
+/* ================================ */
.resource-table-edit tbody tr td,
.resource-table-view tbody tr td {
/* Constrain structure against overflow */
@@ -1264,7 +860,6 @@
overflow: hidden;
white-space: nowrap;
}
-
.resource-table-edit tr {
overflow: hidden;
}
@@ -1333,3 +928,134 @@
padding-left: 4px;
border-left: 1px dashed #aaa;
}
+
+
+/* ==================== */
+/* = Add Dataset Page = */
+/* ==================== */
+.dataset-create-form fieldset {
+ /* Show only one field */
+ display: none;
+}
+.dataset-create-form fieldset#basic-information {
+ display: block;
+}
+.dataset-create-form .edit-summary {
+ display: none;
+}
+.dataset-create-form dt.homepage-label,
+.dataset-create-form dd.homepage-field,
+.dataset-create-form dd.homepage-instructions
+{
+ display: none;
+}
+.dataset-create-form dt.tags-label,
+.dataset-create-form dd.tags-field,
+.dataset-create-form dd.tags-instructions
+{
+ display: none;
+}
+.dataset-create-form dt.description-label,
+.dataset-create-form dd.description-field,
+.dataset-create-form dd.description-instructions
+{
+ display: none;
+}
+.dataset-create-form dt.license-label,
+.dataset-create-form dd.license-field,
+.dataset-create-form dd.license-instructions
+{
+ display: none;
+}
+.dataset-create-form a.url-edit {
+ font-weight: normal;
+ margin-left: 10px;
+}
+.dataset-create-form dd.name-field {
+ padding-top: 0.2em;
+}
+.dataset-create-form dd.name-field p {
+ margin-bottom: 4px;
+}
+
+
+
+/* ===================== */
+/* = Dataset View Page = */
+/* ===================== */
+body.package.read #sidebar ul.tags,
+body.package.read #sidebar ul.groups {
+ margin-bottom: 10px;
+}
+.flash-messages .success .new-dataset {
+ font-size: 150%;
+}
+.flash-messages.success .new-dataset a {
+ font-weight: bold;
+}
+
+
+
+/* ================== */
+/* = Add Group Page = */
+/* ================== */
+.group-create-form fieldset#extras,
+.group-create-form fieldset#datasets {
+ display: none;
+}
+.group-create-form .description-label,
+.group-create-form .description-field,
+.group-create-form .state-label,
+.group-create-form .state-field {
+ display: none;
+}
+
+
+
+/* ============== */
+/* = Admin Page = */
+/* ============== */
+body.admin form#form-purge-packages,
+body.admin form#form-purge-revisions {
+ margin-bottom: 30px;
+ text-align: right;
+}
+
+
+
+/* ======================= */
+/* = Authorization Pages = */
+/* ======================= */
+body.authz form {
+ margin-bottom: 30px;
+ text-align: right;
+}
+body.authz form button {
+ min-width: 120px;
+}
+
+
+
+/* ================== */
+/* :: QUESTIONABLE :: */
+/* ================== */
+.dataset .api div {
+ background:#f0f0f0;
+ padding:10px;
+}
+.dataset .api h5 {
+ font-weight:bold;
+ margin-bottom:1em!important;
+ font-size:1em;
+}
+.dataset .api code {
+ background:#444;
+ color:#fff;
+ padding:3px 10px ;
+ margin-bottom:1em;
+ display:block;
+}
+.dataset .api code a {
+ color:#fff;
+}
+
diff -r 9f02da7ab51c65b9b0d549177243cf88a33a872f -r f600e0d37f6cbe3963b0ad610c08bd868f1d1f62 ckan/public/scripts/application.js
--- a/ckan/public/scripts/application.js
+++ b/ckan/public/scripts/application.js
@@ -20,7 +20,7 @@
var isFrontPage = $('body.index.home').length > 0;
if (isFrontPage) {
- CKAN.Utils.setupTopBar($('.top-bar'));
+ CKAN.Utils.setupWelcomeBanner($('.js-welcome-banner'));
}
var isDatasetView = $('body.package.read').length > 0;
@@ -106,17 +106,16 @@
input.change(callback);
};
- my.setupTopBar = function(topBar) {
+ my.setupWelcomeBanner = function(banner) {
var cookieName = 'ckan_killtopbar';
var isKilled = ($.cookie(cookieName)!=null);
if (!isKilled) {
- topBar.show();
+ banner.show();
// Bind to the close button
- topBar.find('.js-kill-button').live('click', function() {
- console.log('killing top-bar');
+ banner.find('.js-kill-button').live('click', function() {
$.cookie(cookieName, 'true', { expires: 365 });
- topBar.hide();
+ banner.hide();
});
}
};
@@ -126,7 +125,7 @@
var titleInput = $('.js-title');
var urlText = $('.js-url-text');
var urlSuffix = $('.js-url-suffix');
- var urlInput = $('.js-url-input');
+ var urlInput = $('.js-url-slug-editor');
var validMsg = $('.js-url-is-valid');
var api_url = '/api/2/util/is_slug_valid';
@@ -411,10 +410,10 @@
my.setupDatasetEditNavigation = function() {
function showSection(sectionToShowId) {
- $('.dataset fieldset').hide();
- $('.dataset fieldset#'+sectionToShowId).show();
- $('.edit-form-navigation li a').removeClass('active');
- $('.edit-form-navigation li a[href=#section-'+sectionToShowId+']').addClass('active');
+ $('.dataset-edit-form fieldset').hide();
+ $('.dataset-edit-form fieldset#'+sectionToShowId).show();
+ $('.dataset-edit-nav li a').removeClass('active');
+ $('.dataset-edit-nav li a[href=#section-'+sectionToShowId+']').addClass('active');
window.location.hash = 'section-'+sectionToShowId;
}
@@ -424,7 +423,7 @@
showSection(initialSection);
// Adjust form state on click
- $('.edit-form-navigation li a').live('click', function(e) {
+ $('.dataset-edit-nav li a').live('click', function(e) {
var $el = $(e.target);
// Prefix="#section-"
var showMe = $el.attr('href').slice(9);
@@ -632,7 +631,7 @@
this.reset();
$target.addClass('depressed');
- var $subPane = $('<div />').addClass('resource-add-subpane');
+ var $subPane = $('<div />').addClass('subpane');
this.el.append($subPane);
var tempResource = new CKAN.Model.Resource({});
diff -r 9f02da7ab51c65b9b0d549177243cf88a33a872f -r f600e0d37f6cbe3963b0ad610c08bd868f1d1f62 ckan/public/scripts/templates.js
--- a/ckan/public/scripts/templates.js
+++ b/ckan/public/scripts/templates.js
@@ -1,6 +1,6 @@
CKAN.Templates.resourceAddLinkFile = ' \
- <form class="resource-add"> \
+ <form> \
<dl> \
<dt> \
<label class="field_opt" for="url"> \
@@ -18,7 +18,7 @@
';
CKAN.Templates.resourceAddLinkApi = ' \
- <form class="resource-add"> \
+ <form> \
<dl> \
<dt> \
<label class="field_opt" for="url"> \
diff -r 9f02da7ab51c65b9b0d549177243cf88a33a872f -r f600e0d37f6cbe3963b0ad610c08bd868f1d1f62 ckan/templates/_util.html
--- a/ckan/templates/_util.html
+++ b/ckan/templates/_util.html
@@ -368,11 +368,11 @@
><py:if test="revision.state!='deleted'"><input type="hidden" name="action" value="delete"/>
- <input type="submit" name="submit" value="Delete" class="pretty-button small" />
+ <input type="submit" name="submit" value="Delete" class="pretty-button small-button" /></py:if><py:if test="revision.state=='deleted'"><input type="hidden" name="action" value="undelete"/>
- <input type="submit" name="submit" value="Undelete" class="pretty-button small" />
+ <input type="submit" name="submit" value="Undelete" class="pretty-button small-button" /></py:if></form></div>
@@ -422,10 +422,10 @@
id=revision['id'])}"
><py:if test="revision['state']!='deleted'">
- <button type="submit" name="action" value="delete" class="pretty-button small">Delete</button>
+ <button type="submit" name="action" value="delete" class="pretty-button small-button">Delete</button></py:if><py:if test="revision['state']=='deleted'">
- <button type="submit" name="action" value="undelete" class="pretty-button small">Undelete</button>
+ <button type="submit" name="action" value="undelete" class="pretty-button small-button">Undelete</button></py:if></form></div>
diff -r 9f02da7ab51c65b9b0d549177243cf88a33a872f -r f600e0d37f6cbe3963b0ad610c08bd868f1d1f62 ckan/templates/group/edit.html
--- a/ckan/templates/group/edit.html
+++ b/ckan/templates/group/edit.html
@@ -6,7 +6,7 @@
<py:def function="page_heading">Edit: ${c.group.display_name}</py:def>
- <div py:match="content">
+ <div py:match="content" class="group-edit-form">
${Markup(c.form)}
</div>
diff -r 9f02da7ab51c65b9b0d549177243cf88a33a872f -r f600e0d37f6cbe3963b0ad610c08bd868f1d1f62 ckan/templates/group/new.html
--- a/ckan/templates/group/new.html
+++ b/ckan/templates/group/new.html
@@ -5,7 +5,7 @@
<py:def function="page_title">Add A Group</py:def><py:def function="page_heading">Add A Group</py:def>
- <div py:match="content">
+ <div py:match="content" class="group-create-form">
${Markup(c.form)}
</div>
diff -r 9f02da7ab51c65b9b0d549177243cf88a33a872f -r f600e0d37f6cbe3963b0ad610c08bd868f1d1f62 ckan/templates/group/new_group_form.html
--- a/ckan/templates/group/new_group_form.html
+++ b/ckan/templates/group/new_group_form.html
@@ -20,7 +20,7 @@
<dt><label class="field_opt" for="title">Url</label></dt><dd class="name-field"><span class="url-text">${g.site_url+h.url_for(controller='group',id=None)+'/'}<span class="js-url-viewmode js-url-suffix"> </span><a style="display: none;" href="#" class="url-edit js-url-editlink js-url-viewmode">(edit)</a></span>
- <input style="display: none;" id="name" maxlength="100" name="name" type="text" class="url-input js-url-editmode js-url-input" value="${data.get('name', '')}" />
+ <input style="display: none;" id="name" maxlength="100" name="name" type="text" class="url-slug-editor js-url-editmode js-url-slug-editor" value="${data.get('name', '')}" /><p class="js-url-is-valid"> </p></dd><dd style="display: none;" class="js-url-editmode instructions basic">2+ chars, lowercase, using only 'a-z0-9' and '-_'</dd>
diff -r 9f02da7ab51c65b9b0d549177243cf88a33a872f -r f600e0d37f6cbe3963b0ad610c08bd868f1d1f62 ckan/templates/layout_base.html
--- a/ckan/templates/layout_base.html
+++ b/ckan/templates/layout_base.html
@@ -42,12 +42,13 @@
${optional_head()}
</py:if>
+ ${h.literal(getattr(g, 'template_head_end', ''))}
</head><body class="${request.environ.get('pylons.routes_dict', {}).get('action')}
${request.environ.get('pylons.routes_dict', {}).get('controller').split(':')[-1]}">
- <div class="top-bar" style="display: none;">
- <span class="top-bar-text">First time at ${g.site_url_nice}? Visit our <a href="${h.url_for(controller='home', action='about')}">About page</a> to find out more.</span>
+ <div class="welcome-banner js-welcome-banner" style="display: none;">
+ <span>First time at ${g.site_title}? Visit our <a href="${h.url_for(controller='home', action='about')}">About page</a> to find out more.</span><button class="pretty-button js-kill-button">x</button></div><div id="wrap">
@@ -146,6 +147,11 @@
<div class="textwidget"><ul><li>
+ <a href="${url(controller='user', action='index')}">
+ Users
+ </a>
+ </li>
+ <li><a href="${url(controller='tag', action='index')}">
Tags
</a>
diff -r 9f02da7ab51c65b9b0d549177243cf88a33a872f -r f600e0d37f6cbe3963b0ad610c08bd868f1d1f62 ckan/templates/package/edit.html
--- a/ckan/templates/package/edit.html
+++ b/ckan/templates/package/edit.html
@@ -16,7 +16,7 @@
<py:match path="primarysidebar"><li class="widget-container widget_text">
- <ul class="edit-form-navigation">
+ <ul class="dataset-edit-nav"><!-- One button for each fieldset --><li><a href="#section-basic-information">Basic Information</a></li><li><a href="#section-further-information">Futher Information</a></li>
@@ -27,7 +27,7 @@
</li></py:match>
- <div py:match="content" class="dataset">
+ <div py:match="content" class="dataset-edit-form">
${c.form}
</div>
diff -r 9f02da7ab51c65b9b0d549177243cf88a33a872f -r f600e0d37f6cbe3963b0ad610c08bd868f1d1f62 ckan/templates/package/facets.html
--- a/ckan/templates/package/facets.html
+++ b/ckan/templates/package/facets.html
@@ -18,11 +18,11 @@
</py:def><py:def function="field_list()">
- <div class="search-field-list" py:if="c.fields">
- <div class="search-field" py:for="(field, value) in c.fields">
- <span class="search-field-name">${h.facet_title(field)}</span>
- <span class="search-field-value">${value}</span>
- <a class="search-field-remove" href="${c.remove_field(field, value)}">
+ <div class="filter-list" py:if="c.fields">
+ <div class="filter-entry" py:for="(field, value) in c.fields">
+ <span class="name">${h.facet_title(field)}</span>
+ <span class="value">${value}</span>
+ <a href="${c.remove_field(field, value)}">
${h.icon('unfilter')}
</a></div>
diff -r 9f02da7ab51c65b9b0d549177243cf88a33a872f -r f600e0d37f6cbe3963b0ad610c08bd868f1d1f62 ckan/templates/package/new.html
--- a/ckan/templates/package/new.html
+++ b/ckan/templates/package/new.html
@@ -8,7 +8,7 @@
<py:def function="body_class">hide-sidebar</py:def>
- <div py:match="content">
+ <div py:match="content" class="dataset-create-form"><h3 py:if="c.error" class="form-errors">
Error: ${c.error}
</h3>
diff -r 9f02da7ab51c65b9b0d549177243cf88a33a872f -r f600e0d37f6cbe3963b0ad610c08bd868f1d1f62 ckan/templates/package/new_package_form.html
--- a/ckan/templates/package/new_package_form.html
+++ b/ckan/templates/package/new_package_form.html
@@ -1,4 +1,4 @@
-<form id="dataset-edit" class="dataset_create_form ckan" method="post"
+<form id="dataset-edit" method="post"
py:attrs="{'class':'has-errors'} if errors else {}"
xmlns:i18n="http://genshi.edgewall.org/i18n"
xmlns:py="http://genshi.edgewall.org/"
diff -r 9f02da7ab51c65b9b0d549177243cf88a33a872f -r f600e0d37f6cbe3963b0ad610c08bd868f1d1f62 ckan/templates/user/list.html
--- a/ckan/templates/user/list.html
+++ b/ckan/templates/user/list.html
@@ -9,26 +9,24 @@
<py:match path="primarysidebar"><li class="widget-container widget_text" py:if="not c.hide_welcome_message">
- <form id="user-search" action="" method="GET">
+ <form id="user-search" class="user-search" action="" method="GET"><input type="text" id="q" name="q" value="${c.q}" />
- <input type="submit" name="" value="Search »" />
+ <input type="submit" class="pretty-button small-button" name="" value="Search »" /></form>
- <p i18n:msg="item_count">
+ <p py:if="c.q" i18n:msg="item_count"><strong>${c.page.item_count}</strong> users found.
</p></li>
-
-
</py:match><py:match path="minornavigation"><ul class="tabbed">
- <li>
+ <li py:attrs="{'class':'current-tab'} if c.order_by=='name' else {}">
+ <a href="?q=${c.q}&order_by=name" rel="nofollow">Sort by name</a>
+ </li>
+ <li py:attrs="{'class':'current-tab'} if c.order_by=='edits' else {}"><a href="?q=${c.q}&order_by=edits" rel="nofollow">Sort by edits</a></li>
- <li>
- <a href="?q=${c.q}&order_by=name" rel="nofollow">Sort by name</a>
- </li></ul></py:match>
diff -r 9f02da7ab51c65b9b0d549177243cf88a33a872f -r f600e0d37f6cbe3963b0ad610c08bd868f1d1f62 ckan/templates/user/login.html
--- a/ckan/templates/user/login.html
+++ b/ckan/templates/user/login.html
@@ -26,7 +26,7 @@
<!--legend i18n:msg="site_title">Login</legend--><label for="login">Login:</label>
- <input name="login" value="" />
+ <input type="text" name="login" value="" /><br/><label for="password">Password:</label><input type="password" name="password" value="" />
diff -r 9f02da7ab51c65b9b0d549177243cf88a33a872f -r f600e0d37f6cbe3963b0ad610c08bd868f1d1f62 ckan/templates/user/perform_reset.html
--- a/ckan/templates/user/perform_reset.html
+++ b/ckan/templates/user/perform_reset.html
@@ -20,7 +20,7 @@
<br/></fieldset><div>
- ${h.submit('save', _('Save'))}
+ <input type="submit" id="save" name="save" class="pretty-button primary" value="Save" /></div></form></div>
diff -r 9f02da7ab51c65b9b0d549177243cf88a33a872f -r f600e0d37f6cbe3963b0ad610c08bd868f1d1f62 ckan/templates/user/request_reset.html
--- a/ckan/templates/user/request_reset.html
+++ b/ckan/templates/user/request_reset.html
@@ -11,7 +11,7 @@
><fieldset><label for="user">User name:</label>
- <input name="user" value="" /><br/>
+ <input type="text" name="user" value="" /><br/></fieldset><div><input type="submit" id="reset" name="reset" class="pretty-button primary" value="Reset Password" />
diff -r 9f02da7ab51c65b9b0d549177243cf88a33a872f -r f600e0d37f6cbe3963b0ad610c08bd868f1d1f62 ckan/tests/functional/test_home.py
--- a/ckan/tests/functional/test_home.py
+++ b/ckan/tests/functional/test_home.py
@@ -58,6 +58,11 @@
url = url_for('guide')
assert url == 'http://wiki.okfn.org/ckan/doc/'
+ def test_template_head_end(self):
+ offset = url_for('home')
+ res = self.app.get(offset)
+ assert 'ckan.template_head_end = <link rel="stylesheet" href="TEST_TEMPLATE_HEAD_END.css" type="text/css"> '
+
def test_template_footer_end(self):
offset = url_for('home')
res = self.app.get(offset)
diff -r 9f02da7ab51c65b9b0d549177243cf88a33a872f -r f600e0d37f6cbe3963b0ad610c08bd868f1d1f62 test-core.ini
--- a/test-core.ini
+++ b/test-core.ini
@@ -47,6 +47,9 @@
# ckan.plugins = amqp_notifier
# use <strong> so we can check that html is *not* escaped
+ckan.template_head_end = <link rel="stylesheet" href="TEST_TEMPLATE_HEAD_END.css" type="text/css">
+
+# use <strong> so we can check that html is *not* escaped
ckan.template_footer_end = <strong>TEST TEMPLATE_FOOTER_END TEST</strong>
# mailer
Repository URL: https://bitbucket.org/okfn/ckan/
--
This is a commit notification from bitbucket.org. You are receiving
this because you have the service enabled, addressing the recipient of
this email.
More information about the ckan-changes
mailing list