Conflicts:
	CHANGELOG.md
	LICENSE
	builds/4chan-X.user.js
	builds/crx/script.js
	package.json
	src/General/css/font-awesome.css
This commit is contained in:
Zixaphir 2014-01-09 10:12:28 -07:00
commit 9478dabdad
33 changed files with 162 additions and 2595 deletions

View File

@ -1,4 +1,7 @@
<<<<<<< HEAD
<<<<<<< HEAD
=======
>>>>>>> 5682df5a2a366e5c5f4362395574179a2de68bb9
**MayhemYDG**:
- **New option**: `Auto-hide header on scroll`.
- Added support for `4cdn.org`.
@ -24,8 +27,8 @@
- New setting: `Refreshed Navigation`, disabled by default. When enabled, navigating through pages will refresh the index.
- The last index refresh timer will now indicate the last time the index changed from 4chan's side, instead of the last time you refreshed the index.
- You can now refresh the index page you are on with the refresh shortcut in the header bar or the same keybind for refreshing threads.
- You can now switch between paged and all-threads index modes via the "Index Navigation" header sub-menu:<br>
![index navigation](img/changelog/3.12.0/0.png)
- You can now switch between paged and all-threads index modes via the "Index Navigation" header sub-menu (note that this replaces infinite scrolling):<br>
![index navigation](src/General/img/changelog/1.2.46.png)
- Threads in the index can now be sorted by:
<ul>
<li> Bump order
@ -41,9 +44,19 @@
- You cannot post an image reply immediately after a non-image reply anymore.
- Various minor fixes
**seaweedchan**:
- Various fixes and improvements for the JSONified index
- Removed index refresh notifications
**Zixaphir**:
- FappeTyme and WerkTyme now persist across sessions.
<<<<<<< HEAD
=======
=======
- Various fixes and improvements for the JSONified index
>>>>>>> 5682df5a2a366e5c5f4362395574179a2de68bb9
### v1.2.45
*2014-01-07*
@ -54,7 +67,10 @@
**Zixaphir**:
- Fix optional increase for thread updater
<<<<<<< HEAD
>>>>>>> 08ae1daee8d4a2dfa272b00a62f78aa56092dfd4
=======
>>>>>>> 5682df5a2a366e5c5f4362395574179a2de68bb9
### v1.2.44
*2013-12-06*

View File

@ -1,5 +1,5 @@
/*
* 4chan X - Version 1.2.45 - 2014-01-07
* 4chan X - Version 1.2.45 - 2014-01-09
*
* Licensed under the MIT license.
* https://github.com/seaweedchan/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

File diff suppressed because it is too large Load Diff

View File

@ -1,971 +0,0 @@
/* General */
.dialog {
box-shadow: 0 1px 2px rgba(0, 0, 0, .15);
border: 1px solid;
display: block;
padding: 0;
}
.field {
background-color: #FFF;
border: 1px solid #CCC;
-moz-box-sizing: border-box;
box-sizing: border-box;
color: #333;
font-family: inherit;
font-size: 13px;
margin: 0;
padding: 2px 4px 3px;
outline: none;
transition: color .25s, border-color .25s, flex .25s;
}
.field::-moz-placeholder,
.field:hover::-moz-placeholder {
color: #AAA !important;
}
.field:hover {
border-color: #999;
}
.field:hover, .field:focus {
color: #000;
}
.field[disabled] {
background-color: #F2F2F2;
color: #888;
}
.field::-webkit-search-decoration {
display: none;
}
.move {
cursor: move;
}
label, .watcher-toggler {
cursor: pointer;
}
a[href="javascript:;"] {
text-decoration: none;
}
.warning {
color: red;
}
/* 4chan style fixes */
.opContainer, .op {
display: block !important;
}
.post {
overflow: visible !important;
}
.reply > .file > .fileText {
margin: 0 20px;
}
[hidden] {
display: none !important;
}
/* fixed, z-index */
#overlay,
#qp, #ihover,
#updater, #thread-stats,
#navlinks, #header,
#qr {
position: fixed;
}
#overlay {
z-index: 999;
}
#notifications {
z-index: 70;
}
#qp, #ihover {
z-index: 60;
}
#menu {
z-index: 50;
}
#navlinks, #updater, #thread-stats {
z-index: 40;
}
#qr {
z-index: 30;
}
#thread-watcher:hover {
z-index: 20;
}
#header {
z-index: 10;
}
#thread-watcher {
z-index: 5;
}
/* Header */
:root.top-header body {
margin-top: 2em;
}
:root.bottom-header body {
margin-bottom: 2em;
}
:root.fourchan-x #navtopright,
:root.fourchan-x #navbotright,
:root.fourchan-x:not(.show-original-top-board-list) #boardNavDesktop,
:root.fourchan-x:not(.show-original-bot-board-list) #boardNavDesktopFoot {
display: none !important;
}
#header {
right: 0;
left: 0;
}
#header.top {
top: 0;
}
#header.bottom {
bottom: 0;
}
#header-bar {
border-width: 0;
display: flex;
padding: 3px;
position: relative;
transition: all .1s .05s ease-in-out;
}
#header.top #header-bar {
border-bottom-width: 1px;
}
#header.bottom #header-bar {
box-shadow: 0 -1px 2px rgba(0, 0, 0, .15);
border-top-width: 1px;
}
#board-list {
flex: 1;
align-self: center;
text-align: center;
}
#header-bar.autohide:not(:hover) {
box-shadow: none;
transition: all .8s .6s cubic-bezier(.55, .055, .675, .19);
}
#header-bar.scroll:not(:hover) {
transition: -webkit-transform .2s !important;
transition: transform .2s !important;
}
#header.top #header-bar.autohide:not(:hover) {
margin-bottom: -1em;
-webkit-transform: translateY(-100%);
transform: translateY(-100%);
}
#header.bottom #header-bar.autohide:not(:hover) {
-webkit-transform: translateY(100%);
transform: translateY(100%);
}
#toggle-header-bar {
left: 0;
right: 0;
height: 10px;
position: absolute;
}
#header.top #toggle-header-bar {
cursor: n-resize;
bottom: -10px;
}
#header.bottom #toggle-header-bar {
cursor: s-resize;
top: -10px;
}
#header.top #header-bar.autohide #toggle-header-bar {
cursor: s-resize;
}
#header.bottom #header-bar.autohide #toggle-header-bar {
cursor: n-resize;
}
#header-bar a:not(.entry) {
text-decoration: none;
padding: 1px;
}
.shortcut:not(:last-child)::after {
content: " / ";
}
.brackets-wrap::before {
content: " [ ";
}
.brackets-wrap::after {
content: " ] ";
}
/* Notifications */
#notifications {
height: 0;
text-align: center;
}
#header.bottom #notifications {
position: fixed;
top: 0;
left: 0;
width: 100%;
}
.notification {
color: #FFF;
font-weight: 700;
text-shadow: 0 1px 2px rgba(0, 0, 0, .5);
box-shadow: 0 1px 2px rgba(0, 0, 0, .15);
border-radius: 2px;
margin: 1px auto;
width: 500px;
max-width: 100%;
position: relative;
transition: all .25s ease-in-out;
}
.notification.error {
background-color: hsla(0, 100%, 38%, .9);
}
.notification.warning {
background-color: hsla(36, 100%, 38%, .9);
}
.notification.info {
background-color: hsla(200, 100%, 38%, .9);
}
.notification.success {
background-color: hsla(104, 100%, 38%, .9);
}
.notification a {
color: white;
}
.notification > .close {
padding: 7px;
top: 0;
right: 0;
position: absolute;
}
.message {
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 6px 20px;
max-height: 200px;
width: 100%;
overflow: auto;
}
/* Settings */
:root.fourchan-x body {
-moz-box-sizing: border-box;
box-sizing: border-box;
}
#overlay {
background-color: rgba(0, 0, 0, .5);
display: flex;
position: fixed;
top: 0;
left: 0;
height: 100%;
width: 100%;
}
#fourchanx-settings {
-moz-box-sizing: border-box;
box-sizing: border-box;
box-shadow: 0 0 15px rgba(0, 0, 0, .15);
height: 600px;
max-height: 100%;
width: 900px;
max-width: 100%;
margin: auto;
padding: 3px;
display: flex;
flex-direction: column;
}
#fourchanx-settings > nav {
display: flex;
padding: 2px 2px 0;
}
#fourchanx-settings > nav a {
text-decoration: underline;
}
#fourchanx-settings > nav a.close {
text-decoration: none;
padding: 0 2px;
}
.sections-list {
flex: 1;
}
.tab-selected {
font-weight: 700;
}
.section-container {
flex: 1;
position: relative;
}
.section-container > section {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
overflow: auto;
}
.section-sauce ul,
.section-rice ul {
list-style: none;
margin: 0;
padding: 8px;
}
.section-sauce li,
.section-rice li {
padding-left: 4px;
}
.section-main label {
text-decoration: underline;
}
.section-filter ul,
.section-qr ul {
padding: 0;
}
.section-filter li,
.section-qr li {
margin: 10px 40px;
}
.section-filter textarea {
height: 500px;
}
.section-qr textarea {
height: 200px;
}
.section-sauce textarea {
height: 350px;
}
.section-rice .field[name="boardnav"] {
width: 100%;
}
.section-rice textarea {
height: 150px;
}
.section-archives table {
width: 100%;
}
.section-archives th:not(:first-child) {
width: 30%;
}
.section-archives td {
text-align: center;
}
.section-archives select {
width: 90%;
}
.section-keybinds .field {
font-family: monospace;
}
#fourchanx-settings fieldset {
border: 1px solid;
border-radius: 3px;
}
#fourchanx-settings legend {
font-weight: 700;
}
#fourchanx-settings textarea {
font-family: monospace;
min-width: 100%;
max-width: 100%;
}
#fourchanx-settings code {
color: #000;
background-color: #FFF;
padding: 0 2px;
}
.unscroll {
overflow: hidden;
}
/* Index */
:root.index-loading .navLinks,
:root.index-loading .board,
:root.index-loading .pagelist {
display: none;
}
#index-search {
padding-right: 1.5em;
width: 100px;
transition: color .25s, border-color .25s, width .25s;
}
#index-search:focus,
#index-search[data-searching] {
width: 200px;
}
#index-search-clear {
color: gray;
margin-left: -1.25em;
}
<% if (type === 'crx') { %>
/* ``::-webkit-*'' selectors break selector lists on Firefox. */
#index-search::-webkit-search-cancel-button,
<% } %>
#index-search:not([data-searching]) + #index-search-clear {
display: none;
}
.summary {
text-decoration: none;
}
/* Announcement Hiding */
:root.hide-announcement #globalMessage,
:root.hide-announcement-enabled #toggleMsgBtn {
display: none;
}
a.hide-announcement {
float: left;
}
/* Unread */
#unread-line {
margin: 0;
}
/* Thread Updater */
#updater:not(:hover) {
background: none;
border: none;
box-shadow: none;
}
#updater > .move {
padding: 0 3px;
}
#updater > div:last-child {
text-align: center;
}
#updater input[type=number] {
width: 4em;
}
#updater:not(:hover) > div:not(.move) {
display: none;
}
#updater input[type="button"] {
width: 100%;
}
.new {
color: limegreen;
}
/* Thread Watcher */
#thread-watcher {
max-width: 200px;
min-width: 150px;
padding: 3px;
position: absolute;
}
#thread-watcher > div:first-child {
display: flex;
align-items: center;
}
#thread-watcher .move {
flex: 1;
}
#watcher-status:not(:empty)::before {
content: "(";
}
#watcher-status:not(:empty)::after {
content: ")";
}
#watched-threads:not(:hover) {
max-height: 150px;
overflow: hidden;
}
#watched-threads div {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
#watched-threads .current {
font-weight: 700;
}
#watched-threads a {
text-decoration: none;
}
#watched-threads .dead-thread a[title] {
text-decoration: line-through;
}
/* Thread Stats */
#thread-stats {
background: none;
border: none;
box-shadow: none;
}
/* Quote */
.deadlink {
text-decoration: none !important;
}
.backlink.deadlink:not(.forwardlink),
.quotelink.deadlink:not(.forwardlink) {
text-decoration: underline !important;
}
.inlined {
opacity: .5;
}
#qp input, .forwarded {
display: none;
}
.quotelink.forwardlink,
.backlink.forwardlink {
text-decoration: none;
border-bottom: 1px dashed;
}
.filtered {
text-decoration: underline line-through;
}
.inline {
border: 1px solid;
display: table;
margin: 2px 0;
}
.inline .post {
border: 0 !important;
background-color: transparent !important;
display: table !important;
margin: 0 !important;
padding: 1px 2px !important;
}
#qp > .opContainer::after {
content: '';
clear: both;
display: table;
}
#qp .post {
border: none;
margin: 0;
padding: 2px 2px 5px;
}
#qp img {
max-height: 80vh;
max-width: 50vw;
}
.qphl {
outline: 2px solid rgba(216, 94, 49, .7);
}
/* File */
.file-info:hover .fntrunc,
.file-info:not(:hover) .fnfull,
.expanded-image > .post > .file > .fileThumb > img[data-md5],
:not(.expanded-image) > .post > .file > .fileThumb > .full-image {
display: none;
}
.expanding {
opacity: .5;
}
.expanded-image {
clear: both;
}
.expanded-image > .op > .file::after {
content: '';
clear: both;
display: table;
}
:root.fit-height .full-image {
max-height: 100vh;
}
:root.fit-width .full-image {
max-width: 100%;
}
:root.gecko.fit-width .full-image {
width: 100%;
}
#ihover {
-moz-box-sizing: border-box;
box-sizing: border-box;
max-height: 100%;
max-width: 75%;
padding-bottom: 16px;
}
/* Index/Reply Navigation */
#navlinks {
font-size: 16px;
top: 25px;
right: 10px;
}
/* Filter */
.opContainer.filter-highlight {
box-shadow: inset 5px 0 rgba(255, 0, 0, .5);
}
.filter-highlight > .reply {
box-shadow: -5px 0 rgba(255, 0, 0, .5);
}
/* Thread & Reply Hiding */
.hide-thread-button,
.hide-reply-button {
float: left;
margin-right: 2px;
}
.stub ~ * {
display: none !important;
}
.stub input {
display: inline-block;
}
/* QR */
:root.hide-original-post-form #postForm,
:root.hide-original-post-form .postingMode,
:root.hide-original-post-form #togglePostForm,
#qr.autohide:not(.has-focus):not(:hover) > form {
display: none;
}
#qr select, #dump-button, .remove, .captcha-img {
cursor: pointer;
}
#qr > div {
min-width: 300px;
display: flex;
align-items: center;
}
#qr .move {
align-self: stretch;
flex: 1;
}
#qr select[data-name=thread] {
margin: 0;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
border: none;
background: none;
font: inherit;
}
#qr option {
color: #000;
background-color: #F7F7F7;
}
#qr .close {
padding: 0 3px;
}
#qr > form {
display: flex;
flex-direction: column;
}
.persona {
display: flex;
}
.persona .field {
flex: 1;
}
.persona .field:hover,
.persona .field:focus {
flex: 3;
}
#dump-button {
background: linear-gradient(#EEE, #CCC);
border: 1px solid #CCC;
margin: 0;
padding: 2px 4px 3px;
outline: none;
width: 30px;
}
#dump-button:hover,
#dump-button:focus {
background: linear-gradient(#FFF, #DDD);
}
#dump-button:active,
.dump #dump-button:not(:hover):not(:focus) {
background: linear-gradient(#CCC, #DDD);
}
:root.gecko #dump-button {
padding: 0;
}
#qr:not(.dump) #dump-list-container {
display: none;
}
#dump-list-container {
height: 100px;
position: relative;
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
}
#dump-list {
counter-reset: qrpreviews;
top: 0;
right: 0;
bottom: 0;
left: 0;
overflow: hidden;
position: absolute;
white-space: nowrap;
}
#dump-list:hover {
bottom: -12px;
overflow-x: auto;
z-index: 1;
}
#dump-list::-webkit-scrollbar {
height: 12px;
}
#dump-list::-webkit-scrollbar-thumb {
border: 1px solid;
}
.qr-preview {
background-position: 50% 20%;
background-size: cover;
border: 1px solid #808080;
color: #FFF !important;
font-size: 12px;
-moz-box-sizing: border-box;
box-sizing: border-box;
cursor: move;
display: inline-block;
height: 92px;
width: 92px;
margin: 4px;
padding: 2px;
opacity: .6;
outline: none;
overflow: hidden;
position: relative;
text-shadow: 0 0 2px #000;
transition: opacity .25s ease-in-out;
vertical-align: top;
white-space: pre;
}
.qr-preview:hover,
.qr-preview:focus {
opacity: .9;
color: #FFF !important;
}
.qr-preview#selected {
opacity: 1;
}
.qr-preview::before {
counter-increment: qrpreviews;
content: counter(qrpreviews);
font-weight: 700;
text-shadow: 0 0 3px #000, 0 0 5px #000;
position: absolute;
top: 3px;
right: 3px;
}
.qr-preview.drag {
border-color: red;
border-style: dashed;
opacity: 1;
}
.qr-preview.over {
border-color: #FFF;
border-style: dashed;
opacity: 1;
}
a.remove {
color: #E00 !important;
padding: 1px;
}
.qr-preview > label {
background: rgba(0, 0, 0, .5);
right: 0;
bottom: 0;
left: 0;
position: absolute;
text-align: center;
}
.qr-preview > label > input {
margin: 1px 0;
vertical-align: bottom;
}
#add-post {
font-size: 20px;
height: 20px;
width: 20px;
text-align: center;
position: absolute;
right: 0;
bottom: 0;
z-index: 1;
}
#qr textarea {
min-height: 160px;
min-width: 100%;
display: block;
}
#qr.has-captcha textarea {
min-height: 120px;
}
.textarea {
position: relative;
}
#char-count {
color: #000;
background: hsla(0, 0%, 100%, .5);
font-size: 8pt;
position: absolute;
bottom: 1px;
right: 1px;
pointer-events: none;
}
#char-count.warning {
color: red;
}
.captcha-img {
background: #FFF;
outline: 1px solid #CCC;
outline-offset: -1px;
}
.captcha-img > img {
display: block;
height: 57px;
width: 300px;
}
#file-n-submit-container {
position: relative;
}
#file-n-submit {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
display: flex;
align-items: center;
}
#file-n-submit-container input[type='file'] {
/* Keep it to set an appropriate height to the container. */
visibility: hidden;
}
#file-n-submit-container input {
margin: 0;
}
#file-n-submit input[type='submit'] {
order: 1;
}
#file-n-submit.has-file #qr-no-file,
#file-n-submit:not(.has-file) #qr-filename,
#file-n-submit:not(.has-file) #qr-filesize,
#file-n-submit:not(.has-file) #qr-file-spoiler,
#file-n-submit:not(.has-file) #qr-filerm,
#qr-filename:focus ~ #qr-filesize {
display: none;
}
#qr-no-file,
#qr-filename,
#qr-filesize,
#qr-file-spoiler {
margin: 0 2px !important;
}
#qr-no-file {
cursor: default;
flex: 1;
}
#qr-filename {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
background: none;
border: none !important;
color: inherit;
font: inherit;
flex: 1;
text-overflow: ellipsis;
}
#qr-filesize {
font-size: .8em;
}
#qr-filesize::before {
content: " (";
}
#qr-filesize::after {
content: ")";
}
/* Menu */
.menu-button {
position: relative;
}
.menu-button i:not(.fa-bars) {
border-top: 6px solid;
border-right: 4px solid transparent;
border-left: 4px solid transparent;
display: inline-block;
margin: 2px;
vertical-align: middle;
}
@media screen and (resolution: 1dppx) {
.fa-bars {
font-size: 14px;
}
#shortcuts .fa-bars {
vertical-align: -1px;
}
}
#menu {
border-bottom: 0;
display: flex;
margin: 2px 0;
flex-direction: column;
position: absolute;
outline: none;
}
#menu.top {
top: 100%;
}
#menu.bottom {
bottom: 100%;
}
#menu.left {
left: 0;
}
#menu.right {
right: 0;
}
.entry {
cursor: pointer;
outline: none;
padding: 3px 7px;
position: relative;
text-decoration: none;
white-space: nowrap;
}
.entry.disabled {
color: graytext !important;
}
.entry.has-submenu {
padding-right: 20px;
}
.has-submenu::after {
content: '';
border-left: 6px solid;
border-top: 4px solid transparent;
border-bottom: 4px solid transparent;
display: inline-block;
margin: 4px;
position: absolute;
right: 3px;
}
.has-submenu:not(.focused) > .submenu {
display: none;
}
.submenu {
border-bottom: 0;
display: flex;
flex-direction: column;
position: absolute;
margin: -1px 0;
}
.submenu.top {
top: 0;
}
.submenu.bottom {
bottom: 0;
}
.submenu.left {
left: 100%;
}
.submenu.right {
right: 100%;
}
.entry input {
margin: 0;
}
/* colored uid */
.posteruid.painted {
padding: 0 5px;
border-radius: 1em;
font-size: 0.8em;
cursor: pointer;
}

View File

@ -1,18 +0,0 @@
<div id="fourchanx-settings" class="dialog">
<nav>
<div class="sections-list"></div>
<div class="credits">
<a href="<%= meta.page %>" target="_blank"><%= meta.name %></a>
&nbsp;|&nbsp;
<a href="<%= meta.repo %>blob/<%= meta.mainBranch %>/CHANGELOG.md" target="_blank">#{g.VERSION}</a>
&nbsp;|&nbsp;
<a href="<%= meta.repo %>blob/<%= meta.mainBranch %>/CONTRIBUTING.md#reporting-bugs-and-suggestions" target="_blank">Issues</a>
&nbsp;|&nbsp;
<a href="javascript:;" class="close fa fa-times" title="Close"></a>
</div>
</nav>
<hr>
<div class="section-container">
<section></section>
</div>
</div>

View File

@ -1,17 +0,0 @@
<div class="move">
<span id="update-status"></span>&nbsp;<span id="update-timer"></span>
</div>
#{html}
<div>
<label title="Controls whether *this* thread automatically updates or not">
<input type="checkbox" name="Auto Update This" #{if Conf['Auto Update'] then "checked" else ""}> Auto Update This
</label>
</div>
<div>
<label>
<input type="number" name="Interval" class="field" min="5" value="#{Conf['Interval']}"> Refresh rate (s)
</label>
</div>
<div>
<input value="Refresh thread" type="button" name="Update">
</div>

View File

@ -1,5 +0,0 @@
<div>
<span class="move">Thread Watcher <span id="watcher-status"></span></span>
<a class="menu-button" href="javascript:;"><i class="fa fa-bars"></i></a>
</div>
<div id="watched-threads"></div>

View File

@ -1,39 +0,0 @@
<div>
<input type="checkbox" id="autohide" title="Auto-hide">
<select data-name="thread" title="Create a new thread / Reply">
<option value="new">New thread</option>
</select>
<span class="move"></span>
<a href="javascript:;" class="close fa fa-times" title="Close"></a>
</div>
<form>
<div class="persona">
<input type="button" id="dump-button" title="Dump list" value="+">
<input data-name="name" list="list-name" placeholder="Name" class="field" size="1">
<input data-name="email" list="list-email" placeholder="E-mail" class="field" size="1">
<input data-name="sub" list="list-sub" placeholder="Subject" class="field" size="1">
</div>
<div id="dump-list-container">
<div id="dump-list"></div>
<a href="javascript:;" id="add-post" class="fa fa-plus" title="Add a post"></a>
</div>
<div class="textarea">
<textarea data-name="com" placeholder="Comment" class="field"></textarea>
<span id="char-count"></span>
</div>
<div id="file-n-submit-container">
<input type="file" multiple>
<div id="file-n-submit">
<input type="submit">
<input type="button" id="qr-file-button" value="Choose files">
<span id="qr-no-file">No selected file</span>
<input id="qr-filename" data-name="filename" spellcheck="false">
<span id="qr-filesize"></span>
<a href="javascript:;" id="qr-filerm" class="fa fa-times-circle" title="Remove file"></a>
<input type="checkbox" id="qr-file-spoiler" title="Spoiler image">
</div>
</div>
</form>
<datalist id="list-name"></datalist>
<datalist id="list-email"></datalist>
<datalist id="list-sub"></datalist>

View File

@ -1,92 +0,0 @@
[{
"uid": 0,
"name": "Foolz",
"domain": "archive.foolz.us",
"http": true,
"https": true,
"software": "foolfuuka",
"boards": ["a", "co", "gd", "jp", "m", "sp", "tg", "tv", "v", "vg", "vp", "vr", "wsg"],
"files": ["a", "gd", "jp", "m", "tg", "vg", "vp", "vr", "wsg"]
}, {
"uid": 1,
"name": "NSFW Foolz",
"domain": "nsfw.foolz.us",
"http": true,
"https": true,
"software": "foolfuuka",
"boards": ["u"],
"files": ["u"]
}, {
"uid": 2,
"name": "The Dark Cave",
"domain": "archive.thedarkcave.org",
"http": true,
"https": true,
"software": "foolfuuka",
"boards": ["c", "int", "out", "po"],
"files": ["c", "po"]
}, {
"uid": 3,
"name": "4plebs",
"domain": "archive.4plebs.org",
"http": true,
"https": true,
"software": "foolfuuka",
"boards": ["hr", "pol", "s4s", "tg", "tv", "x"],
"files": ["hr", "pol", "s4s", "tg", "tv", "x"]
}, {
"uid": 4,
"name": "Nyafuu",
"domain": "archive.nyafuu.org",
"http": true,
"https": true,
"software": "foolfuuka",
"boards": ["c", "w", "wg"],
"files": ["c", "w", "wg"]
}, {
"uid": 7,
"name": "Install Gentoo",
"domain": "archive.installgentoo.net",
"http": false,
"https": true,
"software": "fuuka",
"boards": ["diy", "g", "sci"],
"files": []
}, {
"uid": 8,
"name": "Rebecca Black Tech",
"domain": "rbt.asia",
"http": true,
"https": true,
"software": "fuuka",
"boards": ["cgl", "g", "mu", "w"],
"files": ["cgl", "g", "mu", "w"]
}, {
"uid": 9,
"name": "Heinessen",
"domain": "archive.heinessen.com",
"http": true,
"https": false,
"software": "fuuka",
"boards": ["an", "fit", "k", "mlp", "r9k", "toy"],
"files": ["an", "fit", "k", "r9k", "toy"]
}, {
"uid": 10,
"name": "warosu",
"domain": "fuuka.warosu.org",
"http": true,
"https": true,
"software": "fuuka",
"boards": ["3", "cgl", "ck", "fa", "ic", "jp", "lit", "tg", "vr"],
"files": ["3", "cgl", "ck", "fa", "ic", "jp", "lit", "tg", "vr"]
}, {
"uid": 13,
"name": "Foolz Beta",
"domain": "beta.foolz.us",
"http": true,
"https": true,
"withCredentials": true,
"software": "foolfuuka",
"boards": ["a", "co", "gd", "jp", "m", "s4s", "sp", "tg", "tv", "u", "v", "vg", "vp", "vr", "wsg"],
"files": ["a", "gd", "jp", "m", "s4s", "tg", "u", "vg", "vp", "vr", "wsg"]
}]

View File

@ -13,7 +13,6 @@
"*://sys.4chan.org/*",
"*://a.4cdn.org/*",
"*://i.4cdn.org/*"
],
"files": {
"metajs": "4chan-X.meta.js",

View File

@ -151,8 +151,8 @@ PostHiding =
makeButton: (post, type) ->
span = $.el 'span',
className: "brackets-wrap"
textContent: "\u00A0#{if type is 'hide' then '-' else '+'}\u00A0"
className: "fa fa-#{if type is 'hide' then 'minus' else 'plus'}-square-o"
textContent: ""
a = $.el 'a',
className: "#{type}-reply-button"
href: 'javascript:;'

View File

@ -146,7 +146,7 @@ ThreadHiding =
makeButton: (thread, type) ->
a = $.el 'a',
className: "#{type}-thread-button"
innerHTML: "<span class=brackets-wrap>&nbsp;#{if type is 'hide' then '-' else '+'}&nbsp;</span>"
innerHTML: "<span class='fa fa-#{if type is 'hide' then 'minus' else 'plus'}-square'></span>"
href: 'javascript:;'
a.dataset.fullID = thread.fullID
$.on a, 'click', ThreadHiding.toggle

View File

@ -182,7 +182,7 @@ Build =
if isOP and g.VIEW is 'index'
pageNum = Math.floor Index.liveThreadIDs.indexOf(postID) / Index.threadsNumPerPage
pageIcon = " <span class=page-num title='This thread is on page #{pageNum} in the original index.'>Page #{pageNum}</span>"
pageIcon = " <span class=page-num title='This thread is on page #{pageNum} in the original index.'>[#{pageNum}]</span>"
replyLink = " &nbsp; <span>[<a href='/#{boardID}/res/#{threadID}' class=replylink>Reply</a>]</span>"
else
pageIcon = replyLink = ''

View File

@ -515,7 +515,7 @@ http://iqdb.org/?url=%TURL
'Centered links': false
'Header catalog links': false
'Bottom Board List': true
'Shortcut Icons': false
'Shortcut Icons': true
'Custom Board Navigation': true
boardnav: """

View File

@ -63,8 +63,8 @@ Index =
type: 'header'
el: $.el 'span',
textContent: 'Index Navigation'
order: 90
subEntries: [modeEntry, sortEntry, repliesEntry, anchorEntry, refNavEntry]
order: 98
subEntries: [repliesEntry, anchorEntry, refNavEntry, modeEntry, sortEntry]
$.addClass doc, 'index-loading'
@update()
@ -130,6 +130,7 @@ Index =
link: (e) ->
return if g.VIEW isnt 'index' or /catalog/.test @href
e.preventDefault()
history.pushState null, '', @pathname
Index.update()
scrollToIndex: ->
@ -202,17 +203,6 @@ Index =
return unless navigator.onLine
Index.req?.abort()
Index.notice?.close()
if d.readyState isnt 'loading'
Index.notice = new Notice 'info', 'Refreshing index...'
else
# Delay the notice on initial page load
# and only display it for slow connections.
now = Date.now()
$.ready ->
setTimeout (->
return unless Index.req and !Index.notice
Index.notice = new Notice 'info', 'Refreshing index...'
), 5 * $.SECOND - (Date.now() - now)
pageNum = null if typeof pageNum isnt 'number' # event
onload = (e) -> Index.load e, pageNum
Index.req = $.ajax "//a.4cdn.org/#{g.BOARD}/catalog.json",
@ -248,11 +238,6 @@ Index =
new Notice 'error', 'Index refresh failed.', 2
return
if notice
notice.setType 'success'
notice.el.lastElementChild.textContent = 'Index refreshed!'
setTimeout notice.close, $.SECOND
timeEl = $ '#index-last-refresh', Index.navLinks
timeEl.dataset.utc = Date.parse req.getResponseHeader 'Last-Modified'
RelativeDates.update timeEl
@ -370,6 +355,7 @@ Index =
else
nodes = Index.sortedNodes
$.rmAll Index.root
$.rmAll Header.hover
Index.buildReplies nodes if Conf['Show Replies']
$.event 'IndexBuild', nodes
$.add Index.root, nodes

View File

@ -226,6 +226,8 @@ Main =
catch err
new Notice 'warning', 'Cookies need to be enabled on 4chan for <%= meta.name %> to operate properly.', 30
$.event '4chanXInitFinished'
callbackNodes: (klass, nodes) ->
i = 0
cb = klass.callbacks

View File

@ -15,6 +15,12 @@
:root.burichan #header-bar a, :root.burichan #header-bar #notifications a {
color: #34345C;
}
:root.burichan #custom-board-list .current {
border-bottom: 1px solid #2F4DC6;
}
:root.burichan #custom-board-list .current:hover {
border-bottom-color: #ff0000;
}
/* Settings */
:root.burichan #fourchanx-settings fieldset {

View File

@ -1,5 +1,5 @@
/*!
* Font Awesome 3.2.1
* Font Awesome 4.0.3
* the iconic font designed for Bootstrap
* ------------------------------------------------------------------------------
* The full suite of pictographic icons, examples, and documentation can be

View File

@ -15,6 +15,12 @@
:root.futaba #header-bar a, :root.futaba #notifications a {
color: #800000;
}
:root.futaba #custom-board-list a.current {
border-bottom: 1px solid #b20000;
}
:root.futaba #custom-board-list .current:hover {
border-bottom-color: #ff0000;
}
/* Settings */
:root.futaba #fourchanx-settings fieldset {

View File

@ -15,6 +15,12 @@
:root.photon #header-bar a, :root.photon #notifications a {
color: #FF6600;
}
:root.photon #custom-board-list a.current {
border-bottom: 1px solid #004A99;
}
:root.photon #custom-board-list .current:hover {
border-bottom-color: #FF3300;
}
/* Settings */
:root.photon #fourchanx-settings fieldset {

View File

@ -1,10 +1,16 @@
/* General */
.dialog {
box-shadow: 0 1px 2px rgba(0, 0, 0, .15);
border: 1px solid;
display: block;
padding: 0;
}
.dialog:not(#qr):not(#thread-watcher):not(#header-bar) {
box-shadow: 0 1px 2px rgba(0, 0, 0, .15);
}
#qr,
#thread-watcher {
box-shadow: -1px 2px 2px rgba(0, 0, 0, 0.25);
}
.captcha-img,
.field {
background-color: #FFF;
@ -76,6 +82,9 @@ a {
div.center:not(.ad-cnt) {
display: none !important;
}
.page-num {
margin-right: -8px;
}
/* fixed, z-index */
#overlay,
@ -141,6 +150,11 @@ div.center:not(.ad-cnt) {
#header-bar {
border-width: 0;
transition: all .1s .05s ease-in-out;
box-shadow: -5px 1px 10px rgba(0, 0, 0, 0.20);
opacity: 0.98;
}
#custom-board-list .current {
padding: 1px 1px 4px 1px;
}
:root.centered-links #shortcuts {
width: 300px;
@ -149,6 +163,9 @@ div.center:not(.ad-cnt) {
:root.centered-links #header-bar {
text-align: center;
}
#board-list {
font-size: 13px;
}
:root.centered-links #custom-board-list {
position: relative;
left: 150px;
@ -203,6 +220,8 @@ div.center:not(.ad-cnt) {
}
#header-bar a:not(.entry):not(.close) {
text-decoration: none;
}
#header-bar a:not(.entry):not(.close):not(.current) {
padding: 1px;
}
#header-bar input {
@ -288,10 +307,13 @@ div.center:not(.ad-cnt) {
}
.notification > .close {
padding: 7px;
top: 0;
top: 0px;
right: 5px;
position: absolute;
}
.notification > .fa-times::before {
font-size: 11px !important;
}
.message {
-moz-box-sizing: border-box;
box-sizing: border-box;
@ -452,7 +474,7 @@ div.center:not(.ad-cnt) {
}
#index-search-clear {
color: gray;
margin-left: -1.25em;
margin-left: -1em;
}
<% if (type === 'crx') { %>
/* ``::-webkit-*'' selectors break selector lists on Firefox. */
@ -706,7 +728,20 @@ a.hide-announcement {
.hide-thread-button,
.hide-reply-button {
float: left;
margin-right: 2px;
margin-right: 4px;
padding: 2px;
}
.hide-thread-button:not(:hover),
.hide-reply-button:not(:hover) {
opacity: 0.4;
}
.threadContainer .hide-reply-button {
margin-left: 2px !important;
position: relative;
left: 1px;
}
.hide-thread-button {
margin-top: -1px;
}
.stub ~ * {
display: none !important;
@ -1026,6 +1061,14 @@ a:only-of-type > .remove {
margin: 2px;
vertical-align: middle;
}
.reply .menu-button,
.op .menu-button,
#thread-watcher .menu-button {
margin-left: -5px !important;
}
.menu-button + .container:not(:empty) {
margin-left: -5px !important;
}
#menu {
position: fixed;
outline: none;
@ -1320,4 +1363,4 @@ a:only-of-type > .remove {
#shortcuts .fa-bars {
vertical-align: -1px;
}
}
}

View File

@ -12,6 +12,12 @@
:root.tomorrow #header-bar a, :root.tomorrow #notifications a {
color: #81A2BE;
}
:root.tomorrow #custom-board-list a.current {
border-bottom: 1px solid #537ca0;
}
:root.tomorrow #custom-board-list .current:hover {
border-bottom-color: #5F89AC;
}
/* Settings */
:root.tomorrow #fourchanx-settings fieldset {

View File

@ -12,9 +12,15 @@
font-size: 9pt;
color: #89A;
}
:root.yotsuba-b #header-bar a, :root.yotsuba-b #notifications a {
:root.yotsuba-b #board-list a, :root.yotsuba-b #shortcuts a {
color: #34345C;
}
:root.yotsuba-b #custom-board-list .current {
border-bottom: 1px solid #2F4DC6;
}
:root.yotsuba-b #custom-board-list .current:hover {
border-bottom-color: #ff0000;
}
/* Settings */
:root.yotsuba-b #fourchanx-settings fieldset {

View File

@ -12,9 +12,15 @@
font-size: 9pt;
color: #B86;
}
:root.yotsuba #header-bar a, :root.yotsuba #notifications a {
:root.yotsuba #board-list a, :root.yotsuba #shortcuts a {
color: #800000;
}
:root.yotsuba #custom-board-list a.current {
border-bottom: 1px solid #b20000;
}
:root.yotsuba #custom-board-list .current:hover {
border-bottom-color: #ff0000;
}
/* Settings */
:root.yotsuba #fourchanx-settings fieldset {

View File

@ -1,4 +1,4 @@
[<a href="./catalog">Catalog</a>]&nbsp;
[<time id="index-last-refresh" title="Last index refresh">...</time>]&nbsp;
<input type="search" id="index-search" class="field" placeholder="Search">
<a id="index-search-clear" class="fa fa-times-circle" href="javascript:;"></a>
<a id="index-search-clear" href="javascript:;" title="Clear search">×</a>

View File

@ -1,2 +1,2 @@
<div class="move">Thread Watcher <span id="watcher-status"></span><a class="menu-button brackets-wrap" href="javascript:;"><i></i></a><a class=close href=javascript:;>×</a></span></div>
<div class="move">Thread Watcher <span id="watcher-status"></span><a class="menu-button" href="javascript:;"><i class="fa fa-angle-down"></i></a><a class=close href=javascript:;>×</a></span></div>
<div id="watched-threads"></div>

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -6,7 +6,7 @@ Gallery =
href: 'javascript:;'
id: 'appchan-gal'
title: 'Gallery'
className: 'fa fa-picture'
className: 'fa fa-picture-o'
textContent: 'Gallery'
$.on el, 'click', @cb.toggle

View File

@ -21,7 +21,7 @@ Menu =
$.tn(' ')
$.el 'a',
className: 'menu-button'
innerHTML: '[<i></i>]'
innerHTML: '<i class="fa fa-angle-down"></i>'
href: 'javascript:;'
]
clone = frag.cloneNode true

View File

@ -1,18 +0,0 @@
/* <%= meta.name %> - Version <%= version %> - <%= grunt.template.today('yyyy-mm-dd') %>
* <%= meta.page %>
*
* Copyrights and License: <%= meta.repo %>blob/<%= meta.mainBranch %>/LICENSE
*
* Contributors:
* <%= meta.repo %>graphs/contributors
* Non-GitHub contributors:
* ferongr, xat-, Ongpot, thisisanon and Anonymous - favicon contributions
* e000 - cooldown sanity check
* Seiba - chrome quick reply focusing
* herpaderpderp - recaptcha fixes
* WakiMiko - recaptcha tab order http://userscripts.org/scripts/show/82657
*
* All the people who've taken the time to write bug reports and provide feedback.
*
* Thank you.
*/

View File

@ -6,7 +6,7 @@ ThreadWatcher =
id: 'watcher-link'
textContent: 'Watcher'
href: 'javascript:;'
className: 'disabled fa fa-eye-open'
className: 'disabled fa fa-eye'
@db = new DataBoard 'watchedThreads', @refresh, true
@dialog = UI.dialog 'thread-watcher', 'top: 50px; left: 0px;', <%= importHTML('Monitoring/ThreadWatcher') %>