From e2149e3d8b87b382563a9def6f376a5f289754d3 Mon Sep 17 00:00:00 2001 From: xue <> Date: Fri, 12 May 2006 12:38:32 +0000 Subject: Merge from 3.0 branch till 1054. --- .gitattributes | 16 ++- HISTORY | 3 +- buildscripts/index/api_index.php | 120 +++++++++++++++++++++ buildscripts/index/build.php | 65 +++++++++++ buildscripts/index/quickstart_index.php | 109 +++++++++++++++++++ buildscripts/texbuilder/build.php | 116 ++------------------ buildscripts/texbuilder/create_index.php | 90 ---------------- buildscripts/texbuilder/pages.php | 100 +++++++++++++++++ demos/quickstart/protected/application.xml | 7 +- demos/quickstart/protected/index/ZendSearch.php | 11 +- demos/quickstart/protected/index/api/_0.cfs | Bin 0 -> 378721 bytes demos/quickstart/protected/index/api/deletable | Bin 0 -> 4 bytes demos/quickstart/protected/index/api/segments | Bin 0 -> 27 bytes demos/quickstart/protected/index/data/_0.cfs | Bin 329302 -> 0 bytes demos/quickstart/protected/index/data/deletable | Bin 4 -> 0 bytes demos/quickstart/protected/index/data/segments | Bin 27 -> 0 bytes demos/quickstart/protected/index/quickstart/_0.cfs | Bin 0 -> 329302 bytes .../protected/index/quickstart/deletable | Bin 0 -> 4 bytes .../quickstart/protected/index/quickstart/segments | Bin 0 -> 27 bytes .../Samples/LabeledTextBox2/LabeledTextBox.php | 2 +- demos/quickstart/protected/pages/Search.page | 29 ++++- demos/quickstart/protected/pages/Search.php | 14 ++- demos/quickstart/themes/PradoSoft/style.css | 18 ++++ framework/Exceptions/messages.txt | 2 +- framework/I18N/TGlobalizationAutoDetect.php | 20 +++- framework/I18N/core/CultureInfo.php | 2 +- framework/I18N/core/MessageSource.php | 2 +- framework/TComponent.php | 2 +- framework/Util/TDataFieldAccessor.php | 2 +- framework/Web/Javascripts/TJSON.php | 1 - framework/Web/TAssetManager.php | 5 +- framework/Web/THttpResponse.php | 2 +- framework/Web/THttpSession.php | 10 +- framework/Web/UI/TThemeManager.php | 2 +- framework/Web/UI/WebControls/TBaseValidator.php | 3 +- framework/Web/UI/WebControls/TMultiView.php | 2 +- requirements/index.php | 12 +-- requirements/messages-bg.txt | 20 ++++ requirements/messages-zh.txt | 11 +- requirements/messages.txt | 11 +- requirements/template-bg.html | 50 +++++++++ 41 files changed, 610 insertions(+), 249 deletions(-) create mode 100644 buildscripts/index/api_index.php create mode 100644 buildscripts/index/build.php create mode 100644 buildscripts/index/quickstart_index.php delete mode 100644 buildscripts/texbuilder/create_index.php create mode 100644 buildscripts/texbuilder/pages.php create mode 100644 demos/quickstart/protected/index/api/_0.cfs create mode 100644 demos/quickstart/protected/index/api/deletable create mode 100644 demos/quickstart/protected/index/api/segments delete mode 100644 demos/quickstart/protected/index/data/_0.cfs delete mode 100644 demos/quickstart/protected/index/data/deletable delete mode 100644 demos/quickstart/protected/index/data/segments create mode 100644 demos/quickstart/protected/index/quickstart/_0.cfs create mode 100644 demos/quickstart/protected/index/quickstart/deletable create mode 100644 demos/quickstart/protected/index/quickstart/segments create mode 100644 requirements/messages-bg.txt create mode 100644 requirements/template-bg.html diff --git a/.gitattributes b/.gitattributes index 7602ad76..fd6a4424 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4,6 +4,9 @@ /UPGRADE -text /build.xml -text buildscripts/.htaccess -text +buildscripts/index/api_index.php -text +buildscripts/index/build.php -text +buildscripts/index/quickstart_index.php -text buildscripts/jsbuilder/JavaScript[!!-~]Documentation[!!-~]Tool.html -text buildscripts/jsbuilder/build.php -text buildscripts/jsbuilder/jsmin.php -text @@ -19,7 +22,7 @@ buildscripts/phing/tasks/ZendCodeAnalyzerTask.php -text buildscripts/phpbuilder/build.php -text buildscripts/setup.php -text buildscripts/texbuilder/build.php -text -buildscripts/texbuilder/create_index.php -text +buildscripts/texbuilder/pages.php -text buildscripts/texbuilder/prado3_quick_start.tex -text demos/composer/index.php -text demos/composer/index2.php -text @@ -112,9 +115,12 @@ demos/quickstart/protected/index/Zend/Search/Lucene/Storage/File.php -text demos/quickstart/protected/index/Zend/Search/Lucene/Storage/File/Filesystem.php -text demos/quickstart/protected/index/Zend/Search/TODO.txt -text demos/quickstart/protected/index/ZendSearch.php -text -demos/quickstart/protected/index/data/_0.cfs -text -demos/quickstart/protected/index/data/deletable -text -demos/quickstart/protected/index/data/segments -text +demos/quickstart/protected/index/api/_0.cfs -text +demos/quickstart/protected/index/api/deletable -text +demos/quickstart/protected/index/api/segments -text +demos/quickstart/protected/index/quickstart/_0.cfs -text +demos/quickstart/protected/index/quickstart/deletable -text +demos/quickstart/protected/index/quickstart/segments -text demos/quickstart/protected/pages/Advanced/Assets.page -text demos/quickstart/protected/pages/Advanced/Auth.page -text demos/quickstart/protected/pages/Advanced/Error.page -text @@ -1080,8 +1086,10 @@ framework/interfaces.php -text framework/prado.php -text /index.html -text requirements/index.php -text +requirements/messages-bg.txt -text requirements/messages-zh.txt -text requirements/messages.txt -text +requirements/template-bg.html -text requirements/template-zh.html -text requirements/template.html -text tests/FunctionalTests/PradoTester.php -text diff --git a/HISTORY b/HISTORY index 4aecc407..630b291f 100644 --- a/HISTORY +++ b/HISTORY @@ -12,8 +12,9 @@ Version 3.0.1 June 1, 2006 ENH: Ticket#150 - TDataGrid and TDataList now render table section tags (Qiang) ENH: Ticket#152 - constituent parts of TWizard are exposed (Qiang) ENH: added sanity check to calling event handlers (Qiang) -ENH: Added search for quickstart tutorials (Wei) +ENH: added search for quickstart tutorials (Wei) ENH: added support to property tags for template owner control (Qiang) +ENH: added Bulgarian requirement checker messages (StanProg) CHG: Ticket#151 - URL format is modified to handle empty GET values (Qiang) CHG: Ticket#153 - TAssetManager now ignores .svn directories (Qiang) NEW: TTableHeaderRow, TTableFooterRow and table section support (Qiang) diff --git a/buildscripts/index/api_index.php b/buildscripts/index/api_index.php new file mode 100644 index 00000000..ac2e37a7 --- /dev/null +++ b/buildscripts/index/api_index.php @@ -0,0 +1,120 @@ +_api = $api; + $this->_index = new Zend_Search_Lucene($index_file, true); + + + } + + function create_index() + { + echo "Building search index...\n"; + $files = $this->get_file_list($this->_api); + $count = 0; + foreach($files as $file) + { + $content = $this->get_details($file, $this->_api); + + $doc = new Zend_Search_Lucene_Document(); + + $title = $content['namespace'].'.'.$content['class']; + + echo " Adding ".$title."\n"; + + //unsearchable text + $doc->addField(Zend_Search_Lucene_Field::UnIndexed('link', $content['link'])); + $doc->addField(Zend_Search_Lucene_Field::UnIndexed('title', $title)); + //$doc->addField(Zend_Search_Lucene_Field::UnIndexed('text', $content['content'])); + + //searchable + $body = strtolower($this->sanitize($content['content'])).' '.strtolower($title); + $doc->addField(Zend_Search_Lucene_Field::Keyword('page', strtolower(str_replace('.',' ',$title)))); + $doc->addField(Zend_Search_Lucene_Field::Unstored('contents',$body)); + $this->_index->addDocument($doc); + $count++; + } + $this->_index->commit(); + echo "\n {$count} files indexed.\n"; + } + + function sanitize($input) + { + return htmlentities(strip_tags( $input )); + } + + + function get_file_list($path) + { + + $d = dir($path); + + $files = array(); + while (false !== ($entry = $d->read())) + { + $filepath = $path.'/'.$entry; + + if(is_dir($filepath) && is_int(strpos($entry, 'System'))) + { + $files = array_merge($files, $this->get_files($filepath)); + } + } + + $d->close(); + return $files; + } + + function get_files($path) + { + $d = dir($path); + + $files = array(); + while (false !== ($entry = $d->read())) + { + $filepath = $path.'/'.$entry; + if(is_file($filepath) && $entry[0] !== '_') + $files[] = realpath($filepath); + } + return $files; + $d->close(); + } + + function get_doc_content($file) + { + $content = file_get_contents($file); + $html = preg_replace('/

/','~~~', $content); + $html = preg_replace('/[\s\w\W\S]+/m', '', $html); + $html = preg_replace('/ |~+|\s{2,}/',' ',$html); + $html = preg_replace('/\s{2,}/',' ',$html); + $text = strip_tags($html); + $text = str_replace(' , ',', ',$text); + return $text; + } + + function get_details($file, $base) + { + $result['content'] = $this->get_doc_content($file); + $find = array($base, '.html', '-'); + $replace = array('', '', '.'); + $path = preg_split('/\/|\\\/', str_replace($find, $replace, $file)); + $result['namespace'] = $path[1]; + $result['class'] = $path[2]; + $result['link'] = self::API_URL.$path[1].'/'.$path[2].'.html'; + return $result; + } +} + + +?> \ No newline at end of file diff --git a/buildscripts/index/build.php b/buildscripts/index/build.php new file mode 100644 index 00000000..9ec0d659 --- /dev/null +++ b/buildscripts/index/build.php @@ -0,0 +1,65 @@ +create_index(); + } + else if(strtolower($argv[1]) == "api") + { + $api = new api_index($api_target, $api_source); + $api->create_index(); + } + else + { + $q = new Zend_Search_Lucene($quickstart_target); + $query = $argv[1]; + $hits = $q->find(strtolower($query)); + echo "Found ".count($hits)." for ".$query." in quick start\n"; + foreach($hits as $hit) + echo " ".$hit->title."\n"; + + $a = new Zend_Search_Lucene($api_target); + $query = $argv[1]; + $hits = $a->find(strtolower($query)); + echo "\nFound ".count($hits)." for ".$query." in API\n"; + foreach($hits as $hit) + { + echo " ".$hit->link."\n"; + } + } +} +else +{ + echo "Usage: 'php build.php quickstart' or 'php build.php api'\n"; +} + +?> \ No newline at end of file diff --git a/buildscripts/index/quickstart_index.php b/buildscripts/index/quickstart_index.php new file mode 100644 index 00000000..565734ef --- /dev/null +++ b/buildscripts/index/quickstart_index.php @@ -0,0 +1,109 @@ +_index = new Zend_Search_Lucene($index_file, true); + $this->_dir = $index_file; + $this->_base = $base; + $this->_source = $source; + } + + public function create_index() + { + echo "Building search index...\n"; + $pages = include($this->_source); + $count = 0; + foreach($pages as $chapter => $sections) + { + foreach($sections as $section) + { + echo " Adding $section\n"; + $page = $this->_base.'/'.$section; + $file_content = file_get_contents($page); + $this->add($file_content,$section, filemtime($page)); + $count++; + } + } + + $this->_index->commit(); + echo "\n {$count} files indexed.\n"; + } + + public function add($content, $section, $mtime) + { + foreach($this->split_headings($content) as $headers) + { + $doc = new Zend_Search_Lucene_Document(); + $link = "index.php?page=".preg_replace('/\/|\\\/', '.', $section); + $link = str_replace('.page', '', $link).'#'.$headers['section']; + + //unsearchable text + $doc->addField(Zend_Search_Lucene_Field::UnIndexed('link', $link)); + $doc->addField(Zend_Search_Lucene_Field::UnIndexed('mtime', $mtime)); + $doc->addField(Zend_Search_Lucene_Field::UnIndexed('title', $headers['title'])); + $doc->addField(Zend_Search_Lucene_Field::UnIndexed('text', $headers['content'])); + + //searchable text + $doc->addField(Zend_Search_Lucene_Field::Keyword('page', strtolower($headers['title']))); + $body = strtolower($this->sanitize($headers['content'])).' '.strtolower($headers['title']); + $doc->addField(Zend_Search_Lucene_Field::Unstored('contents',$body)); + $this->_index->addDocument($doc); + } + } + + function sanitize($input) + { + return htmlentities(strip_tags( $input )); + } + + public function index() + { + return $this->_index; + } + + protected function split_headings($html) + { + $html = preg_replace('/<\/?com:TContent[^<]*>/', '', $html); + + $html = preg_replace('/([^<]*)<\/b>/', '$1', $html); + $html = preg_replace('/([^<]*)<\/i>/', '$1', $html); + $html = preg_replace('/([^<]*)<\/tt>/', '$1', $html); + + $html = preg_replace('/]*)>([^<]*)<\/h1>/', '$2', $html); + $html = preg_replace('/]*)>([^<]*)<\/h2>/', '$2', $html); + $html = preg_replace('/]*)>([^<]*)<\/h3>/', '$2', $html); + + + $sections = preg_split('/]*>([^<]+)<\/hh>/', $html,-1); + $headers = array(); + preg_match_all('/]*)>([^<]+)<\/hh>/', $html, $headers); + $contents = array(); + for($i = 1, $t = count($sections); $i < $t; $i++) + { + $content['title'] = trim($this->sanitize($headers[2][$i-1])); + $sec = array(); + preg_match('/"([^"]*)"/', $headers[1][$i-1], $sec); + $content['section'] = str_replace('"', '',$sec[0]); + $content['content'] = trim($this->sanitize($sections[$i])); + $contents[] = $content; + } + + return $contents; + } + + public function commit() + { + $this->_index->commit(); + $count = $this->_index->count(); + echo "\nSaving search index ({$count}) to {$this->_dir}\n\n"; + } +} +?> \ No newline at end of file diff --git a/buildscripts/texbuilder/build.php b/buildscripts/texbuilder/build.php index f0556e3f..cbea9859 100644 --- a/buildscripts/texbuilder/build.php +++ b/buildscripts/texbuilder/build.php @@ -10,102 +10,9 @@ $mainTexFile = dirname(__FILE__).'/prado3_quick_start.tex'; //page root location $base = realpath(dirname(__FILE__).'/../../demos/quickstart/protected/pages/'); -//search index data directory -$index_dir = realpath(dirname(__FILE__).'/../../demos/quickstart/protected/index/data/'); - - -//list page into chapters -$pages['Getting Started'] = array( - 'GettingStarted/Introduction.page', - 'GettingStarted/AboutPrado.page', - 'GettingStarted/Installation.page', - 'GettingStarted/HelloWorld.page', - 'GettingStarted/Upgrading.page' - ); - -$pages['Fundamentals'] = array( - 'Fundamentals/Architecture.page', - 'Fundamentals/Components.page', - 'Fundamentals/Controls.page', - 'Fundamentals/Pages.page', - 'Fundamentals/Modules.page', - 'Fundamentals/Services.page', - 'Fundamentals/Applications.page', - 'Fundamentals/Hangman.page'); - -$pages['Configurations'] = array( - 'Configurations/Overview.page', - 'Configurations/Templates1.page', - 'Configurations/Templates2.page', - 'Configurations/Templates3.page', - 'Configurations/AppConfig.page', - 'Configurations/PageConfig.page'); - -$pages['Control Reference : Standard Controls'] = array( - 'Controls/Button.page', - 'Controls/CheckBox.page', - 'Controls/ColorPicker.page', - 'Controls/DatePicker.page', - 'Controls/Expression.page', - 'Controls/FileUpload.page', - 'Controls/Head.page', - 'Controls/HiddenField.page', - 'Controls/HtmlArea.page', - 'Controls/HyperLink.page', - 'Controls/ImageButton.page', - 'Controls/ImageMap.page', - 'Controls/Image.page', - 'Controls/InlineFrame.page', - 'Controls/JavascriptLogger.page', - 'Controls/Label.page', - 'Controls/LinkButton.page', - 'Controls/Literal.page', - 'Controls/MultiView.page', - 'Controls/Panel.page', - 'Controls/PlaceHolder.page', - 'Controls/RadioButton.page', - 'Controls/SafeHtml.page', - 'Controls/Statements.page', - 'Controls/Table.page', - 'Controls/TextBox.page', - 'Controls/TextHighlighter.page', - 'Controls/Wizard.page'); - -$pages['Control Reference : List Controls'] = array( - 'Controls/List.page'); - -$pages['Control Reference : Validation Controls'] = array( - 'Controls/Validation.page'); - -$pages['Control Reference : Data Controls'] = array( - 'Controls/Data.page', - 'Controls/DataList.page', - 'Controls/DataGrid.page', - 'Controls/Repeater.page'); - -$pages['Write New Controls'] = array( - 'Controls/NewControl.page'); - -$pages['Advanced Topics'] = array( - 'Advanced/Auth.page', - 'Advanced/Security.page', - 'Advanced/Assets.page', - 'Advanced/MasterContent.page', - 'Advanced/Themes.page', - 'Advanced/State.page', - 'Advanced/Logging.page', - 'Advanced/I18N.page', - 'Advanced/Error.page', - 'Advanced/Performance.page'); - -$pages['Client-side Scripting'] = array( - 'Advanced/Scripts.page', - 'Advanced/Scripts1.page', - 'Advanced/Scripts2.page', - 'Advanced/Scripts3.page'); - //-------------- END CONFIG ------------------ +$pages = include('pages.php'); function escape_verbatim($matches) { @@ -259,9 +166,9 @@ function parse_html($page,$html) $html = preg_replace('/<\/li>/', '', $html); //headings - $html = preg_replace('/

([^<]+)<\/h1>/', '\section{$1}', $html); - $html = preg_replace('/

([^<]+)<\/h2>/', '\subsection{$1}', $html); - $html = preg_replace('/

([^<]+)<\/h3>/', '\subsubsection{$1}', $html); + $html = preg_replace('/([^<]+)<\/h1>/', '\section{$1}', $html); + $html = preg_replace('/([^<]+)<\/h2>/', '\subsection{$1}', $html); + $html = preg_replace('/([^<]+)<\/h3>/', '\subsubsection{$1}', $html); @@ -318,8 +225,8 @@ $header_count = 0; //--------------- Indexer ------------------- -require_once('create_index.php'); -$indexer = new quickstart_index($index_dir); +//require_once('create_index.php'); +//$indexer = new quickstart_index($index_dir); // ---------------- Create the Tex files --------- $count = 1; @@ -339,14 +246,13 @@ foreach($pages as $chapter => $sections) $current_path = $page; //add id to

,

, <3> - $content = set_header_id(file_get_contents($page),$j++); - file_put_contents($page, $content); + $tmp_content = set_header_id(file_get_contents($page),$j++); + file_put_contents($page, $tmp_content); $content .= get_section_label($section); $file_content = file_get_contents($page); - $tex = parse_html($page,$file_content); - $content .= $tex; - $indexer->add($file_content,$section, filemtime($page)); + $tex = + $content .= parse_html($page,$file_content); } //var_dump($content); @@ -355,7 +261,7 @@ foreach($pages as $chapter => $sections) echo "\n"; } -$indexer->commit(); +//$indexer->commit(); if($argc <= 1 && $count > 1) { diff --git a/buildscripts/texbuilder/create_index.php b/buildscripts/texbuilder/create_index.php deleted file mode 100644 index b451473d..00000000 --- a/buildscripts/texbuilder/create_index.php +++ /dev/null @@ -1,90 +0,0 @@ -_index = new Zend_Search_Lucene($index_file, true); - $this->_dir = $index_file; - echo "Building search index...\n"; - } - - public function add($content, $section, $mtime) - { - foreach($this->split_headings($content) as $headers) - { - $doc = new Zend_Search_Lucene_Document(); - $link = "index.php?page=".preg_replace('/\/|\\\/', '.', $section); - $link = str_replace('.page', '', $link).'#'.$headers['section']; - - //unsearchable text - $doc->addField(Zend_Search_Lucene_Field::UnIndexed('link', $link)); - $doc->addField(Zend_Search_Lucene_Field::UnIndexed('mtime', $mtime)); - $doc->addField(Zend_Search_Lucene_Field::UnIndexed('title', $headers['title'])); - $doc->addField(Zend_Search_Lucene_Field::UnIndexed('text', $headers['content'])); - - //searchable text - $doc->addField(Zend_Search_Lucene_Field::Keyword('page', strtolower($headers['title']))); - $body = strtolower($this->sanitize($headers['content'])).' '.strtolower($headers['title']); - $doc->addField(Zend_Search_Lucene_Field::Unstored('contents',$body)); - $this->_index->addDocument($doc); - } - } - - function sanitize($input) - { - return htmlentities(strip_tags( $input )); - } - - public function index() - { - return $this->_index; - } - - protected function split_headings($html) - { - $html = preg_replace('/<\/?com:TContent[^<]*>/', '', $html); - - $html = preg_replace('/([^<]*)<\/b>/', '$1', $html); - $html = preg_replace('/([^<]*)<\/i>/', '$1', $html); - $html = preg_replace('/([^<]*)<\/tt>/', '$1', $html); - - $html = preg_replace('/]*)>([^<]*)<\/h1>/', '$2', $html); - $html = preg_replace('/]*)>([^<]*)<\/h2>/', '$2', $html); - $html = preg_replace('/]*)>([^<]*)<\/h3>/', '$2', $html); - - - $sections = preg_split('/]*>([^<]+)<\/hh>/', $html,-1); - $headers = array(); - preg_match_all('/]*)>([^<]+)<\/hh>/', $html, $headers); - $contents = array(); - for($i = 1, $t = count($sections); $i < $t; $i++) - { - $content['title'] = trim($this->sanitize($headers[2][$i-1])); - $sec = array(); - preg_match('/"([^"]*)"/', $headers[1][$i-1], $sec); - $content['section'] = str_replace('"', '',$sec[0]); - $content['content'] = trim($this->sanitize($sections[$i])); - $contents[] = $content; - } - - return $contents; - } - - public function commit() - { - $this->_index->commit(); - $count = $this->_index->count(); - echo "\nSaving search index ({$count}) to {$this->_dir}\n\n"; - } -} -?> \ No newline at end of file diff --git a/buildscripts/texbuilder/pages.php b/buildscripts/texbuilder/pages.php new file mode 100644 index 00000000..c55747c6 --- /dev/null +++ b/buildscripts/texbuilder/pages.php @@ -0,0 +1,100 @@ + \ No newline at end of file diff --git a/demos/quickstart/protected/application.xml b/demos/quickstart/protected/application.xml index abac1088..fed0ec22 100644 --- a/demos/quickstart/protected/application.xml +++ b/demos/quickstart/protected/application.xml @@ -10,9 +10,12 @@ --> - + IndexDataDirectory="Application.index.quickstart" /> + diff --git a/demos/quickstart/protected/index/ZendSearch.php b/demos/quickstart/protected/index/ZendSearch.php index 136004de..ec15729c 100644 --- a/demos/quickstart/protected/index/ZendSearch.php +++ b/demos/quickstart/protected/index/ZendSearch.php @@ -26,10 +26,13 @@ class ZendSearch extends TModule protected function importZendNamespace() { - $zendBase = !is_null($this->_ZF) ? $this->_ZF.'.*' : 'Application.index.*'; - $path = !is_null($this->_ZF) ? $this->_ZF.'.Zend.*' : 'Application.index.Zend.*'; - Prado::using($zendBase); - Prado::setPathOfAlias('Zend', Prado::getPathOfNamespace($path)); + if(is_null(Prado::getPathOfAlias('Zend'))) + { + $zendBase = !is_null($this->_ZF) ? $this->_ZF.'.*' : 'Application.index.*'; + $path = !is_null($this->_ZF) ? $this->_ZF.'.Zend.*' : 'Application.index.Zend.*'; + Prado::using($zendBase); + Prado::setPathOfAlias('Zend', Prado::getPathOfNamespace($path)); + } } protected function getZendSearch() diff --git a/demos/quickstart/protected/index/api/_0.cfs b/demos/quickstart/protected/index/api/_0.cfs new file mode 100644 index 00000000..b5eb219b Binary files /dev/null and b/demos/quickstart/protected/index/api/_0.cfs differ diff --git a/demos/quickstart/protected/index/api/deletable b/demos/quickstart/protected/index/api/deletable new file mode 100644 index 00000000..593f4708 Binary files /dev/null and b/demos/quickstart/protected/index/api/deletable differ diff --git a/demos/quickstart/protected/index/api/segments b/demos/quickstart/protected/index/api/segments new file mode 100644 index 00000000..da225127 Binary files /dev/null and b/demos/quickstart/protected/index/api/segments differ diff --git a/demos/quickstart/protected/index/data/_0.cfs b/demos/quickstart/protected/index/data/_0.cfs deleted file mode 100644 index f3cb1bfb..00000000 Binary files a/demos/quickstart/protected/index/data/_0.cfs and /dev/null differ diff --git a/demos/quickstart/protected/index/data/deletable b/demos/quickstart/protected/index/data/deletable deleted file mode 100644 index 593f4708..00000000 Binary files a/demos/quickstart/protected/index/data/deletable and /dev/null differ diff --git a/demos/quickstart/protected/index/data/segments b/demos/quickstart/protected/index/data/segments deleted file mode 100644 index 5509e664..00000000 Binary files a/demos/quickstart/protected/index/data/segments and /dev/null differ diff --git a/demos/quickstart/protected/index/quickstart/_0.cfs b/demos/quickstart/protected/index/quickstart/_0.cfs new file mode 100644 index 00000000..f3cb1bfb Binary files /dev/null and b/demos/quickstart/protected/index/quickstart/_0.cfs differ diff --git a/demos/quickstart/protected/index/quickstart/deletable b/demos/quickstart/protected/index/quickstart/deletable new file mode 100644 index 00000000..593f4708 Binary files /dev/null and b/demos/quickstart/protected/index/quickstart/deletable differ diff --git a/demos/quickstart/protected/index/quickstart/segments b/demos/quickstart/protected/index/quickstart/segments new file mode 100644 index 00000000..5509e664 Binary files /dev/null and b/demos/quickstart/protected/index/quickstart/segments differ diff --git a/demos/quickstart/protected/pages/Controls/Samples/LabeledTextBox2/LabeledTextBox.php b/demos/quickstart/protected/pages/Controls/Samples/LabeledTextBox2/LabeledTextBox.php index 5bbf4ce2..fc912003 100644 --- a/demos/quickstart/protected/pages/Controls/Samples/LabeledTextBox2/LabeledTextBox.php +++ b/demos/quickstart/protected/pages/Controls/Samples/LabeledTextBox2/LabeledTextBox.php @@ -5,7 +5,7 @@ class LabeledTextBox extends TCompositeControl private $_label; private $_textbox; - protected function createChildControls() + public function createChildControls() { $this->_label=new TLabel; $this->_label->setID('Label'); diff --git a/demos/quickstart/protected/pages/Search.page b/demos/quickstart/protected/pages/Search.page index d2aee66e..d3391222 100644 --- a/demos/quickstart/protected/pages/Search.page +++ b/demos/quickstart/protected/pages/Search.page @@ -3,10 +3,29 @@ - + +
- Found <%# $this->Parent->Data->Count %> results. + Found <%# $this->Parent->Data->Count %> classes in API documentation. +
+
+ +
+ +
+
+
+ + + +
+ Found <%# $this->Parent->Data->Count %> results in quickstart tutorial.
@@ -20,9 +39,9 @@

<%# $this->Page->HighlightSearch($this->DataItem->text) %>

- - Unable to find "<%= htmlentities($this->Page->search->Text) %>". -
+ + No results available for "<%= htmlentities($this->Page->search->Text) %>". + \ No newline at end of file diff --git a/demos/quickstart/protected/pages/Search.php b/demos/quickstart/protected/pages/Search.php index c7bdce89..297d2f50 100644 --- a/demos/quickstart/protected/pages/Search.php +++ b/demos/quickstart/protected/pages/Search.php @@ -9,9 +9,17 @@ class Search extends TPage { if(!$this->IsPostBack && strlen($text = $this->search->getText()) > 0) { - $search = $this->getApplication()->getModule("search"); - $this->results->setDataSource($search->find($text)); - $this->results->dataBind(); + $quickstart = $this->getApplication()->getModule("quickstart_search"); + $hits_1 = $quickstart->find($text); + $this->quickstart_results->setDataSource($hits_1); + $this->quickstart_results->dataBind(); + + $api = $this->getApplication()->getModule("api_search"); + $hits_2 = $api->find($text); + $this->api_results->setDataSource($hits_2); + $this->api_results->dataBind(); + + $this->emptyResult->setVisible(count($hits_1)+count($hits_2) == 0); } } diff --git a/demos/quickstart/themes/PradoSoft/style.css b/demos/quickstart/themes/PradoSoft/style.css index 38ef5375..3bf73c80 100644 --- a/demos/quickstart/themes/PradoSoft/style.css +++ b/demos/quickstart/themes/PradoSoft/style.css @@ -364,4 +364,22 @@ dd .searchterm { font-weight: bold; +} + +.searchAPIItem +{ + margin-top: 5px; + margin-left: 20px; + margin-right: 20px; +} + +.searchHeader, .emptyResult +{ + margin-top: 30px; +} + +.empty_search_result +{ + text-align: center; + margin: 30px; } \ No newline at end of file diff --git a/framework/Exceptions/messages.txt b/framework/Exceptions/messages.txt index effc3636..ebdbaaea 100644 --- a/framework/Exceptions/messages.txt +++ b/framework/Exceptions/messages.txt @@ -161,7 +161,7 @@ templatecontrol_mastercontrol_invalid = Master control must be of type TTemplate templatecontrol_contentid_duplicated = TContent ID '{0}' is duplicated. templatecontrol_placeholderid_duplicated= TContentPlaceHolder ID '{0}' is duplicated. templatecontrol_directive_invalid = {0}.{1} can only accept a static text string through a template directive. -templatecontrol_placeholder_inexistent = TContent '{0}' does not have a matching TPlaceHolder. +templatecontrol_placeholder_inexistent = TContent '{0}' does not have a matching TContentPlaceHolder. page_form_duplicated = A page can contain at most one TForm. Use regular HTML form tags for the rest forms. page_isvalid_unknown = TPage.IsValid has not been evaluated yet. diff --git a/framework/I18N/TGlobalizationAutoDetect.php b/framework/I18N/TGlobalizationAutoDetect.php index 3d550a62..7393d79a 100644 --- a/framework/I18N/TGlobalizationAutoDetect.php +++ b/framework/I18N/TGlobalizationAutoDetect.php @@ -1,15 +1,27 @@ + * @link http://www.pradosoft.com/ + * @copyright Copyright © 2005 PradoSoft + * @license http://www.pradosoft.com/license/ + * @version $Revision: 1.66 $ $Date: ${DATE} ${TIME} $ + * @package System.I18N + */ +/** + * Import the HTTPNeogtiator + */ Prado::using('System.I18N.core.HTTPNegotiator'); /** - * ${classname} - * - * ${description} + * TGlobalizationAutoDetect class will automatically try to resolve the default + * culture using the user browser language settings. * * @author Wei Zhuo * @version $Revision: 1.66 $ $Date: ${DATE} ${TIME} $ - * @package ${package} + * @package System.I18N */ class TGlobalizationAutoDetect extends TGlobalization { diff --git a/framework/I18N/core/CultureInfo.php b/framework/I18N/core/CultureInfo.php index fe2c45e6..299a8b16 100644 --- a/framework/I18N/core/CultureInfo.php +++ b/framework/I18N/core/CultureInfo.php @@ -161,7 +161,7 @@ class CultureInfo * Initializes a new instance of the CultureInfo class based on the * culture specified by name. E.g. new CultureInfo('en_AU'); * The culture indentifier must be of the form - * "_(country/region/variant)". + * "language_(country/region/variant)". * @param string a culture name, e.g. "en_AU". * @return return new CultureInfo. */ diff --git a/framework/I18N/core/MessageSource.php b/framework/I18N/core/MessageSource.php index d69a13d9..6563f8c9 100644 --- a/framework/I18N/core/MessageSource.php +++ b/framework/I18N/core/MessageSource.php @@ -121,7 +121,7 @@ abstract class MessageSource implements IMessageSource * @param string the location of the resource. * @param string the filename of the custom message source. * @return MessageSource a new message source of the specified type. - * @throw InvalidMessageSourceTypeException + * @throws InvalidMessageSourceTypeException */ static function &factory($type, $source='.', $filename='') { diff --git a/framework/TComponent.php b/framework/TComponent.php index 64854692..5501f137 100644 --- a/framework/TComponent.php +++ b/framework/TComponent.php @@ -397,7 +397,7 @@ class TComponent * Evaluates a list of PHP statements. * @param string PHP statements * @return string content echoed or printed by the PHP statements - * @throw TInvalidOperationException if the statements are invalid + * @throws TInvalidOperationException if the statements are invalid */ public function evaluateStatements($statements) { diff --git a/framework/Util/TDataFieldAccessor.php b/framework/Util/TDataFieldAccessor.php index 09512a28..6af972e9 100644 --- a/framework/Util/TDataFieldAccessor.php +++ b/framework/Util/TDataFieldAccessor.php @@ -46,7 +46,7 @@ class TDataFieldAccessor * @param mixed data containing the field value, can be an array, TMap, TList or object. * @param mixed field value * @return mixed value at the specified field - * @throw TInvalidDataValueException if field or data is invalid + * @throws TInvalidDataValueException if field or data is invalid */ public static function getDataFieldValue($data,$field) { diff --git a/framework/Web/Javascripts/TJSON.php b/framework/Web/Javascripts/TJSON.php index e653264b..63f77b40 100644 --- a/framework/Web/Javascripts/TJSON.php +++ b/framework/Web/Javascripts/TJSON.php @@ -45,7 +45,6 @@ * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * -* @category * @package System.Web.Javascripts * @author Michal Migurski * @author Matt Knapp diff --git a/framework/Web/TAssetManager.php b/framework/Web/TAssetManager.php index f3ebe7c3..f9fe156f 100644 --- a/framework/Web/TAssetManager.php +++ b/framework/Web/TAssetManager.php @@ -111,7 +111,7 @@ class TAssetManager extends TModule throw new TInvalidOperationException('assetmanager_basepath_unchangeable'); else { - $this->_basePath=Prado::getPathOfAlias($value); + $this->_basePath=Prado::getPathOfNamespace($value); if($this->_basePath===null || !is_dir($this->_basePath) || !is_writable($this->_basePath)) throw new TInvalidDataValueException('assetmanage_basepath_invalid',$value); } @@ -148,7 +148,8 @@ class TAssetManager extends TModule * @param boolean If true, file modification time will be checked even if the application * is in performance mode. * @return string an absolute URL to the published directory - * @throw TInvalidDataValueException if the file path to be published is invalid + * @throws TInvalidDataValueException if the file path to be published is + * invalid */ public function publishFilePath($path,$checkTimestamp=false) { diff --git a/framework/Web/THttpResponse.php b/framework/Web/THttpResponse.php index ce4bf4b1..582a3db3 100644 --- a/framework/Web/THttpResponse.php +++ b/framework/Web/THttpResponse.php @@ -129,7 +129,7 @@ class THttpResponse extends TModule implements ITextWriter } /** - * @string content type, default is text/html + * @return string content type, default is text/html */ public function setContentType($type) { diff --git a/framework/Web/THttpSession.php b/framework/Web/THttpSession.php index fa53022d..13526dd1 100644 --- a/framework/Web/THttpSession.php +++ b/framework/Web/THttpSession.php @@ -45,14 +45,16 @@ * request module. It can be accessed via {@link TApplication::getSession()}. * * THttpSession may be configured in application configuration file as follows, + * * + * * where {@link getSessionName SessionName}, {@link getSavePath SavePath}, - * {@link getCookieMode CookieMode}, {@link getUseCustomStorage UseCustomStorage}, - * {@link getAutoStart AutoStart}, {@link getGCProbability GCProbability}, - * {@link getUseTransparentSessionID UseTransparentSessionID} and - * {@link getTimeOut TimeOut} are configurable properties of THttpSession. + * {@link getCookieMode CookieMode}, {@link getUseCustomStorage + * UseCustomStorage}, {@link getAutoStart AutoStart}, {@link getGCProbability + * GCProbability}, {@link getUseTransparentSessionID UseTransparentSessionID} + * and {@link getTimeOut TimeOut} are configurable properties of THttpSession. * * @author Qiang Xue * @version $Revision: $ $Date: $ diff --git a/framework/Web/UI/TThemeManager.php b/framework/Web/UI/TThemeManager.php index 83032684..7ae36556 100644 --- a/framework/Web/UI/TThemeManager.php +++ b/framework/Web/UI/TThemeManager.php @@ -104,7 +104,7 @@ class TThemeManager extends TModule throw new TInvalidOperationException('thememanager_basepath_unchangeable'); else { - $this->_basePath=Prado::getPathOfAlias($value); + $this->_basePath=Prado::getPathOfNamespace($value); if($this->_basePath===null || !is_dir($this->_basePath)) throw new TInvalidDataValueException('thememanager_basepath_invalid',$value); } diff --git a/framework/Web/UI/WebControls/TBaseValidator.php b/framework/Web/UI/WebControls/TBaseValidator.php index c39db85a..ffdfd057 100644 --- a/framework/Web/UI/WebControls/TBaseValidator.php +++ b/framework/Web/UI/WebControls/TBaseValidator.php @@ -414,7 +414,8 @@ abstract class TBaseValidator extends TLabel implements IValidator /** * @return TControl control to be validated. Null if no control is found. - * @throw TConfigurationException if {@link getControlToValidate ControlToValidate} is empty or does not point to a valid control + * @throws TConfigurationException if {@link getControlToValidate + * ControlToValidate} is empty or does not point to a valid control */ protected function getValidationTarget() { diff --git a/framework/Web/UI/WebControls/TMultiView.php b/framework/Web/UI/WebControls/TMultiView.php index 6dd0d8f1..59b9f53d 100644 --- a/framework/Web/UI/WebControls/TMultiView.php +++ b/framework/Web/UI/WebControls/TMultiView.php @@ -369,7 +369,7 @@ class TView extends TControl /** * @param boolean - * @throw TInvalidOperationException whenever this method is invoked. + * @throws TInvalidOperationException whenever this method is invoked. */ public function setVisible($value) { diff --git a/requirements/index.php b/requirements/index.php index b28339b0..5c63912b 100644 --- a/requirements/index.php +++ b/requirements/index.php @@ -33,12 +33,12 @@ $requirements = array( array(true,'version_compare(PHP_VERSION,"5.0.4",">=")','PHP version check','PHP 5.0.4 or higher required'), array(false,'version_compare(PHP_VERSION,"5.1.0",">=")','PHP version check','PHP 5.1.0 or higher preferred'), array(true,'class_exists("DOMDocument",false)','DOM extension check','DOM extension required'), - array(false,'function_exists("iconv")','ICONV function check','ICONV extension optional'), - array(false,'extension_loaded("zlib")','Zlib check','Zlib extension optional'), - array(false,'extension_loaded("sqlite")','SQLite check','SQLite extension optional'), - array(false,'extension_loaded("memcache")','Memcache check','Memcache extension optional'), - array(false,'extension_loaded("apc")','APC cache check','APC extension optional'), - array(false,'extension_loaded("mcrypt")','Mcrypt check','Mcrypt extension optional'), + array(false,'function_exists("iconv")','ICONV extension check','ICONV extension optional'), + array(false,'extension_loaded("zlib")','Zlib extension check','Zlib extension optional'), + array(false,'extension_loaded("sqlite")','SQLite extension check','SQLite extension optional'), + array(false,'extension_loaded("memcache")','Memcache extension check','Memcache extension optional'), + array(false,'extension_loaded("apc")','APC extension check','APC extension optional'), + array(false,'extension_loaded("mcrypt")','Mcrypt extension check','Mcrypt extension optional'), ); $results = "\n"; diff --git a/requirements/messages-bg.txt b/requirements/messages-bg.txt new file mode 100644 index 00000000..62387ee8 --- /dev/null +++ b/requirements/messages-bg.txt @@ -0,0 +1,20 @@ +all passed = Поздравления! Конфигурацията на вашия сървър удовлетворява всички изисквания на PRADO. +passed with warnings = Конфигурацията на вашия сървър удовлетворява минималните изисквания на PRADO. Моля, обърнете внимание на предупрежденията по-долу. +failed = За съжаление, вашият сървър не удовлетворява изискванията на PRADO. +PHP version check = Проверка за версията на PHP +PHP 5.0.4 or higher required = Изисква се PHP 5.0.4 или по-висока версия. +PHP 5.1.0 or higher preferred = Препоръчва се PHP 5.1.0 или по-висока версия. Това ще предотврати грешката предизвикана от рекурсивните __get/__set извиквания. +SQLite extension check = Проверка за SQLite +SQLite extension optional = SQLite разширението е незадължително. Ако не е заредено, няма да можете да ползвате TSqliteCache. +Memcache extension check = Проверка за Memcache +Memcache extension optional = Memcache разширението е незадължително. Ако не е заредено, няма да можете да ползвате TMemCache. +APC extension check = Проверка за APC cache +APC extension optional = APC разширението е незадължително. Ако не е заредено, няма да можете да ползвате TAPCCache. +Zlib extension check = Проверка за Zlib +Zlib extension optional = Zlib разширението е незадължително. Ако не е заредено, състоянието на страницата няма да бъде компресирано и размера на страницата може да се увеличи. +DOM extension check = Проверка за DOM разширението +DOM extension required = DOM разширението е задължително за PRADO. Използва се в TXmlDocument за анализ на XML-базирани конфигурации. +ICONV extension check = Проверка за ICONV функцията +ICONV extension optional = ICONV разширението е незадължително. Ако не е заредено, е възможно някои компоненти свързани с интернационализацията да не работят коректно. +Mcrypt extension check = Проверка за Mcrypt +Mcrypt extension optional = Mcrypt разширението е незадължително. Ако не е заредено, чувствителни данни като viewstate, няма да могат да бъдат криптирани. \ No newline at end of file diff --git a/requirements/messages-zh.txt b/requirements/messages-zh.txt index 4b3f4acc..3527a1ce 100644 --- a/requirements/messages-zh.txt +++ b/requirements/messages-zh.txt @@ -4,14 +4,17 @@ failed = 对不起,您的服务器配置不符合PRADO的要求。 PHP version check = PHP版本检查 PHP 5.0.4 or higher required = PRADO需要PHP 5.0.4或更高版本。 PHP 5.1.0 or higher preferred = PRADO推荐使用PHP 5.1.0或更高版本。它将避免由于递归调用__get/__call引起的错误。 -SQLite check = SQLite模块检查 +SQLite extension check = SQLite模块检查 SQLite extension optional = SQLite模块是可选的。如果它不存在,您将无法使用TSQLiteCache。 -Memcache check = Memcache模块检查 +Memcache extension check = Memcache模块检查 Memcache extension optional = Memcache模块是可选的。如果它不存在,您将无法使用TMemCache。 -APC cache check = APC缓存模块检查 +APC extension check = APC缓存模块检查 APC extension optional = APC模块是可选的。如果它不存在,您将无法使用TAPCCache。 -Zlib check = Zlib模块检查 +Zlib extension check = Zlib模块检查 Zlib extension optional = Zlib模块是可选的。如果它不存在,页面的状态信息将无法压缩,由此可能导致您的页面传送数据量增大。 +DOM extension check = DOM模块检查 DOM extension required = DOM模块是必须的。如果它不存在,基于XML的各种配置文件将无法解析。 +ICONV extension check = ICONV模块检查 ICONV extension optional = ICONV模块是可选的。如果它不存在,某些国际化控件将无法正常工作。 +Mcrypt extension check = Mcrypt模块检查 Mcrypt extension optional = Mcrypt模块是可选的。如果它不存在,某些敏感数据,例如viewstate,将无法被加密。 \ No newline at end of file diff --git a/requirements/messages.txt b/requirements/messages.txt index 7abc3dbe..029806dc 100644 --- a/requirements/messages.txt +++ b/requirements/messages.txt @@ -4,14 +4,17 @@ failed = Sorry, your server configuration does not satisfy the requiremen PHP version check = PHP version check PHP 5.0.4 or higher required = PHP version 5.0.4 or higher is required by PRADO. PHP 5.1.0 or higher preferred = PHP version 5.1.0 or higher is preferred by PRADO. It eliminates the error caused by recursive __get/__set calls. -SQLite check = SQLite check +SQLite extension check = SQLite extension check SQLite extension optional = SQLite extension is optional. If it is absent, you will not be able to use TSqliteCache. -Memcache check = Memcache check +Memcache extension check = Memcache extension check Memcache extension optional = Memcache extension is optional. If it is absent, you will not be able to use TMemCache. -APC cache check = APC cache check +APC extension check = APC extension check APC extension optional = APC extension is optional. If it is absent, you will not be able to use TAPCCache. -Zlib check = Zlib check +Zlib extension check = Zlib extension check Zlib extension optional = Zlib extension is optional. If it is absent, page state will not be compressed and your page size may increase. +DOM extension check = DOM extension check DOM extension required = DOM extension is required by PRADO. It is used in TXmlDocument to parse all sorts of XML-based configurations. +ICONV extension check = ICONV extension check ICONV extension optional = ICONV extension is optional. If it is absent, some internationalization components may not work properly. +Mcrypt extension check = Mcrypt extension check Mcrypt extension optional = Mcrypt extension is optional. If it is absent, sensitive data, such as viewstate, cannot be encrypted. \ No newline at end of file diff --git a/requirements/template-bg.html b/requirements/template-bg.html new file mode 100644 index 00000000..b6ac5889 --- /dev/null +++ b/requirements/template-bg.html @@ -0,0 +1,50 @@ + + + + +Проверка за изискванията на PRADO + + + + +

Проверка за изискванията на PRADO

+

Описание

+

+Този скрипт проверява дали конфигурацията на вашият сървър отговаря на изискванията +за приложения базирани на PRADO. +Проверява дали на сървъра е инсталирана подходяща версия на PHP, +дали са заредени нужните разширения на PHP и дали има направени необходимите +настройки в php.ini. +

+

Заключение

+

+%%Conclusion%% +

+

Детайли

+

+%%Details%% +

+

+

+ + + + + +
 успешна неуспешна предупреждение
+

+
+%%Time%% %%Version%% +
+ + \ No newline at end of file -- cgit v1.2.3