aboutsummaryrefslogtreecommitdiffstats
path: root/mediagoblin/static
diff options
context:
space:
mode:
Diffstat (limited to 'mediagoblin/static')
-rw-r--r--mediagoblin/static/css/audio.css84
-rw-r--r--mediagoblin/static/css/base.css748
l---------mediagoblin/static/css/extlib/reset.css1
-rw-r--r--mediagoblin/static/css/vjs-mg-skin.css415
l---------mediagoblin/static/extlib/leaflet1
l---------mediagoblin/static/extlib/pdf.js1
l---------mediagoblin/static/extlib/video-js1
l---------mediagoblin/static/fonts/Inconsolata.otf1
l---------mediagoblin/static/fonts/Lato-Bold.ttf1
l---------mediagoblin/static/fonts/Lato-BoldItalic.ttf1
l---------mediagoblin/static/fonts/Lato-Italic.ttf1
l---------mediagoblin/static/fonts/Lato-Regular.ttf1
-rw-r--r--mediagoblin/static/images/404.pngbin0 -> 156189 bytes
-rw-r--r--mediagoblin/static/images/background.pngbin0 -> 6336 bytes
-rw-r--r--mediagoblin/static/images/empty_back.pngbin0 -> 191 bytes
-rw-r--r--mediagoblin/static/images/frontpage_image.pngbin0 -> 65174 bytes
-rw-r--r--mediagoblin/static/images/goblin.icobin0 -> 318 bytes
-rw-r--r--mediagoblin/static/images/goblin.pngbin0 -> 413 bytes
-rw-r--r--mediagoblin/static/images/icon_comment.pngbin0 -> 283 bytes
-rw-r--r--mediagoblin/static/images/icon_feed.pngbin0 -> 378 bytes
-rw-r--r--mediagoblin/static/images/logo.pngbin0 -> 1689 bytes
-rw-r--r--mediagoblin/static/images/logo.svg116
-rw-r--r--mediagoblin/static/images/media_thumbs/image.pngbin0 -> 30341 bytes
-rw-r--r--mediagoblin/static/images/media_thumbs/video.jpgbin0 -> 7278 bytes
-rw-r--r--mediagoblin/static/images/video-js.pngbin0 -> 4459 bytes
-rw-r--r--mediagoblin/static/js/audio.js229
-rw-r--r--mediagoblin/static/js/autofilledin_password.js25
-rw-r--r--mediagoblin/static/js/collection_form_show.js26
-rw-r--r--mediagoblin/static/js/comment_show.js27
l---------mediagoblin/static/js/extlib/html5slider.js1
l---------mediagoblin/static/js/extlib/jquery.js1
l---------mediagoblin/static/js/extlib/leaflet1
l---------mediagoblin/static/js/extlib/thingiview.js1
-rw-r--r--mediagoblin/static/js/geolocation-map.js47
-rw-r--r--mediagoblin/static/js/header_dropdown.js27
-rw-r--r--mediagoblin/static/js/keyboard_navigation.js41
-rw-r--r--mediagoblin/static/js/show_password.js38
37 files changed, 1836 insertions, 0 deletions
diff --git a/mediagoblin/static/css/audio.css b/mediagoblin/static/css/audio.css
new file mode 100644
index 00000000..e007a0e1
--- /dev/null
+++ b/mediagoblin/static/css/audio.css
@@ -0,0 +1,84 @@
+.audio-spectrogram {
+ position: relative;
+}
+.playhead {
+ position: absolute;
+ top: 0;
+ left: 0;
+ background: rgba(134, 212, 177, 0.3);
+ border-right: thin solid #ffaa00;
+ height: 100%;
+ -webkit-transition: width .1s ease-out;
+ -moz-transition: width .1s ease-out;
+ transition: width .1s ease-out;
+}
+.audio-control-play-pause {
+ position: absolute;
+ bottom: 0;
+ left: 5px;
+ cursor: pointer;
+ /* background: rgba(0, 0, 0, 0.7); */
+ font-size: 40px;
+ width: 50px;
+ text-shadow: 0 0 10px black;
+}
+ .audio-control-play-pause.playing {
+ color: #b71500;
+ letter-spacing: -17px;
+ margin-left: -7px;
+ }
+ .audio-control-play-pause.paused {
+ /* Warning: this means the the play button shows! */
+ color: rgb(134, 212, 177);
+ }
+
+.buffered-indicators {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ height: 2px;
+}
+ .buffered-indicators div {
+ position: absolute;
+ height: 2px;
+ left: 0;
+ background: rgba(134, 177, 212, 1);
+
+ -webkit-transition: left 1s ease-out;
+ -moz-transition: left 1s ease-out;
+ transition: left 1s ease-out;
+
+ -webkit-transition: width 1s ease-out;
+ -moz-transition: width 1s ease-out;
+ transition: width 1s ease-out;
+
+ cursor: pointer;
+ }
+
+.seekbar {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+}
+
+.audio-currentTime {
+ position: absolute;
+ bottom: 0;
+ right: 0;
+ background: rgba(0, 0, 0, 0.7);
+}
+
+.audio-volume {
+ position: absolute;
+ left: 50px;
+ bottom: 10px;
+ opacity: 0.3;
+ -moz-transition: opacity .1s ease-in-out;
+ -webkit-transition: opacity .1s ease-in-out;
+ transition: opacity .1s ease-in-out;
+}
+ .audio-spectrogram:hover .audio-volume {
+ opacity: 0.7;
+ }
diff --git a/mediagoblin/static/css/base.css b/mediagoblin/static/css/base.css
new file mode 100644
index 00000000..5b8226e6
--- /dev/null
+++ b/mediagoblin/static/css/base.css
@@ -0,0 +1,748 @@
+/* @font-face */
+
+@font-face {
+ font-family: 'Lato';
+ font-style: normal;
+ font-weight: 700;
+ src: local('Lato Bold'), local('Lato-Bold'), url('../fonts/Lato-Bold.ttf') format('truetype');
+}
+@font-face {
+ font-family: 'Lato';
+ font-style: italic;
+ font-weight: 400;
+ src: local('Lato Italic'), local('Lato-Italic'), url('../fonts/Lato-Italic.ttf') format('truetype');
+}
+@font-face {
+ font-family: 'Lato';
+ font-style: italic;
+ font-weight: 700;
+ src: local('Lato Bold Italic'), local('Lato-BoldItalic'), url('../fonts/Lato-BoldItalic.ttf') format('truetype');
+}
+@font-face {
+ font-family: 'Lato';
+ font-style: normal;
+ font-weight: 400;
+ src: local('Lato Regular'), local('Lato-Regular'), url('../fonts/Lato-Regular.ttf') format('truetype');
+}
+
+body {
+ background-color: #161616;
+ color: #C3C3C3;
+ padding: 0;
+ margin: 0px;
+ height: 100%;
+ font: 16px 'Lato', 'Helvetica Neue', Arial, 'Liberation Sans', FreeSans, sans-serif;
+}
+
+form {
+ margin: 0px;
+ padding: 0px;
+}
+
+/* text styles */
+
+h1,h2,h3,p {
+ margin-bottom: 20px;
+}
+
+h1,h2,h3 {
+ font-weight: bold;
+}
+
+h1 {
+ margin-top: 15px;
+ color: #fff;
+ font-size: 1.875em;
+}
+
+h2 {
+ font-size: 1.375em;
+ margin-top: 20px;
+ color: #fff;
+}
+
+h3 {
+ border-bottom: 1px solid #333;
+ font-size: 1.125em;
+}
+
+p {
+ margin-top: 0px;
+}
+
+a {
+ color: #86D4B1;
+}
+
+a.highlight {
+ color: #fff;
+}
+
+em {
+ font-style: italic;
+}
+
+strong {
+ font-weight: bold;
+}
+
+ul {
+ list-style: disc inside;
+}
+
+ol {
+ list-style: decimal inside;
+}
+
+label {
+ font-weight: normal;
+}
+
+input, textarea {
+ font-size:1em;
+ font-family:'Lato', sans-serif;
+}
+
+/* website structure */
+
+.container {
+ margin: auto;
+ width: 96%;
+ max-width: 940px;
+}
+
+header {
+ width: 100%;
+ max-width: 940px;
+ margin-left: auto;
+ margin-right: auto;
+ padding: 0;
+ margin-bottom: 42px;
+ border-bottom: 1px solid #333;
+}
+
+.header_right {
+ margin: 8px;
+ display: inline-block;
+ float: right;
+}
+
+.header_dropdown {
+ margin-bottom: 20px;
+}
+
+.header_dropdown li {
+ margin: 4px 0;
+ list-style: none;
+}
+
+.header_dropdown p {
+ margin-top: 12px;
+ margin-bottom: 10px;
+}
+
+.dropdown_title {
+ font-size: 20px;
+}
+
+a.logo {
+ color: #fff;
+ font-weight: bold;
+}
+
+.logo img {
+ vertical-align: middle;
+ margin: 6px 8px 6px 0;
+}
+
+.mediagoblin_content {
+ width: 100%;
+ padding-bottom: 74px;
+}
+
+footer {
+ width: 100%;
+ height: 30px;
+ border-top: 1px solid #333;
+ bottom: 0px;
+ padding: 8px 0;
+ text-align: center;
+ font-size: 0.875em;
+ clear: both;
+}
+
+.media_pane {
+ width: 640px;
+ margin-left: 0px;
+ margin-right: 10px;
+ float: left;
+}
+
+.media_sidebar {
+ width: 280px;
+ margin-left: 10px;
+ float: left;
+}
+
+.profile_sidebar {
+ width: 340px;
+ margin-right: 10px;
+ float: left;
+}
+
+.profile_showcase {
+ width: 580px;
+ margin-left: 10px;
+ float: left;
+}
+
+/* common website elements */
+
+.button_action, .button_action_highlight, .button_form {
+ display: inline-block;
+ color: #c3c3c3;
+ background-color: #363636;
+ border: 1px solid;
+ border-color: #464646 #2B2B2B #252525;
+ border-radius: 4px;
+ padding: 3px 8px;
+ font-size: 16px;
+ text-decoration: none;
+ font-style: normal;
+ font-weight: bold;
+ cursor: pointer;
+}
+
+.button_action_highlight, .button_form {
+ background-color: #86D4B1;
+ border-color: #A2DEC3 #6CAA8E #5C9179;
+ color: #283F35;
+}
+
+.button_form {
+ min-width: 99px;
+ margin: 10px 0px 10px 15px;
+ text-align: center;
+ font-family: 'Lato', sans-serif;
+}
+
+.pagination {
+text-align: center;
+}
+
+.pagination_arrow {
+ margin: 5px;
+}
+
+.empty_space {
+ background-image: url("../images/empty_back.png");
+ font-style: italic;
+ text-align: center;
+ height: 160px;
+ padding-top: 70px;
+}
+
+.right_align {
+ float: right;
+}
+
+.clear {
+ clear: both;
+ display: block;
+ overflow: hidden;
+ visibility: hidden;
+ width: 0;
+ height: 0;
+}
+
+.hidden {
+ display: none;
+}
+
+.media_sidebar h3 {
+ font-size: 1em;
+ margin: 0 0 5px;
+ border: none;
+}
+
+.media_sidebar p {
+ margin-left: 8px;
+}
+
+/* forms */
+
+.form_box,.form_box_xl {
+ background-color: #222;
+ border-top: 6px solid #D49086;
+ padding: 3% 5%;
+ display: block;
+ float: none;
+ width: 90%;
+ max-width: 340px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.form_box_xl {
+ max-width: 460px;
+}
+
+.edit_box {
+ border-top: 6px dashed #D49086
+}
+
+.form_field_input input, .form_field_input textarea {
+ width: 100%;
+}
+
+.form_field_input {
+ margin-bottom: 10px;
+}
+
+.form_field_label {
+ margin-bottom: 4px;
+}
+
+.form_field_label {
+ font-size:1.125em;
+}
+
+.form_field_description {
+ font-style: italic;
+}
+
+.form_field_error {
+ background-color: #87453b;
+ color: #fff;
+ border: none;
+ padding: 9px;
+ margin-top: 8px;
+ margin-bottom: 8px;
+}
+
+.form_submit_buttons {
+ text-align: right;
+}
+
+.subform {
+ margin: 2em;
+}
+
+#password_boolean {
+ margin-top: 4px;
+ width: 20px;
+}
+
+textarea#description, textarea#bio {
+ resize: vertical;
+ height: 100px;
+}
+
+.delete {
+ margin-top: 36px;
+ display: block;
+ text-align: center;
+}
+
+/* comments */
+
+.comment_wrapper {
+ margin-top: 20px;
+ margin-bottom: 20px;
+}
+
+.comment_wrapper p {
+ margin-bottom: 2px;
+}
+
+.comment_author {
+ padding-top: 4px;
+ font-size: 0.9em;
+}
+
+a.comment_authorlink {
+ text-decoration: none;
+ padding-right: 5px;
+ font-weight: bold;
+ padding-left: 2px;
+}
+
+a.comment_authorlink:hover {
+ text-decoration: underline;
+}
+
+a.comment_whenlink {
+ text-decoration: none;
+}
+
+a.comment_whenlink:hover {
+ text-decoration: underline;
+}
+
+.comment_content {
+ margin-left: 8px;
+ margin-top: 8px;
+}
+
+textarea#comment_content {
+ resize: vertical;
+ width: 100%;
+ height: 90px;
+ border: none;
+ background-color: #f1f1f1;
+ padding: 3px;
+}
+
+#form_comment .form_field_input {
+ padding-right: 6px;
+}
+
+/* media galleries */
+
+.media_thumbnail {
+ float: left;
+ padding: 0px;
+ width: 180px;
+ overflow: hidden;
+ margin: 0px 3px 10px;
+ text-align: center;
+ font-size: 0.875em;
+ background-color: #222;
+ border-radius: 0 0 5px 5px;
+ padding: 0 0 6px;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ overflow: hidden;
+ border-color: #0D0D0D;
+ border-style: solid;
+ border-width: 1px 1px 2px;
+}
+
+.media_thumbnail a {
+ color: #eee;
+ text-decoration: none;
+ display: block;
+}
+
+.media_thumbnail a.remove {
+ color: #86D4B1;
+ text-decoration: underline;
+}
+
+a.thumb_entry_title {
+ padding: 8px;
+}
+
+/* For now, this is commented out since our thumbnails are actually 180px high.
+ *
+ * .media_thumbnail img {
+ * max-height: 135px;
+ * }
+ */
+
+.thumb_entry_last {
+ margin-right: 0px;
+}
+
+/* media detail */
+
+h2.media_title {
+ margin-bottom: 0px;
+ display: inline-block;
+}
+
+p.context {
+ display: inline-block;
+ padding-top: 4px;
+}
+
+p.media_specs {
+ font-size: 0.9em;
+ border-top: 1px solid #222;
+ padding: 10px 0px;
+ color: #888;
+}
+
+.no_html5 {
+ background: black;
+ color: white;
+ text-align: center;
+ height: 160px;
+ padding: 130px 10px 20px 10px;
+}
+
+a img.media_image {
+ cursor: -webkit-zoom-in;
+ cursor: -moz-zoom-in;
+ cursor: zoom-in;
+}
+
+/* icons */
+
+img.media_icon {
+ margin: 0 4px;
+ vertical-align: sub;
+}
+
+/* EXIF information */
+
+#exif_content h3 {
+ border-bottom: 1px solid #333;
+}
+
+#exif_camera_information {
+ margin-bottom: 20px;
+}
+
+#exif_additional_info {
+ display: none;
+}
+
+#exif_additional_info table {
+ font-size: 11px;
+ margin-top: 10px;
+}
+
+#exif_additional_info td {
+ vertical-align: top;
+ padding-bottom: 5px;
+}
+
+#exif_content .col1 {
+ padding-right: 20px;
+}
+
+#exif_additional_info table tr {
+ margin-bottom: 10px;
+}
+
+/* navigation */
+
+.navigation {
+ float: right;
+}
+
+.navigation_button {
+ width: 135px;
+ display: inline-block;
+ text-align: center;
+ background-color: #1d1d1d;
+ border: 1px solid;
+ border-color: #2c2c2c #232323 #1a1a1a;
+ border-radius: 4px;
+ text-decoration: none;
+ padding: 4px 0 8px;
+ margin: 0 0 6px;
+}
+
+.navigation_left {
+ margin-right: 6px;
+}
+
+/* messages */
+
+ul.mediagoblin_messages {
+ list-style: none inside;
+ color: #f7f7f7;
+ padding: 0;
+}
+
+.mediagoblin_messages li {
+ margin: 5px 0;
+ padding: 8px;
+ text-align: center;
+}
+
+.message_success {
+ background-color: #378566;
+}
+
+.message_warning {
+ background-color: #87453b;
+}
+
+.message_error {
+ background-color: #87453b;
+}
+
+.message_info {
+ background-color: #378566;
+}
+
+.message_debug {
+ background-color: #f7f7f7;
+ color: #272727;
+}
+
+ul.mediaentry_tags {
+ list-style-type: none;
+}
+
+ul.mediaentry_tags li {
+ display: inline;
+ margin: 0px 5px 0px 0px;
+ padding: 0px;
+}
+
+
+/* media processing panel */
+
+table.media_panel {
+ width: 100%;
+}
+
+table.media_panel th {
+ font-weight: bold;
+ padding-bottom: 4px;
+ text-align: left;
+}
+
+
+/* Delete panel */
+
+.delete_checkbox_box {
+ margin-top: 10px;
+ margin-left: 10px;
+}
+
+/* ASCII art and code */
+
+@font-face {
+ font-family: Inconsolata;
+ src: local('Inconsolata'), url('../fonts/Inconsolata.otf') format('opentype')
+}
+
+pre, code {
+ font-family: Inconsolata, monospace;
+ line-height: 1em;
+}
+
+pre {
+ overflow: auto;
+ margin-bottom: 20px;
+}
+
+.comment_wrapper pre {
+ margin-bottom: 2px;
+}
+
+.ascii-wrapper pre {
+ /* but it should not affect the ASCII art */
+ margin: 0;
+}
+
+/* Media queries and other responsivisivity */
+@media screen and (max-width: 940px) {
+ .media_pane {
+ width: 100%;
+ margin: 0px;
+ }
+
+ .media_sidebar {
+ width: 100%;
+ margin: 0px;
+ }
+
+ img.media_image {
+ width: 100%;
+ display: inline;
+ }
+
+ .media_thumbnail {
+ width: 21%;
+ }
+
+ .profile_sidebar {
+ width: 100%;
+ margin: 0px;
+ }
+
+ .profile_showcase {
+ width: 100%;
+ margin: 0px;
+ }
+
+ .navigation {
+ float: none;
+ }
+
+ .navigation_button {
+ width: 49%;
+ float: right;
+ }
+
+ .navigation_left {
+ margin-right: 0;
+ float: left;
+ }
+
+ .navigation {
+ float: none;
+ }
+
+ .navigation_button {
+ width: 49%;
+ float: right;
+ padding: 10px 0 14px;
+ }
+
+ .navigation_left {
+ margin-right: 0;
+ float: left;
+ }
+
+ .button_action, .button_action_highlight, .button_form {
+ padding: 9px 14px;
+ }
+
+ header {
+ text-align: center;
+ }
+
+ .header_right {
+ margin-right: 2%;
+ float: none;
+ }
+
+ a.logo {
+ margin-left: 2%;
+ }
+}
+
+@media screen and (max-width: 570px) {
+ .media_thumbnail {
+ width: 29%;
+ }
+}
+
+@media screen and (max-width: 380px) {
+ .media_thumbnail {
+ width: 46%;
+ }
+}
+
+/* Exif display */
+#exif_content h3 {
+ border-bottom: 1px solid #333;
+}
+#exif_camera_information {
+ margin-bottom: 20px;
+}
+
+#exif_additional_info {
+ display: none;
+}
+#exif_additional_info table {
+ font-size: 11px;
+ margin-top: 10px;
+}
+#exif_additional_info td {
+ vertical-align: top;
+ padding-bottom: 5px;
+}
+#exif_content .col1 {
+ padding-right: 20px;
+}
+#exif_additional_info table tr {
+ margin-bottom: 10px;
+}
diff --git a/mediagoblin/static/css/extlib/reset.css b/mediagoblin/static/css/extlib/reset.css
new file mode 120000
index 00000000..6084e137
--- /dev/null
+++ b/mediagoblin/static/css/extlib/reset.css
@@ -0,0 +1 @@
+../../../../extlib/reset/reset.css \ No newline at end of file
diff --git a/mediagoblin/static/css/vjs-mg-skin.css b/mediagoblin/static/css/vjs-mg-skin.css
new file mode 100644
index 00000000..98c4eb95
--- /dev/null
+++ b/mediagoblin/static/css/vjs-mg-skin.css
@@ -0,0 +1,415 @@
+.video-js {
+ background-color: #000; position: relative; padding: 0; outline: none;
+
+ /* Start with 10px for base font size so other dimensions can be em based and easily calculable. */
+ font-size: 10px;
+
+ width: 650px !important;
+ height: 366px !important;
+
+
+ /* Allow poster to be vertially aligned. */
+ vertical-align: middle;
+ /* display: table-cell; */ /*This works in Safari but not Firefox.*/
+}
+
+/* Playback technology elements expand to the width/height of the containing div. <video> or <object> */
+.video-js .vjs-tech { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+/* Fix for Firefox 9 fullscreen (only if it is enabled). Not needed when checking fullScreenEnabled. */
+.video-js:-moz-full-screen { position: absolute; }
+
+/* Fullscreen Styles */
+body.vjs-full-window {
+ padding: 0; margin: 0;
+ height: 100%; overflow-y: auto; /* Fix for IE6 full-window. http://www.cssplay.co.uk/layouts/fixed.html */
+}
+.video-js.vjs-fullscreen {
+ position: fixed; overflow: hidden; z-index: 1000; left: 0; top: 0; bottom: 0; right: 0; width: 100% !important; height: 100% !important;
+ _position: absolute; /* IE6 Full-window (underscore hack) */
+}
+.video-js:-webkit-full-screen {
+ width: 100% !important; height: 100% !important;
+}
+
+/* Poster Styles */
+.vjs-poster {
+ margin: 0 auto; padding: 0; cursor: pointer;
+
+ /* Scale with the size of the player div. Works when poster is vertically shorter, but stretches when it's less wide. */
+ position: relative; width: 100%; max-height: 100%;
+}
+
+/* Subtiles Styles */
+.video-js .vjs-subtitles { color: #fff; font-size: 20px; text-align: center; position: absolute; bottom: 40px; left: 0; right: 0; }
+
+/* Fading sytles, used to fade control bar. */
+.vjs-fade-in {
+ visibility: visible !important; /* Needed to make sure things hide in older browsers too. */
+ opacity: 0.9 !important;
+
+ -webkit-transition: visibility 0s linear 0s, opacity 0.3s linear;
+ -moz-transition: visibility 0s linear 0s, opacity 0.3s linear;
+ -ms-transition: visibility 0s linear 0s, opacity 0.3s linear;
+ -o-transition: visibility 0s linear 0s, opacity 0.3s linear;
+ transition: visibility 0s linear 0s, opacity 0.3s linear;
+}
+.vjs-fade-out {
+ visibility: hidden !important;
+ opacity: 0 !important;
+
+ -webkit-transition: visibility 0s linear 1.5s,opacity 1.5s linear;
+ -moz-transition: visibility 0s linear 1.5s,opacity 1.5s linear;
+ -ms-transition: visibility 0s linear 1.5s,opacity 1.5s linear;
+ -o-transition: visibility 0s linear 1.5s,opacity 1.5s linear;
+ transition: visibility 0s linear 1.5s,opacity 1.5s linear;
+}
+
+/* The control bar
+---------------------------------------------------------------------------------- */
+.vjs-mg-skin .vjs-controls {
+ position: absolute;
+ bottom: 0; /* Distance from the bottom of the box/video. Keep 0. Use height to add more bottom margin. */
+ left: 0; right: 0; /* 100% width of div */
+ margin: 0; padding: 0; /* Controls are absolutely position, so no padding necessary */
+ height: 30px; /* Including any margin you want above or below control items */
+ color: #fff; border-top: 1px solid #404040; border-bottom: 1px solid #1f1f1f;
+
+ /* CSS Gradient */
+ /* Can use the Ultimate CSS Gradient Generator: http://www.colorzilla.com/gradient-editor/ */
+ background: #242424; /* Old browsers */
+ background: -moz-linear-gradient(top, #242424 50%, #1f1f1f 50%, #171717 100%); /* FF3.6+ */
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(50%,#242424), color-stop(50%,#1f1f1f), color-stop(100%,#171717)); /* Chrome,Safari4+ */
+ background: -webkit-linear-gradient(top, #242424 50%,#1f1f1f 50%,#171717 100%); /* Chrome10+,Safari5.1+ */
+ background: -o-linear-gradient(top, #242424 50%,#1f1f1f 50%,#171717 100%); /* Opera11.10+ */
+ background: -ms-linear-gradient(top, #242424 50%,#1f1f1f 50%,#171717 100%); /* IE10+ */
+ /* Filter was causing a lot of weird issues in IE. Elements would stop showing up, or other styles would break. */
+ /*filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#242424', endColorstr='#171717',GradientType=0 );*/ /* IE6-9 */
+ background: linear-gradient(top, #242424 50%,#1f1f1f 50%,#171717 100%); /* W3C */
+
+ /* Start hidden and with 0 opacity. Opacity is used to fade in modern browsers. */
+ /* Can't use display block to hide initially because widths of slider handles aren't calculated and avaialbe for positioning correctly. */
+ visibility: hidden;
+ opacity: 0;
+}
+
+/* General styles for individual controls. */
+.vjs-mg-skin .vjs-control {
+ position: relative; float: left;
+ text-align: center; margin: 0; padding: 0;
+}
+
+.vjs-mg-skin .vjs-control:focus {
+ outline: 0;
+}
+
+/* Hide control text visually, but have it available for screenreaders: h5bp.com/v */
+.vjs-mg-skin .vjs-control-text { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; }
+
+
+
+/* Play/Pause
+-------------------------------------------------------------------------------- */
+.vjs-mg-skin .vjs-play-control { width: 38px; height: 30px; border-right: 1px solid #101010; cursor: pointer !important; border-left: 1px solid #333; border-bottom: 1px solid #1F1F1F; }
+/* Play Icon */
+.vjs-mg-skin.vjs-paused .vjs-play-control div { width: 15px; height: 17px; background: url('../images/video-js.png'); margin: 0; margin-left: 13px; margin-top: 7px; }
+.vjs-mg-skin.vjs-playing .vjs-play-control div { width: 15px; height: 17px; background: url('../images/video-js.png') -25px 0; margin: 0; margin-left: 13px; margin-top: 7px; }
+
+
+/* Rewind
+-------------------------------------------------------------------------------- */
+.vjs-mg-skin .vjs-rewind-control { width: 5em; cursor: pointer !important; }
+.vjs-mg-skin .vjs-rewind-control div { width: 19px; height: 16px; background: url('../images/video-js.png'); margin: 0.5em auto 0; }
+
+/* Volume/Mute
+-------------------------------------------------------------------------------- */
+.vjs-mg-skin .vjs-mute-control { width: 38px; height: 30px; border-left: 1px solid #333; cursor: pointer !important; float: right; }
+.vjs-mg-skin .vjs-mute-control div { width: 22px; height: 16px; background: url('../images/video-js.png') -75px -25px; margin:0; margin-left: 8px; margin-top: 8px; }
+.vjs-mg-skin .vjs-mute-control.vjs-vol-0 div { background: url('../images/video-js.png') 0 -25px; }
+.vjs-mg-skin .vjs-mute-control.vjs-vol-1 div { background: url('../images/video-js.png') -25px -25px; }
+.vjs-mg-skin .vjs-mute-control.vjs-vol-2 div { background: url('../images/video-js.png') -50px -25px; }
+
+
+.vjs-mg-skin .vjs-volume-control { width: 85px; height: 30px; float: right; border-right: 1px solid #333; }
+.vjs-mg-skin .vjs-volume-bar {
+ position: relative; width: 70px; height: 0.6em; margin:0; margin-left: 2px; margin-top: 11px; cursor: pointer !important;
+
+ /* -moz-border-radius: 0.3em; -webkit-border-radius: 0.3em; border-radius: 0.3em; */
+
+ background: #666;
+ background: -moz-linear-gradient(top, #333, #666);
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#333), to(#666));
+ background: -webkit-linear-gradient(top, #333, #666);
+ background: -o-linear-gradient(top, #333, #666);
+ background: -ms-linear-gradient(top, #333, #666);
+ background: linear-gradient(top, #333, #666);
+}
+
+.video-js:-moz .vjs-volume-bar { margin-top: 12px; }
+
+.vjs-mg-skin .vjs-volume-level {
+ position: absolute; top: 0; left: 0; height: 0.6em;
+
+ /* -moz-border-radius: 0.3em; -webkit-border-radius: 0.3em; border-radius: 0.3em; */
+ /* CSS Gradient. */
+ background: #86D4B1; /* Old browsers */
+ background: -moz-linear-gradient(top, #86D4B1 0%, #5d937a 50%, #86D4B1 100%);
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%,#86D4B1), color-stop(50%,#5d937a), color-stop(100%,#86D4B1));
+ background: -webkit-linear-gradient(top, #86D4B1 0%,#5d937a 50%,#86D4B1 100%);
+ background: -o-linear-gradient(top, #86D4B1 0%,#5d937a 50%,#86D4B1 100%);
+ background: -ms-linear-gradient(top, #86D4B1 0%,#5d937a 50%,#86D4B1 100%);
+ background: linear-gradient(top, #86D4B1 0%,#5d937a 50%,#86D4B1 100%);
+
+
+}
+.vjs-mg-skin .vjs-volume-handle {
+ position: absolute; top: -4px; width: 14px; height: 14px; left: 0;
+ background: url('../images/video-js.png') 0 -50px;
+}
+
+.video-js:-moz .vjs-volume-handle { top: -1px;}
+
+
+
+
+/* Progress
+-------------------------------------------------------------------------------- */
+.vjs-mg-skin div.vjs-progress-control {
+ position: absolute;
+ top: -15px;
+ width: 100%;
+ height: 12px;
+}
+
+/* Box containing play and load progresses. Also acts as seek scrubber. */
+.vjs-mg-skin .vjs-progress-holder {
+ position: relative; cursor: pointer !important; /*overflow: hidden;*/
+ padding: 0; margin: 0; /* Placement within the progress control item */
+ height: 12px;
+ border-top: 1px solid #333;
+ border-bottom: 1px solid #111;
+
+
+/* -moz-border-radius: 0.6em; -webkit-border-radius: 0.6em; border-radius: 0.6em; */
+
+ /* CSS Gradient */
+ background: #111;
+ background: -moz-linear-gradient(top, #111, #262626);
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#111), to(#262626));
+ background: -webkit-linear-gradient(top, #111, #262626);
+ background: -o-linear-gradient(top, #111, #262626);
+ background: -ms-linear-gradient(top, #111, #262626);
+ background: linear-gradient(top, #111, #262626);
+}
+.vjs-mg-skin .vjs-progress-holder .vjs-play-progress,
+.vjs-mg-skin .vjs-progress-holder .vjs-load-progress { /* Progress Bars */
+ position: absolute; display: block; height: 12px; margin: 0; padding: 0;
+ left: 0; top: 0; /*Needed for IE6*/
+ /* -moz-border-radius: 0.6em; -webkit-border-radius: 0.6em; border-radius: 0.6em; */
+
+ /*width: 0;*/
+}
+
+.vjs-mg-skin .vjs-play-progress {
+ /* CSS Gradient. */
+ background: #86D4B1; /* Old browsers */
+ background: -moz-linear-gradient(top, #86D4B1 0%, #5d937a 50%, #86D4B1 100%);
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%,#86D4B1), color-stop(50%,#5d937a), color-stop(100%,#86D4B1));
+ background: -webkit-linear-gradient(top, #86D4B1 0%,#5d937a 50%,#86D4B1 100%);
+ background: -o-linear-gradient(top, #86D4B1 0%,#5d937a 50%,#86D4B1 100%);
+ background: -ms-linear-gradient(top, #86D4B1 0%,#5d937a 50%,#86D4B1 100%);
+ background: linear-gradient(top, #86D4B1 0%,#5d937a 50%,#86D4B1 100%);
+
+ background: #86D4B1;
+ background: -moz-linear-gradient(top, #5d937a 0%, #5d937a 50%, #86D4B1 50%, #5d937a 100%);
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%,#5d937a), color-stop(50%,#86D4B1), color-stop(50%,#86D4B1), color-stop(100%,#5d937a));
+ background: -webkit-linear-gradient(top, #5d937a 0%,#86D4B1 50%,#86D4B1 50%,#5d937a 100%);
+ background: -o-linear-gradient(top, #5d937a 0%,#86D4B1 50%,#5d937a 50%, 100%);
+ background: -ms-linear-gradient(top, #5d937a 0%,#86D4B1 50%,#86D4B1 50%,#5d937a 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#86D4B1', endColorstr='#5d937a',GradientType=0 );
+ background: linear-gradient(top, #5d937a 0%,#86D4B1 50%,#86D4B1 50%,#5d937a 100%);
+}
+.vjs-mg-skin .vjs-load-progress {
+ opacity: 0.8;
+
+ /* CSS Gradient */
+ background: #666;
+ background: -moz-linear-gradient(top, #666, #333);
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#666), to(#333));
+ background: -webkit-linear-gradient(top, #666, #333);
+ background: -o-linear-gradient(top, #666, #333);
+ background: -ms-linear-gradient(top, #666, #333);
+ background: linear-gradient(top, #666, #333);
+}
+
+.vjs-mg-skin div.vjs-seek-handle {
+ position: absolute;
+ width: 16px; height: 16px; /* Match img pixles */
+ margin-top: -0.2em;
+ left: 0; top: 0; /*Needed for IE6*/
+
+ background: url('../images/video-js.png') 0 -50px;
+ /* CSS Curved Corners. Needed to make shadows curved. */
+ -moz-border-radius: 0.8em; -webkit-border-radius: 0.8em; border-radius: 0.8em;
+ /* CSS Shadows */
+ -webkit-box-shadow: 0 2px 4px 0 #000; -moz-box-shadow: 0 2px 4px 0 #000; box-shadow: 0 2px 4px 0 #000;
+}
+/* Time Display
+-------------------------------------------------------------------------------- */
+.vjs-mg-skin .vjs-time-controls {
+ height: 18px; width: 45px;
+ margin-top: 5px;
+ margin-left: 5px;
+ font-size: 14px; line-height: 18px; font-weight: normal; font-family: Helvetica, Arial, sans-serif;
+ border-left: 1px solid #000000;
+ border-top: 1px solid #000;
+ border-bottom: 1px solid #333;
+ border-right: 1px solid #333;
+ -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px;
+
+ /* CSS Gradient */
+ background: #111;
+ background: -moz-linear-gradient(top, #111, #262626);
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#111), to(#262626));
+ background: -webkit-linear-gradient(top, #111, #262626);
+ background: -o-linear-gradient(top, #111, #262626);
+ background: -ms-linear-gradient(top, #111, #262626);
+ background: linear-gradient(top, #111, #262626);
+
+
+}
+
+.vjs-mg-skin .vjs-current-time { }
+
+.vjs-mg-skin .vjs-duration { right: 0; display: none; }
+.vjs-mg-skin .vjs-remaining-time { display: block; }
+
+.vjs-time-divider { }
+
+.vjs-mg-skin .vjs-time-control { font-size: 12px; line-height: 16px; font-weight: normal; font-family: Helvetica, Arial, sans-serif; }
+.vjs-mg-skin .vjs-time-control span { line-height: 25px; /* Centering vertically */ }
+
+.vjs-mg-skin .vjs-time-divider { display: none; visibility: hidden; }
+
+/* Fullscreen
+-------------------------------------------------------------------------------- */
+.vjs-secondary-controls { float: right; }
+
+.vjs-mg-skin .vjs-fullscreen-control { height: 30px; width: 38px; cursor: pointer !important; float: right; border-left: 1px solid #111; }
+.vjs-mg-skin .vjs-fullscreen-control div { width: 16px; height: 16px; background: url('../images/video-js.png') -50px 0; margin: 0; margin-left: 11px; margin-top: 8px; }
+
+.video-js.vjs-fullscreen .vjs-fullscreen-control div { background: url('../images/video-js.png') -75px 0; }
+.video-js:-webkit-full-screen .vjs-fullscreen-control div { background: url('../images/video-js.png') -75px 0; }
+
+
+
+/* Big Play Button (at start)
+---------------------------------------------------------*/
+.vjs-mg-skin .vjs-big-play-button {
+ display: block; /* Start hidden */ z-index: 2;
+ position: absolute; top: 50%; left: 50%; width: 8.0em; height: 8.0em; margin: -43px 0 0 -43px; text-align: center; vertical-align: center; cursor: pointer !important;
+ border: 0.3em solid #86D4B1; opacity: 0.95;
+ -webkit-border-radius: 25px; -moz-border-radius: 25px; border-radius: 25px;
+
+ background: #454545;
+ background: -moz-linear-gradient(top, #454545 0%, #232323 50%, #161616 50%, #3f3f3f 100%);
+ background: -webkit-gradient(linear, 0% 0%, 0% 100%, color-stop(0%,#454545), color-stop(50%,#232323), color-stop(50%,#161616), color-stop(100%,#3f3f3f));
+ background: -webkit-linear-gradient(top, #454545 0%,#232323 50%,#161616 50%,#3f3f3f 100%);
+ background: -o-linear-gradient(top, #454545 0%,#232323 50%,#161616 50%,#3f3f3f 100%);
+ background: -ms-linear-gradient(top, #454545 0%,#232323 50%,#161616 50%,#3f3f3f 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#454545', endColorstr='#3f3f3f',GradientType=0 );
+ background: linear-gradient(top, #454545 0%,#232323 50%,#161616 50%,#3f3f3f 100%);
+
+ /* CSS Shadows */
+ -webkit-box-shadow: 4px 4px 8px #000; -moz-box-shadow: 4px 4px 8px #000; box-shadow: 4px 4px 8px #000;
+}
+
+.vjs-mg-skin div.vjs-big-play-button:hover {
+ -webkit-box-shadow: 0 0 80px #fff; -moz-box-shadow: 0 0 80px #fff; box-shadow: 0 0 80px #fff;
+}
+
+.vjs-mg-skin div.vjs-big-play-button span {
+ position: absolute; top: 50%; left: 50%;
+ display: block; width: 35px; height: 42px;
+ margin: -20px 0 0 -15px; /* Using negative margin to center image. */
+ background: url('../images/video-js.png') -100px 0;
+}
+
+/* Loading Spinner
+---------------------------------------------------------*/
+/* CSS Spinners by Kilian Valkhof - http://kilianvalkhof.com/2010/css-xhtml/css3-loading-spinners-without-images/ */
+.vjs-loading-spinner {
+ display: none;
+ position: absolute; top: 50%; left: 50%; width: 55px; height: 55px;
+ margin: -28px 0 0 -28px;
+ -webkit-animation-name: rotatethis;
+ -webkit-animation-duration:1s;
+ -webkit-animation-iteration-count:infinite;
+ -webkit-animation-timing-function:linear;
+ -moz-animation-name: rotatethis;
+ -moz-animation-duration:1s;
+ -moz-animation-iteration-count:infinite;
+ -moz-animation-timing-function:linear;
+}
+
+@-webkit-keyframes rotatethis {
+ 0% {-webkit-transform:scale(0.6) rotate(0deg); }
+ 12.5% {-webkit-transform:scale(0.6) rotate(0deg); }
+ 12.51% {-webkit-transform:scale(0.6) rotate(45deg); }
+ 25% {-webkit-transform:scale(0.6) rotate(45deg); }
+ 25.01% {-webkit-transform:scale(0.6) rotate(90deg);}
+ 37.5% {-webkit-transform:scale(0.6) rotate(90deg);}
+ 37.51% {-webkit-transform:scale(0.6) rotate(135deg);}
+ 50% {-webkit-transform:scale(0.6) rotate(135deg);}
+ 50.01% {-webkit-transform:scale(0.6) rotate(180deg);}
+ 62.5% {-webkit-transform:scale(0.6) rotate(180deg);}
+ 62.51% {-webkit-transform:scale(0.6) rotate(225deg);}
+ 75% {-webkit-transform:scale(0.6) rotate(225deg);}
+ 75.01% {-webkit-transform:scale(0.6) rotate(270deg);}
+ 87.5% {-webkit-transform:scale(0.6) rotate(270deg);}
+ 87.51% {-webkit-transform:scale(0.6) rotate(315deg);}
+ 100% {-webkit-transform:scale(0.6) rotate(315deg);}
+}
+
+@-moz-keyframes rotatethis {
+ 0% {-moz-transform:scale(0.6) rotate(0deg);}
+ 12.5% {-moz-transform:scale(0.6) rotate(0deg);}
+ 12.51% {-moz-transform:scale(0.6) rotate(45deg);}
+ 25% {-moz-transform:scale(0.6) rotate(45deg);}
+ 25.01% {-moz-transform:scale(0.6) rotate(90deg);}
+ 37.5% {-moz-transform:scale(0.6) rotate(90deg);}
+ 37.51% {-moz-transform:scale(0.6) rotate(135deg);}
+ 50% {-moz-transform:scale(0.6) rotate(135deg);}
+ 50.01% {-moz-transform:scale(0.6) rotate(180deg);}
+ 62.5% {-moz-transform:scale(0.6) rotate(180deg);}
+ 62.51% {-moz-transform:scale(0.6) rotate(225deg);}
+ 75% {-moz-transform:scale(0.6) rotate(225deg);}
+ 75.01% {-moz-transform:scale(0.6) rotate(270deg);}
+ 87.5% {-moz-transform:scale(0.6) rotate(270deg);}
+ 87.51% {-moz-transform:scale(0.6) rotate(315deg);}
+ 100% {-moz-transform:scale(0.6) rotate(315deg);}
+}
+/* Each circle */
+div.vjs-loading-spinner .ball1 { opacity: 0.12; position:absolute; left: 20px; top: 0px; width: 13px; height: 13px; background: #fff;
+ border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
+
+div.vjs-loading-spinner .ball2 { opacity: 0.25; position:absolute; left: 34px; top: 6px; width: 13px; height: 13px; background: #fff;
+ border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
+
+div.vjs-loading-spinner .ball3 { opacity: 0.37; position:absolute; left: 40px; top: 20px; width: 13px; height: 13px; background: #fff;
+ border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
+
+div.vjs-loading-spinner .ball4 { opacity: 0.50; position:absolute; left: 34px; top: 34px; width: 13px; height: 13px; background: #fff;
+ border-radius: 10px; -webkit-border-radius: 10px; -moz-border-radius: 15px; border: 1px solid #ccc; }
+
+div.vjs-loading-spinner .ball5 { opacity: 0.62; position:absolute; left: 20px; top: 40px; width: 13px; height: 13px; background: #fff;
+ border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
+
+div.vjs-loading-spinner .ball6 { opacity: 0.75; position:absolute; left: 6px; top: 34px; width: 13px; height: 13px; background: #fff;
+ border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
+
+div.vjs-loading-spinner .ball7 { opacity: 0.87; position:absolute; left: 0px; top: 20px; width: 13px; height: 13px; background: #fff;
+ border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
+
+div.vjs-loading-spinner .ball8 { opacity: 1.00; position:absolute; left: 6px; top: 6px; width: 13px; height: 13px; background: #fff;
+ border-radius: 13px; -webkit-border-radius: 13px; -moz-border-radius: 13px; border: 1px solid #ccc; }
diff --git a/mediagoblin/static/extlib/leaflet b/mediagoblin/static/extlib/leaflet
new file mode 120000
index 00000000..b47e2b1b
--- /dev/null
+++ b/mediagoblin/static/extlib/leaflet
@@ -0,0 +1 @@
+../../../extlib/leaflet/dist/ \ No newline at end of file
diff --git a/mediagoblin/static/extlib/pdf.js b/mediagoblin/static/extlib/pdf.js
new file mode 120000
index 00000000..f829660a
--- /dev/null
+++ b/mediagoblin/static/extlib/pdf.js
@@ -0,0 +1 @@
+../../../extlib/pdf.js \ No newline at end of file
diff --git a/mediagoblin/static/extlib/video-js b/mediagoblin/static/extlib/video-js
new file mode 120000
index 00000000..65652d6e
--- /dev/null
+++ b/mediagoblin/static/extlib/video-js
@@ -0,0 +1 @@
+../../../extlib/video-js/ \ No newline at end of file
diff --git a/mediagoblin/static/fonts/Inconsolata.otf b/mediagoblin/static/fonts/Inconsolata.otf
new file mode 120000
index 00000000..777be657
--- /dev/null
+++ b/mediagoblin/static/fonts/Inconsolata.otf
@@ -0,0 +1 @@
+../../../extlib/inconsolata/Inconsolata.otf \ No newline at end of file
diff --git a/mediagoblin/static/fonts/Lato-Bold.ttf b/mediagoblin/static/fonts/Lato-Bold.ttf
new file mode 120000
index 00000000..8b747690
--- /dev/null
+++ b/mediagoblin/static/fonts/Lato-Bold.ttf
@@ -0,0 +1 @@
+../../../extlib/lato/Lato-Bold.ttf \ No newline at end of file
diff --git a/mediagoblin/static/fonts/Lato-BoldItalic.ttf b/mediagoblin/static/fonts/Lato-BoldItalic.ttf
new file mode 120000
index 00000000..20886f02
--- /dev/null
+++ b/mediagoblin/static/fonts/Lato-BoldItalic.ttf
@@ -0,0 +1 @@
+../../../extlib/lato/Lato-BoldItalic.ttf \ No newline at end of file
diff --git a/mediagoblin/static/fonts/Lato-Italic.ttf b/mediagoblin/static/fonts/Lato-Italic.ttf
new file mode 120000
index 00000000..3e4ee80c
--- /dev/null
+++ b/mediagoblin/static/fonts/Lato-Italic.ttf
@@ -0,0 +1 @@
+../../../extlib/lato/Lato-Italic.ttf \ No newline at end of file
diff --git a/mediagoblin/static/fonts/Lato-Regular.ttf b/mediagoblin/static/fonts/Lato-Regular.ttf
new file mode 120000
index 00000000..ff8e9d2c
--- /dev/null
+++ b/mediagoblin/static/fonts/Lato-Regular.ttf
@@ -0,0 +1 @@
+../../../extlib/lato/Lato-Regular.ttf \ No newline at end of file
diff --git a/mediagoblin/static/images/404.png b/mediagoblin/static/images/404.png
new file mode 100644
index 00000000..78d746ba
--- /dev/null
+++ b/mediagoblin/static/images/404.png
Binary files differ
diff --git a/mediagoblin/static/images/background.png b/mediagoblin/static/images/background.png
new file mode 100644
index 00000000..aa101308
--- /dev/null
+++ b/mediagoblin/static/images/background.png
Binary files differ
diff --git a/mediagoblin/static/images/empty_back.png b/mediagoblin/static/images/empty_back.png
new file mode 100644
index 00000000..3522ddd3
--- /dev/null
+++ b/mediagoblin/static/images/empty_back.png
Binary files differ
diff --git a/mediagoblin/static/images/frontpage_image.png b/mediagoblin/static/images/frontpage_image.png
new file mode 100644
index 00000000..689eb2c2
--- /dev/null
+++ b/mediagoblin/static/images/frontpage_image.png
Binary files differ
diff --git a/mediagoblin/static/images/goblin.ico b/mediagoblin/static/images/goblin.ico
new file mode 100644
index 00000000..ae5a1b12
--- /dev/null
+++ b/mediagoblin/static/images/goblin.ico
Binary files differ
diff --git a/mediagoblin/static/images/goblin.png b/mediagoblin/static/images/goblin.png
new file mode 100644
index 00000000..672ed61a
--- /dev/null
+++ b/mediagoblin/static/images/goblin.png
Binary files differ
diff --git a/mediagoblin/static/images/icon_comment.png b/mediagoblin/static/images/icon_comment.png
new file mode 100644
index 00000000..76860a92
--- /dev/null
+++ b/mediagoblin/static/images/icon_comment.png
Binary files differ
diff --git a/mediagoblin/static/images/icon_feed.png b/mediagoblin/static/images/icon_feed.png
new file mode 100644
index 00000000..81889473
--- /dev/null
+++ b/mediagoblin/static/images/icon_feed.png
Binary files differ
diff --git a/mediagoblin/static/images/logo.png b/mediagoblin/static/images/logo.png
new file mode 100644
index 00000000..b40e58fb
--- /dev/null
+++ b/mediagoblin/static/images/logo.png
Binary files differ
diff --git a/mediagoblin/static/images/logo.svg b/mediagoblin/static/images/logo.svg
new file mode 100644
index 00000000..ad750c97
--- /dev/null
+++ b/mediagoblin/static/images/logo.svg
@@ -0,0 +1,116 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="554"
+ height="101.99998"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.48.1 r9760"
+ sodipodi:docname="logo.svg"
+ inkscape:export-filename="/home/jef/mediagoblin/user_dev/themes/airy/assets/images/logo.png"
+ inkscape:export-xdpi="17.889999"
+ inkscape:export-ydpi="17.889999">
+ <defs
+ id="defs4" />
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="1"
+ inkscape:cx="100.13053"
+ inkscape:cy="65.605728"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ borderlayer="true"
+ inkscape:showpageshadow="false"
+ inkscape:window-width="1680"
+ inkscape:window-height="992"
+ inkscape:window-x="0"
+ inkscape:window-y="26"
+ inkscape:window-maximized="1"
+ inkscape:snap-bbox="true"
+ inkscape:bbox-paths="true"
+ inkscape:bbox-nodes="true"
+ inkscape:snap-bbox-midpoints="true"
+ inkscape:snap-bbox-edge-midpoints="true"
+ inkscape:object-paths="true"
+ inkscape:object-nodes="true"
+ inkscape:snap-midpoints="true"
+ inkscape:snap-smooth-nodes="true"
+ inkscape:snap-intersection-paths="true"
+ inkscape:snap-object-midpoints="true"
+ inkscape:snap-center="true"
+ inkscape:snap-page="true"
+ showguides="false"
+ inkscape:guide-bbox="true"
+ inkscape:snap-global="true"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ showborder="false">
+ <sodipodi:guide
+ orientation="1,0"
+ position="1062.0155,252.54874"
+ id="guide3002" />
+ <inkscape:grid
+ type="xygrid"
+ id="grid4021"
+ empspacing="5"
+ visible="true"
+ enabled="true"
+ snapvisiblegridlinesonly="true" />
+ <sodipodi:guide
+ orientation="0,1"
+ position="62.322892,118.88571"
+ id="guide3814" />
+ <sodipodi:guide
+ orientation="0,1"
+ position="154.25003,65.249969"
+ id="guide3816" />
+ </sodipodi:namedview>
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="main"
+ inkscape:groupmode="layer"
+ id="layer1"
+ transform="translate(865.93433,-886.66071)">
+ <g
+ id="g3010"
+ transform="matrix(0.68692139,0,0,0.52224846,-26.609327,197.42947)" />
+ <g
+ id="g3951"
+ transform="matrix(0.75599155,0,0,0.75599155,-269.59547,339.3242)" />
+ <g
+ transform="matrix(0.75599155,0,0,0.75599155,5.8142558,339.3242)"
+ id="g3969" />
+ <path
+ id="path3051"
+ style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#797979;fill-opacity:1;stroke:none;stroke-width:11;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans"
+ d="m -498.47812,909.8741 c -14.29997,-0.25966 -24.30551,9.34241 -26.50888,22.91161 -2.4313,14.97291 6.8419,28.27685 20.6875,30.5 13.84559,2.22316 27.00531,-7.50109 29.46875,-22.46875 2.41774,-14.68996 -7.14681,-30.64325 -23.64737,-30.94286 z m -1.10263,8.03661 c 11.82552,0.0748 16.8356,12.60864 15.5625,21.78125 -1.4685,10.58046 -9.88714,17.25696 -18.65625,15.6875 -8.7691,-1.56946 -14.66487,-10.77344 -13.125,-21.34375 1.3955,-9.57934 8.39284,-16.17451 16.21875,-16.125 z m 130.09735,-24.04343 c 0,3.62036 -2.93488,6.55525 -6.55524,6.55525 -3.62036,0 -6.55524,-2.93489 -6.55524,-6.55525 0,-3.62036 2.93488,-6.55524 6.55524,-6.55524 3.62036,0 6.55524,2.93488 6.55524,6.55524 z m -11.15801,16.87173 0,51.92717 9.20553,0 0,-51.92717 z m -280.41892,6e-5 0,51.92717 9.20553,0 0,-51.92717 z m 11.15802,-16.87173 c 0,3.62036 -2.93488,6.55525 -6.55524,6.55525 -3.62037,0 -6.55525,-2.93489 -6.55525,-6.55525 0,-3.62036 2.93488,-6.55524 6.55525,-6.55524 3.62036,0 6.55524,2.93488 6.55524,6.55524 z m 91.82766,15.94962 c -17.68301,0 -26.96853,15.66588 -26.96875,26.8125 -3.2e-4,16.07708 10.57093,26.13091 23.6875,26.875 4.79063,0.27178 11.67595,-0.19435 17.96875,-6.34375 0.25,15.44904 -3.39617,22.87085 -13.875,23.25 -7.92125,0.28661 -13.39214,-3.93545 -15.75595,-10.70298 l -7.46875,0 c 1.52404,7.39528 6.81992,18.97887 23.75595,18.64048 16.96269,-0.33892 22.5625,-13.84938 22.5625,-30.6875 l 0,-29.5625 c -0.0225,-6.25597 0.90001,-12.00727 2.71875,-17.34375 l -7.4375,0 c -0.95827,2.12785 -1.63064,4.94081 -2.27681,7.63925 -3.53047,-5.63263 -9.91399,-8.57675 -16.91069,-8.57675 z m 15.09375,27.75 c 0,9.35634 -7.1389,18.15625 -17.21875,18.15625 -10.36378,0 -15.59375,-9.243 -15.59375,-18.28125 0,-7.95083 4.08876,-18.88021 16.15625,-19.65625 7.84943,-0.50479 16.39174,7.25265 16.65625,19.78125 z m -143.1507,-50.84375 0,29.03125 c -3.26199,-4.21342 -10.81819,-6.62398 -16.34375,-6.3125 -17.88151,1.00802 -25.3123,17.2168 -25.3125,27.25 -3.2e-4,16.07708 10.47719,26.7559 23.59375,27.5 5.19493,0.29471 13.81969,-1.57948 19.625,-9.1875 0.60295,2.26134 1.86305,5.37114 3.15625,7.65625 l 7.4375,0 c -2.12044,-5.15404 -2.9375,-10.37795 -2.9375,-18.53125 l 0,-57.40625 z m -16.34375,30.875 c 12.02937,-0.0869 16.24638,9.43483 16.65625,19.59375 0,11.03464 -8.39635,19.0625 -17.21875,19.0625 -9.45765,0 -15.76506,-9.58978 -15.53125,-18.625 0.20843,-8.0541 4.61687,-19.94837 16.09375,-20.03125 z m -54.5723,-7.71875 c -14.69916,0 -25.74033,13.03618 -25.75,27.4375 -0.01,14.78695 10.244,26.125 23.65625,26.125 13.17686,0 17.98713,-4.04194 21.40625,-7.1875 l -4.3125,-5.0625 c -3.0707,2.07296 -7.16015,4.5625 -15.96875,4.5625 -7.45652,0 -14.61337,-5.22342 -15.5625,-14.375 12.17349,2.42928 34.34076,3.97324 38.34375,-8.3125 4.15154,-12.74162 -9.23233,-23.1875 -21.8125,-23.1875 z m -0.1875,7.875 c 7.44103,-0.28295 15.86681,7.08099 13.34375,12.5625 -1.07884,2.34384 -4.36121,3.84759 -11.0625,4.1875 -4.72973,0.2399 -11.67545,0.0602 -18.53125,-1.53125 1.38994,-7.13675 6.98538,-14.86646 16.25,-15.21875 z m 138.94915,-7.84375 c -6.22358,0 -12.35769,2.10385 -17.4375,5.78125 l 3.75,5.65625 c 4.03537,-2.17319 9.28716,-3.79268 14.34375,-3.46875 6.55828,0.42013 14.7598,2.73287 14.7598,14.233 -1.85084,-1.38482 -9.08908,-2.44485 -13.54105,-2.57675 -13.63282,-0.40393 -22.07092,5.70413 -22.86428,15.3125 -1.14325,13.84598 10.26769,18.625 20.33303,18.625 7.39807,5.2e-4 15.35814,-5.72151 17,-8.4375 0.43984,2.49906 2.01961,5.57335 3.125,7.625 l 7.46875,0 c -2.12043,-5.15404 -2.96875,-10.37795 -2.96875,-18.53125 l 0,-9.84375 c 0,-24.39387 -18.81089,-24.375 -23.96875,-24.375 z m 0.78125,27.4375 c 8.05656,-0.0156 14.8125,1.66674 14.8125,4.01961 0,6.72106 -7.55371,13.8524 -16.4375,14.23039 -4.54841,0.19353 -11.57496,-2.09719 -11.48928,-9.59375 0.0808,-7.06964 7.87645,-8.64609 13.11428,-8.65625 z m -223.80458,-27.53125 c -7.78959,0 -12.57316,3.37364 -14.53125,6.625 -0.75834,-1.89688 -1.49654,-3.84633 -2.375,-5.6875 l -7.4375,0 c 2.20887,5.93379 2.73712,12.19296 2.71875,17.3125 l 0,34.59375 9.21875,0 0,-34.78125 c 0,-6.65558 6.44423,-10.26976 12.4375,-10.40625 6.57556,-0.14975 9.05752,3.56709 9.125,8.90625 l 0,36.28125 9.1875,0 0,-34.78125 c 0,-6.65558 6.44424,-10.26976 12.4375,-10.40625 6.57556,-0.14975 9.18251,3.56709 9.25,8.90625 l 0,36.28125 9.21875,0 0,-36.28125 c 0,-11.16352 -8.04836,-16.5625 -18.5,-16.5625 -7.68395,0 -13.41885,3.49982 -15.34375,6.53125 -3.21828,-4.38545 -8.81153,-6.53125 -15.40625,-6.53125 z m 435.58675,-23.11502 0,60.98954 c 0,4.50655 1.82444,11.36243 4.13429,14.95446 l 7.46542,0 c -1.71595,-4.95183 -2.38614,-11.95254 -2.38614,-18.52179 l 0,-57.42221 z m -59.85447,0.0213 0,57.40625 c 0,8.48573 -0.72207,13.98198 -2.5625,18.53125 l 7.46875,0 c 0.49268,-1.18272 1.50645,-4.57275 2.125,-6.375 3.2358,3.63861 9.91843,7.15293 16.6875,7.28125 17.0179,0 26.83165,-13.62855 27.09375,-25.84375 0.32424,-15.11836 -9.23098,-28.09919 -25.40625,-27.96875 -7.10965,0.0573 -12.81683,3.2018 -16.1875,7.1875 l 0,-30.21875 -9.21875,0 z m 25.125,30.96875 c 0.34959,-0.0146 0.70152,-0.008 1.0625,0 6.22899,0.13299 15.65387,5.56214 15.4375,19.65625 -0.16934,11.02718 -8.18402,18.37679 -16.84375,18.34375 -11.39711,-0.0435 -15.84382,-8.59471 -15.84375,-18.8125 0,-7.75719 5.35029,-18.73358 16.1875,-19.1875 z m 107.7562,-7.80926 c -7.78958,0 -13.83625,3.29749 -15.79433,6.54885 -0.67753,-1.63171 -1.5038,-3.80006 -2.38135,-5.68127 l -7.4404,0 c 2.20887,5.93379 2.75814,12.20005 2.73977,17.31959 l 0,34.58661 9.20554,0 0,-34.77561 c 0,-6.65558 7.70716,-9.7658 13.70041,-9.90229 6.57556,-0.14975 10.98867,3.05115 11.05615,8.39031 l 0,36.28759 9.20552,0 0,-36.28759 c 0,-11.16352 -9.83967,-16.48619 -20.29131,-16.48619 z"
+ inkscape:connector-curvature="0" />
+ </g>
+</svg>
diff --git a/mediagoblin/static/images/media_thumbs/image.png b/mediagoblin/static/images/media_thumbs/image.png
new file mode 100644
index 00000000..8437a298
--- /dev/null
+++ b/mediagoblin/static/images/media_thumbs/image.png
Binary files differ
diff --git a/mediagoblin/static/images/media_thumbs/video.jpg b/mediagoblin/static/images/media_thumbs/video.jpg
new file mode 100644
index 00000000..841dc796
--- /dev/null
+++ b/mediagoblin/static/images/media_thumbs/video.jpg
Binary files differ
diff --git a/mediagoblin/static/images/video-js.png b/mediagoblin/static/images/video-js.png
new file mode 100644
index 00000000..58cd813d
--- /dev/null
+++ b/mediagoblin/static/images/video-js.png
Binary files differ
diff --git a/mediagoblin/static/js/audio.js b/mediagoblin/static/js/audio.js
new file mode 100644
index 00000000..50d58cd9
--- /dev/null
+++ b/mediagoblin/static/js/audio.js
@@ -0,0 +1,229 @@
+/**
+ * GNU MediaGoblin -- federated, autonomous media hosting
+ * Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+var audioPlayer = new Object();
+
+(function (audioPlayer) {
+ audioPlayer.init = function (audioElement) {
+ audioPlayer.audioElement = audioElement;
+
+ console.log(audioElement);
+
+ attachEvents();
+
+ $(audioElement).hide();
+ };
+
+ function attachEvents () {
+ audioPlayer.audioElement.addEventListener(
+ 'durationchange', audioPlayer.durationChange, true);
+ audioPlayer.audioElement.addEventListener(
+ 'timeupdate', audioPlayer.timeUpdate, true);
+ audioPlayer.audioElement.addEventListener(
+ 'progress', audioPlayer.onProgress, true);
+ audioPlayer.audioElement.addEventListener(
+ 'ended', audioPlayer.onEnded, true);
+
+ $(document).ready( function () {
+ $('.audio-spectrogram').delegate(
+ '.seekbar', 'click', audioPlayer.onSeek);
+ $('.audio-spectrogram').delegate(
+ '.audio-control-play-pause', 'click', audioPlayer.playPause);
+ $('.audio-spectrogram').delegate(
+ '.audio-volume', 'change', audioPlayer.onVolumeChange);
+ $('.audio-media').delegate(
+ '.audio-spectrogram', 'attachedControls',
+ audioPlayer.onControlsAttached);
+ });
+ }
+
+ audioPlayer.onVolumeChange = function(e) {
+ console.log('volume change', e);
+ audioPlayer.audioElement.volume = e.target.value;
+ }
+
+ audioPlayer.onControlsAttached = function(e) {
+ console.log('Controls attached', e);
+ $('.audio-spectrogram .audio-volume').val(
+ Math.round(audioPlayer.audioElement.volume, 2));
+ }
+
+ audioPlayer.onProgress = function(e) {
+ /**
+ * Handler for file download progress
+ */
+ console.log(e);
+
+ var buffered = audioPlayer.audioElement.buffered;
+
+ ranges = new Array();
+
+ var indicators = $('.audio-spectrogram .buffered-indicators div');
+
+ for (var i = 0; i < buffered.length; i++) {
+ if (!(i in indicators)) {
+ $('<div style="display: none;"></div>')
+ .appendTo($('.audio-spectrogram .buffered-indicators'))
+ .fadeIn(500);
+ indicators = $('.audio-spectrogram .buffered-indicators div');
+ }
+ var posStart = ((buffered.start(i) / audioPlayer.audioElement.duration)
+ * audioPlayer.imageElement.width());
+ var posStop = ((buffered.end(i) / audioPlayer.audioElement.duration)
+ * audioPlayer.imageElement.width());
+ console.log('indicators', indicators);
+
+ var indicator = $(indicators[i]);
+
+ indicator.css('left', posStart);
+ indicator.css('width', posStop - posStart);
+ }
+
+ /*
+ * Clean up unused indicators
+ */
+ if (indicators.length > buffered.length) {
+ for (var i = buffered.length; i < indicators.length; i++) {
+ $(indicators[i]).fadeOut(500, function () {
+ this.remove();
+ });
+ }
+ }
+ };
+
+ audioPlayer.onSeek = function (e) {
+ /**
+ * Callback handler for seek event, which is a .click() event on the
+ * .seekbar element
+ */
+ console.log('onSeek', e);
+
+ var im = audioPlayer.imageElement;
+ var pos = (e.offsetX || e.originalEvent.layerX) / im.width();
+
+ audioPlayer.audioElement.currentTime = pos * audioPlayer.audioElement.duration;
+ audioPlayer.audioElement.play();
+ audioPlayer.setState(audioPlayer.PLAYING);
+ };
+
+ audioPlayer.onEnded = function (e) {
+ audioPlayer.setState(audioPlayer.PAUSED);
+ }
+
+ audioPlayer.playPause = function (e) {
+ console.log('playPause', e);
+ if (audioPlayer.audioElement.paused) {
+ audioPlayer.audioElement.play();
+ audioPlayer.setState(audioPlayer.PLAYING);
+ } else {
+ audioPlayer.audioElement.pause();
+ audioPlayer.setState(audioPlayer.PAUSED);
+ }
+ };
+
+ audioPlayer.NULL = null;
+ audioPlayer.PLAYING = 2;
+ audioPlayer.PAUSED = 4;
+
+ audioPlayer.state = audioPlayer.NULL;
+
+ audioPlayer.setState = function (state) {
+ if (state == audioPlayer.state) {
+ return;
+ } else {
+ audioPlayer.state = state;
+ }
+
+ switch (state) {
+ case audioPlayer.PLAYING:
+ $('.audio-spectrogram .audio-control-play-pause')
+ .removeClass('paused').addClass('playing')
+ .text('▮▮');
+ break;
+ case audioPlayer.PAUSED:
+ $('.audio-spectrogram .audio-control-play-pause')
+ .removeClass('playing').addClass('paused')
+ .text('▶');
+ break;
+ }
+ };
+
+ audioPlayer.durationChange = function () {
+ // ???
+ };
+
+ audioPlayer.timeUpdate = function () {
+ /**
+ * Callback handler for the timeupdate event, responsible for
+ * updating the playhead
+ */
+ var currentTime = audioPlayer.audioElement.currentTime;
+ var playhead = audioPlayer.imageElement.parent().find('.playhead');
+ playhead.css('width', (currentTime / audioPlayer.audioElement.duration)
+ * audioPlayer.imageElement.width());
+ var time = formatTime(currentTime);
+ var duration = formatTime(audioPlayer.audioElement.duration);
+ audioPlayer.imageElement.parent()
+ .find('.audio-currentTime')
+ .text(time + '/' + duration);
+ };
+
+ function formatTime(seconds) {
+ /**
+ * Format a time duration in (hh:)?mm:ss manner
+ */
+ var h = Math.floor(seconds / (60 * 60));
+ var m = Math.floor((seconds - h * 60 * 60) / 60);
+ var s = Math.round(seconds - h * 60 * 60 - m * 60);
+ return '' + (h ? (h < 10 ? '0' + h : h) + ':' : '') + (m < 10 ? '0' + m : m) + ':' + (s < 10 ? '0' + s : s);
+ }
+
+ audioPlayer.formatTime = formatTime;
+
+ audioPlayer.attachToImage = function (imageElement) {
+ /**
+ * Attach the player to an image element
+ */
+ console.log(imageElement);
+
+ var im = $(imageElement);
+
+ audioPlayer.imageElement = im;
+
+ $('<div class="playhead"></div>').appendTo(im.parent());
+ $('<div class="buffered-indicators"></div>').appendTo(im.parent());
+ $('<div class="seekbar"></div>').appendTo(im.parent());
+ $('<div class="audio-control-play-pause paused">▶</div>').appendTo(im.parent());
+ $('<div class="audio-currentTime">00:00</div>').appendTo(im.parent());
+ $('<input type="range" class="audio-volume"'
+ +'value="1" min="0" max="1" step="0.001" />').appendTo(im.parent());
+ $('.audio-spectrogram').trigger('attachedControls');
+ };
+})(audioPlayer);
+
+$(document).ready(function () {
+ if (!$('.audio-media').length) {
+ return;
+ }
+
+ console.log('Initializing audio player');
+
+ audioElements = $('.audio-media .audio-player');
+ audioPlayer.init(audioElements[0]);
+ audioPlayer.attachToImage($('.audio-spectrogram img')[0]);
+});
diff --git a/mediagoblin/static/js/autofilledin_password.js b/mediagoblin/static/js/autofilledin_password.js
new file mode 100644
index 00000000..45e867fe
--- /dev/null
+++ b/mediagoblin/static/js/autofilledin_password.js
@@ -0,0 +1,25 @@
+/**
+ * GNU MediaGoblin -- federated, autonomous media hosting
+ * Copyright (C) 2012 MediaGoblin contributors. See AUTHORS.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+$(document).ready(function(){
+ $('#forgot_password').click(function(event){
+ event.preventDefault();
+ window.location.pathname = $(this).attr('href') + '?username=' +
+ $('#username').val();
+ });
+});
diff --git a/mediagoblin/static/js/collection_form_show.js b/mediagoblin/static/js/collection_form_show.js
new file mode 100644
index 00000000..03a4906b
--- /dev/null
+++ b/mediagoblin/static/js/collection_form_show.js
@@ -0,0 +1,26 @@
+/**
+ * GNU MediaGoblin -- federated, autonomous media hosting
+ * Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+$(document).ready(function(){
+ $('#new_collection').hide();
+ $('#button_addcollection').click(function(){
+ $('#new_collection').slideToggle('fast', function(){
+ $('#collection_title').focus();
+ });
+ });
+});
diff --git a/mediagoblin/static/js/comment_show.js b/mediagoblin/static/js/comment_show.js
new file mode 100644
index 00000000..c5ccee66
--- /dev/null
+++ b/mediagoblin/static/js/comment_show.js
@@ -0,0 +1,27 @@
+/**
+ * GNU MediaGoblin -- federated, autonomous media hosting
+ * Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+$(document).ready(function(){
+ $('#form_comment').hide();
+ $('#button_addcomment').click(function(){
+ $(this).fadeOut('fast');
+ $('#form_comment').slideDown(function(){
+ $('#comment_content').focus();
+ });
+ });
+});
diff --git a/mediagoblin/static/js/extlib/html5slider.js b/mediagoblin/static/js/extlib/html5slider.js
new file mode 120000
index 00000000..feae2cb8
--- /dev/null
+++ b/mediagoblin/static/js/extlib/html5slider.js
@@ -0,0 +1 @@
+../../../../extlib/html5slider/html5slider.js \ No newline at end of file
diff --git a/mediagoblin/static/js/extlib/jquery.js b/mediagoblin/static/js/extlib/jquery.js
new file mode 120000
index 00000000..d78f5cc3
--- /dev/null
+++ b/mediagoblin/static/js/extlib/jquery.js
@@ -0,0 +1 @@
+../../../../extlib/jquery/jquery.js \ No newline at end of file
diff --git a/mediagoblin/static/js/extlib/leaflet b/mediagoblin/static/js/extlib/leaflet
new file mode 120000
index 00000000..2fc302d7
--- /dev/null
+++ b/mediagoblin/static/js/extlib/leaflet
@@ -0,0 +1 @@
+../../../../extlib/leaflet/dist/ \ No newline at end of file
diff --git a/mediagoblin/static/js/extlib/thingiview.js b/mediagoblin/static/js/extlib/thingiview.js
new file mode 120000
index 00000000..b7c842ba
--- /dev/null
+++ b/mediagoblin/static/js/extlib/thingiview.js
@@ -0,0 +1 @@
+../../../../extlib/thingiview.js/ \ No newline at end of file
diff --git a/mediagoblin/static/js/geolocation-map.js b/mediagoblin/static/js/geolocation-map.js
new file mode 100644
index 00000000..26d94c5d
--- /dev/null
+++ b/mediagoblin/static/js/geolocation-map.js
@@ -0,0 +1,47 @@
+/**
+ * GNU MediaGoblin -- federated, autonomous media hosting
+ * Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+$(document).ready(function () {
+ if (!$('#tile-map').length) {
+ return;
+ }
+ console.log('Initializing map');
+
+ var longitude = Number(
+ $('#tile-map #gps-longitude').val());
+ var latitude = Number(
+ $('#tile-map #gps-latitude').val());
+
+ // Get a new map instance attached and element with id="tile-map"
+ var map = new L.Map('tile-map');
+
+ var mqtileUrl = 'http://otile{s}.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.jpg';
+ var mqtileAttrib = '<a id="osm_license_link">see map license</a>';
+ var mqtile = new L.TileLayer(
+ mqtileUrl,
+ {maxZoom: 18,
+ attribution: mqtileAttrib,
+ subdomains: '1234'});
+
+ map.attributionControl.setPrefix('');
+ var location = new L.LatLng(latitude, longitude);
+ map.setView(location, 13).addLayer(mqtile);
+
+ var marker = new L.Marker(location);
+ map.addLayer(marker);
+});
diff --git a/mediagoblin/static/js/header_dropdown.js b/mediagoblin/static/js/header_dropdown.js
new file mode 100644
index 00000000..1b2fb00f
--- /dev/null
+++ b/mediagoblin/static/js/header_dropdown.js
@@ -0,0 +1,27 @@
+/**
+ * GNU MediaGoblin -- federated, autonomous media hosting
+ * Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+$(document).ready(function(){
+ $(".header_dropdown").hide();
+ $(".header_dropdown_up").hide();
+ $(".header_dropdown_down,.header_dropdown_up").click(function() {
+ $(".header_dropdown_down").toggle();
+ $(".header_dropdown_up").toggle();
+ $(".header_dropdown").slideToggle();
+ });
+});
diff --git a/mediagoblin/static/js/keyboard_navigation.js b/mediagoblin/static/js/keyboard_navigation.js
new file mode 100644
index 00000000..7401e4d8
--- /dev/null
+++ b/mediagoblin/static/js/keyboard_navigation.js
@@ -0,0 +1,41 @@
+/**
+ * GNU MediaGoblin -- federated, autonomous media hosting
+ * Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/* It must be wrapped into a function and you also cannot use
+ * $(':not(textarea, input)') because of some reason. */
+
+$(document).ready(function(){
+ $('textarea, input').keydown(function(event){
+ event.stopPropagation();
+ });
+});
+
+$(document).keydown(function(event){
+ switch(event.which){
+ case 37:
+ if($('a.navigation_left').length) {
+ window.location = $('a.navigation_left').attr('href');
+ }
+ break;
+ case 39:
+ if($('a.navigation_right').length) {
+ window.location = $('a.navigation_right').attr('href');
+ }
+ break;
+ }
+});
diff --git a/mediagoblin/static/js/show_password.js b/mediagoblin/static/js/show_password.js
new file mode 100644
index 00000000..b3fbc862
--- /dev/null
+++ b/mediagoblin/static/js/show_password.js
@@ -0,0 +1,38 @@
+/**
+ * GNU MediaGoblin -- federated, autonomous media hosting
+ * Copyright (C) 2011, 2012 MediaGoblin contributors. See AUTHORS.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+$(document).ready(function(){
+ //Create a duplicate password field. We could change the input type dynamically, but this angers the IE gods (not just IE6).
+ $("#password").after('<input type="text" value="" name="password_clear" id="password_clear" /><label><input type="checkbox" id="password_boolean" />Show password</label>');
+ $('#password_clear').hide();
+ $('#password_boolean').click(function(){
+ if($('#password_boolean').prop("checked")) {
+ $('#password_clear').val($('#password').val());
+ $('#password').hide();
+ $('#password_clear').show();
+ } else {
+ $('#password').val($('#password_clear').val());
+ $('#password_clear').hide();
+ $('#password').show();
+ };
+ });
+ $('#password,#password_clear').keyup(function(){
+ $('#password').val($(this).val());
+ $('#password_clear').val($(this).val());
+ });
+});