Remove some accidental cruft left from incorrectly merging
Fix some QR bugs, remove references to the 'catalog' g.VIEW And actually put in QuoteMarkers
This commit is contained in:
parent
19800bd0d9
commit
a4ead91d65
2
LICENSE
2
LICENSE
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* 4chan X - Version 1.4.1 - 2014-03-01
|
* 4chan X - Version 1.4.1 - 2014-03-02
|
||||||
*
|
*
|
||||||
* Licensed under the MIT license.
|
* Licensed under the MIT license.
|
||||||
* https://github.com/Spittie/4chan-x/blob/master/LICENSE
|
* https://github.com/Spittie/4chan-x/blob/master/LICENSE
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -304,9 +304,7 @@ Main =
|
|||||||
['Quote Inlining', QuoteInline]
|
['Quote Inlining', QuoteInline]
|
||||||
['Quote Previewing', QuotePreview]
|
['Quote Previewing', QuotePreview]
|
||||||
['Quote Backlinks', QuoteBacklink]
|
['Quote Backlinks', QuoteBacklink]
|
||||||
['Mark Quotes of You', QuoteYou]
|
['Quote Markers', QuoteMarkers]
|
||||||
['Mark OP Quotes', QuoteOP]
|
|
||||||
['Mark Cross-thread Quotes', QuoteCT]
|
|
||||||
['Anonymize', Anonymize]
|
['Anonymize', Anonymize]
|
||||||
['Time Formatting', Time]
|
['Time Formatting', Time]
|
||||||
['Relative Post Dates', RelativeDates]
|
['Relative Post Dates', RelativeDates]
|
||||||
|
|||||||
@ -889,7 +889,7 @@ span.hide-announcement {
|
|||||||
:root.hide-original-post-form #postForm,
|
:root.hide-original-post-form #postForm,
|
||||||
:root.hide-original-post-form .postingMode,
|
:root.hide-original-post-form .postingMode,
|
||||||
:root.hide-original-post-form #togglePostForm,
|
:root.hide-original-post-form #togglePostForm,
|
||||||
#qr.autohide:not(.has-focus):not(:hover) > form,
|
#qr.autohide:not(.focus):not(:hover) > form,
|
||||||
.thread #qr select[data-name=thread],
|
.thread #qr select[data-name=thread],
|
||||||
#file-n-submit:not(.has-file) #qr-filerm {
|
#file-n-submit:not(.has-file) #qr-filerm {
|
||||||
display: none;
|
display: none;
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
ImageLoader =
|
ImageLoader =
|
||||||
init: ->
|
init: ->
|
||||||
return if g.VIEW is 'catalog'
|
|
||||||
return unless Conf["Image Prefetching"] or Conf["Replace JPG"] or Conf["Replace PNG"] or Conf["Replace GIF"]
|
return unless Conf["Image Prefetching"] or Conf["Replace JPG"] or Conf["Replace PNG"] or Conf["Replace GIF"]
|
||||||
|
|
||||||
Post.callbacks.push
|
Post.callbacks.push
|
||||||
|
|||||||
@ -1,24 +1,6 @@
|
|||||||
Linkify =
|
Linkify =
|
||||||
init: ->
|
init: ->
|
||||||
return if g.VIEW is 'catalog' or not Conf['Linkify']
|
return if !Conf['Linkify']
|
||||||
|
|
||||||
@regString = ///(
|
|
||||||
# http, magnet, ftp, etc
|
|
||||||
(https?|mailto|git|magnet|ftp|irc):(
|
|
||||||
[a-z\d%/]
|
|
||||||
)
|
|
||||||
|
|
|
||||||
# This should account for virtually all links posted without http:
|
|
||||||
[-a-z\d]+[.](
|
|
||||||
aero|asia|biz|cat|com|coop|info|int|jobs|mobi|museum|name|net|org|post|pro|tel|travel|xxx|edu|gov|mil|[a-z]{2}
|
|
||||||
)(/|(?!.))
|
|
||||||
|
|
|
||||||
# IPv4 Addresses
|
|
||||||
[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}
|
|
||||||
|
|
|
||||||
# E-mails
|
|
||||||
[-\w\d.@]+@[a-z\d.-]+\.[a-z\d]
|
|
||||||
)///i
|
|
||||||
|
|
||||||
if Conf['Comment Expansion']
|
if Conf['Comment Expansion']
|
||||||
ExpandComment.callbacks.push @node
|
ExpandComment.callbacks.push @node
|
||||||
@ -94,6 +76,24 @@ Linkify =
|
|||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
regString: ///(
|
||||||
|
# http, magnet, ftp, etc
|
||||||
|
(https?|mailto|git|magnet|ftp|irc):(
|
||||||
|
[a-z\d%/]
|
||||||
|
)
|
||||||
|
|
|
||||||
|
# This should account for virtually all links posted without http:
|
||||||
|
[-a-z\d]+[.](
|
||||||
|
aero|asia|biz|cat|com|coop|info|int|jobs|mobi|museum|name|net|org|post|pro|tel|travel|xxx|edu|gov|mil|[a-z]{2}
|
||||||
|
)(/|(?!.))
|
||||||
|
|
|
||||||
|
# IPv4 Addresses
|
||||||
|
[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}\.[\d]{1,3}
|
||||||
|
|
|
||||||
|
# E-mails
|
||||||
|
[-\w\d.@]+@[a-z\d.-]+\.[a-z\d]
|
||||||
|
)///i
|
||||||
|
|
||||||
makeRange: (startNode, endNode, startOffset, endOffset) ->
|
makeRange: (startNode, endNode, startOffset, endOffset) ->
|
||||||
range = document.createRange();
|
range = document.createRange();
|
||||||
range.setStart startNode, startOffset
|
range.setStart startNode, startOffset
|
||||||
|
|||||||
@ -14,6 +14,7 @@ QR =
|
|||||||
textContent: 'QR'
|
textContent: 'QR'
|
||||||
title: 'Quick Reply'
|
title: 'Quick Reply'
|
||||||
href: 'javascript:;'
|
href: 'javascript:;'
|
||||||
|
|
||||||
$.on sc, 'click', ->
|
$.on sc, 'click', ->
|
||||||
if Conf['Persistent QR'] or !QR.nodes or QR.nodes.el.hidden
|
if Conf['Persistent QR'] or !QR.nodes or QR.nodes.el.hidden
|
||||||
$.event 'CloseMenu'
|
$.event 'CloseMenu'
|
||||||
@ -31,12 +32,6 @@ QR =
|
|||||||
|
|
||||||
$.ready @initReady
|
$.ready @initReady
|
||||||
|
|
||||||
if Conf['Persistent QR']
|
|
||||||
unless g.BOARD.ID is 'f' and g.VIEW is 'index'
|
|
||||||
$.on d, '4chanXInitFinished', @persist
|
|
||||||
else
|
|
||||||
$.ready @persist
|
|
||||||
|
|
||||||
Post.callbacks.push
|
Post.callbacks.push
|
||||||
name: 'Quick Reply'
|
name: 'Quick Reply'
|
||||||
cb: @node
|
cb: @node
|
||||||
@ -72,9 +67,6 @@ QR =
|
|||||||
$.on d, 'drop', QR.dropFile
|
$.on d, 'drop', QR.dropFile
|
||||||
$.on d, 'dragstart dragend', QR.drag
|
$.on d, 'dragstart dragend', QR.drag
|
||||||
{
|
{
|
||||||
catalog: ->
|
|
||||||
QR.open() if Conf["Persistent QR"]
|
|
||||||
QR.hide() if Conf['Auto Hide QR']
|
|
||||||
index: ->
|
index: ->
|
||||||
$.on d, 'IndexRefresh', QR.generatePostableThreadsList
|
$.on d, 'IndexRefresh', QR.generatePostableThreadsList
|
||||||
thread: ->
|
thread: ->
|
||||||
@ -83,7 +75,7 @@ QR =
|
|||||||
|
|
||||||
return unless Conf['Persistent QR']
|
return unless Conf['Persistent QR']
|
||||||
QR.open()
|
QR.open()
|
||||||
QR.hide() if Conf['Auto-Hide QR'] or g.VIEW is 'index' and Conf['Index Mode'] is 'catalog'
|
QR.hide() if Conf['Auto-Hide QR']
|
||||||
|
|
||||||
statusCheck: ->
|
statusCheck: ->
|
||||||
if g.DEAD
|
if g.DEAD
|
||||||
@ -99,7 +91,7 @@ QR =
|
|||||||
persist: ->
|
persist: ->
|
||||||
return unless QR.postingIsEnabled
|
return unless QR.postingIsEnabled
|
||||||
QR.open()
|
QR.open()
|
||||||
QR.hide() if Conf['Auto Hide QR'] or g.VIEW is 'catalog'
|
QR.hide() if Conf['Auto Hide QR']
|
||||||
|
|
||||||
open: ->
|
open: ->
|
||||||
if QR.nodes
|
if QR.nodes
|
||||||
@ -113,6 +105,7 @@ QR =
|
|||||||
Main.handleErrors
|
Main.handleErrors
|
||||||
message: 'Quick Reply dialog creation crashed.'
|
message: 'Quick Reply dialog creation crashed.'
|
||||||
error: err
|
error: err
|
||||||
|
|
||||||
close: ->
|
close: ->
|
||||||
if QR.req
|
if QR.req
|
||||||
QR.abort()
|
QR.abort()
|
||||||
|
|||||||
@ -1,25 +0,0 @@
|
|||||||
QuoteCT =
|
|
||||||
init: ->
|
|
||||||
return if g.VIEW is 'catalog' or !Conf['Mark Cross-thread Quotes']
|
|
||||||
|
|
||||||
if Conf['Comment Expansion']
|
|
||||||
ExpandComment.callbacks.push @node
|
|
||||||
|
|
||||||
# \u00A0 is nbsp
|
|
||||||
@text = '\u00A0(Cross-thread)'
|
|
||||||
Post.callbacks.push
|
|
||||||
name: 'Mark Cross-thread Quotes'
|
|
||||||
cb: @node
|
|
||||||
node: ->
|
|
||||||
# Stop there if it's a clone of a post in the same thread.
|
|
||||||
return if @isClone and @thread is @context.thread
|
|
||||||
|
|
||||||
{board, thread} = if @isClone then @context else @
|
|
||||||
for quotelink in @nodes.quotelinks
|
|
||||||
{boardID, threadID} = Get.postDataFromLink quotelink
|
|
||||||
continue unless threadID # deadlink
|
|
||||||
if @isClone
|
|
||||||
quotelink.textContent = quotelink.textContent.replace QuoteCT.text, ''
|
|
||||||
if boardID is board.ID and threadID isnt thread.ID
|
|
||||||
$.add quotelink, $.tn QuoteCT.text
|
|
||||||
return
|
|
||||||
@ -1,36 +0,0 @@
|
|||||||
QuoteOP =
|
|
||||||
init: ->
|
|
||||||
return if g.VIEW is 'catalog' or !Conf['Mark OP Quotes']
|
|
||||||
|
|
||||||
if Conf['Comment Expansion']
|
|
||||||
ExpandComment.callbacks.push @node
|
|
||||||
|
|
||||||
# \u00A0 is nbsp
|
|
||||||
@text = '\u00A0(OP)'
|
|
||||||
Post.callbacks.push
|
|
||||||
name: 'Mark OP Quotes'
|
|
||||||
cb: @node
|
|
||||||
|
|
||||||
node: ->
|
|
||||||
# Stop there if it's a clone of a post in the same thread.
|
|
||||||
return if @isClone and @thread is @context.thread
|
|
||||||
# Stop there if there's no quotes in that post.
|
|
||||||
return unless (quotes = @quotes).length
|
|
||||||
{quotelinks} = @nodes
|
|
||||||
|
|
||||||
# rm (OP) from cross-thread quotes.
|
|
||||||
if @isClone and @thread.fullID in quotes
|
|
||||||
i = 0
|
|
||||||
while quotelink = quotelinks[i++]
|
|
||||||
quotelink.textContent = quotelink.textContent.replace QuoteOP.text, ''
|
|
||||||
|
|
||||||
{fullID} = (if @isClone then @context else @).thread
|
|
||||||
# add (OP) to quotes quoting this context's OP.
|
|
||||||
|
|
||||||
return unless fullID in quotes
|
|
||||||
i = 0
|
|
||||||
while quotelink = quotelinks[i++]
|
|
||||||
{boardID, postID} = Get.postDataFromLink quotelink
|
|
||||||
if "#{boardID}.#{postID}" is fullID
|
|
||||||
$.add quotelink, $.tn QuoteOP.text
|
|
||||||
return
|
|
||||||
@ -1,64 +0,0 @@
|
|||||||
QuoteYou =
|
|
||||||
init: ->
|
|
||||||
return unless g.VIEW isnt 'catalog' and Conf['Mark Quotes of You'] and Conf['Quick Reply']
|
|
||||||
|
|
||||||
if Conf['Highlight Own Posts']
|
|
||||||
$.addClass doc, 'highlight-own'
|
|
||||||
|
|
||||||
if Conf['Highlight Posts Quoting You']
|
|
||||||
$.addClass doc, 'highlight-you'
|
|
||||||
|
|
||||||
if Conf['Comment Expansion']
|
|
||||||
ExpandComment.callbacks.push @node
|
|
||||||
|
|
||||||
# \u00A0 is nbsp
|
|
||||||
@text = '\u00A0(You)'
|
|
||||||
Post.callbacks.push
|
|
||||||
name: 'Mark Quotes of You'
|
|
||||||
cb: @node
|
|
||||||
|
|
||||||
node: ->
|
|
||||||
return if @isClone
|
|
||||||
|
|
||||||
if QR.db.get {boardID: @board.ID, threadID: @thread.ID, postID: @ID}
|
|
||||||
$.addClass @nodes.root, 'yourPost'
|
|
||||||
|
|
||||||
# Stop there if there's no quotes in that post.
|
|
||||||
return unless @quotes.length
|
|
||||||
|
|
||||||
for quotelink in @nodes.quotelinks when QR.db.get Get.postDataFromLink quotelink
|
|
||||||
$.add quotelink, $.tn QuoteYou.text
|
|
||||||
$.addClass quotelink, 'you'
|
|
||||||
$.addClass @nodes.root, 'quotesYou'
|
|
||||||
return
|
|
||||||
|
|
||||||
cb:
|
|
||||||
seek: (type) ->
|
|
||||||
return unless Conf['Mark Quotes of You'] and Conf['Quick Reply']
|
|
||||||
$.rmClass highlight, 'highlight' if highlight = $ '.highlight'
|
|
||||||
|
|
||||||
unless QuoteYou.lastRead
|
|
||||||
unless post = QuoteYou.lastRead = $ '.quotesYou'
|
|
||||||
new Notice 'warning', 'No posts are currently quoting you, loser.', 20
|
|
||||||
return
|
|
||||||
return if QuoteYou.cb.scroll post
|
|
||||||
else
|
|
||||||
post = QuoteYou.lastRead
|
|
||||||
|
|
||||||
str = "#{type}::div[contains(@class,'quotesYou')]"
|
|
||||||
|
|
||||||
while post = (result = $.X(str, post)).snapshotItem(if type is 'preceding' then result.snapshotLength - 1 else 0)
|
|
||||||
return if QuoteYou.cb.scroll post
|
|
||||||
|
|
||||||
posts = $$ '.quotesYou'
|
|
||||||
QuoteYou.cb.scroll posts[if type is 'following' then 0 else posts.length - 1]
|
|
||||||
|
|
||||||
scroll: (post) ->
|
|
||||||
if Get.postFromRoot(post).isHidden
|
|
||||||
return false
|
|
||||||
else
|
|
||||||
QuoteYou.lastRead = post
|
|
||||||
window.location = "##{post.id}"
|
|
||||||
Header.scrollToPost post
|
|
||||||
$.addClass $('.post', post), 'highlight'
|
|
||||||
return true
|
|
||||||
Loading…
x
Reference in New Issue
Block a user