@@ -0,0 +1,10 @@
+<?php
+class Desktop {
+ public function Index($params){
+ return new View("Desktop/index.view");
+ }
+
+ public function Wake($params){
+ return $output=shell_exec("wakeonlan c8:60:00:16:a8:39");
+}
@@ -0,0 +1,19 @@
+class DesktopNav implements INavigationController{
+ private $_uri;
+ public function __construct() {
+ if (Session::IsUserLoggedIn())
+ $this->_uri=new URI("Desktop","/desktop","/images/desktop.svg");
+ else
+ $this->_uri=null;
+ public function GetItems() {
+ public function GetURI() {
+ return $this->_uri;
@@ -0,0 +1 @@
+INSERT INTO permissions (permission_value,permission_default_grant) VALUES ('desktop/index',1);
@@ -0,0 +1,2 @@
+INSERT INTO permissions (permission_value,permission_default_grant) VALUES ('member/logout',1);
+INSERT INTO permissions (permission_value, permission_default_grant) VALUES ('desktop/wake', 1);
@@ -60,10 +60,9 @@ class BlogPost extends DBObject {
$previewLength=ApplicationSettings::GetSetting("blog", "preview_length");
$content=$this->PostContent;
if ($previewLength<strlen($content)){
- $pTagPos=strpos($content,"\n",$previewLength);
- $content=substr($content, 0, $pTagPos);
+ $newlinePos=strpos($content,"\n",$previewLength);
+ $content=substr($content, 0, $newlinePos);
}
- $content=Utils::CloseOpenTags($content);
return $content;
@@ -3,6 +3,8 @@ define("TAG_PROCESSOR_PATH","Model/TagProcessors/");
include(TAG_PROCESSOR_PATH."ITagProcessor.php");
class PostFormatter{
+ public static $TAG_MATCH_REGEX='@\[([a-z]*) ?(.*?)(\](.*?)\[)?/\1?\]@ms';
private static $_content=array();
private static $_randomIndexModifier="";
@@ -51,7 +53,7 @@ class PostFormatter{
private static function GetProcessedString($string){
- return preg_replace_callback('@\[([a-z]*) ?(.*?)(\](.*?)\[)?/\1?\]@ms',"self::ProcessTag", $string);
+ return preg_replace_callback(self::$TAG_MATCH_REGEX,"self::ProcessTag", $string);
private static function PopulateString($matches){
@@ -93,4 +95,11 @@ class PostFormatter{
$returnStr=self::ProcessPopulateString($returnStr);
return $returnStr;
+ public static function CloseOpenTag($str){
+ $matches=array();
+ preg_match_all('@.*\[([a-z]*) ?.*?\]@ms', $str, $matches);
+ $closeTag='[/'.$matches[1][0].']';
+ return $str.PHP_EOL.'...'.PHP_EOL.$closeTag;
@@ -4,17 +4,24 @@ namespace Tags;
include('lib/geshi/geshi.php');
class code implements ITagProcessor {
+ private static $LANGUAGE_ALIASES=array(
+ "c#"=>"csharp",
+ "html"=>"html5"
+ );
public static function Process($args, $content) {
if (!isset($args['lang']))
- if ($args['lang']=="c#")
- $args['lang']="csharp";
+ if (isset(self::$LANGUAGE_ALIASES[$args['lang']]))
+ $args['lang']=self::$LANGUAGE_ALIASES[$args['lang']];
if (!isset($args['lineStyle']))
$args['lineStyle']=GESHI_FANCY_LINE_NUMBERS;
else
$args['lineStyle']=(int)$args['lineStyle'];
+ $content=str_replace("\t", " ", $content);
$geshi=new \GeSHi(trim($content),$args['lang']);
$geshi->enable_line_numbers($args['lineStyle']);
@@ -1,6 +1,6 @@
@Title{Blog}@
@CSS{
- @import "/css/blog.css";
+ <?= file_get_contents("css/blog.css") ?>
}@
@ButtonsLeft{
<?php if ($page>1){?>
@Body{
<?=PostFormatter::FormatToHTML($content)?>
@@ -0,0 +1,33 @@
+@Title{Desktop}@
+@JavaScript{
+ function formSuccess(data){
+ $("#wakeSuccess").html(data);
+ $("#wakeSuccess").show();
+}@
+@Body{
+<div class="row col-lg-2">
+ <div class="col">
+ <h2>Wake Desktop</h2>
+ <form ajaxForm action="/desktop/wake" method="post" style="text-align: center" onsuccess="formSuccess" onerror="asdasd">
+ <button type="submit" name="wake" title="Send wake command">
+ <img src="/images/power.svg" width="128" alt="Wake" />
+ </button>
+ <div id="wakeSuccess" style="display:none"></div>
+ </form>
+ </div>
+ <h2>Browse Files</h2>
+</div>
+ <h2>Desktop Hardware Monitor</h2>
+ <div id="sensors"><img src="/loading.gif" /></div>
+ <h2>Screenshot</h2>
+ <img id="screenshot" src="/loading.gif" />
@@ -1,5 +1,7 @@
@Title{Home}@
h3 a {
color:inherit;
@@ -11,7 +13,7 @@
<hr />
<h2>Latest Blog Post</h2>
<h3><a href="/blog/view/<?=$post->PostUrl?>"><?=$post->PostTitle?></a></h3>
-<?=PostFormatter::FormatToHTML($post->GetPostPreview())?>
+<?=PostFormatter::FormatToHTML(PostFormatter::CloseOpenTag($post->GetPostPreview()))?>
<small>Posted on <?=date("l \\t\h\\e jS \of F Y",strtotime($post->PostTimestamp))?></small>
<p><a href="/blog/view/<?=$post->PostUrl?>">Read more...</a></p>
@@ -1,11 +1,5 @@
@Title{Member Area}@
-@CSS{
- .form{
- float:left;
- width:50%;
- box-sizing:border-box;
- }
-
+@CSS{
.form:not(:last-child){
padding-right:5px
@@ -22,12 +16,6 @@
width:100%;
-@CSSSmall{
- width:100%;
- padding:0 !important;
-}@
<?php
if (!isset($loginEmail))
@@ -35,44 +23,46 @@
if (!isset($registerEmail))
$registerEmail="";
?>
-<div class="form">
- <h2>Log In</h2>
- <?= Utils::TableMaker(
- array(
+ <div class="col form">
+ <h2>Log In</h2>
+ <?= Utils::TableMaker(
array(
- "display"=>"Email",
- "name"=>"email",
- "type"=>"email",
- "value"=>$loginEmail
+ array(
+ "display"=>"Email",
+ "name"=>"email",
+ "type"=>"email",
+ "value"=>$loginEmail
+ ),
+ "display"=>"Password",
+ "name"=>"password",
+ "type"=>"password"
+ )
),
+ '<img src="/images/member.svg" alt="Log In" title="Log In" />',
+ "/member/login"
+ ); ?>
+ <h2>Register</h2>
- "display"=>"Password",
- "name"=>"password",
- "type"=>"password"
- )
- ),
- '<img src="/images/member.svg" alt="Log In" title="Log In" />',
- "/member/login"
- ); ?>
-</div>
- <h2>Register</h2>
- "value"=>$registerEmail
+ "value"=>$registerEmail
- '<img src="/images/register.svg" alt="Register" title="Register" />',
- "/member/register"
+ '<img src="/images/register.svg" alt="Register" title="Register" />',
+ "/member/register"
</div>
@@ -1,5 +1,6 @@
.code{
- border:2px solid #bdbdbd;
+ border:1px solid #bdbdbd;
+ border-radius:4px;
padding:5px;
margin:0;
overflow:auto;
@@ -20,4 +20,29 @@
#buttons button{
width:60px;
height:60px;
+.row>.col {
+ width:100%;
+ float:left;
+.row.col-lg-1>.col, .row.col-lg-2>.col, .row.col-lg-3>.col, .row.col-lg-4>.col{
+ width: 100%;
+.row.col-md-1>.col{
+.row.col-md-2>.col{
+ width:50%;
+.row.col-md-3>.col{
+ width:33.3333%;
+.row.col-md-4>.col{
+ width:25%;
@@ -30,4 +30,29 @@ dl{
.header span:not(:first-child):before{
content:none;
+.row.col-md-1>.col, .row.col-md-2>.col, .row.col-md-3>.col, .row.col-md-4>.col{
+.row.col-sm-1>.col{
+.row.col-sm-2>.col{
+.row.col-sm-3>.col{
+.row.col-sm-4>.col{
@@ -308,4 +308,30 @@ td, th{
.errors ul{
margin: 0;
list-style: square;
+.row{
+ clear:both;
+.row.col-lg-1>.col{
+.row.col-lg-2>.col{
+.row.col-lg-3>.col{
+.row.col-lg-4>.col{
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="24px" height="24px" viewBox="0 0 24 24" enable-background="new 0 0 24 24" xml:space="preserve">
+<path fill="none" d="M0,0h24v24H0V0z"/>
+<path fill="#546E7A" d="M23,4v12c0,1.1-0.9,2-2,2h-7v2h2v2H8v-2h2v-2H3c-1.1,0-2-0.9-2-2V4c0-1.1,0.9-2,2-2h18C22.1,2,23,2.9,23,4z"
+ />
+<rect x="3" y="4" fill="#B3E5FC" width="18" height="12"/>
+<rect x="10" y="17.98" fill="#455A64" width="4" height="2.02"/>
+</svg>
+<rect x="11" y="2" fill="#64B5F6" width="2" height="10"/>
+<path fill="#42A5F5" d="M16.561,4.44l-1.451,1.45C16.84,6.94,18,8.83,18,11c0,3.311-2.689,6-6,6c-3.31,0-6-2.689-6-6
+ c0-2.17,1.16-4.06,2.88-5.12L7.44,4.44C5.36,5.88,4,8.28,4,11c0,4.42,3.58,8,8,8s8-3.58,8-8C20,8.28,18.641,5.88,16.561,4.44z"/>
@@ -66,6 +66,24 @@ $(function(){
$("#menu").hide("slide", {direction: "left", easing:'easeInCirc'});
$("body>.backdrop").fadeOut();
});
+ $("form[ajaxForm]").submit(function(e){
+ e.preventDefault();
+ form=$(this);
+ $.ajax({
+ url:form.attr("action"),
+ success:function(data){
+ var successFunction=form.attr("onsuccess");
+ if (successFunction!==undefined && window[successFunction]!==undefined)
+ window[successFunction](data);
+ },
+ error:function(){
+ var errorFunction=form.attr("onerror");
+ if (errorFunction!==undefined && window[errorFunction]!==undefined)
+ window[errorFunction]();
+ });
@@ -3652,12 +3652,12 @@ class GeSHi {
// Replace <|UR1| with <a href= for urls also
if (isset($this->link_styles[GESHI_LINK])) {
if ($this->use_classes) {
- $stuff_to_parse = str_replace('<|UR1|', '<a' . $this->link_target . ' href=', $stuff_to_parse);
+ $stuff_to_parse = str_replace('<|UR1|', '<a target="_blank"' . $this->link_target . ' href=', $stuff_to_parse);
} else {
- $stuff_to_parse = str_replace('<|UR1|', '<a' . $this->link_target . ' style="' . $this->link_styles[GESHI_LINK] . '" href=', $stuff_to_parse);
+ $stuff_to_parse = str_replace('<|UR1|', '<a target="_blank"' . $this->link_target . ' style="' . $this->link_styles[GESHI_LINK] . '" href=', $stuff_to_parse);
//
@@ -165,7 +165,7 @@ $language_data = array (
)
'URLS' => array(
- 2 => 'http://december.com/html/4/element/{FNAMEL}.html',
+ 2 => 'http://www.w3schools.com/tags/tag_{FNAMEL}.asp',
3 => ''
'OOLANG' => false,
@@ -11,7 +11,7 @@ database=robware-test
[navigation]
mode=include
-pages=HomeNav,BlogNav,ProjectsNav,GalleryNav,MemberNav
+pages=HomeNav,BlogNav,ProjectsNav,GalleryNav,DesktopNav,MemberNav
[blog]
posts_per_page=10
@@ -20,21 +20,23 @@ function FormatURI(URI $uri, $base=""){
</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"/>
- <link href="/css/style.css" rel="stylesheet" type="text/css" />
- <link href="/css/style-med.css" rel="stylesheet" media="(max-width:1023px)" type="text/css" />
- <link href="/css/style-small.css" rel="stylesheet" media="(max-width:680px)" type="text/css" />
<style type="text/css">
+ <?= file_get_contents("css/style.css")?>
{@CSS}
</style>
<style media="(max-width:1023px)">
+ <?= file_get_contents("css/style-med.css")?>
{@CSSMed}
<style media="(max-width:680px)">
+ <?= file_get_contents("css/style-small.css")?>
{@CSSSmall}
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script>
- <script src="/javascript.js"></script>
+ <script>
+ <?= file_get_contents("javascript.js"); ?>
+ </script>
<script type="text/javascript">
{@JavaScript}
</script>
@@ -67,6 +69,9 @@ function FormatURI(URI $uri, $base=""){
$__controllers=Navigation::Get();
foreach ($__controllers as $controller){
$cURI=$controller->GetURI();
+ if ($cURI==null)
+ continue;
echo '<dt';
if ($cURI->GetLinkLocation()=='/'.$uriParts[0])
echo ' class="active"';