- // ==UserScript==
- // @name GA follow
- // @namespace glav.su
- // @description Быстрое управление подпиской в ленту. Кнопка "Читать/Отписаться" в поле информации об авторах постов.
- // @include http://glav.su/forum/*
- // @include https://glav.su/forum/*
- // @version 1.1
- // @grant none
- // ==/UserScript==
- function addStyle(styleText) {
- var style = document.createElement('style');
- if (document.head) {
- document.head.appendChild(style);
- style.innerHTML = styleText;
- }
- }
- addStyle([
- '.readButton, .unreadButton {',
- 'cursor: pointer;',
- 'display: inline-block;',
- 'height: 20px;',
- 'line-height: 20px;',
- 'padding: 2px 6px;',
- 'white-space: nowrap;',
- 'width: 75px;',
- 'text-align: center;',
- 'border-radius: 5px;',
- 'margin: 10px;',
- '}',
- '.readButton {',
- 'color: #000;',
- 'background-color: #fff;',
- 'border: 1px solid #999;',
- '}',
- '.readButton:hover {',
- 'background-color: #036;',
- 'color: #fff;',
- '}',
- '.unreadButton {',
- 'color: #fff;',
- 'background-color: #369;',
- 'border: 1px solid #036;',
- '}',
- '.unreadButton:hover {',
- 'background-color: #900;',
- '}',
- ].join(''));
-
- var myUID = $(".lUserPanelUserItemProfile").find('a[href^="'+APP_URL+'/members/"]')
- .attr('href').replace(/.*?\/members\/(\d+).*/, '$1');
-
- var $sandbox = ( (s=$("#sandbox")).length == 1 )?
- s : $('<div id="sandbox" style="display: none;">').appendTo( $(document.body) );//песочница
-
- window.myFollows = ({
- list: {},
- update: function(callback){
- var _this = this;
- $.ajax({
- url: APP_URL + '/members/' + myUID + '/follows/',
- dataType: 'html',
- success: function(data){
- var dt = data.toString().replace(/[\n\r]/mg, '');
- $sandbox.empty()
- .html( dt.replace(/^.*(<div id="jsUF">.*?<\/table>\s*?<\/div>).*$/, '$1') );
- $sandbox.find('a').each(function(ax, a){
- _this.list[$(a).attr('href').replace(/.*?\/members\/(\d+).*/, '$1')] =
- { name: $(a).text(), };
- });
- $sandbox.empty();
- if( typeof callback == 'function' ){
- callback();
- }
- }
- });
- return this;
- },
- add_button: function(msg){
- var userUID = (nm_a = $(msg).find("td.fItem.forumMessagesListMessageAuthorName a")).length > 0 ?
- $(nm_a).attr('href').replace(/.*?\/members\/(\d+).*/, '$1') : '';
- if( userUID == myUID || userUID == ''){
- return true;
- }
- var messID = $(msg).attr("id").replace(/forumMessagesListMessage(\d+)/, "$1");
- var ifollow = +(typeof this.list[userUID] !== 'undefined');
- $(msg).find("td#forumMessagesListMessage" + messID + "AuthorInfo div.cBlock")
- .after($('<span class="' + ['readButton', 'unreadButton'][ifollow] + '" fw="' + ifollow + '">')
- .html( ['Читать', 'Читаю'][ifollow] )
- .hover(function(){
- $(this).html(['Читать', 'Отменить'][+($(this).attr('fw') == "1")]);
- },
- function(){
- $(this).html(['Читать', 'Читаю'][+($(this).attr('fw') == "1")]);
- })
- .click(function(){
- var _this = this;
- $.get(APP_URL + '/user/ajax/followmember/', {
- memberId: userUID,
- }, function (res) {
- if( res.status == 1 ){
- var fw = +(res.follower !== null);
- $(_this)
- .html( ['Читать', 'Читаю'][fw] )
- .attr( 'class', ['readButton', 'unreadButton'][fw] )
- .attr( 'fw', fw );
- if( fw == 0 ){
- delete window.myFollows.list[userUID];
- }else if( typeof window.myFollows.list[userUID] == 'undefined' ){
- window.myFollows.list[userUID] = res.follower;
- }
- }
- }, 'json');
- })
- );
- },
- }).update(function(){
- $("#forumMessagesList .forumMessagesListMessage").each(function(midx, msg){
- window.myFollows.add_button(msg);
- });
- });