commit 07ceb117dace7337ff8bed881c1a12de895029cb
| author | 斟酌 鵬兄 <tgckpg@gmail.com> |
| date | 2015-10-26T23:50:11Z |
| subject | Various bug fixes & Preferred option for SiteFile |
commit 07ceb117dace7337ff8bed881c1a12de895029cb
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date: 2015-10-26T23:50:11Z
Various bug fixes & Preferred option for SiteFile
---
.../Blog/AstroEdit/Visualizer/Snippet/Image.js | 35 +++++---
.../Blog/AstroEdit/Visualizer/Snippet/SiteFile.js | 96 +++++++++++++++++-----
.../Blog/AstroEdit/Visualizer/Snippet/Spoiler.js | 12 ++-
botanjs/src/Astro/Blog/Components/Entry/Blog.css | 4 +
botanjs/src/Astro/Blog/Components/Entry/Mega.css | 62 ++++++--------
botanjs/src/Astro/Blog/Components/Section.css | 13 ++-
botanjs/src/Astro/Blog/Components/SiteFile.css | 3 -
botanjs/src/Astro/Blog/Components/SiteFile.js | 7 ++
botanjs/src/Astro/Blog/Layout/MainFrame.css | 2 +-
9 files changed, 152 insertions(+), 82 deletions(-)
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Image.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Image.js
index d0ca455..e387932 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Image.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Image.js
@@ -13,6 +13,8 @@
/** @type {Components.MessageBox} */
var MessageBox = __import( "Components.MessageBox" );
+ var compileProp = ns[ NS_INVOKE ]( "compileProp" );
+
var image = function( insertSnippet, snippetWrap, createContext, override )
{
var temp, i, j
@@ -25,12 +27,15 @@
)
, input_a = Dand.wrap(
"input", null, "v_snippet_input_single", null, new IKey( "type", "text" )
- );
+ )
+ , input_preferred = Dand.wrapna('input', new IKey("type", "checkbox"))
+ ;
if (this._stage)
{
input_url.value = this._url;
input_a.value = this._href;
+ input_preferred.checked = (this._preferred == "on");
}
// Popup MessageBox
@@ -41,27 +46,30 @@
, input_url
, Dand.wrapc( "v_instruction flsf", "Ancohr link(optional):" )
, input_a
+ , Dand.wrape([ input_preferred, Dand.textNode( "Preferred" ) ])
]
)
, "OK", "Cancel"
- , visualizer.bind({ url:input_url, href:input_a, stage: this._stage })
+ , visualizer.bind({ url:input_url, href:input_a, stage: this._stage, preferred: input_preferred })
).show();
}
, visualizer = function ( submitted, override )
{
- var src, href
+ var src, href, preferred
, stage = this.stage;
if ( override )
{
src = override.value;
href = override.href;
+ preferred = override.preferred ? "on" : "";
}
else
{
src = this.url.value;
href = this.href.value;
+ preferred = this.preferred.checked ? "on" : "";
}
if ( submitted && src )
@@ -82,16 +90,17 @@
Dand.wrapna(
"img"
, [
- new IKey("src", src)
- , new IKey("style", "max-width: 100%")
+ new IKey( "src", src )
+ , new IKey( "style", "max-width: 100%" )
]
)
// caption
, Dand.wrapc( "v_description", i )
]
, [
- new DataKey("value", src)
- , new DataKey("href", href)
+ new DataKey( "value", src )
+ , new DataKey( "href", href )
+ , new DataKey( "preferred", preferred )
]
);
insertSnippet( j = snippetWrap( "Image", temp ), Boolean( override ) );
@@ -102,6 +111,7 @@
([
new DataKey( "value", src )
, new DataKey( "href", href )
+ , new DataKey( "preferred", preferred )
]);
stage.firstChild.setAttribute("src", src);
@@ -114,7 +124,12 @@
temp = stage;
}
- i = { _url: src, _href: href, _stage: temp };
+ i = {
+ _url: src
+ , _href: href
+ , _preferred: preferred || "off"
+ , _stage: temp
+ };
// Set context menu
createContext( i, j, handler );
@@ -138,10 +153,10 @@
{
// [img href=\"" + this.href.value + "\"]" + this.url.value + "[/img]
var element = IDOMElement( stage )
- , href = element.getDAttribute( "href" );
+ , props = [ "href", "preferred" ]
return "[img"
- + ( href ? (" href=\"" + href + "\"") : "" )
+ + compileProp( element, props )
+ "]"
+ element.getDAttribute( "value" ) + "[/img]"
;
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js
index 44b358d..072ed83 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/SiteFile.js
@@ -19,8 +19,8 @@
/** @type {Astro.utils.Date} */
var XDate = __import( "Astro.utils.Date" );
-
var escapeStr = ns[ NS_INVOKE ]( "escapeStr" );
+ var compileProp = ns[ NS_INVOKE ]( "compileProp" );
var getData = __import( "System.Net.getData" );
@@ -37,10 +37,27 @@
, handler = function ()
{
// Input fields
- var v_snippetInput = Dand.wrap("input", null, "v_snippet_input_single", null, new IKey("type", "text"));
+ var v_snippetInput = Dand.wrap("input", null, "v_snippet_input_single", null, new IKey("type", "text"))
+ , input_preferred = Dand.wrapna('input', new IKey("type", "checkbox"))
+ ;
+
+ if ( this._stage )
+ {
+ v_snippetInput.value = this._content;
+ input_preferred.checked = ( this._preferred == "on" );
+ }
// Popup MessageBox
- new MessageBox("Insert site file", v_snippetInput, "OK", "Cancel", visualizer.bind({code: v_snippetInput})).show();
+ new MessageBox("Insert site file"
+ , Dand.wrape([
+ v_snippetInput
+ , Dand.wrape([ input_preferred, Dand.textNode( "Preferred" ) ])
+ ])
+ , "OK", "Cancel", visualizer.bind({
+ code: v_snippetInput
+ , preferred: input_preferred
+ , stage: this._stage
+ })).show();
}
, __applyData = function (e)
@@ -143,33 +160,66 @@
, visualizer = function ( submitted, override )
{
- var hash = override ? override.value : this.code.value
- , _obj = {file: hash};
+ var hash, _obj, stage = this.stage;
+
+ if( override )
+ {
+ hash = override.value;
+ preferred = override.preferred ? "on" : "";
+ }
+ else
+ {
+ hash = this.code.value;
+ preferred = this.preferred.checked ? "on" : "";
+ }
+
+ _obj = { file: hash };
if ( submitted && hash )
{
// Visualize component
+ if (!stage)
+ {
+ temp = Dand.wrapc("v_box"
+ , [
+ Dand.wrape("Getting information from Server ...")
+ , Dand.wrapc("v_description", "Site file (hash): " + hash)
+ ]
+ , [
+ new DataKey( "value", hash )
+ , new DataKey( "size", ( override && override.size ) || "large" )
+ , new IKey( "style", "max-height: 150px;" )
+ , new DataKey( "preferred", preferred )
+ ]
+ );
- temp = Dand.wrapc("v_box"
- , [
- Dand.wrape("Getting information from Server ...")
- , Dand.wrapc("v_description", "Site file (hash): " + hash)
- ]
- , [
+ // Get data from site library
+ getData( config.path.info + hash, __applyData.bind({stage: temp, hash: hash}), loadFailed );
+
+ insertSnippet(
+ j = snippetWrap( "SiteFile", temp )
+ , !!override
+ );
+ }
+ else
+ {
+ IDOMElement( stage ).setAttribute([
new DataKey( "value", hash )
- , new DataKey( "size", ( override && override.size ) || "large" )
- , new IKey( "style", "max-height: 150px;" )
- ]
- );
+ , new DataKey( "preferred", preferred )
+ ]);
+ getData( config.path.info + hash, __applyData.bind({stage: temp, hash: hash}), loadFailed );
+ }
- // Get data from site library
- getData( config.path.info + hash, __applyData.bind({stage: temp, hash: hash}), loadFailed );
+ }
- insertSnippet(j = snippetWrap("SiteFile", temp), Boolean(override));
+ i = {
+ _content: hash
+ , _preferred: preferred || "off"
+ , _stage: temp
+ };
- // Set context menu
- createContext(null, j);
- }
+ // Set context menu
+ createContext( i, j, handler );
};
if (override)
@@ -199,6 +249,10 @@
{
options += " size=\"" + opt + "\"";
}
+ if( opt = stage.getDAttribute( "preferred" ) )
+ {
+ options += " preferred=\"" + opt + "\"";
+ }
return "[sitefile" + options + "]"
+ escapeStr( stage.getDAttribute( "value" ) )
diff --git a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js
index 98a3098..7fd6313 100644
--- a/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js
+++ b/botanjs/src/Astro/Blog/AstroEdit/Visualizer/Snippet/Spoiler.js
@@ -92,13 +92,11 @@
else
{
IDOMElement(stage).setAttribute
- (
- [
- new DataKey("value", content)
- , new DataKey("title", title)
- , new DataKey("expanded", expanded)
- ]
- );
+ ([
+ new DataKey("value", content)
+ , new DataKey("title", title)
+ , new DataKey("expanded", expanded)
+ ]);
temp = stage.firstChild;
temp.removeChild(temp.firstChild);
diff --git a/botanjs/src/Astro/Blog/Components/Entry/Blog.css b/botanjs/src/Astro/Blog/Components/Entry/Blog.css
index 31e1fe5..792da57 100644
--- a/botanjs/src/Astro/Blog/Components/Entry/Blog.css
+++ b/botanjs/src/Astro/Blog/Components/Entry/Blog.css
@@ -1,3 +1,7 @@
+.b_entry img {
+ max-width: 100%;
+}
+
.b_entry {
background-color: #FAFAFA;
/* box-shadow: 0 0 8px -2px black; */
diff --git a/botanjs/src/Astro/Blog/Components/Entry/Mega.css b/botanjs/src/Astro/Blog/Components/Entry/Mega.css
index 3140bce..96e5251 100644
--- a/botanjs/src/Astro/Blog/Components/Entry/Mega.css
+++ b/botanjs/src/Astro/Blog/Components/Entry/Mega.css
@@ -1,36 +1,35 @@
-.m_title {
- font-size: 2.5em;
- color: #444;
+.it-shucks > a {
+ float: right;
}
-.m_more {
- color: #76400C;
-}
-
-.mega_entry span {
- display: block;
-}
-
-.mega_entry {
+.mega-entry {
border: 6px solid white;
background: white;
color: black;
position: relative;
- margin: 1em;
+ margin: 0.5em;
display: block;
word-wrap: break-word;
box-shadow: 0 0 0 1px #D4D7C9;
+
+ max-width: 80%;
+ width: 600px;
}
-.mega_entry:hover {
+.mega-entry:hover {
text-decoration: none;
}
-.mega_entry:after {
+.mega-entry .cCont > img {
+ position: absolute;
+ max-width: 100%;
+}
+
+.mega-entry .cCont:after {
content: attr(data-content);
width: 100%;
@@ -39,7 +38,6 @@
top: 100%;
position: absolute;
- overflow: hidden;
color: white;
background: rgba(0, 0, 0, 0.65);
@@ -65,13 +63,13 @@
transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); /* easeOutCubic */
}
-.mega_entry:focus:after, .mega_entry:hover:after {
+.mega-entry .cCont:focus:after, .mega-entry .cCont:hover:after {
top: 50%;
height: 50%;
padding: 0.5em;
}
-.mega_entry > #noteTag {
+.mega-entry > #noteTag {
background: black;
}
@@ -90,35 +88,21 @@
top: 10px;
}
-.mega_entry > .cCont {
+.mega-entry > .cCont {
position: relative;
-
+ color: white;
+ overflow: hidden;
height: 130px;
- background-position: center top;
- background-repeat: no-repeat;
- background-color: #EEE;
-
- background-image: url('http://file.astropenguin.net/blog/layout-images/archived.png');
}
-.mega_entry > .cCont:before {
- content: attr(data-content);
- position: absolute;
-
- line-height: 100%;
- font-size: 2.5em;
+.mega-entry .cCont > h2 {
+ position: absolute;
- padding: 0.1em;
+ padding: 0 0.2em;
text-shadow: 2px 2px 8px black;
- color: white;
-
- width: 100%;
- height: 100%;
-
- box-sizing: border-box;
- background-color: rgba( 0, 0, 0, 0.2 );
+ z-index: 1;
}
.cDate {
diff --git a/botanjs/src/Astro/Blog/Components/Section.css b/botanjs/src/Astro/Blog/Components/Section.css
index ace4998..e0e7d0f 100644
--- a/botanjs/src/Astro/Blog/Components/Section.css
+++ b/botanjs/src/Astro/Blog/Components/Section.css
@@ -15,9 +15,20 @@
.section-buttons > a[data-name="blog"] {
background-color: purple;
}
-.section-buttons > a[data-name="wenku8"] {
+.section-buttons > a[data-name="works"] {
background-color: royalblue;
}
+.section-buttons > a[data-name="album"] {
+ background-color: crimson;
+ background-image:
+ repeating-linear-gradient(
+ 45deg, transparent
+ , transparent 2px, rgba(0,0,0,.2) 2px
+ , rgba(0,0,0,.2) 3px, transparent 3px
+ , transparent 5px, rgba(0,0,0,.2) 5px
+ );
+}
+
.section-buttons > a > span {
padding: 0.75em 0.5em;
}
diff --git a/botanjs/src/Astro/Blog/Components/SiteFile.css b/botanjs/src/Astro/Blog/Components/SiteFile.css
index 149ec0f..14a9aee 100644
--- a/botanjs/src/Astro/Blog/Components/SiteFile.css
+++ b/botanjs/src/Astro/Blog/Components/SiteFile.css
@@ -1,6 +1,3 @@
-.site_file {
- margin: 0.5em 0;
-}
.sf_regular sup { vertical-align: baseline; }
.sf_regular {
diff --git a/botanjs/src/Astro/Blog/Components/SiteFile.js b/botanjs/src/Astro/Blog/Components/SiteFile.js
index f1b9a32..ab1563b 100644
--- a/botanjs/src/Astro/Blog/Components/SiteFile.js
+++ b/botanjs/src/Astro/Blog/Components/SiteFile.js
@@ -1,6 +1,8 @@
(function(){
var ns = __namespace( "Astro.Blog.Components" );
+ /** @type {System.Debug} */
+ var debug = __import( "System.Debug" );
/** @type {System.utils.IKey} */
var IKey = __import( "System.utils.IKey" );
/** @type {Dandelion} */
@@ -23,6 +25,11 @@
if( !config ) throw new Error( "config is not defined" );
// TODO: Make a trigger for downloading from server
var stage = Dand.id( id );
+ if( !stage )
+ {
+ debug.Info( "[SiteFile] id not found: " + id );
+ return;
+ }
this.id = id;
this.hash = hash;
this.type = IDOMElement( stage ).getDAttribute( "type" );
diff --git a/botanjs/src/Astro/Blog/Layout/MainFrame.css b/botanjs/src/Astro/Blog/Layout/MainFrame.css
index a71b426..cc9a361 100644
--- a/botanjs/src/Astro/Blog/Layout/MainFrame.css
+++ b/botanjs/src/Astro/Blog/Layout/MainFrame.css
@@ -63,7 +63,7 @@ h6, .h6 { font-size: 0.5em; }
}
.right { text-align: right; }
-.panel { padding: 1.2em; }
+.panel { padding: 0.5em 1.2em 1.2em 1.2em; }
/* transition properties */
div#header, div#mbody, div#contact, div#horizon {