forked from Botanical/BotanJS
Various bug fix due to CSP headers
SiteLibrary added name display on album view Optimizations & removed some obsolete files
This commit is contained in:
parent
3b4ba29b6e
commit
b0ecbe42c3
@ -8,7 +8,7 @@ DEBUG = os.getenv( "DEBUG" )
|
||||
if DEBUG is None:
|
||||
DEBUG = Config[ "Env" ][ "Debug" ]
|
||||
else:
|
||||
Config[ "Env" ][ "Debug" ] = DEBUG
|
||||
Config[ "Env" ][ "Debug" ] = str( DEBUG == "1" )
|
||||
|
||||
REDIS_CONN = os.getenv( "REDIS_CONN" )
|
||||
if not REDIS_CONN is None:
|
||||
|
@ -146,14 +146,55 @@
|
||||
.canvasImage > span {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
float: left;
|
||||
|
||||
margin: 0.2em;
|
||||
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
|
||||
border: 1px solid transparent;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.canvasImage > span:before {
|
||||
content: '';
|
||||
display: inline-block;
|
||||
height: 100%;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.canvasImage > span img {
|
||||
vertical-align: middle;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.canvasImage > span:after {
|
||||
content: attr(data-title);
|
||||
background-color: rgba(0,0,0,0.6);
|
||||
color: white;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: -2em;
|
||||
font-size: 0.8em;
|
||||
width: 100%;
|
||||
padding-left: 0.5em;
|
||||
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
|
||||
-webkit-transition: all .25s ease-out;
|
||||
-moz-transition: all .25s ease-out;
|
||||
-o-transition: all .25s ease-out;
|
||||
transition: all .25s ease-out;
|
||||
}
|
||||
|
||||
.canvasImage > span:hover:after {
|
||||
bottom: 0%;
|
||||
}
|
||||
|
||||
.canvasImage > span[selected] {
|
||||
|
@ -145,10 +145,10 @@
|
||||
|
||||
////// Album item
|
||||
? Dand.wrap(
|
||||
"span", "img_" + Perf.uuid, "ci_album", Dand.wrap("span")
|
||||
"span", "img_" + Perf.uuid, "ci_album"
|
||||
, Dand.wrapna( "img", new IKey( "src", basePath + "image/s100/" + file.hash + ".jpg" ) )
|
||||
, [
|
||||
new IKey("style", "background-image: url(" + basePath + "image/s100/" + file.hash + ".jpg);" )
|
||||
, new IKey("title"
|
||||
new IKey("title"
|
||||
, "Album: " + file.name
|
||||
+ "\n" + file.cCount + " file(s)"
|
||||
+ "\nDate: " + prettyDate( new Date( file.date_created ), true )
|
||||
@ -159,10 +159,10 @@
|
||||
)
|
||||
//////// Normal filele
|
||||
: Dand.wrap(
|
||||
"span", "img_" + Perf.uuid, null, Dand.wrap( "span" )
|
||||
"span", "img_" + Perf.uuid, null
|
||||
, Dand.wrapna( "img", new IKey( "src", basePath + "image/s100/" + file.hash + ".jpg" ) )
|
||||
, [
|
||||
new IKey("style", "background-image: url(" + basePath + "image/s100/" + file.hash + ".jpg);" )
|
||||
, new IKey("title"
|
||||
new IKey("title"
|
||||
, "File: " + file.name
|
||||
+ "\nDate: " + prettyDate( new Date( file.date_created ), true )
|
||||
+ "\nCreated by: " + file.author
|
||||
|
@ -0,0 +1,5 @@
|
||||
.v_boundary[data-type="AcquireLib"] > span {
|
||||
background-color: #444;
|
||||
color: white;
|
||||
padding: 0.2em 0.5em;
|
||||
}
|
@ -54,12 +54,7 @@
|
||||
temp = Dand.wrap(
|
||||
'span', null, "flsf"
|
||||
, "AcquireLib: " + src
|
||||
, [
|
||||
new DataKey( "value", src )
|
||||
, new IKey(
|
||||
"style", "background-color: #444; color: white; padding: 0.2em 0.5em;"
|
||||
)
|
||||
]
|
||||
, [ new DataKey( "value", src ) ]
|
||||
);
|
||||
insertSnippet(j = snippetWrap("AcquireLib", temp, false, 'span'), Boolean(override));
|
||||
}
|
||||
|
@ -0,0 +1,5 @@
|
||||
.v_boundary[data-type="Meta"] > span {
|
||||
background-color: #444;
|
||||
color: white;
|
||||
padding: 0.2em 0.5em;
|
||||
}
|
@ -53,12 +53,7 @@
|
||||
temp = Dand.wrap(
|
||||
'span', null, "flsf"
|
||||
, "Meta Tags"
|
||||
, [
|
||||
new DataKey( "value", code )
|
||||
, new IKey(
|
||||
"style", "background-color: #444; color: white; padding: 0.2em 0.5em;"
|
||||
)
|
||||
]
|
||||
, [ new DataKey( "value", code ) ]
|
||||
);
|
||||
insertSnippet(j = snippetWrap( "Meta", temp, false, "span" ), Boolean(override));
|
||||
}
|
||||
|
@ -0,0 +1,5 @@
|
||||
.v_boundary[data-type="RespH"] > span {
|
||||
background-color: #444;
|
||||
color: white;
|
||||
padding: 0.2em 0.5em;
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
.v_boundary[data-type="Video"] {
|
||||
width: 640px; height: 390px;
|
||||
background-color: black;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.v_boundary[data-type="Video"] .v_box {
|
||||
width: 640px; height: 390px;
|
||||
position: relative;
|
||||
display: table-cell;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.v_boundary[data-type="Video"] .v_description {
|
||||
text-align: left;
|
||||
padding-left: 0.5em;
|
||||
}
|
@ -14,25 +14,28 @@
|
||||
var MessageBox = __import( "Components.MessageBox" );
|
||||
|
||||
var getData = __import( "System.Net.getData" );
|
||||
var BLANK_IMG = __import( "Dandelion.StaticRes.BLANK_IMG" );
|
||||
|
||||
var video = function (insertSnippet, snippetWrap, createContext, override)
|
||||
{
|
||||
var temp, i, j
|
||||
var temp, i, j, imgSrc
|
||||
|
||||
, getVimeoThumbnail = function (vtag)
|
||||
, getVimeoThumbnail = function( v )
|
||||
{
|
||||
getData("//vimeo.com/api/oembed.json?url=https%3A//vimeo.com/" + vtag.getAttribute("data-value"), setThumbnail.bind(vtag), noThumb.bind(vtag));
|
||||
getData(
|
||||
"//vimeo.com/api/oembed.json?url=https%3A//vimeo.com/" + v
|
||||
, setThumbnail
|
||||
, noThumb
|
||||
);
|
||||
}
|
||||
|
||||
, noThumb = function ()
|
||||
, setImgSrc = function( url )
|
||||
{
|
||||
|
||||
if( imgSrc ) imgSrc.src = url;
|
||||
}
|
||||
|
||||
, noThumb = function () { }
|
||||
, setThumbnail = function (str)
|
||||
{
|
||||
this.style.background = "black url(" + JSON.parse(str)["thumbnail_url"] + ") center center no-repeat";
|
||||
|
||||
setImgSrc( JSON.parse(str)["thumbnail_url"] );
|
||||
}
|
||||
|
||||
, handler = function ()
|
||||
@ -86,22 +89,22 @@
|
||||
|
||||
if (submitted)
|
||||
{
|
||||
|
||||
// Visualize component
|
||||
temp = Dand.wrapc('v_box', Dand.wrapc('v_description', "Video(url): " + t)
|
||||
, [
|
||||
new DataKey("value", v)
|
||||
, new DataKey("type", i)
|
||||
, new IKey("style"
|
||||
, "width: 640px; height: 390px;"
|
||||
+ ( (i[0] == "v") ? "" : ("background: black url(//img.youtube.com/vi/" + v + "/hqdefault.jpg) no-repeat center center;") )
|
||||
)
|
||||
]
|
||||
temp = Dand.wrapc('v_box'
|
||||
, [
|
||||
Dand.wrapc( 'v_description', i[0].toUpperCase() + i.substr(1) + ": " + v )
|
||||
, imgSrc = Dand.wrapna( "img", [ new IKey( "src", BLANK_IMG ) ] )
|
||||
]
|
||||
, [ new DataKey("value", v), new DataKey("type", i) ]
|
||||
);
|
||||
|
||||
if (i[0] == "v")
|
||||
if( i[0] == "v" )
|
||||
{
|
||||
getVimeoThumbnail(temp);
|
||||
getVimeoThumbnail( v );
|
||||
}
|
||||
else
|
||||
{
|
||||
setImgSrc( "//img.youtube.com/vi/" + v + "/hqdefault.jpg" );
|
||||
}
|
||||
|
||||
insertSnippet(j = snippetWrap("Video", temp), Boolean(override));
|
||||
@ -110,7 +113,6 @@
|
||||
createContext(null, j);
|
||||
}
|
||||
}
|
||||
;
|
||||
|
||||
if (override)
|
||||
{
|
||||
|
@ -104,3 +104,19 @@ div[data-type="token"]:after {
|
||||
div[data-type="token"]:hover:after {
|
||||
color: rgba( 255, 255, 255, 0.5 );
|
||||
}
|
||||
|
||||
#ae_visual_snippets > span[data-name="code"] { background: white; color: cornflowerblue; }
|
||||
#ae_visual_snippets > span[data-name="image"] { background: #ff0084; }
|
||||
#ae_visual_snippets > span[data-name="sound"] { background: YellowGreen; }
|
||||
#ae_visual_snippets > span[data-name="video"] { background: Crimson; }
|
||||
#ae_visual_snippets > span[data-name="spoiler"] { background: cornflowerblue; }
|
||||
#ae_visual_snippets > span[data-name="link"] { background: blue; }
|
||||
#ae_visual_snippets > span[data-name="acquirelib"] { background: black; }
|
||||
#ae_visual_snippets > span[data-name="html"] { background: coral; }
|
||||
#ae_visual_snippets > span[data-name="sitefile"] { background: royalblue; }
|
||||
#ae_visual_snippets > span[data-name="heading"] { }
|
||||
#ae_visual_snippets > span[data-name="footnote"] { }
|
||||
#ae_visual_snippets > span[data-name="resph"] { }
|
||||
#ae_visual_snippets > span[data-name="meta"] { }
|
||||
#ae_visual_snippets > span[data-name="articlelink"] { }
|
||||
#ae_visual_snippets > span[data-name="articlecontent"] { }
|
||||
|
@ -26,23 +26,23 @@
|
||||
/** @type {Astro.Blog.Config} */
|
||||
var Config = __import( "Astro.Blog.Config" );
|
||||
|
||||
var snippetList = IKey.quickDef(
|
||||
"Code" , "background: white; color: cornflowerblue;"
|
||||
, "Image" , "background: #ff0084;"
|
||||
, "Sound" , "background: YellowGreen;"
|
||||
, "Video" , "background: Crimson;"
|
||||
, "Spoiler" , "background: cornflowerblue;"
|
||||
, "Link" , "background: blue;"
|
||||
, "AcquireLib" , "background: black;"
|
||||
, "Html" , "background: coral;"
|
||||
, "SiteFile" , "background: royalblue;"
|
||||
, "Heading" , ""
|
||||
, "Footnote" , ""
|
||||
, "RespH" , ""
|
||||
, "Meta" , ""
|
||||
, "ArticleLink" , ""
|
||||
, "ArticleContent" , ""
|
||||
);
|
||||
var snippetList = [
|
||||
"Code"
|
||||
, "Image"
|
||||
, "Sound"
|
||||
, "Video"
|
||||
, "Spoiler"
|
||||
, "Link"
|
||||
, "AcquireLib"
|
||||
, "Html"
|
||||
, "SiteFile"
|
||||
, "Heading"
|
||||
, "Footnote"
|
||||
, "RespH"
|
||||
, "Meta"
|
||||
, "ArticleLink"
|
||||
, "ArticleContent"
|
||||
];
|
||||
|
||||
var snippetNs = "Astro.Blog.AstroEdit.Visualizer.Snippet.";
|
||||
//// Document Visualizer visualize snippets, used in AstroEdit and comments
|
||||
@ -388,19 +388,7 @@
|
||||
}
|
||||
|
||||
// Append module"s control
|
||||
temp = Dand.wrapne(
|
||||
"span"
|
||||
, mod_name
|
||||
, new IKey(
|
||||
"style"
|
||||
, utils.objSearch(
|
||||
snippetList
|
||||
/** @param {System.utils.IKey} a */
|
||||
, function( a ) { return a.keyName.toLowerCase() == mod_name }
|
||||
, "keyValue"
|
||||
)
|
||||
)
|
||||
);
|
||||
temp = Dand.wrapne( "span", mod_name, new IKey( "data-name", mod_name ) );
|
||||
|
||||
snippetControls.appendChild( temp );
|
||||
snippetControls.appendChild( Dand.textNode( "\t" ) );
|
||||
@ -502,9 +490,9 @@
|
||||
article.invoke(this);
|
||||
|
||||
var modules = [];
|
||||
for( var i in snippetList )
|
||||
for( var i = 0; i < snippetList.length; i ++ )
|
||||
{
|
||||
modules[ modules.length ] = snippetNs + snippetList[i].keyName;
|
||||
modules[ modules.length ] = snippetNs + snippetList[i];
|
||||
}
|
||||
|
||||
var ldr = new Loader( service_uri, "o" );
|
||||
|
@ -22,6 +22,7 @@
|
||||
var config = null;
|
||||
|
||||
var SiteFile = ns[ NS_INVOKE ]( "SiteFile" );
|
||||
var BLANK_IMG = __import( "Dandelion.StaticRes.BLANK_IMG" );
|
||||
|
||||
var Album = function ( id, hash )
|
||||
{
|
||||
@ -56,9 +57,7 @@
|
||||
|
||||
ostage.appendChild( Dand.wrapne(
|
||||
"div"
|
||||
, Dand.wrapna( "img", [
|
||||
new IKey( "src", "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" )
|
||||
] )
|
||||
, Dand.wrapna( "img", [ new IKey( "src", BLANK_IMG ) ] )
|
||||
, [ new IKey( "id", uuid ), new DataKey( "size", "medium" ) ]
|
||||
) );
|
||||
|
||||
|
@ -159,10 +159,12 @@
|
||||
border-bottom: 1em solid white;
|
||||
|
||||
position: absolute;
|
||||
top: -1em;
|
||||
top: 0;
|
||||
right: 1em;
|
||||
}
|
||||
|
||||
#ri_switch[data-pointy="1"] { top: -1em; }
|
||||
|
||||
.c_relative_wrap {
|
||||
position: relative;
|
||||
padding: 1em;
|
||||
@ -247,10 +249,14 @@
|
||||
margin: 1em;
|
||||
}
|
||||
|
||||
.info_field > div{
|
||||
.info_field > div{
|
||||
margin: 0.2em 0;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.info_field .website span { width: 20%; }
|
||||
.info_field .website input { width: 80%; }
|
||||
|
||||
#capcha_wrapper {
|
||||
overflow: hidden;
|
||||
height: 0;
|
||||
|
@ -107,7 +107,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
, doReply = function ()
|
||||
{
|
||||
var c_reply = this;
|
||||
@ -116,13 +115,12 @@
|
||||
// Set comment id
|
||||
submit_button.setAttribute( new DataKey( "cid", c_reply.getAttribute( "value" ) ) );
|
||||
|
||||
// Close reply indicator
|
||||
Dand.id("ri_switch").style.top = "0";
|
||||
// close the triangle in the top rigth corner
|
||||
Dand.id( "ri_switch", true ).removeAttribute( "data-pointy" );
|
||||
|
||||
// If this button is not that button
|
||||
button && ( c_reply != button ) && releaseReplyButton();
|
||||
|
||||
|
||||
// Lock reply button
|
||||
c_reply.setAttribute("locked", "1");
|
||||
c_reply.onclick = null;
|
||||
@ -313,7 +311,8 @@
|
||||
cp.style.height = "";
|
||||
cp.style.overflow = "";
|
||||
|
||||
Dand.id("ri_switch").style.top = "";
|
||||
// Pop back up the pointy triangle
|
||||
Dand.id( "ri_switch", true ).setAttribute( new DataKey( "pointy", "1" ) );
|
||||
|
||||
fieldReady = false;
|
||||
fieldReadyTrigger();
|
||||
|
@ -1,162 +0,0 @@
|
||||
.block-entries .block {
|
||||
float: left;
|
||||
|
||||
width: 225px;
|
||||
height: 325px;
|
||||
|
||||
margin: 0 2em 2em 0;
|
||||
|
||||
position: relative;
|
||||
|
||||
color: #666;
|
||||
border: 2px solid transparent;
|
||||
|
||||
display: block;
|
||||
}
|
||||
|
||||
.block-entries .block:hover {
|
||||
border-width: 2px;
|
||||
border-color: purple;
|
||||
}
|
||||
|
||||
.block-entries .slide-wrapper {
|
||||
position: absolute;
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
border: 1px solid #D4D7C9;
|
||||
margin: -1px;
|
||||
}
|
||||
|
||||
.block-entries .slide-wrapper:hover {
|
||||
border-color: purple;
|
||||
}
|
||||
|
||||
.block-entries .date {
|
||||
font-size: 0.8em;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.block-entries .title {
|
||||
font-size: 1.2em;
|
||||
max-height: 2.4em;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
color: #444;
|
||||
}
|
||||
|
||||
.block-entries .content {
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.block-entries .author {
|
||||
color: crimson;
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.block-entries .c-count {
|
||||
position: absolute;
|
||||
bottom: 1em;
|
||||
left: 0.5em;
|
||||
|
||||
font-size: 0.8em;
|
||||
font-family: sans-serif;
|
||||
color: orangered;
|
||||
}
|
||||
|
||||
|
||||
.block-entries .slide {
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 150%;
|
||||
|
||||
top: 0;
|
||||
}
|
||||
|
||||
.block-entries .slide:after, .block-entries[on] .slide {
|
||||
content: attr(data-content);
|
||||
|
||||
position: absolute;
|
||||
|
||||
top: 100%;
|
||||
|
||||
width: 100%;
|
||||
height: 50%;
|
||||
|
||||
padding: 0 0.5em;
|
||||
|
||||
color: #EEE;
|
||||
background: purple;
|
||||
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
|
||||
-webkit-box-shadow: inset 0px 15px 15px -15px black;
|
||||
-moz-box-sizing: inset 0px 15px 15px -15px black;
|
||||
box-shadow: inset 0px 15px 15px -15px black;
|
||||
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
|
||||
-webkit-transition: all 500ms cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
-moz-transition: all 500ms cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
-ms-transition: all 500ms cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
-o-transition: all 500ms cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
transition: all 500ms cubic-bezier(0.215, 0.610, 0.355, 1.000); /* easeOutCubic */
|
||||
|
||||
-webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
-moz-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
-ms-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
-o-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); /* easeOutCubic */
|
||||
}
|
||||
|
||||
.block-entries .slide:hover:after, .slide[on]:after {
|
||||
top: 62.5%;
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
.block-entries .slide:hover, .slide[on] {
|
||||
top: -50%;
|
||||
}
|
||||
|
||||
.block-entries .front {
|
||||
position: absolute;
|
||||
background: white;
|
||||
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.block-entries .block-wrapper {
|
||||
position: relative;
|
||||
background-image: repeating-linear-gradient(
|
||||
135deg
|
||||
, transparent, transparent 1px
|
||||
, rgba( 85, 85, 85, .1 ) 1px
|
||||
, rgba( 85, 85, 85, .1 ) 30px
|
||||
);
|
||||
background-color: black;
|
||||
}
|
||||
|
||||
.block-entries .block-info {
|
||||
padding: 0.5em;
|
||||
background: white;
|
||||
}
|
||||
|
||||
.block-entries .banner {
|
||||
width: 50%;
|
||||
padding: 50%;
|
||||
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
|
||||
border-bottom: 1px solid #D4D7C9;
|
||||
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
@ -1,91 +0,0 @@
|
||||
(function(){
|
||||
var ns = __namespace( "Astro.Blog.Components.Entry" );
|
||||
|
||||
/** @type {System.Cycle} */
|
||||
var Cycle = __import( "System.Cycle" );
|
||||
/** @type {System.utils.Perf} */
|
||||
var Perf = __import( "System.utils.Perf" );
|
||||
/** @type {Dandelion} */
|
||||
var Dand = __import( "Dandelion" );
|
||||
/** @type {Astro.Bootstrap} */
|
||||
var Bootstrap = __import( "Astro.Bootstrap" );
|
||||
|
||||
/** @type {Astro.Blog.Config} */
|
||||
var Conf = __import( "Astro.Blog.Config" );
|
||||
/** @type {Astro.Blog.Components.SiteFile} */
|
||||
var SiteFile = __import( "Astro.Blog.Components.SiteFile" );
|
||||
|
||||
/** @type {_AstConf_.SiteFile} */
|
||||
var config = null;
|
||||
|
||||
var Block = function ( element )
|
||||
{
|
||||
if( !config ) throw new Error( "Config is not defined" );
|
||||
var slide = Dand.glass( "slide", false, element )[0];
|
||||
var delayCont = function( firstTime )
|
||||
{
|
||||
Cycle.delay(
|
||||
function()
|
||||
{
|
||||
slide.getAttribute( "on" )
|
||||
? slide.removeAttribute( "on" )
|
||||
: slide.setAttribute( "on", 1 )
|
||||
;
|
||||
delayCont( false );
|
||||
}
|
||||
, firstTime
|
||||
? Math.random()*10000
|
||||
: ( 5500 + Math.random()*4500 )
|
||||
);
|
||||
};
|
||||
|
||||
delayCont( true );
|
||||
|
||||
var banner = Dand.glass( "banner", false, element )[0];
|
||||
var bId = banner.getAttribute( "id" );
|
||||
|
||||
var placeBackground = function( obj )
|
||||
{
|
||||
/** @type {_AstJson_.SiteFile} */
|
||||
var finfo = JSON.parse( obj );
|
||||
|
||||
/** @type {_AstJson_.SiteFile} */
|
||||
var file = finfo.files[0];
|
||||
|
||||
var path = config.path.image.medium + file.hash + ".jpg";
|
||||
banner.style.backgroundImage = "url(" + path + ")";
|
||||
};
|
||||
|
||||
var placeError = function( obj )
|
||||
{
|
||||
throw new Error( obj );
|
||||
};
|
||||
|
||||
var SFOs = Conf.get( "SFObjects" );
|
||||
for( var i in SFOs )
|
||||
{
|
||||
var f = SFOs[i];
|
||||
var id = f[0];
|
||||
if( id == bId )
|
||||
{
|
||||
new SiteFile( id, f[1] ).loadInfo( placeBackground, placeError );
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var init = function()
|
||||
{
|
||||
config = Conf.get( "SiteFile" );
|
||||
|
||||
var stage = Dand.glass( "block-entries" )[0];
|
||||
var everyEntries = Dand.glass( "block", false, stage );
|
||||
for( var i = 0; i < everyEntries.length; i ++ )
|
||||
{
|
||||
new Block( everyEntries[ i ] );
|
||||
}
|
||||
};
|
||||
|
||||
Bootstrap.regInit( init );
|
||||
|
||||
ns[ NS_EXPORT ]( EX_CLASS, "Block", Block );
|
||||
})();
|
@ -1,125 +0,0 @@
|
||||
.it-shucks > a {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.mega-entry {
|
||||
border: 6px solid white;
|
||||
background: white;
|
||||
color: black;
|
||||
|
||||
position: relative;
|
||||
margin: 0.5em;
|
||||
|
||||
display: block;
|
||||
|
||||
word-wrap: break-word;
|
||||
|
||||
box-shadow: 0 0 0 1px #D4D7C9;
|
||||
|
||||
max-width: 80%;
|
||||
width: 600px;
|
||||
}
|
||||
|
||||
.mega-entry:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.mega-entry .cCont img {
|
||||
position: absolute;
|
||||
margin-top: -25%;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.mega-entry .cCont:after {
|
||||
content: attr(data-content);
|
||||
|
||||
width: 100%;
|
||||
height: 0;
|
||||
|
||||
top: 100%;
|
||||
|
||||
position: absolute;
|
||||
|
||||
color: white;
|
||||
background: rgba(0, 0, 0, 0.65);
|
||||
|
||||
font-family: custom-serif;
|
||||
|
||||
padding: 0 0.5em;
|
||||
|
||||
-webkit-box-sizing: border-box;
|
||||
-moz-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
|
||||
-webkit-transition: all 300ms cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
-moz-transition: all 300ms cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
-ms-transition: all 300ms cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
-o-transition: all 300ms cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
transition: all 300ms cubic-bezier(0.215, 0.610, 0.355, 1.000); /* easeOutCubic */
|
||||
|
||||
-webkit-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
-moz-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
-ms-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
-o-transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000);
|
||||
transition-timing-function: cubic-bezier(0.215, 0.610, 0.355, 1.000); /* easeOutCubic */
|
||||
}
|
||||
|
||||
.mega-entry .cCont:focus:after, .mega-entry .cCont:hover:after {
|
||||
top: 50%;
|
||||
height: 50%;
|
||||
padding: 0.5em;
|
||||
}
|
||||
|
||||
.mega-entry > #noteTag {
|
||||
background: black;
|
||||
}
|
||||
|
||||
.noteTag {
|
||||
color: white;
|
||||
padding: 0.2em;
|
||||
overflow: hidden;
|
||||
|
||||
-moz-box-shadow: 0 2px 2px 0 black;
|
||||
-webkit-box-shadow: 0 2px 2px 0 black;
|
||||
box-shadow: 0 2px 2px 0 black;
|
||||
|
||||
position: absolute;
|
||||
background: slategrey;
|
||||
right: -6px;
|
||||
top: 10px;
|
||||
}
|
||||
|
||||
.mega-entry > .cCont {
|
||||
position: relative;
|
||||
color: white;
|
||||
overflow: hidden;
|
||||
height: 130px;
|
||||
}
|
||||
|
||||
.mega-entry .cCont > h2 {
|
||||
position: absolute;
|
||||
font-family: custom-sans;
|
||||
|
||||
padding: 0 0.2em;
|
||||
text-shadow: 2px 2px 8px black;
|
||||
|
||||
color: #DDD;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.cDate {
|
||||
padding: 0.2em 0.5em;
|
||||
font-size: 0.9em;
|
||||
}
|
||||
.cEOF {
|
||||
height: 10px;
|
||||
}
|
||||
|
||||
|
||||
.Sun { background: #FF1D25; }
|
||||
.Mon { background: #662D91; }
|
||||
.Tue { background: #3FA9F5; }
|
||||
.Wed { background: #7AC943; }
|
||||
.Thu { background: #FF7BAC; }
|
||||
.Fri { background: #603813; }
|
||||
.Sat { background: #FF931E; }
|
@ -1 +0,0 @@
|
||||
// __namespace( "Astro.Blog.Components.Entry.Mega" );
|
@ -1,83 +0,0 @@
|
||||
.vsign {
|
||||
position: relative;
|
||||
}
|
||||
.vertical-text {
|
||||
float: right;
|
||||
|
||||
color: #777;
|
||||
|
||||
padding: 1em 0.5em;
|
||||
margin: 0.5em 1em;
|
||||
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.vertical-text.block {
|
||||
background-color: #FAFAFA;
|
||||
}
|
||||
|
||||
.vertical-text > a.more {
|
||||
display: block;
|
||||
|
||||
top: 0;
|
||||
left: 0;
|
||||
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
padding: 0;
|
||||
|
||||
position: absolute;
|
||||
|
||||
border: 1px solid #D4D7C9;
|
||||
}
|
||||
.vertical-text > a.more:hover {
|
||||
border-width: 2px;
|
||||
border-color: purple;
|
||||
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.vertical-text p
|
||||
, .vertical-text a
|
||||
, .vertical-text h1 , .vertical-text h2, .vertical-text h3
|
||||
, .vertical-text h4, .vertical-text h5, .vertical-text h6 {
|
||||
padding: 0.1em;
|
||||
margin: 0;
|
||||
width: 1em;
|
||||
letter-spacing: 1em;
|
||||
|
||||
word-break: break-all;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.vertical-text > .block {
|
||||
overflow: hidden;
|
||||
width: 4.5em;
|
||||
}
|
||||
|
||||
.vertical-text > * {
|
||||
display: inline-block;
|
||||
float: right;
|
||||
height: 390px;
|
||||
}
|
||||
|
||||
.vertical-text > p {
|
||||
height: 400px;
|
||||
}
|
||||
|
||||
.vertical-text > p[data-flag="date"] {
|
||||
color: #BBB;
|
||||
}
|
||||
|
||||
.vertical-text.source > * {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
.vertical-text.source {
|
||||
height: 360px;
|
||||
border: 0;
|
||||
padding: 0;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
@ -1,82 +0,0 @@
|
||||
(function(){
|
||||
var ns = __namespace( "Astro.Blog.Components.VerticalNote" );
|
||||
/** @type {Dandelion} */
|
||||
var Dand = __import( "Dandelion" );
|
||||
/** @type {Dandelion.IDOMElement} */
|
||||
var IDOMElement = __import( "Dandelion.IDOMElement" );
|
||||
/** @type {Astro.Bootstrap} */
|
||||
var Bootstrap = __import( "Astro.Bootstrap" );
|
||||
/** @type {Astro.Blog.Config} */
|
||||
var Config = __import( "Astro.Blog.Config" );
|
||||
/** @type {Astro.utils.Date} */
|
||||
var XDate = __import( "Astro.utils.Date" );
|
||||
|
||||
/** @param {Dandelion.IDOMElement} elem */
|
||||
var VerticalNote = function( elem )
|
||||
{
|
||||
var relem = elem.element;
|
||||
var maxHeight = relem.clientHeight;
|
||||
|
||||
// Break for elements that are too long
|
||||
var formatted = Dand.wrapc( relem.className.replace( / *source */, " " ) );
|
||||
|
||||
elem.foreach( 1, function( child )
|
||||
{
|
||||
var ichild = IDOMElement( child );
|
||||
switch( ichild.getDAttribute( "flag" ) )
|
||||
{
|
||||
case "date":
|
||||
child.innerHTML = XDate.chinese( new Date( child.innerHTML ) );
|
||||
break;
|
||||
case "anchor":
|
||||
case "image":
|
||||
formatted.appendChild( child );
|
||||
child.style.display = null;
|
||||
return;
|
||||
}
|
||||
|
||||
var content = child.innerHTML;
|
||||
var len = content.length;
|
||||
var blockh = Math.ceil( child.clientHeight / len );
|
||||
|
||||
var opLen = Math.floor( maxHeight / blockh );
|
||||
|
||||
var i = 0;
|
||||
|
||||
var doBreak = function( i )
|
||||
{
|
||||
var nLine = Dand.wrapne(
|
||||
child.nodeName
|
||||
, content.substr( opLen * i, opLen )
|
||||
, ichild.aKeys()
|
||||
);
|
||||
|
||||
formatted.appendChild( nLine );
|
||||
|
||||
if( elem.getDAttribute( "href" ) )
|
||||
{
|
||||
formatted.addEventListener(
|
||||
"click"
|
||||
, function( e ) {
|
||||
window.location = this.loc;
|
||||
}.bind({ loc: elem.getDAttribute( "href" ) })
|
||||
);
|
||||
}
|
||||
|
||||
len -= opLen;
|
||||
};
|
||||
|
||||
for( var i = 0; opLen < len; i ++ ) doBreak( i );
|
||||
if( 0 < len ) doBreak( i );
|
||||
} );
|
||||
|
||||
relem.style.display = "none";
|
||||
relem.parentNode.insertBefore( formatted, relem.nextSibling );
|
||||
};
|
||||
|
||||
Bootstrap.regInit(function() {
|
||||
Dand.glass( "vertical-text", true )
|
||||
.forEach( function( e ) { new VerticalNote( e ); } );
|
||||
});
|
||||
|
||||
})();
|
@ -1,32 +1,34 @@
|
||||
.v_wrapper {
|
||||
width: 640px;
|
||||
height: 390px;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
vertical-align: middle;
|
||||
display: table-cell;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.v_wrapper > div{
|
||||
position: relative;
|
||||
.v_wrapper[data-loaded="1"]:after {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.v_wrapper[data-loaded="1"] img {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.v_wrapper:after {
|
||||
content: "\25BA";
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
opacity: 0.6;
|
||||
color: white;
|
||||
background: black;
|
||||
top: 0; left: 0;
|
||||
font-size: 700%;
|
||||
padding-top: 19%;
|
||||
}
|
||||
|
||||
.v_wrapper > div:hover {
|
||||
.v_wrapper:hover:after {
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
.v_wrapper > div > div {
|
||||
width: 0;
|
||||
height: 0;
|
||||
border-top: 3.5em solid transparent;
|
||||
border-bottom: 3.5em solid transparent;
|
||||
border-left: 5em solid white;
|
||||
|
||||
position: absolute;
|
||||
|
||||
left: 50%;
|
||||
top: 50%;
|
||||
margin-top: -3.5em;
|
||||
margin-left: -1.8em;
|
||||
|
||||
}
|
@ -14,7 +14,7 @@
|
||||
|
||||
var getData = __import( "System.Net.getData" );
|
||||
|
||||
var v_current = { player: false, mask: false, stage: false, listener: false };
|
||||
var v_current = { player: false, stage: false, listener: false };
|
||||
|
||||
var init = function()
|
||||
{
|
||||
@ -49,12 +49,13 @@
|
||||
if( v_current.stage )
|
||||
{
|
||||
v_current.stage.removeChild( v_current.player );
|
||||
v_current.stage.appendChild( v_current.mask );
|
||||
v_current.stage.onclick = v_current.listener;
|
||||
v_current.stage.removeAttribute( "data-loaded" );
|
||||
}
|
||||
|
||||
// Remove mask
|
||||
( v_current.stage = vtag ).removeChild( v_current.mask = vtag.firstChild );
|
||||
IDOMElement( v_current.stage = vtag )
|
||||
.setAttribute( "data-loaded", 1 );
|
||||
|
||||
v_current.player = Dand.wrapna(
|
||||
"iframe"
|
||||
|
@ -36,6 +36,8 @@ div#header, div#mbody, div#contact, div#horizon {
|
||||
animation-name: aspin;
|
||||
}
|
||||
|
||||
.err { color: orangered; }
|
||||
|
||||
.cw { animation-name: spin; }
|
||||
|
||||
.mbody {
|
||||
|
@ -1,5 +1,6 @@
|
||||
.ban-btn { color: red; }
|
||||
.subs-type { margin: 1em; }
|
||||
.subs-addr { color: grey; }
|
||||
|
||||
.subs-item {
|
||||
position: relative;
|
||||
|
5
botanjs/src/Dandelion/StarticRes.js
Normal file
5
botanjs/src/Dandelion/StarticRes.js
Normal file
@ -0,0 +1,5 @@
|
||||
(function(){
|
||||
var ns = __namespace( "Dandelion.StaticRes" );
|
||||
|
||||
ns[ NS_EXPORT ]( EX_READONLY_GETTER , "BLANK_IMG", function() { return "data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw=="; } );
|
||||
})();
|
@ -26,18 +26,22 @@ spec:
|
||||
mountPath: "/app/cache"
|
||||
containers:
|
||||
- name: web
|
||||
image: registry.k8s.astropenguin.net/astrojs:2022.04.05.06
|
||||
image: registry.k8s.astropenguin.net/astrojs:2022.04.09.03
|
||||
securityContext:
|
||||
runAsGroup: 1001
|
||||
runAsNonRoot: true
|
||||
runAsUser: 1001
|
||||
env:
|
||||
- name: DEBUG
|
||||
value: "0"
|
||||
- name: FLASK_DEBUG
|
||||
value: "0"
|
||||
- name: FLASK_ENV
|
||||
value: "production"
|
||||
- name: RUN_MODE
|
||||
value: "web"
|
||||
- name: REDIS_CONN
|
||||
value: "redis://:@localhost:6379/9"
|
||||
volumeMounts:
|
||||
- name: cache
|
||||
mountPath: "/app/cache"
|
||||
@ -50,7 +54,7 @@ spec:
|
||||
- name: redis
|
||||
image: redis:6.0.8-alpine
|
||||
- name: compiler
|
||||
image: registry.k8s.astropenguin.net/astrojs:2022.04.05.06
|
||||
image: registry.k8s.astropenguin.net/astrojs:2022.04.09.03
|
||||
securityContext:
|
||||
runAsGroup: 1001
|
||||
runAsNonRoot: true
|
||||
@ -58,6 +62,10 @@ spec:
|
||||
env:
|
||||
- name: RUN_MODE
|
||||
value: "tasks"
|
||||
- name: DEBUG
|
||||
value: "0"
|
||||
- name: REDIS_CONN
|
||||
value: "redis://:@localhost:6379/9"
|
||||
volumeMounts:
|
||||
- name: cache
|
||||
mountPath: "/app/cache"
|
||||
|
Loading…
Reference in New Issue
Block a user