示例#1
0
 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\">&#8592;</a>\n\t\t<a href=\"#\" class=\"deck-next-link\" title=\"Next\">&#8594;</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);
 }
示例#2
0
 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();
 }
示例#3
0
 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);
         }
     }
 }
示例#4
0
 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);
 }
示例#5
0
 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 ';
     }
 }
示例#6
0
 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;
 }
示例#7
0
文件: User.php 项目: TBoonX/SlideWiki
 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;
 }
示例#8
0
文件: Deck.php 项目: TBoonX/SlideWiki
 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;
 }
示例#9
0
 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>';
 }
示例#10
0
 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);
 }