示例#1
0
 protected function redirectToPage()
 {
     // Used for non-AJAX edits of global slots so that we can
     // redirect back to the real page after the edit succeeds
     if ($this->hasRequestParameter('actual_slug')) {
         return $this->redirect(aTools::urlForPage($this->getRequestParameter('actual_slug')));
     } else {
         return $this->redirect($this->page->getUrl());
     }
 }
示例#2
0
文件: _accordion.php 项目: hashir/UoA
-<?php 
    echo $item['id'];
    ?>
">

      <?php 
    if (isset($item['external']) && $item['external']) {
        ?>
        <?php 
        echo link_to($item['title'], $item['slug']);
        ?>
      <?php 
    } else {
        ?>
        <?php 
        echo link_to($item['title'], aTools::urlForPage($item['slug'], array('absolute' => true)));
        ?>
      <?php 
    }
    ?>

      <?php 
    if (isset($item['children']) && count($item['children']) && $nest < $maxDepth) {
        ?>
        <?php 
        include_partial('aNavigation/accordion', array('nav' => $item['children'], 'draggable' => $draggable, 'maxDepth' => $maxDepth - 1, 'name' => $name, 'nest' => $nest + 1, 'dragIcon' => $dragIcon, 'class' => $class, 'active' => $active));
        ?>
      <?php 
    }
    ?>
示例#3
0
 /**
  * DOCUMENT ME
  * @param sfWebRequest $request
  * @return mixed
  */
 public function executeSearch(sfWebRequest $request)
 {
     $now = date('YmdHis');
     // create the array of pages matching the query
     $q = $request->getParameter('q');
     if ($request->hasParameter('x')) {
         // We sometimes like to use input type="image" for presentation reasons, but it generates
         // ugly x and y parameters with click coordinates. Get rid of those and come back.
         return $this->redirect(sfContext::getInstance()->getController()->genUrl('a/search', true) . '?' . http_build_query(array("q" => $q)));
     }
     $key = strtolower(trim($q));
     $key = preg_replace('/\\s+/', ' ', $key);
     $replacements = sfConfig::get('app_a_search_refinements', array());
     if (isset($replacements[$key])) {
         $q = $replacements[$key];
     }
     try {
         $values = aZendSearch::searchLuceneWithValues(Doctrine::getTable('aPage'), $q, aTools::getUserCulture());
     } catch (Exception $e) {
         // Lucene search error. TODO: display it nicely if they are always safe things to display. For now: just don't crash
         $values = array();
     }
     // The truth is that Zend cannot do all of our filtering for us, especially
     // permissions-based. So we can do some other filtering as well, although it
     // would be bad not to have Zend take care of the really big cuts (if 99% are
     // not being prefiltered by Zend, and we have a Zend max results of 1000, then
     // we are reduced to working with a maximum of 10 real results).
     $nvalues = array();
     $index = Doctrine::getTable('aPage')->getLuceneIndex();
     foreach ($values as $value) {
         $document = $index->getDocument($value->id);
         //      $published_at = $value->published_at;
         // New way: don't touch anything but $hit->id directly and you won't force a persistent
         // use of memory for the lazy loaded columns http://zendframework.com/issues/browse/ZF-8267
         $published_at = $document->getFieldValue('published_at');
         if ($published_at > $now) {
             continue;
         }
         // 1.5: the names under which we store columns in Zend Lucene have changed to
         // avoid conflict with also indexing them
         $info = unserialize($document->getFieldValue('info_stored'));
         if (!aPageTable::checkPrivilege('view', $info)) {
             continue;
         }
         $slug = $document->getFieldValue('slug_stored');
         if (substr($slug, 0, 1) !== '@' && strpos($slug, '/') === false) {
             // A virtual page slug which is not a route is not interested in being part of search results
             continue;
         }
         $nvalues[] = $value;
     }
     $values = $nvalues;
     if ($this->searchAddResults($values, $q)) {
         foreach ($values as $value) {
             if (get_class($value) === 'stdClass') {
                 // bc with existing implementations of searchAddResults
                 if (!isset($value->slug_stored)) {
                     if (isset($value->slug)) {
                         $value->slug_stored = $value->slug;
                     } else {
                         $value->slug_stored = null;
                     }
                 }
                 if (!isset($value->title_stored)) {
                     $value->title_stored = $value->title;
                 }
                 if (!isset($value->summary_stored)) {
                     $value->summary_stored = $value->summary;
                 }
                 if (!isset($value->engine_stored)) {
                     if (isset($value->engine)) {
                         $value->engine_stored = $value->engine;
                     } else {
                         $value->engine_stored = null;
                     }
                 }
             }
         }
         // $value = new stdClass();
         // $value->url = $url;
         // $value->title = $title;
         // $value->score = $scores[$id];
         // $value->summary = $summary;
         // $value->class = 'Article';
         // $values[] = $value;
         usort($values, "aActions::compareScores");
     }
     $this->pager = new aArrayPager(null, sfConfig::get('app_a_search_results_per_page', 10));
     $this->pager->setResultArray($values);
     $this->pager->setPage($request->getParameter('page', 1));
     $this->pager->init();
     $this->pagerUrl = "a/search?" . http_build_query(array("q" => $q));
     // setTitle takes care of escaping things
     $this->getResponse()->setTitle(aTools::getOptionI18n('title_prefix') . 'Search for ' . $q . aTools::getOptionI18n('title_suffix'));
     $results = $this->pager->getResults();
     // Now that we have paginated and obtained the short list of results we really
     // care about it's OK to use the lazy load features of Lucene for the last mile
     $nresults = array();
     foreach ($results as $value) {
         $nvalue = $value;
         $nvalue->slug = $nvalue->slug_stored;
         $nvalue->title = $nvalue->title_stored;
         $nvalue->summary = $nvalue->summary_stored;
         if (strlen($nvalue->engine_stored)) {
             $helperClass = $nvalue->engine_stored . 'SearchHelper';
             if (class_exists($helperClass)) {
                 $searchHelper = new $helperClass();
                 $nvalue->partial = $searchHelper->getPartial();
             }
         }
         if (!isset($nvalue->url)) {
             if (substr($nvalue->slug, 0, 1) === '@') {
                 // Virtual page slug is a named Symfony route, it wants search results to go there
                 $nvalue->url = $this->getController()->genUrl($nvalue->slug, true);
             } else {
                 $slash = strpos($nvalue->slug, '/');
                 if ($slash === false) {
                     // A virtual page (such as global) that isn't the least bit interested in
                     // being part of search results
                     continue;
                 }
                 if ($slash > 0) {
                     // A virtual page slug which is a valid Symfony route, such as foo/bar?id=55
                     $nvalue->url = $this->getController()->genUrl($nvalue->slug, true);
                 } else {
                     // A normal CMS page
                     $nvalue->url = aTools::urlForPage($nvalue->slug);
                 }
             }
         }
         $nvalue->class = 'aPage';
         $nresults[] = $nvalue;
     }
     $this->results = $nresults;
 }
示例#4
0
文件: aHelper.php 项目: hashir/UoA
function a_navtree_body($children)
{
    $s = "<ul>\n";
    foreach ($children as $info) {
        $s .= '<li>' . link_to($info['title'], aTools::urlForPage($info['slug']));
        if (isset($info['children'])) {
            $s .= a_navtree_body($info['children']);
        }
        $s .= "</li>\n";
    }
    $s .= "</ul>\n";
    return $s;
}
示例#5
0
文件: aHelper.php 项目: verenate/gri
function _a_navcolumn_body($page)
{
    $sortHandle = "";
    $sf_user = sfContext::getInstance()->getUser();
    $admin = $page->userHasPrivilege('edit');
    if ($admin) {
        $sortHandle = "<div class='a-btn icon a-drag a-controls'></div>";
    }
    $result = "";
    // Inclusion of archived pages should be a bit generous to allow for tricky situations
    // in which those who can edit a subpage might not be able to find it otherwise.
    // We don't want the performance hit of checking for the right to edit each archived
    // subpage, so just allow those with potential-editor privs to see that archived pages
    // exist, whether or not they are allowed to actually edit them
    if (aTools::isPotentialEditor() && $sf_user->getAttribute('show-archived', true, 'apostrophe')) {
        $livingOnly = false;
    } else {
        $livingOnly = true;
    }
    $result = '<ul id="a-navcolumn" class="a-navcolumn">';
    $childrenInfo = $page->getChildrenInfo($livingOnly);
    if (!count($childrenInfo)) {
        $childrenInfo = $page->getPeerInfo($livingOnly);
    }
    $n = 1;
    foreach ($childrenInfo as $childInfo) {
        $class = "peer_item";
        if ($childInfo['id'] == $page->id) {
            $class = "self_item";
        }
        if ($n == 1) {
            $class .= ' first';
        }
        if ($n == count($childrenInfo)) {
            $class .= ' last';
        }
        // Specific format to please jQuery.sortable
        $result .= "<li id=\"a-navcolumn-item-" . $childInfo['id'] . "\" class=\"a-navcolumn-item {$class}\">\n";
        $title = $childInfo['title'];
        if ($childInfo['archived']) {
            $title = '<span class="a-archived-page" title="&quot;' . $title . '&quot; is Unpublished">' . $title . '</span>';
        }
        $result .= $sortHandle . link_to($title, aTools::urlForPage($childInfo['slug']));
        $result .= "</li>\n";
        $n++;
    }
    $result .= "</ul>\n";
    if ($admin) {
        $result .= jq_sortable_element('#a-navcolumn', array('url' => 'a/sort?page=' . $page->getId()));
    }
    return $result;
}
 public function executeSearch(sfWebRequest $request)
 {
     // create the array of pages matching the query
     $q = $request->getParameter('q');
     if ($request->hasParameter('x')) {
         // We like to use input type="image" for presentation reasons, but it generates
         // ugly x and y parameters with click coordinates. Get rid of those and come back.
         return $this->redirect(sfContext::getInstance()->getController()->genUrl('a/search', true) . '?' . http_build_query(array("q" => $q)));
     }
     $key = strtolower(trim($q));
     $key = preg_replace('/\\s+/', ' ', $key);
     $replacements = sfConfig::get('app_a_search_refinements', array());
     if (isset($replacements[$key])) {
         $q = $replacements[$key];
     }
     $values = aZendSearch::searchLuceneWithValues(Doctrine::getTable('aPage'), $q, aTools::getUserCulture());
     $nvalues = array();
     foreach ($values as $value) {
         // doesn't implement isset
         if (strlen($value->info)) {
             $info = unserialize($value->info);
             if (!aPageTable::checkPrivilege('view', $info)) {
                 continue;
             }
         }
         $nvalue = $value;
         if (substr($nvalue->slug, 0, 1) === '@') {
             // Virtual page slug is a named Symfony route, it wants search results to go there
             $nvalue->url = $this->getController()->genUrl($nvalue->slug, true);
         } else {
             $slash = strpos($nvalue->slug, '/');
             if ($slash === false) {
                 // A virtual page (such as global) taht isn't the least bit interested in
                 // being part of search results
                 continue;
             }
             if ($slash > 0) {
                 // A virtual page slug which is a valid Symfony route, such as foo/bar?id=55
                 $nvalue->url = $this->getController()->genUrl($nvalue->slug, true);
             } else {
                 // A normal CMS page
                 $nvalue->url = aTools::urlForPage($nvalue->slug);
             }
         }
         $nvalue->class = 'aPage';
         $nvalues[] = $nvalue;
     }
     $values = $nvalues;
     if ($this->searchAddResults($values, $q)) {
         usort($values, "aActions::compareScores");
     }
     $this->pager = new aArrayPager(null, sfConfig::get('app_a_search_results_per_page', 10));
     $this->pager->setResultArray($values);
     $this->pager->setPage($request->getParameter('page', 1));
     $this->pager->init();
     $this->pagerUrl = "a/search?" . http_build_query(array("q" => $q));
     // setTitle takes care of escaping things
     $this->getResponse()->setTitle(aTools::getOptionI18n('title_prefix') . 'Search for ' . $q . aTools::getOptionI18n('title_suffix'));
     $this->results = $this->pager->getResults();
 }
示例#7
0
" class="a-nav a-nav-breadcrumb a-breadcrumb-<?php 
echo $name ? $name : 'component';
?>
 breadcrumb clearfix">
	<?php 
foreach ($nav as $pos => $item) {
    ?>
		<?php 
    if (!$item['archived'] || $draggable) {
        ?>
			<li class="<?php 
        echo $class;
        if ($item['slug'] == $active) {
            echo ' a-current-page';
        }
        ?>
"><?php 
        echo link_to($item['title'], aTools::urlForPage($item['slug']));
        if ($pos + 1 < count($nav)) {
            echo '<span class="a-breadcrumb-separator">' . $separator . '</span>';
        }
        ?>
			</li>
		<?php 
    }
    ?>
		
	<?php 
}
?>
</ul>
示例#8
0
 public function getUrl($absolute = true)
 {
     return aTools::urlForPage($this->getSlug(), $absolute);
 }
示例#9
0
		    <li><a href="#" class="a-btn a-save big"><?php 
echo __('Save', array(), 'apostrophe_blog');
?>
</a></li>
		    <li><a href="#" class="a-btn a-cancel no-label big"><?php 
echo __('Cancel', array(), 'apostrophe_blog');
?>
</a></li>
		  </ul>				
		</div>		

		<div id="a-blog-item-permalink-interface">
			<h6>Permalink:</h6> 
			<div class="a-blog-item-permalink-wrapper url">
        <span><?php 
echo aTools::urlForPage($a_blog_post->findBestEngine()->getSlug()) . '/';
?>
</span><?php 
// Dan, Can you echo the REAL URL prefix here -- I don't know how to build a URL based on the complex blog route business we are doing
?>
			</div>
			<div class="a-blog-item-permalink-wrapper slug">
				<input type="text" name="a_blog_item_permalink_interface" value="<?php 
echo $a_blog_post->slug;
?>
" id="a_blog_item_permalink_interface">
			  <ul class="a-controls blog-slug">
			    <li><a href="#" class="a-btn a-save mini"><?php 
echo __('Save', array(), 'apostrophe_blog');
?>
</a></li>
示例#10
0
 public function executeSearch(sfWebRequest $request)
 {
     // create the array of pages matching the query
     $q = $request->getParameter('q');
     if ($request->hasParameter('x')) {
         // We like to use input type="image" for presentation reasons, but it generates
         // ugly x and y parameters with click coordinates. Get rid of those and come back.
         return $this->redirect(sfContext::getInstance()->getController()->genUrl('a/search', true) . '?' . http_build_query(array("q" => $q)));
     }
     $key = strtolower(trim($q));
     $key = preg_replace('/\\s+/', ' ', $key);
     $replacements = sfConfig::get('app_a_search_refinements', array());
     if (isset($replacements[$key])) {
         $q = $replacements[$key];
     }
     $values = aZendSearch::searchLuceneWithValues(Doctrine::getTable('aPage'), $q, aTools::getUserCulture());
     $nvalues = array();
     foreach ($values as $value) {
         if (!sfContext::getInstance()->getUser()->isAuthenticated()) {
             if (isset($value->view_is_secure) && $value->view_is_secure) {
                 continue;
             }
         }
         $nvalue = $value;
         $nvalue->url = aTools::urlForPage($nvalue->slug, true);
         $nvalue->class = 'aPage';
         $nvalues[] = $nvalue;
     }
     $values = $nvalues;
     if ($this->searchAddResults($values, $q)) {
         usort($values, "aActions::compareScores");
     }
     $this->pager = new aArrayPager(null, sfConfig::get('app_a_search_results_per_page', 10));
     $this->pager->setResultArray($values);
     $this->pager->setPage($request->getParameter('page', 1));
     $this->pager->init();
     $this->pagerUrl = "a/search?" . http_build_query(array("q" => $q));
     // setTitle takes care of escaping things
     $this->getResponse()->setTitle(aTools::getOptionI18n('title_prefix') . 'Search for ' . $q);
     $this->results = $this->pager->getResults();
 }
示例#11
0
 /**
  * Prepends the current CMS page to the URL.
  *
  * @param  string $url The URL so far obtained from parent::generate
  * @param  Boolean $absolute  Whether to generate an absolute URL
  *
  * @return string The generated URL
  */
 public static function addPageToUrl(sfRoute $route, $url, $absolute)
 {
     $slug = aRouteTools::getContextEngineSlug($route);
     if (!$slug) {
         $defaults = $route->getDefaults();
         $page = aPageTable::getFirstEnginePage($defaults['module']);
         if (!$page) {
             $slug = null;
         } else {
             $slug = $page->slug;
         }
     }
     if (!$slug) {
         throw new sfException('Attempt to generate aRoute URL for module ' . $defaults['module'] . ' with no matching engine page on the site');
     }
     // A route URL of / for an engine route maps to the page itself, without a trailing /
     if ($url === '/') {
         $url = '';
     }
     // Ditto for / followed by a query string (missed this before)
     if (substr($url, 0, 2) === '/?') {
         $url = substr($url, 1);
     }
     $pageUrl = aTools::urlForPage($slug, $absolute);
     $rr = preg_quote(sfContext::getInstance()->getRequest()->getRelativeUrlRoot(), '/');
     // Strip controller off so it doesn't duplicate the controller in the
     // URL we just generated. Also strip off sf_relative_root if any.
     // We could use the slug directly, but that would
     // break if the CMS were not mounted at the root on a particular site.
     // Take care to function properly in the presence of an absolute URL
     if (preg_match("/^(?:https?:\\/\\/[^\\/]+)?{$rr}(?:\\/[^\\/]+\\.php)?(.*)\$/", $pageUrl, $matches)) {
         $pageUrl = $matches[1];
     }
     // Fix double / at beginning when engine is at root of site (think "just a blog")
     $finalUrl = $pageUrl . $url;
     $finalUrl = preg_replace('|^//|', '/', $finalUrl);
     return $finalUrl;
 }
示例#12
0
		    <li><a href="#" class="a-btn a-save big"><?php 
echo __('Save', array(), 'apostrophe_blog');
?>
</a></li>
		    <li><a href="#" class="a-btn a-cancel no-label big"><?php 
echo __('Cancel', array(), 'apostrophe_blog');
?>
</a></li>
		  </ul>				
		</div>

		<div id="a-blog-item-permalink-interface">
			<h6>Permalink:</h6>
			<div class="a-blog-item-permalink-wrapper url">
        <span><?php 
echo aTools::urlForPage($a_event->findBestEngine()->getSlug()) . '/';
?>
</span>
			</div>
			<div class="a-blog-item-permalink-wrapper slug">
				<input type="text" name="a_blog_item_interface" value="<?php 
echo $a_event->slug;
?>
" id="a_blog_item_permalink_interface">
			  <ul class="a-controls blog-slug">
			    <li><a href="#" class="a-btn a-save mini"><?php 
echo __('Save', array(), 'apostrophe_blog');
?>
</a></li>
			    <li><a href="#" class="a-btn a-cancel no-label mini"><?php 
echo __('Cancel', array(), 'apostrophe_blog');
示例#13
0
文件: _tabs.php 项目: verenate/gri
    $classes = '';
    if ($page) {
        if ($tab['level'] > 0) {
            if (aTools::pageIsDescendantOfInfo($page, $tab)) {
                $classes .= "a-current-page ";
            }
        }
        if ($page->slug === $tab['slug']) {
            $classes .= "a-current-page ";
        }
    }
    if ($tab['archived']) {
        $classes .= "a-archived-page ";
    }
    echo "class='{$classes} {$tabclass}'>";
    echo link_to($tab['title'], aTools::urlForPage($tab['slug']), array());
    echo "</li>\n";
    $tabcount++;
}
?>
</ul>
<?php 
if ($draggable) {
    ?>


	<script type="text/javascript">
	//<![CDATA[
	$(document).ready(
	  function() 
	  {
示例#14
0
    if ($page->id === $pinfo['id']) {
        ?>
		<li class="a-breadcrumb-title current-page" id="a-breadcrumb-title-rename">
			<?php 
        include_partial('a/renamePage', array('page' => $page, 'edit' => $page->userHasPrivilege('edit')));
        ?>
		</li>
	<?php 
    } else {
        ?>
		<li class="a-breadcrumb-title" id="a-breadcrumb-title-<?php 
        echo $pinfo['id'];
        ?>
">
			<?php 
        echo link_to($title, aTools::urlForPage($pinfo['slug']));
        ?>
		</li>
	<?php 
    }
    ?>
	
  <?php 
    if ($page->id === $pinfo['id']) {
        ?>
    <?php 
        if ($page->userHasPrivilege('edit')) {
            ?>
  
		<li class="a-breadcrumb-page-settings" id="a-breadcrumb-page-settings">
      <?php