Ejemplo n.º 1
0
 public function validatePublishLocationRequest(Page $target = null)
 {
     $e = Core::make('error');
     if (!is_object($target) || $target->isError()) {
         $e->add(t('You must choose a page to publish this page beneath.'));
     } else {
         $ppc = new \Permissions($target);
         if (!$ppc->canAddSubCollection($this->getPageTypeObject())) {
             $e->add(t('You do not have permission to publish a page in this location.'));
         }
     }
     return $e;
 }
Ejemplo n.º 2
0
 public function create_new()
 {
     $pr = new PageEditResponse();
     $ms = Section::getByID($this->request->request->get('section'));
     // we get the related parent id
     $cParentID = $this->page->getCollectionParentID();
     $cParent = \Page::getByID($cParentID);
     $cParentRelatedID = $ms->getTranslatedPageID($cParent);
     if ($cParentRelatedID > 0) {
         // we copy the page underneath it and store it
         $newParent = \Page::getByID($cParentRelatedID);
         $ct = \PageType::getByID($this->page->getPageTypeID());
         $cp = new \Permissions($newParent);
         if ($cp->canAddSubCollection($ct) && $this->page->canMoveCopyTo($newParent)) {
             $newPage = $this->page->duplicate($newParent);
             if (is_object($newPage)) {
                 // grab the approved version and unapprove it
                 $v = Version::get($newPage, 'ACTIVE');
                 if (is_object($v)) {
                     $v->deny();
                     $pkr = new ApprovePageRequest();
                     $pkr->setRequestedPage($newPage);
                     $u = new \User();
                     $pkr->setRequestedVersionID($v->getVersionID());
                     $pkr->setRequesterUserID($u->getUserID());
                     $response = $pkr->trigger();
                     if (!$response instanceof Response) {
                         // we are deferred
                         $pr->setMessage(t('<strong>Request Saved.</strong> You must complete the workflow before this change is active.'));
                     } else {
                         $ih = Core::make('multilingual/interface/flag');
                         $icon = $ih->getSectionFlagIcon($ms);
                         $pr->setAdditionalDataAttribute('name', $newPage->getCollectionName());
                         $pr->setAdditionalDataAttribute('link', $newPage->getCollectionLink());
                         $pr->setAdditionalDataAttribute('icon', $icon);
                         $pr->setMessage(t('Page created.'));
                     }
                 }
             }
         } else {
             throw new \Exception(t('You do not have permission to add this page to this section of the tree.'));
         }
     }
     $pr->outputJSON();
 }
Ejemplo n.º 3
0
}
$ctArray = CollectionType::getList();

$cp = new Permissions($c);
if ($c->getCollectionID() > 1) {
	$parent = Page::getByID($c->getCollectionParentID());
	$parentCP = new Permissions($parent);
}
if (!$cp->canEditPageType() && !$cp->canEditPageTheme()) {
	die(t('Access Denied'));
}

$cnt = 0;
for ($i = 0; $i < count($ctArray); $i++) {
	$ct = $ctArray[$i];
	if ($c->getCollectionID() == 1 || $parentCP->canAddSubCollection($ct)) { 
		$cnt++;
	}
}

$plID = $c->getCollectionThemeID();
$ctID = $c->getCollectionTypeID();
if ($plID == 0) {
	$pl = PageTheme::getSiteTheme();
	$plID = $pl->getThemeID();
}
?>

<div class="ccm-ui">
<form method="post" name="ccmThemeForm" action="<?php 
echo $c->getCollectionAction();
Ejemplo n.º 4
0
    if ($cp->canEditPageTheme() && $cp->canEditPageType()) {
        $pcnt++;
    }
}
if ($pcnt > 0) {
    // i realize there are a lot of loops through this, but the logic here is a bit tough to follow if you don't do it this way.
    // first we determine which page types to show, if any
    $notAllowedPageTypes = array();
    $allowedPageTypes = array();
    $ctArray = CollectionType::getList();
    foreach ($ctArray as $ct) {
        foreach ($pages as $c) {
            if ($c->getCollectionID() != HOME_CID) {
                $parentC = Page::getByID($c->getCollectionParentID());
                $parentCP = new Permissions($parentC);
                if (!$parentCP->canAddSubCollection($ct)) {
                    $notAllowedPageTypes[] = $ct;
                }
            }
        }
    }
    foreach ($ctArray as $ct) {
        if (!in_array($ct, $notAllowedPageTypes)) {
            $allowedPageTypes[] = $ct;
        }
    }
    $cnt = count($allowedPageTypes);
    // next we determine which page type to select, if any
    $ctID = -1;
    foreach ($pages as $c) {
        if ($c->getCollectionTypeID() != $ctID && $ctID != -1) {
Ejemplo n.º 5
0
     break;
 case 'set_theme':
     $toolSection = "collection_theme";
     $divID = 'ccm-edit-collection-design';
     $canViewPane = $cp->canEditPageTheme() || $cp->canEditPageType();
     break;
 case 'add':
     $toolSection = "collection_add";
     $divID = 'ccm-edit-collection-design';
     $canViewPane = $cp->canAddSubpage();
     if ($_REQUEST['ctID']) {
         $ct = CollectionType::getByID($_REQUEST['ctID']);
         if (!is_object($ct)) {
             $canViewPane = false;
         } else {
             $canViewPane = $cp->canAddSubCollection($ct);
         }
     }
     break;
 case 'add_external':
     $toolSection = "collection_add_external";
     $divID = 'ccm-edit-collection-external';
     $canViewPane = $cp->canAddExternalLink();
     break;
 case 'delete_external':
     $toolSection = "collection_delete_external";
     $divID = 'ccm-delete-collection-external';
     $cparent = Page::getByID($c->getCollectionParentID(), "RECENT");
     $cparentP = new Permissions($cparent);
     $canViewPane = $cparentP->canWrite();
     break;
Ejemplo n.º 6
0
	public function select_publish_target() {
		$parent = Page::getByID($this->post('cPublishParentID'));
		$str = '';
		if (!is_object($parent) || $parent->isError()) {
			print t('Invalid parent page.');
			exit;
		} else {
			$entry = ComposerPage::getByID($this->post('entryID'));
			if (!is_object($entry) || (!$entry->isComposerDraft())) {
				print t('Invalid composer draft.');
				exit;
			}
			
			$ct = CollectionType::getByID($entry->getCollectionTypeID());
			$cp = new Permissions($parent);
			if (!$cp->canAddSubCollection($ct)) {
				print t('You do not have permissions to add this page type in that location.');
				exit;
			}
		}
		$entry->setComposerDraftPublishParentID($this->post('cPublishParentID'));
		print $this->getComposerDraftPublishText($entry);
		exit;
	}
Ejemplo n.º 7
0
$c = Page::getByID($_REQUEST['cID']);
if (is_object($c) && !$c->isError()) { 
	$cp = new Permissions($c);
	if ($c->getPendingActionTargetCollectionID()) {
		$target = Page::getByID($c->getPendingActionTargetCollectionID());
		if (!is_object($target) || $target->isError()) { 
			$target = Page::getByID(HOME_CID);		
		}
	}
	
	$doAdd = false;
	if ($c->getCollectionTypeID() > 0) { 
		$ct = CollectionType::getByID($c->getCollectionTypeID());
		$ncp = new Permissions($target);
		if ($ncp->canAddSubCollection($ct)) {
			$doAdd = true;
		}
	} else if ($u->isSuperUser()) {
		$doAdd = true;
	}

	$obj = new stdClass;
	if ($doAdd) { 	
		$c->clearPendingAction();
		$c->activate();
		$c->move($target);
	
		$obj->message = t("Page Restored");
		$obj->targetCID = $target->getCollectionID();
	} else {
Ejemplo n.º 8
0
 public function create_page()
 {
     Loader::model('section', 'multilingual');
     if (Loader::helper('validation/token')->validate('create_page', $_POST['token'])) {
         $ms = MultilingualSection::getByLocale($_POST['locale']);
         $page = Page::getByID($_POST['sourceID']);
         if (is_object($page) && !$page->isError()) {
             // we get the related parent id
             $cParentID = $page->getCollectionParentID();
             $cParent = Page::getByID($cParentID);
             $cParentRelatedID = $ms->getTranslatedPageID($cParent);
             if ($cParentRelatedID > 0) {
                 // we copy the page underneath it and store it
                 $newParent = Page::getByID($cParentRelatedID);
                 $ct = CollectionType::getByID($page->getCollectionTypeID());
                 $cp = new Permissions($newParent);
                 if ($cp->canAddSubCollection($ct) && $page->canMoveCopyTo($newParent)) {
                     $newPage = $page->duplicate($newParent);
                     if (is_object($newPage)) {
                         print '<a href="' . Loader::helper("navigation")->getLinkToCollection($newPage) . '">' . $newPage->getCollectionName() . '</a>';
                     }
                 } else {
                     print '<span class="ccm-error">' . t("Insufficient permissions.") . '</span>';
                 }
             }
         }
     }
     exit;
 }
Ejemplo n.º 9
0
         $siteMapParentID = $configuredTarget->getStartingPointPageID();
     }
     $ps = Loader::helper('form/page_selector');
     echo $ps->selectFromSitemap('cParentID', $cParentID, $siteMapParentID, array('ptID' => $configuredTarget->getPageTypeID()));
 } else {
     $pl = new PageList();
     $pl->sortByName();
     $pl->filterByPageTypeID($configuredTarget->getPageTypeID());
     $pl->sortByName();
     $pages = $pl->get();
     if (count($pages) > 1) {
         $navigation = \Core::make('helper/navigation');
         $options = array();
         foreach ($pages as $p) {
             $pp = new Permissions($p);
             if ($pp->canAddSubCollection($pagetype)) {
                 $label = '';
                 $trail = $navigation->getTrailToCollection($p);
                 if (is_array($trail)) {
                     $trail = array_reverse($trail);
                     for ($i = 0; $i < count($trail); $i++) {
                         $label .= $trail[$i]->getCollectionName() . ' &gt; ';
                     }
                 }
                 $label .= $p->getCollectionName();
                 $options[$p->getCollectionID()] = $label;
             }
         }
         echo $form->select('cParentID', $options, $cParentID);
     } elseif (count($pages) == 1) {
         $p = $pages[0];
Ejemplo n.º 10
0
 protected function validate()
 {
     $vt = Loader::helper('validation/strings');
     $vn = Loader::Helper('validation/numbers');
     $dt = Loader::helper("form/date_time");
     if (!$vn->integer($this->post('cParentID'))) {
         $this->error->add(t('You must choose a parent page for this News entry.'));
     }
     if (!$vn->integer($this->post('ctID'))) {
         $this->error->add(t('You must choose a page type for this News entry.'));
     }
     if (!$vt->notempty($this->post('newsTitle'))) {
         $this->error->add(t('Title is required'));
     }
     if (!$this->error->has()) {
         Loader::model('collection_types');
         $ct = CollectionType::getByID($this->post('ctID'));
         $parent = Page::getByID($this->post('cParentID'));
         $parentPermissions = new Permissions($parent);
         if (!$parentPermissions->canAddSubCollection($ct)) {
             $this->error->add(t('You do not have permission to add a page of that type to that area of the site.'));
         }
     }
 }
Ejemplo n.º 11
0
 public function create_new()
 {
     $pr = new PageEditResponse();
     $ms = Section::getByID($this->request->request->get('section'));
     // we get the related parent id
     if ($this->page->isPageDraft()) {
         $cParentID = $this->page->getPageDraftTargetParentPageID();
     } else {
         $cParentID = $this->page->getCollectionParentID();
     }
     $cParent = \Page::getByID($cParentID);
     $cParentRelatedID = $ms->getTranslatedPageID($cParent);
     if ($cParentRelatedID > 0) {
         // we copy the page underneath it and store it
         $ct = \PageType::getByID($this->page->getPageTypeID());
         if ($this->page->isPageDraft()) {
             $ptp = new \Permissions($ct);
             if (!$ptp->canAddPageType()) {
                 throw new \Exception(t('You do not have permission to add a page of this type.'));
             }
         }
         $newParent = \Page::getByID($cParentRelatedID);
         $cp = new \Permissions($newParent);
         if ($cp->canAddSubCollection($ct)) {
             if ($this->page->isPageDraft()) {
                 $targetParent = \Page::getByPath(\Config::get('concrete.paths.drafts'));
             } else {
                 $targetParent = $newParent;
             }
             $newPage = $this->page->duplicate($targetParent);
             if (is_object($newPage)) {
                 if ($this->page->isPageDraft()) {
                     $newPage->setPageDraftTargetParentPageID($newParent->getCollectionID());
                     Section::relatePage($this->page, $newPage, $ms->getLocale());
                     $pr->setMessage(t('New draft created.'));
                 } else {
                     // grab the approved version and unapprove it
                     $v = Version::get($newPage, 'ACTIVE');
                     if (is_object($v)) {
                         $v->deny();
                     }
                     $pr->setMessage(t('Unapproved page created. You must publish this page before it is live.'));
                 }
                 $ih = Core::make('multilingual/interface/flag');
                 $icon = (string) $ih->getSectionFlagIcon($ms);
                 $pr->setAdditionalDataAttribute('name', $newPage->getCollectionName());
                 $pr->setAdditionalDataAttribute('link', $newPage->getCollectionLink());
                 $pr->setAdditionalDataAttribute('icon', $icon);
             }
         } else {
             throw new \Exception(t('You do not have permission to add this page to this section of the tree.'));
         }
     }
     $pr->outputJSON();
 }