X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;ds=sidebyside;f=view%2Ftheme%2Ffrio%2Fjs%2Ftheme.js;h=4e8ede07fd965289a63c996aa1fec2f0e50e4948;hb=85144908fa9cf12594b568f4f0b2d37fa21b6be1;hp=45966e0117d8a1780b8c56c66f3623963be521cb;hpb=c138455c5e25fbb11a12d959d1737de2116d356f;p=friendica.git
diff --git a/view/theme/frio/js/theme.js b/view/theme/frio/js/theme.js
index 45966e0117..4e8ede07fd 100644
--- a/view/theme/frio/js/theme.js
+++ b/view/theme/frio/js/theme.js
@@ -10,7 +10,7 @@ $(document).ready(function(){
$("#back-to-top").fadeOut();
}
});
-
+
// scroll body to 0px on click
$("#back-to-top").click(function () {
$("body,html").animate({
@@ -40,9 +40,7 @@ $(document).ready(function(){
$(".field.select > select, .field.custom > select").addClass("form-control");
// move the tabbar to the second nav bar
- if( $("ul.tabbar").length ) {
- $("ul.tabbar").appendTo("#topbar-second > .container > #tabmenu");
- }
+ $("section .tabbar-wrapper").first().appendTo("#topbar-second > .container > #tabmenu");
// add mask css url to the logo-img container
//
@@ -56,7 +54,7 @@ $(document).ready(function(){
}
// make responsive tabmenu with flexmenu.js
- // the menupoints which doesn't fit in the second nav bar will moved to a
+ // the menupoints which doesn't fit in the second nav bar will moved to a
// dropdown menu. Look at common_tabs.tpl
$("ul.tabs.flex-nav").flexMenu({
'cutoff': 2,
@@ -84,22 +82,23 @@ $(document).ready(function(){
return false;
}
});
-
+
if(checked == true) {
$("a#item-delete-selected").fadeTo(400, 1);
$("a#item-delete-selected").show();
} else {
$("a#item-delete-selected").fadeTo(400, 0, function(){
$("a#item-delete-selected").hide();
- });
+ });
}
});
-
+
//$('ul.flex-nav').flexMenu();
// initialize the bootstrap tooltips
$('body').tooltip({
selector: '[data-toggle="tooltip"]',
+ container: 'body',
animation: true,
html: true,
placement: 'auto',
@@ -129,7 +128,7 @@ $(document).ready(function(){
// append the new heading to the navbar
$("#topbar-second > .container > #tabmenu").append(newText);
- // try to get the value of the original search input to insert it
+ // try to get the value of the original search input to insert it
// as value in the nav-search-input
var searchValue = $("#search-wrapper .form-group-search input").val();
@@ -155,10 +154,10 @@ $(document).ready(function(){
$(".search-content-wrapper #search-save-form ").appendTo("#topbar-second > .container > #navbar-button");
// append the vcard-short-info to the second nav after passing the element
- // with .p-addr (vcard). Use scrollspy to get the scroll position.
- if( $("aside .vcard .p-addr").length) {
- $(".vcard .p-addr").scrollspy({
- min: $(".vcard .p-addr").position().top - 50,
+ // with .fn (vcard username). Use scrollspy to get the scroll position.
+ if( $("aside .vcard .fn").length) {
+ $(".vcard .fn").scrollspy({
+ min: $(".vcard .fn").position().top - 50,
onLeaveTop: function onLeave(element) {
$("#vcard-short-info").fadeOut(500, function () {
$("#vcard-short-info").appendTo("#vcard-short-info-wrapper");
@@ -179,40 +178,108 @@ $(document).ready(function(){
// there are two elements with this class but we don't want the js template
$(".network-content-wrapper > #viewcontact_wrapper-network .contact-wrapper").first().appendTo("#nav-short-info");
}
+
+ // move heading from network stream to the second navbar nav-short-info section
+ if( $(".network-content-wrapper > .section-title-wrapper").length) {
+ // get the heading element
+ var heading = $(".network-content-wrapper > .section-title-wrapper > h2");
+ // get the text of the heading
+ var headingContent = heading.text();
+ // create a new element with the content of the heading
+ var newText = '
'+headingContent+'
';
+ // remove the old heading element
+ heading.remove(),
+ // put the new element to the second nav bar
+ $("#topbar-second #nav-short-info").append(newText);
+ }
+
+ if( $(".community-content-wrapper").length) {
+ // get the heading element
+ var heading = $(".community-content-wrapper > h3").first();
+ // get the text of the heading
+ var headingContent = heading.text();
+ // create a new element with the content of the heading
+ var newText = ''+headingContent+'
';
+ // remove the old heading element
+ heading.remove(),
+ // put the new element to the second nav bar
+ $("#topbar-second > .container > #tabmenu").append(newText);
+ }
+
+ // Dropdown menus with the class "dropdown-head" will display the active tab
+ // as button text
+ $("body").on('click', '.dropdown-head .dropdown-menu li a', function(){
+ $(this).closest(".dropdown").find('.btn').html($(this).text() + ' ');
+ $(this).closest(".dropdown").find('.btn').val($(this).data('value'));
+ $(this).closest("ul").children("li").show();
+ $(this).parent("li").hide();
+ });
+
+ /* setup onoff widgets */
+ // Add the correct class to the switcher according to the input
+ // value (On/Off)
+ $(".toggle input").each(function(){
+ // Get the value of the input element
+ val = $(this).val();
+ id = $(this).attr("id");
+
+ // The css classes for "on" and "off"
+ onstyle = "btn-primary";
+ offstyle = "btn-default off";
+
+ // Add the correct class in dependence of input value (On/Off)
+ toggleclass = (val == 0 ? offstyle : onstyle);
+ $("#"+id+"_onoff").addClass(toggleclass);
+
+ });
+
+ // Change the css class while clicking on the switcher elements
+ $(".toggle label, .toggle .toggle-handle").click(function(event){
+ event.preventDefault();
+ // Get the value of the input element
+ var input = $(this).siblings("input");
+ var val = 1-input.val();
+ var id = input.attr("id");
+
+ // The css classes for "on" and "off"
+ var onstyle = "btn-primary";
+ var offstyle = "btn-default off";
+
+ // According to the value of the input element we need to decide
+ // which class need to be added and removed when changing the switch
+ var removedclass = (val == 0 ? onstyle : offstyle);
+ var addedclass = (val == 0 ? offstyle : onstyle)
+ $("#"+id+"_onoff").addClass(addedclass).removeClass(removedclass);
+
+ // After changing the switch the input element is getting
+ // the newvalue
+ input.val(val);
+ });
+
+ // Set the padding for input elements with inline buttons
+ //
+ // In Frio we use some input elements where the submit button is visually
+ // inside the the input field (through css). We need to set a padding-right
+ // to the input element where the padding value would be at least the width
+ // of the button. Otherwise long user input would be invisible because it is
+ // behind the button.
+ $("body").on('click', '.form-group-search > input', function() {
+ // Get the width of the button (if the button isn't available
+ // buttonWidth will be null
+ var buttonWidth = $(this).next('.form-button-search').outerWidth();
+
+ if (buttonWidth) {
+ // Take the width of the button and ad 5px
+ var newWidth = buttonWidth + 5;
+ // Set the padding of the input element according
+ // to the width of the button
+ $(this).css('padding-right', newWidth);
+ }
+
+ });
+
+
});
-//function commentOpenUI(obj, id) {
-// $(document).unbind( "click.commentOpen", handler );
-//
-// var handler = function() {
-// if(obj.value == '{{$comment}}') {
-// obj.value = '';
-// $("#comment-edit-text-" + id).addClass("comment-edit-text-full").removeClass("comment-edit-text-empty");
-// // Choose an arbitrary tab index that's greater than what we're using in jot (3 of them)
-// // The submit button gets tabindex + 1
-// $("#comment-edit-text-" + id).attr('tabindex','9');
-// $("#comment-edit-submit-" + id).attr('tabindex','10');
-// $("#comment-edit-submit-wrapper-" + id).show();
-// }
-// };
-//
-// $(document).bind( "click.commentOpen", handler );
-//}
-//
-//function commentCloseUI(obj, id) {
-// $(document).unbind( "click.commentClose", handler );
-//
-// var handler = function() {
-// if(obj.value === '') {
-// obj.value = '{{$comment}}';
-// $("#comment-edit-text-" + id).removeClass("comment-edit-text-full").addClass("comment-edit-text-empty");
-// $("#comment-edit-text-" + id).removeAttr('tabindex');
-// $("#comment-edit-submit-" + id).removeAttr('tabindex');
-// $("#comment-edit-submit-wrapper-" + id).hide();
-// }
-// };
-//
-// $(document).bind( "click.commentClose", handler );
-//}
function openClose(theID) {
var elem = document.getElementById(theID);
@@ -506,3 +573,68 @@ String.prototype.rtrim = function() {
return trimmed;
};
+/**
+ * Scroll the screen to the item element whose id is provided, then highlights it
+ *
+ * Note: jquery.color.js is required
+ *
+ * @param {string} elementId The item element id
+ * @returns {undefined}
+ */
+function scrollToItem(elementId) {
+ if (typeof elementId === "undefined") {
+ return;
+ }
+
+ var $el = $(document.getElementById(elementId));
+ // Test if the Item exists
+ if (!$el.length) {
+ return;
+ }
+
+ // Define the colors which are used for highlighting
+ var colWhite = {backgroundColor:'#F5F5F5'};
+ var colShiny = {backgroundColor:'#FFF176'};
+
+ // Get the Item Position (we need to substract 100 to match correct position
+ var itemPos = $el.offset().top - 100;
+
+ // Scroll to the DIV with the ID (GUID)
+ $('html, body').animate({
+ scrollTop: itemPos
+ }, 400, function() {
+ // Highlight post/commenent with ID (GUID)
+ $el.animate(colWhite, 1000).animate(colShiny).animate(colWhite, 600);
+ });
+}
+
+// format a html string to pure text
+function htmlToText(htmlString) {
+ // Replace line breaks with spaces
+ var text = htmlString.replace(/
/g, ' ');
+ // Strip the text out of the html string
+ text = text.replace(/<[^>]*>/g, '');
+
+ 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;
+}
\ No newline at end of file