r20151202
Signed-off-by: Flashwave <me@flash.moe>
This commit is contained in:
parent
bf44b6b807
commit
6f08ef8236
11 changed files with 225 additions and 13 deletions
|
@ -40,7 +40,7 @@ class BBcode
|
|||
$this->bbcode->addCodeDefinitionSet(new DefaultCodeDefinitionSet());
|
||||
|
||||
// Header tag
|
||||
$builder = new CodeDefinitionBuilder('header', '<h2>{param}</h2>');
|
||||
$builder = new CodeDefinitionBuilder('header', '<h1>{param}</h1>');
|
||||
$this->bbcode->addCodeDefinition($builder->build());
|
||||
|
||||
// Strike tag
|
||||
|
@ -48,24 +48,24 @@ class BBcode
|
|||
$this->bbcode->addCodeDefinition($builder->build());
|
||||
|
||||
// Spoiler tag
|
||||
$builder = new CodeDefinitionBuilder('spoiler', '<div class="spoiler">{param}</div>');
|
||||
$builder = new CodeDefinitionBuilder('spoiler', '<span class="spoiler">{param}</span>');
|
||||
$this->bbcode->addCodeDefinition($builder->build());
|
||||
|
||||
// Box tag
|
||||
$builder = new CodeDefinitionBuilder('box', '<div class="spoiler-box-container"><div class="spoiler-box-title">Click to open.</div><div class="spoiler-box-content">{param}</div></div>');
|
||||
$builder = new CodeDefinitionBuilder('box', '<div class="spoiler-box-container"><div class="spoiler-box-title" onclick="toggleClass(this.parentNode.children[1], \'hidden\');">Click to open</div><div class="spoiler-box-content hidden">{param}</div></div>');
|
||||
$this->bbcode->addCodeDefinition($builder->build());
|
||||
|
||||
// Box tag
|
||||
$builder = new CodeDefinitionBuilder('box', '<div class="spoiler-box-container"><div class="spoiler-box-title">{option}</div><div class="spoiler-box-content">{param}</div></div>');
|
||||
$builder = new CodeDefinitionBuilder('box', '<div class="spoiler-box-container"><div class="spoiler-box-title" onclick="toggleClass(this.parentNode.children[1], \'hidden\');">{option}</div><div class="spoiler-box-content hidden">{param}</div></div>');
|
||||
$builder->setUseOption(true);
|
||||
$this->bbcode->addCodeDefinition($builder->build());
|
||||
|
||||
// Quote tag
|
||||
$builder = new CodeDefinitionBuilder('quote', '<blockquote>{param}</blockquote>');
|
||||
$builder = new CodeDefinitionBuilder('quote', '<blockquote><div class="quote">{param}</div></blockquote>');
|
||||
$this->bbcode->addCodeDefinition($builder->build());
|
||||
|
||||
// Quote tag
|
||||
$builder = new CodeDefinitionBuilder('quote', '<h4>{option} wrote:</h4><blockquote>{param}</blockquote>');
|
||||
$builder = new CodeDefinitionBuilder('quote', '<blockquote><div class="quotee">{option} wrote:</div><div class="quote">{param}</div></blockquote>');
|
||||
$builder->setUseOption(true);
|
||||
$this->bbcode->addCodeDefinition($builder->build());
|
||||
|
||||
|
@ -96,7 +96,12 @@ class BBcode
|
|||
// Get as HTML
|
||||
public function toHTML()
|
||||
{
|
||||
return nl2br($this->bbcode->getAsHtml());
|
||||
$parsed = nl2br($this->bbcode->getAsHtml());
|
||||
|
||||
$parsed = Main::fixCodeTags($parsed);
|
||||
$parsed = Main::parseEmotes($parsed);
|
||||
|
||||
return $parsed;
|
||||
}
|
||||
|
||||
// Get as BBmarkup
|
||||
|
|
|
@ -19,6 +19,6 @@ class Code extends CodeDefinition
|
|||
|
||||
public function asHtml(ElementNode $el)
|
||||
{
|
||||
return preg_replace("#\n*\[code\]\n*(.*?)\n*\[/code\]\n*#s", '<pre class="code prettyprint linenums">\\1</pre>', $el->getAsBBCode());
|
||||
return preg_replace("#\n*\[code\]\n*(.*?)\n*\[/code\]\n*#s", '<pre class="code"><code>\\1</code></pre>', $el->getAsBBCode());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -770,4 +770,31 @@ class Main
|
|||
|
||||
]);
|
||||
}
|
||||
|
||||
// Cleaning up the contents of code tags
|
||||
public static function fixCodeTags($text)
|
||||
{
|
||||
$parts = explode('<code>', $text);
|
||||
$newStr = '';
|
||||
|
||||
if(count($parts) > 1) {
|
||||
foreach ($parts as $p) {
|
||||
$parts2 = explode('</code>', $p);
|
||||
if(count($parts2) > 1) {
|
||||
$code = str_replace('<br />', '', $parts2[0]);
|
||||
$code = str_replace('<br/>', '', $code);
|
||||
$code = str_replace('<br>', '', $code);
|
||||
$code = str_replace('<', '<', $code);
|
||||
$newStr .= '<code>'.$code.'</code>';
|
||||
$newStr .= $parts2[1];
|
||||
} else {
|
||||
$newStr .= $p;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$newStr = $text;
|
||||
}
|
||||
|
||||
return $newStr;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,6 +10,15 @@
|
|||
|
||||
{% block title %}{{ thread.title }}{% endblock %}
|
||||
|
||||
{% block css %}
|
||||
<link rel="stylesheet" href="/content/libraries/highlight.css" />
|
||||
{% endblock %}
|
||||
|
||||
{% block js %}
|
||||
<script src="/content/libraries/highlight.js"></script>
|
||||
<script>hljs.initHighlightingOnLoad();</script>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="content homepage forum viewtopic">
|
||||
<div class="content-column">
|
||||
|
@ -54,12 +63,12 @@
|
|||
</div>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="post-text markdown">
|
||||
<div class="post-text bbcode">
|
||||
{{ post.parsed|raw }}
|
||||
</div>
|
||||
{% if post.poster.signature and post.signature %}
|
||||
<div class="clear"></div>
|
||||
<div class="signature">
|
||||
<div class="signature bbcode">
|
||||
{{ post.poster.signature|raw|nl2br }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
|
|
@ -267,7 +267,6 @@
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/javascript" src="https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"></script>
|
||||
{% if not sakura.versionInfo.stable and php.self == '/index.php' and stats %}
|
||||
<script type="text/javascript" src="https://sakura.flash.moe/?get={{ sakura.versionInfo.version|slice(0, 4) }}-{{ sakura.versionInfo.version|slice(4, 2) }}-{{ sakura.versionInfo.version|slice(6, 2) }}&variable=true"></script>
|
||||
<script type="text/javascript">
|
||||
|
|
73
public/content/data/yuuno/css/bbcode.css
Normal file
73
public/content/data/yuuno/css/bbcode.css
Normal file
|
@ -0,0 +1,73 @@
|
|||
/*
|
||||
* BBcode Styling
|
||||
*/
|
||||
@charset "utf-8";
|
||||
|
||||
.bbcode h1 {
|
||||
text-shadow: 0 0 5px #8364A1;
|
||||
color: #614390;
|
||||
}
|
||||
|
||||
.bbcode ul {
|
||||
margin-left: 2em;
|
||||
list-style: square;
|
||||
}
|
||||
|
||||
.bbcode .spoiler {
|
||||
background: #000;
|
||||
}
|
||||
|
||||
.bbcode .spoiler:hover {
|
||||
background: inherit;
|
||||
}
|
||||
|
||||
.bbcode blockquote {
|
||||
border: 1px solid #9475b2;
|
||||
border-bottom: 0;
|
||||
border-right: 0;
|
||||
background: linear-gradient(90deg, #B697d4, transparent) transparent;
|
||||
margin: .5em;
|
||||
}
|
||||
|
||||
.bbcode blockquote > .quotee {
|
||||
font-weight: bold;
|
||||
border-bottom: 1px solid #9475b2;
|
||||
background: #B697d4;
|
||||
}
|
||||
|
||||
.bbcode blockquote > .quote {
|
||||
margin-left: .5em;
|
||||
padding-bottom: .5em;
|
||||
}
|
||||
|
||||
.bbcode a {
|
||||
color: #22E;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.bbcode a:hover {
|
||||
color: #22E;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.bbcode a:active {
|
||||
color: #E22;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.bbcode .spoiler-box-container {
|
||||
border: 1px solid #9475b2;
|
||||
margin: .5em;
|
||||
}
|
||||
|
||||
.bbcode .spoiler-box-container > .spoiler-box-title {
|
||||
text-align: center;
|
||||
background: #B697d4;
|
||||
font-weight: bold;
|
||||
cursor: pointer;
|
||||
padding: 4px 0;
|
||||
}
|
||||
|
||||
.bbcode .spoiler-box-container > .spoiler-box-content {
|
||||
border-top: 1px solid #9475b2;
|
||||
}
|
|
@ -13,7 +13,8 @@
|
|||
@import url('/content/fonts/segoeui/font.css');
|
||||
@import url('/content/fonts/segoeui-light/font.css');
|
||||
|
||||
/* Import markdown specific style */
|
||||
/* Import bbcode and markdown specific style */
|
||||
@import url('bbcode.css');
|
||||
@import url('markdown.css');
|
||||
|
||||
/*
|
||||
|
|
|
@ -203,6 +203,18 @@ function notifyRequest(session) {
|
|||
notificationWatcher.send();
|
||||
}
|
||||
|
||||
// Toggle a class on an element
|
||||
function toggleClass(element, name) {
|
||||
// Attempt to get the index
|
||||
var indexOf = element.className.indexOf(name);
|
||||
|
||||
if (indexOf < 0) {
|
||||
element.className += ' ' + name;
|
||||
} else {
|
||||
element.className = element.className.replace(name, '').trim();
|
||||
}
|
||||
}
|
||||
|
||||
// Removing all elements with a certain class
|
||||
function removeClass(className) {
|
||||
// Get the elements
|
||||
|
|
83
public/content/libraries/highlight.css
Normal file
83
public/content/libraries/highlight.css
Normal file
|
@ -0,0 +1,83 @@
|
|||
/*
|
||||
|
||||
Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/
|
||||
|
||||
*/
|
||||
|
||||
.hljs {
|
||||
display: block;
|
||||
overflow-x: auto;
|
||||
padding: 0.5em;
|
||||
background: #23241f;
|
||||
}
|
||||
|
||||
.hljs,
|
||||
.hljs-tag,
|
||||
.hljs-subst {
|
||||
color: #f8f8f2;
|
||||
}
|
||||
|
||||
.hljs-strong,
|
||||
.hljs-emphasis {
|
||||
color: #a8a8a2;
|
||||
}
|
||||
|
||||
.hljs-bullet,
|
||||
.hljs-quote,
|
||||
.hljs-number,
|
||||
.hljs-regexp,
|
||||
.hljs-literal,
|
||||
.hljs-link {
|
||||
color: #ae81ff;
|
||||
}
|
||||
|
||||
.hljs-code,
|
||||
.hljs-title,
|
||||
.hljs-section,
|
||||
.hljs-selector-class {
|
||||
color: #a6e22e;
|
||||
}
|
||||
|
||||
.hljs-strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.hljs-emphasis {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.hljs-keyword,
|
||||
.hljs-selector-tag,
|
||||
.hljs-name,
|
||||
.hljs-attr {
|
||||
color: #f92672;
|
||||
}
|
||||
|
||||
.hljs-symbol,
|
||||
.hljs-attribute {
|
||||
color: #66d9ef;
|
||||
}
|
||||
|
||||
.hljs-params,
|
||||
.hljs-class .hljs-title {
|
||||
color: #f8f8f2;
|
||||
}
|
||||
|
||||
.hljs-string,
|
||||
.hljs-type,
|
||||
.hljs-built_in,
|
||||
.hljs-builtin-name,
|
||||
.hljs-selector-id,
|
||||
.hljs-selector-attr,
|
||||
.hljs-selector-pseudo,
|
||||
.hljs-addition,
|
||||
.hljs-variable,
|
||||
.hljs-template-variable {
|
||||
color: #e6db74;
|
||||
}
|
||||
|
||||
.hljs-comment,
|
||||
.hljs-deletion,
|
||||
.hljs-meta {
|
||||
color: #75715e;
|
||||
}
|
3
public/content/libraries/highlight.js
Normal file
3
public/content/libraries/highlight.js
Normal file
File diff suppressed because one or more lines are too long
|
@ -62,7 +62,7 @@ if ($mode != 'f') {
|
|||
$post = $thread['posts'][$_GET['p']];
|
||||
|
||||
// Add subject to render data
|
||||
$posting['text'] = '[quote]' . (new BBcode($post['post_text']))->toEditor() . '[/quote]';
|
||||
$posting['text'] = '[quote=' . (new User($post['poster_id']))->username() . ']' . (new BBcode($post['post_text']))->toEditor() . '[/quote]';
|
||||
|
||||
// Post editing
|
||||
} elseif ($mode == 'p' && isset($_GET['edit']) && $_GET['edit'] == $_GET['p'] && array_key_exists($_GET['p'], $thread['posts'])) {
|
||||
|
|
Reference in a new issue