#fc-header-right {
margin-top: -4px;
}
++#fc-header-right button {
++ color: inherit;
++}
#event-calendar-title {
vertical-align: middle;
}
font-size: 14px;
font-weight: 600;
padding: 8px 16px;
++ color: inherit;
}
.btn-default {
outline: 0;
background: $btn_primary_hover_color !important;
}
-.btn-default:active, .btn-default.active {
- color: $link_color;
-}
-.btn-default:active:hover, .btn-default.active:hover {
- color: $link_hover_color;
-}
++
.btn-primary.active.focus, .btn-primary.active:focus, .btn-primary.active:hover,
.btn-primary:active.focus, .btn-primary:active:focus, .btn-primary:active:hover,
.open>.dropdown-toggle.btn-primary.focus, .open>.dropdown-toggle.btn-primary:focus,
}
.btn-link {
+ border: 0;
color: $link_color;
- }
- .btn-link:focus, .btn-link:hover {
- color: #23527c;
+ padding-left: 0;
+ padding-right: 0;
}
-.btn {
- color: inherit;
-}
.btn-eventnav, btn-eventnav:hover {
font-size: 16px;
background: none;
.wall-item-actions .button-comments,
.wall-item-actions .button-votes,
.wall-item-actions .button-likes {
- padding-left: 0px;
- padding-right: 0px;
text-transform: capitalize;
}
++.wall-item-actions button:hover {
++ color: #555;
++ text-decoration: underline;
++}
+ .wall-item-actions .separator {
+ margin: 0 .3em;
+ }
/* wall item hover effects */
.wall-item-container .wall-item-links,
}\r
};\r
\r
- console.log("FileBrowser:", nickname, type,FileBrowser.event, FileBrowser.id );\r
+ console.log("FileBrowser:", nickname, type,FileBrowser.event, FileBrowser.id);\r
\r
- // We need to add the AjaxUpload to the button\r
- FileBrowser.uploadButtons();\r
+ FileBrowser.postLoad();\r
\r
- $(".error a.close").on("click", function(e) {\r
+ $(".error .close").on("click", function(e) {\r
e.preventDefault();\r
$(".error").addClass("hidden");\r
});\r
return text;
}
-}
+ /**
+ * Sends a /like API call and updates the display of the relevant action button
+ * before the update reloads the item.
+ *
+ * @param {string} ident The id of the relevant item
+ * @param {string} verb The verb of the action
+ * @returns {undefined}
+ */
+ function doLikeAction(ident, verb) {
+ unpause();
+
+ if (verb.indexOf('attend') === 0) {
+ $('.item-' + ident + ' .button-event:not(#' + verb + '-' + ident + ')').removeClass('active');
+ }
+ $('#' + verb + '-' + ident).toggleClass('active');
+ $('#like-rotator-' + ident.toString()).show();
+ $.get('like/' + ident.toString() + '?verb=' + verb, NavUpdate );
+ liking = 1;
+ force_update = true;
- }
++}
++
+// Decodes a hexadecimally encoded binary string
+function hex2bin (s) {
+ // discuss at: http://locutus.io/php/hex2bin/
+ // original by: Dumitru Uzun (http://duzun.me)
+ // example 1: hex2bin('44696d61')
+ // returns 1: 'Dima'
+ // example 2: hex2bin('00')
+ // returns 2: '\x00'
+ // example 3: hex2bin('2f1q')
+ // returns 3: false
+ var ret = [];
+ var i = 0;
+ var l;
+ s += '';
+
+ for (l = s.length; i < l; i += 2) {
+ var c = parseInt(s.substr(i, 1), 16);
+ var k = parseInt(s.substr(i + 1, 1), 16);
+ if (isNaN(c) || isNaN(k)) {
+ return false;
+ }
+ ret.push((c << 4) | k);
+ }
+ return String.fromCharCode.apply(String, ret);
+}
+
+// Convert binary data into hexadecimal representation
+function bin2hex (s) {
+ // From: http://phpjs.org/functions
+ // + original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
+ // + bugfixed by: Onno Marsman
+ // + bugfixed by: Linuxworld
+ // + improved by: ntoniazzi (http://phpjs.org/functions/bin2hex:361#comment_177616)
+ // * example 1: bin2hex('Kev');
+ // * returns 1: '4b6576'
+ // * example 2: bin2hex(String.fromCharCode(0x00));
+ // * returns 2: '00'
+
+ var i, l, o = "", n;
+
+ s += "";
+
+ for (i = 0, l = s.length; i < l; i++) {
+ n = s.charCodeAt(i).toString(16);
+ o += n.length < 2 ? "0" + n : n;
+ }
+
+ return o;
++}
<input id="fb-nickname" type="hidden" name="type" value="{{$nickname}}" />
<input id="fb-type" type="hidden" name="type" value="{{$type}}" />
- <div class="error hidden">
- <span></span> <button type="button" class="btn btn-link" class="close">X</a>
- </div>
-
- <div class="path">
- {{foreach $path as $p}}<button type="button" class="btn-link" data-folder="{{$p.0}}">{{$p.1}}</button>{{/foreach}}
- </div>
-
- {{if $folders }}
- <div class="folders">
- <ul>
- {{foreach $folders as $f}}<li><button type="button" class="btn-link" data-folder="{{$f.0}}">{{$f.1}}</button></li>{{/foreach}}
- </ul>
- </div>
- {{/if}}
-
- <div class="list">
- {{foreach $files as $f}}
- <div class="photo-album-image-wrapper">
- <button type="button" class="btn btn-link photo-album-photo-link" data-link="{{$f.0}}" data-filename="{{$f.1}}" data-img="{{$f.2}}">
- <img src="{{$f.2}}">
- <p>{{$f.1}}</p>
- </button>
+ <div class="error hidden">
- <span></span> <a href="#" class='close'>X</a>
++ <span></span> <button type="button" class="btn btn-link" class="close">X</a>
+ </div>
+
+ {{* The breadcrumb navigation *}}
+ <ol class="path breadcrumb">
+ {{foreach $path as $p}}<li><a href="#" data-folder="{{$p.0}}">{{$p.1}}</a></li>{{/foreach}}
+
+ {{* Switch between image and file mode *}}
+ <div class="fbswitcher btn-group btn-group-xs pull-right">
+ <button type="button" class="btn btn-default" data-mode="image"><i class="fa fa-picture-o" aria-hidden="true"></i></button>
+ <button type="button" class="btn btn-default" data-mode="file"><i class="fa fa-file-o" aria-hidden="true"></i></button>
+ </div>
+ </ol>
+
+ <div class="media">
+
+ {{* List of photo albums *}}
+ {{if $folders }}
+ <div class="folders media-left">
+ <ul>
+ {{foreach $folders as $f}}<li><a href="#" data-folder="{{$f.0}}">{{$f.1}}</a></li>{{/foreach}}
+ </ul>
+ </div>
+ {{/if}}
+
+ {{* The main content (images or files) *}}
+ <div class="list {{$type}} media-body">
+ <div class="fbrowser-content-container">
+ {{foreach $files as $f}}
+ <div class="photo-album-image-wrapper">
+ <a href="#" class="photo-album-photo-link" data-link="{{$f.0}}" data-filename="{{$f.1}}" data-img="{{$f.2}}">
+ <img src="{{$f.2}}" alt="{{$f.1}}">
+ <p>{{$f.1}}</p>
+ </a>
+ </div>
+ {{/foreach}}
+ </div>
</div>
- {{/foreach}}
</div>
<div class="upload">
<ul class="nav nav-tabs hidden-xs jot-nav" role="menubar" data-tabs="tabs">
{{* Mark the first list entry as active because it is the first which is active after opening
the modal. Changing of the activity status is done by js in jot.tpl-header *}}
- <li class="active" role="menuitem"><a id="jot-text-lnk" class="jot-text-lnk" onclick="jotActive(); return false;">{{$message}}</a></li>
- {{if $acl}}<li role="menuitem"><a id="jot-perms-lnk" class="jot-perms-lnk" onclick="aclActive();return false;">{{$shortpermset}}</a></li>{{/if}}
- {{if $preview}}<li role="menuitem"><a id="jot-preview-lnk" class="jot-preview-lnk" onclick="previewActive();return false;">{{$preview}}</a></li>{{/if}}
- <li role="menuitem"><a id="jot-browser-link" onclick="fbrowserActive(); return false;">{{$browser}}</a></li>
+ <li class="active" role="menuitem">
+ <a class="jot-text-lnk" id="jot-text-lnk" onclick="jotActive(); return false;">{{$message}}</a>
+ </li>
+ {{if $acl}}
+ <li role="menuitem">
+ <a class="jot-perms-lnk" id="jot-perms-lnk" onclick="aclActive(); return false;">{{$shortpermset}}</a>
+ </li>
+ {{/if}}
+ {{if $preview}}
+ <li role="menuitem">
+ <a class="jot-preview-lnk" id="jot-preview-lnk" onclick="previewActive(); return false;">{{$preview}}</a>
+ </li>
+ {{/if}}
+ <li role="menuitem">
+ <a class="jot-browser-lnk" id="jot-browser-link" onclick="fbrowserActive(); return false;">{{$browser}}</a>
+ </li>
</ul>
+ {{* The Jot navigation menu for small displays (text input, permissions, preview, filebrowser) *}}
<div class="dropdown dropdown-head dropdown-mobile-jot jot-nav hidden-lg hidden-md hidden-sm" role="menubar" data-tabs="tabs" style="float: left;">
<button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">{{$message}} <span class="caret"></span></button>
<ul class="dropdown-menu nav nav-pills">
</div>
<ul id="profile-jot-submit-wrapper" class="jothidden nav nav-pills">
- <li><a id="profile-link" ondragenter="return linkdropper(event);" ondragover="return linkdropper(event);" ondrop="linkdrop(event);" onclick="jotGetLink(); return false;" title="{{$weblink}}"><i class="fa fa-link"></i></a></li>
- <li><a id="profile-video" onclick="jotVideoURL();return false;" title="{{$video}}"><i class="fa fa-film"></i></a></li>
- <li><a id="profile-audio" onclick="jotAudioURL();return false;" title="{{$audio}}"><i class="fa fa-music"></i></a></li>
- <li><a id="profile-location" onclick="jotGetLocation();return false;" title="{{$setloc}}"><i class="fa fa-map-marker"></i></a></li>
- {{* uncomment the button for "wall-immage-upload" because we have integrated it directly in the jot modal
- <li><a href="#" id="wall-image-upload" title="{{$upload}}"><i class="fa fa-picture-o"></i></a></li>
- *}}
- <li><button type="button" class="btn-link" id="wall-file-upload" title="{{$attach}}"><i class="fa fa-paperclip"></i></button></li>
+ <li><button type="button" class="btn-link" id="profile-link" ondragenter="return linkdropper(event);" ondragover="return linkdropper(event);" ondrop="linkdrop(event);" onclick="jotGetLink();" title="{{$weblink}}"><i class="fa fa-link"></i></button></li>
+ <li><button type="button" class="btn-link" id="profile-video" onclick="jotVideoURL();" title="{{$video}}"><i class="fa fa-film"></i></button></li>
+ <li><button type="button" class="btn-link" id="profile-audio" onclick="jotAudioURL();" title="{{$audio}}"><i class="fa fa-music"></i></button></li>
+ <li><button type="button" class="btn-link" id="profile-location" onclick="jotGetLocation();" title="{{$setloc}}"><i class="fa fa-map-marker"></i></button></li>
<!-- TODO: waiting for a better placement
- <li><a id="profile-nolocation" onclick="jotClearLocation();return false;" title="{{$noloc}}">{{$shortnoloc}}</a></li>
+ <li><button type="button" class="btn-link" id="profile-nolocation" onclick="jotClearLocation();" title="{{$noloc}}">{{$shortnoloc}}</button></li>
-->
<li class="pull-right"><button class="btn btn-primary" id="jot-submit" type="submit" id="profile-jot-submit" name="submit" ><i class="fa fa-slideshare fa-fw"></i> {{$share}}</button></li>