mirror of
				https://github.com/KevinMidboe/zoff.git
				synced 2025-10-29 18:00:23 +00:00 
			
		
		
		
	More instant frontpage-loading, and sorting frontpages on the backend for consistency
This commit is contained in:
		@@ -19,6 +19,68 @@ function frontpage_lists(msg, socket) {
 | 
				
			|||||||
    });
 | 
					    });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					function get_frontpage_lists(callback) {
 | 
				
			||||||
 | 
					    var project_object = {
 | 
				
			||||||
 | 
					        "_id": 1,
 | 
				
			||||||
 | 
					        "count": 1,
 | 
				
			||||||
 | 
					        "frontpage": 1,
 | 
				
			||||||
 | 
					        "id": 1,
 | 
				
			||||||
 | 
					        "title": 1,
 | 
				
			||||||
 | 
					        "viewers": 1,
 | 
				
			||||||
 | 
					        "pinned": 1,
 | 
				
			||||||
 | 
					        "description": {
 | 
				
			||||||
 | 
					            $ifNull: [ {$cond: {
 | 
				
			||||||
 | 
					                "if": {
 | 
				
			||||||
 | 
					                    "$or": [
 | 
				
			||||||
 | 
					                        { "$eq": [ "$description", ""] },
 | 
				
			||||||
 | 
					                        { "$eq": [ "$description", null] },
 | 
				
			||||||
 | 
					                        { "$eq": [ "$description", undefined] }
 | 
				
			||||||
 | 
					                    ]
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                then: "This list has no description",
 | 
				
			||||||
 | 
					                else: "$description"
 | 
				
			||||||
 | 
					            }}, "This list has no description"]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "thumbnail": {
 | 
				
			||||||
 | 
					            $ifNull: [ {$cond: {
 | 
				
			||||||
 | 
					                "if": {
 | 
				
			||||||
 | 
					                    "$or": [
 | 
				
			||||||
 | 
					                        { "$eq": [ "$thumbnail", ""] },
 | 
				
			||||||
 | 
					                        { "$eq": [ "$thumbnail", null] },
 | 
				
			||||||
 | 
					                        { "$eq": [ "$thumbnail", undefined] }
 | 
				
			||||||
 | 
					                    ]
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                then: {
 | 
				
			||||||
 | 
					                    $concat : [ "https://img.youtube.com/vi/", "$id", "/mqdefault.jpg"]
 | 
				
			||||||
 | 
					                },
 | 
				
			||||||
 | 
					                else: "$thumbnail"
 | 
				
			||||||
 | 
					            }}, { $concat : [ "https://img.youtube.com/vi/", "$id", "/mqdefault.jpg"]}]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					    db.collection("frontpage_lists").aggregate([
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "$match": {
 | 
				
			||||||
 | 
					                frontpage: true,
 | 
				
			||||||
 | 
					                count: {$gt: 0},
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "$project": project_object
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        {
 | 
				
			||||||
 | 
					            "$sort" : {
 | 
				
			||||||
 | 
					                "pinned": -1,
 | 
				
			||||||
 | 
					                "viewers": -1,
 | 
				
			||||||
 | 
					                "count": -1,
 | 
				
			||||||
 | 
					                "accessed": -1,
 | 
				
			||||||
 | 
					                "title": 1
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					    ], callback);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function update_frontpage(coll, id, title, thumbnail, source, callback) {
 | 
					function update_frontpage(coll, id, title, thumbnail, source, callback) {
 | 
				
			||||||
    //coll = coll.replace(/ /g,'');
 | 
					    //coll = coll.replace(/ /g,'');
 | 
				
			||||||
    db.collection("frontpage_lists").find({_id: coll}, function(e, doc) {
 | 
					    db.collection("frontpage_lists").find({_id: coll}, function(e, doc) {
 | 
				
			||||||
@@ -38,5 +100,6 @@ if(doc.length > 0 && ((doc[0].thumbnail != "" && doc[0].thumbnail != undefined &
 | 
				
			|||||||
    });
 | 
					    });
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					module.exports.get_frontpage_lists = get_frontpage_lists;
 | 
				
			||||||
module.exports.frontpage_lists = frontpage_lists;
 | 
					module.exports.frontpage_lists = frontpage_lists;
 | 
				
			||||||
module.exports.update_frontpage = update_frontpage;
 | 
					module.exports.update_frontpage = update_frontpage;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -899,6 +899,19 @@ nav .zbrand{
 | 
				
			|||||||
    height: 120px;
 | 
					    height: 120px;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					.no-jump-select {
 | 
				
			||||||
 | 
					    height: calc(3rem + 1px) !important;
 | 
				
			||||||
 | 
					    margin: 0 0 8px 0;
 | 
				
			||||||
 | 
					    display: flex;
 | 
				
			||||||
 | 
					    justify-content: space-between;
 | 
				
			||||||
 | 
					    border-bottom: 1px solid #9e9e9e;
 | 
				
			||||||
 | 
					    align-items: center;
 | 
				
			||||||
 | 
					    font-size: 16px;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					     line-height: 3rem;
 | 
				
			||||||
 | 
					    color: #000;
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.description_text {
 | 
					.description_text {
 | 
				
			||||||
    color: #2d2d2d;
 | 
					    color: #2d2d2d;
 | 
				
			||||||
    text-align: left;
 | 
					    text-align: left;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -677,6 +677,12 @@ var Channel = {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                    var response = document.createElement("div");
 | 
					                    var response = document.createElement("div");
 | 
				
			||||||
                    response.innerHTML = e;
 | 
					                    response.innerHTML = e;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                    var newList = response.querySelector("#lists-script").innerHTML;
 | 
				
			||||||
 | 
					                    newList = newList.trim().replace("window.lists = ", "");
 | 
				
			||||||
 | 
					                    newList = newList.substring(0, newList.length);
 | 
				
			||||||
 | 
					                    window.lists = JSON.parse(newList);
 | 
				
			||||||
 | 
					                    response.querySelector("#lists-script").remove();
 | 
				
			||||||
                    Helper.removeElement("#sidenav-overlay");
 | 
					                    Helper.removeElement("#sidenav-overlay");
 | 
				
			||||||
                    document.getElementsByTagName("main")[0].className = "center-align container";
 | 
					                    document.getElementsByTagName("main")[0].className = "center-align container";
 | 
				
			||||||
                    Helper.removeClass("#main-container", "channelpage");
 | 
					                    Helper.removeClass("#main-container", "channelpage");
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -20,16 +20,16 @@ var Frontpage = {
 | 
				
			|||||||
            "Frontpage fetch",
 | 
					            "Frontpage fetch",
 | 
				
			||||||
            msg
 | 
					            msg
 | 
				
			||||||
        ]);
 | 
					        ]);
 | 
				
			||||||
        Frontpage.all_channels = lists;
 | 
					
 | 
				
			||||||
        var msg = lists;
 | 
					        Frontpage.all_channels = window.lists;
 | 
				
			||||||
        delete lists;
 | 
					        var msg = window.lists;
 | 
				
			||||||
        lists = undefined;
 | 
					        delete window.lists;
 | 
				
			||||||
        document.querySelector("#lists-script").remove();
 | 
					        window.lists = undefined;
 | 
				
			||||||
 | 
					        //document.querySelector("#lists-script").remove();
 | 
				
			||||||
        if(msg.length == 0) {
 | 
					        if(msg.length == 0) {
 | 
				
			||||||
            Helper.css("#preloader", "display", "none");
 | 
					            Helper.css("#preloader", "display", "none");
 | 
				
			||||||
            document.getElementById("channel-list-container").insertAdjacentHTML("beforeend", "<p>No channels yet</p>");
 | 
					            document.getElementById("channel-list-container").insertAdjacentHTML("beforeend", "<p>No channels yet</p>");
 | 
				
			||||||
        } else {
 | 
					        } else {
 | 
				
			||||||
            console.log(msg);
 | 
					 | 
				
			||||||
            Frontpage.populate_channels(msg, true, false);
 | 
					            Frontpage.populate_channels(msg, true, false);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        //Frontpage.set_viewers(msg.viewers);
 | 
					        //Frontpage.set_viewers(msg.viewers);
 | 
				
			||||||
@@ -79,7 +79,6 @@ var Frontpage = {
 | 
				
			|||||||
            ]);
 | 
					            ]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            for(var x in lists) {
 | 
					            for(var x in lists) {
 | 
				
			||||||
                //console.log(lists[x]._id);
 | 
					 | 
				
			||||||
                var chan = Helper.decodeChannelName(lists[x]._id);
 | 
					                var chan = Helper.decodeChannelName(lists[x]._id);
 | 
				
			||||||
                if(num<12 || !popular) {
 | 
					                if(num<12 || !popular) {
 | 
				
			||||||
                    var id = lists[x].id;
 | 
					                    var id = lists[x].id;
 | 
				
			||||||
@@ -160,7 +159,7 @@ var Frontpage = {
 | 
				
			|||||||
        document.getElementById("channels").style.display = "block";
 | 
					        document.getElementById("channels").style.display = "block";
 | 
				
			||||||
        //Materialize.fadeInImage('#channels');
 | 
					        //Materialize.fadeInImage('#channels');
 | 
				
			||||||
        //$("#channels").fadeIn(800);
 | 
					        //$("#channels").fadeIn(800);
 | 
				
			||||||
        document.getElementById("autocomplete-input").focus();
 | 
					        //document.getElementById("autocomplete-input").focus();
 | 
				
			||||||
        num = 0;
 | 
					        num = 0;
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -264,7 +263,7 @@ var Frontpage = {
 | 
				
			|||||||
            if(Frontpage.times_rotated == 50 && frontpage){
 | 
					            if(Frontpage.times_rotated == 50 && frontpage){
 | 
				
			||||||
                Frontpage.times_rotated = 0;
 | 
					                Frontpage.times_rotated = 0;
 | 
				
			||||||
                i = 0;
 | 
					                i = 0;
 | 
				
			||||||
                Frontpage.get_frontpage_lists();
 | 
					                //Frontpage.get_frontpage_lists();
 | 
				
			||||||
            }else if(frontpage){
 | 
					            }else if(frontpage){
 | 
				
			||||||
                Frontpage.times_rotated += 1;
 | 
					                Frontpage.times_rotated += 1;
 | 
				
			||||||
                Frontpage.add_backdrop(list, i+1);
 | 
					                Frontpage.add_backdrop(list, i+1);
 | 
				
			||||||
@@ -440,12 +439,11 @@ var Frontpage = {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        channel_list = document.querySelector(".hidden-channel-list").cloneNode(true).innerHTML;
 | 
					        channel_list = document.querySelector(".hidden-channel-list").cloneNode(true).innerHTML;
 | 
				
			||||||
        console.log(channel_list);
 | 
					 | 
				
			||||||
        try {
 | 
					        try {
 | 
				
			||||||
            document.querySelector(".hidden-channel-list").remove();
 | 
					            document.querySelector(".hidden-channel-list").remove();
 | 
				
			||||||
        }catch(e){}
 | 
					        }catch(e){}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if(window.location.hostname != "fb.zoff.me") Frontpage.share_link_modifier();
 | 
					        Frontpage.share_link_modifier();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if(window.location.hostname == "zoff.me" || window.location.hostname == "fb.zoff.me") add = "https://zoff.me";
 | 
					        if(window.location.hostname == "zoff.me" || window.location.hostname == "fb.zoff.me") add = "https://zoff.me";
 | 
				
			||||||
        else add = window.location.hostname;
 | 
					        else add = window.location.hostname;
 | 
				
			||||||
@@ -464,10 +462,11 @@ var Frontpage = {
 | 
				
			|||||||
            setup_playlist_listener();
 | 
					            setup_playlist_listener();
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        M.Modal.init(document.getElementById("about"));
 | 
					        /*M.Modal.init(document.getElementById("about"));
 | 
				
			||||||
        M.Modal.init(document.getElementById("help"));
 | 
					        M.Modal.init(document.getElementById("help"));
 | 
				
			||||||
        M.Modal.init(document.getElementById("contact"));
 | 
					        M.Modal.init(document.getElementById("contact"));*/
 | 
				
			||||||
        var elem = document.querySelector('select');
 | 
					        var elem = document.querySelector('select');
 | 
				
			||||||
 | 
					        document.querySelector(".no-jump-select").remove();
 | 
				
			||||||
        M.FormSelect.init(elem);
 | 
					        M.FormSelect.init(elem);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        Helper.log([
 | 
					        Helper.log([
 | 
				
			||||||
@@ -516,7 +515,7 @@ var Frontpage = {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if(!localStorage.ok_cookie){
 | 
					        if(!localStorage.ok_cookie){
 | 
				
			||||||
            before_toast();
 | 
					            before_toast();
 | 
				
			||||||
            M.toast({html: "We're using cookies to enhance your experience!  <a class='waves-effect waves-light btn light-green' href='#' id='cookieok' style='cursor:pointer;pointer-events:all;margin-left:10px;'> ok</a>", displayLength: 10000});
 | 
					            //M.toast({html: "We're using cookies to enhance your experience!  <a class='waves-effect waves-light btn light-green' href='#' id='cookieok' style='cursor:pointer;pointer-events:all;margin-left:10px;'> ok</a>", displayLength: 10000});
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        //var pad = 0;
 | 
					        //var pad = 0;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -941,11 +941,11 @@ addListener("click", ".first_page", function(event){
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
addListener("click", ".donate-button", function(event) {
 | 
					addListener("click", ".donate-button", function(event) {
 | 
				
			||||||
    this.preventDefault();
 | 
					    this.preventDefault();
 | 
				
			||||||
 | 
					    M.Modal.init(document.getElementById("donate"));
 | 
				
			||||||
    ga('send', 'event', "button-click", "donate");
 | 
					    ga('send', 'event', "button-click", "donate");
 | 
				
			||||||
    M.Modal.getInstance(document.getElementById("donate")).open();
 | 
					    M.Modal.getInstance(document.getElementById("donate")).open();
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
addListener("click", '#toast-container', function(){
 | 
					addListener("click", '#toast-container', function(){
 | 
				
			||||||
    before_toast();
 | 
					    before_toast();
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
@@ -1223,14 +1223,32 @@ addListener("click", "#twitter-code-link", function() {
 | 
				
			|||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
addListener("click", ".help-button-footer", function() {
 | 
					addListener("click", ".help-button-footer", function() {
 | 
				
			||||||
 | 
					    this.preventDefault();
 | 
				
			||||||
 | 
					    M.Modal.init(document.getElementById("help"));
 | 
				
			||||||
    ga('send', 'event', "button-click", "help-footer");
 | 
					    ga('send', 'event', "button-click", "help-footer");
 | 
				
			||||||
 | 
					    M.Modal.getInstance(document.getElementById("help")).open();
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
addListener("click", "#embed-button", function() {
 | 
					addListener("click", "#embed-button", function() {
 | 
				
			||||||
 | 
					    this.preventDefault();
 | 
				
			||||||
 | 
					    M.Modal.init(document.getElementById("embed"));
 | 
				
			||||||
    ga('send', 'event', "button-click", "embed-channel", "channel-name", chan.toLowerCase());
 | 
					    ga('send', 'event', "button-click", "embed-channel", "channel-name", chan.toLowerCase());
 | 
				
			||||||
})
 | 
					    M.Modal.getInstance(document.getElementById("embed")).open();
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					addListener("click", "#contact-button", function() {
 | 
				
			||||||
 | 
					    this.preventDefault();
 | 
				
			||||||
 | 
					    M.Modal.init(document.getElementById("contact"));
 | 
				
			||||||
 | 
					    ga('send', 'event', "button-click", "contact-footer");
 | 
				
			||||||
 | 
					    M.Modal.getInstance(document.getElementById("contact")).open();
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					addListener("click", ".about-button", function() {
 | 
				
			||||||
 | 
					    this.preventDefault();
 | 
				
			||||||
 | 
					    M.Modal.init(document.getElementById("about"));
 | 
				
			||||||
 | 
					    ga('send', 'event', "button-click", "contact-footer");
 | 
				
			||||||
 | 
					    M.Modal.getInstance(document.getElementById("about")).open();
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
addListener("click", ".playlist-link", function(event){
 | 
					addListener("click", ".playlist-link", function(event){
 | 
				
			||||||
    chat_active = false;
 | 
					    chat_active = false;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,6 +10,10 @@
 | 
				
			|||||||
            <div class="col s12">
 | 
					            <div class="col s12">
 | 
				
			||||||
                <div class="row">
 | 
					                <div class="row">
 | 
				
			||||||
                    <div class="input-field col s12">
 | 
					                    <div class="input-field col s12">
 | 
				
			||||||
 | 
					                        <div class="no-jump-select">
 | 
				
			||||||
 | 
					                            Most Popular
 | 
				
			||||||
 | 
					                            <svg class="caret" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M7 10l5 5 5-5z"></path><path d="M0 0h24v24H0z" fill="none"></path></svg>
 | 
				
			||||||
 | 
					                        </div>
 | 
				
			||||||
                        <select id="view_channels_select">
 | 
					                        <select id="view_channels_select">
 | 
				
			||||||
                            <option value="" disabled>Channels to show</option>
 | 
					                            <option value="" disabled>Channels to show</option>
 | 
				
			||||||
                            <option value="1" selected>Most Popular</option>
 | 
					                            <option value="1" selected>Most Popular</option>
 | 
				
			||||||
@@ -18,9 +22,6 @@
 | 
				
			|||||||
                    </div>
 | 
					                    </div>
 | 
				
			||||||
                </div>
 | 
					                </div>
 | 
				
			||||||
            </div>
 | 
					            </div>
 | 
				
			||||||
            <!--<div id="preloader" class="progress frontpage-preloader orange lighten-3">
 | 
					 | 
				
			||||||
                <div class="indeterminate"></div>
 | 
					 | 
				
			||||||
            </div>-->
 | 
					 | 
				
			||||||
            {{> frontpage/channels}}
 | 
					            {{> frontpage/channels}}
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
    </main>
 | 
					    </main>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,9 +4,9 @@
 | 
				
			|||||||
            <a class="chan-link" href="{{_id}}/">
 | 
					            <a class="chan-link" href="{{_id}}/">
 | 
				
			||||||
                <div class="chan-bg card-image cardbg" style="background-image:url({{thumbnail}});"></div>
 | 
					                <div class="chan-bg card-image cardbg" style="background-image:url({{thumbnail}});"></div>
 | 
				
			||||||
                <div class="card-content">
 | 
					                <div class="card-content">
 | 
				
			||||||
                    {{#if pinned}}
 | 
					
 | 
				
			||||||
                        <i class="material-icons pin">star_rate</i>
 | 
					                        <i class="material-icons pin" style="{{#if pinned}}display:block;{{/if}}{{#unless pinned}}display:none;{{/unless}}">star_rate</i>
 | 
				
			||||||
                    {{/if}}
 | 
					                    
 | 
				
			||||||
                    <p class="left-align">
 | 
					                    <p class="left-align">
 | 
				
			||||||
                        <span class="chan-name flow-text truncate">{{_id}}</span>
 | 
					                        <span class="chan-name flow-text truncate">{{_id}}</span>
 | 
				
			||||||
                        <br>
 | 
					                        <br>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,10 +1,15 @@
 | 
				
			|||||||
<div id="channel-list-container">
 | 
					<div id="channel-list-container">
 | 
				
			||||||
    <ul class="row" id="channels">
 | 
					    <ul class="row" id="channels">
 | 
				
			||||||
 | 
					        {{#if channels_exist}}
 | 
				
			||||||
            {{#each channels}}
 | 
					            {{#each channels}}
 | 
				
			||||||
                {{#if frontpage}}
 | 
					                {{#if frontpage}}
 | 
				
			||||||
                    {{> frontpage/channel}}
 | 
					                    {{> frontpage/channel}}
 | 
				
			||||||
                {{/if}}
 | 
					                {{/if}}
 | 
				
			||||||
            {{/each}}
 | 
					            {{/each}}
 | 
				
			||||||
 | 
					        {{/if}}
 | 
				
			||||||
 | 
					        {{#unless channels_exist}}
 | 
				
			||||||
 | 
					            No channels yet
 | 
				
			||||||
 | 
					        {{/unless}}
 | 
				
			||||||
    </ul>
 | 
					    </ul>
 | 
				
			||||||
    <div class="hidden-channel-list hide">
 | 
					    <div class="hidden-channel-list hide">
 | 
				
			||||||
        <ul class="row" id="channels">
 | 
					        <ul class="row" id="channels">
 | 
				
			||||||
@@ -12,6 +17,6 @@
 | 
				
			|||||||
        </ul>
 | 
					        </ul>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
    <script id="lists-script">
 | 
					    <script id="lists-script">
 | 
				
			||||||
        var lists = {{{channel_list}}}
 | 
					        window.lists = {{{channel_list}}}
 | 
				
			||||||
    </script>
 | 
					    </script>
 | 
				
			||||||
</div>
 | 
					</div>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -16,7 +16,7 @@
 | 
				
			|||||||
                {{/if}}
 | 
					                {{/if}}
 | 
				
			||||||
                <li class="hide-on-small-only"><a class="header-buttons waves-effect waves-cyan" id="offline-mode" title="Local mode" href="#">Local</a></li>
 | 
					                <li class="hide-on-small-only"><a class="header-buttons waves-effect waves-cyan" id="offline-mode" title="Local mode" href="#">Local</a></li>
 | 
				
			||||||
                <li class="hide-on-small-only"><a class="header-buttons waves-effect waves-green" title="Remote control a Zoff player" href="https://remote.zoff.me">Remote</a></li>
 | 
					                <li class="hide-on-small-only"><a class="header-buttons waves-effect waves-green" title="Remote control a Zoff player" href="https://remote.zoff.me">Remote</a></li>
 | 
				
			||||||
                <li class="hide-on-small-only"><a class="header-buttons modal-trigger waves-effect waves-orange" data-target="about">About</a></li>
 | 
					                <li class="hide-on-small-only"><a class="header-buttons modal-trigger waves-effect waves-orange about-button" data-target="about">About</a></li>
 | 
				
			||||||
            </ul>
 | 
					            </ul>
 | 
				
			||||||
        </div>
 | 
					        </div>
 | 
				
			||||||
    </nav>
 | 
					    </nav>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -117,7 +117,8 @@ router.route('/api/frontpages').get(function(req, res) {
 | 
				
			|||||||
    res.header("Access-Control-Allow-Origin", "*");
 | 
					    res.header("Access-Control-Allow-Origin", "*");
 | 
				
			||||||
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
 | 
					    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
 | 
				
			||||||
    res.header({"Content-Type": "application/json"});
 | 
					    res.header({"Content-Type": "application/json"});
 | 
				
			||||||
    db.collection("frontpage_lists").find({frontpage: true, count: {$gt: 0}}, function(err, docs) {
 | 
					    Frontpage.get_frontpage_lists(function(err, docs) {
 | 
				
			||||||
 | 
					    //db.collection("frontpage_lists").find({frontpage: true, count: {$gt: 0}}, function(err, docs) {
 | 
				
			||||||
        db.collection("connected_users").find({"_id": "total_users"}, function(err, tot) {
 | 
					        db.collection("connected_users").find({"_id": "total_users"}, function(err, tot) {
 | 
				
			||||||
            var to_return = error.no_error;
 | 
					            var to_return = error.no_error;
 | 
				
			||||||
            to_return.results = {channels: docs, viewers: tot[0].total_users.length};
 | 
					            to_return.results = {channels: docs, viewers: tot[0].total_users.length};
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,6 +7,7 @@ var analytics = "xx";
 | 
				
			|||||||
var mongojs = require('mongojs');
 | 
					var mongojs = require('mongojs');
 | 
				
			||||||
var token_db = mongojs("tokens");
 | 
					var token_db = mongojs("tokens");
 | 
				
			||||||
var Functions = require(pathThumbnails + '/handlers/functions.js');
 | 
					var Functions = require(pathThumbnails + '/handlers/functions.js');
 | 
				
			||||||
 | 
					var Frontpage = require(pathThumbnails + '/handlers/frontpage.js');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var db = require(pathThumbnails + '/handlers/db.js');
 | 
					var db = require(pathThumbnails + '/handlers/db.js');
 | 
				
			||||||
//var db = require(pathThumbnails + '/handlers/db.js');
 | 
					//var db = require(pathThumbnails + '/handlers/db.js');
 | 
				
			||||||
@@ -149,67 +150,17 @@ function root(req, res, next) {
 | 
				
			|||||||
            if(subdomain[0] == "client") {
 | 
					            if(subdomain[0] == "client") {
 | 
				
			||||||
                data.client = true;
 | 
					                data.client = true;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            var project_object = {
 | 
					            Frontpage.get_frontpage_lists(function(err, docs){
 | 
				
			||||||
                "_id": 1,
 | 
					 | 
				
			||||||
                "count": 1,
 | 
					 | 
				
			||||||
                "frontpage": 1,
 | 
					 | 
				
			||||||
                "id": 1,
 | 
					 | 
				
			||||||
                "title": 1,
 | 
					 | 
				
			||||||
                "viewers": 1,
 | 
					 | 
				
			||||||
                "pinned": 1,
 | 
					 | 
				
			||||||
                "description": {
 | 
					 | 
				
			||||||
                    $ifNull: [ {$cond: {
 | 
					 | 
				
			||||||
                        "if": {
 | 
					 | 
				
			||||||
                            "$or": [
 | 
					 | 
				
			||||||
                                { "$eq": [ "$description", ""] },
 | 
					 | 
				
			||||||
                                { "$eq": [ "$description", null] },
 | 
					 | 
				
			||||||
                                { "$eq": [ "$description", undefined] }
 | 
					 | 
				
			||||||
                            ]
 | 
					 | 
				
			||||||
                        },
 | 
					 | 
				
			||||||
                        then: "This list has no description",
 | 
					 | 
				
			||||||
                        else: "$description"
 | 
					 | 
				
			||||||
                    }}, "This list has no description"]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                "thumbnail": {
 | 
					 | 
				
			||||||
                    $ifNull: [ {$cond: {
 | 
					 | 
				
			||||||
                        "if": {
 | 
					 | 
				
			||||||
                            "$or": [
 | 
					 | 
				
			||||||
                                { "$eq": [ "$thumbnail", ""] },
 | 
					 | 
				
			||||||
                                { "$eq": [ "$thumbnail", null] },
 | 
					 | 
				
			||||||
                                { "$eq": [ "$thumbnail", undefined] }
 | 
					 | 
				
			||||||
                            ]
 | 
					 | 
				
			||||||
                        },
 | 
					 | 
				
			||||||
                        then: {
 | 
					 | 
				
			||||||
                            $concat : [ "https://img.youtube.com/vi/", "$id", "/mqdefault.jpg"]
 | 
					 | 
				
			||||||
                        },
 | 
					 | 
				
			||||||
                        else: "$thumbnail"
 | 
					 | 
				
			||||||
                    }}, { $concat : [ "https://img.youtube.com/vi/", "$id", "/mqdefault.jpg"]}]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            };
 | 
					 | 
				
			||||||
            db.collection("frontpage_lists").aggregate([
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    "$match": {
 | 
					 | 
				
			||||||
                        frontpage: true,
 | 
					 | 
				
			||||||
                        count: {$gt: 0},
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    "$project": project_object
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                {
 | 
					 | 
				
			||||||
                    "$sort" : {
 | 
					 | 
				
			||||||
                        "pinned": -1,
 | 
					 | 
				
			||||||
                        "count": -1,
 | 
					 | 
				
			||||||
                        "accessed": -1,
 | 
					 | 
				
			||||||
                        "title": 1
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                },
 | 
					 | 
				
			||||||
                ], function(err, docs) {
 | 
					 | 
				
			||||||
                db.collection("connected_users").find({"_id": "total_users"}, function(err, tot) {
 | 
					                db.collection("connected_users").find({"_id": "total_users"}, function(err, tot) {
 | 
				
			||||||
 | 
					                    if(docs.length > 0) {
 | 
				
			||||||
 | 
					                        data.channels_exist = true;
 | 
				
			||||||
                        data.channels = docs.slice(0, 12);
 | 
					                        data.channels = docs.slice(0, 12);
 | 
				
			||||||
                        data.channel_list = JSON.stringify(docs);
 | 
					                        data.channel_list = JSON.stringify(docs);
 | 
				
			||||||
 | 
					                    } else {
 | 
				
			||||||
 | 
					                        data.channels_exist = false;
 | 
				
			||||||
 | 
					                        data.channels = [];
 | 
				
			||||||
 | 
					                        data.channel_list = [];
 | 
				
			||||||
 | 
					                    }
 | 
				
			||||||
                    data.viewers = tot[0].total_users.length;
 | 
					                    data.viewers = tot[0].total_users.length;
 | 
				
			||||||
                    res.render('layouts/client/frontpage', data);
 | 
					                    res.render('layouts/client/frontpage', data);
 | 
				
			||||||
                });
 | 
					                });
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user