function toHTML() { $deck_id = $_GET['deck_id']; $deck = new Deck(); $deck->createFromID($deck_id); $slides = $deck->getSlidesFull(); $slides_to_string = array(); $image_local_path = array(); $image_name = array(); $image_paths = array(); $slides_to_string = $this->createSlideString($deck_id); foreach ($slides as $slide) { $img_pattern = '/\\.\\/upload\\/media\\/images\\/\\d+\\/\\d+\\..../'; preg_match_all($img_pattern, $slide->content, $matches); if (count($matches[0])) { foreach ($matches[0] as $img_path) { $image_paths[] = $img_path; } } } $html = " \n\t\t<!DOCTYPE html>\n\t\t<!--[if lt IE 7]> <html class=\"no-js ie6\" lang=\"en\"> <![endif]-->\n\t\t<!--[if IE 7]> <html class=\"no-js ie7\" lang=\"en\"> <![endif]-->\n\t\t<!--[if IE 8]> <html class=\"no-js ie8\" lang=\"en\"> <![endif]-->\n\t\t<!--[if gt IE 8]><!--> <html class=\"no-js\" lang=\"en\"> <!--<![endif]-->\n\t\t<head>\n\t\t\t<meta charset=\"utf-8\">\n\t\t\t<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\">\n\n\t\t\t<title>" . $deck->title . "</title>\n\n\t\t\t<meta name=\"author\" content=" . $deck->owner->username . ">\n\t\t\t<meta name=\"deck_id\" content=" . $deck->deck_id . ">\n\t\t\t<meta name=\"deck_revision_id\" content=" . $deck->id . ">\n\t\t\t<meta name=\"viewport\" content=\"width=1024, user-scalable=no\">\n\n\t\t\t<!-- Core and extension CSS files -->\n\t\t\t<link rel=\"stylesheet\" href=\"deck.js/core/deck.core.css\">\n\t\t\t<link rel=\"stylesheet\" href=\"deck.js/extensions/goto/deck.goto.css\">\n\t\t\t<link rel=\"stylesheet\" href=\"deck.js/extensions/menu/deck.menu.css\">\n\t\t\t<link rel=\"stylesheet\" href=\"deck.js/extensions/navigation/deck.navigation.css\">\n\t\t\t<link rel=\"stylesheet\" href=\"deck.js/extensions/status/deck.status.css\">\n\t\t\t<link rel=\"stylesheet\" href=\"deck.js/extensions/hash/deck.hash.css\">\n\n\t\t\t<!-- Theme CSS files (menu swaps these out) -->\n\t\t\t<link rel=\"stylesheet\" id=\"style-theme-link\" href=\"default_theme/default.css\">\n\t\t\t<link rel=\"stylesheet\" id=\"transition-theme-link\" href=\"deck.js/themes/transition/horizontal-slide.css\">\n\n\t\t\t<!-- Custom CSS just for this page -->\n\t\t\t<link rel=\"stylesheet\" href=\"deck.js/introduction/introduction.css\">\n\t\t\t<link rel=\"stylesheet\" href=\"local.css\">\n\n\t\t\t<script src=\"deck.js/modernizr.custom.js\"></script>\n\t\t\t<script src=\"deck.js/jquery.js\"></script>\n\n\t\t\t<!-- client syntax highlightning -->\n\t\t\t<link href=\"deck.js/syntax/shThemeDefault.css\" rel=\"stylesheet\" type=\"text/css\" />\n\t\t\t<script src=\"deck.js/syntax/shCore.js\" type=\"text/javascript\"></script>\n\t\t\t<script src=\"deck.js/syntax/shAutoloader.js\" type=\"text/javascript\"></script>\n\t\t\t<script src=\"deck.js/syntax/shBrushTurtle.js\" type=\"text/javascript\"></script>\n\t\t\t<script type=\"text/javascript\" src=\"deck.js/MathJax.js\"></script>\n\n<script type=\"text/javascript\">\n\t\t\tfunction htmlDecode(input){\n\t\t\t\t var e = document.createElement(\"div\");\n\t\t\t\t e.innerHTML = input;\n\t\t\t\t return e.childNodes.length === 0 ? \"\" : e.childNodes[0].nodeValue;\n\t\t\t}\n\t\t\tfunction removeBRs(input){\n\t\t\t\tvar r=input.replace(/<br>/gi,\"\"); \n\t\t\t\tr=r.replace(/<br[0-9a-zA-Z]+>/gi,\"\");\n\t\t\t\treturn r;\n\t\t\t}\n\t\t\t\tSyntaxHighlighter.defaults['toolbar'] = false;\n\t\t\t\tSyntaxHighlighter.all();\n\t\t\t\t</script>\n\t\t\t<script type=\"text/x-mathjax-config\">\n\t\t\t\$(function() {\n\t\t\t MathJax.Hub.Config({\n\t\t\t\t\tskipStartupTypeset: true,\n\t\t\t\t\textensions: [\"tex2jax.js\"],\n\t\t\t\t\tjax: [\"input/TeX\", \"output/HTML-CSS\"],\n\t\t\t\t\ttex2jax: {\n\t\t\t\t\tinlineMath: [ ['\$','\$'], [\"\\(\",\"\\)\"] ],\n\t\t\t\t\tdisplayMath: [ ['\$\$','\$\$'], [\"\\[\",\"\\]\"] ],\n\t\t\t\t\tprocessEscapes: true\n\t\t\t\t\t},\n\t\t\t\t\t\"HTML-CSS\": { availableFonts: [\"TeX\"] }\n\t\t\t });\n\t\t\t\t\$.deck('.slide');\n\t\t\t\tMathJax.Hub.Queue([\"Typeset\",MathJax.Hub,'slide-area']);\n\t\t\t\t});\n\t\t\t\t</script>\t\t\t\n\t\t</head>\t\t\n\t\t\n\t\t<body class=\"deck-container\">\n\n\t\t\t<div class=\"theme-menu\">\n\t\t\t\t<h2>Themes</h2>\n\n\t\t\t\t<label for=\"style-themes\">Style:</label>\n\t\t\t\t<select id=\"style-themes\">\n\t\t\t\t\t<option selected value=\"default_theme/default.css\">Default</option>\n\t\t\t\t\t<option value=\"deck.js/themes/style/web-2.0.css\">Web 2.0</option>\n\t\t\t\t\t<option value=\"deck.js/themes/style/swiss.css\">Swiss</option>\n\t\t\t\t\t<option value=\"deck.js/themes/style/neon.css\">Neon</option>\n\t\t\t\t\t<option value=\"\">None</option>\n\t\t\t\t</select>\n\n\t\t\t\t<label for=\"transition-themes\">Transition:</label>\n\t\t\t\t<select id=\"transition-themes\">\n\t\t\t\t\t<option selected value=\"deck.js/themes/transition/horizontal-slide.css\">Horizontal Slide</option>\n\t\t\t\t\t<option value=\"deck.js/themes/transition/vertical-slide.css\">Vertical Slide</option>\n\t\t\t\t\t<option value=\"deck.js/themes/transition/fade.css\">Fade</option>\n\t\t\t\t\t<option value=\"\">None</option>\n\t\t\t\t</select>\n\t\t\t</div>" . $slides_to_string . "</div>\n\t\t\t</div>\n\t\t</div>\n\t\t\n\t\t<a href=\"#\" class=\"deck-prev-link\" title=\"Previous\">←</a>\n\t\t<a href=\"#\" class=\"deck-next-link\" title=\"Next\">→</a>\n\n\t\t<p class=\"deck-status\">\n\t\t\t<span class=\"deck-status-current\"></span>\n\t\t\t/\n\t\t\t<span class=\"deck-status-total\"></span>\n\t\t</p>\n\n\t\t<form action=\".\" method=\"get\" class=\"goto-form\">\n\t\t\t<label for=\"goto-slide\">Go to slide:</label>\n\t\t\t<input type=\"number\" name=\"slidenum\" id=\"goto-slide\">\n\t\t\t<input type=\"submit\" value=\"Go\">\n\t\t</form>\n\n\t\t<a href=\".\" title=\"Permalink to this slide\" class=\"deck-permalink\">#</a>\n\n\n\t\t<!-- Deck Core and extensions -->\n\t\t<script src=\"deck.js/core/deck.core.js\"></script>\n\t\t<script src=\"deck.js/extensions/menu/deck.menu.js\"></script>\n\t\t<script src=\"deck.js/extensions/goto/deck.goto.js\"></script>\n\t\t<script src=\"deck.js/extensions/status/deck.status.js\"></script>\n\t\t<script src=\"deck.js/extensions/navigation/deck.navigation.js\"></script>\n\t\t<script src=\"deck.js/extensions/hash/deck.hash.js\"></script>\n\t\t<!-- Specific to this page -->\n\t\t<script src=\"deck.js/introduction/introduction.js\"></script>\n\t\t<!-- Code Mirror -->\n\t\t<link rel=\"stylesheet\" href=\"codemirror/lib/codemirror.css\">\n\t\t<script src=\"codemirror/lib/codemirror.js\"></script>\n\t\t<script src=\"codemirror/mode/javascript/javascript.js\"></script>\n\t\t<script src=\"codemirror/mode/xml/xml.js\"></script>\n\t\t<script src=\"codemirror/mode/htmlmixed/htmlmixed.js\"></script>\n\t\t<script src=\"codemirror/mode/css/css.js\"></script>\n\t\t<script src=\"codemirror/mode/php/php.js\"></script>\n\t\t<script src=\"codemirror/mode/ntriples/ntriples.js\"></script>\n\t\t<script src=\"codemirror/mode/sparql/sparql.js\"></script>\n\t\t<script src=\"codemirror/lib/util/formatting.js\"></script>\n\t\t<!-- Code Mirror for deck.js -->\n\t\t<link rel=\"stylesheet\" href=\"deck.js/extensions/codemirror/deck.codemirror.css\">\n\t\t<script src=\"deck.js/extensions/codemirror/deck.codemirror.js\"></script>\n\t\t</body>\n\t\t</html>"; $zipName = "archive.zip"; $libraries_folder = 'deck.js' . DS; $createZipFile = new createDirZip(); $createZipFile->get_files_from_folder(ROOT . DS . 'libraries' . DS . 'frontend' . DS . 'deck.js' . DS, $libraries_folder); $fileToZip = "index.html"; $createZipFile->addFile($html, $fileToZip); $fileContents = file_get_contents(ROOT . DS . "libraries" . DS . "frontend" . DS . "MathJax" . DS . "MathJax.js"); $fileToZip = $libraries_folder . "MathJax.js"; $createZipFile->addFile($fileContents, $fileToZip); $fileContents = file_get_contents(ROOT . DS . "libraries" . DS . "frontend" . DS . "jquery.js"); $fileToZip = $libraries_folder . "jquery.js"; $createZipFile->addFile($fileContents, $fileToZip); $fileContents = file_get_contents(ROOT . DS . "libraries" . DS . "frontend" . DS . "jquery.min.js"); $fileToZip = $libraries_folder . "jquery.min.js"; $createZipFile->addFile($fileContents, $fileToZip); $createZipFile->get_files_from_folder(ROOT . DS . 'libraries' . DS . 'frontend' . DS . 'codemirror' . DS, 'codemirror' . DS); // adding images foreach ($image_paths as $im) { $fileContents = file_get_contents($im); $fileToZip = split('\\/', $im); $fileToZip = $fileToZip[count($fileToZip) - 1]; $createZipFile->addFile($fileContents, $fileToZip); } //add default theme $style = new Style(); $tmp = $style->getStyle($deck->default_theme); $createZipFile->addFile($tmp['css'], 'default_theme/default.css'); $date = date('Y-m-d'); $zipName = $this->sluggify($deck->title) . '_' . $date . "_" . $zipName; $fd = fopen($zipName, "wb"); $out = fwrite($fd, $createZipFile->getZippedfile()); fclose($fd); $createZipFile->forceDownload($zipName); @unlink($zipName); }
function create($deck_id, $format) { $deck = new Deck(); $deck->createFromID($deck_id); $this->deck_id = $deck_id; $this->deck = $deck; $this->title = $deck->title; $this->root_deck_name = $this->sluggify($this->title); $this->deck_name = $this->sluggify($this->title); mkdir(ROOT . DS . 'tmp' . DS . $this->root_deck_name); $this->format = $format; $this->resources = $this->createResources($this->resources, $deck); $this->createManifest(); //$this->createCourseMetadata(); }
function __construct() { $this->initConnection(); $tasks = $this->dbquery('SELECT * FROM translation_cronjobs'); //print_r($tasks); foreach ($tasks as $task) { $id = $task['revision_id']; $language = $task['to_language']; $old_deck = new Deck(); $old_deck->createFromID($id); $new_deck = new Deck(); $new_deck->createFromID($task['future_deck']); $new_deck->translation_status = 'translated'; $new_deck->content = $old_deck->content; if ($new_deck->translate_parent($language)) { $old_deck->removeFromQueue($id, $language); } } }
function builder4impress() { $this->_template->disableHeader(); $this->_template->disableFooter(); $deck_id = isset($_GET['deck']) ? $_GET['deck'] : 0; $deck = new Deck(); $slides = array(); if ($deck_id) { $deck->createFromID($deck_id); $slides = $deck->getSlides(); $_SESSION['deck'] = $deck_id; } $user_id = $this->_user['id']; if ($user_id) { $_SESSION['user'] = $user_id; } $this->set('deckObject', $deck); $this->set('slides', $slides); }
function __construct() { $this->initConnection(); $decks = $this->dbquery('SELECT * FROM deck WHERE language IS NULL OR language="" OR language="-"'); echo 'decks:' . count($decks); foreach ($decks as $task) { $deck = new Deck(); $deck->deck_id = $task['id']; $deck->createFromID($deck->getLastRevisionID()); $language = $deck->detectLanguage(); $deck->setLanguageFull($language); } $slides = $this->dbquery('SELECT * FROM slide WHERE language IS NULL OR language="" OR language="-"'); echo 'slides:' . count($slides); $decks = array(); foreach ($slides as $task) { $slide = new Slide(); $slide->slide_id = $task['id']; $id = $slide->getLastRevisionID(); $decks_array = $this->dbGetOne('SELECT deck_revision_id FROM deck_content WHERE item_id =:id AND item_type="slide" LIMIT 1', array('id' => $id)); if ($decks_array) { if (!in_array($decks_array, $decks)) { $decks[] = $decks_array; } } } echo 'decks:' . count($decks) . '<br>'; foreach ($decks as $task) { echo $task; $deck = new Deck(); $deck->createFromID($task); $language = $deck->detectLanguage(); $deck->setLanguageFull($language); echo ' done '; } }
public function getUsage() { $res = array(); $query = $this->dbQuery('SELECT deck_content.item_id, deck_content.deck_revision_id FROM deck_content WHERE item_type="slide" AND item_id = :item_id', array('item_id' => $this->id)); # deck_revision.id - revision id of the deck # deck_revision.user_id - owner of this deck revision # deck_revision.title - title of this deck revision # users.username - username of the owner /*$this->dbQuery ( 'SELECT deck_revision.id, deck_revision.title, deck_revision.user_id, users.username FROM deck_content INNER JOIN deck_revision ON(deck_revision_id=deck_revision.id) INNER JOIN users ON(deck_revision.user_id=users.id) WHERE item_type="slide" AND item_id=' . $this->id . ' GROUP BY deck_revision.id ORDER BY deck_revision.timestamp DESC' );*/ foreach ($query as $row) { $deck = new Deck(); $deck->createFromID($row['deck_revision_id']); array_push($res, $deck); } if (empty($res)) { $res = "Not used!"; } return $res; }
public function getSubscribedDecks($page) { $extent = $this->feed_page_size; $offset = $page * $extent; $res = array(); foreach ($this->dbQuery('SELECT * FROM subscription WHERE item_type="deck" AND user_id=' . $this->id . ' LIMIT ' . $offset . ',' . $extent) as $row) { $deck = new Deck(); $deck->deck_id = $row['item_id']; $last = $deck->getLastRevisionID(); $deck->createFromID($last); $res[] = $deck; } return $res; }
public function fetchDeckContent() { $this->initConnection(); $deck = null; $slide = null; $res = array(); // get content $deckContent = $this->dbQuery('SELECT * FROM deck_content WHERE deck_revision_id=:id ORDER BY position', array('id' => $this->id)); /*if (! $deckContent) die ( "error querying db for deck content: " . mysql_error () );*/ // parse content foreach ($deckContent as $item) { // if it's deck if ($item['item_type'] == 'deck') { $deck = new Deck(); $deck->createFromID($item['item_id']); $deck->position = $item['position']; $res[] = $deck; } else { $slide = new Slide(); $slide->createFromID($item['item_id']); $slide->position = $item['position']; $slide->deck = new Deck(); $slide->deck->id = $item['deck_revision_id']; $slide->deck->title = $slide->deck->getTitle(); $slide->deck->slug_title = $slide->sluggify($slide->deck->title); $res[] = $slide; } } return $res; }
public function slideBuilding($order, $slideSet, $page) { $this->pager($order, 'slide', count($slideSet)); $position = 1; $prevSlide = $slideSet[0]['slide'] - 1; //`slide` of the first element-1 $k = 0; //counter for numeration $slidesToShow = array(); echo '<ul class="deckOverviewList">'; echo '<li class="deckOverviewItem">'; echo '<div class="deck-menu deck-container" >'; for ($i = 0; $i < count($slideSet); $i++) { $r = $slideSet[$i]; if ($r['slide'] == $prevSlide) { $position++; } else { $position = 1; } if ($position == 1) { $slidesToShow[] = $r; } } $first = ($page - 1) * $this::slides_per_page; for ($index = $first; $index < $first + $this::slides_per_page && $index < count($slidesToShow); $index++) { $r = $slidesToShow[$index]; $slide = new Slide(); $slide->createFromID($r['id']); $slides[] = $slide; } foreach ($slides as $r) { $title = $r->getTitle(); $deck_obj = $r->getLastDeck($r->id); $deck_id = $deck_obj->id; $deck = new Deck(); $deck->createFromID($deck_id); $k++; //numeration /*if (strlen($title)>10) { $title=substr($title,0,10).'...'; } */ echo '<div class="slide" style = "font-size:0.22em; height: 65px; padding: 5px 1%; margin: 0 1% 5px 0; position: relative;">'; echo '<a href="./?url=main/deck&deck=' . $deck->id . '#tree-' . $r->deck . '-slide-' . $r->id . '-' . $r->position . '-view">'; echo $r->getThumbnailContent(); echo '</a>'; echo '</div>'; echo '<div class="addButton" style="display:none; float:left; font-size:10pt"><input type="button" id="' . $r->id . '" name="add' . $r->id . '" value="Add" onclick="appendItemById(\'' . $title . '\',this.id)"></div>'; $prevSlide = $r->slide_id; } echo '</ul>'; echo '</div>'; }
function item() { $item_id = $_GET['id']; $item_type = $_GET['type']; $item_user = @$_GET['user']; $redirect_link = ""; $hash = ""; switch ($item_type) { case 'slide': $slide = new Slide(); $slide->createFromID($item_id); if (isset($item_user)) { $last_revision = $slide->getLastRevisionID($item_user); } else { $last_revision = $slide->last_revision_id; } $slide2 = new Slide(); $slide2->createFromID($last_revision); $slide_usage = $slide2->getUsage(); if (is_array($slide_usage) && count($slide_usage) == 1) { $hash = 'tree-' . $slide_usage[0]->id . '-slide-' . $slide2->id . '-' . $slide2->getPosition() . '-view'; $parent_deck = $slide2->getLastOuterParent($slide_usage[0]->id); $deck = new Deck(); $deck->id = $parent_deck; $deck->title = $deck->getTitle(); $deck->slug_title = $deck->sluggify($deck->title); $redirect_link = BASE_PATH . 'deck/' . $parent_deck . '_' . $deck->slug_title . '#' . $hash; } else { $redirect_link = BASE_PATH . 'slide/' . $last_revision; } break; case 'deck': $deck = new Deck(); $deck->createFromID($item_id); if (isset($item_user)) { $last_revision = $deck->getLastRevisionID($item_user); } else { $last_revision = $deck->last_revision_id; } $deck_for_title = new Deck(); $deck_for_title->id = $last_revision; $deck_for_title->title = $deck_for_title->getTitle(); $deck_for_title->slug_title = $deck_for_title->sluggify($deck->title); $deck2 = new Deck(); $deck2->createFromID($last_revision); $deck_usage = $deck2->getUsage(); if (is_array($deck_usage) && count($deck_usage) == 1) { $hash = 'tree-' . $deck_usage[0]->id . '-deck-' . $deck2->id . '-' . $deck2->getPosition() . '-view'; $parent_deck = $deck2->getLastOuterParent($deck_usage[0]->id); $deck_for_title = new Deck(); $deck_for_title->id = $parent_deck; $deck_for_title->title = $deck->getTitle(); $deck_for_title->slug_title = $deck->sluggify($deck->title); $redirect_link = BASE_PATH . 'deck/' . $parent_deck . '_' . $deck_for_title->slug_title . '#' . $hash; } else { $redirect_link = BASE_PATH . 'deck/' . $last_revision . '_' . $deck_for_title->slug_title; } break; } header('Location: ' . $redirect_link); }