4 include_once(
'./Services/Object/classes/class.ilObject2GUI.php');
5 include_once(
'./Modules/Portfolio/classes/class.ilObjPortfolio.php');
6 include_once(
'./Modules/Portfolio/classes/class.ilPortfolioPage.php');
49 public function __construct($a_id = 0, $a_id_type = self::REPOSITORY_NODE_ID, $a_parent_node_id = 0)
53 $this->
user = $DIC->user();
54 $this->locator = $DIC[
"ilLocator"];
55 $this->toolbar = $DIC->toolbar();
57 $this->tree = $DIC->repositoryTree();
58 $this->help = $DIC[
"ilHelp"];
59 $this->main_menu = $DIC[
"ilMainMenu"];
60 $this->tpl = $DIC[
"tpl"];
63 parent::__construct($a_id, $a_id_type, $a_parent_node_id);
65 $this->user_id =
$ilUser->getId();
67 $this->lng->loadLanguageModule(
"prtf");
68 $this->lng->loadLanguageModule(
"user");
69 $this->lng->loadLanguageModule(
"obj");
71 $this->requested_ppage = (int) $_REQUEST[
"ppage"];
72 $this->requested_user_page = (int) $_REQUEST[
"user_page"];
75 $back = str_replace(
"&",
":::", $_REQUEST[
"back_url"]);
77 "/[^a-zA-Z0-9_\.\?=:\s]/",
81 $this->requested_back_url = str_replace(
":::",
"&", $back);
83 $this->ctrl->setParameterbyClass(
"ilobjportfoliogui",
"back_url", rawurlencode($this->requested_back_url));
92 strip_tags($this->object->getTitle()),
93 $this->ctrl->getLinkTarget($this,
"view")
99 $title = $page->getTitle();
106 $this->ctrl->getLinkTargetByClass($this->getPageGUIClassName(),
"edit")
114 if ($this->requested_ppage > 0) {
116 $this->ctrl->redirect($this,
"view");
120 $this->page_mode =
"edit";
121 $this->ctrl->setParameter($this,
"ppage", $this->page_id);
127 $this->page_mode =
"preview";
128 $this->ctrl->setParameter($this,
"user_page", $this->page_id);
135 $this->tabs_gui->clearTargets();
136 $this->tabs_gui->setBackTarget(
137 $this->lng->txt(
"back"),
138 $this->ctrl->getLinkTarget($this,
"view")
141 if (!$this->page_id) {
142 $this->ctrl->redirect($this,
"view");
149 $this->object->getStyleSheetId(),
153 $ret = $this->ctrl->forwardCommand($page_gui);
157 if ($this->page_mode ==
"preview") {
161 $this->
preview(
false,
$ret, ($a_cmd !=
"previewEmbedded"));
169 if (is_string(
$ret)) {
170 $this->tpl->setContent(
$ret);
183 $this->additional = $a_additional;
204 $this->perma_link = array(
"obj_id" => $a_obj_id,
"type" =>
$a_type);
215 $this->lng->loadLanguageModule($this->
getType());
218 $this->tabs_gui->addSubTab(
220 $this->lng->txt($this->getType() .
"_properties"),
221 $this->ctrl->getLinkTarget($this,
'edit')
224 $this->tabs_gui->addSubTab(
226 $this->lng->txt(
"obj_sty"),
227 $this->ctrl->getLinkTarget($this,
'editStyleProperties')
230 $this->tabs_gui->activateSubTab($a_active);
243 if ($prfa_set->get(
"banner")) {
244 include_once
"Services/Form/classes/class.ilFileInputGUI.php";
247 $dimensions =
" (" . $prfa_set->get(
"banner_width") .
"x" .
248 $prfa_set->get(
"banner_height") .
")";
254 $file = $this->
object->getImageFullPath(
true);
256 $img->setImage($file);
261 $section->setTitle($this->lng->txt(
'obj_features'));
265 $comments =
new ilCheckboxInputGUI($this->lng->txt(
"prtf_public_comments"),
"comments");
279 $a_values[
"comments"] = $this->
object->hasPublicComments();
280 $a_values[
"ppic"] = $this->
object->hasProfilePicture();
289 $this->
object->setPublicComments($a_form->
getInput(
"comments"));
290 $this->
object->setProfilePicture($a_form->
getInput(
"ppic"));
298 if ($_FILES[
"banner"][
"tmp_name"]) {
299 $this->
object->uploadImage($_FILES[
"banner"]);
300 } elseif ($prfa_set->get(
'banner')
and $a_form->
getItemByPostVar(
"banner")->getDeletionFlag()) {
301 $this->
object->deleteImage();
310 abstract protected function getPageInstance($a_page_id = null, $a_portfolio_id = null);
326 $this->ctrl->redirect($this,
"infoScreen");
329 $this->tabs_gui->activateTab(
"pages");
331 include_once
"Services/UIComponent/Button/classes/class.ilLinkButton.php";
334 $button->setCaption(
"prtf_add_page");
335 $button->setUrl($this->ctrl->getLinkTarget($this,
"addPage"));
336 $ilToolbar->addStickyItem($button);
340 $button->setCaption(
"prtf_add_blog");
341 $button->setUrl($this->ctrl->getLinkTarget($this,
"addBlog"));
342 $ilToolbar->addStickyItem($button);
347 if ($this->
getType() ==
"prtf") {
348 $ilToolbar->addSeparator();
351 $button->setCaption(
"export_html");
352 $button->setUrl($this->ctrl->getLinkTarget($this,
"export"));
353 $ilToolbar->addButtonInstance($button);
356 $button->setCaption(
"prtf_pdf");
357 $button->setUrl($this->ctrl->getLinkTarget($this,
"exportPDFSelection"));
358 $ilToolbar->addButtonInstance($button);
361 include_once
"Modules/Portfolio/classes/class.ilPortfolioPageTableGUI.php";
365 include_once
"Modules/Portfolio/classes/class.ilPortfolioExerciseGUI.php";
378 $this->tabs_gui->clearTargets();
379 $this->tabs_gui->setBackTarget(
380 $this->lng->txt(
"back"),
381 $this->ctrl->getLinkTarget($this,
"view")
384 $ilHelp->setScreenIdComponent(
"prtf");
385 $ilHelp->setScreenId(
"add_page");
389 $this->tpl->setContent(
$form->getHTML());
400 include_once(
"Services/Form/classes/class.ilPropertyFormGUI.php");
402 $form->setFormAction($this->ctrl->getFormAction($this));
407 $ti->setRequired(
true);
411 if ($a_mode ==
"create") {
412 include_once
"Services/COPage/Layout/classes/class.ilPageLayout.php";
417 $form->addItem($use_template);
420 $use_template->addOption($opt);
422 foreach ($templates as $templ) {
423 $templ->readObject();
425 $opt =
new ilRadioOption($templ->getTitle() . $templ->getPreview(), $templ->getId());
426 $use_template->addOption($opt);
430 $form->setTitle($this->lng->txt(
"prtf_add_page") .
": " .
431 $this->
object->getTitle());
432 $form->addCommandButton(
"savePage", $this->lng->txt(
"save"));
433 $form->addCommandButton(
"view", $this->lng->txt(
"cancel"));
452 include_once(
"Modules/Portfolio/classes/class.ilPortfolioPage.php");
455 $page->setTitle(
$form->getInput(
"title"));
458 $layout_id =
$form->getInput(
"tmpl");
460 include_once(
"./Services/COPage/Layout/classes/class.ilPageLayout.php");
462 $page->setXMLContent($layout_obj->getXMLContent());
467 ilUtil::sendSuccess($this->lng->txt(
"prtf_page_created"),
true);
468 $this->ctrl->redirect($this,
"view");
471 $this->tabs_gui->clearTargets();
472 $this->tabs_gui->setBackTarget(
473 $this->lng->txt(
"back"),
474 $this->ctrl->getLinkTarget($this,
"view")
477 $form->setValuesByPost();
478 $this->tpl->setContent(
$form->getHtml());
488 $this->tabs_gui->clearTargets();
489 $this->tabs_gui->setBackTarget(
490 $this->lng->txt(
"back"),
491 $this->ctrl->getLinkTarget($this,
"view")
494 $ilHelp->setScreenIdComponent(
"prtf");
495 $ilHelp->setScreenId(
"add_blog");
498 $this->tpl->setContent(
$form->getHTML());
503 abstract protected function saveBlog();
514 $title_changes = array();
516 if (is_array(
$_POST[
"order"])) {
517 foreach (
$_POST[
"order"] as $k => $v) {
519 if (
$_POST[
"title"][$k]) {
521 if ($page->getTitle() != $new_title) {
522 $title_changes[$page->getId()] = array(
"old" => $page->getTitle(),
"new" => $new_title);
523 $page->setTitle($new_title);
532 $this->
object->fixLinksOnTitleChange($title_changes);
534 ilUtil::sendSuccess($this->lng->txt(
"msg_obj_modified"),
true);
535 $this->ctrl->redirect($this,
"view");
543 $prtf_pages = $_REQUEST[
"prtf_pages"];
545 if (!is_array($prtf_pages) || count($prtf_pages) == 0) {
547 $this->ctrl->redirect($this,
"view");
549 $this->tabs_gui->activateTab(
"pages");
551 include_once(
"./Services/Utilities/classes/class.ilConfirmationGUI.php");
553 $cgui->setFormAction($this->ctrl->getFormAction($this));
554 $cgui->setHeaderText($this->lng->txt(
"prtf_sure_delete_portfolio_pages"));
555 $cgui->setCancel($this->lng->txt(
"cancel"),
"view");
556 $cgui->setConfirm($this->lng->txt(
"delete"),
"deletePortfolioPages");
558 foreach ($prtf_pages as
$id) {
560 if ($page->getPortfolioId() != $this->
object->getId()) {
564 $title = $page->getTitle();
568 $cgui->addItem(
"prtf_pages[]", $id,
$title);
571 $this->tpl->setContent($cgui->getHTML());
584 if (is_array(
$_POST[
"prtf_pages"])) {
590 ilUtil::sendSuccess($this->lng->txt(
"prtf_portfolio_page_deleted"),
true);
591 $this->ctrl->redirect($this,
"view");
602 $portfolio_id = $this->
object->getId();
603 $user_id = $this->
object->getOwner();
605 $this->tabs_gui->clearTargets();
611 if ($pages && $current_page) {
613 foreach ($pages as $page) {
614 if ($page[
"id"] == $current_page) {
620 $current_page = null;
625 if (!$current_page && $pages) {
626 $current_page = $pages;
627 $current_page = array_shift($current_page);
628 $current_page = $current_page[
"id"];
632 if ($this->user_id == ANONYMOUS_USER_ID &&
634 $this->tpl->setLoginTargetPar(
"prtf_" . $this->object->getId() .
"_" . $current_page);
640 if ($this->requested_back_url !=
"") {
642 } elseif (
$_GET[
"baseClass"] !=
"ilPublicUserProfileGUI" &&
643 $this->user_id && $this->user_id != ANONYMOUS_USER_ID) {
646 if ($this->
getType() ==
"prtf") {
647 $this->ctrl->setParameterByClass(
"ilportfoliorepositorygui",
"shr_id", $this->object->getOwner());
648 $back = $this->ctrl->getLinkTargetByClass(array(
"ilpersonaldesktopgui",
"ilportfoliorepositorygui"),
"showOther");
649 $this->ctrl->setParameterByClass(
"ilportfoliorepositorygui",
"shr_id",
"");
656 include_once
"Services/Link/classes/class.ilLink.php";
662 $back = $this->ctrl->getLinkTarget($this,
"view");
663 if ($this->
getType() ==
"prtf") {
664 $back_caption = $this->lng->txt(
"prtf_back_to_portfolio_owner");
667 $this->lng->loadLanguageModule(
"prtt");
668 $back_caption = $this->lng->txt(
"prtt_edit");
677 $ilMainMenu->setTopBarBack($back, $back_caption);
681 $current_blog = null;
682 if (count($pages) > 1) {
683 foreach ($pages as $p) {
686 if ($p[
"id"] == $current_page) {
687 $current_blog = (int) $p[
"title"];
689 include_once
"Modules/Blog/classes/class.ilObjBlog.php";
693 $this->ctrl->setParameter($this,
"user_page", $p[
"id"]);
694 $this->tabs_gui->addTab(
695 "user_page_" . $p[
"id"],
697 $this->ctrl->getLinkTarget($this,
"preview")
701 $this->tabs_gui->activateTab(
"user_page_" . $current_page);
704 $this->ctrl->setParameter($this,
"user_page", $current_page);
711 $page_gui->setEmbedded(
true);
713 $content = $this->ctrl->getHTML($page_gui);
725 if ($a_show_notes && $this->object->hasPublicComments() && !$current_blog && $current_page) {
726 include_once(
"./Services/Notes/classes/class.ilNoteGUI.php");
727 $note_gui =
new ilNoteGUI($portfolio_id, $current_page,
"pfpg");
728 $note_gui->setRepositoryMode(
false);
729 $note_gui->enablePublicNotes(
true);
730 $note_gui->enablePrivateNotes(
false);
732 $note_gui->enablePublicNotesDeletion(($this->user_id ==
$user_id) &&
735 $next_class = $this->ctrl->getNextClass($this);
736 if ($next_class ==
"ilnotegui") {
737 $notes = $this->ctrl->forwardCommand($note_gui);
739 $notes = $note_gui->getNotesHTML();
743 if ($this->perma_link === null) {
744 if ($this->
getType() ==
"prtf") {
745 $this->tpl->setPermanentLink($this->
getType(), $this->object->getId(),
"_" . $current_page);
747 $this->tpl->setPermanentLink($this->
getType(), $this->object->getRefId());
750 $this->tpl->setPermanentLink($this->perma_link[
"type"], $this->perma_link[
"obj_id"]);
758 self::renderFullscreenHeader($this->
object, $this->tpl,
$user_id);
761 $this->ctrl->setParameter($this,
"user_page",
"");
762 $this->tpl->setTitleUrl($this->ctrl->getLinkTarget($this,
"preview"));
763 $this->ctrl->setParameter($this,
"user_page", $this->page_id);
766 if (!$current_blog) {
767 $content =
'<div id="ilCOPageContent" class="ilc_page_cont_PageContainer">' .
768 '<div class="ilc_page_Page">' .
776 $this->tpl->setContent($content .
777 '<div class="ilClearFloat">' . $notes .
'</div>');
794 require_once(
'Services/Tracking/classes/class.ilChangeEvent.php');
796 $a_portfolio->getType(),
797 ($a_portfolio->getType() ==
"prtt")
798 ? $a_portfolio->getRefId()
799 : $a_portfolio->getId(),
800 $a_portfolio->getId(),
806 $name = $name[
"lastname"] .
", " . (
$t = $name[
"title"] ?
$t .
" " :
"") . $name[
"firstname"];
809 $banner = $banner_width = $banner_height =
false;
811 if ($prfa_set->get(
"banner")) {
812 require_once(
'./Services/WebAccessChecker/classes/class.ilWACSignedPath.php');
814 $banner_width = $prfa_set->get(
"banner_width");
815 $banner_height = $prfa_set->get(
"banner_height");
817 $banner = basename($banner);
823 if ($a_portfolio->hasProfilePicture()) {
824 $ppic = ilObjUser::_getPersonalPicturePath($a_user_id,
"xsmall",
true,
true);
826 $ppic = basename($ppic);
830 $a_tpl->resetHeaderBlock(
false);
832 $a_tpl->setBanner($banner, $banner_width, $banner_height, $a_export);
833 $a_tpl->setTitleIcon($ppic);
834 $a_tpl->setTitle($a_portfolio->getTitle());
836 $a_tpl->setDescription($name);
839 $a_tpl->setVariable(
"LOCATOR",
"");
847 include_once
"Modules/Portfolio/classes/class.ilPortfolioHTMLExport.php";
849 $zip = $export->buildExportFile();
860 $prtf_pages = $_REQUEST[
"prtf_pages"];
862 if (!is_array($prtf_pages) || count($prtf_pages) == 0) {
864 $this->ctrl->redirect($this,
"view");
866 $this->tabs_gui->activateTab(
"pages");
874 $item->setValue((
int) $page_id);
875 $a_form->addItem($item);
878 $this->tpl->setContent($a_form->getHTML());
885 if (
$form->checkInput()) {
887 if (
$form->getInput(
"target") ==
"old") {
888 $portfolio_id =
$form->getInput(
"prtf");
893 $portfolio->setTitle(
$form->getInput(
"title"));
894 $portfolio->create();
895 $portfolio_id = $portfolio->getId();
908 ilUtil::sendSuccess($this->lng->txt(
"prtf_pages_copied"),
true);
909 $this->ctrl->redirect($this,
"view");
912 $form->setValuesByPost();
920 include_once(
"Services/Form/classes/class.ilPropertyFormGUI.php");
922 $form->setFormAction($this->ctrl->getFormAction($this));
923 $form->setTitle($this->lng->txt(
"prtf_copy_page"));
927 $form->addCommandButton(
"copyPage", $this->lng->txt(
"save"));
928 $form->addCommandButton(
"view", $this->lng->txt(
"cancel"));
942 if ($a_tpl != null) {
948 $ctpl->setCurrentBlock(
"ContentStyle");
950 "LOCATION_CONTENT_STYLESHEET",
953 $ctpl->parseCurrentBlock();
960 $this->tabs_gui->activateTab(
"settings");
964 $this->tpl->setContent(
$form->getHTML());
971 include_once(
"./Services/Style/Content/classes/class.ilObjStyleSheet.php");
972 $this->lng->loadLanguageModule(
"style");
974 include_once(
"./Services/Form/classes/class.ilPropertyFormGUI.php");
977 $fixed_style =
$ilSetting->get(
"fixed_content_style_id");
978 $style_id = $this->
object->getStyleSheetId();
980 if ($fixed_style > 0) {
983 $this->lng->txt(
"global_fixed") .
")");
992 $st_styles[0] = $this->lng->txt(
"default");
1000 $form->addItem($st);
1003 $form->addCommandButton(
"editStyle", $this->lng->txt(
"style_edit_style"));
1004 $form->addCommandButton(
"deleteStyle", $this->lng->txt(
"style_delete_style"));
1010 $this->lng->txt(
"style_current_style"),
1014 $style_sel->setValue($style_id);
1015 $form->addItem($style_sel);
1017 $form->addCommandButton(
"saveStyleSettings", $this->lng->txt(
"save"));
1018 $form->addCommandButton(
"createStyle", $this->lng->txt(
"sty_create_ind_style"));
1022 $form->setTitle($this->lng->txt($this->getType() .
"_style"));
1023 $form->setFormAction($this->ctrl->getFormAction($this));
1030 $this->ctrl->redirectByClass(
"ilobjstylesheetgui",
"create");
1035 $this->ctrl->redirectByClass(
"ilobjstylesheetgui",
"edit");
1040 $this->ctrl->redirectByClass(
"ilobjstylesheetgui",
"delete");
1047 include_once(
"./Services/Style/Content/classes/class.ilObjStyleSheet.php");
1048 if (
$ilSetting->get(
"fixed_content_style_id") <= 0 &&
1050 || $this->object->getStyleSheetId() == 0)) {
1052 $this->
object->update();
1054 ilUtil::sendSuccess($this->lng->txt(
"msg_obj_modified"),
true);
1056 $this->ctrl->redirect($this,
"editStyleProperties");
static _lookupName($a_user_id)
lookup user name
static getAllPortfolioPages($a_portfolio_id)
Get pages of portfolio.
static _recordReadEvent( $a_type, $a_ref_id, $obj_id, $usr_id, $isCatchupWriteEvents=true, $a_ext_rc=false, $a_ext_time=false)
Records a read event and catches up with write events.
This class represents an option in a radio group.
checkPermission($a_perm, $a_cmd="", $a_type="", $a_ref_id=null)
getEditFormCustomValues(array &$a_values)
confirmPortfolioPageDeletion()
Confirm portfolio deletion.
setValue($a_value)
Set Value.
static _lookupTitle($a_id)
setContentStyleSheet($a_tpl=null)
Portfolio HTML exporter class.
checkPermissionBool($a_perm, $a_cmd="", $a_type="", $a_node_id=null)
Check permission.
New implementation of ilObjectGUI.
view()
Show list of portfolio pages.
setPermaLink($a_obj_id, $a_type)
Set custom perma link (used in public profile?)
static _getStaticLink( $a_ref_id, $a_type='', $a_fallback_goto=true, $append="")
Get static link.
setSettingsSubTabs($a_active)
if(!array_key_exists('StateId', $_REQUEST)) $id
static fixOrdering($a_portfolio_id)
Fix ordering.
addPage()
Show portfolio page creation form.
static _lookupTitle($a_id)
lookup object title
static _getStandardStyles( $a_exclude_default_style=false, $a_include_deactivated=false, $a_scope=0)
Get standard styles.
savePage()
Create new portfolio page.
static _lookupStandard($a_id)
Lookup standard flag.
deletePortfolioPages()
Delete portfolio pages.
static sendInfo($a_info="", $a_keep=false)
Send Info Message to Screen.
savePortfolioPagesOrdering()
Save ordering of portfolio pages.
catch(Exception $e) $message
if(isset($_POST['submit'])) $form
__construct($a_id=0, $a_id_type=self::REPOSITORY_NODE_ID, $a_parent_node_id=0)
static checkExercise($a_user_id, $a_obj_id, $a_add_submit=false, $as_array=false)
setAdditional($a_additional)
Set Additonal Information (used in public profile?)
getType()
Functions that must be overwritten.
static getEffectiveContentStyleId($a_style_id, $a_type="")
Get effective Style Id.
getAdditional()
Get Additonal Information.
initCopyPageFormOptions(ilPropertyFormGUI $a_form)
This class represents a text property in a property form.
initPageForm($a_mode="create")
Init portfolio page form.
setMaxLength($a_maxlength)
Set Max Length.
static stripSlashes($a_str, $a_strip_html=true, $a_allow="")
strip slashes if magic qoutes is enabled
static signFile($path_to_file)
static getContentStylePath($a_style_id, $add_random=true)
get content style path
addBlog()
Show portfolio blog page creation form.
getPageGUIInstance($a_page_id)
Portfolio view gui base class.
This class represents a non editable value in a property form.
static renderFullscreenHeader($a_portfolio, $a_tpl, $a_user_id, $a_export=false)
Render banner, user name.
initStylePropertiesForm()
static activeLayouts($a_special_page=false, $a_module=null)
Get active layouts.
if(empty($password)) $table
getPageInstance($a_page_id=null, $a_portfolio_id=null)
initEditCustomForm(ilPropertyFormGUI $a_form)
preview($a_return=false, $a_content=false, $a_show_notes=true)
Show user page.
updateCustom(ilPropertyFormGUI $a_form)
copyPageForm($a_form=null)
Select target portfolio for page(s) copy.
static deliverFile( $a_file, $a_filename, $a_mime='', $isInline=false, $removeAfterDelivery=false, $a_exit_after=true)
deliver file for download via browser.
Confirmation screen class.