|
|
- function setupVideoObject(){
- return {
- target: null,
- gifUrl: null,
- name: null,
- permalink: null
- };
-
- }
-
- function setLilikLogo(){
- jQuery(" header#top-nav a.logo").css({
- "background-image": "url("+chrome.extension.getURL("assets/logo100.png")+")",
- "background-repeat": "no-repeat",
- "background-size": "30px 30px"
-
- });
- }
-
-
- //roll out long post in home page:
- function setLongPostListener(){
- jQuery("#list-view-2").on( "click", ".badge-evt.post-read-more", function( event ) {
- event.preventDefault();
-
- post = jQuery(event.target);
-
- var sidebar = jQuery("#sidebar-content-mod");
- sidebar.removeClass("closed");
- sidebar.html("<img>");
-
- var image = jQuery("#sidebar-content-mod img");
-
- jQuery.get( post.attr('href'), function(content) {
- image.attr("src", jQuery(content).find('.badge-item-img').attr("src"));
- });
-
- });
-
- jQuery(document).on('scroll', function(){
-
- var sidebar = jQuery("#sidebar-content-mod");
- if( !sidebar.hasClass('closed') ){
- sidebar.addClass('closed');
- }
- });
-
- }
-
- function setupSidebar(){
- if( !jQuery("#sidebar-content-mod").length ){
-
- jQuery("#container").after("<div id='sidebar-content-mod' class='closed'></div>");
- var menuHeight = jQuery("#top-nav").height();
-
- }
- var pageHeight = jQuery(window).height();
- jQuery("#sidebar-content-mod").css({"height": pageHeight, top: menuHeight});
-
- }
-
- //clean wake up overlay
- function cleanWakeUp(){
-
- // jQuery('head').append('<script type="text/javascript">GAG.Configs._configs.configs.idlePopupIdleTime = 9007199254740991; clearTimeout(GAG.PageController._idlePopupTimer); </script>');
- // 31556926000 = 1 year in ms.
- var code = ['GAG.Configs._configs.configs.idlePopupIdleTime = 31556926000; clearTimeout(GAG.PageController._idlePopupTimer);'].join('\n');
- var script = document.createElement('script');
- script.textContent = code;
- (document.head||document.documentElement).appendChild(script);
- script.parentNode.removeChild(script);
- }
-
- //set a listener to videos right click
- function setVideoListener(){
-
- jQuery(".main-wrap").on('contextmenu', "video", function(e) {
- currentVideo.target = jQuery(event.target);
- currentVideo.gifUrl = currentVideo.target.parent().data("image");
- currentVideo.name = currentVideo.target.parents("article").find("h2").text().trim() + ".gif";
- });
-
- jQuery(".main-wrap").on('contextmenu', "a", function(e) {
- currentVideo.target = jQuery(event.target);
- var previous = currentVideo.target.parents("article").prev();
- var id = currentVideo.target.parents("article").data("entry-id");
-
- if (previous.length > 0){
- id = previous.data("entry-id");
- }
- currentVideo.permalink = [location.protocol, '//', location.host, location.pathname].join('') + "?id=" + id;
-
- if (currentVideo.permalink == undefined){
- console.log("Warning: unable to find the permalink for this post")
- }
- });
-
- }
-
- function setOnNewNodeListener(){
- jQuery(".main-wrap").on("DOMNodeInserted", function() {
- NSFWListener();
- });
- }
- function setOnWindowResizeListener(){
- jQuery(window).on('resize', function(){
- setupSidebar();
- });
- }
-
- //download url
- function downloadURI(uri, name){
-
- var link = document.createElement("a");
- link.download = name;
- link.href = uri;
- link.click();
- }
-
- function enableSoftTransitions( element ){
-
- jQuery(element).addClass("softTransitions");
-
- }
-
- //night mode
- function nightMode(){
-
- if( hasComments())
- setInvertCommentImages();
-
- if( isNightTime() ){
- toggleNight("on");
- }
-
- }
-
- function isNightTime(){
-
- var nightHour = 19;
- var morningHour = 7;
- var date = new Date();
- var hours = date.getHours();
- if( hours >= nightHour || hours <= morningHour)
- return true;
- else
- return false;
- }
- function hasComments(){
- return jQuery("#gcomment-widget-jsid-comment-sys").length;
- }
-
- function toggleNight( command ){
-
- nightClass = "night";
- var container = jQuery('#container');
-
- if( hasComments())
- var commentPosts = frames['gcomment-widget-jsid-comment-sys'].document.getElementsByClassName("post-comment")[0];
-
-
- if( command ){
- switch( command ){
- case 'on':
- container.addClass( nightClass );
- if( hasComments())
- addClass( commentPosts, nightClass );
- break;
- case 'off':
- container.removeClass( nightClass );
- if( hasComments())
- removeClass( commentPosts, nightClass );
-
- break;
- }
- }else{
-
- if( container.hasClass( nightClass ) ){
- toggleNight("off");
- }else{
- toggleNight("on");
- }
- }
- }
-
- function setInvertCommentImages(){
- // jQuery( "img", frames['gcomment-widget-jsid-comment-sys'].document ).css({"-webkit-filter" : "invert(100%)"});
-
- var cssLink = document.createElement("link")
- cssLink.href = chrome.extension.getURL("style.css");
- cssLink.rel = "stylesheet";
- cssLink.type = "text/css";
- frames['gcomment-widget-jsid-comment-sys'].document.body.appendChild(cssLink);
-
- }
-
- function showNSFW(){
- jQuery(".badge-nsfw-entry-cover").each(function() {
- jQuery(this).addClass("deobfuscated");
-
- var imageSource = "http://img-9gag-fun.9cache.com/photo/" + jQuery(this).parents("article").data("entry-id") + "_460s.jpg";
-
- // TODO: isn't enough a string instead of a jquery object?
- jQuery(this).html( jQuery('<img/>', { src: imageSource } ));
- });
- }
-
- function NSFWListener(){
- if ( !jQuery("#jsid-upload-menu").not(".deobfuscated").is(":visible") && !updatingDom ){
- updatingDom = true;
- showNSFW();
- updatingDom = false;
- }
- }
- //init everything
-
- jQuery(document).ready(function() {
- updatingDom = false;
- showNSFW();
-
- setOnNewNodeListener();
- setOnWindowResizeListener();
- setLongPostListener();
-
- cleanWakeUp();
- // TODO: this object is not in the right place:
- currentVideo = setupVideoObject();
- setVideoListener();
-
- enableSoftTransitions(jQuery("#container"));
-
- setupSidebar();
-
- nightMode();
- setLilikLogo();
-
- console.log("9gag Mod Successfully Loaded!");
- });
-
- chrome.extension.onMessage.addListener(
- function(request, sender, sendResponse) {
- switch (request.command){
- case "copyGifUrl":
- sendResponse({ url: currentVideo.gifUrl });
- break;
- case "copyPostPermalink":
- sendResponse({ url: currentVideo.permalink });
- break;
- case "downloadGif":
- downloadURI( currentVideo.gifUrl , currentVideo.name);
- break;
- }
- }
- );
-
- // javascript utils to manipulate classes:
- // necessary to hack the comments css
-
- function hasClass(ele,cls) {
- return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
- }
- function addClass(ele,cls) {
- if (!this.hasClass(ele,cls)) ele.className += " "+cls;
- }
- function removeClass(ele,cls) {
- if (hasClass(ele,cls)) {
- var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
- ele.className=ele.className.replace(reg,' ');
- }
- }
|