Example #1
0
 /**
  * Vertical page nav for pages tab in review portal.
  *
  * @param Zend_Db_Table_Rowset_Abstract $pages
  * @param integer $currentPageId
  * @return string
  */
 public static function pageNav($pages, $currentPageId = false, $isAdmin = true)
 {
     $html = Functions_View::HTML_DEFAULT_EMPTY;
     $baseLink = $isAdmin ? '/admin/review-portal' : '/client/review-portal';
     if ($pages && $pages->count()) {
         $html .= '<div style="max-height: 800px; overflow-y: auto; overflow-x: hidden;"><div id="page-thumbnail" class="list-group">';
         foreach ($pages as $_p) {
             $_page = new Object_Page($_p->id);
             $status = Repo_PageStatus::getInstance()->getLabel($_p->portal_page_status);
             $html .= '<a href="' . $baseLink . '/pages/id/' . $_p->portal_id . '/page/' . $_p->id . '" rel="' . $_p->id . '" class="list-group-item' . ($currentPageId == $_p->id ? ' active' : '') . '" title="' . $status . '">';
             $html .= '<img src="' . $_page->getThumbImageLink(false) . '" width="100%" />';
             $html .= '<span class="page name">' . $_p->name . '</span>';
             $icon = "progress";
             if ($status == "In progress") {
                 $icon = "progress";
             } else {
                 if ($status == "Ready for Review") {
                     $icon = "complete";
                 } else {
                     if ($status == "Approved") {
                         $icon = "approved";
                     } else {
                         if ($status == "Unapproved") {
                             $icon = "unapproved";
                         }
                     }
                 }
             }
             $html .= '<div class="page status ' . $icon . '"></div>';
             $html .= '</a>';
         }
         $html .= '</div></div>';
     }
     return $html;
 }
Example #2
0
 /**
  * Generate a page screenshot.
  *
  * @param integer $pageId
  * @return array | false
  */
 protected function _generateScreenshot($pageId)
 {
     $page = new Object_Page($pageId);
     if (!$page->getId()) {
         return false;
     }
     if (!$page->getPreviewLink()) {
         return false;
     }
     $url = $page->getPreviewLink();
     if (!$page->cloud_file_container) {
         $url = Functions_Common::hostUrl() . $url;
     }
     $capturedImage = $this->getAdapter()->setWorkingDir($page->getStaticContentFolder())->capture($url, self::$defaultImageName, array('delay' => self::$defaultDelay));
     return $capturedImage;
 }
 /**
  * Get page info by id.
  *
  * Example requeset: /admin/ajax/page-info
  */
 public function pageInfoAction()
 {
     $ids = $this->_request->getParam('id');
     if (!is_array($ids) || empty($ids)) {
         $this->_responseErrorString = 'Invalid ids';
         $this->_sendAjaxResponse();
     }
     $infos = array();
     foreach ($ids as $_id) {
         // It is the page id that is passed in
         $_pageId = Repo_Page::getInstance()->getIdByPageId($_id);
         $_object = new Object_Page($_pageId);
         if (!$_object->getId()) {
             continue;
         }
         $_info = array('id' => $_id, 'name' => $_object->name, 'description' => $_object->internal_desc ? $_object->internal_desc : '');
         $infos[] = $_info;
     }
     $this->_responseArray = array('pages' => $infos);
     $this->_sendAjaxResponse();
 }
Example #4
0
 /**
  * Generate a page manifest.
  *
  * @param integer $pageId
  * @return array | false
  */
 protected function _generateManifest($pageId)
 {
     $page = new Object_Page($pageId);
     if (!$page->getId()) {
         return false;
     }
     $pageVersion = $page->getMostLatestApprovedVersionAsActive();
     $version = $pageVersion ? $pageVersion->version : false;
     $cloudFileContainer = $pageVersion ? $pageVersion->cloud_file_container : $page->cloud_file_container;
     if ($cloudFileContainer) {
         $files = $page->getCloudFilePaths($version, $cloudFileContainer);
     } else {
         // Get the files
         $files = $this->_folderFilePaths($page->getStaticContentFolder() . DS . $page->page_id, $page->page_id . '.html');
     }
     // Prepare the pdf templates
     $pdfTemplateRows = Repo_PagePdfTemplate::getInstance()->getPagePdfTemplates($page->getId());
     $pdfTemplates = array();
     if ($pdfTemplateRows && $pdfTemplateRows->count()) {
         foreach ($pdfTemplateRows as $_tRow) {
             $_template = new Object_PdfTemplate($_tRow->id);
             $pdfTemplates[] = array('id' => $_template->getId(), 'name' => $_template->name, 'tokens' => $_template->getTokens(), 'preview' => $_template->getManifestPreviewFilePath());
         }
     }
     return array('version' => $pageVersion ? $pageVersion->version : $page->version, 'id' => $page->page_id, 'uid' => $page->id, 'legalPageUid' => (int) $page->legal_page_id > 0 ? (int) $page->legal_page_id : '', 'linkedPageUids' => $page->getManifestPageGroupPages(), 'title' => $page->name, 'fileType' => 'htmlEdge', 'type' => 'html', 'typename' => $page->type, 'baseHost' => $page->getBaseHost($cloudFileContainer), 'baseUri' => $page->getBaseUrl($version), 'hash' => Manager_Page_StaticContent::getPageFolderName($page->page_id, $version), 'instructions' => $page->description ? $page->description : '', 'description' => $page->internal_desc ? $page->internal_desc : '', 'navigation' => array(), 'language' => $page->page_language, 'defaultPath' => $page->page_id . '.html', 'width' => $page->getWidth(), 'height' => $page->getHeight(), 'transcript' => $page->transcript ? $page->transcript : '', 'audio' => $page->audio_url, 'filePaths' => $files, 'navigation' => $page->navigation ? unserialize($page->navigation) : array(), 'content_type' => $page->content_type ? Repo_Page::$contentTypeLabels[$page->content_type] : Repo_Page::$contentTypeLabels[Repo_Page::PAGE_CONTENT_TYPE_DEFAULT], 'editor_behaviors' => $page->editor_behaviors ? $page->editor_behaviors : '', 'pdf_templates' => $pdfTemplates, 'tags' => $page->getTags());
 }
Example #5
0
 /**
  * Generate a review portal pdf.
  *
  * @param integer $portalId
  * @return string The pdf name
  */
 protected function _generatePdf($portalId)
 {
     $portal = new Object_ReviewPortal($portalId);
     if (!$portal->getId()) {
         return false;
     }
     // Get the screenshots of all the portal pages.
     $pages = Repo_ReviewPortalPage::getInstance()->getPortalPages($portalId);
     if (!$pages || $pages->count() == 0) {
         return false;
     }
     $pdf = new Zend_Pdf();
     $pageNumber = 1;
     $font = Zend_Pdf_Font::fontWithName(Zend_Pdf_Font::FONT_HELVETICA);
     $fontSize = 10;
     foreach ($pages as $_p) {
         $_images = array();
         $_page = new Object_Page($_p->id);
         // Try get static screenshots if the setting is set.
         if ($_page->screenshot_type == Repo_Page::SCREENSHOT_TYPE_STATIC) {
             $_images = $_page->getStaticScreenshots(true);
         }
         // Get dynamic one.
         if (empty($_images)) {
             $_images[] = Manager_ScreenCapture_Page::getInstance()->getScreenshot($_p->id);
         }
         foreach ($_images as $_image) {
             $_pdfImage = Zend_Pdf_Image::imageWithPath($_image);
             $_pdfPage = new Zend_Pdf_Page(Zend_Pdf_Page::SIZE_LETTER_LANDSCAPE);
             $_pdfPage->drawImage($_pdfImage, 20, 36, $_pdfPage->getWidth() - 20, $_pdfPage->getHeight() - 20);
             $_pdfPage->setFont($font, 16);
             $_pdfPage->setFillColor(Zend_Pdf_Color_Html::color('#333333'))->drawText($pageNumber, $_pdfPage->getWidth() / 2, 10);
             $pageNumber++;
             $pdf->pages[] = $_pdfPage;
         }
     }
     $pdfName = $portalId . '_' . time() . '.pdf';
     $path = $this->_rootPath . DS . $pdfName;
     $pdf->save($path);
     return $pdfName;
 }
Example #6
0
 /**
  * Generate pages based on the language folder.
  *
  * @param string $folderPath
  * @param string $language
  * @return false array
  */
 protected function _generatePagesForLanguageFolder($folderPath, $language)
 {
     $pages = array();
     $dir = dir($folderPath);
     while (false !== ($entry = $dir->read())) {
         if ($entry == '.' || $entry == '..' || $entry == '.DS_Store') {
             continue;
         }
         // We deal with each page
         $_pageFolder = $folderPath . DS . $entry;
         $_pageId = $entry;
         $_id = (int) Repo_Page::getInstance()->addNew($this->_currentClientId, $_pageId, Repo_Page::PAGE_TYPE_STATIC, Repo_Page::PAGE_STATUS_IN_PROGRESS, '', false, false, false, false, $language, $_pageId, false);
         if (empty($_id)) {
             // OK, we are deal with existing page
             $_id = Repo_Page::getInstance()->clientPageExists($this->_currentClientId, $_pageId, $language);
             $_existingPage = new Object_Page($_id);
             $_existingPage->cloud_file_container = null;
             $_existingPage->version++;
             $_existingPage->save();
         }
         // Copy to a path
         $_pageStorageFolder = $this->getClientFolderPath($this->_currentClientId) . DS . self::getPageFolderName($_pageId);
         if (!file_exists($_pageStorageFolder)) {
             mkdir($_pageStorageFolder, 0777);
         } else {
             // Remove the existing content since we are updating.
             if (file_exists($_pageStorageFolder . DS . $_pageId)) {
                 Functions_File::rrmdir($_pageStorageFolder . DS . $_pageId);
             }
         }
         Functions_File::recurse_copy($_pageFolder, $_pageStorageFolder . DS . $_pageId);
         // Check whether successfully
         if (!file_exists($_pageStorageFolder . DS . $_pageId)) {
             throw new Zend_Exception('Can not copy page content from a zip file: ' . $_pageStorageFolder);
         }
         $pages[] = $_id;
         // In case we upload a thumb image, use it.
         $page = new Object_Page($_id);
         $page->useStaticThumb();
     }
     $dir->close();
     return $pages;
 }
 /**
  * Result detail page: view all results for selected survey/question.
  */
 public function resultDetailAction()
 {
     //if export to excel button was selected
     if ($this->_request->getParam('export')) {
         $this->view->exporting = $this->_request->getParam('export');
         if ($this->_request->getParam('export') == "students") {
             if ($this->_request->getParam('studentprintfields')) {
                 $this->view->studentprintfields = $this->_request->getParam('studentprintfields');
             }
         }
     }
     $id = $this->_request->getParam('id');
     $page = new Object_Page($id);
     $pageId = $page->getId();
     $clientId = $this->_request->getParam('client');
     $fromDate = $toDate = "";
     //if range calendar was changed
     if ($this->_request->isPost()) {
         $fromDate = $this->_request->getParam('input-filter-date-from');
         $toDate = $this->_request->getParam('input-filter-date-to');
         $this->view->currentTab = $this->_request->getParam('current-tab');
     } else {
         $this->view->currentTab = "#averages";
     }
     if (empty($pageId)) {
         // if no page id, may be a survey id
         // $this->_request->getParam('survey');
         // code here if a survey id has been passed
         // No page defined, redirect to result page
         $this->_redirect('/admin/client/result');
         return false;
     } else {
         // ** CE Student Quizzes code ****
         if ($fromDate == "" && $toDate == "") {
             //if no dates were posted, create
             $toDate = date('Y-m-d');
             //add 1 day
             $toDate = date('Y-m-d', strtotime('+1 day', strtotime($toDate)));
             $courseBegin = Repo_UserSurvey::getInstance()->getDateOfFirstQuizCompletion($pageId);
             if ($courseBegin) {
                 if (strtotime($courseBegin) >= strtotime($toDate)) {
                     $courseBegin = date('Y-m-d', strtotime('-1 day', strtotime($courseBegin)));
                 }
             }
             //if no quizzes completed yet, default to one week
             $fromDate = is_null($courseBegin) ? date('Y-m-d', strtotime('-1 week', strtotime($toDate))) : $courseBegin;
         }
         $this->view->quizLayout = true;
         $this->view->dateRange = array($fromDate, $toDate);
         $pageType = Repo_Page::getInstance()->getPageType($pageId);
         $this->view->pageType = $pageType;
         //collect statistics according to page type
         switch ($pageType) {
             case "survey":
                 //Tab 1 data: Totals and averages
                 $quizResultsGeneral = Repo_UserSurvey::getInstance()->getResultsQuizGeneral($pageId, $fromDate, $toDate);
                 $this->view->quizResultsGeneral = $quizResultsGeneral;
                 //Tab 2 data: Question data
                 $quizResultsQuestion = Repo_UserSurvey::getInstance()->getResultsQuizQuestions($pageId, $fromDate, $toDate);
                 $this->view->quizResultsQuestion = $quizResultsQuestion;
                 //Tab 3 data: Student details
                 $quizResultsStudent = Repo_UserSurvey::getInstance()->getStudentQuizProgress($pageId, $fromDate, $toDate);
                 $this->view->quizResultsStudent = $quizResultsStudent;
                 break;
             case "cefeedback":
                 $this->view->currentTab = "#cefeedback";
                 //Get Question Type:
                 $feedbackData = Repo_UserSurvey::getInstance()->getResultsCEFeedback($pageId, $fromDate, $toDate);
                 //Tab 1 data: feedback results
                 $this->view->CEFeedback = $feedbackData[1];
                 $this->view->CEFeedbackRespondents = $feedbackData[0];
                 break;
         }
     }
     if ($clientId > 0) {
         $client = new Object_Client($clientId);
         $this->view->clientName = $client->name;
     }
     $this->view->page = $page;
 }
Example #8
0
 /**
  * Generate pages based on the language folder.
  *
  * @param string $folderPath
  * @param string $language
  * @return false array
  */
 protected function _generatePagesForLanguageFolder($folderPath, $language)
 {
     // Set client id
     Manager_File_Rackspace::getInstance()->setClientId($this->_currentClientId);
     $pages = array();
     $dir = dir($folderPath);
     while (false !== ($entry = $dir->read())) {
         if ($entry == '.' || $entry == '..' || $entry == '.DS_Store') {
             continue;
         }
         // We deal with each page
         $_pageFolder = $folderPath . DS . $entry;
         $_pageId = $entry;
         $_id = (int) Repo_Page::getInstance()->addNew($this->_currentClientId, $_pageId, Repo_Page::PAGE_TYPE_STATIC, Repo_Page::PAGE_STATUS_IN_PROGRESS, '', false, false, false, false, $language, $_pageId, Manager_File_Rackspace::getInstance()->getGeneralContainer());
         if (empty($_id)) {
             // OK, we are deal with existing page
             $_id = Repo_Page::getInstance()->clientPageExists($this->_currentClientId, $_pageId, $language);
             $_existingPage = new Object_Page($_id);
             $_existingPage->version++;
             $_existingPage->cloud_file_container = Manager_File_Rackspace::getInstance()->getGeneralContainer();
             $_existingPage->save();
         }
         // Copy to a path
         $_pageStorageFolder = $this->getClientFolderPath($this->_currentClientId) . self::PS . parent::getPageFolderName($_pageId);
         // Cleanup first
         Manager_File_Rackspace::getInstance()->deletePeudoFolder($_pageStorageFolder);
         // Store
         Functions_File::recurse_copy_cloud($_pageFolder, $_pageStorageFolder . self::PS . $_pageId);
         // Check whether successfully
         $pages[] = $_id;
         // In case we upload a thumb image, use it.
         $page = new Object_Page($_id);
         $page->useStaticThumb();
     }
     $dir->close();
     return $pages;
 }