forked from Botanical/BotanJS
Astro Classes
This commit is contained in:
53
botanjs/src/Astro/Blog/Layout/Article/Control.js
Normal file
53
botanjs/src/Astro/Blog/Layout/Article/Control.js
Normal file
@@ -0,0 +1,53 @@
|
||||
(function(){
|
||||
var ns = __namespace( "Astro.Blog.Layout.Article.Control" );
|
||||
|
||||
/** @type {Dandelion} */
|
||||
var Dand = __import( "Dandelion" );
|
||||
/** @type {Dandelion.IDOMElement} */
|
||||
var IDOMElement = __import( "Dandelion.IDOMElement" );
|
||||
/** @type {Components.MessageBox} */
|
||||
var MessageBox = __import( "Components.MessageBox" );
|
||||
/** @type {Astro.Bootstrap} */
|
||||
var Bootstrap = __import( "Astro.Bootstrap" );
|
||||
/** @type {Astro.Blog.Config} */
|
||||
var config = __import( "Astro.Blog.Config" );
|
||||
|
||||
var postData = __import( "System.Net.postData" );
|
||||
|
||||
var aid = config.get( "ArticleID" );
|
||||
|
||||
/** @type {_AstConf_.Control} */
|
||||
var control = config.get( "Control" );
|
||||
|
||||
var init = function()
|
||||
{
|
||||
var delete_btn = Dand.id( "control_delete", true );
|
||||
if( delete_btn ) delete_btn.addEventListener( "Click", a_delete );
|
||||
};
|
||||
|
||||
var a_delete = function ()
|
||||
{
|
||||
new MessageBox(
|
||||
"Confirm"
|
||||
, "Are you sure you want to delete this article?. Comments will also be deleted!"
|
||||
, "Yes", "No"
|
||||
, a_doDelete
|
||||
).show();
|
||||
};
|
||||
|
||||
var a_doDelete = function ( confirmed )
|
||||
{
|
||||
var a_deleteSuccess = function ( args )
|
||||
{
|
||||
window.location.reload( true );
|
||||
}
|
||||
, a_deleteFailed = function ( args )
|
||||
{
|
||||
|
||||
};
|
||||
|
||||
if ( confirmed ) postData( control.action.del, { "article_id": aid }, a_deleteSuccess, a_deleteFailed );
|
||||
};
|
||||
|
||||
Bootstrap.regInit( init );
|
||||
})();
|
6
botanjs/src/Astro/Blog/Layout/Article/Latest.js
Normal file
6
botanjs/src/Astro/Blog/Layout/Article/Latest.js
Normal file
@@ -0,0 +1,6 @@
|
||||
(function(){
|
||||
var ns = __namespace( "Astro.Blog.Layout.Article.Latest" );
|
||||
|
||||
// __import( "Astro.Blog.Components.Entry.Home" );
|
||||
// __import( "Astro.Blog.Components.Entry.Mega" );
|
||||
})();
|
3
botanjs/src/Astro/Blog/Layout/Article/_this.js
Normal file
3
botanjs/src/Astro/Blog/Layout/Article/_this.js
Normal file
@@ -0,0 +1,3 @@
|
||||
(function(){
|
||||
var ns = __namespace( "Astro.Blog.Layout.Article" );
|
||||
})();
|
99
botanjs/src/Astro/Blog/Layout/ErrorPages.css
Normal file
99
botanjs/src/Astro/Blog/Layout/ErrorPages.css
Normal file
@@ -0,0 +1,99 @@
|
||||
* { margin: 0; padding: 0; }
|
||||
|
||||
/* Parallax & charCloud */
|
||||
.p_abs100 {
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height:100%;
|
||||
position: absolute;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.p_charCloud
|
||||
{
|
||||
font-family: sans-serif;
|
||||
}
|
||||
|
||||
/* End Parallax & charCloud */
|
||||
#g { width: 100%; height: 100%; position: absolute; top: 0; }
|
||||
|
||||
#g, .slideTransitionOverride {
|
||||
-webkit-transition: all 2ms cubic-bezier(0.115, 0.000, 0.355, 1.000);
|
||||
-moz-transition: all 2s cubic-bezier(0.115, 0.000, 0.355, 1.000);
|
||||
-ms-transition: all 2s cubic-bezier(0.115, 0.000, 0.355, 1.000);
|
||||
-o-transition: all 2s cubic-bezier(0.115, 0.000, 0.355, 1.000);
|
||||
transition: all 2s cubic-bezier(0.115, 0.000, 0.355, 1.000); /* custom */
|
||||
|
||||
-webkit-transition-timing-function: cubic-bezier(0.115, 0.000, 0.355, 1.000);
|
||||
-moz-transition-timing-function: cubic-bezier(0.115, 0.000, 0.355, 1.000);
|
||||
-ms-transition-timing-function: cubic-bezier(0.115, 0.000, 0.355, 1.000);
|
||||
-o-transition-timing-function: cubic-bezier(0.115, 0.000, 0.355, 1.000);
|
||||
transition-timing-function: cubic-bezier(0.115, 0.000, 0.355, 1.000); /* custom */
|
||||
}
|
||||
|
||||
html, body { height: 100%; }
|
||||
|
||||
.rooms { width: 100%; height:100%; position: absolute; overflow: hidden; z-index: -1; }
|
||||
|
||||
#g > div{
|
||||
width: 100%;
|
||||
height:100%;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.c_center {
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
position: absolute;
|
||||
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.code{
|
||||
/* Values depends on the sprite sheet*/
|
||||
margin-left: -100px;
|
||||
margin-top: -45px;
|
||||
width: 200px;
|
||||
height: 90px;
|
||||
}
|
||||
|
||||
.c401 { background: url(http://file.astropenguin.net/blog/layout-images/errorcodes.png) 0 0; }
|
||||
.c403 { background: url(http://file.astropenguin.net/blog/layout-images/errorcodes.png) 200px 0; }
|
||||
.c404 { background: url(http://file.astropenguin.net/blog/layout-images/errorcodes.png) 0 90px; }
|
||||
|
||||
.b401 { background: cornflowerblue; }
|
||||
.b403 { background: crimson; }
|
||||
.b404 { background: slategrey; }
|
||||
|
||||
.t401 { color: cornflowerblue; }
|
||||
.t403 { color: crimson; }
|
||||
.t404 { color: slategrey; }
|
||||
|
||||
|
||||
.bc {
|
||||
/* Actual ring diameter */
|
||||
width: 315px;
|
||||
height: 315px;
|
||||
border-radius: 315px;
|
||||
|
||||
margin-left: -157.5px;
|
||||
margin-top: -157.5px;
|
||||
}
|
||||
|
||||
.ringbg {
|
||||
/* ring canvas size */
|
||||
width: 400px;
|
||||
height: 400px;
|
||||
|
||||
margin-left: -200px;
|
||||
margin-top: -200px;
|
||||
|
||||
background: url(http://file.astropenguin.net/blog/layout-images/ring.png) center center no-repeat;
|
||||
}
|
||||
|
||||
|
||||
h1 {
|
||||
font-family: sans-serif;
|
||||
font-size: 4em;
|
||||
}
|
75
botanjs/src/Astro/Blog/Layout/ErrorPages.js
Normal file
75
botanjs/src/Astro/Blog/Layout/ErrorPages.js
Normal file
@@ -0,0 +1,75 @@
|
||||
(function(){
|
||||
var ns = __namespace( "Astro.Blog.Layout.ErrorPages" );
|
||||
|
||||
/** @type {System.Cycle} */
|
||||
var Cycle = __import( "System.Cycle" );
|
||||
/** @type {Dandelion} */
|
||||
var Dand = __import( "Dandelion" );
|
||||
/** @type {Astro.Bootstrap} */
|
||||
var Bootstrap = __import( "Astro.Bootstrap" );
|
||||
/** @type {Astro.Blog} */
|
||||
var config = __import( "Astro.Blog.Config" );
|
||||
/** @type {Astro.Blog.Mechanism.CharacterCloud} */
|
||||
var CharacterCloud = __import( "Astro.Mechanism.CharacterCloud" );
|
||||
/** @type {Astro.Blog.Mechanism.Parallax} */
|
||||
var Parallax = __import( "Astro.Mechanism.Parallax" );
|
||||
|
||||
var init = function ()
|
||||
{
|
||||
var errorcode = config.get( "ErrorCode" );
|
||||
var currentRoom = Dand.id( 'p' + errorcode );
|
||||
var parent = currentRoom.parentNode;
|
||||
var rooms = parent.childNodes;
|
||||
var l = rooms.length;
|
||||
var rm;
|
||||
// far from observer;
|
||||
var cloudRange_1 = { lowerLimit: 0, upperLimit: 250, leftLimit: -10, rightLimit: 110 };
|
||||
var cloudRange_2 = { lowerLimit: 0, upperLimit: 150, leftLimit: -10, rightLimit: 110 };
|
||||
var cloudRange_3 = { lowerLimit: 0, upperLimit: 200, leftLimit: -10, rightLimit: 110 };
|
||||
// close;
|
||||
var cloudRange_4 = { lowerLimit: 0, upperLimit: 100, leftLimit: -10, rightLimit: 110 };
|
||||
var cCloudSymbol;
|
||||
|
||||
switch ( errorcode )
|
||||
{
|
||||
case 401:
|
||||
cCloudSymbol = "!";
|
||||
break;
|
||||
case 403:
|
||||
cCloudSymbol = "\u00D7 Forbidden";
|
||||
break;
|
||||
default:
|
||||
cCloudSymbol = "Page not found";
|
||||
}
|
||||
|
||||
Parallax.cssSlide( Dand.wrap(), 0, cloudRange_1 );
|
||||
Parallax.cssSlide( Dand.wrap(), 0, cloudRange_2 );
|
||||
Parallax.cssSlide( Dand.wrap(), 0, cloudRange_3 );
|
||||
Parallax.cssSlide( Dand.wrap(), 0, cloudRange_4 );
|
||||
|
||||
var parallax_container = Dand.id( 'p' + errorcode );
|
||||
|
||||
parallax_container.appendChild( Parallax.cssSlide( CharacterCloud.create( cCloudSymbol, "p_charCloud t" + errorcode, 20, cloudRange_1 ), 1, cloudRange_1 ) );
|
||||
parallax_container.appendChild( Parallax.cssSlide( CharacterCloud.create( cCloudSymbol, "p_charCloud t" + errorcode, 20, cloudRange_2 ), 1, cloudRange_2 ) );
|
||||
parallax_container.appendChild( Parallax.cssSlide( CharacterCloud.create( cCloudSymbol, "p_charCloud t" + errorcode, 20, cloudRange_3 ), 1, cloudRange_3 ) );
|
||||
parallax_container.appendChild( Parallax.cssSlide( CharacterCloud.create( cCloudSymbol, "p_charCloud t" + errorcode, 20, cloudRange_4 ), 1, cloudRange_4 ) );
|
||||
|
||||
for( var r = 0, i = 0; r < l; r ++ )
|
||||
{
|
||||
rm = rooms[r];
|
||||
if( rm.nodeType == 1 )
|
||||
{
|
||||
if( rm == currentRoom )
|
||||
{
|
||||
parent.style.top = ( -i * 100 ) + "%";
|
||||
// Parallax Scrolling!
|
||||
Cycle.next( function() { Parallax.verticalSlideTo(i) } );
|
||||
break;
|
||||
}
|
||||
i ++;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Bootstrap.regInit( init );
|
||||
})();
|
63
botanjs/src/Astro/Blog/Layout/Login.css
Normal file
63
botanjs/src/Astro/Blog/Layout/Login.css
Normal file
@@ -0,0 +1,63 @@
|
||||
body {
|
||||
background-color: #222;
|
||||
background-image: radial-gradient(
|
||||
circle 150px at -75% -75%
|
||||
, transparent 0%
|
||||
, transparent 94%
|
||||
, rgba(255, 255, 255, 0.6) 94%
|
||||
, rgba(255, 255, 255, 0.6) 99%
|
||||
, transparent
|
||||
)
|
||||
, radial-gradient(
|
||||
circle 150px at 173% 174%
|
||||
, transparent 0%
|
||||
, transparent 94%
|
||||
, rgba(255, 255, 255, 0.6) 94%
|
||||
, rgba(255, 255, 255, 0.6) 99%
|
||||
, transparent
|
||||
)
|
||||
;
|
||||
|
||||
background-size: 100px 100px;
|
||||
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
form {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
input {
|
||||
width: 100%;
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
.mbox_titlebar, .mbox_body {
|
||||
background: rgba(0, 0, 0, 0.1) !important;
|
||||
}
|
||||
|
||||
.cstatus {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.status {
|
||||
position: absolute;
|
||||
|
||||
right: 0.25em;
|
||||
top: 0.25em;
|
||||
|
||||
width: 0.5em;
|
||||
height: 0.5em;
|
||||
|
||||
background: grey;
|
||||
box-shadow: 0 0 5px 0;
|
||||
}
|
||||
|
||||
div.msg { text-align: right; }
|
||||
sub.good { color: greenyellow; }
|
||||
sub.failed { color: #DDD; }
|
||||
sub.suspicious { color: orangered; }
|
||||
sub.banned { color: red; }
|
75
botanjs/src/Astro/Blog/Layout/Login.js
Normal file
75
botanjs/src/Astro/Blog/Layout/Login.js
Normal file
@@ -0,0 +1,75 @@
|
||||
(function(){
|
||||
var ns = __namespace( "Astro.Blog.Layout.Login" );
|
||||
|
||||
/** @type {System.utils.IKey} */
|
||||
var IKey = __import( "System.utils.IKey" );
|
||||
/** @type {Components.MessageBox} */
|
||||
var MessageBox = __import( "Components.MessageBox" );
|
||||
/** @type {Dandelion} */
|
||||
var Dand = __import( "Dandelion" );
|
||||
/** @type {Astro.Bootstrap} */
|
||||
var Bootstrap = __import( "Astro.Bootstrap" );
|
||||
/** @type {Astro.Blog.Config} */
|
||||
var config = __import( "Astro.Blog.Config" );
|
||||
|
||||
// __import( "Dandelion.CSSReset" ); CSS_RESERVATION
|
||||
// __import( "Dandelion.CSSAnimations" ); CSS_RESERVATION
|
||||
|
||||
/** @type {_AstConf_.Login} */
|
||||
var conf = config.get( "Login" );
|
||||
|
||||
var sHeat = conf.sHeat || "";
|
||||
var formAction = conf.formAct || "./";
|
||||
|
||||
var field_username = new IKey( "name", "username" );
|
||||
var field_password = new IKey( "name", "password" );
|
||||
|
||||
var init = function ()
|
||||
{
|
||||
var form = Dand.wrapne('form'
|
||||
, [
|
||||
// Basic login and password fields
|
||||
, Dand.wrapc("flsf", "Name:")
|
||||
, Dand.wrapna('input', [ field_username, new IKey("type", "text") ] )
|
||||
|
||||
, Dand.wrapc("flsf", "Password:")
|
||||
, Dand.wrapna('input', [ field_password, new IKey("type", "password") ] )
|
||||
|
||||
, Dand.wrapc('msg', Dand.wrap('sub', null, sHeat.toLowerCase(), sHeat))
|
||||
]
|
||||
, [
|
||||
// Form attributes
|
||||
new IKey('action', formAction)
|
||||
, new IKey('method', 'POST')
|
||||
]
|
||||
)
|
||||
;
|
||||
|
||||
|
||||
var mbox = new MessageBox( "Blog.Astro", form, "Login", false, submitForm.bind( form ) ).show();
|
||||
|
||||
// Handle enter button
|
||||
mbox.onkeyup = function( _e )
|
||||
{
|
||||
if ( submitForm.bind( form )( _e.which == 13 ) )
|
||||
{
|
||||
document.body.removeChild( this );
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
var submitForm = function (bool) {
|
||||
if ( bool )
|
||||
{
|
||||
if ( this[ field_username.keyValue ].value != ""
|
||||
&& this[ field_password.keyValue ] != "" )
|
||||
{
|
||||
this.submit();
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
Bootstrap.regInit( init );
|
||||
})();
|
108
botanjs/src/Astro/Blog/Layout/MainFrame.css
Normal file
108
botanjs/src/Astro/Blog/Layout/MainFrame.css
Normal file
@@ -0,0 +1,108 @@
|
||||
html, body { height: 100%; }
|
||||
|
||||
html { background-color: #222; }
|
||||
|
||||
body {
|
||||
background-color: #F0F0F0;
|
||||
font-family: custom-sans;
|
||||
}
|
||||
|
||||
pre { font-family: monospace; }
|
||||
|
||||
::selection {
|
||||
color: white;
|
||||
background: purple;
|
||||
}
|
||||
::-moz-selection {
|
||||
color: white;
|
||||
background: purple;
|
||||
}
|
||||
|
||||
p { padding: 0.5em; }
|
||||
|
||||
a {
|
||||
color: #333;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover { text-decoration: underline; }
|
||||
|
||||
h1, h2, h3, h4, .h1, .h2, .h3, .h4 { font-family: custom-serif; }
|
||||
h1, .h1 { font-size: 2.5em; }
|
||||
h2, .h2 { font-size: 2em; }
|
||||
h3, .h3 { font-size: 1.5em; }
|
||||
h4, .h4 { font-size: 1em; }
|
||||
h5, .h5 { font-size: 0.8em; }
|
||||
h6, .h6 { font-size: 0.5em; }
|
||||
|
||||
.clearfix {
|
||||
clear: both;
|
||||
padding: 0 !important;
|
||||
margin: 0 !important;
|
||||
|
||||
}
|
||||
|
||||
.begin-wrapper {
|
||||
position: relative;
|
||||
|
||||
min-height: 100%;
|
||||
background-color: #EBEAEF;
|
||||
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.mbody {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.main-column {
|
||||
width: 85%;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.right { text-align: right; }
|
||||
.panel { padding: 1.2em; }
|
||||
|
||||
/* transition properties */
|
||||
div#header, div#mbody, div#contact, div#horizon {
|
||||
|
||||
-webkit-transition: all 500ms cubic-bezier(0.770, 0.000, 0.175, 1.000);
|
||||
-moz-transition: all 500ms cubic-bezier(0.770, 0.000, 0.175, 1.000);
|
||||
-ms-transition: all 500ms cubic-bezier(0.770, 0.000, 0.175, 1.000);
|
||||
-o-transition: all 500ms cubic-bezier(0.770, 0.000, 0.175, 1.000);
|
||||
transition: all 500ms cubic-bezier(0.770, 0.000, 0.175, 1.000); /* easeInOutQuart */
|
||||
|
||||
-webkit-transition-timing-function: cubic-bezier(0.770, 0.000, 0.175, 1.000);
|
||||
-moz-transition-timing-function: cubic-bezier(0.770, 0.000, 0.175, 1.000);
|
||||
-ms-transition-timing-function: cubic-bezier(0.770, 0.000, 0.175, 1.000);
|
||||
-o-transition-timing-function: cubic-bezier(0.770, 0.000, 0.175, 1.000);
|
||||
transition-timing-function: cubic-bezier(0.770, 0.000, 0.175, 1.000); /* easeInOutQuart */
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
0% { transform: rotate( 0deg ); }
|
||||
25% { transform: rotate( 90deg ); }
|
||||
50% { transform: rotate( 180deg ); }
|
||||
75% { transform: rotate( 270deg ); }
|
||||
100% { transform: rotate( 360deg ); }
|
||||
}
|
||||
|
||||
@keyframes aspin {
|
||||
0% { transform: rotate( 0deg ); }
|
||||
25% { transform: rotate( -90deg ); }
|
||||
50% { transform: rotate( -180deg ); }
|
||||
75% { transform: rotate( -270deg ); }
|
||||
100% { transform: rotate( -360deg ); }
|
||||
}
|
||||
|
||||
.spin {
|
||||
animation-duration: 60s;
|
||||
animation-timing-function: linear;
|
||||
animation-iteration-count: infinite;
|
||||
animation-name: aspin;
|
||||
}
|
||||
|
||||
.cw { animation-name: spin; }
|
||||
|
||||
/* end transition properties */
|
256
botanjs/src/Astro/Blog/Layout/MainFrame.js
Normal file
256
botanjs/src/Astro/Blog/Layout/MainFrame.js
Normal file
@@ -0,0 +1,256 @@
|
||||
(function(){
|
||||
var ns = __namespace( "Astro.Blog.Layout.MainFrame" );
|
||||
|
||||
/** @type {System.Cycle} */
|
||||
var Cycle = __import( "System.Cycle" );
|
||||
/** @type {System.utils.IKey} */
|
||||
var IKey = __import( "System.utils.IKey" );
|
||||
/** @type {Dandelion} */
|
||||
var Dand = __import( "Dandelion" );
|
||||
/** @type {Dandelion.IDOMObject} */
|
||||
var IDOMObject = __import( "Dandelion.IDOMObject" );
|
||||
/** @type {Dandelion.IDOMElement} */
|
||||
var IDOMElement = __import( "Dandelion.IDOMElement" );
|
||||
/** @type {Dandelion.Window} */
|
||||
var wsupp = __import( "Dandelion.Window" );
|
||||
/** @type {System.Debug} */
|
||||
var debug = __import( "System.Debug" );
|
||||
/** @type {Astro.Bootstrap} */
|
||||
var Bootstrap = __import( "Astro.Bootstrap" );
|
||||
/** @type {Astro.Mechanism.CharacterCloud} */
|
||||
var CharacterCloud = __import( "Astro.Mechanism.CharacterCloud" );
|
||||
/** @type {Astro.Mechanism.Parallax} */
|
||||
var Parallax = __import( "Astro.Mechanism.Parallax" );
|
||||
|
||||
// __import( "Dandelion.CSSReset" ); CSS_RESERVATION
|
||||
// __import( "Dandelion.CSSAnimations" ); CSS_RESERVATION
|
||||
// __import( "Astro.Blog.Element.Layer" ); CSS_RESERVATION
|
||||
|
||||
var main;
|
||||
var header;
|
||||
var main_h;
|
||||
|
||||
// menu and horizon
|
||||
var horizon;
|
||||
var contact;
|
||||
var contaht_page;
|
||||
var collapse_panel;
|
||||
var c_expand = false;
|
||||
var savedPath;
|
||||
|
||||
var init = function ()
|
||||
{
|
||||
// Footer at bottom
|
||||
var padder = Dand.wrap();
|
||||
var begin_wrapper = Dand.id( "begin-wrapper" );
|
||||
var content_wrapper = Dand.id( "mbody" );
|
||||
var footer = Dand.tag( "footer" );
|
||||
var fhorizon = Dand.id( "fhorizon" );
|
||||
|
||||
if( footer.length )
|
||||
{
|
||||
footer = footer[0];
|
||||
var fheight = footer.scrollHeight || footer.offsetHeight;
|
||||
var hheight = fhorizon.scrollHeight || fhorizon.offsetHeight;
|
||||
|
||||
padder.style.height = ( fheight + hheight ) + "px";
|
||||
begin_wrapper.style.marginBottom = "-" + fheight + "px";
|
||||
}
|
||||
|
||||
content_wrapper.appendChild( padder );
|
||||
|
||||
|
||||
IDOMObject( window ).addEventListener( "Resize", responsify );
|
||||
|
||||
initTopButton();
|
||||
navControl();
|
||||
responsify( null, true );
|
||||
initBackgroundParallax();
|
||||
};
|
||||
|
||||
var topButtons = [];
|
||||
var initTopButton = function()
|
||||
{
|
||||
// init params
|
||||
header = Dand.id( "header" );
|
||||
horizon = Dand.id( "horizon" );
|
||||
main = Dand.id( "mbody" );
|
||||
|
||||
contact_page = Dand.id( "contact" );
|
||||
collapse_panel = Dand.id( "collapse_panel" );
|
||||
|
||||
horizon.style.backgroundColor
|
||||
= fhorizon.style.backgroundColor
|
||||
= "purple";
|
||||
|
||||
contact = Dand.id( "menu_cont", true );
|
||||
contact.addEventListener( "Click", expandContact );
|
||||
|
||||
Dand.id( "menu", true ).foreach(
|
||||
1, function( e )
|
||||
{
|
||||
topButtons.push( e );
|
||||
if( e.getAttribute( "active" ) !== null )
|
||||
{
|
||||
e.setAttribute( "master", true );
|
||||
}
|
||||
}
|
||||
);
|
||||
};
|
||||
|
||||
var navControl = function ()
|
||||
{
|
||||
// Page control
|
||||
/** @type {Dandelion.IDOMElement} */
|
||||
var page_control = Dand.id( "top_control", true );
|
||||
var bottom_control = Dand.id( "bottom_control" );
|
||||
|
||||
if ( page_control && bottom_control )
|
||||
{
|
||||
var appendp = function( elem, self )
|
||||
{
|
||||
var clone = elem.cloneNode( true );
|
||||
if( clone.className == "p_navigation" )
|
||||
{
|
||||
IDOMElement( clone ).reverseChild();
|
||||
}
|
||||
bottom_control.appendChild( clone );
|
||||
return true;
|
||||
};
|
||||
|
||||
page_control.last( document.ELEMENT_NODE, appendp );
|
||||
page_control.first( document.ELEMENT_NODE, appendp );
|
||||
}
|
||||
};
|
||||
|
||||
/** @type {Dandelion.IDOMElement} */
|
||||
var rspd_ratio = 0;
|
||||
var responsify = function( e, override )
|
||||
{
|
||||
// Ratio changes would trigger content
|
||||
var ratio = wsupp.clientWidth / wsupp.clientHeight;
|
||||
|
||||
// Swap only on ration changes from 1 < x OR x < 1
|
||||
if( ( ratio < 1 && 1 < rspd_ratio ) || ( 1 < ratio && rspd_ratio < 1 ) || override )
|
||||
{
|
||||
rspd_ratio = ratio;
|
||||
debug.Info( "Responsive Event: R = " + ratio );
|
||||
|
||||
BotanJS.dispatchEvent( new BotanEvent( "Responsive", { "ratio": ratio } ) );
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
/////// Menu
|
||||
// Contact
|
||||
var expandContact = function ()
|
||||
{
|
||||
// disable click event on the button
|
||||
contact.removeEventListener( "Click", expandContact );
|
||||
// enable click event for collapse
|
||||
collapse_panel.onclick = doCollapse;
|
||||
|
||||
// Expand contact panel
|
||||
contact.style.cursor = "default";
|
||||
contact_page.style.height = "400px";
|
||||
header.style.marginTop = "400px";
|
||||
|
||||
// Save horizon color to collapse panel
|
||||
collapse_panel.style.backgroundColor = horizon.style.backgroundColor;
|
||||
|
||||
horizon.style.backgroundColor = "dimgray";
|
||||
|
||||
for( var i in topButtons ) topButtons[i].removeAttribute( "active" );
|
||||
contact.setAttribute( "active", "" );
|
||||
|
||||
c_expand = true;
|
||||
};
|
||||
|
||||
var doCollapse = function ()
|
||||
{
|
||||
// disable click event for collapse
|
||||
collapse_panel.onclick = null;
|
||||
// enable click event on the button
|
||||
contact.addEventListener( "Click", expandContact );
|
||||
|
||||
// Reverting states
|
||||
contact_page.style.height
|
||||
= contact.style.color
|
||||
= contact.style.cursor
|
||||
= header.style.marginTop
|
||||
= "";
|
||||
|
||||
// Apply saved color to horizon
|
||||
horizon.style.backgroundColor = collapse_panel.style.backgroundColor;
|
||||
|
||||
for( var i in topButtons )
|
||||
{
|
||||
if( topButtons[i].getAttribute( "master" ) )
|
||||
{
|
||||
topButtons[i].setAttribute( "active", "" );
|
||||
}
|
||||
else
|
||||
{
|
||||
topButtons[i].removeAttribute( "active" );
|
||||
}
|
||||
}
|
||||
|
||||
c_expand = false;
|
||||
};
|
||||
|
||||
var initBackgroundParallax = function ()
|
||||
{
|
||||
var bg = Dand.id("main_background");
|
||||
if( !bg )
|
||||
{
|
||||
debug.Info( "Parallax Container is not available" );
|
||||
return;
|
||||
}
|
||||
// far from observer
|
||||
var slide_1 = { lowerLimit: 70, upperLimit: 100 }
|
||||
// bottom cloud, concentrated
|
||||
, slide_2a = { lowerLimit: 0, upperLimit: 200 }
|
||||
, slide_2b = { lowerLimit: 0, upperLimit: 200 }
|
||||
, slide_2c = { lowerLimit: 0, upperLimit: 200 }
|
||||
|
||||
, slide_3 = { lowerLimit: 20, upperLimit: 100 }
|
||||
, slide_4 = { lowerLimit: 70, upperLimit: 100 }
|
||||
|
||||
, cloudRange_1 = { lowerLimit: 0, upperLimit: 100, leftLimit: -10, rightLimit: 110 }
|
||||
, cloudRange_2a = { lowerLimit: 180, upperLimit: 200, leftLimit: -10, rightLimit: 110 }
|
||||
, cloudRange_2b = { lowerLimit: 290, upperLimit: 300, leftLimit: -10, rightLimit: 110 }
|
||||
, cloudRange_2c = { lowerLimit: 390, upperLimit: 400, leftLimit: -10, rightLimit: 110 }
|
||||
, cloudRange_3 = { lowerLimit: 0, upperLimit: 300, leftLimit: -10, rightLimit: 110 }
|
||||
, cloudRange_4 = { lowerLimit: 80, upperLimit: 100, leftLimit: -10, rightLimit: 110 }
|
||||
|
||||
, cCloudSymbol = ["\u25CF", "\u25CF", "\u25CF", "\u25CB", "\u25CB"]
|
||||
, cCloudSymbol2 = ["\u25CC" ]
|
||||
|
||||
, colors = ["FF1D25", "662D91", "3FA9F5", "7AC943", "FF7BAC", "603813", "FF931E"]
|
||||
, i = new Date().getDay()
|
||||
|
||||
, cCloud_1 = CharacterCloud.create( cCloudSymbol2, null, 10, cloudRange_1 )
|
||||
, cCloud_2a = CharacterCloud.create( cCloudSymbol, null, 10, cloudRange_2a )
|
||||
, cCloud_2b = CharacterCloud.create( cCloudSymbol, null, 20, cloudRange_2b, 10 )
|
||||
, cCloud_2c = CharacterCloud.create( cCloudSymbol, null, 40, cloudRange_2c, 5 )
|
||||
, cCloud_3 = CharacterCloud.create( cCloudSymbol2, "spin", 0, cloudRange_3 )
|
||||
, cCloud_4 = CharacterCloud.create( cCloudSymbol2, "spin cw", 0, cloudRange_4 );
|
||||
|
||||
bg.appendChild( Parallax.cssSlide( cCloud_1, 0, slide_1 ) );
|
||||
bg.appendChild( Parallax.cssSlide( cCloud_2a, 1, slide_2a ) );
|
||||
bg.appendChild( Parallax.cssSlide( cCloud_2b, 1, slide_2b ) );
|
||||
bg.appendChild( Parallax.cssSlide( cCloud_2c, 1, slide_2c ) );
|
||||
bg.appendChild( Parallax.cssSlide( cCloud_3, 2, slide_3 ) );
|
||||
bg.appendChild( Parallax.cssSlide( cCloud_4, 3, slide_4 ) );
|
||||
|
||||
IDOMElement( bg ).foreach( 1, function(e)
|
||||
{
|
||||
e.style.color = "#" + colors[i ++];
|
||||
if (colors.length < i) i = 0;
|
||||
});
|
||||
|
||||
Parallax.attach( window, wsupp, 0.2 );
|
||||
};
|
||||
|
||||
Bootstrap.regInit( init );
|
||||
})();
|
102
botanjs/src/Astro/Blog/Layout/TwoColumn.css
Normal file
102
botanjs/src/Astro/Blog/Layout/TwoColumn.css
Normal file
@@ -0,0 +1,102 @@
|
||||
.contentWrap {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#dockleft {
|
||||
position: absolute;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
.main {
|
||||
/* background-color: #FAFAFA; */
|
||||
vertical-align: top;
|
||||
min-width: 80%;
|
||||
|
||||
position: relative;
|
||||
}
|
||||
|
||||
/**
|
||||
* Simply defined as:
|
||||
* Text / Text / Text . Text / Text / Tex
|
||||
**/
|
||||
ul.breadcrumb > li { display: inline-block; }
|
||||
ul.breadcrumb > li:before { content: "/"; }
|
||||
ul.breadcrumb > li:first-child:before,
|
||||
ul.breadcrumb > li.sep + li:before,
|
||||
ul.breadcrumb > li.sep:before { content: " "; }
|
||||
ul.breadcrumb > li.sep:after { content: "\2022"; }
|
||||
|
||||
.nav_panel {
|
||||
padding-left 0.5em;
|
||||
min-width: 20%;
|
||||
}
|
||||
|
||||
#dockright {
|
||||
position: relative;
|
||||
/*border-right: #76400C solid 0.2em;*/
|
||||
}
|
||||
|
||||
#dockright > div {
|
||||
float: right;
|
||||
|
||||
margin: 0 -.3em;
|
||||
padding: 0 0.2em 2em 0.2em;
|
||||
display: inline-block;
|
||||
width: 0;
|
||||
}
|
||||
|
||||
#extend_sec {
|
||||
min-height: 7px;
|
||||
}
|
||||
|
||||
#extend_sec, #dockright {
|
||||
/* Same as dockright */
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.vpole {
|
||||
/* Should be the same as parent */
|
||||
padding: 0 0.5em;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
#bottom_control {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.p_navigation {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.p_navigation > a, .p_controls > a {
|
||||
color: #333;
|
||||
padding: 0.2em 0.5em;
|
||||
}
|
||||
|
||||
.p_navigation > a {
|
||||
font-size: 0.8em;
|
||||
font-family: custom-sans;
|
||||
}
|
||||
|
||||
.p_controls > a {
|
||||
color: #333;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.ptop {
|
||||
margin-left: -1em !important;
|
||||
}
|
||||
/*Backgrounds*/
|
||||
|
||||
/* This style is necessary
|
||||
* to prevent anchor shifting issue
|
||||
*/
|
||||
#main_background {
|
||||
position: absolute;
|
||||
overflow: hidden;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
/*End_background*/
|
28
botanjs/src/Astro/Blog/Layout/TwoColumn.js
Normal file
28
botanjs/src/Astro/Blog/Layout/TwoColumn.js
Normal file
@@ -0,0 +1,28 @@
|
||||
(function(){
|
||||
var ns = __namespace( "Astro.Blog.Layout.TwoColumn" );
|
||||
|
||||
/** @type {Dandelion} */
|
||||
var Dand = __import( "Dandelion" );
|
||||
/** @type {Astro.Bootstrap} */
|
||||
var Bootstrap = __import( "Astro.Bootstrap" );
|
||||
|
||||
var init = function ()
|
||||
{
|
||||
var rspd = Dand.id( "dockright", true );
|
||||
if( rspd )
|
||||
{
|
||||
BotanJS.addEventListener( "Responsive"
|
||||
/** e @type {Astro.Blog.Events.Responsive} */
|
||||
, function( e ) {
|
||||
rspd.foreach(
|
||||
document.ELEMENT_NODE
|
||||
, e.data.ratio < 1
|
||||
? function( elem ) { elem.style.width = "100%"; }
|
||||
: function( elem ) { elem.style.width = ""; }
|
||||
);
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
Bootstrap.regInit( init );
|
||||
})();
|
3
botanjs/src/Astro/Blog/Layout/_this.js
Normal file
3
botanjs/src/Astro/Blog/Layout/_this.js
Normal file
@@ -0,0 +1,3 @@
|
||||
(function(){
|
||||
var ns = __namespace( "Astro.Blog.Layout" );
|
||||
})();
|
Reference in New Issue
Block a user