Skip to content

Commit

Permalink
Merge branch 'cms-separation'
Browse files Browse the repository at this point in the history
  • Loading branch information
chillu committed Mar 29, 2011
2 parents d4dbb06 + 7d9904d commit 593754b
Show file tree
Hide file tree
Showing 220 changed files with 11,208 additions and 42,359 deletions.
41 changes: 11 additions & 30 deletions _config.php
Expand Up @@ -6,46 +6,27 @@
* @package cms
*/
Director::addRules(50, array(
'processes//$Action/$ID/$Batch' => 'BatchProcess_Controller',
'admin/help//$Action/$ID' => 'CMSHelp',
'' => 'RootURLController',
'admin/bulkload//$Action/$ID/$OtherID' => 'BulkLoaderAdmin',
'admin/cms//$Action/$ID/$OtherID' => 'CMSMain',
'dev/buildcache/$Action' => 'RebuildStaticCacheTask',
));

CMSMenu::add_director_rules();

// Default CMS HTMLEditorConfig
HtmlEditorConfig::get('cms')->setOptions(array(
'friendly_name' => 'Default CMS',
'priority' => '50',
'mode' => 'none',

'body_class' => 'typography',
'document_base_url' => Director::absoluteBaseURL(),

'urlconverter_callback' => "nullConverter",
'setupcontent_callback' => "sapphiremce_setupcontent",
'cleanup_callback' => "sapphiremce_cleanup",

'use_native_selects' => true, // fancy selects are bug as of SS 2.3.0
'valid_elements' => "@[id|class|style|title],#a[id|rel|rev|dir|tabindex|accesskey|type|name|href|target|title|class],-strong/-b[class],-em/-i[class],-strike[class],-u[class],#p[id|dir|class|align|style],-ol[class],-ul[class],-li[class],br,img[id|dir|longdesc|usemap|class|src|border|alt=|title|width|height|align],-sub[class],-sup[class],-blockquote[dir|class],-table[border=0|cellspacing|cellpadding|width|height|class|align|summary|dir|id|style],-tr[id|dir|class|rowspan|width|height|align|valign|bgcolor|background|bordercolor|style],tbody[id|class|style],thead[id|class|style],tfoot[id|class|style],#td[id|dir|class|colspan|rowspan|width|height|align|valign|scope|style],-th[id|dir|class|colspan|rowspan|width|height|align|valign|scope|style],caption[id|dir|class],-div[id|dir|class|align|style],-span[class|align|style],-pre[class|align],address[class|align],-h1[id|dir|class|align|style],-h2[id|dir|class|align|style],-h3[id|dir|class|align|style],-h4[id|dir|class|align|style],-h5[id|dir|class|align|style],-h6[id|dir|class|align|style],hr[class],dd[id|class|title|dir],dl[id|class|title|dir],dt[id|class|title|dir],@[id,style,class]",
'extended_valid_elements' => "img[class|src|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name|usemap],iframe[src|name|width|height|align|frameborder|marginwidth|marginheight|scrolling],object[width|height|data|type],param[name|value],map[class|name|id],area[shape|coords|href|target|alt]"
Director::addRules(1, array(
'$URLSegment//$Action/$ID/$OtherID' => 'ModelAsController',
));

HtmlEditorConfig::get('cms')->enablePlugins('media', 'fullscreen');
HtmlEditorConfig::get('cms')->enablePlugins(array('ssbuttons' => '../../../cms/javascript/tinymce_ssbuttons/editor_plugin_src.js'));

HtmlEditorConfig::get('cms')->insertButtonsBefore('formatselect', 'styleselect');
HtmlEditorConfig::get('cms')->insertButtonsBefore('advcode', 'ssimage', 'ssflash', 'sslink', 'unlink', 'anchor', 'separator' );
HtmlEditorConfig::get('cms')->insertButtonsAfter ('advcode', 'fullscreen', 'separator');

HtmlEditorConfig::get('cms')->removeButtons('tablecontrols');
HtmlEditorConfig::get('cms')->addButtonsToLine(3, 'tablecontrols');

// Register default side reports
SS_Report::register("SideReport", "SideReport_EmptyPages");
SS_Report::register("SideReport", "SideReport_RecentlyEdited");
SS_Report::register("SideReport", "SideReport_ToDo");
if (class_exists('SubsiteReportWrapper')) SS_Report::register('ReportAdmin', 'SubsiteReportWrapper("BrokenLinksReport")',-20);
else SS_Report::register('ReportAdmin', 'BrokenLinksReport',-20);


/**
* Register the default internal shortcodes.
*/
ShortcodeParser::get('default')->register('sitetree_link', array('SiteTree', 'link_shortcode_handler'));

Object::add_extension('File', 'SiteTreeFileDecorator');
137 changes: 137 additions & 0 deletions code/AdvancedSearchForm.php
@@ -0,0 +1,137 @@
<?php
/**
* More advanced search form
* @package cms
* @subpackage search
*/
class AdvancedSearchForm extends SearchForm {

/**
* the constructor of a Simple/basic SearchForm
*/
function __construct($controller, $name, $fields = null, $actions = null) {
if(!$fields) {
$fields = new FieldSet(
$searchBy = new CompositeField(
new HeaderField('SearchByHeader',_t('AdvancedSearchForm.SEARCHBY', 'SEARCH BY')),
new TextField("+", _t('AdvancedSearchForm.ALLWORDS', 'All Words')),
new TextField("quote", _t('AdvancedSearchForm.EXACT', 'Exact Phrase')),
new TextField("any", _t('AdvancedSearchForm.ATLEAST', 'At Least One Of the Words')),
new TextField("-", _t('AdvancedSearchForm.WITHOUT', 'Without the Words'))
),
$sortBy = new CompositeField(
new HeaderField('SortByHeader',_t('AdvancedSearchForm.SORTBY', 'SORT RESULTS BY')),
new OptionsetField("sortby", "",
array(
'Relevance' => _t('AdvancedSearchForm.RELEVANCE', 'Relevance'),
'LastUpdated' => _t('AdvancedSearchForm.LASTUPDATED', 'Last Updated'),
'PageTitle' => _t('AdvancedSearchForm.PAGETITLE', 'Page Title'),
),
'Relevance'
)
),
$chooseDate = new CompositeField(
new HeaderField('LastUpdatedHeader',_t('AdvancedSearchForm.LASTUPDATEDHEADER', 'LAST UPDATED')),
new DateField("From", _t('AdvancedSearchForm.FROM', 'From')),
new DateField("To", _t('AdvancedSearchForm.TO', 'To'))
)
);

$searchBy->ID = "AdvancedSearchForm_SearchBy";
$searchOnly->ID = "AdvancedSearchForm_SearchOnly";
$sortBy->ID = "AdvancedSearchForm_SortBy";
$chooseDate->ID = "AdvancedSearchForm_ChooseDate";
}

if(!$actions) {
$actions = new FieldSet(
new FormAction("results", _t('AdvancedSearchForm.GO', 'Go'))
);
}
parent::__construct($controller, $name, $fields, $actions);
}

public function forTemplate(){
return $this->renderWith(array("AdvancedSearchForm","Form"));
}

/* Return dataObjectSet of the results, using the form data.
*/
public function getResults($numPerPage = 10) {
$data = $this->getData();

if($data['+']) $keywords .= " +" . ereg_replace(" +", " +", trim($data['+']));
if($data['quote']) $keywords .= ' "' . $data['quote'] . '"';
if($data['any']) $keywords .= ' ' . $data['any'];
if($data['-']) $keywords .= " -" . ereg_replace(" +", " -", trim($data['-']));
$keywords = trim($keywords);

// This means that they want to just find pages where there's *no* match

if($keywords[0] == '-') {
$keywords = $data['-'];
$invertedMatch = true;
}


// Limit search to various sections
if($_REQUEST['OnlyShow']) {
$pageList = array();

// Find the associated pages
foreach($_REQUEST['OnlyShow'] as $section => $checked) {
$items = explode(",", $section);
foreach($items as $item) {
$page = DataObject::get_one('SiteTree', "\"URLSegment\" = '" . DB::getConn()->addslashes($item) . "'");
$pageList[] = $page->ID;
if(!$page) user_error("Can't find a page called '$item'", E_USER_WARNING);
$page->loadDescendantIDListInto($pageList);
}
}
$contentFilter = "\"ID\" IN (" . implode(",", $pageList) . ")";

// Find the files associated with those pages
$fileList = DB::query("SELECT \"FileID\" FROM \"Page_ImageTracking\" WHERE \"PageID\" IN (" . implode(",", $pageList) . ")")->column();
if($fileList) $fileFilter = "\"ID\" IN (" . implode(",", $fileList) . ")";
else $fileFilter = " 1 = 2 ";
}

if($data['From']) {
$filter .= ($filter?" AND":"") . " \"LastEdited\" >= '$data[From]'";
}
if($data['To']) {
$filter .= ($filter?" AND":"") . " \"LastEdited\" <= '$data[To]'";
}

if($filter) {
$contentFilter .= ($contentFilter?" AND":"") . $filter;
$fileFilter .= ($fileFilter?" AND":"") . $filter;
}

if($data['sortby']) {
$sorts = array(
'LastUpdated' => '"LastEdited" DESC',
'PageTitle' => '"Title" ASC',
'Relevance' => '"Relevance" DESC',
);
$sortBy = $sorts[$data['sortby']] ? $sorts[$data['sortby']] : $sorts['Relevance'];
}

$keywords = $this->addStarsToKeywords($keywords);

return $this->searchEngine($keywords, $numPerPage, $sortBy, $contentFilter, true, $fileFilter, $invertedMatch);
}

function getSearchQuery() {
$data = $_REQUEST;
if($data['+']) $keywords .= " +" . ereg_replace(" +", " +", trim($data['+']));
if($data['quote']) $keywords .= ' "' . $data['quote'] . '"';
if($data['any']) $keywords .= ' ' . $data['any'];
if($data['-']) $keywords .= " -" . ereg_replace(" +", " -", trim($data['-']));

return trim($keywords);
}

}

?>

0 comments on commit 593754b

Please sign in to comment.