diff --git a/chrome_point_plus/_locales/en/messages.json b/chrome_point_plus/_locales/en/messages.json index ec4bbf4..8bef84c 100644 --- a/chrome_point_plus/_locales/en/messages.json +++ b/chrome_point_plus/_locales/en/messages.json @@ -75,13 +75,19 @@ "message": "NSFW content filtering" }, "option_nsfw_hide_posts":{ - "message": "Hide entire posts with `nsfw` tag" + "message": "Hide posts with `nsfw` tag from feed" }, - "option_nsfw_blur": { - "message": "Blurring" + "option_nsfw_blur_posts_images": { + "message": "Blur images in nsfw posts" }, - "option_nsfw_blur_comments": { - "message": "Blur comments too" + "option_nsfw_blur_posts_entire": { + "message": "Blur entire nsfw posts" + }, + "option_nsfw_blur_comments_images": { + "message": "Blur images in comments in nsfw posts" + }, + "option_nsfw_blur_comments_entire": { + "message": "Blur entire comments in nsfw posts" }, "option_ctrl_enter": { "message": "Send post and comments by CTRL+Enter (deprecated)" diff --git a/chrome_point_plus/_locales/ru/messages.json b/chrome_point_plus/_locales/ru/messages.json index a0f1099..9278359 100644 --- a/chrome_point_plus/_locales/ru/messages.json +++ b/chrome_point_plus/_locales/ru/messages.json @@ -75,13 +75,19 @@ "message": "Фильтрация NSFW-контента" }, "option_nsfw_hide_posts":{ - "message": "Скрывать NSFW-посты полностью" + "message": "Скрывать NSFW-посты из ленты сообщений" }, - "option_nsfw_blur": { - "message": "Размытие небезопасных постов" + "option_nsfw_blur_posts_images": { + "message": "Размытие картинок в небезопасных постах" }, - "option_nsfw_blur_comments": { - "message": "Размытие комментариев" + "option_nsfw_blur_posts_entire": { + "message": "Размытие небезопасных постов полностью" + }, + "option_nsfw_blur_comments_images": { + "message": "Размытие картинок в каментариях небезопасных постов" + }, + "option_nsfw_blur_comments_entire": { + "message": "Размытие ВСЕХ комментариев в небезопасных постах" }, "option_ctrl_enter": { "message": "Отправлять текст по CTRL+Enter (устарело)" diff --git a/chrome_point_plus/css/point-plus.css b/chrome_point_plus/css/point-plus.css index e769358..9e54d19 100644 --- a/chrome_point_plus/css/point-plus.css +++ b/chrome_point_plus/css/point-plus.css @@ -174,35 +174,31 @@ div#markItUpText-input { /* Labels in post */ .post .post-id a .cn.changed_background{ - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAANdJREFUOMvN069OgmEUBvAfSCUxNicFKTQ3bkCLyRvwDrgHZ5Q7MFlobAY3G9UrsOi0iIGNBIGgG00o53PvCMAHBJ7thPecPc/5+3IoKKKDIeZrbIi74CiFQBs3eMTbmmRnuMUID5nzG90cFXcxyEqHU3zlEBigkQoUor9N8Recf4Gdpr8XgV+Uc/DK+Ekdz/hAcwNyE594Sp0NTJYOZobriB/FjUwjNkE9m36GKq5wHO9zXOICtch4j1f0Q2QlSnjBGL10dXlQxXvSVmWbTZ3E/5ijtRxcAIj4MflVC0WJAAAAAElFTkSuQmCC") no-repeat 2px 1px; - padding-left: 20px; } -.post .post-id a .authors_unique_count, .post .post-id a .recomendation_count { +.post .post-id a .authors_unique_count, .post .post-id a .recommendation_count { padding: 0 .5em; font-weight: normal; color: #35587c; - background: #f2f2eb; + background-color: #f2f2eb; } -.post .post-id a .recomendation_count { +.post .post-id a .recommendation_count { margin-left: 0.2em; - background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAAXNSR0IArs4c6QAAAMRJREFUGBmtwbsuQ2EAAOCPX6LlKSRGD2E0YCKRGDqLQReDSVhIjI1r49bRdiZJn0GIQcPSxFO4HPHLOe1J2rpMvo//MaMl1batZNSWtlTLrK4JL5qqTqQO1aTqqppeTcrtexRklkTRskzw4Eju1rmOIIqCjrp7uRsNhQWLCmfu5C48Kxk05MmV3JR3xwatiaZ1rYg29Zr34VSPHdG6wpw3iaDPnmhDpiKVKPtmV7Sq4tOlET86EEUNw34RJK4Ffxgzrs8XpvA41+ECiwcAAAAASUVORK5CYII=") no-repeat 2px 1px; background-color: #f2eceb; - padding-left: 20px; } /* NSFW-content */ -.post-tag-nsfw.hide-nsfw a.postimg img, -.post-tag-сиськи.hide-nsfw a.postimg img, -#comments.hide-nsfw a.postimg img{ +.post-tag-nsfw.blur-nsfw-images a.postimg img, +.post-tag-сиськи.blur-nsfw-images a.postimg img, +#comments.blur-nsfw-images a.postimg img{ margin-top: 5px; -webkit-filter: blur(30px); } -.post-tag-nsfw.hide-nsfw a.postimg:hover img, -.post-tag-сиськи.hide-nsfw a.postimg:hover img, -#comments.hide-nsfw a.postimg:hover img{ +.post-tag-nsfw.blur-nsfw-images a.postimg:hover img, +.post-tag-сиськи.blur-nsfw-images a.postimg:hover img, +#comments.blur-nsfw-images a.postimg:hover img{ -webkit-filter: none; } @@ -211,3 +207,26 @@ div#markItUpText-input { display: none; } +.post-tag-nsfw.blur-nsfw-entire .post-content .text, +.post-tag-сиськи.blur-nsfw-entire .post-content .text, +#comments.blur-nsfw-entire .post-content .text{ + -webkit-filter: blur(30px); +} + +/* point-plus-debug */ +.point-plus-debug{ + position: absolute; + padding: 10px 20px; + top: 60px; + left: 20px; + border-radius: 3px; + border: 1px solid #333;/* @todo Сделать не такой галимый */ + background-color: #ddd;/* @todo Аналогично */ + z-index: 11; +} + +.post-tag-nsfw.hide-nsfw-posts, +.post-tag-сиськи.hide-nsfw-posts{ + display: none; +} + diff --git a/chrome_point_plus/js/options.js b/chrome_point_plus/js/options.js index 3de0bf1..e939c7f 100644 --- a/chrome_point_plus/js/options.js +++ b/chrome_point_plus/js/options.js @@ -28,9 +28,11 @@ var ppOptions = [ 'option_nsfw', 'option_nsfw_hide_posts', // Blured pictures - 'option_nsfw_blur', - // Blur comments too - 'option_nsfw_blur_comments', + 'option_nsfw_blur_posts_images', + 'option_nsfw_blur_posts_entire', + // Blur comments too + 'option_nsfw_blur_comments_images', + 'option_nsfw_blur_comments_entire', // CTRL+Enter 'option_ctrl_enter', // Fluid layout @@ -78,8 +80,10 @@ function pp_save_options() { ppOptions.option_embedding_pleercom_nokita_server = $('#option-embedding-pleercom-nokita-server').prop('checked'); ppOptions.option_nsfw = $('#option-nsfw').prop('checked'); ppOptions.option_nsfw_hide_posts = $('#option-nsfw-hide-posts').prop('checked'); - ppOptions.option_nsfw_blur = $('#option-nsfw-blur').prop('checked'); - ppOptions.option_nsfw_blur_comments = $('#option-nsfw-blur-comments').prop('checked'); + ppOptions.option_nsfw_blur_posts_images = $('#option-nsfw-blur-posts-images').prop('checked'); + ppOptions.option_nsfw_blur_posts_entire = $('#option-nsfw-blur-posts-entire').prop('checked'); + ppOptions.option_nsfw_blur_comments_images = $('#option-nsfw-blur-comments-images').prop('checked'); + ppOptions.option_nsfw_blur_comments_entire = $('#option-nsfw-blur-comments-entire').prop('checked'); ppOptions.option_visual_editor_post = $('#option-visual-editor-post').prop('checked'); ppOptions.checkbox_search_with_google = $('#option-search-with-google').prop('checked'); ppOptions.option_ws = $('#option-ws').prop('checked'); diff --git a/chrome_point_plus/js/point-plus.js b/chrome_point_plus/js/point-plus.js index 4656939..8b7561b 100644 --- a/chrome_point_plus/js/point-plus.js +++ b/chrome_point_plus/js/point-plus.js @@ -1,9 +1,22 @@ $(document).ready(function () { // Grouping console log console.group('point-plus'); - console.info('Point+ %s', getVersion()); + // Проверяем, загрузились ли мы + var point_plus_debug=$('.point-plus-debug'); + if (point_plus_debug.length>0){ + console.info('Point+ already loaded, version: %s', point_plus_debug.attr('data-point-plus-version')); + return; + } + point_plus_debug=null; + var new_div=document.createElement('div'); + document.body.appendChild(new_div); + $(new_div).attr({ + 'data-point-plus-version':getVersion() + }).addClass('point-plus-debug').html('Point+ v'+getVersion()+' loading...'); + new_div=null; + // Loading options chrome.storage.sync.get(ppOptions, function (options) { // Options debug @@ -11,7 +24,6 @@ $(document).ready(function () { create_tag_system(); - // Embedding if (options.option_embedding == true) { // Load pictures from Booru, Tumblr and some other sites @@ -90,38 +102,44 @@ $(document).ready(function () { }); } // Правим хинт в FancyBox - $('.post').each(function(){ - var all_post_images=$(this).find('.postimg'); - if (all_post_images.length==0){return;} + $('.post').each(function () { + var all_post_images = $(this).find('.postimg'); + if (all_post_images.length == 0) { + return; + } var tags = $(this).find('div.tags a.tag'); var hint_text = '';// Текст для хинта в FancyBox // Сначала теги for (var i = 0; i < tags.length; i++) { var tag_name = $(tags[i]).html().toLowerCase(); - hint_text+=' '+tag_name; + hint_text += ' ' + tag_name; } // Потом текст - var textcontent=$(this).find('.text-content'); - if (textcontent.length>0){ - textcontent=textcontent[0]; - for(var i=0;i0){continue;} + var textcontent = $(this).find('.text-content'); + if (textcontent.length > 0) { + textcontent = textcontent[0]; + for (var i = 0; i < textcontent.childNodes.length; i++) { + var current_child_node = textcontent.childNodes[i]; + if ((current_child_node.nodeName !== 'P') && (current_child_node.nodeName !== '#text')) { + continue; + } + var a = $(current_child_node).find('a.postimg'); + if (a.length > 0) { + continue; + } - var tmp_str=current_child_node.textContent.replace(/(\n(\r)?)/g, ' '); - tmp_str =tmp_str.replace("\t", " "); - hint_text+=' '+tmp_str; + var tmp_str = current_child_node.textContent.replace(/(\n(\r)?)/g, ' '); + tmp_str = tmp_str.replace("\t", " "); + hint_text += ' ' + tmp_str; } } // Режем - hint_text=hint_text.replace(new RegExp(' {2,}'), ' ').replace(new RegExp(' +$'), '').substr(1); - if (hint_text.length>140){ - hint_text=hint_text.substr(0,140-3)+'...'; + hint_text = hint_text.replace(new RegExp(' {2,}'), ' ').replace(new RegExp(' +$'), '').substr(1); + if (hint_text.length > 140) { + hint_text = hint_text.substr(0, 140 - 3) + '...'; } all_post_images.attr('data-fancybox-title', hint_text); @@ -155,23 +173,30 @@ $(document).ready(function () { $('.post-tag-nsfw,.post-tag-сиськи').find('a.postimg:not(.youtube)').attr('data-fancybox-group', 'hidden-images'); if (options.option_nsfw_hide_posts == true) { - if ($('#comments').length==0) { - // @hint Поведение "галка нажата, а внутри постов НЕ блюрится, даже если нажаты все три галки" - не баг - console.log('Hide NSFW posts'); + if ($('#comments').length == 0) { + console.log('Hide NSFW posts in feed'); $('.post').addClass('hide-nsfw-posts'); } } else { // Blurred posts - if (options.option_nsfw_blur == true) { + if (options.option_nsfw_blur_posts_entire == true) { console.log('Bluring NSFW posts'); - $('.post').addClass('hide-nsfw'); + $('.post').addClass('blur-nsfw-entire'); + } else if (options.option_nsfw_blur_posts_images == true) { + console.log('Bluring images in NSFW posts'); + $('.post').addClass('blur-nsfw-images'); + } + } - // Blurred comments - if ((options.option_nsfw_blur_comments == true) && ( - ($('.post').hasClass('post-tag-nsfw'))) || ($('.post').hasClass('post-tag-сиськи')) - ) { - $('#comments').addClass('hide-nsfw'); - } + // Blurred comments + if ($('.post').hasClass('post-tag-nsfw') || $('.post').hasClass('post-tag-сиськи')) { + if (options.option_nsfw_blur_comments_entire == true) { + console.log('Bluring comments'); + $('#comments').addClass('blur-nsfw-entire'); + } else if (options.option_nsfw_blur_comments_images == true) { + // @hint Никита Ветров официально складывает с себя все претензии, если у кого-то от этого говна упадёт драйвер видео-карты + console.log('Bluring images in comments'); + $('#comments').addClass('blur-nsfw-images'); } } } @@ -474,11 +499,12 @@ $(document).ready(function () { if (options.option_other_show_recommendation_count == true) { set_posts_count_label(); } - + // `Space` key scroll handler if (options.option_other_scroll_space_key == true){ set_space_key_skip_handler(); } + $('.point-plus-debug').fadeOut(500); }); // Showing page action @@ -502,7 +528,6 @@ var months = [ ]; -/* Nokita's functions */ // Картинки с бурятников var booru_picture_count = 0; function load_all_booru_images() { @@ -591,7 +616,7 @@ function create_image(domain, id, additional) { return a; } -/* point */ +// Помечаем непрочитанные посты более видимо чем каким-то баджем // Эта часть написана @RainbowSpike function mark_unread_post() { var divs = $(".post"); // массив постов @@ -639,7 +664,7 @@ function parse_all_videos() { var href = obj.href; var n = null; - if (n = href.match(new RegExp('\\.(webm|avi|mp4)(\\?.+)?$', 'i'))) { + if (n = href.match(new RegExp('\\.(webm|avi|mp4|mpg|mpeg)(\\?.+)?$', 'i'))) { var player = document.createElement('video'); var mime = video_extension_to_mime(n[1]); $(player).html('').attr('controls', 'controls').css({ @@ -655,13 +680,14 @@ function parse_all_videos() { function video_extension_to_mime(extension) { switch(extension){ case 'webm':return 'video/webm; codecs="vp8, vorbis'; - case 'avi' :return 'video/avi;';// @hint Хотя сомнительно + case 'avi' :return 'video/avi;'; case 'mp4' :return 'video/mp4;'; + case 'mpg' :return 'video/mp4;'; + case 'mpeg':return 'video/mp4;'; } } - // Плашки у постов function set_posts_count_label() { var ids = []; @@ -697,7 +723,7 @@ function set_posts_count_label() { postid.appendChild(e1); var e2 = document.createElement('span'); - $(e2).addClass('recomendation_count').html('~' + answer.list[id].count_recommendation).attr('title', 'Количество рекомендаций. Работает криво, спасибо @arts\'у за это'); + $(e2).addClass('recommendation_count').html('~' + answer.list[id].count_recommendation).attr('title', 'Количество рекомендаций. Работает криво, спасибо @arts\'у за это'); postid.appendChild(e2); }); } @@ -813,17 +839,52 @@ function set_space_key_skip_handler(){ }); } -function space_key_event(){ - var scroll_current =$('body').scrollTop(); - var scroll_step_size=0; - var scroll_real =Math.max(scroll_current-scroll_step_size,0); +} - var posts=$('.post'); - for(var i=0;iscroll_real){ +// Проставляем теги у постов +function create_tag_system() { + $('.post').each(function () { + var tags = $(this).find('div.tags a.tag'); + for (var i = 0; i < tags.length; i++) { + var tag_name = $(tags[i]).html().toLowerCase(); + $(this).addClass('post-tag-' + tag_name); + } + }); +} + +// Скролл по пробелу +function set_space_key_skip_handler() { + if ($('#comments').length > 0) { + return; + } + + // @todo Свериться с Best-practice биндинга функций. Мб там on или bind + $(document.body).keydown(function (e) { + // @todo Я хотел по отпусканию кнопки, но там уже скролл срабатывает + // проверяем фокус + if ($(':focus').length > 0) { + return; + } + + var k = event.keyCode; + if (k == 32) { + space_key_event(); + return false; + } + }); +} + +function space_key_event() { + var scroll_current = $('body').scrollTop(); + var scroll_step_size = 0; + var scroll_real = Math.max(scroll_current - scroll_step_size, 0); + + var posts = $('.post'); + for (var i = 0; i < posts.length; i++) { + var this_top_px = $(posts[i]).offset().top; + if (this_top_px > scroll_real) { $('body').animate({ - 'scrollTop':this_top_px + 'scrollTop': this_top_px }, 200); return; } diff --git a/chrome_point_plus/manifest.json b/chrome_point_plus/manifest.json index 38c0dcd..6e24aef 100644 --- a/chrome_point_plus/manifest.json +++ b/chrome_point_plus/manifest.json @@ -1,7 +1,7 @@ { "manifest_version": 2, "name": "Point+", - "version": "1.14.1", + "version": "1.14.2", "default_locale": "ru", "author": "__MSG_ext_author__", "homepage_url": "https://bitbucket.org/skobkin/chrome_point_plus", diff --git a/chrome_point_plus/options.html b/chrome_point_plus/options.html index 90c8dda..6589ae5 100644 --- a/chrome_point_plus/options.html +++ b/chrome_point_plus/options.html @@ -82,10 +82,18 @@
- - + +
- + +
+
+ +
+ + +
+