)((.|\n)*?)(<\/div>)/', array($this,'escape_verbatim'), $html);
$html = preg_replace_callback('/(
)([^<]*)(<\/pre>)/', array($this,'escape_verbatim'), $html);
//
@@ -154,8 +160,8 @@ class Page2Tex
'\href{http://www.pradosoft.com/docs/manual/$1/$2.html}{$1.$2 API Reference}', $html);
//text modifiers
- $html = preg_replace('/([^<]*)<\/b>/', '\textbf{$1}', $html);
- $html = preg_replace('/([^<]*)<\/i>/', '\emph{$1}', $html);
+ $html = preg_replace('/]*>([^<]*)<\/b>/', '\textbf{$1}', $html);
+ $html = preg_replace('/]*>([^<]*)<\/i>/', '\emph{$1}', $html);
$html = preg_replace_callback('/([^<]*)<\/tt>/', array($this,'texttt'), $html);
//links
@@ -171,11 +177,11 @@ class Page2Tex
$html = preg_replace('/<\/dl>/', '\end{description}', $html);
//item lists
- $html = preg_replace('//', '\begin{itemize}', $html);
+ $html = preg_replace('/]*>/', '\begin{itemize}', $html);
$html = preg_replace('/<\/ul>/', '\end{itemize}', $html);
- $html = preg_replace('//', '\begin{enumerate}', $html);
+ $html = preg_replace('/]*>/', '\begin{enumerate}', $html);
$html = preg_replace('/<\/ol>/', '\end{enumerate}', $html);
- $html = preg_replace('/- /', '\item ', $html);
+ $html = preg_replace('/
- ]*>/', '\item ', $html);
$html = preg_replace('/<\/li>/', '', $html);
//headings
@@ -183,14 +189,62 @@ class Page2Tex
$html = preg_replace('/
([^<]+)<\/h2>/', '\subsection{$2}', $html);
$html = preg_replace('/([^<]+)<\/h3>/', '\subsubsection{$2}', $html);
-
+ //div box
+ $html = preg_replace_callback('/((.|\n)*?)<\/div>/',
+ array($this, 'mbox'), $html);
+
+ //tabular
+ $html = preg_replace_callback('/\s*
]*>((.|\n)*?)<\/table>/',
+ array($this, 'tabular'), $html);
$html = html_entity_decode($html);
-
return $html;
}
+ function tabular($matches)
+ {
+ $options = array();
+ foreach(explode(',', $matches[1]) as $string)
+ {
+ $sub = explode('=', trim($string));
+ $options[trim($sub[0])] = trim($sub[1]);
+ }
+
+ $widths = explode(' ',preg_replace('/\(|\)/', '', $options['width']));
+ $this->_tabular_widths = $widths;
+
+ $this->_tabular_total = count($widths);
+ $this->_tabular_col = 0;
+
+ $begin = "\begin{table}[!hpt]\centering \n \begin{tabular}{".$options['align']."}\\hline";
+ $end = "\end{tabular} \n \end{table}\n";
+ $table = preg_replace('/<\/tr>/', '\\\\\\\\ \hline', $matches[2]);
+ $table = preg_replace('//', '', $table);
+ $table = preg_replace('/([^<]+)<\/th>/', '\textbf{$1} &', $table);
+ $table = preg_replace_callback('/ | ((.|\n)*?)<\/td>/', array($this, 'table_column'), $table);
+ $table = preg_replace('/ /', ' \\\\\\\\', $table);
+
+ $table = preg_replace('/&\s*\\\\\\\\/', '\\\\\\\\', $table);
+ return $begin.$table.$end;
+ }
+
+ function table_column($matches)
+ {
+ $width = $this->_tabular_widths[$this->_tabular_col];
+ if($this->_tabular_col >= $this->_tabular_total-1)
+ $this->_tabular_col = 0;
+ else
+ $this->_tabular_col++;
+ return '\begin{minipage}{'.$width.'\textwidth}\vspace{3mm}'.
+ $matches[1].'\vspace{3mm}\end{minipage} & ';
+ }
+
+ function mbox($matches)
+ {
+ return "\n\begin{mybox}\n".$matches[1]."\n\end{mybox}\n";
+ }
+
function get_chapter_label($chapter)
{
return '\hypertarget{'.str_replace(' ', '', $chapter).'}{}';
diff --git a/framework/Web/UI/WebControls/TCustomValidator.php b/framework/Web/UI/WebControls/TCustomValidator.php
index 32510f89..2afa48dc 100644
--- a/framework/Web/UI/WebControls/TCustomValidator.php
+++ b/framework/Web/UI/WebControls/TCustomValidator.php
@@ -120,6 +120,16 @@ class TCustomValidator extends TBaseValidator
$options['ClientValidationFunction']=$clientJs;
return $options;
}
+
+ /**
+ * Only register the client-side validator if
+ * {@link setClientValidationFunction ClientValidationFunction} is set.
+ */
+ protected function registerClientScriptValidator()
+ {
+ if($this->getClientValidationFunction()!=='')
+ parent::registerClientScriptValidator();
+ }
}
/**
diff --git a/framework/Web/UI/WebControls/TTextHighlighter.php b/framework/Web/UI/WebControls/TTextHighlighter.php
index a9ccf5bb..f4e72895 100644
--- a/framework/Web/UI/WebControls/TTextHighlighter.php
+++ b/framework/Web/UI/WebControls/TTextHighlighter.php
@@ -136,7 +136,7 @@ class TTextHighlighter extends TTextProcessor
$geshi->enable_classes();
if($this->getEnableCopyCode())
$geshi->set_header_content($this->getHeaderTemplate());
-
+
return $geshi->parse_code();
}
diff --git a/tests/FunctionalTests/tickets/protected/pages/Ticket284.page b/tests/FunctionalTests/tickets/protected/pages/Ticket284.page
new file mode 100644
index 00000000..ff25e3fb
--- /dev/null
+++ b/tests/FunctionalTests/tickets/protected/pages/Ticket284.page
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
diff --git a/tests/FunctionalTests/tickets/protected/pages/Ticket284.php b/tests/FunctionalTests/tickets/protected/pages/Ticket284.php
new file mode 100644
index 00000000..332789ff
--- /dev/null
+++ b/tests/FunctionalTests/tickets/protected/pages/Ticket284.php
@@ -0,0 +1,11 @@
+
\ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/protected/pages/Ticket284Component.php b/tests/FunctionalTests/tickets/protected/pages/Ticket284Component.php
new file mode 100644
index 00000000..892bdc87
--- /dev/null
+++ b/tests/FunctionalTests/tickets/protected/pages/Ticket284Component.php
@@ -0,0 +1,94 @@
+ShowHours && $this->ShowMinutes)
+ {
+ throw new TConfigurationException(
+ 'Invalid OPSDatePicker Config: You cannot specify ShowMinutes="true" while ShowHours="false"'
+ );
+ }
+ }
+
+ public function getDatePicker()
+ {
+ $this->ensureChildControls();
+ return $this->getRegisteredObject('datePicker');
+ }
+
+ public function getHourPicker()
+ {
+ $this->ensureChildControls();
+ return $this->getRegisteredObject('hourPicker');
+ }
+
+ public function getMinutePicker()
+ {
+ $this->ensureChildControls();
+ return $this->getRegisteredObject('minutePicker');
+ }
+
+ public function getShowHours()
+ {
+ return $this->HourPicker->Visible;
+ }
+
+ public function setShowHours($value)
+ {
+ $this->HourPicker->Visible = TPropertyValue::ensureBoolean($value);
+ }
+
+ public function getShowMinutes()
+ {
+ return $this->MinutePicker->Visible;
+ }
+
+ public function setShowMinutes($value)
+ {
+ $this->MinutePicker->Visible = TPropertyValue::ensureBoolean($value);
+ }
+
+ public function getTimeStamp()
+ {
+ return strtotime($this->Date);
+ }
+
+ public function setTimeStamp($value)
+ {
+ $ts = TPropertyValue::ensureInteger($value);
+ $this->DatePicker->TimeStamp = $ts;
+ $this->HourPicker->SelectedValue = date('H', $ts);
+ $this->MinutePicker->SelectedValue = date('i', $ts);
+ }
+
+ public function getDate()
+ {
+ $dateStr = $this->DatePicker->Date;
+ if ($this->ShowHours){
+ $dateStr .= ' '.$this->HourPicker->SelectedValue;
+ }
+ if ($this->ShowMinutes){
+ $dateStr .= ':'.$this->MinutePicker->SelectedValue;
+ }
+ return $dateStr;
+ }
+
+ public function setDate($value)
+ {
+ $dateStr = TPropertyValue::ensureString($value);
+ $this->TimeStamp = strtotime($dateStr);
+ }
+
+ public function getValidationPropertyValue()
+ {
+ if ($this->DatePicker->Date === ''){
+ return '';
+ }
+ else{
+ return $this->TimeStamp;
+ }
+ }
+}
+?>
\ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/protected/pages/Ticket284Component.tpl b/tests/FunctionalTests/tickets/protected/pages/Ticket284Component.tpl
new file mode 100644
index 00000000..ed787287
--- /dev/null
+++ b/tests/FunctionalTests/tickets/protected/pages/Ticket284Component.tpl
@@ -0,0 +1,94 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/tests/FunctionalTests/tickets/tests/Ticket284TestCase.php b/tests/FunctionalTests/tickets/tests/Ticket284TestCase.php
new file mode 100644
index 00000000..9a6fa7c3
--- /dev/null
+++ b/tests/FunctionalTests/tickets/tests/Ticket284TestCase.php
@@ -0,0 +1,14 @@
+open('tickets/index.php?page=Ticket284');
+ $this->assertTextPresent('Verifying Ticket 284');
+ $this->click('ctl0_Content_ctl1');
+
+ }
+}
+
+?>
\ No newline at end of file
diff --git a/tests/test_tools/simpletest/test_case.php b/tests/test_tools/simpletest/test_case.php
index e3a1aff5..1bf49789 100644
--- a/tests/test_tools/simpletest/test_case.php
+++ b/tests/test_tools/simpletest/test_case.php
@@ -478,7 +478,7 @@
*/
function _requireWithError($file) {
$this->_enableErrorReporting();
- include($file);
+ include_once($file);
$error = isset($php_errormsg) ? $php_errormsg : false;
$this->_disableErrorReporting();
$self_inflicted_errors = array(
--
cgit v1.2.3
|