diff options
Diffstat (limited to 'inc')
690 files changed, 26028 insertions, 9132 deletions
diff --git a/inc/DifferenceEngine.php b/inc/DifferenceEngine.php index e28826c1f..7b14e4463 100644 --- a/inc/DifferenceEngine.php +++ b/inc/DifferenceEngine.php @@ -10,75 +10,75 @@ define('USE_ASSERTS', function_exists('assert')); class _DiffOp { - var $type; - var $orig; - var $closing; + var $type; + var $orig; + var $closing; - function reverse() { - trigger_error("pure virtual", E_USER_ERROR); - } + function reverse() { + trigger_error("pure virtual", E_USER_ERROR); + } - function norig() { - return $this->orig ? sizeof($this->orig) : 0; - } + function norig() { + return $this->orig ? count($this->orig) : 0; + } - function nclosing() { - return $this->closing ? sizeof($this->closing) : 0; - } + function nclosing() { + return $this->closing ? count($this->closing) : 0; + } } class _DiffOp_Copy extends _DiffOp { - var $type = 'copy'; - - function _DiffOp_Copy ($orig, $closing = false) { - if (!is_array($closing)) - $closing = $orig; - $this->orig = $orig; - $this->closing = $closing; - } - - function reverse() { - return new _DiffOp_Copy($this->closing, $this->orig); - } + var $type = 'copy'; + + function _DiffOp_Copy ($orig, $closing = false) { + if (!is_array($closing)) + $closing = $orig; + $this->orig = $orig; + $this->closing = $closing; + } + + function reverse() { + return new _DiffOp_Copy($this->closing, $this->orig); + } } class _DiffOp_Delete extends _DiffOp { - var $type = 'delete'; + var $type = 'delete'; - function _DiffOp_Delete ($lines) { - $this->orig = $lines; - $this->closing = false; - } + function _DiffOp_Delete ($lines) { + $this->orig = $lines; + $this->closing = false; + } - function reverse() { - return new _DiffOp_Add($this->orig); - } + function reverse() { + return new _DiffOp_Add($this->orig); + } } class _DiffOp_Add extends _DiffOp { - var $type = 'add'; + var $type = 'add'; - function _DiffOp_Add ($lines) { - $this->closing = $lines; - $this->orig = false; - } + function _DiffOp_Add ($lines) { + $this->closing = $lines; + $this->orig = false; + } - function reverse() { - return new _DiffOp_Delete($this->closing); - } + function reverse() { + return new _DiffOp_Delete($this->closing); + } } class _DiffOp_Change extends _DiffOp { - var $type = 'change'; + var $type = 'change'; - function _DiffOp_Change ($orig, $closing) { - $this->orig = $orig; - $this->closing = $closing; - } + function _DiffOp_Change ($orig, $closing) { + $this->orig = $orig; + $this->closing = $closing; + } - function reverse() { - return new _DiffOp_Change($this->closing, $this->orig); - } + function reverse() { + return new _DiffOp_Change($this->closing, $this->orig); + } } @@ -102,577 +102,577 @@ class _DiffOp_Change extends _DiffOp { * @author Geoffrey T. Dairiki * @access private */ -class _DiffEngine -{ - function diff ($from_lines, $to_lines) { - $n_from = sizeof($from_lines); - $n_to = sizeof($to_lines); - - $this->xchanged = $this->ychanged = array(); - $this->xv = $this->yv = array(); - $this->xind = $this->yind = array(); - unset($this->seq); - unset($this->in_seq); - unset($this->lcs); - - // Skip leading common lines. - for ($skip = 0; $skip < $n_from && $skip < $n_to; $skip++) { - if ($from_lines[$skip] != $to_lines[$skip]) - break; - $this->xchanged[$skip] = $this->ychanged[$skip] = false; - } - // Skip trailing common lines. - $xi = $n_from; $yi = $n_to; - for ($endskip = 0; --$xi > $skip && --$yi > $skip; $endskip++) { - if ($from_lines[$xi] != $to_lines[$yi]) - break; - $this->xchanged[$xi] = $this->ychanged[$yi] = false; - } +class _DiffEngine { + + function diff ($from_lines, $to_lines) { + $n_from = count($from_lines); + $n_to = count($to_lines); + + $this->xchanged = $this->ychanged = array(); + $this->xv = $this->yv = array(); + $this->xind = $this->yind = array(); + unset($this->seq); + unset($this->in_seq); + unset($this->lcs); + + // Skip leading common lines. + for ($skip = 0; $skip < $n_from && $skip < $n_to; $skip++) { + if ($from_lines[$skip] != $to_lines[$skip]) + break; + $this->xchanged[$skip] = $this->ychanged[$skip] = false; + } + // Skip trailing common lines. + $xi = $n_from; + $yi = $n_to; + for ($endskip = 0; --$xi > $skip && --$yi > $skip; $endskip++) { + if ($from_lines[$xi] != $to_lines[$yi]) + break; + $this->xchanged[$xi] = $this->ychanged[$yi] = false; + } - // Ignore lines which do not exist in both files. - for ($xi = $skip; $xi < $n_from - $endskip; $xi++) - $xhash[$from_lines[$xi]] = 1; - for ($yi = $skip; $yi < $n_to - $endskip; $yi++) { - $line = $to_lines[$yi]; - if ( ($this->ychanged[$yi] = empty($xhash[$line])) ) - continue; - $yhash[$line] = 1; - $this->yv[] = $line; - $this->yind[] = $yi; - } - for ($xi = $skip; $xi < $n_from - $endskip; $xi++) { - $line = $from_lines[$xi]; - if ( ($this->xchanged[$xi] = empty($yhash[$line])) ) - continue; - $this->xv[] = $line; - $this->xind[] = $xi; - } + // Ignore lines which do not exist in both files. + for ($xi = $skip; $xi < $n_from - $endskip; $xi++) + $xhash[$from_lines[$xi]] = 1; + for ($yi = $skip; $yi < $n_to - $endskip; $yi++) { + $line = $to_lines[$yi]; + if ( ($this->ychanged[$yi] = empty($xhash[$line])) ) + continue; + $yhash[$line] = 1; + $this->yv[] = $line; + $this->yind[] = $yi; + } + for ($xi = $skip; $xi < $n_from - $endskip; $xi++) { + $line = $from_lines[$xi]; + if ( ($this->xchanged[$xi] = empty($yhash[$line])) ) + continue; + $this->xv[] = $line; + $this->xind[] = $xi; + } - // Find the LCS. - $this->_compareseq(0, sizeof($this->xv), 0, sizeof($this->yv)); - - // Merge edits when possible - $this->_shift_boundaries($from_lines, $this->xchanged, $this->ychanged); - $this->_shift_boundaries($to_lines, $this->ychanged, $this->xchanged); - - // Compute the edit operations. - $edits = array(); - $xi = $yi = 0; - while ($xi < $n_from || $yi < $n_to) { - USE_ASSERTS && assert($yi < $n_to || $this->xchanged[$xi]); - USE_ASSERTS && assert($xi < $n_from || $this->ychanged[$yi]); - - // Skip matching "snake". - $copy = array(); - while ( $xi < $n_from && $yi < $n_to - && !$this->xchanged[$xi] && !$this->ychanged[$yi]) { - $copy[] = $from_lines[$xi++]; - ++$yi; - } - if ($copy) - $edits[] = new _DiffOp_Copy($copy); - - // Find deletes & adds. - $delete = array(); - while ($xi < $n_from && $this->xchanged[$xi]) - $delete[] = $from_lines[$xi++]; - - $add = array(); - while ($yi < $n_to && $this->ychanged[$yi]) - $add[] = $to_lines[$yi++]; - - if ($delete && $add) - $edits[] = new _DiffOp_Change($delete, $add); - elseif ($delete) - $edits[] = new _DiffOp_Delete($delete); - elseif ($add) - $edits[] = new _DiffOp_Add($add); - } - return $edits; - } - - - /** - * Divide the Largest Common Subsequence (LCS) of the sequences - * [XOFF, XLIM) and [YOFF, YLIM) into NCHUNKS approximately equally - * sized segments. - * - * Returns (LCS, PTS). LCS is the length of the LCS. PTS is an - * array of NCHUNKS+1 (X, Y) indexes giving the diving points between - * sub sequences. The first sub-sequence is contained in [X0, X1), - * [Y0, Y1), the second in [X1, X2), [Y1, Y2) and so on. Note - * that (X0, Y0) == (XOFF, YOFF) and - * (X[NCHUNKS], Y[NCHUNKS]) == (XLIM, YLIM). - * - * This function assumes that the first lines of the specified portions - * of the two files do not match, and likewise that the last lines do not - * match. The caller must trim matching lines from the beginning and end - * of the portions it is going to specify. - */ - function _diag ($xoff, $xlim, $yoff, $ylim, $nchunks) { - $flip = false; - - if ($xlim - $xoff > $ylim - $yoff) { - // Things seems faster (I'm not sure I understand why) - // when the shortest sequence in X. - $flip = true; - list ($xoff, $xlim, $yoff, $ylim) - = array( $yoff, $ylim, $xoff, $xlim); + // Find the LCS. + $this->_compareseq(0, count($this->xv), 0, count($this->yv)); + + // Merge edits when possible + $this->_shift_boundaries($from_lines, $this->xchanged, $this->ychanged); + $this->_shift_boundaries($to_lines, $this->ychanged, $this->xchanged); + + // Compute the edit operations. + $edits = array(); + $xi = $yi = 0; + while ($xi < $n_from || $yi < $n_to) { + USE_ASSERTS && assert($yi < $n_to || $this->xchanged[$xi]); + USE_ASSERTS && assert($xi < $n_from || $this->ychanged[$yi]); + + // Skip matching "snake". + $copy = array(); + while ( $xi < $n_from && $yi < $n_to + && !$this->xchanged[$xi] && !$this->ychanged[$yi]) { + $copy[] = $from_lines[$xi++]; + ++$yi; + } + if ($copy) + $edits[] = new _DiffOp_Copy($copy); + + // Find deletes & adds. + $delete = array(); + while ($xi < $n_from && $this->xchanged[$xi]) + $delete[] = $from_lines[$xi++]; + + $add = array(); + while ($yi < $n_to && $this->ychanged[$yi]) + $add[] = $to_lines[$yi++]; + + if ($delete && $add) + $edits[] = new _DiffOp_Change($delete, $add); + elseif ($delete) + $edits[] = new _DiffOp_Delete($delete); + elseif ($add) + $edits[] = new _DiffOp_Add($add); + } + return $edits; } - if ($flip) - for ($i = $ylim - 1; $i >= $yoff; $i--) - $ymatches[$this->xv[$i]][] = $i; - else - for ($i = $ylim - 1; $i >= $yoff; $i--) - $ymatches[$this->yv[$i]][] = $i; - - $this->lcs = 0; - $this->seq[0]= $yoff - 1; - $this->in_seq = array(); - $ymids[0] = array(); - - $numer = $xlim - $xoff + $nchunks - 1; - $x = $xoff; - for ($chunk = 0; $chunk < $nchunks; $chunk++) { - if ($chunk > 0) - for ($i = 0; $i <= $this->lcs; $i++) - $ymids[$i][$chunk-1] = $this->seq[$i]; - - $x1 = $xoff + (int)(($numer + ($xlim-$xoff)*$chunk) / $nchunks); - for ( ; $x < $x1; $x++) { - $line = $flip ? $this->yv[$x] : $this->xv[$x]; - if (empty($ymatches[$line])) - continue; - $matches = $ymatches[$line]; - reset($matches); - while (list ($junk, $y) = each($matches)) - if (empty($this->in_seq[$y])) { - $k = $this->_lcs_pos($y); - USE_ASSERTS && assert($k > 0); - $ymids[$k] = $ymids[$k-1]; - break; - } - while (list ($junk, $y) = each($matches)) { - if ($y > $this->seq[$k-1]) { - USE_ASSERTS && assert($y < $this->seq[$k]); - // Optimization: this is a common case: - // next match is just replacing previous match. - $this->in_seq[$this->seq[$k]] = false; - $this->seq[$k] = $y; - $this->in_seq[$y] = 1; - } - else if (empty($this->in_seq[$y])) { - $k = $this->_lcs_pos($y); - USE_ASSERTS && assert($k > 0); - $ymids[$k] = $ymids[$k-1]; - } + + /** + * Divide the Largest Common Subsequence (LCS) of the sequences + * [XOFF, XLIM) and [YOFF, YLIM) into NCHUNKS approximately equally + * sized segments. + * + * Returns (LCS, PTS). LCS is the length of the LCS. PTS is an + * array of NCHUNKS+1 (X, Y) indexes giving the diving points between + * sub sequences. The first sub-sequence is contained in [X0, X1), + * [Y0, Y1), the second in [X1, X2), [Y1, Y2) and so on. Note + * that (X0, Y0) == (XOFF, YOFF) and + * (X[NCHUNKS], Y[NCHUNKS]) == (XLIM, YLIM). + * + * This function assumes that the first lines of the specified portions + * of the two files do not match, and likewise that the last lines do not + * match. The caller must trim matching lines from the beginning and end + * of the portions it is going to specify. + */ + function _diag ($xoff, $xlim, $yoff, $ylim, $nchunks) { + $flip = false; + + if ($xlim - $xoff > $ylim - $yoff) { + // Things seems faster (I'm not sure I understand why) + // when the shortest sequence in X. + $flip = true; + list ($xoff, $xlim, $yoff, $ylim) + = array( $yoff, $ylim, $xoff, $xlim); } - } - } - $seps[] = $flip ? array($yoff, $xoff) : array($xoff, $yoff); - $ymid = $ymids[$this->lcs]; - for ($n = 0; $n < $nchunks - 1; $n++) { - $x1 = $xoff + (int)(($numer + ($xlim - $xoff) * $n) / $nchunks); - $y1 = $ymid[$n] + 1; - $seps[] = $flip ? array($y1, $x1) : array($x1, $y1); - } - $seps[] = $flip ? array($ylim, $xlim) : array($xlim, $ylim); + if ($flip) + for ($i = $ylim - 1; $i >= $yoff; $i--) + $ymatches[$this->xv[$i]][] = $i; + else + for ($i = $ylim - 1; $i >= $yoff; $i--) + $ymatches[$this->yv[$i]][] = $i; + + $this->lcs = 0; + $this->seq[0]= $yoff - 1; + $this->in_seq = array(); + $ymids[0] = array(); + + $numer = $xlim - $xoff + $nchunks - 1; + $x = $xoff; + for ($chunk = 0; $chunk < $nchunks; $chunk++) { + if ($chunk > 0) + for ($i = 0; $i <= $this->lcs; $i++) + $ymids[$i][$chunk-1] = $this->seq[$i]; + + $x1 = $xoff + (int)(($numer + ($xlim-$xoff)*$chunk) / $nchunks); + for ( ; $x < $x1; $x++) { + $line = $flip ? $this->yv[$x] : $this->xv[$x]; + if (empty($ymatches[$line])) + continue; + $matches = $ymatches[$line]; + reset($matches); + while (list ($junk, $y) = each($matches)) + if (empty($this->in_seq[$y])) { + $k = $this->_lcs_pos($y); + USE_ASSERTS && assert($k > 0); + $ymids[$k] = $ymids[$k-1]; + break; + } + while (list ($junk, $y) = each($matches)) { + if ($y > $this->seq[$k-1]) { + USE_ASSERTS && assert($y < $this->seq[$k]); + // Optimization: this is a common case: + // next match is just replacing previous match. + $this->in_seq[$this->seq[$k]] = false; + $this->seq[$k] = $y; + $this->in_seq[$y] = 1; + } + else if (empty($this->in_seq[$y])) { + $k = $this->_lcs_pos($y); + USE_ASSERTS && assert($k > 0); + $ymids[$k] = $ymids[$k-1]; + } + } + } + } - return array($this->lcs, $seps); - } + $seps[] = $flip ? array($yoff, $xoff) : array($xoff, $yoff); + $ymid = $ymids[$this->lcs]; + for ($n = 0; $n < $nchunks - 1; $n++) { + $x1 = $xoff + (int)(($numer + ($xlim - $xoff) * $n) / $nchunks); + $y1 = $ymid[$n] + 1; + $seps[] = $flip ? array($y1, $x1) : array($x1, $y1); + } + $seps[] = $flip ? array($ylim, $xlim) : array($xlim, $ylim); - function _lcs_pos ($ypos) { - $end = $this->lcs; - if ($end == 0 || $ypos > $this->seq[$end]) { - $this->seq[++$this->lcs] = $ypos; - $this->in_seq[$ypos] = 1; - return $this->lcs; + return array($this->lcs, $seps); } - $beg = 1; - while ($beg < $end) { - $mid = (int)(($beg + $end) / 2); - if ( $ypos > $this->seq[$mid] ) - $beg = $mid + 1; - else - $end = $mid; - } + function _lcs_pos ($ypos) { + $end = $this->lcs; + if ($end == 0 || $ypos > $this->seq[$end]) { + $this->seq[++$this->lcs] = $ypos; + $this->in_seq[$ypos] = 1; + return $this->lcs; + } - USE_ASSERTS && assert($ypos != $this->seq[$end]); - - $this->in_seq[$this->seq[$end]] = false; - $this->seq[$end] = $ypos; - $this->in_seq[$ypos] = 1; - return $end; - } - - /** - * Find LCS of two sequences. - * - * The results are recorded in the vectors $this->{x,y}changed[], by - * storing a 1 in the element for each line that is an insertion - * or deletion (ie. is not in the LCS). - * - * The subsequence of file 0 is [XOFF, XLIM) and likewise for file 1. - * - * Note that XLIM, YLIM are exclusive bounds. - * All line numbers are origin-0 and discarded lines are not counted. - */ - function _compareseq ($xoff, $xlim, $yoff, $ylim) { - // Slide down the bottom initial diagonal. - while ($xoff < $xlim && $yoff < $ylim - && $this->xv[$xoff] == $this->yv[$yoff]) { - ++$xoff; - ++$yoff; - } + $beg = 1; + while ($beg < $end) { + $mid = (int)(($beg + $end) / 2); + if ( $ypos > $this->seq[$mid] ) + $beg = $mid + 1; + else + $end = $mid; + } - // Slide up the top initial diagonal. - while ($xlim > $xoff && $ylim > $yoff - && $this->xv[$xlim - 1] == $this->yv[$ylim - 1]) { - --$xlim; - --$ylim; - } + USE_ASSERTS && assert($ypos != $this->seq[$end]); - if ($xoff == $xlim || $yoff == $ylim) - $lcs = 0; - else { - // This is ad hoc but seems to work well. - //$nchunks = sqrt(min($xlim - $xoff, $ylim - $yoff) / 2.5); - //$nchunks = max(2,min(8,(int)$nchunks)); - $nchunks = min(7, $xlim - $xoff, $ylim - $yoff) + 1; - list ($lcs, $seps) - = $this->_diag($xoff,$xlim,$yoff, $ylim,$nchunks); + $this->in_seq[$this->seq[$end]] = false; + $this->seq[$end] = $ypos; + $this->in_seq[$ypos] = 1; + return $end; } - if ($lcs == 0) { - // X and Y sequences have no common subsequence: - // mark all changed. - while ($yoff < $ylim) - $this->ychanged[$this->yind[$yoff++]] = 1; - while ($xoff < $xlim) - $this->xchanged[$this->xind[$xoff++]] = 1; - } - else { - // Use the partitions to split this problem into subproblems. - reset($seps); - $pt1 = $seps[0]; - while ($pt2 = next($seps)) { - $this->_compareseq ($pt1[0], $pt2[0], $pt1[1], $pt2[1]); - $pt1 = $pt2; - } - } - } - - /** - * Adjust inserts/deletes of identical lines to join changes - * as much as possible. - * - * We do something when a run of changed lines include a - * line at one end and has an excluded, identical line at the other. - * We are free to choose which identical line is included. - * `compareseq' usually chooses the one at the beginning, - * but usually it is cleaner to consider the following identical line - * to be the "change". - * - * This is extracted verbatim from analyze.c (GNU diffutils-2.7). - */ - function _shift_boundaries ($lines, &$changed, $other_changed) { - $i = 0; - $j = 0; - - USE_ASSERTS && assert('sizeof($lines) == sizeof($changed)'); - $len = sizeof($lines); - $other_len = sizeof($other_changed); - - while (1) { - /* - * Scan forwards to find beginning of another run of changes. - * Also keep track of the corresponding point in the other file. + /** + * Find LCS of two sequences. * - * Throughout this code, $i and $j are adjusted together so that - * the first $i elements of $changed and the first $j elements - * of $other_changed both contain the same number of zeros - * (unchanged lines). - * Furthermore, $j is always kept so that $j == $other_len or - * $other_changed[$j] == false. + * The results are recorded in the vectors $this->{x,y}changed[], by + * storing a 1 in the element for each line that is an insertion + * or deletion (ie. is not in the LCS). + * + * The subsequence of file 0 is [XOFF, XLIM) and likewise for file 1. + * + * Note that XLIM, YLIM are exclusive bounds. + * All line numbers are origin-0 and discarded lines are not counted. */ - while ($j < $other_len && $other_changed[$j]) - $j++; - - while ($i < $len && ! $changed[$i]) { - USE_ASSERTS && assert('$j < $other_len && ! $other_changed[$j]'); - $i++; $j++; - while ($j < $other_len && $other_changed[$j]) - $j++; - } - - if ($i == $len) - break; - - $start = $i; - - // Find the end of this run of changes. - while (++$i < $len && $changed[$i]) - continue; + function _compareseq ($xoff, $xlim, $yoff, $ylim) { + // Slide down the bottom initial diagonal. + while ($xoff < $xlim && $yoff < $ylim + && $this->xv[$xoff] == $this->yv[$yoff]) { + ++$xoff; + ++$yoff; + } - do { - /* - * Record the length of this run of changes, so that - * we can later determine whether the run has grown. - */ - $runlength = $i - $start; + // Slide up the top initial diagonal. + while ($xlim > $xoff && $ylim > $yoff + && $this->xv[$xlim - 1] == $this->yv[$ylim - 1]) { + --$xlim; + --$ylim; + } - /* - * Move the changed region back, so long as the - * previous unchanged line matches the last changed one. - * This merges with previous changed regions. - */ - while ($start > 0 && $lines[$start - 1] == $lines[$i - 1]) { - $changed[--$start] = 1; - $changed[--$i] = false; - while ($start > 0 && $changed[$start - 1]) - $start--; - USE_ASSERTS && assert('$j > 0'); - while ($other_changed[--$j]) - continue; - USE_ASSERTS && assert('$j >= 0 && !$other_changed[$j]'); + if ($xoff == $xlim || $yoff == $ylim) + $lcs = 0; + else { + // This is ad hoc but seems to work well. + //$nchunks = sqrt(min($xlim - $xoff, $ylim - $yoff) / 2.5); + //$nchunks = max(2,min(8,(int)$nchunks)); + $nchunks = min(7, $xlim - $xoff, $ylim - $yoff) + 1; + list ($lcs, $seps) + = $this->_diag($xoff,$xlim,$yoff, $ylim,$nchunks); } - /* - * Set CORRESPONDING to the end of the changed run, at the last - * point where it corresponds to a changed run in the other file. - * CORRESPONDING == LEN means no such point has been found. - */ - $corresponding = $j < $other_len ? $i : $len; - - /* - * Move the changed region forward, so long as the - * first changed line matches the following unchanged one. - * This merges with following changed regions. - * Do this second, so that if there are no merges, - * the changed region is moved forward as far as possible. - */ - while ($i < $len && $lines[$start] == $lines[$i]) { - $changed[$start++] = false; - $changed[$i++] = 1; - while ($i < $len && $changed[$i]) - $i++; - - USE_ASSERTS && assert('$j < $other_len && ! $other_changed[$j]'); - $j++; - if ($j < $other_len && $other_changed[$j]) { - $corresponding = $i; - while ($j < $other_len && $other_changed[$j]) - $j++; - } + if ($lcs == 0) { + // X and Y sequences have no common subsequence: + // mark all changed. + while ($yoff < $ylim) + $this->ychanged[$this->yind[$yoff++]] = 1; + while ($xoff < $xlim) + $this->xchanged[$this->xind[$xoff++]] = 1; } - } while ($runlength != $i - $start); + else { + // Use the partitions to split this problem into subproblems. + reset($seps); + $pt1 = $seps[0]; + while ($pt2 = next($seps)) { + $this->_compareseq ($pt1[0], $pt2[0], $pt1[1], $pt2[1]); + $pt1 = $pt2; + } + } + } - /* - * If possible, move the fully-merged run of changes - * back to a corresponding run in the other file. + /** + * Adjust inserts/deletes of identical lines to join changes + * as much as possible. + * + * We do something when a run of changed lines include a + * line at one end and has an excluded, identical line at the other. + * We are free to choose which identical line is included. + * `compareseq' usually chooses the one at the beginning, + * but usually it is cleaner to consider the following identical line + * to be the "change". + * + * This is extracted verbatim from analyze.c (GNU diffutils-2.7). */ - while ($corresponding < $i) { - $changed[--$start] = 1; - $changed[--$i] = 0; - USE_ASSERTS && assert('$j > 0'); - while ($other_changed[--$j]) - continue; - USE_ASSERTS && assert('$j >= 0 && !$other_changed[$j]'); - } + function _shift_boundaries ($lines, &$changed, $other_changed) { + $i = 0; + $j = 0; + + USE_ASSERTS && assert('count($lines) == count($changed)'); + $len = count($lines); + $other_len = count($other_changed); + + while (1) { + /* + * Scan forwards to find beginning of another run of changes. + * Also keep track of the corresponding point in the other file. + * + * Throughout this code, $i and $j are adjusted together so that + * the first $i elements of $changed and the first $j elements + * of $other_changed both contain the same number of zeros + * (unchanged lines). + * Furthermore, $j is always kept so that $j == $other_len or + * $other_changed[$j] == false. + */ + while ($j < $other_len && $other_changed[$j]) + $j++; + + while ($i < $len && ! $changed[$i]) { + USE_ASSERTS && assert('$j < $other_len && ! $other_changed[$j]'); + $i++; + $j++; + while ($j < $other_len && $other_changed[$j]) + $j++; + } + + if ($i == $len) + break; + + $start = $i; + + // Find the end of this run of changes. + while (++$i < $len && $changed[$i]) + continue; + + do { + /* + * Record the length of this run of changes, so that + * we can later determine whether the run has grown. + */ + $runlength = $i - $start; + + /* + * Move the changed region back, so long as the + * previous unchanged line matches the last changed one. + * This merges with previous changed regions. + */ + while ($start > 0 && $lines[$start - 1] == $lines[$i - 1]) { + $changed[--$start] = 1; + $changed[--$i] = false; + while ($start > 0 && $changed[$start - 1]) + $start--; + USE_ASSERTS && assert('$j > 0'); + while ($other_changed[--$j]) + continue; + USE_ASSERTS && assert('$j >= 0 && !$other_changed[$j]'); + } + + /* + * Set CORRESPONDING to the end of the changed run, at the last + * point where it corresponds to a changed run in the other file. + * CORRESPONDING == LEN means no such point has been found. + */ + $corresponding = $j < $other_len ? $i : $len; + + /* + * Move the changed region forward, so long as the + * first changed line matches the following unchanged one. + * This merges with following changed regions. + * Do this second, so that if there are no merges, + * the changed region is moved forward as far as possible. + */ + while ($i < $len && $lines[$start] == $lines[$i]) { + $changed[$start++] = false; + $changed[$i++] = 1; + while ($i < $len && $changed[$i]) + $i++; + + USE_ASSERTS && assert('$j < $other_len && ! $other_changed[$j]'); + $j++; + if ($j < $other_len && $other_changed[$j]) { + $corresponding = $i; + while ($j < $other_len && $other_changed[$j]) + $j++; + } + } + } while ($runlength != $i - $start); + + /* + * If possible, move the fully-merged run of changes + * back to a corresponding run in the other file. + */ + while ($corresponding < $i) { + $changed[--$start] = 1; + $changed[--$i] = 0; + USE_ASSERTS && assert('$j > 0'); + while ($other_changed[--$j]) + continue; + USE_ASSERTS && assert('$j >= 0 && !$other_changed[$j]'); + } + } } - } } /** * Class representing a 'diff' between two sequences of strings. */ -class Diff -{ - var $edits; - - /** - * Constructor. - * Computes diff between sequences of strings. - * - * @param $from_lines array An array of strings. - * (Typically these are lines from a file.) - * @param $to_lines array An array of strings. - */ - function Diff($from_lines, $to_lines) { - $eng = new _DiffEngine; - $this->edits = $eng->diff($from_lines, $to_lines); - //$this->_check($from_lines, $to_lines); - } - - /** - * Compute reversed Diff. - * - * SYNOPSIS: - * - * $diff = new Diff($lines1, $lines2); - * $rev = $diff->reverse(); - * @return object A Diff object representing the inverse of the - * original diff. - */ - function reverse () { - $rev = $this; - $rev->edits = array(); - foreach ($this->edits as $edit) { - $rev->edits[] = $edit->reverse(); +class Diff { + + var $edits; + + /** + * Constructor. + * Computes diff between sequences of strings. + * + * @param $from_lines array An array of strings. + * (Typically these are lines from a file.) + * @param $to_lines array An array of strings. + */ + function Diff($from_lines, $to_lines) { + $eng = new _DiffEngine; + $this->edits = $eng->diff($from_lines, $to_lines); + //$this->_check($from_lines, $to_lines); } - return $rev; - } - - /** - * Check for empty diff. - * - * @return bool True iff two sequences were identical. - */ - function isEmpty () { - foreach ($this->edits as $edit) { - if ($edit->type != 'copy') - return false; + + /** + * Compute reversed Diff. + * + * SYNOPSIS: + * + * $diff = new Diff($lines1, $lines2); + * $rev = $diff->reverse(); + * @return object A Diff object representing the inverse of the + * original diff. + */ + function reverse () { + $rev = $this; + $rev->edits = array(); + foreach ($this->edits as $edit) { + $rev->edits[] = $edit->reverse(); + } + return $rev; } - return true; - } - - /** - * Compute the length of the Longest Common Subsequence (LCS). - * - * This is mostly for diagnostic purposed. - * - * @return int The length of the LCS. - */ - function lcs () { - $lcs = 0; - foreach ($this->edits as $edit) { - if ($edit->type == 'copy') - $lcs += sizeof($edit->orig); + + /** + * Check for empty diff. + * + * @return bool True iff two sequences were identical. + */ + function isEmpty () { + foreach ($this->edits as $edit) { + if ($edit->type != 'copy') + return false; + } + return true; } - return $lcs; - } - - /** - * Get the original set of lines. - * - * This reconstructs the $from_lines parameter passed to the - * constructor. - * - * @return array The original sequence of strings. - */ - function orig() { - $lines = array(); - - foreach ($this->edits as $edit) { - if ($edit->orig) - array_splice($lines, sizeof($lines), 0, $edit->orig); + + /** + * Compute the length of the Longest Common Subsequence (LCS). + * + * This is mostly for diagnostic purposed. + * + * @return int The length of the LCS. + */ + function lcs () { + $lcs = 0; + foreach ($this->edits as $edit) { + if ($edit->type == 'copy') + $lcs += count($edit->orig); + } + return $lcs; } - return $lines; - } - - /** - * Get the closing set of lines. - * - * This reconstructs the $to_lines parameter passed to the - * constructor. - * - * @return array The sequence of strings. - */ - function closing() { - $lines = array(); - - foreach ($this->edits as $edit) { - if ($edit->closing) - array_splice($lines, sizeof($lines), 0, $edit->closing); + + /** + * Get the original set of lines. + * + * This reconstructs the $from_lines parameter passed to the + * constructor. + * + * @return array The original sequence of strings. + */ + function orig() { + $lines = array(); + + foreach ($this->edits as $edit) { + if ($edit->orig) + array_splice($lines, count($lines), 0, $edit->orig); + } + return $lines; } - return $lines; - } - - /** - * Check a Diff for validity. - * - * This is here only for debugging purposes. - */ - function _check ($from_lines, $to_lines) { - if (serialize($from_lines) != serialize($this->orig())) - trigger_error("Reconstructed original doesn't match", E_USER_ERROR); - if (serialize($to_lines) != serialize($this->closing())) - trigger_error("Reconstructed closing doesn't match", E_USER_ERROR); - - $rev = $this->reverse(); - if (serialize($to_lines) != serialize($rev->orig())) - trigger_error("Reversed original doesn't match", E_USER_ERROR); - if (serialize($from_lines) != serialize($rev->closing())) - trigger_error("Reversed closing doesn't match", E_USER_ERROR); - - - $prevtype = 'none'; - foreach ($this->edits as $edit) { - if ( $prevtype == $edit->type ) - trigger_error("Edit sequence is non-optimal", E_USER_ERROR); - $prevtype = $edit->type; + + /** + * Get the closing set of lines. + * + * This reconstructs the $to_lines parameter passed to the + * constructor. + * + * @return array The sequence of strings. + */ + function closing() { + $lines = array(); + + foreach ($this->edits as $edit) { + if ($edit->closing) + array_splice($lines, count($lines), 0, $edit->closing); + } + return $lines; } - $lcs = $this->lcs(); - trigger_error("Diff okay: LCS = $lcs", E_USER_NOTICE); - } + /** + * Check a Diff for validity. + * + * This is here only for debugging purposes. + */ + function _check ($from_lines, $to_lines) { + if (serialize($from_lines) != serialize($this->orig())) + trigger_error("Reconstructed original doesn't match", E_USER_ERROR); + if (serialize($to_lines) != serialize($this->closing())) + trigger_error("Reconstructed closing doesn't match", E_USER_ERROR); + + $rev = $this->reverse(); + if (serialize($to_lines) != serialize($rev->orig())) + trigger_error("Reversed original doesn't match", E_USER_ERROR); + if (serialize($from_lines) != serialize($rev->closing())) + trigger_error("Reversed closing doesn't match", E_USER_ERROR); + + $prevtype = 'none'; + foreach ($this->edits as $edit) { + if ( $prevtype == $edit->type ) + trigger_error("Edit sequence is non-optimal", E_USER_ERROR); + $prevtype = $edit->type; + } + + $lcs = $this->lcs(); + trigger_error("Diff okay: LCS = $lcs", E_USER_NOTICE); + } } /** * FIXME: bad name. */ -class MappedDiff -extends Diff -{ - /** - * Constructor. - * - * Computes diff between sequences of strings. - * - * This can be used to compute things like - * case-insensitve diffs, or diffs which ignore - * changes in white-space. - * - * @param $from_lines array An array of strings. - * (Typically these are lines from a file.) - * - * @param $to_lines array An array of strings. - * - * @param $mapped_from_lines array This array should - * have the same size number of elements as $from_lines. - * The elements in $mapped_from_lines and - * $mapped_to_lines are what is actually compared - * when computing the diff. - * - * @param $mapped_to_lines array This array should - * have the same number of elements as $to_lines. - */ - function MappedDiff($from_lines, $to_lines, +class MappedDiff extends Diff { + /** + * Constructor. + * + * Computes diff between sequences of strings. + * + * This can be used to compute things like + * case-insensitve diffs, or diffs which ignore + * changes in white-space. + * + * @param $from_lines array An array of strings. + * (Typically these are lines from a file.) + * + * @param $to_lines array An array of strings. + * + * @param $mapped_from_lines array This array should + * have the same size number of elements as $from_lines. + * The elements in $mapped_from_lines and + * $mapped_to_lines are what is actually compared + * when computing the diff. + * + * @param $mapped_to_lines array This array should + * have the same number of elements as $to_lines. + */ + function MappedDiff($from_lines, $to_lines, $mapped_from_lines, $mapped_to_lines) { - assert(sizeof($from_lines) == sizeof($mapped_from_lines)); - assert(sizeof($to_lines) == sizeof($mapped_to_lines)); + assert(count($from_lines) == count($mapped_from_lines)); + assert(count($to_lines) == count($mapped_to_lines)); - $this->Diff($mapped_from_lines, $mapped_to_lines); + $this->Diff($mapped_from_lines, $mapped_to_lines); - $xi = $yi = 0; - for ($i = 0; $i < sizeof($this->edits); $i++) { - $orig = &$this->edits[$i]->orig; - if (is_array($orig)) { - $orig = array_slice($from_lines, $xi, sizeof($orig)); - $xi += sizeof($orig); - } + $xi = $yi = 0; + $ecnt = count($this->edits); + for ($i = 0; $i < $ecnt; $i++) { + $orig = &$this->edits[$i]->orig; + if (is_array($orig)) { + $orig = array_slice($from_lines, $xi, count($orig)); + $xi += count($orig); + } - $closing = &$this->edits[$i]->closing; - if (is_array($closing)) { - $closing = array_slice($to_lines, $yi, sizeof($closing)); - $yi += sizeof($closing); - } + $closing = &$this->edits[$i]->closing; + if (is_array($closing)) { + $closing = array_slice($to_lines, $yi, count($closing)); + $yi += count($closing); + } + } } - } } /** @@ -682,150 +682,149 @@ extends Diff * It is intended that this class be customized via inheritance, * to obtain fancier outputs. */ -class DiffFormatter -{ - /** - * Number of leading context "lines" to preserve. - * - * This should be left at zero for this class, but subclasses - * may want to set this to other values. - */ - var $leading_context_lines = 0; - - /** - * Number of trailing context "lines" to preserve. - * - * This should be left at zero for this class, but subclasses - * may want to set this to other values. - */ - var $trailing_context_lines = 0; - - /** - * Format a diff. - * - * @param $diff object A Diff object. - * @return string The formatted output. - */ - function format($diff) { - - $xi = $yi = 1; - $block = false; - $context = array(); - - $nlead = $this->leading_context_lines; - $ntrail = $this->trailing_context_lines; - - $this->_start_diff(); - - foreach ($diff->edits as $edit) { - if ($edit->type == 'copy') { - if (is_array($block)) { - if (sizeof($edit->orig) <= $nlead + $ntrail) { - $block[] = $edit; - } - else{ - if ($ntrail) { - $context = array_slice($edit->orig, 0, $ntrail); - $block[] = new _DiffOp_Copy($context); +class DiffFormatter { + /** + * Number of leading context "lines" to preserve. + * + * This should be left at zero for this class, but subclasses + * may want to set this to other values. + */ + var $leading_context_lines = 0; + + /** + * Number of trailing context "lines" to preserve. + * + * This should be left at zero for this class, but subclasses + * may want to set this to other values. + */ + var $trailing_context_lines = 0; + + /** + * Format a diff. + * + * @param $diff object A Diff object. + * @return string The formatted output. + */ + function format($diff) { + + $xi = $yi = 1; + $block = false; + $context = array(); + + $nlead = $this->leading_context_lines; + $ntrail = $this->trailing_context_lines; + + $this->_start_diff(); + + foreach ($diff->edits as $edit) { + if ($edit->type == 'copy') { + if (is_array($block)) { + if (count($edit->orig) <= $nlead + $ntrail) { + $block[] = $edit; + } + else{ + if ($ntrail) { + $context = array_slice($edit->orig, 0, $ntrail); + $block[] = new _DiffOp_Copy($context); + } + $this->_block($x0, $ntrail + $xi - $x0, + $y0, $ntrail + $yi - $y0, + $block); + $block = false; + } + } + $context = $edit->orig; } - $this->_block($x0, $ntrail + $xi - $x0, - $y0, $ntrail + $yi - $y0, - $block); - $block = false; - } + else { + if (! is_array($block)) { + $context = array_slice($context, count($context) - $nlead); + $x0 = $xi - count($context); + $y0 = $yi - count($context); + $block = array(); + if ($context) + $block[] = new _DiffOp_Copy($context); + } + $block[] = $edit; + } + + if ($edit->orig) + $xi += count($edit->orig); + if ($edit->closing) + $yi += count($edit->closing); } - $context = $edit->orig; - } - else { - if (! is_array($block)) { - $context = array_slice($context, sizeof($context) - $nlead); - $x0 = $xi - sizeof($context); - $y0 = $yi - sizeof($context); - $block = array(); - if ($context) - $block[] = new _DiffOp_Copy($context); + + if (is_array($block)) + $this->_block($x0, $xi - $x0, + $y0, $yi - $y0, + $block); + + return $this->_end_diff(); + } + + function _block($xbeg, $xlen, $ybeg, $ylen, &$edits) { + $this->_start_block($this->_block_header($xbeg, $xlen, $ybeg, $ylen)); + foreach ($edits as $edit) { + if ($edit->type == 'copy') + $this->_context($edit->orig); + elseif ($edit->type == 'add') + $this->_added($edit->closing); + elseif ($edit->type == 'delete') + $this->_deleted($edit->orig); + elseif ($edit->type == 'change') + $this->_changed($edit->orig, $edit->closing); + else + trigger_error("Unknown edit type", E_USER_ERROR); } - $block[] = $edit; - } + $this->_end_block(); + } + + function _start_diff() { + ob_start(); + } + + function _end_diff() { + $val = ob_get_contents(); + ob_end_clean(); + return $val; + } + + function _block_header($xbeg, $xlen, $ybeg, $ylen) { + if ($xlen > 1) + $xbeg .= "," . ($xbeg + $xlen - 1); + if ($ylen > 1) + $ybeg .= "," . ($ybeg + $ylen - 1); + + return $xbeg . ($xlen ? ($ylen ? 'c' : 'd') : 'a') . $ybeg; + } + + function _start_block($header) { + echo $header; + } - if ($edit->orig) - $xi += sizeof($edit->orig); - if ($edit->closing) - $yi += sizeof($edit->closing); + function _end_block() { } - if (is_array($block)) - $this->_block($x0, $xi - $x0, - $y0, $yi - $y0, - $block); - - return $this->_end_diff(); - } - - function _block($xbeg, $xlen, $ybeg, $ylen, &$edits) { - $this->_start_block($this->_block_header($xbeg, $xlen, $ybeg, $ylen)); - foreach ($edits as $edit) { - if ($edit->type == 'copy') - $this->_context($edit->orig); - elseif ($edit->type == 'add') - $this->_added($edit->closing); - elseif ($edit->type == 'delete') - $this->_deleted($edit->orig); - elseif ($edit->type == 'change') - $this->_changed($edit->orig, $edit->closing); - else - trigger_error("Unknown edit type", E_USER_ERROR); + function _lines($lines, $prefix = ' ') { + foreach ($lines as $line) + echo "$prefix $line\n"; + } + + function _context($lines) { + $this->_lines($lines); + } + + function _added($lines) { + $this->_lines($lines, ">"); + } + function _deleted($lines) { + $this->_lines($lines, "<"); + } + + function _changed($orig, $closing) { + $this->_deleted($orig); + echo "---\n"; + $this->_added($closing); } - $this->_end_block(); - } - - function _start_diff() { - ob_start(); - } - - function _end_diff() { - $val = ob_get_contents(); - ob_end_clean(); - return $val; - } - - function _block_header($xbeg, $xlen, $ybeg, $ylen) { - if ($xlen > 1) - $xbeg .= "," . ($xbeg + $xlen - 1); - if ($ylen > 1) - $ybeg .= "," . ($ybeg + $ylen - 1); - - return $xbeg . ($xlen ? ($ylen ? 'c' : 'd') : 'a') . $ybeg; - } - - function _start_block($header) { - echo $header; - } - - function _end_block() { - } - - function _lines($lines, $prefix = ' ') { - foreach ($lines as $line) - echo "$prefix $line\n"; - } - - function _context($lines) { - $this->_lines($lines); - } - - function _added($lines) { - $this->_lines($lines, ">"); - } - function _deleted($lines) { - $this->_lines($lines, "<"); - } - - function _changed($orig, $closing) { - $this->_deleted($orig); - echo "---\n"; - $this->_added($closing); - } } @@ -837,100 +836,97 @@ class DiffFormatter define('NBSP', "\xC2\xA0"); // utf-8 non-breaking space. class _HWLDF_WordAccumulator { - function _HWLDF_WordAccumulator () { - $this->_lines = array(); - $this->_line = ''; - $this->_group = ''; - $this->_tag = ''; - } - - function _flushGroup ($new_tag) { - if ($this->_group !== '') { - if ($this->_tag == 'mark') - $this->_line .= '<strong>'.$this->_group.'</strong>'; - else - $this->_line .= $this->_group; - } - $this->_group = ''; - $this->_tag = $new_tag; - } - - function _flushLine ($new_tag) { - $this->_flushGroup($new_tag); - if ($this->_line != '') - $this->_lines[] = $this->_line; - $this->_line = ''; - } - - function addWords ($words, $tag = '') { - if ($tag != $this->_tag) - $this->_flushGroup($tag); - - foreach ($words as $word) { - // new-line should only come as first char of word. - if ($word == '') - continue; - if ($word[0] == "\n") { - $this->_group .= NBSP; - $this->_flushLine($tag); - $word = substr($word, 1); - } - assert(!strstr($word, "\n")); - $this->_group .= $word; + function _HWLDF_WordAccumulator () { + $this->_lines = array(); + $this->_line = ''; + $this->_group = ''; + $this->_tag = ''; } - } - - function getLines() { - $this->_flushLine('~done'); - return $this->_lines; - } -} -class WordLevelDiff extends MappedDiff -{ - function WordLevelDiff ($orig_lines, $closing_lines) { - list ($orig_words, $orig_stripped) = $this->_split($orig_lines); - list ($closing_words, $closing_stripped) = $this->_split($closing_lines); + function _flushGroup ($new_tag) { + if ($this->_group !== '') { + if ($this->_tag == 'mark') + $this->_line .= '<strong>'.$this->_group.'</strong>'; + else + $this->_line .= $this->_group; + } + $this->_group = ''; + $this->_tag = $new_tag; + } + function _flushLine ($new_tag) { + $this->_flushGroup($new_tag); + if ($this->_line != '') + $this->_lines[] = $this->_line; + $this->_line = ''; + } - $this->MappedDiff($orig_words, $closing_words, - $orig_stripped, $closing_stripped); - } + function addWords ($words, $tag = '') { + if ($tag != $this->_tag) + $this->_flushGroup($tag); + + foreach ($words as $word) { + // new-line should only come as first char of word. + if ($word == '') + continue; + if ($word[0] == "\n") { + $this->_group .= NBSP; + $this->_flushLine($tag); + $word = substr($word, 1); + } + assert(!strstr($word, "\n")); + $this->_group .= $word; + } + } - function _split($lines) { - // FIXME: fix POSIX char class. -# if (!preg_match_all('/ ( [^\S\n]+ | [[:alnum:]]+ | . ) (?: (?!< \n) [^\S\n])? /xs', - if (!preg_match_all('/ ( [^\S\n]+ | [0-9_A-Za-z\x80-\xff]+ | . ) (?: (?!< \n) [^\S\n])? /xs', - implode("\n", $lines), - $m)) { - return array(array(''), array('')); + function getLines() { + $this->_flushLine('~done'); + return $this->_lines; } - return array($m[0], $m[1]); - } +} + +class WordLevelDiff extends MappedDiff { - function orig () { - $orig = new _HWLDF_WordAccumulator; + function WordLevelDiff ($orig_lines, $closing_lines) { + list ($orig_words, $orig_stripped) = $this->_split($orig_lines); + list ($closing_words, $closing_stripped) = $this->_split($closing_lines); - foreach ($this->edits as $edit) { - if ($edit->type == 'copy') - $orig->addWords($edit->orig); - elseif ($edit->orig) - $orig->addWords($edit->orig, 'mark'); + $this->MappedDiff($orig_words, $closing_words, + $orig_stripped, $closing_stripped); } - return $orig->getLines(); - } - function closing () { - $closing = new _HWLDF_WordAccumulator; + function _split($lines) { + if (!preg_match_all('/ ( [^\S\n]+ | [0-9_A-Za-z\x80-\xff]+ | . ) (?: (?!< \n) [^\S\n])? /xs', + implode("\n", $lines), + $m)) { + return array(array(''), array('')); + } + return array($m[0], $m[1]); + } + + function orig () { + $orig = new _HWLDF_WordAccumulator; - foreach ($this->edits as $edit) { - if ($edit->type == 'copy') - $closing->addWords($edit->closing); - elseif ($edit->closing) - $closing->addWords($edit->closing, 'mark'); - } - return $closing->getLines(); - } + foreach ($this->edits as $edit) { + if ($edit->type == 'copy') + $orig->addWords($edit->orig); + elseif ($edit->orig) + $orig->addWords($edit->orig, 'mark'); + } + return $orig->getLines(); + } + + function closing () { + $closing = new _HWLDF_WordAccumulator; + + foreach ($this->edits as $edit) { + if ($edit->type == 'copy') + $closing->addWords($edit->closing); + elseif ($edit->closing) + $closing->addWords($edit->closing, 'mark'); + } + return $closing->getLines(); + } } /** @@ -938,8 +934,8 @@ class WordLevelDiff extends MappedDiff * * This class formats the diff in classic "unified diff" format. */ -class UnifiedDiffFormatter extends DiffFormatter -{ +class UnifiedDiffFormatter extends DiffFormatter { + function UnifiedDiffFormatter($context_lines = 4) { $this->leading_context_lines = $context_lines; $this->trailing_context_lines = $context_lines; @@ -969,98 +965,99 @@ class UnifiedDiffFormatter extends DiffFormatter * Wikipedia Table style diff formatter. * */ -class TableDiffFormatter extends DiffFormatter -{ - function TableDiffFormatter() { - $this->leading_context_lines = 2; - $this->trailing_context_lines = 2; - } - - function _pre($text){ - $text = htmlspecialchars($text); - $text = str_replace(' ',' ',$text); - if($text{0} == ' ') $text = ' '.substr($text,1); - return $text; - } - - function _block_header( $xbeg, $xlen, $ybeg, $ylen ) { - global $lang; - $l1 = $lang['line'].' '.$xbeg; - $l2 = $lang['line'].' '.$ybeg; - $r = '<tr><td class="diff-blockheader" colspan="2">'.$l1.":</td>\n" . - '<td class="diff-blockheader" colspan="2">'.$l2.":</td></tr>\n"; - return $r; - } - - function _start_block( $header ) { - print( $header ); - } - - function _end_block() { - } - - function _lines( $lines, $prefix=' ', $color="white" ) { - } - - function addedLine( $line ) { - $line = str_replace(' ',' ',$line); - if($line{0} == ' ') $line = ' '.substr($line,1); - return '<td>+</td><td class="diff-addedline">' . - $line.'</td>'; - } - - function deletedLine( $line ) { - $line = str_replace(' ',' ',$line); - if($line{0} == ' ') $line = ' '.substr($line,1); - return '<td>-</td><td class="diff-deletedline">' . - $line.'</td>'; - } - - function emptyLine() { - //$line = str_replace(' ',' ',$line); - return '<td colspan="2"> </td>'; - } - - function contextLine( $line ) { - $line = str_replace(' ',' ',$line); - if($line{0} == ' ') $line = ' '.substr($line,1); - return '<td> </td><td class="diff-context">'.$line.'</td>'; - } - - function _added($lines) { - foreach ($lines as $line) { - print( '<tr>' . $this->emptyLine() . - $this->addedLine( $line ) . "</tr>\n" ); +class TableDiffFormatter extends DiffFormatter { + + function TableDiffFormatter() { + $this->leading_context_lines = 2; + $this->trailing_context_lines = 2; + } + + function format($diff) { + // Preserve whitespaces by converting some to non-breaking spaces. + // Do not convert all of them to allow word-wrap. + $val = parent::format($diff); + $val = str_replace(' ',' ', $val); + $val = preg_replace('/ (?=<)|(?<=[ >]) /', ' ', $val); + return $val; + } + + function _pre($text){ + $text = htmlspecialchars($text); + return $text; + } + + function _block_header( $xbeg, $xlen, $ybeg, $ylen ) { + global $lang; + $l1 = $lang['line'].' '.$xbeg; + $l2 = $lang['line'].' '.$ybeg; + $r = '<tr><td class="diff-blockheader" colspan="2">'.$l1.":</td>\n" . + '<td class="diff-blockheader" colspan="2">'.$l2.":</td></tr>\n"; + return $r; + } + + function _start_block( $header ) { + print( $header ); + } + + function _end_block() { + } + + function _lines( $lines, $prefix=' ', $color="white" ) { + } + + function addedLine( $line ) { + return '<td>+</td><td class="diff-addedline">' . + $line.'</td>'; + + } + + function deletedLine( $line ) { + return '<td>-</td><td class="diff-deletedline">' . + $line.'</td>'; } - } - function _deleted($lines) { - foreach ($lines as $line) { - print( '<tr>' . $this->deletedLine( $line ) . - $this->emptyLine() . "</tr>\n" ); + function emptyLine() { + return '<td colspan="2"> </td>'; } - } - function _context( $lines ) { - foreach ($lines as $line) { - print( '<tr>' . $this->contextLine( $line ) . - $this->contextLine( $line ) . "</tr>\n" ); + function contextLine( $line ) { + return '<td> </td><td class="diff-context">'.$line.'</td>'; } - } - function _changed( $orig, $closing ) { - $diff = new WordLevelDiff( $orig, $closing ); - $del = $diff->orig(); - $add = $diff->closing(); + function _added($lines) { + foreach ($lines as $line) { + print( '<tr>' . $this->emptyLine() . + $this->addedLine( $line ) . "</tr>\n" ); + } + } + + function _deleted($lines) { + foreach ($lines as $line) { + print( '<tr>' . $this->deletedLine( $line ) . + $this->emptyLine() . "</tr>\n" ); + } + } + + function _context( $lines ) { + foreach ($lines as $line) { + print( '<tr>' . $this->contextLine( $line ) . + $this->contextLine( $line ) . "</tr>\n" ); + } + } + + function _changed( $orig, $closing ) { + $diff = new WordLevelDiff( $orig, $closing ); + $del = $diff->orig(); + $add = $diff->closing(); - while ( $line = array_shift( $del ) ) { - $aline = array_shift( $add ); - print( '<tr>' . $this->deletedLine( $line ) . - $this->addedLine( $aline ) . "</tr>\n" ); + while ( $line = array_shift( $del ) ) { + $aline = array_shift( $add ); + print( '<tr>' . $this->deletedLine( $line ) . + $this->addedLine( $aline ) . "</tr>\n" ); + } + $this->_added( $add ); # If any leftovers } - $this->_added( $add ); # If any leftovers - } } -//Setup VIM: ex: et ts=2 enc=utf-8 : +//Setup VIM: ex: et ts=4 enc=utf-8 : diff --git a/inc/FeedParser.php b/inc/FeedParser.php index f37888f01..9d00e7abf 100644 --- a/inc/FeedParser.php +++ b/inc/FeedParser.php @@ -6,9 +6,6 @@ */ if(!defined('DOKU_INC')) die('meh.'); -require_once(DOKU_INC.'inc/HTTPClient.php'); -require_once(DOKU_INC.'inc/SimplePie.php'); - /** * We override some methods of the original SimplePie class here diff --git a/inc/HTTPClient.php b/inc/HTTPClient.php index 578d7e7cd..b6feba35a 100644 --- a/inc/HTTPClient.php +++ b/inc/HTTPClient.php @@ -29,11 +29,12 @@ class DokuHTTPClient extends HTTPClient { $this->HTTPClient(); // set some values from the config - $this->proxy_host = $conf['proxy']['host']; - $this->proxy_port = $conf['proxy']['port']; - $this->proxy_user = $conf['proxy']['user']; - $this->proxy_pass = conf_decodeString($conf['proxy']['pass']); - $this->proxy_ssl = $conf['proxy']['ssl']; + $this->proxy_host = $conf['proxy']['host']; + $this->proxy_port = $conf['proxy']['port']; + $this->proxy_user = $conf['proxy']['user']; + $this->proxy_pass = conf_decodeString($conf['proxy']['pass']); + $this->proxy_ssl = $conf['proxy']['ssl']; + $this->proxy_except = $conf['proxy']['except']; } @@ -105,6 +106,7 @@ class HTTPClient { var $proxy_user; var $proxy_pass; var $proxy_ssl; //boolean set to true if your proxy needs SSL + var $proxy_except; // regexp of URLs to exclude from proxy // what we use as boundary on multipart/form-data posts var $boundary = '---DokuWikiHTTPClient--4523452351'; @@ -151,6 +153,29 @@ class HTTPClient { } /** + * Simple function to do a GET request with given parameters + * + * Returns the wanted page or false on an error. + * + * This is a convenience wrapper around get(). The given parameters + * will be correctly encoded and added to the given base URL. + * + * @param string $url The URL to fetch + * @param string $data Associative array of parameters + * @param bool $sloppy304 Return body on 304 not modified + * @author Andreas Gohr <andi@splitbrain.org> + */ + function dget($url,$data,$sloppy304=false){ + if(strpos($url,'?')){ + $url .= '&'; + }else{ + $url .= '?'; + } + $url .= $this->_postEncode($data); + return $this->get($url,$sloppy304); + } + + /** * Simple function to do a POST request * * Returns the resulting page or false on an error; @@ -202,7 +227,7 @@ class HTTPClient { if(isset($uri['pass'])) $this->pass = $uri['pass']; // proxy setup - if($this->proxy_host){ + if($this->proxy_host && (!$this->proxy_except || !preg_match('/'.$this->proxy_except.'/i',$url)) ){ $request_url = $url; $server = $this->proxy_host; $port = $this->proxy_port; @@ -279,7 +304,6 @@ class HTTPClient { $written += $ret; } - // read headers from socket $r_headers = ''; do{ diff --git a/inc/IXR_Library.php b/inc/IXR_Library.php index 2752e31f2..c7f83a6d6 100644 --- a/inc/IXR_Library.php +++ b/inc/IXR_Library.php @@ -136,6 +136,7 @@ class IXR_Message { var $_value; var $_currentTag; var $_currentTagContents; + var $_lastseen; // The XML parser var $_parser; function IXR_Message ($message) { @@ -150,6 +151,7 @@ class IXR_Message { $this->message = str_replace('&', '&', $this->message); $this->message = str_replace(''', ''', $this->message); $this->message = str_replace('"', '"', $this->message); + $this->message = str_replace("\x0b", ' ', $this->message); //vertical tab if (trim($this->message) == '') { return false; } @@ -193,6 +195,7 @@ class IXR_Message { $this->_arraystructs[] = array(); break; } + $this->_lastseen = $tag; } function cdata($parser, $cdata) { $this->_currentTagContents .= $cdata; @@ -224,7 +227,7 @@ class IXR_Message { break; case 'value': // "If no type is indicated, the type is string." - if (trim($this->_currentTagContents) != '') { + if($this->_lastseen == 'value'){ $value = (string)$this->_currentTagContents; $this->_currentTagContents = ''; $valueFlag = true; @@ -279,6 +282,7 @@ class IXR_Message { $this->params[] = $value; } } + $this->_lastseen = $tag; } } @@ -300,7 +304,7 @@ class IXR_Server { if (!$data) { global $HTTP_RAW_POST_DATA; if (!$HTTP_RAW_POST_DATA) { - die('XML-RPC server accepts POST requests only.'); + die('XML-RPC server accepts POST requests only.'); } $data = $HTTP_RAW_POST_DATA; } @@ -342,14 +346,13 @@ EOD; $method = $this->callbacks[$methodname]; // Perform the callback and send the response -# Removed for DokuWiki to have a more consistent interface -# if (count($args) == 1) { -# // If only one paramater just send that instead of the whole array -# $args = $args[0]; -# } + # Removed for DokuWiki to have a more consistent interface + # if (count($args) == 1) { + # // If only one paramater just send that instead of the whole array + # $args = $args[0]; + # } - -# Adjusted for DokuWiki to use call_user_func_array + # Adjusted for DokuWiki to use call_user_func_array // args need to be an array $args = (array) $args; @@ -365,7 +368,6 @@ EOD; #$result = $this->$method($args); $result = call_user_func_array(array(&$this,$method),$args); } elseif (substr($method, 0, 7) == 'plugin:') { - require_once(DOKU_INC.'inc/pluginutils.php'); list($pluginname, $callback) = explode(':', substr($method, 7), 2); if(!plugin_isdisabled($pluginname)) { $plugin = plugin_load('action', $pluginname); @@ -618,15 +620,17 @@ class IXR_Date { $this->second = gmdate('s', $timestamp); } function parseIso($iso) { - $this->year = substr($iso, 0, 4); - $this->month = substr($iso, 5, 2); - $this->day = substr($iso, 8, 2); - $this->hour = substr($iso, 11, 2); - $this->minute = substr($iso, 14, 2); - $this->second = substr($iso, 17, 2); + if(preg_match('/^(\d\d\d\d)-?(\d\d)-?(\d\d)([T ](\d\d):(\d\d)(:(\d\d))?)?/',$iso,$match)){ + $this->year = (int) $match[1]; + $this->month = (int) $match[2]; + $this->day = (int) $match[3]; + $this->hour = (int) $match[5]; + $this->minute = (int) $match[6]; + $this->second = (int) $match[8]; + } } function getIso() { - return $this->year.'-'.$this->month.'-'.$this->day.'T'.$this->hour.':'.$this->minute.':'.$this->second; + return $this->year.$this->month.$this->day.'T'.$this->hour.':'.$this->minute.':'.$this->second; } function getXml() { return '<dateTime.iso8601>'.$this->getIso().'</dateTime.iso8601>'; diff --git a/inc/JSON.php b/inc/JSON.php index ea66c9c32..332827f4c 100644 --- a/inc/JSON.php +++ b/inc/JSON.php @@ -59,7 +59,6 @@ // for DokuWiki if(!defined('DOKU_INC')) die('meh.'); -require_once(DOKU_INC.'inc/utf8.php'); /** * Marker constant for JSON::decode(), used to flag stack state @@ -112,38 +111,35 @@ define('JSON_STRICT_TYPE', 11); * @since * @deprecated */ -class JSON -{ - /** - * constructs a new JSON instance - * - * @param int $use object behavior: when encoding or decoding, - * be loose or strict about object/array usage - * - * possible values: - * JSON_STRICT_TYPE - strict typing, default - * "{...}" syntax creates objects in decode. - * JSON_LOOSE_TYPE - loose typing - * "{...}" syntax creates associative arrays in decode. - */ - function JSON($use=JSON_STRICT_TYPE) - { +class JSON { + /** + * constructs a new JSON instance + * + * @param int $use object behavior: when encoding or decoding, + * be loose or strict about object/array usage + * + * possible values: + * JSON_STRICT_TYPE - strict typing, default + * "{...}" syntax creates objects in decode. + * JSON_LOOSE_TYPE - loose typing + * "{...}" syntax creates associative arrays in decode. + */ + function JSON($use=JSON_STRICT_TYPE) { $this->use = $use; } - /** - * encodes an arbitrary variable into JSON format - * - * @param mixed $var any number, boolean, string, array, or object to be encoded. - * see argument 1 to JSON() above for array-parsing behavior. - * if var is a strng, note that encode() always expects it - * to be in ASCII or UTF-8 format! - * - * @return string JSON string representation of input var - * @access public - */ - function encode($var) - { + /** + * encodes an arbitrary variable into JSON format + * + * @param mixed $var any number, boolean, string, array, or object to be encoded. + * see argument 1 to JSON() above for array-parsing behavior. + * if var is a strng, note that encode() always expects it + * to be in ASCII or UTF-8 format! + * + * @return string JSON string representation of input var + * @access public + */ + function encode($var) { switch (gettype($var)) { case 'boolean': return $var ? 'true' : 'false'; @@ -163,20 +159,30 @@ class JSON $ascii = ''; $strlen_var = strlen($var); - /* - * Iterate over every character in the string, - * escaping with a slash or encoding to UTF-8 where necessary - */ + /* + * Iterate over every character in the string, + * escaping with a slash or encoding to UTF-8 where necessary + */ for ($c = 0; $c < $strlen_var; ++$c) { $ord_var_c = ord($var{$c}); switch ($ord_var_c) { - case 0x08: $ascii .= '\b'; break; - case 0x09: $ascii .= '\t'; break; - case 0x0A: $ascii .= '\n'; break; - case 0x0C: $ascii .= '\f'; break; - case 0x0D: $ascii .= '\r'; break; + case 0x08: + $ascii .= '\b'; + break; + case 0x09: + $ascii .= '\t'; + break; + case 0x0A: + $ascii .= '\n'; + break; + case 0x0C: + $ascii .= '\f'; + break; + case 0x0D: + $ascii .= '\r'; + break; case 0x22: case 0x2F: @@ -259,26 +265,26 @@ class JSON return '"'.$ascii.'"'; case 'array': - /* - * As per JSON spec if any array key is not an integer - * we must treat the the whole array as an object. We - * also try to catch a sparsely populated associative - * array with numeric keys here because some JS engines - * will create an array with empty indexes up to - * max_index which can cause memory issues and because - * the keys, which may be relevant, will be remapped - * otherwise. - * - * As per the ECMA and JSON specification an object may - * have any string as a property. Unfortunately due to - * a hole in the ECMA specification if the key is a - * ECMA reserved word or starts with a digit the - * parameter is only accessible using ECMAScript's - * bracket notation. - */ + /* + * As per JSON spec if any array key is not an integer + * we must treat the the whole array as an object. We + * also try to catch a sparsely populated associative + * array with numeric keys here because some JS engines + * will create an array with empty indexes up to + * max_index which can cause memory issues and because + * the keys, which may be relevant, will be remapped + * otherwise. + * + * As per the ECMA and JSON specification an object may + * have any string as a property. Unfortunately due to + * a hole in the ECMA specification if the key is a + * ECMA reserved word or starts with a digit the + * parameter is only accessible using ECMAScript's + * bracket notation. + */ // treat as a JSON object - if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) { + if (is_array($var) && count($var) && (array_keys($var) !== range(0, count($var) - 1))) { return sprintf('{%s}', join(',', array_map(array($this, 'name_value'), array_keys($var), array_values($var)))); @@ -298,38 +304,35 @@ class JSON } } - /** - * encodes an arbitrary variable into JSON format, alias for encode() - */ - function enc($var) - { + /** + * encodes an arbitrary variable into JSON format, alias for encode() + */ + function enc($var) { return $this->encode($var); } - /** function name_value - * array-walking function for use in generating JSON-formatted name-value pairs - * - * @param string $name name of key to use - * @param mixed $value reference to an array element to be encoded - * - * @return string JSON-formatted name-value pair, like '"name":value' - * @access private - */ - function name_value($name, $value) - { + /** function name_value + * array-walking function for use in generating JSON-formatted name-value pairs + * + * @param string $name name of key to use + * @param mixed $value reference to an array element to be encoded + * + * @return string JSON-formatted name-value pair, like '"name":value' + * @access private + */ + function name_value($name, $value) { return (sprintf("%s:%s", $this->encode(strval($name)), $this->encode($value))); } - /** - * reduce a string by removing leading and trailing comments and whitespace - * - * @param $str string string value to strip of comments and whitespace - * - * @return string string value stripped of comments and whitespace - * @access private - */ - function reduce_string($str) - { + /** + * reduce a string by removing leading and trailing comments and whitespace + * + * @param $str string string value to strip of comments and whitespace + * + * @return string string value stripped of comments and whitespace + * @access private + */ + function reduce_string($str) { $str = preg_replace(array( // eliminate single line comments in '// ...' form @@ -347,20 +350,19 @@ class JSON return trim($str); } - /** - * decodes a JSON string into appropriate variable - * - * @param string $str JSON-formatted string - * - * @return mixed number, boolean, string, array, or object - * corresponding to given JSON input string. - * See argument 1 to JSON() above for object-output behavior. - * Note that decode() always returns strings - * in ASCII or UTF-8 format! - * @access public - */ - function decode($str) - { + /** + * decodes a JSON string into appropriate variable + * + * @param string $str JSON-formatted string + * + * @return mixed number, boolean, string, array, or object + * corresponding to given JSON input string. + * See argument 1 to JSON() above for object-output behavior. + * Note that decode() always returns strings + * in ASCII or UTF-8 format! + * @access public + */ + function decode($str) { $str = $this->reduce_string($str); switch (strtolower($str)) { @@ -399,11 +401,26 @@ class JSON $ord_chrs_c = ord($chrs{$c}); switch ($substr_chrs_c_2) { - case '\b': $utf8 .= chr(0x08); $c+=1; break; - case '\t': $utf8 .= chr(0x09); $c+=1; break; - case '\n': $utf8 .= chr(0x0A); $c+=1; break; - case '\f': $utf8 .= chr(0x0C); $c+=1; break; - case '\r': $utf8 .= chr(0x0D); $c+=1; break; + case '\b': + $utf8 .= chr(0x08); + $c+=1; + break; + case '\t': + $utf8 .= chr(0x09); + $c+=1; + break; + case '\n': + $utf8 .= chr(0x0A); + $c+=1; + break; + case '\f': + $utf8 .= chr(0x0C); + $c+=1; + break; + case '\r': + $utf8 .= chr(0x0D); + $c+=1; + break; case '\\"': case '\\\'': @@ -430,27 +447,32 @@ class JSON } elseif(($ord_chrs_c & 0xE0) == 0xC0) { // characters U-00000080 - U-000007FF, mask 110XXXXX //see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $utf8 .= substr($chrs, $c, 2); $c += 1; + $utf8 .= substr($chrs, $c, 2); + $c += 1; } elseif(($ord_chrs_c & 0xF0) == 0xE0) { // characters U-00000800 - U-0000FFFF, mask 1110XXXX // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $utf8 .= substr($chrs, $c, 3); $c += 2; + $utf8 .= substr($chrs, $c, 3); + $c += 2; } elseif(($ord_chrs_c & 0xF8) == 0xF0) { // characters U-00010000 - U-001FFFFF, mask 11110XXX // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $utf8 .= substr($chrs, $c, 4); $c += 3; + $utf8 .= substr($chrs, $c, 4); + $c += 3; } elseif(($ord_chrs_c & 0xFC) == 0xF8) { // characters U-00200000 - U-03FFFFFF, mask 111110XX // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $utf8 .= substr($chrs, $c, 5); $c += 4; + $utf8 .= substr($chrs, $c, 5); + $c += 4; } elseif(($ord_chrs_c & 0xFE) == 0xFC) { // characters U-04000000 - U-7FFFFFFF, mask 1111110X // see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 - $utf8 .= substr($chrs, $c, 6); $c += 5; + $utf8 .= substr($chrs, $c, 6); + $c += 5; } break; @@ -612,13 +634,11 @@ class JSON } } - /** - * decodes a JSON string into appropriate variable; alias for decode() - */ - function dec($var) - { + /** + * decodes a JSON string into appropriate variable; alias for decode() + */ + function dec($var) { return $this->decode($var); } - } diff --git a/inc/JpegMeta.php b/inc/JpegMeta.php index cb1d7d694..98453131e 100644 --- a/inc/JpegMeta.php +++ b/inc/JpegMeta.php @@ -2,35 +2,44 @@ /** * JPEG metadata reader/writer * - * @license PHP license 2.0 (http://www.php.net/license/2_02.txt) - * @link http://www.zonageek.com/software/php/jpeg/index.php + * @license BSD <http://www.opensource.org/licenses/bsd-license.php> + * @link http://github.com/sd/jpeg-php * @author Sebastian Delmont <sdelmont@zonageek.com> * @author Andreas Gohr <andi@splitbrain.org> - * @author Hakan Sandell <hakan.sandell@mydata.se> + * @author Hakan Sandell <hakan.sandell@mydata.se> * @todo Add support for Maker Notes, Extend for GIF and PNG metadata */ -// This class is a modified and enhanced version of the JPEG class by -// Sebastian Delmont. Original Copyright notice follows: +// Original copyright notice: // -// +----------------------------------------------------------------------+ -// | PHP version 4.0 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 2.0 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available at through the world-wide-web at | -// | http://www.php.net/license/2_02.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Authors: Sebastian Delmont <sdelmont@zonageek.com> | -// +----------------------------------------------------------------------+ - -class JpegMeta -{ +// Copyright (c) 2003 Sebastian Delmont <sdelmont@zonageek.com> +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// 1. Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// 2. Redistributions in binary form must reproduce the above copyright +// notice, this list of conditions and the following disclaimer in the +// documentation and/or other materials provided with the distribution. +// 3. Neither the name of the author nor the names of its contributors +// may be used to endorse or promote products derived from this software +// without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS +// IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +// TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +// PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +// TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE + +class JpegMeta { var $_fileName; var $_fp = null; var $_type = 'unknown'; @@ -44,8 +53,7 @@ class JpegMeta * * @author Sebastian Delmont <sdelmont@zonageek.com> */ - function JpegMeta($fileName) - { + function JpegMeta($fileName) { $this->_fileName = $fileName; @@ -61,8 +69,7 @@ class JpegMeta * * @author Sebastian Delmont <sdelmont@zonageek.com> */ - function & getRawInfo() - { + function & getRawInfo() { $this->_parseAll(); if ($this->_markers == null) { @@ -77,8 +84,7 @@ class JpegMeta * * @author Sebastian Delmont <sdelmont@zonageek.com> */ - function & getBasicInfo() - { + function & getBasicInfo() { $this->_parseAll(); $info = array(); @@ -91,16 +97,14 @@ class JpegMeta if (isset($this->_info['file']['Url'])) { $info['Url'] = $this->_info['file']['Url']; $info['NiceSize'] = "???KB"; - } - else { + } else { $info['Size'] = $this->_info['file']['Size']; $info['NiceSize'] = $this->_info['file']['NiceSize']; } if (@isset($this->_info['sof']['Format'])) { $info['Format'] = $this->_info['sof']['Format'] . " JPEG"; - } - else { + } else { $info['Format'] = $this->_info['sof']['Format'] . " JPEG"; } @@ -129,8 +133,7 @@ class JpegMeta * * @author Andreas Gohr <andi@splitbrain.org> */ - function getField($fields) - { + function getField($fields) { if(!is_array($fields)) $fields = array($fields); $info = false; foreach($fields as $field){ @@ -175,8 +178,7 @@ class JpegMeta * * @author Andreas Gohr <andi@splitbrain.org> */ - function setField($field, $value) - { + function setField($field, $value) { if(strtolower(substr($field,0,5)) == 'iptc.'){ return $this->setIPTCField(substr($field,5),$value); }elseif(strtolower(substr($field,0,5)) == 'exif.'){ @@ -192,8 +194,7 @@ class JpegMeta * * @author Andreas Gohr <andi@splitbrain.org> */ - function deleteField($field) - { + function deleteField($field) { if(strtolower(substr($field,0,5)) == 'iptc.'){ return $this->deleteIPTCField(substr($field,5)); }elseif(strtolower(substr($field,0,5)) == 'exif.'){ @@ -208,8 +209,7 @@ class JpegMeta * * @author Andreas Gohr <andi@splitbrain.org> */ - function getDateField($field) - { + function getDateField($field) { if (!isset($this->_info['dates'])) { $this->_info['dates'] = $this->getDates(); } @@ -226,8 +226,7 @@ class JpegMeta * * @author Andreas Gohr <andi@splitbrain.org> */ - function getFileField($field) - { + function getFileField($field) { if (!isset($this->_info['file'])) { $this->_parseFileInfo(); } @@ -258,8 +257,7 @@ class JpegMeta * * @author Joe Lapp <joe.lapp@pobox.com> */ - function getShutterSpeed() - { + function getShutterSpeed() { if (!isset($this->_info['exif'])) { $this->_parseMarkerExif(); } @@ -277,8 +275,7 @@ class JpegMeta * * @author Sebastian Delmont <sdelmont@zonageek.com> */ - function getExifField($field) - { + function getExifField($field) { if (!isset($this->_info['exif'])) { $this->_parseMarkerExif(); } @@ -299,8 +296,7 @@ class JpegMeta * * @author Hakan Sandell <hakan.sandell@mydata.se> */ - function getXmpField($field) - { + function getXmpField($field) { if (!isset($this->_info['xmp'])) { $this->_parseMarkerXmp(); } @@ -321,8 +317,7 @@ class JpegMeta * * @author Sebastian Delmont <sdelmont@zonageek.com> */ - function getAdobeField($field) - { + function getAdobeField($field) { if (!isset($this->_info['adobe'])) { $this->_parseMarkerAdobe(); } @@ -343,8 +338,7 @@ class JpegMeta * * @author Sebastian Delmont <sdelmont@zonageek.com> */ - function getIPTCField($field) - { + function getIPTCField($field) { if (!isset($this->_info['iptc'])) { $this->_parseMarkerAdobe(); } @@ -366,8 +360,7 @@ class JpegMeta * @author Sebastian Delmont <sdelmont@zonageek.com> * @author Joe Lapp <joe.lapp@pobox.com> */ - function setExifField($field, $value) - { + function setExifField($field, $value) { if (!isset($this->_info['exif'])) { $this->_parseMarkerExif(); } @@ -397,8 +390,7 @@ class JpegMeta * * @author Sebastian Delmont <sdelmont@zonageek.com> */ - function setAdobeField($field, $value) - { + function setAdobeField($field, $value) { if (!isset($this->_info['adobe'])) { $this->_parseMarkerAdobe(); } @@ -451,8 +443,7 @@ class JpegMeta * * @author Sebastian Delmont <sdelmont@zonageek.com> */ - function setIPTCField($field, $value) - { + function setIPTCField($field, $value) { if (!isset($this->_info['iptc'])) { $this->_parseMarkerAdobe(); } @@ -475,8 +466,7 @@ class JpegMeta * * @author Sebastian Delmont <sdelmont@zonageek.com> */ - function deleteExifField($field) - { + function deleteExifField($field) { if (!isset($this->_info['exif'])) { $this->_parseMarkerAdobe(); } @@ -497,8 +487,7 @@ class JpegMeta * * @author Sebastian Delmont <sdelmont@zonageek.com> */ - function deleteAdobeField($field) - { + function deleteAdobeField($field) { if (!isset($this->_info['adobe'])) { $this->_parseMarkerAdobe(); } @@ -519,8 +508,7 @@ class JpegMeta * * @author Sebastian Delmont <sdelmont@zonageek.com> */ - function deleteIPTCField($field) - { + function deleteIPTCField($field) { if (!isset($this->_info['iptc'])) { $this->_parseMarkerAdobe(); } @@ -547,12 +535,12 @@ class JpegMeta // try various fields $cap = $this->getField(array('Iptc.Headline', - 'Iptc.Caption', - 'Xmp.dc:title', - 'Exif.UserComment', - 'Exif.TIFFUserComment', - 'Exif.TIFFImageDescription', - 'File.Name')); + 'Iptc.Caption', + 'Xmp.dc:title', + 'Exif.UserComment', + 'Exif.TIFFUserComment', + 'Exif.TIFFImageDescription', + 'File.Name')); if (empty($cap)) return false; if(!$max) return $cap; @@ -568,8 +556,7 @@ class JpegMeta * * @author Sebastian Delmont <sdelmont@zonageek.com> */ - function getDates() - { + function getDates() { $this->_parseAll(); if ($this->_markers == null) { if (@isset($this->_info['file']['UnixTime'])) { @@ -704,8 +691,7 @@ class JpegMeta * * @author Sebastian Delmont <sdelmont@zonageek.com> */ - function getWidth() - { + function getWidth() { if (!isset($this->_info['sof'])) { $this->_parseMarkerSOF(); } @@ -734,8 +720,7 @@ class JpegMeta * * @author Sebastian Delmont <sdelmont@zonageek.com> */ - function getHeight() - { + function getHeight() { if (!isset($this->_info['sof'])) { $this->_parseMarkerSOF(); } @@ -764,8 +749,7 @@ class JpegMeta * * @author Sebastian Delmont <sdelmont@zonageek.com> */ - function getDimStr() - { + function getDimStr() { if ($this->_markers == null) { return false; } @@ -781,8 +765,7 @@ class JpegMeta * * @author Sebastian Delmont <sdelmont@zonageek.com> */ - function hasThumbnail($which = 'any') - { + function hasThumbnail($which = 'any') { if (($which == 'any') || ($which == 'exif')) { if (!isset($this->_info['exif'])) { $this->_parseMarkerExif(); @@ -823,8 +806,7 @@ class JpegMeta * * @author Sebastian Delmont <sdelmont@zonageek.com> */ - function sendThumbnail($which = 'any') - { + function sendThumbnail($which = 'any') { $data = null; if (($which == 'any') || ($which == 'exif')) { @@ -892,8 +874,7 @@ class JpegMeta /*************************************************************/ /*************************************************************/ - function _dispose() - { + function _dispose() { $this->_fileName = $fileName; $this->_fp = null; @@ -904,8 +885,7 @@ class JpegMeta } /*************************************************************/ - function _readJPEG() - { + function _readJPEG() { unset($this->_markers); //unset($this->_info); $this->_markers = array(); @@ -919,8 +899,7 @@ class JpegMeta else { $this->_type = 'url'; } - } - else { + } else { $this->_fp = null; return false; // ERROR: Can't open file } @@ -942,14 +921,14 @@ class JpegMeta while (!$done) { $capture = false; - // First, skip any non 0xFF bytes + // First, skip any non 0xFF bytes $discarded = 0; $c = ord(fgetc($this->_fp)); while (!feof($this->_fp) && ($c != 0xFF)) { $discarded++; $c = ord(fgetc($this->_fp)); } - // Then skip all 0xFF until the marker byte + // Then skip all 0xFF until the marker byte do { $marker = ord(fgetc($this->_fp)); } while (!feof($this->_fp) && ($marker == 0xFF)); @@ -971,23 +950,23 @@ class JpegMeta $length = $length - 2; // The length we got counts itself switch ($marker) { - case 0xC0: // SOF0 - case 0xC1: // SOF1 - case 0xC2: // SOF2 - case 0xC9: // SOF9 - case 0xE0: // APP0: JFIF data - case 0xE1: // APP1: EXIF or XMP data - case 0xED: // APP13: IPTC / Photoshop data - $capture = true; - break; - case 0xDA: // SOS: Start of scan... the image itself and the last block on the file - $capture = false; - $length = -1; // This field has no length... it includes all data until EOF - $done = true; - break; - default: - $capture = true;//false; - break; + case 0xC0: // SOF0 + case 0xC1: // SOF1 + case 0xC2: // SOF2 + case 0xC9: // SOF9 + case 0xE0: // APP0: JFIF data + case 0xE1: // APP1: EXIF or XMP data + case 0xED: // APP13: IPTC / Photoshop data + $capture = true; + break; + case 0xDA: // SOS: Start of scan... the image itself and the last block on the file + $capture = false; + $length = -1; // This field has no length... it includes all data until EOF + $done = true; + break; + default: + $capture = true;//false; + break; } $this->_markers[$count] = array(); @@ -1002,7 +981,7 @@ class JpegMeta } elseif (!$done) { $result = @fseek($this->_fp, $length, SEEK_CUR); - // fseek doesn't seem to like HTTP 'files', but fgetc has no problem + // fseek doesn't seem to like HTTP 'files', but fgetc has no problem if (!($result === 0)) { for ($i = 0; $i < $length; $i++) { fgetc($this->_fp); @@ -1021,8 +1000,7 @@ class JpegMeta } /*************************************************************/ - function _parseAll() - { + function _parseAll() { if (!isset($this->_info['file'])) { $this->_parseFileInfo(); } @@ -1052,8 +1030,7 @@ class JpegMeta } /*************************************************************/ - function _writeJPEG($outputName) - { + function _writeJPEG($outputName) { $this->_parseAll(); $wroteEXIF = false; @@ -1067,16 +1044,13 @@ class JpegMeta else { $this->_type = 'url'; } - } - else { + } else { $this->_fp = null; return false; // ERROR: Can't open file } $this->_fpout = fopen($outputName, 'wb'); - if ($this->_fpout) { - } - else { + if (!$this->_fpout) { $this->_fpout = null; fclose($this->_fp); $this->_fp = null; @@ -1100,14 +1074,14 @@ class JpegMeta $ok = true; while (!$done) { - // First, skip any non 0xFF bytes + // First, skip any non 0xFF bytes $discarded = 0; $c = ord(fgetc($this->_fp)); while (!feof($this->_fp) && ($c != 0xFF)) { $discarded++; $c = ord(fgetc($this->_fp)); } - // Then skip all 0xFF until the marker byte + // Then skip all 0xFF until the marker byte do { $marker = ord(fgetc($this->_fp)); } while (!feof($this->_fp) && ($marker == 0xFF)); @@ -1156,7 +1130,7 @@ class JpegMeta if (!$wroteAdobe && (($marker < 0xE0) || ($marker > 0xEF))) { if ((isset($this->_info['adobe']) && is_array($this->_info['adobe'])) - || (isset($this->_info['iptc']) && is_array($this->_info['iptc']))) { + || (isset($this->_info['iptc']) && is_array($this->_info['iptc']))) { $adobe =& $this->_createMarkerAdobe(); $this->_writeJPEGMarker(0xED, strlen($adobe), $adobe, 0); unset($adobe); @@ -1188,8 +1162,7 @@ class JpegMeta } /*************************************************************/ - function _writeJPEGMarker($marker, $length, &$data, $origLength) - { + function _writeJPEGMarker($marker, $length, &$data, $origLength) { if ($length <= 0) { return false; } @@ -1212,15 +1185,13 @@ class JpegMeta } } } - } - else { + } else { if ($marker == 0xDA) { // Copy until EOF while (!feof($this->_fp)) { $data = fread($this->_fp, 1024 * 16); fputs($this->_fpout, $data, strlen($data)); } - } - else { // Copy only $length bytes + } else { // Copy only $length bytes $data = @fread($this->_fp, $length); fputs($this->_fpout, $data, $length); } @@ -1235,8 +1206,7 @@ class JpegMeta * @author Sebastian Delmont <sdelmont@zonageek.com> * @author Andreas Gohr <andi@splitbrain.org> */ - function _parseFileInfo() - { + function _parseFileInfo() { if (file_exists($this->_fileName)) { $this->_info['file'] = array(); $this->_info['file']['Name'] = basename($this->_fileName); @@ -1244,14 +1214,11 @@ class JpegMeta $this->_info['file']['Size'] = filesize($this->_fileName); if ($this->_info['file']['Size'] < 1024) { $this->_info['file']['NiceSize'] = $this->_info['file']['Size'] . 'B'; - } - elseif ($this->_info['file']['Size'] < (1024 * 1024)) { + } elseif ($this->_info['file']['Size'] < (1024 * 1024)) { $this->_info['file']['NiceSize'] = round($this->_info['file']['Size'] / 1024) . 'KB'; - } - elseif ($this->_info['file']['Size'] < (1024 * 1024 * 1024)) { + } elseif ($this->_info['file']['Size'] < (1024 * 1024 * 1024)) { $this->_info['file']['NiceSize'] = round($this->_info['file']['Size'] / (1024*1024)) . 'MB'; - } - else { + } else { $this->_info['file']['NiceSize'] = $this->_info['file']['Size'] . 'B'; } $this->_info['file']['UnixTime'] = filemtime($this->_fileName); @@ -1331,8 +1298,7 @@ class JpegMeta default: $this->_info['file']['Mime'] = 'image/unknown'; } - } - else { + } else { $this->_info['file'] = array(); $this->_info['file']['Name'] = basename($this->_fileName); $this->_info['file']['Url'] = $this->_fileName; @@ -1342,8 +1308,7 @@ class JpegMeta } /*************************************************************/ - function _parseMarkerJFIF() - { + function _parseMarkerJFIF() { if (!isset($this->_markers)) { $this->_readJPEG(); } @@ -1372,7 +1337,6 @@ class JpegMeta $pos = 0; $this->_info['jfif'] = array(); - $vmaj = $this->_getByte($data, 5); $vmin = $this->_getByte($data, 6); @@ -1380,18 +1344,18 @@ class JpegMeta $units = $this->_getByte($data, 7); switch ($units) { - case 0: - $this->_info['jfif']['Units'] = 'pixels'; - break; - case 1: - $this->_info['jfif']['Units'] = 'dpi'; - break; - case 2: - $this->_info['jfif']['Units'] = 'dpcm'; - break; - default: - $this->_info['jfif']['Units'] = 'unknown'; - break; + case 0: + $this->_info['jfif']['Units'] = 'pixels'; + break; + case 1: + $this->_info['jfif']['Units'] = 'dpi'; + break; + case 2: + $this->_info['jfif']['Units'] = 'dpcm'; + break; + default: + $this->_info['jfif']['Units'] = 'unknown'; + break; } $xdens = $this->_getShort($data, 8); @@ -1410,8 +1374,7 @@ class JpegMeta } /*************************************************************/ - function _parseMarkerSOF() - { + function _parseMarkerSOF() { if (!isset($this->_markers)) { $this->_readJPEG(); } @@ -1424,13 +1387,13 @@ class JpegMeta $count = count($this->_markers); for ($i = 0; $i < $count; $i++) { switch ($this->_markers[$i]['marker']) { - case 0xC0: // SOF0 - case 0xC1: // SOF1 - case 0xC2: // SOF2 - case 0xC9: // SOF9 - $data =& $this->_markers[$i]['data']; - $marker = $this->_markers[$i]['marker']; - break; + case 0xC0: // SOF0 + case 0xC1: // SOF1 + case 0xC2: // SOF2 + case 0xC9: // SOF9 + $data =& $this->_markers[$i]['data']; + $marker = $this->_markers[$i]['marker']; + break; } } @@ -1442,32 +1405,29 @@ class JpegMeta $pos = 0; $this->_info['sof'] = array(); - switch ($marker) { - case 0xC0: // SOF0 - $format = 'Baseline'; - break; - case 0xC1: // SOF1 - $format = 'Progessive'; - break; - case 0xC2: // SOF2 - $format = 'Non-baseline'; - break; - case 0xC9: // SOF9 - $format = 'Arithmetic'; - break; - default: - return false; - break; + case 0xC0: // SOF0 + $format = 'Baseline'; + break; + case 0xC1: // SOF1 + $format = 'Progessive'; + break; + case 0xC2: // SOF2 + $format = 'Non-baseline'; + break; + case 0xC9: // SOF9 + $format = 'Arithmetic'; + break; + default: + return false; + break; } - - $this->_info['sof']['Format'] = $format; - + $this->_info['sof']['Format'] = $format; $this->_info['sof']['SamplePrecision'] = $this->_getByte($data, $pos + 0); - $this->_info['sof']['ImageHeight'] = $this->_getShort($data, $pos + 1); - $this->_info['sof']['ImageWidth'] = $this->_getShort($data, $pos + 3); - $this->_info['sof']['ColorChannels'] = $this->_getByte($data, $pos + 5); + $this->_info['sof']['ImageHeight'] = $this->_getShort($data, $pos + 1); + $this->_info['sof']['ImageWidth'] = $this->_getShort($data, $pos + 3); + $this->_info['sof']['ColorChannels'] = $this->_getByte($data, $pos + 5); return true; } @@ -1477,8 +1437,7 @@ class JpegMeta * * @author Hakan Sandell <hakan.sandell@mydata.se> */ - function _parseMarkerXmp() - { + function _parseMarkerXmp() { if (!isset($this->_markers)) { $this->_readJPEG(); } @@ -1513,10 +1472,10 @@ class JpegMeta $this->_info['xmp'] = array(); $count = count($values); for ($i = 0; $i < $count; $i++) { - if ($values[$i][tag] == 'rdf:Description' && $values[$i][type] == 'open') { + if ($values[$i]['tag'] == 'rdf:Description' && $values[$i]['type'] == 'open') { - while ($values[++$i][tag] != 'rdf:Description') { - $this->_parseXmpNode($values, $i, $this->_info['xmp'][$values[$i][tag]]); + while ($values[++$i]['tag'] != 'rdf:Description') { + $this->_parseXmpNode($values, $i, $this->_info['xmp'][$values[$i]['tag']]); } } } @@ -1528,43 +1487,41 @@ class JpegMeta * * @author Hakan Sandell <hakan.sandell@mydata.se> */ - function _parseXmpNode($values, &$i, &$meta) - { - if ($values[$i][type] == 'complete') { + function _parseXmpNode($values, &$i, &$meta) { + if ($values[$i]['type'] == 'complete') { // Simple Type property - $meta = $values[$i][value]; + $meta = $values[$i]['value']; return; } $i++; - if ($values[$i][tag] == 'rdf:Bag' || $values[$i][tag] == 'rdf:Seq') { + if ($values[$i]['tag'] == 'rdf:Bag' || $values[$i]['tag'] == 'rdf:Seq') { // Array property $meta = array(); - while ($values[++$i][tag] == 'rdf:li') { + while ($values[++$i]['tag'] == 'rdf:li') { $this->_parseXmpNode($values, $i, $meta[]); } $i++; // skip closing tag - } elseif ($values[$i][tag] == 'rdf:Alt') { + } elseif ($values[$i]['tag'] == 'rdf:Alt') { // Language Alternative property, only the first (default) value is used $i++; $this->_parseXmpNode($values, $i, $meta); - while ($values[++$i][tag] != 'rdf:Alt'); + while ($values[++$i]['tag'] != 'rdf:Alt'); $i++; // skip closing tag } else { // Structure property $meta = array(); - $startTag = $values[$i-1][tag]; + $startTag = $values[$i-1]['tag']; do { - $this->_parseXmpNode($values, $i, $meta[$values[$i][tag]]); - } while ($values[++$i][tag] != $startTag); + $this->_parseXmpNode($values, $i, $meta[$values[$i]['tag']]); + } while ($values[++$i]['tag'] != $startTag); } } /*************************************************************/ - function _parseMarkerExif() - { + function _parseMarkerExif() { if (!isset($this->_markers)) { $this->_readJPEG(); } @@ -1598,11 +1555,9 @@ class JpegMeta if ($byteAlign == 0x4949) { // "II" $isBigEndian = false; - } - elseif ($byteAlign == 0x4D4D) { // "MM" + } elseif ($byteAlign == 0x4D4D) { // "MM" $isBigEndian = true; - } - else { + } else { return false; // Unexpected data } @@ -1612,8 +1567,7 @@ class JpegMeta if ($isBigEndian) { $this->_info['exif']['ByteAlign'] = "Big Endian"; - } - else { + } else { $this->_info['exif']['ByteAlign'] = "Little Endian"; } @@ -1629,8 +1583,7 @@ class JpegMeta } /*************************************************************/ - function _readIFD($data, $base, $offset, $isBigEndian, $mode) - { + function _readIFD($data, $base, $offset, $isBigEndian, $mode) { $EXIFTags = $this->_exifTagNames($mode); $numEntries = $this->_getShort($data, $base + $offset, $isBigEndian); @@ -1658,161 +1611,146 @@ class JpegMeta if ($dataLength > 4) { $dataOffset = $this->_getLong($data, $base + $offset, $isBigEndian); $rawValue = $this->_getFixedString($data, $base + $dataOffset, $dataLength); - } - else { + } else { $rawValue = $this->_getFixedString($data, $base + $offset, $dataLength); } $offset += 4; switch ($type) { - case 1: // UBYTE - if ($count == 1) { - $value = $this->_getByte($rawValue, 0); - } - else { - $value = array(); - for ($j = 0; $j < $count; $j++) - $value[$j] = $this->_getByte($rawValue, $j); - } - break; - case 2: // ASCII - $value = $rawValue; - break; - case 3: // USHORT - if ($count == 1) { - $value = $this->_getShort($rawValue, 0, $isBigEndian); - } - else { - $value = array(); - for ($j = 0; $j < $count; $j++) - $value[$j] = $this->_getShort($rawValue, $j * 2, $isBigEndian); - } - break; - case 4: // ULONG - if ($count == 1) { - $value = $this->_getLong($rawValue, 0, $isBigEndian); - } - else { - $value = array(); - for ($j = 0; $j < $count; $j++) - $value[$j] = $this->_getLong($rawValue, $j * 4, $isBigEndian); - } - break; - case 5: // URATIONAL - if ($count == 1) { - $a = $this->_getLong($rawValue, 0, $isBigEndian); - $b = $this->_getLong($rawValue, 4, $isBigEndian); - $value = array(); - $value['val'] = 0; - $value['num'] = $a; - $value['den'] = $b; - if (($a != 0) && ($b != 0)) { - $value['val'] = $a / $b; + case 1: // UBYTE + if ($count == 1) { + $value = $this->_getByte($rawValue, 0); + } else { + $value = array(); + for ($j = 0; $j < $count; $j++) + $value[$j] = $this->_getByte($rawValue, $j); } - } - else { - $value = array(); - for ($j = 0; $j < $count; $j++) { - $a = $this->_getLong($rawValue, $j * 8, $isBigEndian); - $b = $this->_getLong($rawValue, ($j * 8) + 4, $isBigEndian); + break; + case 2: // ASCII + $value = $rawValue; + break; + case 3: // USHORT + if ($count == 1) { + $value = $this->_getShort($rawValue, 0, $isBigEndian); + } else { $value = array(); - $value[$j]['val'] = 0; - $value[$j]['num'] = $a; - $value[$j]['den'] = $b; - if (($a != 0) && ($b != 0)) - $value[$j]['val'] = $a / $b; + for ($j = 0; $j < $count; $j++) + $value[$j] = $this->_getShort($rawValue, $j * 2, $isBigEndian); } - } - break; - case 6: // SBYTE - if ($count == 1) { - $value = $this->_getByte($rawValue, 0); - } - else { - $value = array(); - for ($j = 0; $j < $count; $j++) - $value[$j] = $this->_getByte($rawValue, $j); - } - break; - case 7: // UNDEFINED - $value = $rawValue; - break; - case 8: // SSHORT - if ($count == 1) { - $value = $this->_getShort($rawValue, 0, $isBigEndian); - } - else { - $value = array(); - for ($j = 0; $j < $count; $j++) - $value[$j] = $this->_getShort($rawValue, $j * 2, $isBigEndian); - } - break; - case 9: // SLONG - if ($count == 1) { - $value = $this->_getLong($rawValue, 0, $isBigEndian); - } - else { - $value = array(); - for ($j = 0; $j < $count; $j++) - $value[$j] = $this->_getLong($rawValue, $j * 4, $isBigEndian); - } - break; - case 10: // SRATIONAL - if ($count == 1) { - $a = $this->_getLong($rawValue, 0, $isBigEndian); - $b = $this->_getLong($rawValue, 4, $isBigEndian); - $value = array(); - $value['val'] = 0; - $value['num'] = $a; - $value['den'] = $b; - if (($a != 0) && ($b != 0)) - $value['val'] = $a / $b; - } - else { - $value = array(); - for ($j = 0; $j < $count; $j++) { - $a = $this->_getLong($rawValue, $j * 8, $isBigEndian); - $b = $this->_getLong($rawValue, ($j * 8) + 4, $isBigEndian); + break; + case 4: // ULONG + if ($count == 1) { + $value = $this->_getLong($rawValue, 0, $isBigEndian); + } else { $value = array(); - $value[$j]['val'] = 0; - $value[$j]['num'] = $a; - $value[$j]['den'] = $b; + for ($j = 0; $j < $count; $j++) + $value[$j] = $this->_getLong($rawValue, $j * 4, $isBigEndian); + } + break; + case 5: // URATIONAL + if ($count == 1) { + $a = $this->_getLong($rawValue, 0, $isBigEndian); + $b = $this->_getLong($rawValue, 4, $isBigEndian); + $value = array(); + $value['val'] = 0; + $value['num'] = $a; + $value['den'] = $b; + if (($a != 0) && ($b != 0)) { + $value['val'] = $a / $b; + } + } else { + $value = array(); + for ($j = 0; $j < $count; $j++) { + $a = $this->_getLong($rawValue, $j * 8, $isBigEndian); + $b = $this->_getLong($rawValue, ($j * 8) + 4, $isBigEndian); + $value = array(); + $value[$j]['val'] = 0; + $value[$j]['num'] = $a; + $value[$j]['den'] = $b; + if (($a != 0) && ($b != 0)) + $value[$j]['val'] = $a / $b; + } + } + break; + case 6: // SBYTE + if ($count == 1) { + $value = $this->_getByte($rawValue, 0); + } else { + $value = array(); + for ($j = 0; $j < $count; $j++) + $value[$j] = $this->_getByte($rawValue, $j); + } + break; + case 7: // UNDEFINED + $value = $rawValue; + break; + case 8: // SSHORT + if ($count == 1) { + $value = $this->_getShort($rawValue, 0, $isBigEndian); + } else { + $value = array(); + for ($j = 0; $j < $count; $j++) + $value[$j] = $this->_getShort($rawValue, $j * 2, $isBigEndian); + } + break; + case 9: // SLONG + if ($count == 1) { + $value = $this->_getLong($rawValue, 0, $isBigEndian); + } else { + $value = array(); + for ($j = 0; $j < $count; $j++) + $value[$j] = $this->_getLong($rawValue, $j * 4, $isBigEndian); + } + break; + case 10: // SRATIONAL + if ($count == 1) { + $a = $this->_getLong($rawValue, 0, $isBigEndian); + $b = $this->_getLong($rawValue, 4, $isBigEndian); + $value = array(); + $value['val'] = 0; + $value['num'] = $a; + $value['den'] = $b; if (($a != 0) && ($b != 0)) - $value[$j]['val'] = $a / $b; + $value['val'] = $a / $b; + } else { + $value = array(); + for ($j = 0; $j < $count; $j++) { + $a = $this->_getLong($rawValue, $j * 8, $isBigEndian); + $b = $this->_getLong($rawValue, ($j * 8) + 4, $isBigEndian); + $value = array(); + $value[$j]['val'] = 0; + $value[$j]['num'] = $a; + $value[$j]['den'] = $b; + if (($a != 0) && ($b != 0)) + $value[$j]['val'] = $a / $b; + } } - } - break; - case 11: // FLOAT - $value = $rawValue; - break; + break; + case 11: // FLOAT + $value = $rawValue; + break; - case 12: // DFLOAT - $value = $rawValue; - break; - default: - return false; // Unexpected Type + case 12: // DFLOAT + $value = $rawValue; + break; + default: + return false; // Unexpected Type } $tagName = ''; if (($mode == 'ifd0') && ($tag == 0x8769)) { // ExifIFDOffset $this->_readIFD($data, $base, $value, $isBigEndian, 'exif'); - } - elseif (($mode == 'ifd0') && ($tag == 0x8825)) { // GPSIFDOffset + } elseif (($mode == 'ifd0') && ($tag == 0x8825)) { // GPSIFDOffset $this->_readIFD($data, $base, $value, $isBigEndian, 'gps'); - } - elseif (($mode == 'ifd1') && ($tag == 0x0111)) { // TIFFStripOffsets + } elseif (($mode == 'ifd1') && ($tag == 0x0111)) { // TIFFStripOffsets $exifTIFFOffset = $value; - } - elseif (($mode == 'ifd1') && ($tag == 0x0117)) { // TIFFStripByteCounts + } elseif (($mode == 'ifd1') && ($tag == 0x0117)) { // TIFFStripByteCounts $exifTIFFLength = $value; - } - elseif (($mode == 'ifd1') && ($tag == 0x0201)) { // TIFFJFIFOffset + } elseif (($mode == 'ifd1') && ($tag == 0x0201)) { // TIFFJFIFOffset $exifThumbnailOffset = $value; - } - elseif (($mode == 'ifd1') && ($tag == 0x0202)) { // TIFFJFIFLength + } elseif (($mode == 'ifd1') && ($tag == 0x0202)) { // TIFFJFIFLength $exifThumbnailLength = $value; - } - elseif (($mode == 'exif') && ($tag == 0xA005)) { // InteropIFDOffset + } elseif (($mode == 'exif') && ($tag == 0xA005)) { // InteropIFDOffset $this->_readIFD($data, $base, $value, $isBigEndian, 'interop'); } // elseif (($mode == 'exif') && ($tag == 0x927C)) { // MakerNote @@ -1828,18 +1766,19 @@ class JpegMeta } $this->_info['exif'][$tagName][count($this->_info['exif'][$tagName])] = $value; - } - else { + } else { $this->_info['exif'][$tagName] = $value; } } - else { -#echo sprintf("<h1>Unknown tag %02x (t: %d l: %d) %s in %s</h1>", $tag, $type, $count, $mode, $this->_fileName); + /* + else { + echo sprintf("<h1>Unknown tag %02x (t: %d l: %d) %s in %s</h1>", $tag, $type, $count, $mode, $this->_fileName); // Unknown Tags will be ignored!!! // That's because the tag might be a pointer (like the Exif tag) // and saving it without saving the data it points to might // create an invalid file. } + */ } } @@ -1856,8 +1795,7 @@ class JpegMeta } /*************************************************************/ - function & _createMarkerExif() - { + function & _createMarkerExif() { $data = null; $count = count($this->_markers); for ($i = 0; $i < $count; $i++) { @@ -1882,8 +1820,7 @@ class JpegMeta $isBigEndian = true; $aux = "MM"; $pos = $this->_putString($data, $pos, $aux); - } - else { + } else { $isBigEndian = false; $aux = "II"; $pos = $this->_putString($data, $pos, $aux); @@ -1901,8 +1838,7 @@ class JpegMeta } /*************************************************************/ - function _writeIFD(&$data, $pos, $offsetBase, &$entries, $isBigEndian, $hasNext) - { + function _writeIFD(&$data, $pos, $offsetBase, &$entries, $isBigEndian, $hasNext) { $tiffData = null; $tiffDataOffsetPos = -1; @@ -1922,24 +1858,21 @@ class JpegMeta $pos = $this->_putLong($data, $pos, $dataPos - $offsetBase, $isBigEndian); $dataPos = $this->_writeIFD($data, $dataPos, $offsetBase, $entries[$i]['value'], $isBigEndian, false); - } - elseif ($type == -98) { // TIFF Data + } elseif ($type == -98) { // TIFF Data $pos = $this->_putShort($data, $pos, $tag, $isBigEndian); $pos = $this->_putShort($data, $pos, 0x04, $isBigEndian); // LONG $pos = $this->_putLong($data, $pos, 0x01, $isBigEndian); // Count = 1 $tiffDataOffsetPos = $pos; $pos = $this->_putLong($data, $pos, 0x00, $isBigEndian); // For Now $tiffData =& $entries[$i]['value'] ; - } - else { // Regular Entry + } else { // Regular Entry $pos = $this->_putShort($data, $pos, $tag, $isBigEndian); $pos = $this->_putShort($data, $pos, $type, $isBigEndian); $pos = $this->_putLong($data, $pos, $entries[$i]['count'], $isBigEndian); if (strlen($entries[$i]['value']) > 4) { $pos = $this->_putLong($data, $pos, $dataPos - $offsetBase, $isBigEndian); $dataPos = $this->_putString($data, $dataPos, $entries[$i]['value']); - } - else { + } else { $val = str_pad($entries[$i]['value'], 4, "\0"); $pos = $this->_putString($data, $pos, $val); } @@ -1953,8 +1886,7 @@ class JpegMeta if ($hasNext) { $pos = $this->_putLong($data, $pos, $dataPos - $offsetBase, $isBigEndian); - } - else { + } else { $pos = $this->_putLong($data, $pos, 0, $isBigEndian); } @@ -1962,8 +1894,7 @@ class JpegMeta } /*************************************************************/ - function & _getIFDEntries($isBigEndian, $mode) - { + function & _getIFDEntries($isBigEndian, $mode) { $EXIFNames = $this->_exifTagNames($mode); $EXIFTags = $this->_exifNameTags($mode); $EXIFTypeInfo = $this->_exifTagTypes($mode); @@ -1985,60 +1916,47 @@ class JpegMeta else { $value = null; } - } - elseif (($mode == 'ifd0') && ($tag == 0x8825)) { // GPSIFDOffset + } elseif (($mode == 'ifd0') && ($tag == 0x8825)) { // GPSIFDOffset if (isset($this->_info['exif']['GPSVersionID'])) { $value =& $this->_getIFDEntries($isBigEndian, "gps"); $type = -99; - } - else { + } else { $value = null; } - } - elseif (($mode == 'ifd1') && ($tag == 0x0111)) { // TIFFStripOffsets + } elseif (($mode == 'ifd1') && ($tag == 0x0111)) { // TIFFStripOffsets if (isset($this->_info['exif']['TIFFStrips'])) { $value =& $this->_info['exif']['TIFFStrips']; $type = -98; - } - else { + } else { $value = null; } - } - elseif (($mode == 'ifd1') && ($tag == 0x0117)) { // TIFFStripByteCounts + } elseif (($mode == 'ifd1') && ($tag == 0x0117)) { // TIFFStripByteCounts if (isset($this->_info['exif']['TIFFStrips'])) { $value = strlen($this->_info['exif']['TIFFStrips']); - } - else { + } else { $value = null; } - } - elseif (($mode == 'ifd1') && ($tag == 0x0201)) { // TIFFJFIFOffset + } elseif (($mode == 'ifd1') && ($tag == 0x0201)) { // TIFFJFIFOffset if (isset($this->_info['exif']['JFIFThumbnail'])) { $value =& $this->_info['exif']['JFIFThumbnail']; $type = -98; - } - else { + } else { $value = null; } - } - elseif (($mode == 'ifd1') && ($tag == 0x0202)) { // TIFFJFIFLength + } elseif (($mode == 'ifd1') && ($tag == 0x0202)) { // TIFFJFIFLength if (isset($this->_info['exif']['JFIFThumbnail'])) { $value = strlen($this->_info['exif']['JFIFThumbnail']); - } - else { + } else { $value = null; } - } - elseif (($mode == 'exif') && ($tag == 0xA005)) { // InteropIFDOffset + } elseif (($mode == 'exif') && ($tag == 0xA005)) { // InteropIFDOffset if (isset($this->_info['exif']['InteroperabilityIndex'])) { $value =& $this->_getIFDEntries($isBigEndian, "interop"); $type = -99; - } - else { + } else { $value = null; } - } - elseif (isset($this->_info['exif'][$name])) { + } elseif (isset($this->_info['exif'][$name])) { $origValue =& $this->_info['exif'][$name]; // This makes it easier to process variable size elements @@ -2055,235 +1973,235 @@ class JpegMeta $value = " "; switch ($type) { - case 1: // UBYTE - if ($count == 0) { - $count = $origCount; - } + case 1: // UBYTE + if ($count == 0) { + $count = $origCount; + } - $j = 0; - while (($j < $count) && ($j < $origCount)) { + $j = 0; + while (($j < $count) && ($j < $origCount)) { - $this->_putByte($value, $j, $origValue[$j]); - $j++; - } - - while ($j < $count) { - $this->_putByte($value, $j, 0); - $j++; - } - break; - case 2: // ASCII - $v = strval($origValue[0]); - if (($count != 0) && (strlen($v) > $count)) { - $v = substr($v, 0, $count); - } - elseif (($count > 0) && (strlen($v) < $count)) { - $v = str_pad($v, $count, "\0"); - } + $this->_putByte($value, $j, $origValue[$j]); + $j++; + } - $count = strlen($v); + while ($j < $count) { + $this->_putByte($value, $j, 0); + $j++; + } + break; + case 2: // ASCII + $v = strval($origValue[0]); + if (($count != 0) && (strlen($v) > $count)) { + $v = substr($v, 0, $count); + } + elseif (($count > 0) && (strlen($v) < $count)) { + $v = str_pad($v, $count, "\0"); + } - $this->_putString($value, 0, $v); - break; - case 3: // USHORT - if ($count == 0) { - $count = $origCount; - } + $count = strlen($v); - $j = 0; - while (($j < $count) && ($j < $origCount)) { - $this->_putShort($value, $j * 2, $origValue[$j], $isBigEndian); - $j++; - } + $this->_putString($value, 0, $v); + break; + case 3: // USHORT + if ($count == 0) { + $count = $origCount; + } - while ($j < $count) { - $this->_putShort($value, $j * 2, 0, $isBigEndian); - $j++; - } - break; - case 4: // ULONG - if ($count == 0) { - $count = $origCount; - } + $j = 0; + while (($j < $count) && ($j < $origCount)) { + $this->_putShort($value, $j * 2, $origValue[$j], $isBigEndian); + $j++; + } - $j = 0; - while (($j < $count) && ($j < $origCount)) { - $this->_putLong($value, $j * 4, $origValue[$j], $isBigEndian); - $j++; - } + while ($j < $count) { + $this->_putShort($value, $j * 2, 0, $isBigEndian); + $j++; + } + break; + case 4: // ULONG + if ($count == 0) { + $count = $origCount; + } - while ($j < $count) { - $this->_putLong($value, $j * 4, 0, $isBigEndian); - $j++; - } - break; - case 5: // URATIONAL - if ($count == 0) { - $count = $origCount; - } + $j = 0; + while (($j < $count) && ($j < $origCount)) { + $this->_putLong($value, $j * 4, $origValue[$j], $isBigEndian); + $j++; + } - $j = 0; - while (($j < $count) && ($j < $origCount)) { - $v = $origValue[$j]; - if (is_array($v)) { - $a = $v['num']; - $b = $v['den']; + while ($j < $count) { + $this->_putLong($value, $j * 4, 0, $isBigEndian); + $j++; } - else { - $a = 0; - $b = 0; - // TODO: Allow other types and convert them + break; + case 5: // URATIONAL + if ($count == 0) { + $count = $origCount; } - $this->_putLong($value, $j * 8, $a, $isBigEndian); - $this->_putLong($value, ($j * 8) + 4, $b, $isBigEndian); - $j++; - } - while ($j < $count) { - $this->_putLong($value, $j * 8, 0, $isBigEndian); - $this->_putLong($value, ($j * 8) + 4, 0, $isBigEndian); - $j++; - } - break; - case 6: // SBYTE - if ($count == 0) { - $count = $origCount; - } + $j = 0; + while (($j < $count) && ($j < $origCount)) { + $v = $origValue[$j]; + if (is_array($v)) { + $a = $v['num']; + $b = $v['den']; + } + else { + $a = 0; + $b = 0; + // TODO: Allow other types and convert them + } + $this->_putLong($value, $j * 8, $a, $isBigEndian); + $this->_putLong($value, ($j * 8) + 4, $b, $isBigEndian); + $j++; + } - $j = 0; - while (($j < $count) && ($j < $origCount)) { - $this->_putByte($value, $j, $origValue[$j]); - $j++; - } + while ($j < $count) { + $this->_putLong($value, $j * 8, 0, $isBigEndian); + $this->_putLong($value, ($j * 8) + 4, 0, $isBigEndian); + $j++; + } + break; + case 6: // SBYTE + if ($count == 0) { + $count = $origCount; + } - while ($j < $count) { - $this->_putByte($value, $j, 0); - $j++; - } - break; - case 7: // UNDEFINED - $v = strval($origValue[0]); - if (($count != 0) && (strlen($v) > $count)) { - $v = substr($v, 0, $count); - } - elseif (($count > 0) && (strlen($v) < $count)) { - $v = str_pad($v, $count, "\0"); - } + $j = 0; + while (($j < $count) && ($j < $origCount)) { + $this->_putByte($value, $j, $origValue[$j]); + $j++; + } - $count = strlen($v); + while ($j < $count) { + $this->_putByte($value, $j, 0); + $j++; + } + break; + case 7: // UNDEFINED + $v = strval($origValue[0]); + if (($count != 0) && (strlen($v) > $count)) { + $v = substr($v, 0, $count); + } + elseif (($count > 0) && (strlen($v) < $count)) { + $v = str_pad($v, $count, "\0"); + } - $this->_putString($value, 0, $v); - break; - case 8: // SSHORT - if ($count == 0) { - $count = $origCount; - } + $count = strlen($v); - $j = 0; - while (($j < $count) && ($j < $origCount)) { - $this->_putShort($value, $j * 2, $origValue[$j], $isBigEndian); - $j++; - } + $this->_putString($value, 0, $v); + break; + case 8: // SSHORT + if ($count == 0) { + $count = $origCount; + } - while ($j < $count) { - $this->_putShort($value, $j * 2, 0, $isBigEndian); - $j++; - } - break; - case 9: // SLONG - if ($count == 0) { - $count = $origCount; - } + $j = 0; + while (($j < $count) && ($j < $origCount)) { + $this->_putShort($value, $j * 2, $origValue[$j], $isBigEndian); + $j++; + } - $j = 0; - while (($j < $count) && ($j < $origCount)) { - $this->_putLong($value, $j * 4, $origValue[$j], $isBigEndian); - $j++; - } + while ($j < $count) { + $this->_putShort($value, $j * 2, 0, $isBigEndian); + $j++; + } + break; + case 9: // SLONG + if ($count == 0) { + $count = $origCount; + } - while ($j < $count) { - $this->_putLong($value, $j * 4, 0, $isBigEndian); - $j++; - } - break; - case 10: // SRATIONAL - if ($count == 0) { - $count = $origCount; - } + $j = 0; + while (($j < $count) && ($j < $origCount)) { + $this->_putLong($value, $j * 4, $origValue[$j], $isBigEndian); + $j++; + } - $j = 0; - while (($j < $count) && ($j < $origCount)) { - $v = $origValue[$j]; - if (is_array($v)) { - $a = $v['num']; - $b = $v['den']; + while ($j < $count) { + $this->_putLong($value, $j * 4, 0, $isBigEndian); + $j++; } - else { - $a = 0; - $b = 0; - // TODO: Allow other types and convert them + break; + case 10: // SRATIONAL + if ($count == 0) { + $count = $origCount; } - $this->_putLong($value, $j * 8, $a, $isBigEndian); - $this->_putLong($value, ($j * 8) + 4, $b, $isBigEndian); - $j++; - } - - while ($j < $count) { - $this->_putLong($value, $j * 8, 0, $isBigEndian); - $this->_putLong($value, ($j * 8) + 4, 0, $isBigEndian); - $j++; - } - break; - case 11: // FLOAT - if ($count == 0) { - $count = $origCount; - } + $j = 0; + while (($j < $count) && ($j < $origCount)) { + $v = $origValue[$j]; + if (is_array($v)) { + $a = $v['num']; + $b = $v['den']; + } + else { + $a = 0; + $b = 0; + // TODO: Allow other types and convert them + } + + $this->_putLong($value, $j * 8, $a, $isBigEndian); + $this->_putLong($value, ($j * 8) + 4, $b, $isBigEndian); + $j++; + } - $j = 0; - while (($j < $count) && ($j < $origCount)) { - $v = strval($origValue[$j]); - if (strlen($v) > 4) { - $v = substr($v, 0, 4); + while ($j < $count) { + $this->_putLong($value, $j * 8, 0, $isBigEndian); + $this->_putLong($value, ($j * 8) + 4, 0, $isBigEndian); + $j++; } - elseif (strlen($v) < 4) { - $v = str_pad($v, 4, "\0"); + break; + case 11: // FLOAT + if ($count == 0) { + $count = $origCount; } - $this->_putString($value, $j * 4, $v); - $j++; - } - while ($j < $count) { - $this->_putString($value, $j * 4, "\0\0\0\0"); - $j++; - } - break; - case 12: // DFLOAT - if ($count == 0) { - $count = $origCount; - } + $j = 0; + while (($j < $count) && ($j < $origCount)) { + $v = strval($origValue[$j]); + if (strlen($v) > 4) { + $v = substr($v, 0, 4); + } + elseif (strlen($v) < 4) { + $v = str_pad($v, 4, "\0"); + } + $this->_putString($value, $j * 4, $v); + $j++; + } - $j = 0; - while (($j < $count) && ($j < $origCount)) { - $v = strval($origValue[$j]); - if (strlen($v) > 8) { - $v = substr($v, 0, 8); + while ($j < $count) { + $this->_putString($value, $j * 4, "\0\0\0\0"); + $j++; } - elseif (strlen($v) < 8) { - $v = str_pad($v, 8, "\0"); + break; + case 12: // DFLOAT + if ($count == 0) { + $count = $origCount; } - $this->_putString($value, $j * 8, $v); - $j++; - } - while ($j < $count) { - $this->_putString($value, $j * 8, "\0\0\0\0\0\0\0\0"); - $j++; - } - break; - default: - $value = null; - break; + $j = 0; + while (($j < $count) && ($j < $origCount)) { + $v = strval($origValue[$j]); + if (strlen($v) > 8) { + $v = substr($v, 0, 8); + } + elseif (strlen($v) < 8) { + $v = str_pad($v, 8, "\0"); + } + $this->_putString($value, $j * 8, $v); + $j++; + } + + while ($j < $count) { + $this->_putString($value, $j * 8, "\0\0\0\0\0\0\0\0"); + $j++; + } + break; + default: + $value = null; + break; } } @@ -2302,8 +2220,7 @@ class JpegMeta } /*************************************************************/ - function _parseMarkerAdobe() - { + function _parseMarkerAdobe() { if (!isset($this->_markers)) { $this->_readJPEG(); } @@ -2359,36 +2276,36 @@ class JpegMeta $basePos = $pos; switch ($type) { - case 0x0404: // Caption (IPTC Data) - $pos = $this->_readIPTC($data, $pos); - if ($pos == false) - return false; - break; - case 0x040A: // CopyrightFlag - $this->_info['adobe']['CopyrightFlag'] = $this->_getByte($data, $pos); - $pos += $length; - break; - case 0x040B: // ImageURL - $this->_info['adobe']['ImageURL'] = $this->_getFixedString($data, $pos, $length); - $pos += $length; - break; - case 0x040C: // Thumbnail - $aux = $this->_getLong($data, $pos); - $pos += 4; - if ($aux == 1) { - $this->_info['adobe']['ThumbnailWidth'] = $this->_getLong($data, $pos); - $pos += 4; - $this->_info['adobe']['ThumbnailHeight'] = $this->_getLong($data, $pos); + case 0x0404: // Caption (IPTC Data) + $pos = $this->_readIPTC($data, $pos); + if ($pos == false) + return false; + break; + case 0x040A: // CopyrightFlag + $this->_info['adobe']['CopyrightFlag'] = $this->_getByte($data, $pos); + $pos += $length; + break; + case 0x040B: // ImageURL + $this->_info['adobe']['ImageURL'] = $this->_getFixedString($data, $pos, $length); + $pos += $length; + break; + case 0x040C: // Thumbnail + $aux = $this->_getLong($data, $pos); $pos += 4; + if ($aux == 1) { + $this->_info['adobe']['ThumbnailWidth'] = $this->_getLong($data, $pos); + $pos += 4; + $this->_info['adobe']['ThumbnailHeight'] = $this->_getLong($data, $pos); + $pos += 4; - $pos += 16; // Skip some data + $pos += 16; // Skip some data - $this->_info['adobe']['ThumbnailData'] = $this->_getFixedString($data, $pos, $length - 28); - $pos += $length - 28; - } - break; - default: - break; + $this->_info['adobe']['ThumbnailData'] = $this->_getFixedString($data, $pos, $length - 28); + $pos += $length - 28; + } + break; + default: + break; } // We save all blocks, even those we recognized @@ -2404,8 +2321,7 @@ class JpegMeta } /*************************************************************/ - function _readIPTC(&$data, $pos = 0) - { + function _readIPTC(&$data, $pos = 0) { $totalLength = strlen($data); $IPTCTags =& $this->_iptcTagNames(); @@ -2426,8 +2342,7 @@ class JpegMeta if (isset($IPTCTags[$type])) { $label = $IPTCTags[$type]; - } - else { + } else { $label = sprintf('IPTC_0x%02x', $type); } @@ -2439,8 +2354,7 @@ class JpegMeta $this->_info['iptc'][$label] = $aux; } $this->_info['iptc'][$label][ count($this->_info['iptc'][$label]) ] = $this->_getFixedString($data, $pos, $length); - } - else { + } else { $this->_info['iptc'][$label] = $this->_getFixedString($data, $pos, $length); } } @@ -2451,8 +2365,7 @@ class JpegMeta } /*************************************************************/ - function & _createMarkerAdobe() - { + function & _createMarkerAdobe() { if (isset($this->_info['iptc'])) { if (!isset($this->_info['adobe'])) { $this->_info['adobe'] = array(); @@ -2475,11 +2388,11 @@ class JpegMeta reset($this->_info['adobe']['raw']); while (list($key) = each($this->_info['adobe']['raw'])) { $pos = $this->_write8BIM( - $data, - $pos, - $this->_info['adobe']['raw'][$key]['type'], - $this->_info['adobe']['raw'][$key]['header'], - $this->_info['adobe']['raw'][$key]['data'] ); + $data, + $pos, + $this->_info['adobe']['raw'][$key]['type'], + $this->_info['adobe']['raw'][$key]['header'], + $this->_info['adobe']['raw'][$key]['data'] ); } } @@ -2487,8 +2400,7 @@ class JpegMeta } /*************************************************************/ - function _write8BIM(&$data, $pos, $type, $header, &$value) - { + function _write8BIM(&$data, $pos, $type, $header, &$value) { $signature = "8BIM"; $pos = $this->_putString($data, $pos, $signature); @@ -2512,8 +2424,7 @@ class JpegMeta } /*************************************************************/ - function & _writeIPTC() - { + function & _writeIPTC() { $data = " "; $pos = 0; @@ -2521,7 +2432,6 @@ class JpegMeta reset($this->_info['iptc']); - while (list($label) = each($this->_info['iptc'])) { $value =& $this->_info['iptc'][$label]; $type = -1; @@ -2535,7 +2445,8 @@ class JpegMeta if ($type != -1) { if (is_array($value)) { - for ($i = 0; $i < count($value); $i++) { + $vcnt = count($value); + for ($i = 0; $i < $vcnt; $i++) { $pos = $this->_writeIPTCEntry($data, $pos, $type, $value[$i]); } } @@ -2549,8 +2460,7 @@ class JpegMeta } /*************************************************************/ - function _writeIPTCEntry(&$data, $pos, $type, &$value) - { + function _writeIPTCEntry(&$data, $pos, $type, &$value) { $pos = $this->_putShort($data, $pos, 0x1C02); $pos = $this->_putByte($data, $pos, $type); $pos = $this->_putShort($data, $pos, strlen($value)); @@ -2560,8 +2470,7 @@ class JpegMeta } /*************************************************************/ - function _exifTagNames($mode) - { + function _exifTagNames($mode) { $tags = array(); if ($mode == 'ifd0') { @@ -2627,8 +2536,7 @@ class JpegMeta $tags[0x0214] = 'TIFFReferenceBlackWhite'; $tags[0x8298] = 'TIFFCopyright'; $tags[0x9286] = 'TIFFUserComment'; - } - elseif ($mode == 'exif') { + } elseif ($mode == 'exif') { $tags[0x829A] = 'ExposureTime'; $tags[0x829D] = 'FNumber'; $tags[0x8822] = 'ExposureProgram'; @@ -2672,15 +2580,13 @@ class JpegMeta $tags[0xA300] = 'FileSource'; $tags[0xA301] = 'SceneType'; $tags[0xA302] = 'CFAPattern'; - } - elseif ($mode == 'interop') { + } elseif ($mode == 'interop') { $tags[0x0001] = 'InteroperabilityIndex'; $tags[0x0002] = 'InteroperabilityVersion'; $tags[0x1000] = 'RelatedImageFileFormat'; $tags[0x1001] = 'RelatedImageWidth'; $tags[0x1002] = 'RelatedImageLength'; - } - elseif ($mode == 'gps') { + } elseif ($mode == 'gps') { $tags[0x0000] = 'GPSVersionID'; $tags[0x0001] = 'GPSLatitudeRef'; $tags[0x0002] = 'GPSLatitude'; @@ -2714,8 +2620,7 @@ class JpegMeta } /*************************************************************/ - function _exifTagTypes($mode) - { + function _exifTagTypes($mode) { $tags = array(); if ($mode == 'ifd0') { @@ -2781,8 +2686,7 @@ class JpegMeta $tags[0x0214] = array(5, 6); // TIFFReferenceBlackWhite -> RATIONAL, 6 $tags[0x8298] = array(2, 0); // TIFFCopyright -> ASCII, Any $tags[0x9286] = array(2, 0); // TIFFUserComment -> ASCII, Any - } - elseif ($mode == 'exif') { + } elseif ($mode == 'exif') { $tags[0x829A] = array(5, 1); // ExposureTime -> RATIONAL, 1 $tags[0x829D] = array(5, 1); // FNumber -> RATIONAL, 1 $tags[0x8822] = array(3, 1); // ExposureProgram -> SHORT, 1 @@ -2826,15 +2730,13 @@ class JpegMeta $tags[0xA300] = array(7, 1); // FileSource -> UNDEFINED, 1 $tags[0xA301] = array(7, 1); // SceneType -> UNDEFINED, 1 $tags[0xA302] = array(7, 0); // CFAPattern -> UNDEFINED, Any - } - elseif ($mode == 'interop') { + } elseif ($mode == 'interop') { $tags[0x0001] = array(2, 0); // InteroperabilityIndex -> ASCII, Any $tags[0x0002] = array(7, 4); // InteroperabilityVersion -> UNKNOWN, 4 $tags[0x1000] = array(2, 0); // RelatedImageFileFormat -> ASCII, Any $tags[0x1001] = array(4, 1); // RelatedImageWidth -> LONG (or SHORT), 1 $tags[0x1002] = array(4, 1); // RelatedImageLength -> LONG (or SHORT), 1 - } - elseif ($mode == 'gps') { + } elseif ($mode == 'gps') { $tags[0x0000] = array(1, 4); // GPSVersionID -> BYTE, 4 $tags[0x0001] = array(2, 2); // GPSLatitudeRef -> ASCII, 2 $tags[0x0002] = array(5, 3); // GPSLatitude -> RATIONAL, 3 @@ -2868,15 +2770,13 @@ class JpegMeta } /*************************************************************/ - function _exifNameTags($mode) - { + function _exifNameTags($mode) { $tags = $this->_exifTagNames($mode); return $this->_names2Tags($tags); } /*************************************************************/ - function _iptcTagNames() - { + function _iptcTagNames() { $tags = array(); $tags[0x14] = 'SuplementalCategories'; $tags[0x19] = 'Keywords'; @@ -2903,15 +2803,13 @@ class JpegMeta } /*************************************************************/ - function & _iptcNameTags() - { + function & _iptcNameTags() { $tags = $this->_iptcTagNames(); return $this->_names2Tags($tags); } /*************************************************************/ - function _names2Tags($tags2Names) - { + function _names2Tags($tags2Names) { $names2Tags = array(); reset($tags2Names); while (list($tag, $name) = each($tags2Names)) { @@ -2922,14 +2820,12 @@ class JpegMeta } /*************************************************************/ - function _getByte(&$data, $pos) - { + function _getByte(&$data, $pos) { return ord($data{$pos}); } /*************************************************************/ - function _putByte(&$data, $pos, $val) - { + function _putByte(&$data, $pos, $val) { $val = intval($val); $data{$pos} = chr($val); @@ -2938,28 +2834,24 @@ class JpegMeta } /*************************************************************/ - function _getShort(&$data, $pos, $bigEndian = true) - { + function _getShort(&$data, $pos, $bigEndian = true) { if ($bigEndian) { return (ord($data{$pos}) << 8) - + ord($data{$pos + 1}); - } - else { + + ord($data{$pos + 1}); + } else { return ord($data{$pos}) - + (ord($data{$pos + 1}) << 8); + + (ord($data{$pos + 1}) << 8); } } /*************************************************************/ - function _putShort(&$data, $pos = 0, $val, $bigEndian = true) - { + function _putShort(&$data, $pos = 0, $val = 0, $bigEndian = true) { $val = intval($val); if ($bigEndian) { $data{$pos + 0} = chr(($val & 0x0000FF00) >> 8); $data{$pos + 1} = chr(($val & 0x000000FF) >> 0); - } - else { + } else { $data{$pos + 0} = chr(($val & 0x00FF) >> 0); $data{$pos + 1} = chr(($val & 0xFF00) >> 8); } @@ -2968,25 +2860,22 @@ class JpegMeta } /*************************************************************/ - function _getLong(&$data, $pos, $bigEndian = true) - { + function _getLong(&$data, $pos, $bigEndian = true) { if ($bigEndian) { return (ord($data{$pos}) << 24) - + (ord($data{$pos + 1}) << 16) - + (ord($data{$pos + 2}) << 8) - + ord($data{$pos + 3}); - } - else { + + (ord($data{$pos + 1}) << 16) + + (ord($data{$pos + 2}) << 8) + + ord($data{$pos + 3}); + } else { return ord($data{$pos}) - + (ord($data{$pos + 1}) << 8) - + (ord($data{$pos + 2}) << 16) - + (ord($data{$pos + 3}) << 24); + + (ord($data{$pos + 1}) << 8) + + (ord($data{$pos + 2}) << 16) + + (ord($data{$pos + 3}) << 24); } } /*************************************************************/ - function _putLong(&$data, $pos, $val, $bigEndian = true) - { + function _putLong(&$data, $pos, $val, $bigEndian = true) { $val = intval($val); if ($bigEndian) { @@ -2994,8 +2883,7 @@ class JpegMeta $data{$pos + 1} = chr(($val & 0x00FF0000) >> 16); $data{$pos + 2} = chr(($val & 0x0000FF00) >> 8); $data{$pos + 3} = chr(($val & 0x000000FF) >> 0); - } - else { + } else { $data{$pos + 0} = chr(($val & 0x000000FF) >> 0); $data{$pos + 1} = chr(($val & 0x0000FF00) >> 8); $data{$pos + 2} = chr(($val & 0x00FF0000) >> 16); @@ -3006,16 +2894,14 @@ class JpegMeta } /*************************************************************/ - function & _getNullString(&$data, $pos) - { + function & _getNullString(&$data, $pos) { $str = ''; $max = strlen($data); while ($pos < $max) { if (ord($data{$pos}) == 0) { return $str; - } - else { + } else { $str .= $data{$pos}; } $pos++; @@ -3025,8 +2911,7 @@ class JpegMeta } /*************************************************************/ - function & _getFixedString(&$data, $pos, $length = -1) - { + function & _getFixedString(&$data, $pos, $length = -1) { if ($length == -1) { $length = strlen($data) - $pos; } @@ -3035,23 +2920,20 @@ class JpegMeta } /*************************************************************/ - function _putString(&$data, $pos, &$str) - { + function _putString(&$data, $pos, &$str) { $len = strlen($str); for ($i = 0; $i < $len; $i++) { - $data{$pos + $i} = $str{$i}; + $data{$pos + $i} = $str{$i}; } return $pos + $len; } /*************************************************************/ - function _hexDump(&$data, $start = 0, $length = -1) - { + function _hexDump(&$data, $start = 0, $length = -1) { if (($length == -1) || (($length + $start) > strlen($data))) { $end = strlen($data); - } - else { + } else { $end = $start + $length; } @@ -3109,8 +2991,7 @@ class JpegMeta echo "</tt>\n"; } -/*****************************************************************/ + /*****************************************************************/ } /* vim: set expandtab tabstop=4 shiftwidth=4: */ - diff --git a/inc/SafeFN.class.php b/inc/SafeFN.class.php new file mode 100644 index 000000000..b6e477fab --- /dev/null +++ b/inc/SafeFN.class.php @@ -0,0 +1,156 @@ +<?php + +/** + * Class to safely store UTF-8 in a Filename + * + * Encodes a utf8 string using only the following characters 0-9a-z_.-% + * characters 0-9a-z in the original string are preserved, "plain". + * all other characters are represented in a substring that starts + * with '%' are "converted". + * The transition from converted substrings to plain characters is + * marked with a '.' + * + * @author Christopher Smith + * @date 2010-04-02 + */ +class SafeFN { + + // 'safe' characters are a superset of $plain, $pre_indicator and $post_indicator + private static $plain = '-/_0123456789abcdefghijklmnopqrstuvwxyz'; // these characters aren't converted + private static $pre_indicator = '%'; + private static $post_indicator = '.'; + + /** + * Convert an UTF-8 string to a safe ASCII String + * + * conversion process + * - if codepoint is a plain or post_indicator character, + * - if previous character was "converted", append post_indicator to output, clear "converted" flag + * - append ascii byte for character to output + * (continue to next character) + * + * - if codepoint is a pre_indicator character, + * - append ascii byte for character to output, set "converted" flag + * (continue to next character) + * + * (all remaining characters) + * - reduce codepoint value for non-printable ASCII characters (0x00 - 0x1f). Space becomes our zero. + * - convert reduced value to base36 (0-9a-z) + * - append $pre_indicator characater followed by base36 string to output, set converted flag + * continue to next character) + * + * @param string $filename a utf8 string, should only include printable characters - not 0x00-0x1f + * @return string an encoded representation of $filename using only 'safe' ASCII characters + * + * @author Christopher Smith <chris@jalakai.co.uk> + */ + public function encode($filename) { + return self::unicode_to_safe(utf8_to_unicode($filename)); + } + + /** + * decoding process + * - split the string into substrings at any occurrence of pre or post indicator characters + * - check the first character of the substring + * - if its not a pre_indicator character + * - if previous character was converted, skip over post_indicator character + * - copy codepoint values of remaining characters to the output array + * - clear any converted flag + * (continue to next substring) + * + * _ else (its a pre_indicator character) + * - if string length is 1, copy the post_indicator character to the output array + * (continue to next substring) + * + * - else (string length > 1) + * - skip the pre-indicator character and convert remaining string from base36 to base10 + * - increase codepoint value for non-printable ASCII characters (add 0x20) + * - append codepoint to output array + * (continue to next substring) + * + * @param string $filename a 'safe' encoded ASCII string, + * @return string decoded utf8 representation of $filename + * + * @author Christopher Smith <chris@jalakai.co.uk> + */ + public function decode($filename) { + return unicode_to_utf8(self::safe_to_unicode(strtolower($filename))); + } + + public function validate_printable_utf8($printable_utf8) { + return !preg_match('#[\x01-\x1f]#',$printable_utf8); + } + + public function validate_safe($safe) { + return !preg_match('#[^'.self::$plain.self::$post_indicator.self::$pre_indicator.']#',$safe); + } + + /** + * convert an array of unicode codepoints into 'safe_filename' format + * + * @param array int $unicode an array of unicode codepoints + * @return string the unicode represented in 'safe_filename' format + * + * @author Christopher Smith <chris@jalakai.co.uk> + */ + private function unicode_to_safe($unicode) { + + $safe = ''; + $converted = false; + + foreach ($unicode as $codepoint) { + if ($codepoint < 127 && (strpos(self::$plain.self::$post_indicator,chr($codepoint))!==false)) { + if ($converted) { + $safe .= self::$post_indicator; + $converted = false; + } + $safe .= chr($codepoint); + + } else if ($codepoint == ord(self::$pre_indicator)) { + $safe .= self::$pre_indicator; + $converted = true; + } else { + $safe .= self::$pre_indicator.base_convert((string)($codepoint-32),10,36); + $converted = true; + } + } + return $safe; + } + + /** + * convert a 'safe_filename' string into an array of unicode codepoints + * + * @param string $safe a filename in 'safe_filename' format + * @return array int an array of unicode codepoints + * + * @author Christopher Smith <chris@jalakai.co.uk> + */ + private function safe_to_unicode($safe) { + + $unicode = array(); + $split = preg_split('#(?=['.self::$post_indicator.self::$pre_indicator.'])#',$safe,-1,PREG_SPLIT_NO_EMPTY); + + $converted = false; + foreach ($split as $sub) { + if ($sub[0] != self::$pre_indicator) { + // plain (unconverted) characters, optionally starting with a post_indicator + // set initial value to skip any post_indicator + for ($i=($converted?1:0); $i < strlen($sub); $i++) { + $unicode[] = ord($sub[$i]); + } + $converted = false; + } else if (strlen($sub)==1) { + // a pre_indicator character in the real data + $unicode[] = ord($sub); + $converted = true; + } else { + // a single codepoint in base36, adjusted for initial 32 non-printable chars + $unicode[] = 32 + (int)base_convert(substr($sub,1),36,10); + $converted = true; + } + } + + return $unicode; + } + +} diff --git a/inc/SimplePie.php b/inc/SimplePie.php index 1c97e2384..276a654ee 100644 --- a/inc/SimplePie.php +++ b/inc/SimplePie.php @@ -648,7 +648,7 @@ class SimplePie function SimplePie($feed_url = null, $cache_location = null, $cache_duration = null) { // Other objects, instances created here so we can set options on them - $this->sanitize =& new SimplePie_Sanitize; + $this->sanitize = new SimplePie_Sanitize; // Set options if they're passed to the constructor if ($cache_location !== null) @@ -979,7 +979,7 @@ class SimplePie { if (SimplePie_Misc::is_subclass_of($class, 'SimplePie_Sanitize')) { - $this->sanitize =& new $class; + $this->sanitize = new $class; return true; } return false; @@ -1383,7 +1383,7 @@ function embed_wmedia(width, height, link) { // Decide whether to enable caching if ($this->cache && $parsed_feed_url['scheme'] !== '') { - $cache =& new $this->cache_class($this->cache_location, call_user_func($this->cache_name_function, $this->feed_url), 'spc'); + $cache = new $this->cache_class($this->cache_location, call_user_func($this->cache_name_function, $this->feed_url), 'spc'); } // If it's enabled and we don't want an XML dump, use the cache if ($cache && !$this->xml_dump) @@ -1438,7 +1438,7 @@ function embed_wmedia(width, height, link) { { $headers['if-none-match'] = $this->data['headers']['etag']; } - $file =& new $this->file_class($this->feed_url, $this->timeout/10, 5, $headers, $this->useragent, $this->force_fsockopen); + $file = new $this->file_class($this->feed_url, $this->timeout/10, 5, $headers, $this->useragent, $this->force_fsockopen); if ($file->success) { if ($file->status_code == 304) @@ -1479,7 +1479,7 @@ function embed_wmedia(width, height, link) { } else { - $file =& new $this->file_class($this->feed_url, $this->timeout, 5, null, $this->useragent, $this->force_fsockopen); + $file = new $this->file_class($this->feed_url, $this->timeout, 5, null, $this->useragent, $this->force_fsockopen); } } // If the file connection has an error, set SimplePie::error to that and quit @@ -1497,7 +1497,7 @@ function embed_wmedia(width, height, link) { } // Check if the supplied URL is a feed, if it isn't, look for it. - $locate =& new $this->locator_class($file, $this->timeout, $this->useragent, $this->file_class, $this->max_checked_feeds); + $locate = new $this->locator_class($file, $this->timeout, $this->useragent, $this->file_class, $this->max_checked_feeds); if (!$locate->is_feed($file)) { // We need to unset this so that if SimplePie::set_file() has been called that object is untouched @@ -1510,7 +1510,7 @@ function embed_wmedia(width, height, link) { { trigger_error("$cache->name is not writeable", E_USER_WARNING); } - $cache =& new $this->cache_class($this->cache_location, call_user_func($this->cache_name_function, $file->url), 'spc'); + $cache = new $this->cache_class($this->cache_location, call_user_func($this->cache_name_function, $file->url), 'spc'); } $this->feed_url = $file->url; } @@ -1595,7 +1595,7 @@ function embed_wmedia(width, height, link) { // Strip illegal characters $data = SimplePie_Misc::utf8_bad_replace($data); - $parser =& new $this->parser_class(); + $parser = new $this->parser_class(); $parser->pre_process($data, 'UTF-8'); // If we want the XML, just output that and quit if ($this->xml_dump) @@ -1798,7 +1798,7 @@ function embed_wmedia(width, height, link) { if ($this->cache && $this->favicon_handler) { - $cache =& new $this->cache_class($this->cache_location, call_user_func($this->cache_name_function, $favicon), 'spi'); + $cache = new $this->cache_class($this->cache_location, call_user_func($this->cache_name_function, $favicon), 'spi'); if ($cache->load()) { @@ -1806,7 +1806,7 @@ function embed_wmedia(width, height, link) { } else { - $file =& new $this->file_class($favicon, $this->timeout / 10, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen); + $file = new $this->file_class($favicon, $this->timeout / 10, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen); if ($file->success && ($file->status_code == 200 || ($file->status_code > 206 && $file->status_code < 300)) && strlen($file->body) > 0) { @@ -2556,7 +2556,7 @@ function embed_wmedia(width, height, link) { $keys = array_keys($items); foreach ($keys as $key) { - $this->data['items'][] =& new $this->item_class($this, $items[$key]); + $this->data['items'][] = new $this->item_class($this, $items[$key]); } } if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'entry')) @@ -2564,7 +2564,7 @@ function embed_wmedia(width, height, link) { $keys = array_keys($items); foreach ($keys as $key) { - $this->data['items'][] =& new $this->item_class($this, $items[$key]); + $this->data['items'][] = new $this->item_class($this, $items[$key]); } } if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_10, 'item')) @@ -2572,7 +2572,7 @@ function embed_wmedia(width, height, link) { $keys = array_keys($items); foreach ($keys as $key) { - $this->data['items'][] =& new $this->item_class($this, $items[$key]); + $this->data['items'][] = new $this->item_class($this, $items[$key]); } } if ($items = $this->get_feed_tags(SIMPLEPIE_NAMESPACE_RSS_090, 'item')) @@ -2580,7 +2580,7 @@ function embed_wmedia(width, height, link) { $keys = array_keys($items); foreach ($keys as $key) { - $this->data['items'][] =& new $this->item_class($this, $items[$key]); + $this->data['items'][] = new $this->item_class($this, $items[$key]); } } if ($items = $this->get_channel_tags('', 'item')) @@ -2588,7 +2588,7 @@ function embed_wmedia(width, height, link) { $keys = array_keys($items); foreach ($keys as $key) { - $this->data['items'][] =& new $this->item_class($this, $items[$key]); + $this->data['items'][] = new $this->item_class($this, $items[$key]); } } } @@ -2914,19 +2914,19 @@ class SimplePie_Item { $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); } - $categories[] =& new $this->feed->category_class($term, $scheme, $label); + $categories[] = new $this->feed->category_class($term, $scheme, $label); } foreach ((array) $this->get_item_tags('', 'category') as $category) { - $categories[] =& new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); + $categories[] = new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); } foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'subject') as $category) { - $categories[] =& new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); + $categories[] = new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); } foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'subject') as $category) { - $categories[] =& new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); + $categories[] = new $this->feed->category_class($this->sanitize($category['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); } if (!empty($categories)) @@ -2977,7 +2977,7 @@ class SimplePie_Item } if ($name !== null || $email !== null || $uri !== null) { - $authors[] =& new $this->feed->author_class($name, $uri, $email); + $authors[] = new $this->feed->author_class($name, $uri, $email); } } if ($author = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_03, 'author')) @@ -2999,24 +2999,24 @@ class SimplePie_Item } if ($name !== null || $email !== null || $uri !== null) { - $authors[] =& new $this->feed->author_class($name, $url, $email); + $authors[] = new $this->feed->author_class($name, $url, $email); } } if ($author = $this->get_item_tags('', 'author')) { - $authors[] =& new $this->feed->author_class(null, null, $this->sanitize($author[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); + $authors[] = new $this->feed->author_class(null, null, $this->sanitize($author[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT)); } foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_11, 'creator') as $author) { - $authors[] =& new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); + $authors[] = new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); } foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_DC_10, 'creator') as $author) { - $authors[] =& new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); + $authors[] = new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); } foreach ((array) $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'author') as $author) { - $authors[] =& new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); + $authors[] = new $this->feed->author_class($this->sanitize($author['data'], SIMPLEPIE_CONSTRUCT_TEXT), null, null); } if (!empty($authors)) @@ -3298,7 +3298,7 @@ class SimplePie_Item { $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $captions_parent[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text); + $captions_parent[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text); } } elseif ($captions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'text')) @@ -3330,7 +3330,7 @@ class SimplePie_Item { $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $captions_parent[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text); + $captions_parent[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text); } } if (is_array($captions_parent)) @@ -3360,7 +3360,7 @@ class SimplePie_Item { $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); } - $categories_parent[] =& new $this->feed->category_class($term, $scheme, $label); + $categories_parent[] = new $this->feed->category_class($term, $scheme, $label); } foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'category') as $category) { @@ -3383,7 +3383,7 @@ class SimplePie_Item { $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); } - $categories_parent[] =& new $this->feed->category_class($term, $scheme, $label); + $categories_parent[] = new $this->feed->category_class($term, $scheme, $label); } foreach ((array) $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'category') as $category) { @@ -3394,7 +3394,7 @@ class SimplePie_Item { $label = $this->sanitize($category['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT); } - $categories_parent[] =& new $this->feed->category_class($term, $scheme, $label); + $categories_parent[] = new $this->feed->category_class($term, $scheme, $label); if (isset($category['child'][SIMPLEPIE_NAMESPACE_ITUNES]['category'])) { @@ -3404,7 +3404,7 @@ class SimplePie_Item { $label = $this->sanitize($subcategory['attribs']['']['text'], SIMPLEPIE_CONSTRUCT_TEXT); } - $categories_parent[] =& new $this->feed->category_class($term, $scheme, $label); + $categories_parent[] = new $this->feed->category_class($term, $scheme, $label); } } } @@ -3426,7 +3426,7 @@ class SimplePie_Item { $copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $copyrights_parent =& new $this->feed->copyright_class($copyright_url, $copyright_label); + $copyrights_parent = new $this->feed->copyright_class($copyright_url, $copyright_label); } elseif ($copyright = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'copyright')) { @@ -3440,7 +3440,7 @@ class SimplePie_Item { $copyright_label = $this->sanitize($copyright[0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $copyrights_parent =& new $this->feed->copyright_class($copyright_url, $copyright_label); + $copyrights_parent = new $this->feed->copyright_class($copyright_url, $copyright_label); } // CREDITS @@ -3467,7 +3467,7 @@ class SimplePie_Item { $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $credits_parent[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name); + $credits_parent[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name); } } elseif ($credits = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'credit')) @@ -3493,7 +3493,7 @@ class SimplePie_Item { $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $credits_parent[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name); + $credits_parent[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name); } } if (is_array($credits_parent)) @@ -3682,7 +3682,7 @@ class SimplePie_Item { $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value); + $ratings_parent[] = new $this->feed->rating_class($rating_scheme, $rating_value); } } elseif ($ratings = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit')) @@ -3695,7 +3695,7 @@ class SimplePie_Item { $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value); + $ratings_parent[] = new $this->feed->rating_class($rating_scheme, $rating_value); } } elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'rating')) @@ -3716,7 +3716,7 @@ class SimplePie_Item { $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value); + $ratings_parent[] = new $this->feed->rating_class($rating_scheme, $rating_value); } } elseif ($ratings = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'explicit')) @@ -3729,7 +3729,7 @@ class SimplePie_Item { $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $ratings_parent[] =& new $this->feed->rating_class($rating_scheme, $rating_value); + $ratings_parent[] = new $this->feed->rating_class($rating_scheme, $rating_value); } } if (is_array($ratings_parent)) @@ -3757,7 +3757,7 @@ class SimplePie_Item { $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); + $restrictions_parent[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); } } elseif ($restrictions = $this->get_item_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block')) @@ -3771,7 +3771,7 @@ class SimplePie_Item { $restriction_relationship = 'deny'; } - $restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); + $restrictions_parent[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); } } elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_MEDIARSS, 'restriction')) @@ -3793,7 +3793,7 @@ class SimplePie_Item { $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); + $restrictions_parent[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); } } elseif ($restrictions = $parent->get_channel_tags(SIMPLEPIE_NAMESPACE_ITUNES, 'block')) @@ -3807,7 +3807,7 @@ class SimplePie_Item { $restriction_relationship = 'deny'; } - $restrictions_parent[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); + $restrictions_parent[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); } } if (is_array($restrictions_parent)) @@ -3981,7 +3981,7 @@ class SimplePie_Item { $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text); + $captions[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text); } if (is_array($captions)) { @@ -4017,7 +4017,7 @@ class SimplePie_Item { $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text); + $captions[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text); } if (is_array($captions)) { @@ -4053,7 +4053,7 @@ class SimplePie_Item { $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); } - $categories[] =& new $this->feed->category_class($term, $scheme, $label); + $categories[] = new $this->feed->category_class($term, $scheme, $label); } } if (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['category'])) @@ -4079,7 +4079,7 @@ class SimplePie_Item { $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); } - $categories[] =& new $this->feed->category_class($term, $scheme, $label); + $categories[] = new $this->feed->category_class($term, $scheme, $label); } } if (is_array($categories) && is_array($categories_parent)) @@ -4108,7 +4108,7 @@ class SimplePie_Item { $copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label); + $copyrights = new $this->feed->copyright_class($copyright_url, $copyright_label); } elseif (isset($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'])) { @@ -4122,7 +4122,7 @@ class SimplePie_Item { $copyright_label = $this->sanitize($group['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label); + $copyrights = new $this->feed->copyright_class($copyright_url, $copyright_label); } else { @@ -4153,7 +4153,7 @@ class SimplePie_Item { $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name); + $credits[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name); } if (is_array($credits)) { @@ -4183,7 +4183,7 @@ class SimplePie_Item { $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name); + $credits[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name); } if (is_array($credits)) { @@ -4336,7 +4336,7 @@ class SimplePie_Item { $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value); + $ratings[] = new $this->feed->rating_class($rating_scheme, $rating_value); } if (is_array($ratings)) { @@ -4361,7 +4361,7 @@ class SimplePie_Item { $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value); + $ratings[] = new $this->feed->rating_class($rating_scheme, $rating_value); } if (is_array($ratings)) { @@ -4393,7 +4393,7 @@ class SimplePie_Item { $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); + $restrictions[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); } if (is_array($restrictions)) { @@ -4419,7 +4419,7 @@ class SimplePie_Item { $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); + $restrictions[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); } if (is_array($restrictions)) { @@ -4473,7 +4473,7 @@ class SimplePie_Item $title = $title_parent; } - $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width); + $this->data['enclosures'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width); } } } @@ -4602,7 +4602,7 @@ class SimplePie_Item { $caption_text = $this->sanitize($caption['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $captions[] =& new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text); + $captions[] = new $this->feed->caption_class($caption_type, $caption_lang, $caption_startTime, $caption_endTime, $caption_text); } if (is_array($captions)) { @@ -4638,7 +4638,7 @@ class SimplePie_Item { $label = $this->sanitize($category['attribs']['']['label'], SIMPLEPIE_CONSTRUCT_TEXT); } - $categories[] =& new $this->feed->category_class($term, $scheme, $label); + $categories[] = new $this->feed->category_class($term, $scheme, $label); } } if (is_array($categories) && is_array($categories_parent)) @@ -4671,7 +4671,7 @@ class SimplePie_Item { $copyright_label = $this->sanitize($content['child'][SIMPLEPIE_NAMESPACE_MEDIARSS]['copyright'][0]['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $copyrights =& new $this->feed->copyright_class($copyright_url, $copyright_label); + $copyrights = new $this->feed->copyright_class($copyright_url, $copyright_label); } else { @@ -4702,7 +4702,7 @@ class SimplePie_Item { $credit_name = $this->sanitize($credit['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $credits[] =& new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name); + $credits[] = new $this->feed->credit_class($credit_role, $credit_scheme, $credit_name); } if (is_array($credits)) { @@ -4806,7 +4806,7 @@ class SimplePie_Item { $rating_value = $this->sanitize($rating['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $ratings[] =& new $this->feed->rating_class($rating_scheme, $rating_value); + $ratings[] = new $this->feed->rating_class($rating_scheme, $rating_value); } if (is_array($ratings)) { @@ -4838,7 +4838,7 @@ class SimplePie_Item { $restriction_value = $this->sanitize($restriction['data'], SIMPLEPIE_CONSTRUCT_TEXT); } - $restrictions[] =& new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); + $restrictions[] = new $this->feed->restriction_class($restriction_relationship, $restriction_type, $restriction_value); } if (is_array($restrictions)) { @@ -4877,7 +4877,7 @@ class SimplePie_Item $title = $title_parent; } - $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width); + $this->data['enclosures'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions, $categories, $channels, $copyrights, $credits, $description, $duration, $expression, $framerate, $hashes, $height, $keywords, $lang, $medium, $player, $ratings, $restrictions, $samplingrate, $thumbnails, $title, $width); } } } @@ -4913,7 +4913,7 @@ class SimplePie_Item } // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor - $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width); + $this->data['enclosures'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width); } } @@ -4948,7 +4948,7 @@ class SimplePie_Item } // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor - $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width); + $this->data['enclosures'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width); } } @@ -4983,7 +4983,7 @@ class SimplePie_Item } // Since we don't have group or content for these, we'll just pass the '*_parent' variables directly to the constructor - $this->data['enclosures'][] =& new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width); + $this->data['enclosures'][] = new $this->feed->enclosure_class($url, $type, $length, $this->feed->javascript, $bitrate, $captions_parent, $categories_parent, $channels, $copyrights_parent, $credits_parent, $description_parent, $duration_parent, $expression, $framerate, $hashes_parent, $height, $keywords_parent, $lang, $medium, $player_parent, $ratings_parent, $restrictions_parent, $samplingrate, $thumbnails_parent, $title_parent, $width); } } $this->data['enclosures'] = array_values(SimplePie_Misc::array_unique($this->data['enclosures'])); @@ -5306,7 +5306,7 @@ class SimplePie_Enclosure $this->width = $width; if (class_exists('idna_convert')) { - $idn =& new idna_convert; + $idn = new idna_convert; $parsed = SimplePie_Misc::parse_url($link); $this->link = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']); } @@ -6502,7 +6502,7 @@ class SimplePie_File { if (class_exists('idna_convert')) { - $idn =& new idna_convert; + $idn = new idna_convert; $parsed = SimplePie_Misc::parse_url($url); $url = SimplePie_Misc::compress_parse_url($parsed['scheme'], $idn->encode($parsed['authority']), $parsed['path'], $parsed['query'], $parsed['fragment']); } @@ -6563,7 +6563,7 @@ class SimplePie_File curl_close($fp); $this->headers = explode("\r\n\r\n", $this->headers, $info['redirect_count'] + 1); $this->headers = array_pop($this->headers); - $parser =& new SimplePie_HTTP_Parser($this->headers); + $parser = new SimplePie_HTTP_Parser($this->headers); if ($parser->parse()) { $this->headers = $parser->headers; @@ -6672,7 +6672,7 @@ class SimplePie_File } if (!$info['timed_out']) { - $parser =& new SimplePie_HTTP_Parser($this->headers); + $parser = new SimplePie_HTTP_Parser($this->headers); if ($parser->parse()) { $this->headers = $parser->headers; @@ -7548,7 +7548,7 @@ class SimplePie_Misc */ function display_cached_file($identifier_url, $cache_location = './cache', $cache_extension = 'spc', $cache_class = 'SimplePie_Cache', $cache_name_function = 'md5') { - $cache =& new $cache_class($cache_location, call_user_func($cache_name_function, $identifier_url), $cache_extension); + $cache = new $cache_class($cache_location, call_user_func($cache_name_function, $identifier_url), $cache_extension); if ($file = $cache->load()) { @@ -10116,7 +10116,7 @@ class SimplePie_Locator if (!in_array($href, $done) && in_array('feed', $rel) || (in_array('alternate', $rel) && !empty($link['attribs']['type']['data']) && in_array(strtolower(SimplePie_Misc::parse_mime($link['attribs']['type']['data'])), array('application/rss+xml', 'application/atom+xml')))) { $this->checked_feeds++; - $feed =& new $this->file_class($href, $this->timeout, 5, null, $this->useragent); + $feed = new $this->file_class($href, $this->timeout, 5, null, $this->useragent); if ($this->is_feed($feed)) { return $feed; @@ -10181,7 +10181,7 @@ class SimplePie_Locator if (in_array(strtolower(strrchr($value, '.')), array('.rss', '.rdf', '.atom', '.xml'))) { $this->checked_feeds++; - $feed =& new $this->file_class($value, $this->timeout, 5, null, $this->useragent); + $feed = new $this->file_class($value, $this->timeout, 5, null, $this->useragent); if ($this->is_feed($feed)) { return $feed; @@ -10206,7 +10206,7 @@ class SimplePie_Locator if (preg_match('/(rss|rdf|atom|xml)/i', $value)) { $this->checked_feeds++; - $feed =& new $this->file_class($value, $this->timeout, 5, null, $this->useragent); + $feed = new $this->file_class($value, $this->timeout, 5, null, $this->useragent); if ($this->is_feed($feed)) { return $feed; @@ -10744,7 +10744,7 @@ class SimplePie_Sanitize if (isset($img['attribs']['src']['data'])) { $image_url = $img['attribs']['src']['data']; - $cache =& new $this->cache_class($this->cache_location, call_user_func($this->cache_name_function, $image_url), 'spi'); + $cache = new $this->cache_class($this->cache_location, call_user_func($this->cache_name_function, $image_url), 'spi'); if ($cache->load()) { @@ -10753,7 +10753,7 @@ class SimplePie_Sanitize } else { - $file =& new $this->file_class($image_url, $this->timeout, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen); + $file = new $this->file_class($image_url, $this->timeout, 5, array('X-FORWARDED-FOR' => $_SERVER['REMOTE_ADDR']), $this->useragent, $this->force_fsockopen); $headers = $file->headers; if ($file->success && ($file->status_code == 200 || ($file->status_code > 206 && $file->status_code < 300))) diff --git a/inc/TarLib.class.php b/inc/TarLib.class.php index ab802163b..3e9e81234 100644 --- a/inc/TarLib.class.php +++ b/inc/TarLib.class.php @@ -49,870 +49,823 @@ * FULL_ARCHIVE is a -1 constant that means "the complete archive" when * extracting. This is explained in Extract() */ -define('COMPRESS_GZIP',1); -define('COMPRESS_BZIP',2); -define('COMPRESS_AUTO',3); -define('COMPRESS_NONE',0); -define('TARLIB_VERSION','1.2'); -define('FULL_ARCHIVE',-1); -define('ARCHIVE_DYNAMIC',0); -define('ARCHIVE_RENAMECOMP',5); -define('COMPRESS_DETECT',-1); - -class TarLib -{ - var $_comptype; - var $_compzlevel; - var $_fp; - var $_memdat; - var $_nomf; - var $_result; - var $_initerror; - - /** - * constructor, initialize the class - * - * The constructor initialize the variables and prepare the class for the - * archive, and return the object created. Note that you can use multiple - * instances of the MaxgTar class, if you call this function another time and - * store the object in an other variable. - * - * In fact, MaxgTar accepts the following arguments (all are optional) : - * - * filename can be either a file name (absolute or relative). In this - * case, it can be used both for reading and writing. You can also open - * remote archive if you add a protocole name at the beginning of the file - * (ie https://host.dom/archive.tar.gz), but for reading only and if the - * directive allow_url_fopen is enabled in PHP.INI (this can be checked with - * TarInfo()). If you pass a file that doesn't exist, the script - * will try to create it. If the archive already exists and contains files, - * you can use Add() to append files.But by default this parameter - * is ARCHIVE_DYNAMIC (write only) so the archive is created in memory and - * can be sent to a file [writeArchive()] or to the client - * [sendClient()] - * - * compression_type should be a constant that represents a type of - * compression, or its integer value. The different values are described in - * the constants. - * - * compression_level is an integer between 1 and 9 (by default) an - * represent the GZIP or BZIP compression level. 1 produce fast compression, - * and 9 produce smaller files. See the RFC 1952 for more infos. - */ - function tarlib($p_filen = ARCHIVE_DYNAMIC , $p_comptype = COMPRESS_AUTO, $p_complevel = 9) - { - $this->_initerror = 0; - $this->_nomf = $p_filen; $flag=0; - if($p_comptype && $p_comptype % 5 == 0){$p_comptype /= ARCHIVE_RENAMECOMP; $flag=1;} - - if($p_complevel > 0 && $p_complevel <= 9) $this->_compzlevel = $p_complevel; - else $p_complevel = 9; - - if($p_comptype == COMPRESS_DETECT) - { - if(strtolower(substr($p_filen,-3)) == '.gz') $p_comptype = COMPRESS_GZIP; - elseif(strtolower(substr($p_filen,-4)) == '.bz2') $p_comptype = COMPRESS_BZIP; - else $p_comptype = COMPRESS_NONE; - } +#define('COMPRESS_GZIP',1); +#define('COMPRESS_BZIP',2); +#define('COMPRESS_AUTO',3); +#define('COMPRESS_NONE',0); +#define('TARLIB_VERSION','1.2'); +#define('FULL_ARCHIVE',-1); +#define('ARCHIVE_DYNAMIC',0); +#define('ARCHIVE_RENAMECOMP',5); +#define('COMPRESS_DETECT',-1); + +class TarLib { + var $_comptype; + var $_compzlevel; + var $_fp; + var $_memdat; + var $_nomf; + var $_result; + var $_initerror; + + const COMPRESS_GZIP = 1; + const COMPRESS_BZIP = 2; + const COMPRESS_AUTO = 3; + const COMPRESS_NONE = 0; + const TARLIB_VERSION = '1.2'; + const FULL_ARCHIVE = -1; + const ARCHIVE_DYNAMIC = 0; + const ARCHIVE_RENAMECOMP = 5; + const COMPRESS_DETECT = -1; + + /** + * constructor, initialize the class + * + * The constructor initialize the variables and prepare the class for the + * archive, and return the object created. Note that you can use multiple + * instances of the MaxgTar class, if you call this function another time and + * store the object in an other variable. + * + * In fact, MaxgTar accepts the following arguments (all are optional) : + * + * filename can be either a file name (absolute or relative). In this + * case, it can be used both for reading and writing. You can also open + * remote archive if you add a protocole name at the beginning of the file + * (ie https://host.dom/archive.tar.gz), but for reading only and if the + * directive allow_url_fopen is enabled in PHP.INI (this can be checked with + * TarInfo()). If you pass a file that doesn't exist, the script + * will try to create it. If the archive already exists and contains files, + * you can use Add() to append files.But by default this parameter + * is ARCHIVE_DYNAMIC (write only) so the archive is created in memory and + * can be sent to a file [writeArchive()] or to the client + * [sendClient()] + * + * compression_type should be a constant that represents a type of + * compression, or its integer value. The different values are described in + * the constants. + * + * compression_level is an integer between 1 and 9 (by default) an + * represent the GZIP or BZIP compression level. 1 produce fast compression, + * and 9 produce smaller files. See the RFC 1952 for more infos. + */ + function tarlib($p_filen = TarLib::ARCHIVE_DYNAMIC , $p_comptype = TarLib::COMPRESS_AUTO, $p_complevel = 9) { + $this->_initerror = 0; + $this->_nomf = $p_filen; + $flag=0; + if($p_comptype && $p_comptype % 5 == 0){ + $p_comptype /= TarLib::ARCHIVE_RENAMECOMP; + $flag=1; + } - switch($p_comptype) - { - case COMPRESS_GZIP: - if(!extension_loaded('zlib')) $this->_initerror = -1; - $this->_comptype = COMPRESS_GZIP; - break; - - case COMPRESS_BZIP: - if(!extension_loaded('bz2')) $this->_inierror = -2; - $this->_comptype = COMPRESS_BZIP; - break; - - case COMPRESS_AUTO: - if(extension_loaded('zlib')) - $this->_comptype = COMPRESS_GZIP; - elseif(extension_loaded('bz2')) - $this->_comptype = COMPRESS_BZIP; - else - $this->_comptype = COMPRESS_NONE; - break; + if($p_complevel > 0 && $p_complevel <= 9) $this->_compzlevel = $p_complevel; + else $p_complevel = 9; - default: - $this->_comptype = COMPRESS_NONE; + if($p_comptype == TarLib::COMPRESS_DETECT) { + if(strtolower(substr($p_filen,-3)) == '.gz') $p_comptype = TarLib::COMPRESS_GZIP; + elseif(strtolower(substr($p_filen,-4)) == '.bz2') $p_comptype = TarLib::COMPRESS_BZIP; + else $p_comptype = TarLib::COMPRESS_NONE; + } + + switch($p_comptype) { + case TarLib::COMPRESS_GZIP: + if(!extension_loaded('zlib')) $this->_initerror = -1; + $this->_comptype = TarLib::COMPRESS_GZIP; + break; + + case TarLib::COMPRESS_BZIP: + if(!extension_loaded('bz2')) $this->_initerror = -2; + $this->_comptype = TarLib::COMPRESS_BZIP; + break; + + case TarLib::COMPRESS_AUTO: + if(extension_loaded('zlib')) + $this->_comptype = TarLib::COMPRESS_GZIP; + elseif(extension_loaded('bz2')) + $this->_comptype = TarLib::COMPRESS_BZIP; + else + $this->_comptype = TarLib::COMPRESS_NONE; + break; + + default: + $this->_comptype = TarLib::COMPRESS_NONE; + } + + if($this->_initerror < 0) $this->_comptype = TarLib::COMPRESS_NONE; + + if($flag) $this->_nomf.= '.'.$this->getCompression(1); + $this->_result = true; } - if($this->_init_error < 0) $this->_comptype = COMPRESS_NONE; - - if($flag) $this->_nomf.= '.'.$this->getCompression(1); - $this->_result = true; - } - - /** - * Recycle a TAR object. - * - * This function does exactly the same as TarLib (constructor), except it - * returns a status code. - */ - function setArchive($p_name='', $p_comp = COMPRESS_AUTO, $p_level=9) - { - $this->_CompTar(); - $this->TarLib($p_name, $p_comp, $p_level); - return $this->_result; - } - - /** - * Get the compression used to generate the archive - * - * This is a very useful function when you're using dynamical archives. - * Besides, if you let the script chose which compression to use, you'll have - * a problem when you'll want to send it to the client if you don't know - * which compression was used. - * - * There are two ways to call this function : if you call it without argument - * or with FALSE, it will return the compression constants, explained on the - * MaxgTar Constants. If you call it with GetExtension on TRUE it will - * return the extension without starting dot (ie "tar" or "tar.bz2" or - * "tar.gz") - * - * NOTE: This can be done with the flag ARCHIVE_RENAMECOMP, see the - * MaxgTar Constants - */ - function getCompression($ext = false) - { - $exts = Array('tar','tar.gz','tar.bz2'); - if($ext) return $exts[$this->_comptype]; - return $this->_comptype; - } - - /** - * Change the compression mode. - * - * This function will change the compression methode to read or write - * the archive. See the MaxgTar Constants to see which constants you can use. - * It may look strange, but it returns the GZIP compression level. - */ - function setCompression($p_comp = COMPRESS_AUTO) - { - $this->setArchive($this->_nomf, $p_comp, $this->_compzlevel); - return $this->_compzlevel; - } - - /** - * Returns the compressed dynamic archive. - * - * When you're working with dynamic archives, use this function to grab - * the final compressed archive in a string ready to be put in a SQL table or - * in a file. - */ - function getDynamicArchive() - { - return $this->_encode($this->_memdat); - } - - /** - * Write a dynamical archive into a file - * - * This function attempts to write a dynamicaly-genrated archive into - * TargetFile on the webserver. It returns a TarErrorStr() status - * code. - * - * To know the extension to add to the file if you're using AUTO_DETECT - * compression, you can use getCompression(). - */ - function writeArchive($p_archive) { - if(!$this->_memdat) return -7; - $fp = @fopen($p_archive, 'wb'); - if(!$fp) return -6; - - fwrite($fp, $this->_memdat); - fclose($fp); - - return true; - } - - /** - * Send a TAR archive to the client browser. - * - * This function will send an archive to the client, and return a status - * code, but can behave differently depending on the arguments you give. All - * arguments are optional. - * - * ClientName is used to specify the archive name to give to the browser. If - * you don't give one, it will send the constructor filename or return an - * error code in case of dynamical archive. - * - * FileName is optional and used to send a specific archive. Leave it blank - * to send dynamical archives or the current working archive. - * - * If SendHeaders is enabled (by default), the library will send the HTTP - * headers itself before it sends the contents. This headers are : - * Content-Type, Content-Disposition, Content-Length and Accept-Range. - * - * Please note that this function DOES NOT stops the script so don't forget - * to exit() to avoid your script sending other data and corrupt the archive. - * Another note : for AUTO_DETECT dynamical archives you can know the - * extension to add to the name with getCompression() - */ - function sendClient($name = '', $archive = '', $headers = true) - { - if(!$name && !$this->_nomf) return -9; - if(!$archive && !$this->_memdat) return -10; - if(!$name) $name = basename($this->_nomf); - - if($archive){ if(!file_exists($archive)) return -11; } - else $decoded = $this->getDynamicArchive(); - - if($headers) - { - header('Content-Type: application/x-gtar'); - header('Content-Disposition: attachment; filename='.basename($name)); - header('Accept-Ranges: bytes'); - header('Content-Length: '.($archive ? filesize($archive) : strlen($decoded))); + /** + * Recycle a TAR object. + * + * This function does exactly the same as TarLib (constructor), except it + * returns a status code. + */ + function setArchive($p_name='', $p_comp = TarLib::COMPRESS_AUTO, $p_level=9) { + $this->_CompTar(); + $this->TarLib($p_name, $p_comp, $p_level); + return $this->_result; } - if($archive) - { - $fp = @fopen($archive,'rb'); - if(!$fp) return -4; + /** + * Get the compression used to generate the archive + * + * This is a very useful function when you're using dynamical archives. + * Besides, if you let the script chose which compression to use, you'll have + * a problem when you'll want to send it to the client if you don't know + * which compression was used. + * + * There are two ways to call this function : if you call it without argument + * or with FALSE, it will return the compression constants, explained on the + * MaxgTar Constants. If you call it with GetExtension on TRUE it will + * return the extension without starting dot (ie "tar" or "tar.bz2" or + * "tar.gz") + * + * NOTE: This can be done with the flag ARCHIVE_RENAMECOMP, see the + * MaxgTar Constants + */ + function getCompression($ext = false) { + $exts = Array('tar','tar.gz','tar.bz2'); + if($ext) return $exts[$this->_comptype]; + return $this->_comptype; + } - while(!feof($fp)) echo fread($fp,2048); + /** + * Change the compression mode. + * + * This function will change the compression methode to read or write + * the archive. See the MaxgTar Constants to see which constants you can use. + * It may look strange, but it returns the GZIP compression level. + */ + function setCompression($p_comp = TarLib::COMPRESS_AUTO) { + $this->setArchive($this->_nomf, $p_comp, $this->_compzlevel); + return $this->_compzlevel; } - else - { - echo $decoded; + + /** + * Returns the compressed dynamic archive. + * + * When you're working with dynamic archives, use this function to grab + * the final compressed archive in a string ready to be put in a SQL table or + * in a file. + */ + function getDynamicArchive() { + return $this->_encode($this->_memdat); } - return true; - } - - /** - * Extract part or totality of the archive. - * - * This function can extract files from an archive, and returns then a - * status codes that can be converted with TarErrorStr() into a - * human readable message. - * - * Only the first argument is required, What and it can be either the - * constant FULL_ARCHIVE or an indexed array containing each file you want to - * extract. - * - * To contains the target folder to extract the archive. It is optional and - * the default value is '.' which means the current folder. If the target - * folder doesn't exist, the script attempts to create it and give it - * permissions 0777 by default. - * - * RemovePath is very usefull when you want to extract files from a subfoler - * in the archive to a root folder. For instance, if you have a file in the - * archive called some/sub/folder/test.txt and you want to extract it to the - * script folder, you can call Extract with To = '.' and RemovePath = - * 'some/sub/folder/' - * - * FileMode is optional and its default value is 0755. It is in fact the UNIX - * permission in octal mode (prefixed with a 0) that will be given on each - * extracted file. - */ - function Extract($p_what = FULL_ARCHIVE, $p_to = '.', $p_remdir='', $p_mode = 0755) - { - if(!$this->_OpenRead()) return -4; -// if(!@is_dir($p_to)) if(!@mkdir($p_to, 0777)) return -8; --CS - if(!@is_dir($p_to)) if(!$this->_dirApp($p_to)) return -8; //--CS (route through correct dir fn) - - $ok = $this->_extractList($p_to, $p_what, $p_remdir, $p_mode); - $this->_CompTar(); - - return $ok; - } - - /** - * Create a new package with the given files - * - * This function will attempt to create a new archive with global headers - * then add the given files into. If the archive is a real file, the - * contents are written directly into the file, if it is a dynamic archive - * contents are only stored in memory. This function should not be used to - * add files to an existing archive, you should use Add() instead. - * - * The FileList actually supports three different modes : - * - * - You can pass a string containing filenames separated by pipes '|'. - * In this case the file are read from the webserver filesystem and the - * root folder is the folder where the script using the MaxgTar is called. - * - * - You can also give a unidimensional indexed array containing the - * filenames. The behaviour for the content reading is the same that a - * '|'ed string. - * - * - The more useful usage is to pass bidimensional arrays, where the - * first element contains the filename and the second contains the file - * contents. You can even add empty folders to the package if the filename - * has a leading '/'. Once again, have a look at the exemples to understand - * better. - * - * Note you can also give arrays with both dynamic contents and static files. - * - * The optional parameter RemovePath can be used to delete a part of the tree - * of the filename you're adding, for instance if you're adding in the root - * of a package a file that is stored somewhere in the server tree. - * - * On the contrary the parameter AddPath can be used to add a prefix folder - * to the file you store. Note also that the RemovePath is applied before the - * AddPath is added, so it HAS a sense to use both parameters together. - */ - function Create($p_filelist,$p_add='',$p_rem='') - { - if(!$fl = $this->_fetchFilelist($p_filelist)) return -5; - if(!$this->_OpenWrite()) return -6; - - $ok = $this->_addFileList($fl,$p_add,$p_rem); - - if($ok) $this->_writeFooter(); - else{ $this->_CompTar(); @unlink($this->_nomf); } - - return $ok; - } - - /** - * Add files to an existing package. - * - * This function does exactly the same than Create() exept it - * will append the given files at the end of the archive. Please not the is - * safe to call Add() on a newly created archive whereas the - * contrary will fail ! - * - * This function returns a status code, you can use TarErrorStr() on - * it to get the human-readable description of the error. - */ - function Add($p_filelist, $p_add = '', $p_rem = '') { if (($this->_nomf -!= ARCHIVE_DYNAMIC && @is_file($this->_nomf)) || ($this->_nomf == -ARCHIVE_DYNAMIC && !$this->_memdat)) return $this->Create($p_filelist, -$p_add, $p_rem); - - if(!$fl = $this->_fetchFilelist($p_filelist)) return -5; - return $this->_append($fl, $p_add, $p_rem); - } - - /** - * Read the contents of a TAR archive - * - * This function attempts to get the list of the files stored in the - * archive, and return either an error code or an indexed array of - * associative array containing for each file the following informations : - * - * checksum Tar Checksum of the file - * filename The full name of the stored file (up to 100 c.) - * mode UNIX permissions in DECIMAL, not octal - * uid The Owner ID - * gid The Group ID - * size Uncompressed filesize - * mtime Timestamp of last modification - * typeflag Empty for files, set for folders - * link For the links, did you guess it ? - * uname Owner name - * gname Group name - */ - function ListContents() - { - if(!$this->_nomf) return -3; - if(!$this->_OpenRead()) return -4; - - $result = Array(); - - while ($dat = $this->_read(512)) - { - $dat = $this->_readHeader($dat); - if(!is_array($dat)) continue; - - $this->_seek(ceil($dat['size']/512)*512,1); - $result[] = $dat; + /** + * Write a dynamical archive into a file + * + * This function attempts to write a dynamicaly-genrated archive into + * TargetFile on the webserver. It returns a TarErrorStr() status + * code. + * + * To know the extension to add to the file if you're using AUTO_DETECT + * compression, you can use getCompression(). + */ + function writeArchive($p_archive) { + if(!$this->_memdat) return -7; + $fp = @fopen($p_archive, 'wb'); + if(!$fp) return -6; + + fwrite($fp, $this->_memdat); + fclose($fp); + + return true; } - return $result; - } - - /** - * Convert a status code into a human readable message - * - * Some MaxgTar functions like Create(), Add() ... return numerical - * status code. You can pass them to this function to grab their english - * equivalent. - */ - function TarErrorStr($i) - { - $ecodes = Array( - 1 => true, - 0 => "Undocumented error", - -1 => "Can't use COMPRESS_GZIP compression : ZLIB extensions are not loaded !", - -2 => "Can't use COMPRESS_BZIP compression : BZ2 extensions are not loaded !", - -3 => "You must set a archive file to read the contents !", - -4 => "Can't open the archive file for read !", - -5 => "Invalide file list !", - -6 => "Can't open the archive in write mode !", - -7 => "There is no ARCHIVE_DYNAMIC to write !", - -8 => "Can't create the directory to extract files !", - -9 => "Please pass a archive name to send if you made created an ARCHIVE_DYNAMIC !", - -10 => "You didn't pass an archive filename and there is no stored ARCHIVE_DYNAMIC !", - -11 => "Given archive doesn't exist !" - ); - - return isset($ecodes[$i]) ? $ecodes[$i] : $ecodes[0]; - } - - /** - * Display informations about the MaxgTar Class. - * - * This function will display vaious informations about the server - * MaxgTar is running on. - * - * The optional parameter DispHeaders is used to generate a full page with - * HTML headers (TRUE by default) or just the table with the informations - * (FALSE). Note that the HTML page generated is verified compatible XHTML - * 1.0, but not HTML 4.0 compatible. - */ - function TarInfo($headers = true) - { - if($headers) - { - ?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html> - -<head> - <title>MaxgComp TAR</title> - <style type="text/css"> - body{margin: 20px;} - body,td{font-size:10pt;font-family: arial;} - </style> - <meta name="Author" content="The Maxg Network, http://maxg.info" /> - <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> -</head> - -<body bgcolor="#EFEFEF"> -<?php + /** + * Send a TAR archive to the client browser. + * + * This function will send an archive to the client, and return a status + * code, but can behave differently depending on the arguments you give. All + * arguments are optional. + * + * ClientName is used to specify the archive name to give to the browser. If + * you don't give one, it will send the constructor filename or return an + * error code in case of dynamical archive. + * + * FileName is optional and used to send a specific archive. Leave it blank + * to send dynamical archives or the current working archive. + * + * If SendHeaders is enabled (by default), the library will send the HTTP + * headers itself before it sends the contents. This headers are : + * Content-Type, Content-Disposition, Content-Length and Accept-Range. + * + * Please note that this function DOES NOT stops the script so don't forget + * to exit() to avoid your script sending other data and corrupt the archive. + * Another note : for AUTO_DETECT dynamical archives you can know the + * extension to add to the name with getCompression() + */ + function sendClient($name = '', $archive = '', $headers = true) { + if(!$name && !$this->_nomf) return -9; + if(!$archive && !$this->_memdat) return -10; + if(!$name) $name = basename($this->_nomf); + + if($archive){ if(!file_exists($archive)) return -11; } + else $decoded = $this->getDynamicArchive(); + + if($headers) { + header('Content-Type: application/x-gtar'); + header('Content-Disposition: attachment; filename='.basename($name)); + header('Accept-Ranges: bytes'); + header('Content-Length: '.($archive ? filesize($archive) : strlen($decoded))); + } + + if($archive) { + $fp = @fopen($archive,'rb'); + if(!$fp) return -4; + + while(!feof($fp)) echo fread($fp,2048); + } else { + echo $decoded; + } + + return true; } -?> -<table border="0" align="center" width="500" cellspacing="4" cellpadding="5" style="border:1px dotted black;"> -<tr> - <td align="center" bgcolor="#DFDFEF" colspan="3" style="font-size:15pt;font-color:#330000;border:1px solid black;">MaxgComp TAR</td> -</tr> -<tr> - <td colspan="2" bgcolor="#EFEFFE" style="border:1px solid black;">This software was created by the Maxg Network, <a href="http://maxg.info" target="_blank" style="text-decoration:none;color:#333366;">http://maxg.info</a> - <br />It is distributed under the GNU <a href="http://www.gnu.org/copyleft/lesser.html" target="_blank" style="text-decoration:none;color:#333366;">Lesser General Public License</a> - <br />You can find the documentation of this class <a href="http://docs.maxg.info" target="_blank" style="text-decoration:none;color:#333366;">here</a></td> - <td width="60" bgcolor="#EFEFFE" style="border:1px solid black;" align="center"><img src="http://img.maxg.info/menu/tar.gif" border="0" alt="MaxgComp TAR" /></td> -</tr> -<tr> - <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">MaxgComp TAR version</td> - <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=TARLIB_VERSION?></td> -</tr> -<tr> - <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">ZLIB extensions</td> - <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=(extension_loaded('zlib') ? '<b>Yes</b>' : '<i>No</i>')?></td> -</tr> -<tr> - <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">BZ2 extensions</td> - <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=(extension_loaded('bz2') ? '<b>Yes</b>' : '<i>No</i>')?></td> -</tr> -<tr> - <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">Allow URL fopen</td> - <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=(ini_get('allow_url_fopen') ? '<b>Yes</b>' : '<i>No</i>')?></td> -</tr> -<tr> - <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">Time limit</td> - <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=ini_get('max_execution_time')?></td> -</tr> -<tr> - <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">PHP Version</td> - <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=phpversion()?></td> -</tr> -<tr> - <td colspan="3" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"> - <i>Special thanks to « Vincent Blavet » for his PEAR::Archive_Tar class</i> - </td> -</tr> -</table> -<?php - if($headers) echo '</body></html>'; - } - - function _seek($p_flen, $tell=0) - { - if($this->_nomf === ARCHIVE_DYNAMIC) - $this->_memdat=substr($this->_memdat,0,($tell ? strlen($this->_memdat) : 0) + $p_flen); - elseif($this->_comptype == COMPRESS_GZIP) - @gzseek($this->_fp, ($tell ? @gztell($this->_fp) : 0)+$p_flen); - elseif($this->_comptype == COMPRESS_BZIP) - @fseek($this->_fp, ($tell ? @ftell($this->_fp) : 0)+$p_flen); - else - @fseek($this->_fp, ($tell ? @ftell($this->_fp) : 0)+$p_flen); - } - - function _OpenRead() - { - if($this->_comptype == COMPRESS_GZIP) - $this->_fp = @gzopen($this->_nomf, 'rb'); - elseif($this->_comptype == COMPRESS_BZIP) - $this->_fp = @bzopen($this->_nomf, 'rb'); - else - $this->_fp = @fopen($this->_nomf, 'rb'); - - return ($this->_fp ? true : false); - } - - function _OpenWrite($add = 'w') - { - if($this->_nomf === ARCHIVE_DYNAMIC) return true; - - if($this->_comptype == COMPRESS_GZIP) - $this->_fp = @gzopen($this->_nomf, $add.'b'.$this->_compzlevel); - elseif($this->_comptype == COMPRESS_BZIP) - $this->_fp = @bzopen($this->_nomf, $add.'b'); - else - $this->_fp = @fopen($this->_nomf, $add.'b'); - - return ($this->_fp ? true : false); - } - - function _CompTar() - { - if($this->_nomf === ARCHIVE_DYNAMIC || !$this->_fp) return; - - if($this->_comptype == COMPRESS_GZIP) @gzclose($this->_fp); - elseif($this->_comptype == COMPRESS_BZIP) @bzclose($this->_fp); - else @fclose($this->_fp); - } - - function _read($p_len) - { - if($this->_comptype == COMPRESS_GZIP) - return @gzread($this->_fp,$p_len); - elseif($this->_comptype == COMPRESS_BZIP) - return @bzread($this->_fp,$p_len); - else - return @fread($this->_fp,$p_len); - } - - function _write($p_data) - { - if($this->_nomf === ARCHIVE_DYNAMIC) $this->_memdat .= $p_data; - elseif($this->_comptype == COMPRESS_GZIP) - return @gzwrite($this->_fp,$p_data); - - elseif($this->_comptype == COMPRESS_BZIP) - return @bzwrite($this->_fp,$p_data); - - else - return @fwrite($this->_fp,$p_data); - } - - function _encode($p_dat) - { - if($this->_comptype == COMPRESS_GZIP) - return gzencode($p_dat, $this->_compzlevel); - elseif($this->_comptype == COMPRESS_BZIP) - return bzcompress($p_dat, $this->_compzlevel); - else return $p_dat; - } - - function _readHeader($p_dat) - { - if (!$p_dat || strlen($p_dat) != 512) return false; - - for ($i=0, $chks=0; $i<148; $i++) - $chks += ord($p_dat[$i]); - - for ($i=156,$chks+=256; $i<512; $i++) - $chks += ord($p_dat[$i]); - - $headers = @unpack("a100filename/a8mode/a8uid/a8gid/a12size/a12mtime/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor", $p_dat); - if(!$headers) return false; - - $return['checksum'] = OctDec(trim($headers['checksum'])); - if ($return['checksum'] != $chks) return false; - - $return['filename'] = trim($headers['filename']); - $return['mode'] = OctDec(trim($headers['mode'])); - $return['uid'] = OctDec(trim($headers['uid'])); - $return['gid'] = OctDec(trim($headers['gid'])); - $return['size'] = OctDec(trim($headers['size'])); - $return['mtime'] = OctDec(trim($headers['mtime'])); - $return['typeflag'] = $headers['typeflag']; - $return['link'] = trim($headers['link']); - $return['uname'] = trim($headers['uname']); - $return['gname'] = trim($headers['gname']); - - return $return; - } - - function _fetchFilelist($p_filelist) - { - if(!$p_filelist || (is_array($p_filelist) && !@count($p_filelist))) return false; - - if(is_string($p_filelist)) - { - $p_filelist = explode('|',$p_filelist); - if(!is_array($p_filelist)) $p_filelist = Array($p_filelist); + + /** + * Extract part or totality of the archive. + * + * This function can extract files from an archive, and returns then a + * status codes that can be converted with TarErrorStr() into a + * human readable message. + * + * Only the first argument is required, What and it can be either the + * constant FULL_ARCHIVE or an indexed array containing each file you want to + * extract. + * + * To contains the target folder to extract the archive. It is optional and + * the default value is '.' which means the current folder. If the target + * folder doesn't exist, the script attempts to create it and give it + * permissions 0777 by default. + * + * RemovePath is very usefull when you want to extract files from a subfoler + * in the archive to a root folder. For instance, if you have a file in the + * archive called some/sub/folder/test.txt and you want to extract it to the + * script folder, you can call Extract with To = '.' and RemovePath = + * 'some/sub/folder/' + * + * FileMode is optional and its default value is 0755. It is in fact the UNIX + * permission in octal mode (prefixed with a 0) that will be given on each + * extracted file. + */ + function Extract($p_what = TarLib::FULL_ARCHIVE, $p_to = '.', $p_remdir='', $p_mode = 0755) { + if(!$this->_OpenRead()) return -4; + // if(!@is_dir($p_to)) if(!@mkdir($p_to, 0777)) return -8; --CS + if(!@is_dir($p_to)) if(!$this->_dirApp($p_to)) return -8; //--CS (route through correct dir fn) + + $ok = $this->_extractList($p_to, $p_what, $p_remdir, $p_mode); + $this->_CompTar(); + + return $ok; } - return $p_filelist; - } + /** + * Create a new package with the given files + * + * This function will attempt to create a new archive with global headers + * then add the given files into. If the archive is a real file, the + * contents are written directly into the file, if it is a dynamic archive + * contents are only stored in memory. This function should not be used to + * add files to an existing archive, you should use Add() instead. + * + * The FileList actually supports three different modes : + * + * - You can pass a string containing filenames separated by pipes '|'. + * In this case the file are read from the webserver filesystem and the + * root folder is the folder where the script using the MaxgTar is called. + * + * - You can also give a unidimensional indexed array containing the + * filenames. The behaviour for the content reading is the same that a + * '|'ed string. + * + * - The more useful usage is to pass bidimensional arrays, where the + * first element contains the filename and the second contains the file + * contents. You can even add empty folders to the package if the filename + * has a leading '/'. Once again, have a look at the exemples to understand + * better. + * + * Note you can also give arrays with both dynamic contents and static files. + * + * The optional parameter RemovePath can be used to delete a part of the tree + * of the filename you're adding, for instance if you're adding in the root + * of a package a file that is stored somewhere in the server tree. + * + * On the contrary the parameter AddPath can be used to add a prefix folder + * to the file you store. Note also that the RemovePath is applied before the + * AddPath is added, so it HAS a sense to use both parameters together. + */ + function Create($p_filelist,$p_add='',$p_rem='') { + if(!$fl = $this->_fetchFilelist($p_filelist)) return -5; + if(!$this->_OpenWrite()) return -6; + + $ok = $this->_addFileList($fl,$p_add,$p_rem); + + if($ok){ + $this->_writeFooter(); + }else{ + $this->_CompTar(); + @unlink($this->_nomf); + } - function _addFileList($p_fl, $p_addir, $p_remdir) - { - foreach($p_fl as $file) - { - if(($file == $this->_nomf && $this->_nomf != ARCHIVE_DYNAMIC) || !$file || (!file_exists($file) && !is_array($file))) - continue; + return $ok; + } - if (!$this->_addFile($file, $p_addir, $p_remdir)) - continue; + /** + * Add files to an existing package. + * + * This function does exactly the same than Create() exept it + * will append the given files at the end of the archive. Please not the is + * safe to call Add() on a newly created archive whereas the + * contrary will fail ! + * + * This function returns a status code, you can use TarErrorStr() on + * it to get the human-readable description of the error. + */ + function Add($p_filelist, $p_add = '', $p_rem = '') { + if (($this->_nomf != TarLib::ARCHIVE_DYNAMIC && @is_file($this->_nomf)) || + ($this->_nomf == TarLib::ARCHIVE_DYNAMIC && !$this->_memdat)){ + return $this->Create($p_filelist, $p_add, $p_rem); + } - if (@is_dir($file)) - { - $d = @opendir($file); + if(!$fl = $this->_fetchFilelist($p_filelist)) return -5; + return $this->_append($fl, $p_add, $p_rem); + } - if(!$d) continue; - readdir($d); readdir($d); + /** + * Read the contents of a TAR archive + * + * This function attempts to get the list of the files stored in the + * archive, and return either an error code or an indexed array of + * associative array containing for each file the following informations : + * + * checksum Tar Checksum of the file + * filename The full name of the stored file (up to 100 c.) + * mode UNIX permissions in DECIMAL, not octal + * uid The Owner ID + * gid The Group ID + * size Uncompressed filesize + * mtime Timestamp of last modification + * typeflag Empty for files, set for folders + * link For the links, did you guess it ? + * uname Owner name + * gname Group name + */ + function ListContents() { + if(!$this->_nomf) return -3; + if(!$this->_OpenRead()) return -4; + + $result = Array(); + + while ($dat = $this->_read(512)) { + $dat = $this->_readHeader($dat); + if(!is_array($dat)) continue; + + $this->_seek(ceil($dat['size']/512)*512,1); + $result[] = $dat; + } + + return $result; + } - while($f = readdir($d)) - { - if($file != ".") $tmplist[0] = "$file/$f"; - else $tmplist[0] = $d; + /** + * Convert a status code into a human readable message + * + * Some MaxgTar functions like Create(), Add() ... return numerical + * status code. You can pass them to this function to grab their english + * equivalent. + */ + function TarErrorStr($i) { + $ecodes = Array( + 1 => true, + 0 => "Undocumented error", + -1 => "Can't use COMPRESS_GZIP compression : ZLIB extensions are not loaded !", + -2 => "Can't use COMPRESS_BZIP compression : BZ2 extensions are not loaded !", + -3 => "You must set a archive file to read the contents !", + -4 => "Can't open the archive file for read !", + -5 => "Invalide file list !", + -6 => "Can't open the archive in write mode !", + -7 => "There is no ARCHIVE_DYNAMIC to write !", + -8 => "Can't create the directory to extract files !", + -9 => "Please pass a archive name to send if you made created an ARCHIVE_DYNAMIC !", + -10 => "You didn't pass an archive filename and there is no stored ARCHIVE_DYNAMIC !", + -11 => "Given archive doesn't exist !" + ); + + return isset($ecodes[$i]) ? $ecodes[$i] : $ecodes[0]; + } - $this->_addFileList($tmplist, $p_addir, $p_remdir); + /** + * Display informations about the MaxgTar Class. + * + * This function will display vaious informations about the server + * MaxgTar is running on. + * + * The optional parameter DispHeaders is used to generate a full page with + * HTML headers (TRUE by default) or just the table with the informations + * (FALSE). Note that the HTML page generated is verified compatible XHTML + * 1.0, but not HTML 4.0 compatible. + */ + function TarInfo($headers = true) { + if($headers) { + ?> + <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + <html> + + <head> + <title>MaxgComp TAR</title> + <style type="text/css"> + body{margin: 20px;} + body,td{font-size:10pt;font-family: arial;} + </style> + <meta name="Author" content="The Maxg Network, http://maxg.info" /> + <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> + </head> + + <body bgcolor="#EFEFEF"> + <?php } + ?> + <table border="0" align="center" width="500" cellspacing="4" cellpadding="5" style="border:1px dotted black;"> + <tr> + <td align="center" bgcolor="#DFDFEF" colspan="3" style="font-size:15pt;font-color:#330000;border:1px solid black;">MaxgComp TAR</td> + </tr> + <tr> + <td colspan="2" bgcolor="#EFEFFE" style="border:1px solid black;">This software was created by the Maxg Network, <a href="http://maxg.info" target="_blank" style="text-decoration:none;color:#333366;">http://maxg.info</a> + <br />It is distributed under the GNU <a href="http://www.gnu.org/copyleft/lesser.html" target="_blank" style="text-decoration:none;color:#333366;">Lesser General Public License</a> + <br />You can find the documentation of this class <a href="http://docs.maxg.info" target="_blank" style="text-decoration:none;color:#333366;">here</a></td> + <td width="60" bgcolor="#EFEFFE" style="border:1px solid black;" align="center"><img src="http://img.maxg.info/menu/tar.gif" border="0" alt="MaxgComp TAR" /></td> + </tr> + <tr> + <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">MaxgComp TAR version</td> + <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=TARLIB_VERSION?></td> + </tr> + <tr> + <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">ZLIB extensions</td> + <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=(extension_loaded('zlib') ? '<b>Yes</b>' : '<i>No</i>')?></td> + </tr> + <tr> + <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">BZ2 extensions</td> + <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=(extension_loaded('bz2') ? '<b>Yes</b>' : '<i>No</i>')?></td> + </tr> + <tr> + <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">Allow URL fopen</td> + <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=(ini_get('allow_url_fopen') ? '<b>Yes</b>' : '<i>No</i>')?></td> + </tr> + <tr> + <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">Time limit</td> + <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=ini_get('max_execution_time')?></td> + </tr> + <tr> + <td width="50%" align="center" style="border:1px solid black;" bgcolor="#DFDFEF">PHP Version</td> + <td colspan="2" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"><?=phpversion()?></td> + </tr> + <tr> + <td colspan="3" align="center" bgcolor="#EFEFFE" style="border:1px solid black;"> + <i>Special thanks to « Vincent Blavet » for his PEAR::Archive_Tar class</i> + </td> + </tr> + </table> + <?php + if($headers) echo '</body></html>'; + } - closedir($d); unset($tmplist,$f); - } + function _seek($p_flen, $tell=0) { + if($this->_nomf === TarLib::ARCHIVE_DYNAMIC) + $this->_memdat=substr($this->_memdat,0,($tell ? strlen($this->_memdat) : 0) + $p_flen); + elseif($this->_comptype == TarLib::COMPRESS_GZIP) + @gzseek($this->_fp, ($tell ? @gztell($this->_fp) : 0)+$p_flen); + elseif($this->_comptype == TarLib::COMPRESS_BZIP) + @fseek($this->_fp, ($tell ? @ftell($this->_fp) : 0)+$p_flen); + else + @fseek($this->_fp, ($tell ? @ftell($this->_fp) : 0)+$p_flen); } - return true; - } - function _addFile($p_fn, $p_addir = '', $p_remdir = '') - { - if(is_array($p_fn)) list($p_fn, $data) = $p_fn; - $sname = $p_fn; + function _OpenRead() { + if($this->_comptype == TarLib::COMPRESS_GZIP) + $this->_fp = @gzopen($this->_nomf, 'rb'); + elseif($this->_comptype == TarLib::COMPRESS_BZIP) + $this->_fp = @bzopen($this->_nomf, 'rb'); + else + $this->_fp = @fopen($this->_nomf, 'rb'); + + return ($this->_fp ? true : false); + } - if($p_remdir) - { - if(substr($p_remdir,-1) != '/') $p_remdir .= "/"; + function _OpenWrite($add = 'w') { + if($this->_nomf === TarLib::ARCHIVE_DYNAMIC) return true; + + if($this->_comptype == TarLib::COMPRESS_GZIP) + $this->_fp = @gzopen($this->_nomf, $add.'b'.$this->_compzlevel); + elseif($this->_comptype == TarLib::COMPRESS_BZIP) + $this->_fp = @bzopen($this->_nomf, $add.'b'); + else + $this->_fp = @fopen($this->_nomf, $add.'b'); - if(substr($sname, 0, strlen($p_remdir)) == $p_remdir) - $sname = substr($sname, strlen($p_remdir)); + return ($this->_fp ? true : false); } - if($p_addir) $sname = $p_addir.(substr($p_addir,-1) == '/' ? '' : "/").$sname; + function _CompTar() { + if($this->_nomf === TarLib::ARCHIVE_DYNAMIC || !$this->_fp) return; - if(strlen($sname) > 99) return; + if($this->_comptype == TarLib::COMPRESS_GZIP) @gzclose($this->_fp); + elseif($this->_comptype == TarLib::COMPRESS_BZIP) @bzclose($this->_fp); + else @fclose($this->_fp); + } + + function _read($p_len) { + if($this->_comptype == TarLib::COMPRESS_GZIP) + return @gzread($this->_fp,$p_len); + elseif($this->_comptype == TarLib::COMPRESS_BZIP) + return @bzread($this->_fp,$p_len); + else + return @fread($this->_fp,$p_len); + } + + function _write($p_data) { + if($this->_nomf === TarLib::ARCHIVE_DYNAMIC) $this->_memdat .= $p_data; + elseif($this->_comptype == TarLib::COMPRESS_GZIP) + return @gzwrite($this->_fp,$p_data); - if(@is_dir($p_fn)) - { - if(!$this->_writeFileHeader($p_fn, $sname)) return false; + elseif($this->_comptype == TarLib::COMPRESS_BZIP) + return @bzwrite($this->_fp,$p_data); + + else + return @fwrite($this->_fp,$p_data); } - else - { - if(!$data) - { - $fp = fopen($p_fn, 'rb'); - if(!$fp) return false; - } - - if(!$this->_writeFileHeader($p_fn, $sname, ($data ? strlen($data) : false))) return false; - - if(!$data) - { - while(!feof($fp)) - { - $packed = pack("a512", fread($fp,512)); - $this->_write($packed); - } - fclose($fp); - } - else - { - for($s = 0; $s < strlen($data); $s += 512) - $this->_write(pack("a512",substr($data,$s,512))); - } + + function _encode($p_dat) { + if($this->_comptype == TarLib::COMPRESS_GZIP) + return gzencode($p_dat, $this->_compzlevel); + elseif($this->_comptype == TarLib::COMPRESS_BZIP) + return bzcompress($p_dat, $this->_compzlevel); + else return $p_dat; } - return true; - } - - function _writeFileHeader($p_file, $p_sname, $p_data=false) - { - if(!$p_data) - { - if (!$p_sname) $p_sname = $p_file; - $p_sname = $this->_pathTrans($p_sname); - - $h_info = stat($p_file); - $h[0] = sprintf("%6s ", DecOct($h_info[4])); - $h[] = sprintf("%6s ", DecOct($h_info[5])); - $h[] = sprintf("%6s ", DecOct(fileperms($p_file))); - clearstatcache(); - $h[] = sprintf("%11s ", DecOct(filesize($p_file))); - $h[] = sprintf("%11s", DecOct(filemtime($p_file))); - - $dir = @is_dir($p_file) ? '5' : ''; - } - else - { - $dir = ''; - $p_data = sprintf("%11s ", DecOct($p_data)); - $time = sprintf("%11s ", DecOct(time())); - $h = Array(" 0 "," 0 "," 40777 ",$p_data,$time); - } - - $data_first = pack("a100a8a8a8a12A12", $p_sname, $h[2], $h[0], $h[1], $h[3], $h[4]); - $data_last = pack("a1a100a6a2a32a32a8a8a155a12", $dir, '', '', '', '', '', '', '', '', ""); - - for ($i=0,$chks=0; $i<148; $i++) - $chks += ord($data_first[$i]); - - for ($i=156, $chks+=256, $j=0; $i<512; $i++, $j++) - $chks += ord($data_last[$j]); - - $this->_write($data_first); - - $chks = pack("a8",sprintf("%6s ", DecOct($chks))); - $this->_write($chks.$data_last); - - return true; - } - - function _append($p_filelist, $p_addir="", $p_remdir="") - { - if(!$this->_fp) if(!$this->_OpenWrite('a')) return -6; - - if($this->_nomf == ARCHIVE_DYNAMIC) - { - $s = strlen($this->_memdat); - $this->_memdat = substr($this->_memdat,0,-512); + function _readHeader($p_dat) { + if (!$p_dat || strlen($p_dat) != 512) return false; + + for ($i=0, $chks=0; $i<148; $i++) + $chks += ord($p_dat[$i]); + + for ($i=156,$chks+=256; $i<512; $i++) + $chks += ord($p_dat[$i]); + + $headers = @unpack("a100filename/a8mode/a8uid/a8gid/a12size/a12mtime/a8checksum/a1typeflag/a100link/a6magic/a2version/a32uname/a32gname/a8devmajor/a8devminor", $p_dat); + if(!$headers) return false; + + $return['checksum'] = OctDec(trim($headers['checksum'])); + if ($return['checksum'] != $chks) return false; + + $return['filename'] = trim($headers['filename']); + $return['mode'] = OctDec(trim($headers['mode'])); + $return['uid'] = OctDec(trim($headers['uid'])); + $return['gid'] = OctDec(trim($headers['gid'])); + $return['size'] = OctDec(trim($headers['size'])); + $return['mtime'] = OctDec(trim($headers['mtime'])); + $return['typeflag'] = $headers['typeflag']; + $return['link'] = trim($headers['link']); + $return['uname'] = trim($headers['uname']); + $return['gname'] = trim($headers['gname']); + + return $return; } - else - { - $s = filesize($this->_nomf); - $this->_seek($s-512); + + function _fetchFilelist($p_filelist) { + if(!$p_filelist || (is_array($p_filelist) && !@count($p_filelist))) return false; + + if(is_string($p_filelist)) { + $p_filelist = explode('|',$p_filelist); + if(!is_array($p_filelist)) $p_filelist = Array($p_filelist); + } + + return $p_filelist; } - $ok = $this->_addFileList($p_filelist, $p_addir, $p_remdir); - $this->_writeFooter(); - - return $ok; - } - - function _pathTrans($p_dir) - { - if ($p_dir) - { - $subf = explode("/", $p_dir); $r=''; - - for ($i=count($subf)-1; $i>=0; $i--) - { - if ($subf[$i] == ".") {} - else if ($subf[$i] == "..") $i--; - else if (!$subf[$i] && $i!=count($subf)-1 && $i) {} - else $r = $subf[$i].($i!=(count($subf)-1) ? "/".$r : ""); - } + function _addFileList($p_fl, $p_addir, $p_remdir) { + foreach($p_fl as $file) { + if(($file == $this->_nomf && $this->_nomf != TarLib::ARCHIVE_DYNAMIC) || !$file || (!file_exists($file) && !is_array($file))) + continue; + + if (!$this->_addFile($file, $p_addir, $p_remdir)) + continue; + + if (@is_dir($file)) { + $d = @opendir($file); + + if(!$d) continue; + readdir($d); + readdir($d); + + while($f = readdir($d)) { + if($file != ".") $tmplist[0] = "$file/$f"; + else $tmplist[0] = $d; + + $this->_addFileList($tmplist, $p_addir, $p_remdir); + } + + closedir($d); + unset($tmplist,$f); + } + } + return true; } - return $r; - } - - function _writeFooter() - { - $this->_write(pack("a512", "")); - } - - function _extractList($p_to, $p_files, $p_remdir, $p_mode = 0755) - { - if (!$p_to || ($p_to[0]!="/"&&substr($p_to,0,3)!="../"&&substr($p_to,1,3)!=":\\"&&substr($p_to,1,2)!=":/")) /*" // <- PHP Coder bug */ - $p_to = "./$p_to"; - - if ($p_remdir && substr($p_remdir,-1)!='/') $p_remdir .= '/'; - $p_remdirs = strlen($p_remdir); - while($dat = $this->_read(512)) - { - $headers = $this->_readHeader($dat); - if(!$headers['filename']) continue; - - if($p_files == -1 || $p_files[0] == -1) $extract = true; - else - { - $extract = false; - - foreach($p_files as $f) - { - if(substr($f,-1) == "/") { - if((strlen($headers['filename']) > strlen($f)) && (substr($headers['filename'],0,strlen($f))==$f)) { - $extract = true; break; + + function _addFile($p_fn, $p_addir = '', $p_remdir = '') { + if(is_array($p_fn)) list($p_fn, $data) = $p_fn; + $sname = $p_fn; + + if($p_remdir) { + if(substr($p_remdir,-1) != '/') $p_remdir .= "/"; + + if(substr($sname, 0, strlen($p_remdir)) == $p_remdir) + $sname = substr($sname, strlen($p_remdir)); + } + + if($p_addir) $sname = $p_addir.(substr($p_addir,-1) == '/' ? '' : "/").$sname; + + if(strlen($sname) > 99) return; + + if(@is_dir($p_fn)) { + if(!$this->_writeFileHeader($p_fn, $sname)) return false; + } else { + if(!$data) { + $fp = fopen($p_fn, 'rb'); + if(!$fp) return false; + } + + if(!$this->_writeFileHeader($p_fn, $sname, ($data ? strlen($data) : false))) return false; + + if(!$data) { + while(!feof($fp)) { + $packed = pack("a512", fread($fp,512)); + $this->_write($packed); + } + fclose($fp); + } else { + $len = strlen($data); + for($s = 0; $s < $len; $s += 512){ + $this->_write(pack("a512",substr($data,$s,512))); + } } - } - elseif($f == $headers['filename']) { - $extract = true; break; - } } - } - if ($extract) - { - $det[] = $headers; - if ($p_remdir && substr($headers['filename'],0,$p_remdirs)==$p_remdir) - $headers['filename'] = substr($headers['filename'],$p_remdirs); + return true; + } + + function _writeFileHeader($p_file, $p_sname, $p_data=false) { + if(!$p_data) { + if (!$p_sname) $p_sname = $p_file; + $p_sname = $this->_pathTrans($p_sname); + + $h_info = stat($p_file); + $h[0] = sprintf("%6s ", DecOct($h_info[4])); + $h[] = sprintf("%6s ", DecOct($h_info[5])); + $h[] = sprintf("%6s ", DecOct(fileperms($p_file))); + clearstatcache(); + $h[] = sprintf("%11s ", DecOct(filesize($p_file))); + $h[] = sprintf("%11s", DecOct(filemtime($p_file))); + + $dir = @is_dir($p_file) ? '5' : ''; + } else { + $dir = ''; + $p_data = sprintf("%11s ", DecOct($p_data)); + $time = sprintf("%11s ", DecOct(time())); + $h = Array(" 0 "," 0 "," 40777 ",$p_data,$time); + } - if($headers['filename'].'/' == $p_remdir && $headers['typeflag']=='5') continue; + $data_first = pack("a100a8a8a8a12A12", $p_sname, $h[2], $h[0], $h[1], $h[3], $h[4]); + $data_last = pack("a1a100a6a2a32a32a8a8a155a12", $dir, '', '', '', '', '', '', '', '', ""); - if ($p_to != "./" && $p_to != "/") - { - while($p_to{-1}=="/") $p_to = substr($p_to,0,-1); + for ($i=0,$chks=0; $i<148; $i++) + $chks += ord($data_first[$i]); + + for ($i=156, $chks+=256, $j=0; $i<512; $i++, $j++) + $chks += ord($data_last[$j]); + + $this->_write($data_first); + + $chks = pack("a8",sprintf("%6s ", DecOct($chks))); + $this->_write($chks.$data_last); + + return true; + } - if($headers['filename']{0} == "/") - $headers['filename'] = $p_to.$headers['filename']; - else - $headers['filename'] = $p_to."/".$headers['filename']; + function _append($p_filelist, $p_addir="", $p_remdir="") { + if(!$this->_fp) if(!$this->_OpenWrite('a')) return -6; + + if($this->_nomf == TarLib::ARCHIVE_DYNAMIC) { + $s = strlen($this->_memdat); + $this->_memdat = substr($this->_memdat,0,-512); + } else { + $s = filesize($this->_nomf); + $this->_seek($s-512); } - $ok = $this->_dirApp($headers['typeflag']=="5" ? $headers['filename'] : dirname($headers['filename'])); - if($ok < 0) return $ok; + $ok = $this->_addFileList($p_filelist, $p_addir, $p_remdir); + $this->_writeFooter(); + + return $ok; + } + + function _pathTrans($p_dir) { + if ($p_dir) { + $subf = explode("/", $p_dir); + $r=''; + + for ($i=count($subf)-1; $i>=0; $i--) { + if ($subf[$i] == ".") { + # do nothing + } elseif ($subf[$i] == "..") { + $i--; + } elseif (!$subf[$i] && $i!=count($subf)-1 && $i) { + # do nothing + } else { + $r = $subf[$i].($i!=(count($subf)-1) ? "/".$r : ""); + } + } + } + return $r; + } - if (!$headers['typeflag']) - { - if (!$fp = @fopen($headers['filename'], "wb")) return -6; - $n = floor($headers['size']/512); + function _writeFooter() { + $this->_write(pack("a512", "")); + } - for ($i=0; $i<$n; $i++) fwrite($fp, $this->_read(512),512); - if (($headers['size'] % 512) != 0) fwrite($fp, $this->_read(512), $headers['size'] % 512); + function _extractList($p_to, $p_files, $p_remdir, $p_mode = 0755) { + if (!$p_to || ($p_to[0]!="/"&&substr($p_to,0,3)!="../"&&substr($p_to,1,3)!=":\\"&&substr($p_to,1,2)!=":/")) /*" // <- PHP Coder bug */ + $p_to = "./$p_to"; + + if ($p_remdir && substr($p_remdir,-1)!='/') $p_remdir .= '/'; + $p_remdirs = strlen($p_remdir); + while($dat = $this->_read(512)) { + $headers = $this->_readHeader($dat); + if(!$headers['filename']) continue; + + if($p_files == -1 || $p_files[0] == -1){ + $extract = true; + } else { + $extract = false; + + foreach($p_files as $f) { + if(substr($f,-1) == "/") { + if((strlen($headers['filename']) > strlen($f)) && (substr($headers['filename'],0,strlen($f))==$f)) { + $extract = true; + break; + } + } elseif($f == $headers['filename']) { + $extract = true; + break; + } + } + } - fclose($fp); - touch($headers['filename'], $headers['mtime']); - chmod($headers['filename'], $p_mode); + if ($extract) { + $det[] = $headers; + if ($p_remdir && substr($headers['filename'],0,$p_remdirs)==$p_remdir) + $headers['filename'] = substr($headers['filename'],$p_remdirs); + + if($headers['filename'].'/' == $p_remdir && $headers['typeflag']=='5') continue; + + if ($p_to != "./" && $p_to != "/") { + while($p_to{-1}=="/") $p_to = substr($p_to,0,-1); + + if($headers['filename']{0} == "/") + $headers['filename'] = $p_to.$headers['filename']; + else + $headers['filename'] = $p_to."/".$headers['filename']; + } + + $ok = $this->_dirApp($headers['typeflag']=="5" ? $headers['filename'] : dirname($headers['filename'])); + if($ok < 0) return $ok; + + if (!$headers['typeflag']) { + if (!$fp = @fopen($headers['filename'], "wb")) return -6; + $n = floor($headers['size']/512); + + for ($i=0; $i<$n; $i++){ + fwrite($fp, $this->_read(512),512); + } + if (($headers['size'] % 512) != 0) fwrite($fp, $this->_read(512), $headers['size'] % 512); + + fclose($fp); + touch($headers['filename'], $headers['mtime']); + chmod($headers['filename'], $p_mode); + } else { + $this->_seek(ceil($headers['size']/512)*512,1); + } + }else $this->_seek(ceil($headers['size']/512)*512,1); } - else - { - $this->_seek(ceil($headers['size']/512)*512,1); - } - }else $this->_seek(ceil($headers['size']/512)*512,1); + return $det; } - return $det; - } - -function _dirApp($d) - { -// map to dokuwiki function (its more robust) - return io_mkdir_p($d); -/* - $d = explode('/', $d); - $base = ''; - - foreach($d as $f) - { - if(!is_dir($base.$f)) - { - $ok = @mkdir($base.$f, 0777); - if(!$ok) return false; - } - $base .= "$f/"; + + function _dirApp($d) { + // map to dokuwiki function (its more robust) + return io_mkdir_p($d); } -*/ - } } diff --git a/inc/ZipLib.class.php b/inc/ZipLib.class.php index 836e9d9e6..cf89a40a4 100644 --- a/inc/ZipLib.class.php +++ b/inc/ZipLib.class.php @@ -5,471 +5,500 @@ * @link http://dev.maxg.info * @link http://forum.maxg.info * - * Modified for Dokuwiki - * @author Christopher Smith <chris@jalakai.co.uk> + * Modified for Dokuwiki + * @author Christopher Smith <chris@jalakai.co.uk> */ -class ZipLib -{ - - var $datasec, $ctrl_dir = array(); - var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00"; - var $old_offset = 0; var $dirs = Array("."); - - function get_List($zip_name) - { - $zip = @fopen($zip_name, 'rb'); - if(!$zip) return(0); - $centd = $this->ReadCentralDir($zip,$zip_name); - - @rewind($zip); - @fseek($zip, $centd['offset']); - - for ($i=0; $i<$centd['entries']; $i++) - { - $header = $this->ReadCentralFileHeaders($zip); - $header['index'] = $i;$info['filename'] = $header['filename']; - $info['stored_filename'] = $header['stored_filename']; - $info['size'] = $header['size'];$info['compressed_size']=$header['compressed_size']; - $info['crc'] = strtoupper(dechex( $header['crc'] )); - $info['mtime'] = $header['mtime']; $info['comment'] = $header['comment']; - $info['folder'] = ($header['external']==0x41FF0010||$header['external']==16)?1:0; - $info['index'] = $header['index'];$info['status'] = $header['status']; - $ret[]=$info; unset($header); - } - return $ret; - } - - function Add($files,$compact) - { - if(!is_array($files[0])) $files=Array($files); - - for($i=0;$files[$i];$i++){ - $fn = $files[$i]; - if(!in_Array(dirname($fn[0]),$this->dirs)) - $this->add_Dir(dirname($fn[0])); - if(basename($fn[0])) - $ret[basename($fn[0])]=$this->add_File($fn[1],$fn[0],$compact); - } - return $ret; - } - - /** - * Zips recursively the $folder directory, from the $basedir directory - */ - function Compress($folder, $basedir=null, $parent=null) - { - $full_path = $basedir."/".$parent.$folder; - $zip_path = $parent.$folder; - if ($zip_path) { - $zip_path .= "/"; - $this->add_dir($zip_path); - } - $dir = new DirectoryIterator($full_path); - foreach($dir as $file) { - if(!$file->isDot()) { - $filename = $file->getFilename(); - if($file->isDir()) { - $this->Compress($filename, $basedir, $zip_path); - } else { - $content = join('', file($full_path.'/'.$filename)); - $this->add_File($content, $zip_path.$filename); +class ZipLib { + + var $datasec; + var $ctrl_dir = array(); + var $eof_ctrl_dir = "\x50\x4b\x05\x06\x00\x00\x00\x00"; + var $old_offset = 0; + var $dirs = Array("."); + + function get_List($zip_name) { + $zip = @fopen($zip_name, 'rb'); + if(!$zip) return(0); + $centd = $this->ReadCentralDir($zip,$zip_name); + + @rewind($zip); + @fseek($zip, $centd['offset']); + + for ($i=0; $i<$centd['entries']; $i++) { + $header = $this->ReadCentralFileHeaders($zip); + $header['index'] = $i; + + $info['filename'] = $header['filename']; + $info['stored_filename'] = $header['stored_filename']; + $info['size'] = $header['size']; + $info['compressed_size'] = $header['compressed_size']; + $info['crc'] = strtoupper(dechex( $header['crc'] )); + $info['mtime'] = $header['mtime']; + $info['comment'] = $header['comment']; + $info['folder'] = ($header['external']==0x41FF0010||$header['external']==16)?1:0; + $info['index'] = $header['index']; + $info['status'] = $header['status']; + $ret[]=$info; + + unset($header); + } + return $ret; } - } - } - } - - /** - * Returns the Zip file - */ - function get_file() - { - $data = implode('', $this -> datasec); - $ctrldir = implode('', $this -> ctrl_dir); - - return $data . $ctrldir . $this -> eof_ctrl_dir . - pack('v', sizeof($this -> ctrl_dir)).pack('v', sizeof($this -> ctrl_dir)). - pack('V', strlen($ctrldir)) . pack('V', strlen($data)) . "\x00\x00"; - } - - function add_dir($name) - { - $name = str_replace("\\", "/", $name); - $fr = "\x50\x4b\x03\x04\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"; - - $fr .= pack("V",0).pack("V",0).pack("V",0).pack("v", strlen($name) ); - $fr .= pack("v", 0 ).$name.pack("V", 0).pack("V", 0).pack("V", 0); - $this -> datasec[] = $fr; - - $new_offset = strlen(implode("", $this->datasec)); - - $cdrec = "\x50\x4b\x01\x02\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"; - $cdrec .= pack("V",0).pack("V",0).pack("V",0).pack("v", strlen($name) ); - $cdrec .= pack("v", 0 ).pack("v", 0 ).pack("v", 0 ).pack("v", 0 ); - $ext = "\xff\xff\xff\xff"; - $cdrec .= pack("V", 16 ).pack("V", $this -> old_offset ).$name; - - $this -> ctrl_dir[] = $cdrec; - $this -> old_offset = $new_offset; - $this -> dirs[] = $name; - } - - /** - * Add a file named $name from a string $data - */ - function add_File($data, $name, $compact = 1) - { - $name = str_replace('\\', '/', $name); - $dtime = dechex($this->DosTime()); - - $hexdtime = '\x' . $dtime[6] . $dtime[7].'\x'.$dtime[4] . $dtime[5] - . '\x' . $dtime[2] . $dtime[3].'\x'.$dtime[0].$dtime[1]; - eval('$hexdtime = "' . $hexdtime . '";'); - - if($compact) - $fr = "\x50\x4b\x03\x04\x14\x00\x00\x00\x08\x00".$hexdtime; - else $fr = "\x50\x4b\x03\x04\x0a\x00\x00\x00\x00\x00".$hexdtime; - $unc_len = strlen($data); $crc = crc32($data); - - if($compact){ - $zdata = gzcompress($data); $c_len = strlen($zdata); - $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2); - }else{ - $zdata = $data; - } - $c_len=strlen($zdata); - $fr .= pack('V', $crc).pack('V', $c_len).pack('V', $unc_len); - $fr .= pack('v', strlen($name)).pack('v', 0).$name.$zdata; - - $fr .= pack('V', $crc).pack('V', $c_len).pack('V', $unc_len); - - $this -> datasec[] = $fr; - $new_offset = strlen(implode('', $this->datasec)); - if($compact) - $cdrec = "\x50\x4b\x01\x02\x00\x00\x14\x00\x00\x00\x08\x00"; - else $cdrec = "\x50\x4b\x01\x02\x14\x00\x0a\x00\x00\x00\x00\x00"; - $cdrec .= $hexdtime.pack('V', $crc).pack('V', $c_len).pack('V', $unc_len); - $cdrec .= pack('v', strlen($name) ).pack('v', 0 ).pack('v', 0 ); - $cdrec .= pack('v', 0 ).pack('v', 0 ).pack('V', 32 ); - $cdrec .= pack('V', $this -> old_offset ); - - $this -> old_offset = $new_offset; - $cdrec .= $name; - $this -> ctrl_dir[] = $cdrec; - return true; - } - - function DosTime() { - $timearray = getdate(); - if ($timearray['year'] < 1980) { - $timearray['year'] = 1980; $timearray['mon'] = 1; - $timearray['mday'] = 1; $timearray['hours'] = 0; - $timearray['minutes'] = 0; $timearray['seconds'] = 0; - } - return (($timearray['year'] - 1980) << 25) | ($timearray['mon'] << 21) | ($timearray['mday'] << 16) | ($timearray['hours'] << 11) | - ($timearray['minutes'] << 5) | ($timearray['seconds'] >> 1); - } - - /** - * Extract a zip file $zn to the $to directory - */ - function Extract ( $zn, $to, $index = Array(-1) ) - { - if(!@is_dir($to)) $this->_mkdir($to); - $ok = 0; $zip = @fopen($zn,'rb'); - if(!$zip) return(-1); - $cdir = $this->ReadCentralDir($zip,$zn); - $pos_entry = $cdir['offset']; - - if(!is_array($index)){ $index = array($index); } - for($i=0; isset($index[$i]);$i++){ - if(intval($index[$i])!=$index[$i]||$index[$i]>$cdir['entries']) - return(-1); - } - - for ($i=0; $i<$cdir['entries']; $i++) - { - @fseek($zip, $pos_entry); - $header = $this->ReadCentralFileHeaders($zip); - $header['index'] = $i; $pos_entry = ftell($zip); - @rewind($zip); fseek($zip, $header['offset']); - if(in_array("-1",$index)||in_array($i,$index)) - $stat[$header['filename']]=$this->ExtractFile($header, $to, $zip); - - } - fclose($zip); - return $stat; - } - - function ReadFileHeader($zip, $header) - { - $binary_data = fread($zip, 30); - $data = unpack('vchk/vid/vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $binary_data); - - $header['filename'] = fread($zip, $data['filename_len']); - if ($data['extra_len'] != 0) { - $header['extra'] = fread($zip, $data['extra_len']); - } else { $header['extra'] = ''; } - - $header['compression'] = $data['compression']; - foreach (array('size','compressed_size','crc') as $hd) { // On ODT files, these headers are 0. Keep the previous value. - if ($data[$hd] != 0) $header[$hd] = $data[$hd]; + + function Add($files,$compact) { + if(!is_array($files[0])) $files=Array($files); + + for($i=0;$files[$i];$i++){ + $fn = $files[$i]; + if(!in_Array(dirname($fn[0]),$this->dirs)) + $this->add_Dir(dirname($fn[0])); + if(basename($fn[0])) + $ret[basename($fn[0])]=$this->add_File($fn[1],$fn[0],$compact); + } + return $ret; + } + + /** + * Zips recursively the $folder directory, from the $basedir directory + */ + function Compress($folder, $basedir=null, $parent=null) { + $full_path = $basedir."/".$parent.$folder; + $zip_path = $parent.$folder; + if ($zip_path) { + $zip_path .= "/"; + $this->add_dir($zip_path); + } + $dir = new DirectoryIterator($full_path); + foreach($dir as $file) { + if(!$file->isDot()) { + $filename = $file->getFilename(); + if($file->isDir()) { + $this->Compress($filename, $basedir, $zip_path); + } else { + $content = join('', file($full_path.'/'.$filename)); + $this->add_File($content, $zip_path.$filename); + } + } + } + } + + /** + * Returns the Zip file + */ + function get_file() { + $data = implode('', $this -> datasec); + $ctrldir = implode('', $this -> ctrl_dir); + + return $data . $ctrldir . $this -> eof_ctrl_dir . + pack('v', count($this->ctrl_dir)).pack('v', count($this->ctrl_dir)). + pack('V', strlen($ctrldir)) . pack('V', strlen($data)) . "\x00\x00"; + } + + function add_dir($name) { + $name = str_replace("\\", "/", $name); + $fr = "\x50\x4b\x03\x04\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"; + + $fr .= pack("V",0).pack("V",0).pack("V",0).pack("v", strlen($name) ); + $fr .= pack("v", 0 ).$name.pack("V", 0).pack("V", 0).pack("V", 0); + $this -> datasec[] = $fr; + + $new_offset = strlen(implode("", $this->datasec)); + + $cdrec = "\x50\x4b\x01\x02\x00\x00\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00"; + $cdrec .= pack("V",0).pack("V",0).pack("V",0).pack("v", strlen($name) ); + $cdrec .= pack("v", 0 ).pack("v", 0 ).pack("v", 0 ).pack("v", 0 ); + $ext = "\xff\xff\xff\xff"; + $cdrec .= pack("V", 16 ).pack("V", $this -> old_offset ).$name; + + $this -> ctrl_dir[] = $cdrec; + $this -> old_offset = $new_offset; + $this -> dirs[] = $name; + } + + /** + * Add a file named $name from a string $data + */ + function add_File($data, $name, $compact = 1) { + $name = str_replace('\\', '/', $name); + $dtime = dechex($this->DosTime()); + + $hexdtime = pack('H*',$dtime[6].$dtime[7]. + $dtime[4].$dtime[5]. + $dtime[2].$dtime[3]. + $dtime[0].$dtime[1]); + + if($compact){ + $fr = "\x50\x4b\x03\x04\x14\x00\x00\x00\x08\x00".$hexdtime; + }else{ + $fr = "\x50\x4b\x03\x04\x0a\x00\x00\x00\x00\x00".$hexdtime; + } + $unc_len = strlen($data); + $crc = crc32($data); + + if($compact){ + $zdata = gzcompress($data); + $c_len = strlen($zdata); + $zdata = substr(substr($zdata, 0, strlen($zdata) - 4), 2); + }else{ + $zdata = $data; + } + $c_len=strlen($zdata); + $fr .= pack('V', $crc).pack('V', $c_len).pack('V', $unc_len); + $fr .= pack('v', strlen($name)).pack('v', 0).$name.$zdata; + + $fr .= pack('V', $crc).pack('V', $c_len).pack('V', $unc_len); + + $this -> datasec[] = $fr; + $new_offset = strlen(implode('', $this->datasec)); + if($compact) { + $cdrec = "\x50\x4b\x01\x02\x00\x00\x14\x00\x00\x00\x08\x00"; + } else { + $cdrec = "\x50\x4b\x01\x02\x14\x00\x0a\x00\x00\x00\x00\x00"; + } + $cdrec .= $hexdtime.pack('V', $crc).pack('V', $c_len).pack('V', $unc_len); + $cdrec .= pack('v', strlen($name) ).pack('v', 0 ).pack('v', 0 ); + $cdrec .= pack('v', 0 ).pack('v', 0 ).pack('V', 32 ); + $cdrec .= pack('V', $this -> old_offset ); + + $this -> old_offset = $new_offset; + $cdrec .= $name; + $this -> ctrl_dir[] = $cdrec; + return true; + } + + function DosTime() { + $timearray = getdate(); + if ($timearray['year'] < 1980) { + $timearray['year'] = 1980; + $timearray['mon'] = 1; + $timearray['mday'] = 1; + $timearray['hours'] = 0; + $timearray['minutes'] = 0; + $timearray['seconds'] = 0; + } + return (($timearray['year'] - 1980) << 25) | + ($timearray['mon'] << 21) | + ($timearray['mday'] << 16) | + ($timearray['hours'] << 11) | + ($timearray['minutes'] << 5) | + ($timearray['seconds'] >> 1); } - $header['flag'] = $data['flag']; - $header['mdate'] = $data['mdate'];$header['mtime'] = $data['mtime']; - - if ($header['mdate'] && $header['mtime']){ - $hour=($header['mtime']&0xF800)>>11;$minute=($header['mtime']&0x07E0)>>5; - $seconde=($header['mtime']&0x001F)*2;$year=(($header['mdate']&0xFE00)>>9)+1980; - $month=($header['mdate']&0x01E0)>>5;$day=$header['mdate']&0x001F; - $header['mtime'] = mktime($hour, $minute, $seconde, $month, $day, $year); - }else{$header['mtime'] = time();} - - $header['stored_filename'] = $header['filename']; - $header['status'] = "ok"; - return $header; - } - - function ReadCentralFileHeaders($zip){ - $binary_data = fread($zip, 46); - $header = unpack('vchkid/vid/vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $binary_data); - - if ($header['filename_len'] != 0) - $header['filename'] = fread($zip,$header['filename_len']); - else $header['filename'] = ''; - - if ($header['extra_len'] != 0) - $header['extra'] = fread($zip, $header['extra_len']); - else $header['extra'] = ''; - - if ($header['comment_len'] != 0) - $header['comment'] = fread($zip, $header['comment_len']); - else $header['comment'] = ''; - - if ($header['mdate'] && $header['mtime']) - { - $hour = ($header['mtime'] & 0xF800) >> 11; - $minute = ($header['mtime'] & 0x07E0) >> 5; - $seconde = ($header['mtime'] & 0x001F)*2; - $year = (($header['mdate'] & 0xFE00) >> 9) + 1980; - $month = ($header['mdate'] & 0x01E0) >> 5; - $day = $header['mdate'] & 0x001F; - $header['mtime'] = mktime($hour, $minute, $seconde, $month, $day, $year); - } else { - $header['mtime'] = time(); + + /** + * Extract a zip file $zn to the $to directory + */ + function Extract ( $zn, $to, $index = Array(-1) ) { + if(!@is_dir($to)) $this->_mkdir($to); + $ok = 0; + $zip = @fopen($zn,'rb'); + if(!$zip) return(-1); + $cdir = $this->ReadCentralDir($zip,$zn); + $pos_entry = $cdir['offset']; + + if(!is_array($index)){ + $index = array($index); + } + for($i=0; isset($index[$i]);$i++){ + if(intval($index[$i])!=$index[$i]||$index[$i]>$cdir['entries']) + return(-1); + } + + for ($i=0; $i<$cdir['entries']; $i++) { + @fseek($zip, $pos_entry); + $header = $this->ReadCentralFileHeaders($zip); + $header['index'] = $i; + $pos_entry = ftell($zip); + @rewind($zip); + fseek($zip, $header['offset']); + if(in_array("-1",$index)||in_array($i,$index)){ + $stat[$header['filename']]=$this->ExtractFile($header, $to, $zip); + } + } + fclose($zip); + return $stat; + } + + function ReadFileHeader($zip, $header) { + $binary_data = fread($zip, 30); + $data = unpack('vchk/vid/vversion/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len', $binary_data); + + $header['filename'] = fread($zip, $data['filename_len']); + if ($data['extra_len'] != 0) { + $header['extra'] = fread($zip, $data['extra_len']); + } else { + $header['extra'] = ''; + } + + $header['compression'] = $data['compression']; + foreach (array('size','compressed_size','crc') as $hd) { // On ODT files, these headers are 0. Keep the previous value. + if ($data[$hd] != 0) $header[$hd] = $data[$hd]; + } + $header['flag'] = $data['flag']; + $header['mdate'] = $data['mdate']; + $header['mtime'] = $data['mtime']; + + if ($header['mdate'] && $header['mtime']){ + $hour = ($header['mtime']&0xF800)>>11; + $minute = ($header['mtime']&0x07E0)>>5; + $seconde = ($header['mtime']&0x001F)*2; + $year = (($header['mdate']&0xFE00)>>9)+1980; + $month = ($header['mdate']&0x01E0)>>5; + $day = $header['mdate']&0x001F; + $header['mtime'] = mktime($hour, $minute, $seconde, $month, $day, $year); + } else { + $header['mtime'] = time(); + } + + $header['stored_filename'] = $header['filename']; + $header['status'] = "ok"; + return $header; + } + + function ReadCentralFileHeaders($zip){ + $binary_data = fread($zip, 46); + $header = unpack('vchkid/vid/vversion/vversion_extracted/vflag/vcompression/vmtime/vmdate/Vcrc/Vcompressed_size/Vsize/vfilename_len/vextra_len/vcomment_len/vdisk/vinternal/Vexternal/Voffset', $binary_data); + + if ($header['filename_len'] != 0){ + $header['filename'] = fread($zip,$header['filename_len']); + }else{ + $header['filename'] = ''; + } + + if ($header['extra_len'] != 0){ + $header['extra'] = fread($zip, $header['extra_len']); + }else{ + $header['extra'] = ''; + } + + if ($header['comment_len'] != 0){ + $header['comment'] = fread($zip, $header['comment_len']); + }else{ + $header['comment'] = ''; + } + + if ($header['mdate'] && $header['mtime']) { + $hour = ($header['mtime'] & 0xF800) >> 11; + $minute = ($header['mtime'] & 0x07E0) >> 5; + $seconde = ($header['mtime'] & 0x001F)*2; + $year = (($header['mdate'] & 0xFE00) >> 9) + 1980; + $month = ($header['mdate'] & 0x01E0) >> 5; + $day = $header['mdate'] & 0x001F; + $header['mtime'] = mktime($hour, $minute, $seconde, $month, $day, $year); + } else { + $header['mtime'] = time(); + } + + $header['stored_filename'] = $header['filename']; + $header['status'] = 'ok'; + if (substr($header['filename'], -1) == '/') $header['external'] = 0x41FF0010; + + return $header; + } + + function ReadCentralDir($zip,$zip_name) { + $size = filesize($zip_name); + if ($size < 277){ + $maximum_size = $size; + } else { + $maximum_size=277; + } + + @fseek($zip, $size-$maximum_size); + $pos = ftell($zip); + $bytes = 0x00000000; + + while ($pos < $size) { + $byte = @fread($zip, 1); + $bytes=(($bytes << 8) & 0xFFFFFFFF) | Ord($byte); + if ($bytes == 0x504b0506){ + $pos++; + break; + } + $pos++; + } + + $data=unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', + fread($zip, 18)); + + if ($data['comment_size'] != 0){ + $centd['comment'] = fread($zip, $data['comment_size']); + } else { + $centd['comment'] = ''; + } + $centd['entries'] = $data['entries']; + $centd['disk_entries'] = $data['disk_entries']; + $centd['offset'] = $data['offset']; + $centd['disk_start'] = $data['disk_start']; + $centd['size'] = $data['size']; + $centd['disk'] = $data['disk']; + return $centd; + } + + function ExtractFile($header,$to,$zip) { + $header = $this->readfileheader($zip, $header); + + if(substr($to,-1)!="/") $to.="/"; + if(substr($header['filename'],-1)=="/") { + $this->_mkdir($to.$header['filename']); + return +2; + } + + if (!$this->_mkdir($to.dirname($header['filename']))) return (-1); + + if (!array_key_exists("external", $header) || (!($header['external']==0x41FF0010)&&!($header['external']==16))) { + if ($header['compression']==0) { + $fp = @fopen($to.$header['filename'], 'wb'); + if(!$fp) return(-1); + $size = $header['compressed_size']; + + while ($size != 0) { + $read_size = ($size < 2048 ? $size : 2048); + $buffer = fread($zip, $read_size); + $binary_data = pack('a'.$read_size, $buffer); + @fwrite($fp, $binary_data, $read_size); + $size -= $read_size; + } + fclose($fp); + touch($to.$header['filename'], $header['mtime']); + + }else{ + if (!is_dir(dirname($to.$header['filename']))) $this->_mkdir(dirname($to.$header['filename'])); + $fp = fopen($to.$header['filename'].'.gz','wb'); + if(!$fp) return(-1); + $binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($header['compression']), + Chr(0x00), time(), Chr(0x00), Chr(3)); + + fwrite($fp, $binary_data, 10); + $size = $header['compressed_size']; + + while ($size != 0) { + $read_size = ($size < 1024 ? $size : 1024); + $buffer = fread($zip, $read_size); + $binary_data = pack('a'.$read_size, $buffer); + @fwrite($fp, $binary_data, $read_size); + $size -= $read_size; + } + + $binary_data = pack('VV', $header['crc'], $header['size']); + fwrite($fp, $binary_data,8); + fclose($fp); + + $gzp = @gzopen($to.$header['filename'].'.gz','rb'); + if(!$gzp){ + @gzclose($gzp); + @unlink($to.$header['filename']); + die("Archive is compressed whereas ZLIB is not enabled."); + } + $fp = @fopen($to.$header['filename'],'wb'); + if(!$fp) return(-1); + $size = $header['size']; + + while ($size != 0) { + $read_size = ($size < 2048 ? $size : 2048); + $buffer = gzread($gzp, $read_size); + $binary_data = pack('a'.$read_size, $buffer); + @fwrite($fp, $binary_data, $read_size); + $size -= $read_size; + } + fclose($fp); + gzclose($gzp); + + touch($to.$header['filename'], $header['mtime']); + @unlink($to.$header['filename'].'.gz'); + } + } + return true; + } + + /** + * centralize mkdir calls and use dokuwiki io functions + * + * @author Christopher Smith <chris@jalakai.co.uk> + */ + function _mkdir($d) { + return io_mkdir_p($d); + } + + + function ExtractStr($zn, $name) { + $ok = 0; + $zip = @fopen($zn,'rb'); + if(!$zip) return(null); + $cdir = $this->ReadCentralDir($zip,$zn); + $pos_entry = $cdir['offset']; + + for ($i=0; $i<$cdir['entries']; $i++) { + @fseek($zip, $pos_entry); + $header = $this->ReadCentralFileHeaders($zip); + $header['index'] = $i; + $pos_entry = ftell($zip); + @rewind($zip); + fseek($zip, $header['offset']); + if ($name == $header['stored_filename'] || $name == $header['filename']) { + $str = $this->ExtractStrFile($header, $zip); + fclose($zip); + return $str; + } + + } + fclose($zip); + return null; } - $header['stored_filename'] = $header['filename']; - $header['status'] = 'ok'; - if (substr($header['filename'], -1) == '/') - $header['external'] = 0x41FF0010; - return $header; - } - - function ReadCentralDir($zip,$zip_name) - { - $size = filesize($zip_name); - if ($size < 277) $maximum_size = $size; - else $maximum_size=277; - - @fseek($zip, $size-$maximum_size); - $pos = ftell($zip); $bytes = 0x00000000; - - while ($pos < $size) - { - $byte = @fread($zip, 1); - $bytes=(($bytes << 8) & 0xFFFFFFFF) | Ord($byte); - if ($bytes == 0x504b0506){ $pos++; break; } $pos++; - } - - $data=unpack('vdisk/vdisk_start/vdisk_entries/ventries/Vsize/Voffset/vcomment_size', - fread($zip, 18)); - - if ($data['comment_size'] != 0) - $centd['comment'] = fread($zip, $data['comment_size']); - else $centd['comment'] = ''; $centd['entries'] = $data['entries']; - $centd['disk_entries'] = $data['disk_entries']; - $centd['offset'] = $data['offset'];$centd['disk_start'] = $data['disk_start']; - $centd['size'] = $data['size']; $centd['disk'] = $data['disk']; - return $centd; - } - - function ExtractFile($header,$to,$zip) - { - $header = $this->readfileheader($zip, $header); - - if(substr($to,-1)!="/") $to.="/"; - if(substr($header['filename'],-1)=="/") - { -// @mkdir($to.$header['filename']); --CS - $this->_mkdir($to.$header['filename']); //-- CS - return +2; - } - -// $pth = explode("/",dirname($header['filename'])); -// for($i=0,$tmp="";isset($pth[$i]);$i++){ -// if(!$pth[$i]) continue; -// if(!is_dir($to.$tmp.$pth[$i])) @mkdir($to.$pth[$i],0777); -// $tmp.=$pth[$i]."/"; -// } - if (!$this->_mkdir($to.dirname($header['filename']))) return (-1); //--CS - - if (!array_key_exists("external", $header) || (!($header['external']==0x41FF0010)&&!($header['external']==16))) - { - if ($header['compression']==0) - { - $fp = @fopen($to.$header['filename'], 'wb'); - if(!$fp) return(-1); - $size = $header['compressed_size']; - - while ($size != 0) - { - $read_size = ($size < 2048 ? $size : 2048); - $buffer = fread($zip, $read_size); - $binary_data = pack('a'.$read_size, $buffer); - @fwrite($fp, $binary_data, $read_size); - $size -= $read_size; + + function ExtractStrFile($header,$zip) { + $hdr = $this->readfileheader($zip); + $binary_data = ''; + if (!($header['external']==0x41FF0010) && !($header['external']==16)) { + if ($header['compression']==0) { + while ($size != 0) { + $read_size = ($size < 2048 ? $size : 2048); + $buffer = fread($zip, $read_size); + $binary_data .= pack('a'.$read_size, $buffer); + $size -= $read_size; + } + return $binary_data; + } else { + $size = $header['compressed_size']; + if ($size == 0) { + return ''; + } + //Just in case + if ($size > ($this->_ret_bytes(ini_get('memory_limit'))/2)) { + die("Compressed file is to huge to be uncompress in memory."); + } + while ($size != 0) + { + $read_size = ($size < 2048 ? $size : 2048); + $buffer = fread($zip, $read_size); + $binary_data .= pack('a'.$read_size, $buffer); + $size -= $read_size; + } + $str = gzinflate($binary_data, $header['size']); + if ($header['crc'] == crc32($str)) { + return $str; + } else { + die("Crc Error"); + } + } + } + return null; } - fclose($fp); - touch($to.$header['filename'], $header['mtime']); - - }else{ - if (!is_dir(dirname($to.$header['filename']))) $this->_mkdir(dirname($to.$header['filename'])); //-CS - $fp = fopen($to.$header['filename'].'.gz','wb'); - if(!$fp) return(-1); - $binary_data = pack('va1a1Va1a1', 0x8b1f, Chr($header['compression']), - Chr(0x00), time(), Chr(0x00), Chr(3)); - - fwrite($fp, $binary_data, 10); - $size = $header['compressed_size']; - - while ($size != 0) - { - $read_size = ($size < 1024 ? $size : 1024); - $buffer = fread($zip, $read_size); - $binary_data = pack('a'.$read_size, $buffer); - @fwrite($fp, $binary_data, $read_size); - $size -= $read_size; - } - - $binary_data = pack('VV', $header['crc'], $header['size']); - fwrite($fp, $binary_data,8); fclose($fp); - - $gzp = @gzopen($to.$header['filename'].'.gz','rb'); - if(!$gzp){ - @gzclose($gzp); @unlink($to.$header['filename']); - die("Archive is compressed whereas ZLIB is not enabled."); + + function _ret_bytes($val) { + $val = trim($val); + $last = $val{strlen($val)-1}; + switch($last) { + case 'k': + case 'K': + return (int) $val * 1024; + break; + case 'm': + case 'M': + return (int) $val * 1048576; + break; + default: + return $val; + } } - $fp = @fopen($to.$header['filename'],'wb'); - if(!$fp) return(-1); - $size = $header['size']; - - while ($size != 0) - { - $read_size = ($size < 2048 ? $size : 2048); - $buffer = gzread($gzp, $read_size); - $binary_data = pack('a'.$read_size, $buffer); - @fwrite($fp, $binary_data, $read_size); - $size -= $read_size; - } - fclose($fp); gzclose($gzp); - - touch($to.$header['filename'], $header['mtime']); - @unlink($to.$header['filename'].'.gz'); - - }} - return true; - } - - //--CS start - // centralize mkdir calls and use dokuwiki io functions - function _mkdir($d) { - return io_mkdir_p($d); - } - //--CS end - - - function ExtractStr($zn, $name) { - $ok = 0; - $zip = @fopen($zn,'rb'); - if(!$zip) return(NULL); - $cdir = $this->ReadCentralDir($zip,$zn); - $pos_entry = $cdir['offset']; - - for ($i=0; $i<$cdir['entries']; $i++) - { - @fseek($zip, $pos_entry); - $header = $this->ReadCentralFileHeaders($zip); - $header['index'] = $i; - $pos_entry = ftell($zip); - @rewind($zip); - fseek($zip, $header['offset']); - if ($name == $header['stored_filename'] || $name == $header['filename']) { - $str = $this->ExtractStrFile($header, $zip); - fclose($zip); - return $str; - } - - } - fclose($zip); - return null; - } - - function ExtractStrFile($header,$zip) { - $hdr = $this->readfileheader($zip); - $binary_data = ''; - if (!($header['external']==0x41FF0010) && !($header['external']==16)) - { - if ($header['compression']==0) - { - while ($size != 0) - { - $read_size = ($size < 2048 ? $size : 2048); - $buffer = fread($zip, $read_size); - $binary_data .= pack('a'.$read_size, $buffer); - $size -= $read_size; - } - return $binary_data; - } else { - $size = $header['compressed_size']; - if ($size == 0) { - return ''; - } - //Just in case - if ($size > ($this->_ret_bytes(ini_get('memory_limit'))/2)) { - die("Compressed file is to huge to be uncompress in memory."); - } - while ($size != 0) - { - $read_size = ($size < 2048 ? $size : 2048); - $buffer = fread($zip, $read_size); - $binary_data .= pack('a'.$read_size, $buffer); - $size -= $read_size; - } - $str = gzinflate($binary_data, $header['size']); - if ($header['crc'] == crc32($str)) { - return $str; - } else { - die("Crc Error"); - } - } - } - return NULL; - } - - function _ret_bytes($val) { - $val = trim($val); - $last = $val{strlen($val)-1}; - switch($last) { - case 'k': - case 'K': - return (int) $val * 1024; - break; - case 'm': - case 'M': - return (int) $val * 1048576; - break; - default: - return $val; - } - } } diff --git a/inc/actions.php b/inc/actions.php index 27292e6f6..3e0cb1207 100644 --- a/inc/actions.php +++ b/inc/actions.php @@ -7,8 +7,6 @@ */ if(!defined('DOKU_INC')) die('meh.'); -require_once(DOKU_INC.'inc/template.php'); - /** * Call the needed action handlers @@ -18,149 +16,150 @@ require_once(DOKU_INC.'inc/template.php'); * @triggers ACTION_HEADERS_SEND */ function act_dispatch(){ - global $INFO; - global $ACT; - global $ID; - global $QUERY; - global $lang; - global $conf; - global $license; - - $preact = $ACT; - - // give plugins an opportunity to process the action - $evt = new Doku_Event('ACTION_ACT_PREPROCESS',$ACT); - if ($evt->advise_before()) { - - //sanitize $ACT - $ACT = act_clean($ACT); - - //check if searchword was given - else just show - $s = cleanID($QUERY); - if($ACT == 'search' && empty($s)){ - $ACT = 'show'; - } + global $INFO; + global $ACT; + global $ID; + global $QUERY; + global $lang; + global $conf; + global $license; - //login stuff - if(in_array($ACT,array('login','logout'))){ - $ACT = act_auth($ACT); - } + $preact = $ACT; - //check if user is asking to (un)subscribe a page - if($ACT == 'subscribe' || $ACT == 'unsubscribe') - $ACT = act_subscription($ACT); + // give plugins an opportunity to process the action + $evt = new Doku_Event('ACTION_ACT_PREPROCESS',$ACT); + if ($evt->advise_before()) { - //check if user is asking to (un)subscribe a namespace - if($ACT == 'subscribens' || $ACT == 'unsubscribens') - $ACT = act_subscriptionns($ACT); + //sanitize $ACT + $ACT = act_clean($ACT); - //check permissions - $ACT = act_permcheck($ACT); + //check if searchword was given - else just show + $s = cleanID($QUERY); + if($ACT == 'search' && empty($s)){ + $ACT = 'show'; + } - //register - $nil = array(); - if($ACT == 'register' && $_POST['save'] && register()){ - $ACT = 'login'; - } + //login stuff + if(in_array($ACT,array('login','logout'))){ + $ACT = act_auth($ACT); + } - if ($ACT == 'resendpwd' && act_resendpwd()) { - $ACT = 'login'; - } + //check if user is asking to (un)subscribe a page + if($ACT == 'subscribe') { + try { + $ACT = act_subscription($ACT); + } catch (Exception $e) { + msg($e->getMessage(), -1); + } + } - //update user profile - if ($ACT == 'profile') { - if(!$_SERVER['REMOTE_USER']) { - $ACT = 'login'; - } else { - if(updateprofile()) { - msg($lang['profchanged'],1); - $ACT = 'show'; + //check permissions + $ACT = act_permcheck($ACT); + + //register + $nil = array(); + if($ACT == 'register' && $_POST['save'] && register()){ + $ACT = 'login'; } - } - } - //revert - if($ACT == 'revert'){ - if(checkSecurityToken()){ - $ACT = act_revert($ACT); - }else{ - $ACT = 'show'; - } - } + if ($ACT == 'resendpwd' && act_resendpwd()) { + $ACT = 'login'; + } - //save - if($ACT == 'save'){ - if(checkSecurityToken()){ - $ACT = act_save($ACT); - }else{ - $ACT = 'show'; - } - } + //update user profile + if ($ACT == 'profile') { + if(!$_SERVER['REMOTE_USER']) { + $ACT = 'login'; + } else { + if(updateprofile()) { + msg($lang['profchanged'],1); + $ACT = 'show'; + } + } + } - //cancel conflicting edit - if($ACT == 'cancel') - $ACT = 'show'; + //revert + if($ACT == 'revert'){ + if(checkSecurityToken()){ + $ACT = act_revert($ACT); + }else{ + $ACT = 'show'; + } + } - //draft deletion - if($ACT == 'draftdel') - $ACT = act_draftdel($ACT); + //save + if($ACT == 'save'){ + if(checkSecurityToken()){ + $ACT = act_save($ACT); + }else{ + $ACT = 'show'; + } + } - //draft saving on preview - if($ACT == 'preview') - $ACT = act_draftsave($ACT); + //cancel conflicting edit + if($ACT == 'cancel') + $ACT = 'show'; - //edit - if(($ACT == 'edit' || $ACT == 'preview') && $INFO['editable']){ - $ACT = act_edit($ACT); - }else{ - unlock($ID); //try to unlock - } + //draft deletion + if($ACT == 'draftdel') + $ACT = act_draftdel($ACT); - //handle export - if(substr($ACT,0,7) == 'export_') - $ACT = act_export($ACT); + //draft saving on preview + if($ACT == 'preview') + $ACT = act_draftsave($ACT); - //display some infos - if($ACT == 'check'){ - check(); - $ACT = 'show'; - } + //edit + if(in_array($ACT, array('edit', 'preview', 'recover'))) { + $ACT = act_edit($ACT); + }else{ + unlock($ID); //try to unlock + } - //handle admin tasks - if($ACT == 'admin'){ - // retrieve admin plugin name from $_REQUEST['page'] - if (!empty($_REQUEST['page'])) { - $pluginlist = plugin_list('admin'); - if (in_array($_REQUEST['page'], $pluginlist)) { - // attempt to load the plugin - if ($plugin =& plugin_load('admin',$_REQUEST['page']) !== NULL) - $plugin->handle(); - } - } - } + //handle export + if(substr($ACT,0,7) == 'export_') + $ACT = act_export($ACT); + + //display some infos + if($ACT == 'check'){ + check(); + $ACT = 'show'; + } + + //handle admin tasks + if($ACT == 'admin'){ + // retrieve admin plugin name from $_REQUEST['page'] + if (!empty($_REQUEST['page'])) { + $pluginlist = plugin_list('admin'); + if (in_array($_REQUEST['page'], $pluginlist)) { + // attempt to load the plugin + if ($plugin =& plugin_load('admin',$_REQUEST['page']) !== null) + $plugin->handle(); + } + } + } - // check permissions again - the action may have changed - $ACT = act_permcheck($ACT); - } // end event ACTION_ACT_PREPROCESS default action - $evt->advise_after(); - unset($evt); + // check permissions again - the action may have changed + $ACT = act_permcheck($ACT); + } // end event ACTION_ACT_PREPROCESS default action + $evt->advise_after(); + unset($evt); - // when action 'show', the intial not 'show' and POST, do a redirect - if($ACT == 'show' && $preact != 'show' && strtolower($_SERVER['REQUEST_METHOD']) == 'post'){ - act_redirect($ID,$preact); - } + // when action 'show', the intial not 'show' and POST, do a redirect + if($ACT == 'show' && $preact != 'show' && strtolower($_SERVER['REQUEST_METHOD']) == 'post'){ + act_redirect($ID,$preact); + } - //call template FIXME: all needed vars available? - $headers[] = 'Content-Type: text/html; charset=utf-8'; - trigger_event('ACTION_HEADERS_SEND',$headers,'act_sendheaders'); + //call template FIXME: all needed vars available? + $headers[] = 'Content-Type: text/html; charset=utf-8'; + trigger_event('ACTION_HEADERS_SEND',$headers,'act_sendheaders'); - include(template('main.php')); - // output for the commands is now handled in inc/templates.php - // in function tpl_content() + include(template('main.php')); + // output for the commands is now handled in inc/templates.php + // in function tpl_content() } function act_sendheaders($headers) { - foreach ($headers as $hdr) header($hdr); + foreach ($headers as $hdr) header($hdr); } /** @@ -171,44 +170,46 @@ function act_sendheaders($headers) { * @author Andreas Gohr <andi@splitbrain.org> */ function act_clean($act){ - global $lang; - global $conf; + global $lang; + global $conf; - // check if the action was given as array key - if(is_array($act)){ - list($act) = array_keys($act); - } + // check if the action was given as array key + if(is_array($act)){ + list($act) = array_keys($act); + } - //remove all bad chars - $act = strtolower($act); - $act = preg_replace('/[^1-9a-z_]+/','',$act); + //remove all bad chars + $act = strtolower($act); + $act = preg_replace('/[^1-9a-z_]+/','',$act); - if($act == 'export_html') $act = 'export_xhtml'; - if($act == 'export_htmlbody') $act = 'export_xhtmlbody'; + if($act == 'export_html') $act = 'export_xhtml'; + if($act == 'export_htmlbody') $act = 'export_xhtmlbody'; - // check if action is disabled - if(!actionOK($act)){ - msg('Command disabled: '.htmlspecialchars($act),-1); - return 'show'; - } + if($act === '') $act = 'show'; - //disable all acl related commands if ACL is disabled - if(!$conf['useacl'] && in_array($act,array('login','logout','register','admin', - 'subscribe','unsubscribe','profile','revert', - 'resendpwd','subscribens','unsubscribens',))){ - msg('Command unavailable: '.htmlspecialchars($act),-1); - return 'show'; - } - - if(!in_array($act,array('login','logout','register','save','cancel','edit','draft', - 'preview','search','show','check','index','revisions', - 'diff','recent','backlink','admin','subscribe','revert', - 'unsubscribe','profile','resendpwd','recover','wordblock', - 'draftdel','subscribens','unsubscribens',)) && substr($act,0,7) != 'export_' ) { - msg('Command unknown: '.htmlspecialchars($act),-1); - return 'show'; - } - return $act; + // check if action is disabled + if(!actionOK($act)){ + msg('Command disabled: '.htmlspecialchars($act),-1); + return 'show'; + } + + //disable all acl related commands if ACL is disabled + if(!$conf['useacl'] && in_array($act,array('login','logout','register','admin', + 'subscribe','unsubscribe','profile','revert', + 'resendpwd','subscribens','unsubscribens',))){ + msg('Command unavailable: '.htmlspecialchars($act),-1); + return 'show'; + } + + if(!in_array($act,array('login','logout','register','save','cancel','edit','draft', + 'preview','search','show','check','index','revisions', + 'diff','recent','backlink','admin','subscribe','revert', + 'unsubscribe','profile','resendpwd','recover', + 'draftdel','subscribens','unsubscribens',)) && substr($act,0,7) != 'export_' ) { + msg('Command unknown: '.htmlspecialchars($act),-1); + return 'show'; + } + return $act; } /** @@ -217,44 +218,44 @@ function act_clean($act){ * @author Andreas Gohr <andi@splitbrain.org> */ function act_permcheck($act){ - global $INFO; - global $conf; - - if(in_array($act,array('save','preview','edit','recover'))){ - if($INFO['exists']){ - if($act == 'edit'){ - //the edit function will check again and do a source show - //when no AUTH_EDIT available - $permneed = AUTH_READ; - }else{ - $permneed = AUTH_EDIT; - } - }else{ - $permneed = AUTH_CREATE; - } - }elseif(in_array($act,array('login','search','recent','profile'))){ - $permneed = AUTH_NONE; - }elseif($act == 'revert'){ - $permneed = AUTH_ADMIN; - if($INFO['ismanager']) $permneed = AUTH_EDIT; - }elseif($act == 'register'){ - $permneed = AUTH_NONE; - }elseif($act == 'resendpwd'){ - $permneed = AUTH_NONE; - }elseif($act == 'admin'){ - if($INFO['ismanager']){ - // if the manager has the needed permissions for a certain admin - // action is checked later - $permneed = AUTH_READ; + global $INFO; + global $conf; + + if(in_array($act,array('save','preview','edit','recover'))){ + if($INFO['exists']){ + if($act == 'edit'){ + //the edit function will check again and do a source show + //when no AUTH_EDIT available + $permneed = AUTH_READ; + }else{ + $permneed = AUTH_EDIT; + } + }else{ + $permneed = AUTH_CREATE; + } + }elseif(in_array($act,array('login','search','recent','profile','index'))){ + $permneed = AUTH_NONE; + }elseif($act == 'revert'){ + $permneed = AUTH_ADMIN; + if($INFO['ismanager']) $permneed = AUTH_EDIT; + }elseif($act == 'register'){ + $permneed = AUTH_NONE; + }elseif($act == 'resendpwd'){ + $permneed = AUTH_NONE; + }elseif($act == 'admin'){ + if($INFO['ismanager']){ + // if the manager has the needed permissions for a certain admin + // action is checked later + $permneed = AUTH_READ; + }else{ + $permneed = AUTH_ADMIN; + } }else{ - $permneed = AUTH_ADMIN; + $permneed = AUTH_READ; } - }else{ - $permneed = AUTH_READ; - } - if($INFO['perm'] >= $permneed) return $act; + if($INFO['perm'] >= $permneed) return $act; - return 'denied'; + return 'denied'; } /** @@ -263,10 +264,10 @@ function act_permcheck($act){ * Deletes the draft for the current page and user */ function act_draftdel($act){ - global $INFO; - @unlink($INFO['draft']); - $INFO['draft'] = null; - return 'show'; + global $INFO; + @unlink($INFO['draft']); + $INFO['draft'] = null; + return 'show'; } /** @@ -275,23 +276,23 @@ function act_draftdel($act){ * @todo this currently duplicates code from ajax.php :-/ */ function act_draftsave($act){ - global $INFO; - global $ID; - global $conf; - if($conf['usedraft'] && $_POST['wikitext']){ - $draft = array('id' => $ID, - 'prefix' => $_POST['prefix'], - 'text' => $_POST['wikitext'], - 'suffix' => $_POST['suffix'], - 'date' => $_POST['date'], - 'client' => $INFO['client'], - ); - $cname = getCacheName($draft['client'].$ID,'.draft'); - if(io_saveFile($cname,serialize($draft))){ - $INFO['draft'] = $cname; + global $INFO; + global $ID; + global $conf; + if($conf['usedraft'] && $_POST['wikitext']){ + $draft = array('id' => $ID, + 'prefix' => $_POST['prefix'], + 'text' => $_POST['wikitext'], + 'suffix' => $_POST['suffix'], + 'date' => $_POST['date'], + 'client' => $INFO['client'], + ); + $cname = getCacheName($draft['client'].$ID,'.draft'); + if(io_saveFile($cname,serialize($draft))){ + $INFO['draft'] = $cname; + } } - } - return $act; + return $act; } /** @@ -304,31 +305,35 @@ function act_draftsave($act){ * @author Andreas Gohr <andi@splitbrain.org> */ function act_save($act){ - global $ID; - global $DATE; - global $PRE; - global $TEXT; - global $SUF; - global $SUM; - - //spam check - if(checkwordblock()) - return 'wordblock'; - //conflict check //FIXME use INFO - if($DATE != 0 && @filemtime(wikiFN($ID)) > $DATE ) - return 'conflict'; - - //save it - saveWikiText($ID,con($PRE,$TEXT,$SUF,1),$SUM,$_REQUEST['minor']); //use pretty mode for con - //unlock it - unlock($ID); - - //delete draft - act_draftdel($act); - session_write_close(); - - // when done, show page - return 'show'; + global $ID; + global $DATE; + global $PRE; + global $TEXT; + global $SUF; + global $SUM; + global $lang; + global $INFO; + + //spam check + if(checkwordblock()) { + msg($lang['wordblock'], -1); + return 'edit'; + } + //conflict check + if($DATE != 0 && $INFO['meta']['date']['modified'] > $DATE ) + return 'conflict'; + + //save it + saveWikiText($ID,con($PRE,$TEXT,$SUF,1),$SUM,$_REQUEST['minor']); //use pretty mode for con + //unlock it + unlock($ID); + + //delete draft + act_draftdel($act); + session_write_close(); + + // when done, show page + return 'show'; } /** @@ -340,6 +345,11 @@ function act_revert($act){ global $ID; global $REV; global $lang; + // FIXME $INFO['writable'] currently refers to the attic version + // global $INFO; + // if (!$INFO['writable']) { + // return 'show'; + // } // when no revision is given, delete current one // FIXME this feature is not exposed in the GUI currently @@ -352,8 +362,11 @@ function act_revert($act){ } // spam check - if(checkwordblock($Text)) - return 'wordblock'; + + if (checkwordblock($text)) { + msg($lang['wordblock'], -1); + return 'edit'; + } saveWikiText($ID,$text,$sum,false); msg($sum,1); @@ -374,38 +387,28 @@ function act_revert($act){ * Tries to add the section id as hash mark after section editing */ function act_redirect($id,$preact){ - global $PRE; - global $TEXT; - global $MSG; - - //are there any undisplayed messages? keep them in session for display - //on the next page - if(isset($MSG) && count($MSG)){ - //reopen session, store data and close session again - @session_start(); - $_SESSION[DOKU_COOKIE]['msg'] = $MSG; - session_write_close(); - } - - $opts = array( - 'id' => $id, - 'preact' => $preact - ); - //get section name when coming from section edit - if($PRE && preg_match('/^\s*==+([^=\n]+)/',$TEXT,$match)){ - $check = false; //Byref - $opts['fragment'] = sectionID($match[0], $check); - } - - trigger_event('ACTION_SHOW_REDIRECT',$opts,'act_redirect_execute'); + global $PRE; + global $TEXT; + + $opts = array( + 'id' => $id, + 'preact' => $preact + ); + //get section name when coming from section edit + if($PRE && preg_match('/^\s*==+([^=\n]+)/',$TEXT,$match)){ + $check = false; //Byref + $opts['fragment'] = sectionID($match[0], $check); + } + + trigger_event('ACTION_SHOW_REDIRECT',$opts,'act_redirect_execute'); } function act_redirect_execute($opts){ - $go = wl($opts['id'],'',true); - if(isset($opts['fragment'])) $go .= '#'.$opts['fragment']; + $go = wl($opts['id'],'',true); + if(isset($opts['fragment'])) $go .= '#'.$opts['fragment']; - //show it - send_redirect($go); + //show it + send_redirect($go); } /** @@ -414,47 +417,81 @@ function act_redirect_execute($opts){ * @author Andreas Gohr <andi@splitbrain.org> */ function act_auth($act){ - global $ID; - global $INFO; + global $ID; + global $INFO; - //already logged in? - if(isset($_SERVER['REMOTE_USER']) && $act=='login'){ - return 'show'; - } + //already logged in? + if(isset($_SERVER['REMOTE_USER']) && $act=='login'){ + return 'show'; + } - //handle logout - if($act=='logout'){ - $lockedby = checklock($ID); //page still locked? - if($lockedby == $_SERVER['REMOTE_USER']) - unlock($ID); //try to unlock + //handle logout + if($act=='logout'){ + $lockedby = checklock($ID); //page still locked? + if($lockedby == $_SERVER['REMOTE_USER']) + unlock($ID); //try to unlock - // do the logout stuff - auth_logoff(); + // do the logout stuff + auth_logoff(); - // rebuild info array - $INFO = pageinfo(); + // rebuild info array + $INFO = pageinfo(); - act_redirect($ID,'login'); - } + act_redirect($ID,'login'); + } - return $act; + return $act; } /** - * Handle 'edit', 'preview' + * Handle 'edit', 'preview', 'recover' * * @author Andreas Gohr <andi@splitbrain.org> */ function act_edit($act){ - global $ID; - global $INFO; + global $ID; + global $INFO; - //check if locked by anyone - if not lock for my self - $lockedby = checklock($ID); - if($lockedby) return 'locked'; + global $TEXT; + global $RANGE; + global $PRE; + global $SUF; + global $REV; + global $SUM; + global $lang; + global $DATE; + + if (!isset($TEXT)) { + if ($INFO['exists']) { + if ($RANGE) { + list($PRE,$TEXT,$SUF) = rawWikiSlices($RANGE,$ID,$REV); + } else { + $TEXT = rawWiki($ID,$REV); + } + } else { + $TEXT = pageTemplate($ID); + } + } - lock($ID); - return $act; + //set summary default + if(!$SUM){ + if($REV){ + $SUM = $lang['restored']; + }elseif(!$INFO['exists']){ + $SUM = $lang['created']; + } + } + + // Use the date of the newest revision, not of the revision we edit + // This is used for conflict detection + if(!$DATE) $DATE = $INFO['meta']['date']['modified']; + + //check if locked by anyone - if not lock for my self + $lockedby = checklock($ID); + if($lockedby) return 'locked'; + + lock($ID); + return $act; } /** @@ -472,159 +509,182 @@ function act_edit($act){ * @author Michael Klier <chi@chimeric.de> */ function act_export($act){ - global $ID; - global $REV; - global $conf; - global $lang; - - $pre = ''; - $post = ''; - $output = ''; - $headers = array(); - - // search engines: never cache exported docs! (Google only currently) - $headers['X-Robots-Tag'] = 'noindex'; - - $mode = substr($act,7); - switch($mode) { - case 'raw': - $headers['Content-Type'] = 'text/plain; charset=utf-8'; - $headers['Content-Disposition'] = 'attachment; filename='.noNS($ID).'.txt'; - $output = rawWiki($ID,$REV); - break; - case 'xhtml': - $pre .= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"' . DOKU_LF; - $pre .= ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' . DOKU_LF; - $pre .= '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="'.$conf['lang'].'"' . DOKU_LF; - $pre .= ' lang="'.$conf['lang'].'" dir="'.$lang['direction'].'">' . DOKU_LF; - $pre .= '<head>' . DOKU_LF; - $pre .= ' <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />' . DOKU_LF; - $pre .= ' <title>'.$ID.'</title>' . DOKU_LF; - - // get metaheaders - ob_start(); - tpl_metaheaders(); - $pre .= ob_get_clean(); - - $pre .= '</head>' . DOKU_LF; - $pre .= '<body>' . DOKU_LF; - $pre .= '<div class="dokuwiki export">' . DOKU_LF; - - // get toc - $pre .= tpl_toc(true); - - $headers['Content-Type'] = 'text/html; charset=utf-8'; - $output = p_wiki_xhtml($ID,$REV,false); - - $post .= '</div>' . DOKU_LF; - $post .= '</body>' . DOKU_LF; - $post .= '</html>' . DOKU_LF; - break; - case 'xhtmlbody': - $headers['Content-Type'] = 'text/html; charset=utf-8'; - $output = p_wiki_xhtml($ID,$REV,false); - break; - default: - $output = p_cached_output(wikiFN($ID,$REV), $mode); - $headers = p_get_metadata($ID,"format $mode"); - break; - } - - // prepare event data - $data = array(); - $data['id'] = $ID; - $data['mode'] = $mode; - $data['headers'] = $headers; - $data['output'] =& $output; - - trigger_event('ACTION_EXPORT_POSTPROCESS', $data); - - if(!empty($data['output'])){ - if(is_array($data['headers'])) foreach($data['headers'] as $key => $val){ - header("$key: $val"); + global $ID; + global $REV; + global $conf; + global $lang; + + $pre = ''; + $post = ''; + $output = ''; + $headers = array(); + + // search engines: never cache exported docs! (Google only currently) + $headers['X-Robots-Tag'] = 'noindex'; + + $mode = substr($act,7); + switch($mode) { + case 'raw': + $headers['Content-Type'] = 'text/plain; charset=utf-8'; + $headers['Content-Disposition'] = 'attachment; filename='.noNS($ID).'.txt'; + $output = rawWiki($ID,$REV); + break; + case 'xhtml': + $pre .= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"' . DOKU_LF; + $pre .= ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">' . DOKU_LF; + $pre .= '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="'.$conf['lang'].'"' . DOKU_LF; + $pre .= ' lang="'.$conf['lang'].'" dir="'.$lang['direction'].'">' . DOKU_LF; + $pre .= '<head>' . DOKU_LF; + $pre .= ' <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />' . DOKU_LF; + $pre .= ' <title>'.$ID.'</title>' . DOKU_LF; + + // get metaheaders + ob_start(); + tpl_metaheaders(); + $pre .= ob_get_clean(); + + $pre .= '</head>' . DOKU_LF; + $pre .= '<body>' . DOKU_LF; + $pre .= '<div class="dokuwiki export">' . DOKU_LF; + + // get toc + $pre .= tpl_toc(true); + + $headers['Content-Type'] = 'text/html; charset=utf-8'; + $output = p_wiki_xhtml($ID,$REV,false); + + $post .= '</div>' . DOKU_LF; + $post .= '</body>' . DOKU_LF; + $post .= '</html>' . DOKU_LF; + break; + case 'xhtmlbody': + $headers['Content-Type'] = 'text/html; charset=utf-8'; + $output = p_wiki_xhtml($ID,$REV,false); + break; + default: + $output = p_cached_output(wikiFN($ID,$REV), $mode); + $headers = p_get_metadata($ID,"format $mode"); + break; + } + + // prepare event data + $data = array(); + $data['id'] = $ID; + $data['mode'] = $mode; + $data['headers'] = $headers; + $data['output'] =& $output; + + trigger_event('ACTION_EXPORT_POSTPROCESS', $data); + + if(!empty($data['output'])){ + if(is_array($data['headers'])) foreach($data['headers'] as $key => $val){ + header("$key: $val"); + } + print $pre.$data['output'].$post; + exit; } - print $pre.$data['output'].$post; - exit; - } - return 'show'; + return 'show'; } /** - * Handle page 'subscribe', 'unsubscribe' + * Handle page 'subscribe' + * + * Throws exception on error. * - * @author Steven Danz <steven-danz@kc.rr.com> - * @todo localize + * @author Adrian Lang <lang@cosmocode.de> */ function act_subscription($act){ - global $ID; - global $INFO; - global $lang; - - $file=metaFN($ID,'.mlist'); - if ($act=='subscribe' && !$INFO['subscribed']){ - if ($INFO['userinfo']['mail']){ - if (io_saveFile($file,$_SERVER['REMOTE_USER']."\n",true)) { - $INFO['subscribed'] = true; - msg(sprintf($lang[$act.'_success'], $INFO['userinfo']['name'], $ID),1); - } else { - msg(sprintf($lang[$act.'_error'], $INFO['userinfo']['name'], $ID),1); - } - } else { - msg($lang['subscribe_noaddress']); + global $lang; + global $INFO; + global $ID; + + // subcriptions work for logged in users only + if(!$_SERVER['REMOTE_USER']) return 'show'; + + // get and preprocess data. + $params = array(); + foreach(array('target', 'style', 'action') as $param) { + if (isset($_REQUEST["sub_$param"])) { + $params[$param] = $_REQUEST["sub_$param"]; + } } - } elseif ($act=='unsubscribe' && $INFO['subscribed']){ - if (io_deleteFromFile($file,$_SERVER['REMOTE_USER']."\n")) { - $INFO['subscribed'] = false; - msg(sprintf($lang[$act.'_success'], $INFO['userinfo']['name'], $ID),1); - } else { - msg(sprintf($lang[$act.'_error'], $INFO['userinfo']['name'], $ID),1); + + // any action given? if not just return and show the subscription page + if(!$params['action'] || !checkSecurityToken()) return $act; + + // Handle POST data, may throw exception. + trigger_event('ACTION_HANDLE_SUBSCRIBE', $params, 'subscription_handle_post'); + + $target = $params['target']; + $style = $params['style']; + $data = $params['data']; + $action = $params['action']; + + // Perform action. + if (!subscription_set($_SERVER['REMOTE_USER'], $target, $style, $data)) { + throw new Exception(sprintf($lang["subscr_{$action}_error"], + hsc($INFO['userinfo']['name']), + prettyprint_id($target))); } - } + msg(sprintf($lang["subscr_{$action}_success"], hsc($INFO['userinfo']['name']), + prettyprint_id($target)), 1); + act_redirect($ID, $act); - return 'show'; + // Assure that we have valid data if act_redirect somehow fails. + $INFO['subscribed'] = get_info_subscribed(); + return 'show'; } /** - * Handle namespace 'subscribe', 'unsubscribe' + * Validate POST data + * + * Validates POST data for a subscribe or unsubscribe request. This is the + * default action for the event ACTION_HANDLE_SUBSCRIBE. * + * @author Adrian Lang <lang@cosmocode.de> */ -function act_subscriptionns($act){ - global $ID; - global $INFO; - global $lang; - - if(!getNS($ID)) { - $file = metaFN(getNS($ID),'.mlist'); - $ns = "root"; - } else { - $file = metaFN(getNS($ID),'/.mlist'); - $ns = getNS($ID); - } - - // reuse strings used to display the status of the subscribe action - $act_msg = rtrim($act, 'ns'); - - if ($act=='subscribens' && !$INFO['subscribedns']){ - if ($INFO['userinfo']['mail']){ - if (io_saveFile($file,$_SERVER['REMOTE_USER']."\n",true)) { - $INFO['subscribedns'] = true; - msg(sprintf($lang[$act_msg.'_success'], $INFO['userinfo']['name'], $ns),1); - } else { - msg(sprintf($lang[$act_msg.'_error'], $INFO['userinfo']['name'], $ns),1); - } - } else { - msg($lang['subscribe_noaddress']); +function subscription_handle_post(&$params) { + global $INFO; + global $lang; + + // Get and validate parameters. + if (!isset($params['target'])) { + throw new Exception('no subscription target given'); + } + $target = $params['target']; + $valid_styles = array('every', 'digest'); + if (substr($target, -1, 1) === ':') { + // Allow “list” subscribe style since the target is a namespace. + $valid_styles[] = 'list'; } - } elseif ($act=='unsubscribens' && $INFO['subscribedns']){ - if (io_deleteFromFile($file,$_SERVER['REMOTE_USER']."\n")) { - $INFO['subscribedns'] = false; - msg(sprintf($lang[$act_msg.'_success'], $INFO['userinfo']['name'], $ns),1); - } else { - msg(sprintf($lang[$act_msg.'_error'], $INFO['userinfo']['name'], $ns),1); + $style = valid_input_set('style', $valid_styles, $params, + 'invalid subscription style given'); + $action = valid_input_set('action', array('subscribe', 'unsubscribe'), + $params, 'invalid subscription action given'); + + // Check other conditions. + if ($action === 'subscribe') { + if ($INFO['userinfo']['mail'] === '') { + throw new Exception($lang['subscr_subscribe_noaddress']); + } + } elseif ($action === 'unsubscribe') { + $is = false; + foreach($INFO['subscribed'] as $subscr) { + if ($subscr['target'] === $target) { + $is = true; + } + } + if ($is === false) { + throw new Exception(sprintf($lang['subscr_not_subscribed'], + $_SERVER['REMOTE_USER'], + prettyprint_id($target))); + } + // subscription_set deletes a subscription if style = null. + $style = null; } - } - return 'show'; + $data = in_array($style, array('list', 'digest')) ? time() : null; + $params = compact('target', 'style', 'data', 'action'); } //Setup VIM: ex: et ts=2 enc=utf-8 : diff --git a/inc/auth.php b/inc/auth.php index 50c5f17ed..e1f689f96 100644 --- a/inc/auth.php +++ b/inc/auth.php @@ -10,8 +10,6 @@ */ if(!defined('DOKU_INC')) die('meh.'); -require_once(DOKU_INC.'inc/common.php'); -require_once(DOKU_INC.'inc/io.php'); // some ACL level defines define('AUTH_NONE',0); @@ -22,15 +20,27 @@ define('AUTH_UPLOAD',8); define('AUTH_DELETE',16); define('AUTH_ADMIN',255); -global $conf; - -if($conf['useacl']){ - require_once(DOKU_INC.'inc/blowfish.php'); - require_once(DOKU_INC.'inc/mail.php'); - +/** + * Initialize the auth system. + * + * This function is automatically called at the end of init.php + * + * This used to be the main() of the auth.php + * + * @todo backend loading maybe should be handled by the class autoloader + * @todo maybe split into multiple functions at the XXX marked positions + */ +function auth_setup(){ + global $conf; global $auth; + global $AUTH_ACL; + global $lang; + global $config_cascade; + $AUTH_ACL = array(); - // load the the backend auth functions and instantiate the auth object + if(!$conf['useacl']) return false; + + // load the the backend auth functions and instantiate the auth object XXX if (@file_exists(DOKU_INC.'inc/auth/'.$conf['authtype'].'.class.php')) { require_once(DOKU_INC.'inc/auth/basic.class.php'); require_once(DOKU_INC.'inc/auth/'.$conf['authtype'].'.class.php'); @@ -50,70 +60,65 @@ if($conf['useacl']){ } else { nice_die($lang['authmodfailed']); } -} -// do the login either by cookie or provided credentials -if($conf['useacl']){ - if($auth){ - if (!isset($_REQUEST['u'])) $_REQUEST['u'] = ''; - if (!isset($_REQUEST['p'])) $_REQUEST['p'] = ''; - if (!isset($_REQUEST['r'])) $_REQUEST['r'] = ''; - $_REQUEST['http_credentials'] = false; - if (!$conf['rememberme']) $_REQUEST['r'] = false; - - // streamline HTTP auth credentials (IIS/rewrite -> mod_php) - if(isset($_SERVER['HTTP_AUTHORIZATION'])){ - list($_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW']) = - explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6))); - } + if(!$auth) return; - // if no credentials were given try to use HTTP auth (for SSO) - if(empty($_REQUEST['u']) && empty($_COOKIE[DOKU_COOKIE]) && !empty($_SERVER['PHP_AUTH_USER'])){ - $_REQUEST['u'] = $_SERVER['PHP_AUTH_USER']; - $_REQUEST['p'] = $_SERVER['PHP_AUTH_PW']; - $_REQUEST['http_credentials'] = true; - } + // do the login either by cookie or provided credentials XXX + if (!isset($_REQUEST['u'])) $_REQUEST['u'] = ''; + if (!isset($_REQUEST['p'])) $_REQUEST['p'] = ''; + if (!isset($_REQUEST['r'])) $_REQUEST['r'] = ''; + $_REQUEST['http_credentials'] = false; + if (!$conf['rememberme']) $_REQUEST['r'] = false; - // apply cleaning - $_REQUEST['u'] = $auth->cleanUser($_REQUEST['u']); + // streamline HTTP auth credentials (IIS/rewrite -> mod_php) + if(isset($_SERVER['HTTP_AUTHORIZATION'])){ + list($_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW']) = + explode(':', base64_decode(substr($_SERVER['HTTP_AUTHORIZATION'], 6))); + } - if(isset($_REQUEST['authtok'])){ - // when an authentication token is given, trust the session - auth_validateToken($_REQUEST['authtok']); - }elseif(!is_null($auth) && $auth->canDo('external')){ - // external trust mechanism in place - $auth->trustExternal($_REQUEST['u'],$_REQUEST['p'],$_REQUEST['r']); - }else{ - $evdata = array( - 'user' => $_REQUEST['u'], - 'password' => $_REQUEST['p'], - 'sticky' => $_REQUEST['r'], - 'silent' => $_REQUEST['http_credentials'], - ); - $evt = new Doku_Event('AUTH_LOGIN_CHECK',$evdata); - if($evt->advise_before()){ - auth_login($evdata['user'], - $evdata['password'], - $evdata['sticky'], - $evdata['silent']); - } - } + // if no credentials were given try to use HTTP auth (for SSO) + if(empty($_REQUEST['u']) && empty($_COOKIE[DOKU_COOKIE]) && !empty($_SERVER['PHP_AUTH_USER'])){ + $_REQUEST['u'] = $_SERVER['PHP_AUTH_USER']; + $_REQUEST['p'] = $_SERVER['PHP_AUTH_PW']; + $_REQUEST['http_credentials'] = true; } - //load ACL into a global array - global $AUTH_ACL; - if(is_readable(DOKU_CONF.'acl.auth.php')){ - $AUTH_ACL = file(DOKU_CONF.'acl.auth.php'); + // apply cleaning + $_REQUEST['u'] = $auth->cleanUser($_REQUEST['u']); + + if(isset($_REQUEST['authtok'])){ + // when an authentication token is given, trust the session + auth_validateToken($_REQUEST['authtok']); + }elseif(!is_null($auth) && $auth->canDo('external')){ + // external trust mechanism in place + $auth->trustExternal($_REQUEST['u'],$_REQUEST['p'],$_REQUEST['r']); + }else{ + $evdata = array( + 'user' => $_REQUEST['u'], + 'password' => $_REQUEST['p'], + 'sticky' => $_REQUEST['r'], + 'silent' => $_REQUEST['http_credentials'], + ); + trigger_event('AUTH_LOGIN_CHECK', $evdata, 'auth_login_wrapper'); + } + + //load ACL into a global array XXX + if(is_readable($config_cascade['acl']['default'])){ + $AUTH_ACL = file($config_cascade['acl']['default']); //support user wildcard if(isset($_SERVER['REMOTE_USER'])){ $AUTH_ACL = str_replace('%USER%',$_SERVER['REMOTE_USER'],$AUTH_ACL); - $AUTH_ACL = str_replace('@USER@',$_SERVER['REMOTE_USER'],$AUTH_ACL); //legacy } - }else{ - $AUTH_ACL = array(); } } +function auth_login_wrapper($evdata) { + return auth_login($evdata['user'], + $evdata['password'], + $evdata['sticky'], + $evdata['silent']); +} + /** * This tries to login the user based on the sent auth credentials * @@ -315,9 +320,7 @@ function auth_logoff($keepbc=false){ setcookie(DOKU_COOKIE,'',time()-600000,DOKU_REL,'',($conf['securecookie'] && is_ssl())); } - if($auth && $auth->canDo('logoff')){ - $auth->logOff(); - } + if($auth) $auth->logOff(); } /** @@ -347,7 +350,8 @@ function auth_ismanager($user=null,$groups=null,$adminonly=false){ $user = $_SERVER['REMOTE_USER']; } } - $user = $auth->cleanUser($user); + $user = trim($auth->cleanUser($user)); + if($user === '') return false; if(is_null($groups)) $groups = (array) $USERINFO['grps']; $groups = array_map(array($auth,'cleanGroup'),$groups); $user = auth_nameencode($user); @@ -356,6 +360,7 @@ function auth_ismanager($user=null,$groups=null,$adminonly=false){ $superusers = explode(',', $conf['superuser']); $superusers = array_unique($superusers); $superusers = array_map('trim', $superusers); + $superusers = array_filter($superusers); // prepare an array containing only true values for array_map call $alltrue = array_fill(0, count($superusers), true); $superusers = array_map('auth_nameencode', $superusers, $alltrue); @@ -374,6 +379,7 @@ function auth_ismanager($user=null,$groups=null,$adminonly=false){ $managers = explode(',', $conf['manager']); $managers = array_unique($managers); $managers = array_map('trim', $managers); + $managers = array_filter($managers); // prepare an array containing only true values for array_map call $alltrue = array_fill(0, count($managers), true); $managers = array_map('auth_nameencode', $managers, $alltrue); @@ -566,6 +572,9 @@ function auth_nameencode($name,$skip_group=false){ $cache =& $cache_authname; $name = (string) $name; + // never encode wildcard FS#1955 + if($name == '%USER%') return $name; + if (!isset($cache[$name][$skip_group])) { if($skip_group && $name{0} =='@'){ $cache[$name][$skip_group] = '@'.preg_replace('/([\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f])/e', @@ -926,7 +935,7 @@ function auth_cryptPassword($clear,$method='',$salt=null){ $magic = '1'; case 'apr1': //from http://de.php.net/manual/en/function.crypt.php#73619 comment by <mikey_nich at hotmail dot com> - if(!$magic) $magic = 'apr1'; + if(!isset($magic)) $magic = 'apr1'; $salt = substr($salt,0,8); $len = strlen($clear); $text = $clear.'$'.$magic.'$'.$salt; diff --git a/inc/auth/ad.class.php b/inc/auth/ad.class.php index 9915b9f11..9ae6dbbd1 100644 --- a/inc/auth/ad.class.php +++ b/inc/auth/ad.class.php @@ -26,6 +26,10 @@ * $conf['auth']['ad']['use_ssl'] = 1; * $conf['auth']['ad']['debug'] = 1; * + * // get additional informations to the userinfo array + * // add a list of comma separated ldap contact fields. + * $conf['auth']['ad']['additional'] = 'field1,field2'; + * * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * @author James Van Lommel <jamesvl@gmail.com> * @link http://www.nosq.com/blog/2005/08/ldap-activedirectory-and-dokuwiki/ @@ -38,6 +42,7 @@ class auth_ad extends auth_basic { var $cnf = null; var $opts = null; var $adldap = null; + var $users = null; /** * Constructor @@ -46,6 +51,12 @@ class auth_ad extends auth_basic { global $conf; $this->cnf = $conf['auth']['ad']; + // additional information fields + if (isset($this->cnf['additional'])) { + $this->cnf['additional'] = str_replace(' ', '', $this->cnf['additional']); + $this->cnf['additional'] = explode(',', $this->cnf['additional']); + } else $this->cnf['additional'] = array(); + // ldap extension is needed if (!function_exists('ldap_connect')) { if ($this->cnf['debug']) @@ -130,15 +141,27 @@ class auth_ad extends auth_basic { global $conf; if(!$this->_init()) return false; - //get info for given user - $result = $this->adldap->user_info($user); + $fields = array('mail','displayname','samaccountname'); + // add additional fields to read + $fields = array_merge($fields, $this->cnf['additional']); + $fields = array_unique($fields); + + //get info for given user + $result = $this->adldap->user_info($user, $fields); //general user info $info['name'] = $result[0]['displayname'][0]; $info['mail'] = $result[0]['mail'][0]; $info['uid'] = $result[0]['samaccountname'][0]; $info['dn'] = $result[0]['dn']; + // additional informations + foreach ($this->cnf['additional'] as $field) { + if (isset($result[0][strtolower($field)])) { + $info[$field] = $result[0][strtolower($field)][0]; + } + } + // handle ActiveDirectory memberOf $info['grps'] = $this->adldap->user_groups($user,(bool) $this->opts['recursive_groups']); @@ -185,6 +208,45 @@ class auth_ad extends auth_basic { } /** + * Bulk retrieval of user data + * + * @author Dominik Eckelmann <dokuwiki@cosmocode.de> + * @param start index of first user to be returned + * @param limit max number of users to be returned + * @param filter array of field/pattern pairs, null for no filter + * @return array of userinfo (refer getUserData for internal userinfo details) + */ + function retrieveUsers($start=0,$limit=-1,$filter=array()) { + if(!$this->_init()) return false; + + if ($this->users === null) { + //get info for given user + $result = $this->adldap->all_users(); + if (!$result) return array(); + $this->users = array_fill_keys($result, false); + } + + $i = 0; + $count = 0; + $this->_constructPattern($filter); + $result = array(); + + foreach ($this->users as $user => &$info) { + if ($i++ < $start) { + continue; + } + if ($info === false) { + $info = $this->getUserData($user); + } + if ($this->_filter($user, $info)) { + $result[$user] = $info; + if (($limit >= 0) && (++$count >= $limit)) break; + } + } + return $result; + } + + /** * Initialize the AdLDAP library and connect to the server */ function _init(){ @@ -193,13 +255,45 @@ class auth_ad extends auth_basic { // connect try { $this->adldap = new adLDAP($this->opts); + if (isset($this->opts['ad_username']) && isset($this->opts['ad_password'])) { + $this->canDo['getUsers'] = true; + } return true; } catch (adLDAPException $e) { + if ($this->cnf['debug']) { + msg($e->getMessage(), -1); + } $this->success = false; $this->adldap = null; } return false; } + + /** + * return 1 if $user + $info match $filter criteria, 0 otherwise + * + * @author Chris Smith <chris@jalakai.co.uk> + */ + function _filter($user, $info) { + foreach ($this->_pattern as $item => $pattern) { + if ($item == 'user') { + if (!preg_match($pattern, $user)) return 0; + } else if ($item == 'grps') { + if (!count(preg_grep($pattern, $info['grps']))) return 0; + } else { + if (!preg_match($pattern, $info[$item])) return 0; + } + } + return 1; + } + + function _constructPattern($filter) { + $this->_pattern = array(); + foreach ($filter as $item => $pattern) { +// $this->_pattern[$item] = '/'.preg_quote($pattern,"/").'/i'; // don't allow regex characters + $this->_pattern[$item] = '/'.str_replace('/','\/',$pattern).'/i'; // allow regex characters + } + } } //Setup VIM: ex: et ts=4 enc=utf-8 : diff --git a/inc/auth/basic.class.php b/inc/auth/basic.class.php index c08422488..fa38970ae 100644 --- a/inc/auth/basic.class.php +++ b/inc/auth/basic.class.php @@ -30,7 +30,7 @@ class auth_basic { 'getUserCount'=> false, // can the number of users be retrieved? 'getGroups' => false, // can a list of available groups be retrieved? 'external' => false, // does the module do external auth checking? - 'logoff' => false, // has the module some special logoff method? + 'logout' => true, // can the user logout again? (eg. not possible with HTTP auth) ); diff --git a/inc/auth/ldap.class.php b/inc/auth/ldap.class.php index c51924135..5cc186ce2 100644 --- a/inc/auth/ldap.class.php +++ b/inc/auth/ldap.class.php @@ -27,7 +27,9 @@ class auth_ldap extends auth_basic { return; } - if(empty($this->cnf['groupkey'])) $this->cnf['groupkey'] = 'cn'; + if(empty($this->cnf['groupkey'])) $this->cnf['groupkey'] = 'cn'; + if(empty($this->cnf['userscope'])) $this->cnf['userscope'] = 'sub'; + if(empty($this->cnf['groupscope'])) $this->cnf['groupscope'] = 'sub'; // auth_ldap currently just handles authentication, so no // capabilities are set @@ -171,7 +173,7 @@ class auth_ldap extends auth_basic { $filter = "(ObjectClass=*)"; } - $sr = @ldap_search($this->con, $base, $filter); + $sr = $this->_ldapsearch($this->con, $base, $filter, $this->cnf['userscope']); $result = @ldap_get_entries($this->con, $sr); if($this->cnf['debug']){ msg('LDAP user search: '.htmlspecialchars(ldap_error($this->con)),0,__LINE__,__FILE__); @@ -216,10 +218,10 @@ class auth_ldap extends auth_basic { $user_result = array_merge($info,$user_result); //get groups for given user if grouptree is given - if ($this->cnf['grouptree'] && $this->cnf['groupfilter']) { + if ($this->cnf['grouptree'] || $this->cnf['groupfilter']) { $base = $this->_makeFilter($this->cnf['grouptree'], $user_result); $filter = $this->_makeFilter($this->cnf['groupfilter'], $user_result); - $sr = @ldap_search($this->con, $base, $filter, array($this->cnf['groupkey'])); + $sr = $this->_ldapsearch($this->con, $base, $filter, $this->cnf['groupscope'], array($this->cnf['groupkey'])); if(!$sr){ msg("LDAP: Reading group memberships failed",-1); if($this->cnf['debug']){ @@ -255,6 +257,58 @@ class auth_ldap extends auth_basic { } /** + * Bulk retrieval of user data + * + * @author Dominik Eckelmann <dokuwiki@cosmocode.de> + * @param start index of first user to be returned + * @param limit max number of users to be returned + * @param filter array of field/pattern pairs, null for no filter + * @return array of userinfo (refer getUserData for internal userinfo details) + */ + function retrieveUsers($start=0,$limit=-1,$filter=array()) { + if(!$this->_openLDAP()) return false; + + if (!isset($this->users)) { + // Perform the search and grab all their details + if(!empty($this->cnf['userfilter'])) { + $all_filter = str_replace('%{user}', '*', $this->cnf['userfilter']); + } else { + $all_filter = "(ObjectClass=*)"; + } + $sr=ldap_search($this->con,$this->cnf['usertree'],$all_filter); + $entries = ldap_get_entries($this->con, $sr); + $users_array = array(); + for ($i=0; $i<$entries["count"]; $i++){ + array_push($users_array, $entries[$i]["uid"][0]); + } + asort($users_array); + $result = $users_array; + if (!$result) return array(); + $this->users = array_fill_keys($result, false); + } + $i = 0; + $count = 0; + $this->_constructPattern($filter); + $result = array(); + + foreach ($this->users as $user => &$info) { + if ($i++ < $start) { + continue; + } + if ($info === false) { + $info = $this->getUserData($user); + } + if ($this->_filter($user, $info)) { + $result[$user] = $info; + if (($limit >= 0) && (++$count >= $limit)) break; + } + } + return $result; + + + } + + /** * Make LDAP filter strings. * * Used by auth_getUserData to make the filter @@ -283,6 +337,32 @@ class auth_ldap extends auth_basic { } /** + * return 1 if $user + $info match $filter criteria, 0 otherwise + * + * @author Chris Smith <chris@jalakai.co.uk> + */ + function _filter($user, $info) { + foreach ($this->_pattern as $item => $pattern) { + if ($item == 'user') { + if (!preg_match($pattern, $user)) return 0; + } else if ($item == 'grps') { + if (!count(preg_grep($pattern, $info['grps']))) return 0; + } else { + if (!preg_match($pattern, $info[$item])) return 0; + } + } + return 1; + } + + function _constructPattern($filter) { + $this->_pattern = array(); + foreach ($filter as $item => $pattern) { +// $this->_pattern[$item] = '/'.preg_quote($pattern,"/").'/i'; // don't allow regex characters + $this->_pattern[$item] = '/'.str_replace('/','\/',$pattern).'/i'; // allow regex characters + } + } + + /** * Escape a string to be used in a LDAP filter * * Ported from Perl's Net::LDAP::Util escape_filter_value @@ -350,8 +430,31 @@ class auth_ldap extends auth_basic { } } + $this->canDo['getUsers'] = true; return true; } + + /** + * Wraps around ldap_search, ldap_list or ldap_read depending on $scope + * + * @param $scope string - can be 'base', 'one' or 'sub' + * @author Andreas Gohr <andi@splitbrain.org> + */ + function _ldapsearch($link_identifier, $base_dn, $filter, $scope='sub', $attributes=null, + $attrsonly=0, $sizelimit=0, $timelimit=0, $deref=LDAP_DEREF_NEVER){ + if(is_null($attributes)) $attributes = array(); + + if($scope == 'base'){ + return @ldap_read($link_identifier, $base_dn, $filter, $attributes, + $attrsonly, $sizelimit, $timelimit, $deref); + }elseif($scope == 'one'){ + return @ldap_list($link_identifier, $base_dn, $filter, $attributes, + $attrsonly, $sizelimit, $timelimit, $deref); + }else{ + return @ldap_search($link_identifier, $base_dn, $filter, $attributes, + $attrsonly, $sizelimit, $timelimit, $deref); + } + } } //Setup VIM: ex: et ts=4 enc=utf-8 : diff --git a/inc/auth/mysql.class.php b/inc/auth/mysql.class.php index b1c6a3a52..ca607ced5 100644 --- a/inc/auth/mysql.class.php +++ b/inc/auth/mysql.class.php @@ -8,9 +8,6 @@ * @author Matthias Grimm <matthias.grimmm@sourceforge.net> */ -define('DOKU_AUTH', dirname(__FILE__)); -require_once(DOKU_AUTH.'/basic.class.php'); - class auth_mysql extends auth_basic { var $dbcon = 0; diff --git a/inc/auth/pgsql.class.php b/inc/auth/pgsql.class.php index a6da56af5..8e68e865e 100644 --- a/inc/auth/pgsql.class.php +++ b/inc/auth/pgsql.class.php @@ -11,8 +11,7 @@ * @author Matthias Grimm <matthias.grimmm@sourceforge.net> */ -define('DOKU_AUTH', dirname(__FILE__)); -require_once(DOKU_AUTH.'/mysql.class.php'); +require_once(DOKU_INC.'inc/auth/mysql.class.php'); class auth_pgsql extends auth_mysql { diff --git a/inc/auth/plain.class.php b/inc/auth/plain.class.php index 96649e3c4..ec9e52beb 100644 --- a/inc/auth/plain.class.php +++ b/inc/auth/plain.class.php @@ -7,11 +7,6 @@ * @author Chris Smith <chris@jalakai.co.uk> */ -define('DOKU_AUTH', dirname(__FILE__)); -require_once(DOKU_AUTH.'/basic.class.php'); - -define('AUTH_USERFILE',DOKU_CONF.'users.auth.php'); - class auth_plain extends auth_basic { var $users = null; @@ -26,10 +21,12 @@ class auth_plain extends auth_basic { * @author Christopher Smith <chris@jalakai.co.uk> */ function auth_plain() { - if (!@is_readable(AUTH_USERFILE)){ + global $config_cascade; + + if (!@is_readable($config_cascade['plainauth.users']['default'])){ $this->success = false; }else{ - if(@is_writable(AUTH_USERFILE)){ + if(@is_writable($config_cascade['plainauth.users']['default'])){ $this->cando['addUser'] = true; $this->cando['delUser'] = true; $this->cando['modLogin'] = true; @@ -92,6 +89,7 @@ class auth_plain extends auth_basic { */ function createUser($user,$pwd,$name,$mail,$grps=null){ global $conf; + global $config_cascade; // user mustn't already exist if ($this->getUserData($user) !== false) return false; @@ -105,12 +103,13 @@ class auth_plain extends auth_basic { $groups = join(',',$grps); $userline = join(':',array($user,$pass,$name,$mail,$groups))."\n"; - if (io_saveFile(AUTH_USERFILE,$userline,true)) { + if (io_saveFile($config_cascade['plainauth.users']['default'],$userline,true)) { $this->users[$user] = compact('pass','name','mail','grps'); return $pwd; } - msg('The '.AUTH_USERFILE.' file is not writable. Please inform the Wiki-Admin',-1); + msg('The '.$config_cascade['plainauth.users']['default']. + ' file is not writable. Please inform the Wiki-Admin',-1); return null; } @@ -126,6 +125,7 @@ class auth_plain extends auth_basic { global $conf; global $ACT; global $INFO; + global $config_cascade; // sanity checks, user must already exist and there must be something to change if (($userinfo = $this->getUserData($user)) === false) return false; @@ -150,7 +150,7 @@ class auth_plain extends auth_basic { return false; } - if (!io_saveFile(AUTH_USERFILE,$userline,true)) { + if (!io_saveFile($config_cascade['plainauth.users']['default'],$userline,true)) { msg('There was an error modifying your user data. You should register again.',-1); // FIXME, user has been deleted but not recreated, should force a logout and redirect to login page $ACT == 'register'; @@ -169,6 +169,7 @@ class auth_plain extends auth_basic { * @return int the number of users deleted */ function deleteUsers($users) { + global $config_cascade; if (!is_array($users) || empty($users)) return 0; @@ -183,7 +184,7 @@ class auth_plain extends auth_basic { $pattern = '/^('.join('|',$deleted).'):/'; - if (io_deleteFromFile(AUTH_USERFILE,$pattern,true)) { + if (io_deleteFromFile($config_cascade['plainauth.users']['default'],$pattern,true)) { foreach ($deleted as $user) unset($this->users[$user]); return count($deleted); } @@ -274,11 +275,13 @@ class auth_plain extends auth_basic { * @author Andreas Gohr <andi@splitbrain.org> */ function _loadUserData(){ + global $config_cascade; + $this->users = array(); - if(!@file_exists(AUTH_USERFILE)) return; + if(!@file_exists($config_cascade['plainauth.users']['default'])) return; - $lines = file(AUTH_USERFILE); + $lines = file($config_cascade['plainauth.users']['default']); foreach($lines as $line){ $line = preg_replace('/#.*$/','',$line); //ignore comments $line = trim($line); diff --git a/inc/blowfish.php b/inc/blowfish.php index 42e3a589a..bcf5804a2 100644 --- a/inc/blowfish.php +++ b/inc/blowfish.php @@ -299,8 +299,7 @@ class Horde_Cipher_blowfish * * @param String $key The key to use */ - function setKey($key) - { + function setKey($key) { $key = $this->_formatKey($key); $keyPos = $keyXor = 0; @@ -318,37 +317,37 @@ class Horde_Cipher_blowfish $encZero = array('L' => 0, 'R' => 0); for ($i = 0; $i + 1 < $iMax; $i += 2) { - $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']); - $this->p[$i] = $encZero['L']; - $this->p[$i + 1] = $encZero['R']; + $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']); + $this->p[$i] = $encZero['L']; + $this->p[$i + 1] = $encZero['R']; } $iMax = count($this->s1); for ($i = 0; $i < $iMax; $i += 2) { - $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']); - $this->s1[$i] = $encZero['L']; - $this->s1[$i + 1] = $encZero['R']; + $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']); + $this->s1[$i] = $encZero['L']; + $this->s1[$i + 1] = $encZero['R']; } $iMax = count($this->s2); for ($i = 0; $i < $iMax; $i += 2) { - $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']); - $this->s2[$i] = $encZero['L']; - $this->s2[$i + 1] = $encZero['R']; + $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']); + $this->s2[$i] = $encZero['L']; + $this->s2[$i + 1] = $encZero['R']; } $iMax = count($this->s3); for ($i = 0; $i < $iMax; $i += 2) { - $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']); - $this->s3[$i] = $encZero['L']; - $this->s3[$i + 1] = $encZero['R']; + $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']); + $this->s3[$i] = $encZero['L']; + $this->s3[$i + 1] = $encZero['R']; } $iMax = count($this->s4); for ($i = 0; $i < $iMax; $i += 2) { - $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']); - $this->s4[$i] = $encZero['L']; - $this->s4[$i + 1] = $encZero['R']; + $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']); + $this->s4[$i] = $encZero['L']; + $this->s4[$i + 1] = $encZero['R']; } } @@ -361,8 +360,7 @@ class Horde_Cipher_blowfish * * @return String the encrypted output */ - function encryptBlock($block, $key = null) - { + function encryptBlock($block, $key = null) { if (!is_null($key)) { $this->setKey($key); } @@ -380,8 +378,7 @@ class Horde_Cipher_blowfish * * @return String The encrypted output. */ - function _encryptBlock($L, $R) - { + function _encryptBlock($L, $R) { $L ^= $this->p[0]; $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[1]; $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[2]; @@ -412,13 +409,12 @@ class Horde_Cipher_blowfish * * @return String the decrypted output */ - function decryptBlock($block, $key = null) - { + function decryptBlock($block, $key = null) { if (!is_null($key)) { $this->setKey($key); } -// change for phpMyAdmin + // change for phpMyAdmin $L = null; $R = null; @@ -429,7 +425,7 @@ class Horde_Cipher_blowfish if (isset($retarray[1])) { $R = $retarray[1]; } -// end change for phpMyAdmin + // end change for phpMyAdmin $L ^= $this->p[17]; $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[16]; @@ -458,8 +454,7 @@ class Horde_Cipher_blowfish * * @return array The key. */ - function _formatKey($key) - { + function _formatKey($key) { return array_values(unpack('C*', $key)); } @@ -478,8 +473,7 @@ class Horde_Cipher_blowfish * * @author lem9 */ -function PMA_blowfish_encrypt($data, $secret) -{ +function PMA_blowfish_encrypt($data, $secret) { $pma_cipher = new Horde_Cipher_blowfish; $encrypt = ''; @@ -508,8 +502,7 @@ function PMA_blowfish_encrypt($data, $secret) * * @author lem9 */ -function PMA_blowfish_decrypt($encdata, $secret) -{ +function PMA_blowfish_decrypt($encdata, $secret) { $pma_cipher = new Horde_Cipher_blowfish; $decrypt = ''; $data = base64_decode($encdata); diff --git a/inc/cache.php b/inc/cache.php index 8e8adfd6d..571b314cd 100644 --- a/inc/cache.php +++ b/inc/cache.php @@ -7,286 +7,283 @@ */ if(!defined('DOKU_INC')) die('meh.'); -require_once(DOKU_INC.'inc/io.php'); -require_once(DOKU_INC.'inc/pageutils.php'); -require_once(DOKU_INC.'inc/parserutils.php'); class cache { - var $key = ''; // primary identifier for this item - var $ext = ''; // file ext for cache data, secondary identifier for this item - var $cache = ''; // cache file name - var $depends = array(); // array containing cache dependency information, - // used by _useCache to determine cache validity - - var $_event = ''; // event to be triggered during useCache - - function cache($key,$ext) { - $this->key = $key; - $this->ext = $ext; - $this->cache = getCacheName($key,$ext); - } - - /** - * public method to determine whether the cache can be used - * - * to assist in cetralisation of event triggering and calculation of cache statistics, - * don't override this function override _useCache() - * - * @param array $depends array of cache dependencies, support dependecies: - * 'age' => max age of the cache in seconds - * 'files' => cache must be younger than mtime of each file - * (nb. dependency passes if file doesn't exist) - * - * @return bool true if cache can be used, false otherwise - */ - function useCache($depends=array()) { - $this->depends = $depends; - $this->_addDependencies(); - - if ($this->_event) { - return $this->_stats(trigger_event($this->_event,$this,array($this,'_useCache'))); - } else { - return $this->_stats($this->_useCache()); + var $key = ''; // primary identifier for this item + var $ext = ''; // file ext for cache data, secondary identifier for this item + var $cache = ''; // cache file name + var $depends = array(); // array containing cache dependency information, + // used by _useCache to determine cache validity + + var $_event = ''; // event to be triggered during useCache + + function cache($key,$ext) { + $this->key = $key; + $this->ext = $ext; + $this->cache = getCacheName($key,$ext); } - } - - /** - * private method containing cache use decision logic - * - * this function processes the following keys in the depends array - * purge - force a purge on any non empty value - * age - expire cache if older than age (seconds) - * files - expire cache if any file in this array was updated more recently than the cache - * - * can be overridden - * - * @return bool see useCache() - */ - function _useCache() { - - if (!empty($this->depends['purge'])) return false; // purge requested? - if (!($this->_time = @filemtime($this->cache))) return false; // cache exists? - - // cache too old? - if (!empty($this->depends['age']) && ((time() - $this->_time) > $this->depends['age'])) return false; - - if (!empty($this->depends['files'])) { - foreach ($this->depends['files'] as $file) { - if ($this->_time < @filemtime($file)) return false; // cache older than files it depends on? - } + + /** + * public method to determine whether the cache can be used + * + * to assist in cetralisation of event triggering and calculation of cache statistics, + * don't override this function override _useCache() + * + * @param array $depends array of cache dependencies, support dependecies: + * 'age' => max age of the cache in seconds + * 'files' => cache must be younger than mtime of each file + * (nb. dependency passes if file doesn't exist) + * + * @return bool true if cache can be used, false otherwise + */ + function useCache($depends=array()) { + $this->depends = $depends; + $this->_addDependencies(); + + if ($this->_event) { + return $this->_stats(trigger_event($this->_event,$this,array($this,'_useCache'))); + } else { + return $this->_stats($this->_useCache()); + } + } + + /** + * private method containing cache use decision logic + * + * this function processes the following keys in the depends array + * purge - force a purge on any non empty value + * age - expire cache if older than age (seconds) + * files - expire cache if any file in this array was updated more recently than the cache + * + * can be overridden + * + * @return bool see useCache() + */ + function _useCache() { + + if (!empty($this->depends['purge'])) return false; // purge requested? + if (!($this->_time = @filemtime($this->cache))) return false; // cache exists? + + // cache too old? + if (!empty($this->depends['age']) && ((time() - $this->_time) > $this->depends['age'])) return false; + + if (!empty($this->depends['files'])) { + foreach ($this->depends['files'] as $file) { + if ($this->_time < @filemtime($file)) return false; // cache older than files it depends on? + } + } + + return true; + } + + /** + * add dependencies to the depends array + * + * this method should only add dependencies, + * it should not remove any existing dependencies and + * it should only overwrite a dependency when the new value is more stringent than the old + */ + function _addDependencies() { + if (isset($_REQUEST['purge'])) $this->depends['purge'] = true; // purge requested } - return true; - } - - /** - * add dependencies to the depends array - * - * this method should only add dependencies, - * it should not remove any existing dependencies and - * it should only overwrite a dependency when the new value is more stringent than the old - */ - function _addDependencies() { - if (isset($_REQUEST['purge'])) $this->depends['purge'] = true; // purge requested - } - - /** - * retrieve the cached data - * - * @param bool $clean true to clean line endings, false to leave line endings alone - * @return string cache contents - */ - function retrieveCache($clean=true) { - return io_readFile($this->cache, $clean); - } - - /** - * cache $data - * - * @param string $data the data to be cached - * @return bool true on success, false otherwise - */ - function storeCache($data) { - return io_savefile($this->cache, $data); - } - - /** - * remove any cached data associated with this cache instance - */ - function removeCache() { - @unlink($this->cache); - } - - /** - * Record cache hits statistics. - * (Only when debugging allowed, to reduce overhead.) - * - * @param bool $success result of this cache use attempt - * @return bool pass-thru $success value - */ - function _stats($success) { - global $conf; - static $stats = NULL; - static $file; - - if (!$conf['allowdebug']) { return $success; } - - if (is_null($stats)) { - $file = $conf['cachedir'].'/cache_stats.txt'; - $lines = explode("\n",io_readFile($file)); - - foreach ($lines as $line) { - $i = strpos($line,','); - $stats[substr($line,0,$i)] = $line; - } + /** + * retrieve the cached data + * + * @param bool $clean true to clean line endings, false to leave line endings alone + * @return string cache contents + */ + function retrieveCache($clean=true) { + return io_readFile($this->cache, $clean); } - if (isset($stats[$this->ext])) { - list($ext,$count,$hits) = explode(',',$stats[$this->ext]); - } else { - $ext = $this->ext; - $count = 0; - $hits = 0; + /** + * cache $data + * + * @param string $data the data to be cached + * @return bool true on success, false otherwise + */ + function storeCache($data) { + return io_savefile($this->cache, $data); } - $count++; - if ($success) $hits++; - $stats[$this->ext] = "$ext,$count,$hits"; + /** + * remove any cached data associated with this cache instance + */ + function removeCache() { + @unlink($this->cache); + } + + /** + * Record cache hits statistics. + * (Only when debugging allowed, to reduce overhead.) + * + * @param bool $success result of this cache use attempt + * @return bool pass-thru $success value + */ + function _stats($success) { + global $conf; + static $stats = null; + static $file; + + if (!$conf['allowdebug']) { return $success; } + + if (is_null($stats)) { + $file = $conf['cachedir'].'/cache_stats.txt'; + $lines = explode("\n",io_readFile($file)); + + foreach ($lines as $line) { + $i = strpos($line,','); + $stats[substr($line,0,$i)] = $line; + } + } + + if (isset($stats[$this->ext])) { + list($ext,$count,$hits) = explode(',',$stats[$this->ext]); + } else { + $ext = $this->ext; + $count = 0; + $hits = 0; + } + + $count++; + if ($success) $hits++; + $stats[$this->ext] = "$ext,$count,$hits"; - io_saveFile($file,join("\n",$stats)); + io_saveFile($file,join("\n",$stats)); - return $success; - } + return $success; + } } class cache_parser extends cache { - var $file = ''; // source file for cache - var $mode = ''; // input mode (represents the processing the input file will undergo) + var $file = ''; // source file for cache + var $mode = ''; // input mode (represents the processing the input file will undergo) - var $_event = 'PARSER_CACHE_USE'; + var $_event = 'PARSER_CACHE_USE'; - function cache_parser($id, $file, $mode) { - if ($id) $this->page = $id; - $this->file = $file; - $this->mode = $mode; + function cache_parser($id, $file, $mode) { + if ($id) $this->page = $id; + $this->file = $file; + $this->mode = $mode; - parent::cache($file.$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT'],'.'.$mode); - } + parent::cache($file.$_SERVER['HTTP_HOST'].$_SERVER['SERVER_PORT'],'.'.$mode); + } - function _useCache() { + function _useCache() { - if (!@file_exists($this->file)) return false; // source exists? - return parent::_useCache(); - } + if (!@file_exists($this->file)) return false; // source exists? + return parent::_useCache(); + } - function _addDependencies() { - global $conf, $config_cascade; + function _addDependencies() { + global $conf, $config_cascade; - $this->depends['age'] = isset($this->depends['age']) ? - min($this->depends['age'],$conf['cachetime']) : $conf['cachetime']; + $this->depends['age'] = isset($this->depends['age']) ? + min($this->depends['age'],$conf['cachetime']) : $conf['cachetime']; - // parser cache file dependencies ... - $files = array($this->file, // ... source - DOKU_INC.'inc/parser/parser.php', // ... parser - DOKU_INC.'inc/parser/handler.php', // ... handler - ); - $files = array_merge($files, getConfigFiles('main')); // ... wiki settings + // parser cache file dependencies ... + $files = array($this->file, // ... source + DOKU_INC.'inc/parser/parser.php', // ... parser + DOKU_INC.'inc/parser/handler.php', // ... handler + ); + $files = array_merge($files, getConfigFiles('main')); // ... wiki settings - $this->depends['files'] = !empty($this->depends['files']) ? array_merge($files, $this->depends['files']) : $files; - parent::_addDependencies(); - } + $this->depends['files'] = !empty($this->depends['files']) ? array_merge($files, $this->depends['files']) : $files; + parent::_addDependencies(); + } } class cache_renderer extends cache_parser { - function useCache($depends=array()) { - $use = parent::useCache($depends); + function useCache($depends=array()) { + $use = parent::useCache($depends); + + // meta data needs to be kept in step with the cache + if (!$use && isset($this->page)) { + p_set_metadata($this->page,array(),true); + } - // meta data needs to be kept in step with the cache - if (!$use && isset($this->page)) { - p_set_metadata($this->page,array(),true); + return $use; } - return $use; - } + function _useCache() { + global $conf; - function _useCache() { - global $conf; + if (!parent::_useCache()) return false; - if (!parent::_useCache()) return false; + if (!isset($this->page)) { + return true; + } - if (!isset($this->page)) { - return true; - } + // check current link existence is consistent with cache version + // first check the purgefile + // - if the cache is more recent than the purgefile we know no links can have been updated + if ($this->_time >= @filemtime($conf['cachedir'].'/purgefile')) { + return true; + } - // check current link existence is consistent with cache version - // first check the purgefile - // - if the cache is more recent than the purgefile we know no links can have been updated - if ($this->_time >= @filemtime($conf['cachedir'].'/purgefile')) { - return true; - } + // for wiki pages, check metadata dependencies + $metadata = p_get_metadata($this->page); - // for wiki pages, check metadata dependencies - $metadata = p_get_metadata($this->page); + if (!isset($metadata['relation']['references']) || + empty($metadata['relation']['references'])) { + return true; + } - if (!isset($metadata['relation']['references']) || - empty($metadata['relation']['references'])) { - return true; - } + foreach ($metadata['relation']['references'] as $id => $exists) { + if ($exists != page_exists($id,'',false)) return false; + } - foreach ($metadata['relation']['references'] as $id => $exists) { - if ($exists != page_exists($id,'',false)) return false; + return true; } - return true; - } + function _addDependencies() { - function _addDependencies() { + // renderer cache file dependencies ... + $files = array( + DOKU_INC.'inc/parser/'.$this->mode.'.php', // ... the renderer + ); - // renderer cache file dependencies ... - $files = array( - DOKU_INC.'inc/parser/'.$this->mode.'.php', // ... the renderer - ); + // page implies metadata and possibly some other dependencies + if (isset($this->page)) { - // page implies metadata and possibly some other dependencies - if (isset($this->page)) { + $metafile = metaFN($this->page,'.meta'); + if (@file_exists($metafile)) { + $files[] = $metafile; // ... the page's own metadata + $files[] = DOKU_INC.'inc/parser/metadata.php'; // ... the metadata renderer - $metafile = metaFN($this->page,'.meta'); - if (@file_exists($metafile)) { - $files[] = $metafile; // ... the page's own metadata - $files[] = DOKU_INC.'inc/parser/metadata.php'; // ... the metadata renderer + $valid = p_get_metadata($this->page, 'date valid'); + if (!empty($valid['age'])) { + $this->depends['age'] = isset($this->depends['age']) ? + min($this->depends['age'],$valid['age']) : $valid['age']; + } - $valid = p_get_metadata($this->page, 'date valid'); - if (!empty($valid['age'])) { - $this->depends['age'] = isset($this->depends['age']) ? - min($this->depends['age'],$valid['age']) : $valid['age']; + } else { + $this->depends['purge'] = true; // ... purging cache will generate metadata + return; + } } - } else { - $this->depends['purge'] = true; // ... purging cache will generate metadata - return; - } + $this->depends['files'] = !empty($this->depends['files']) ? array_merge($files, $this->depends['files']) : $files; + parent::_addDependencies(); } - - $this->depends['files'] = !empty($this->depends['files']) ? array_merge($files, $this->depends['files']) : $files; - parent::_addDependencies(); - } } class cache_instructions extends cache_parser { - function cache_instructions($id, $file) { - parent::cache_parser($id, $file, 'i'); - } + function cache_instructions($id, $file) { + parent::cache_parser($id, $file, 'i'); + } - function retrieveCache($clean=true) { - $contents = io_readFile($this->cache, false); - return !empty($contents) ? unserialize($contents) : array(); - } + function retrieveCache($clean=true) { + $contents = io_readFile($this->cache, false); + return !empty($contents) ? unserialize($contents) : array(); + } - function storeCache($instructions) { - return io_savefile($this->cache,serialize($instructions)); - } + function storeCache($instructions) { + return io_savefile($this->cache,serialize($instructions)); + } } diff --git a/inc/changelog.php b/inc/changelog.php index bc2af2de3..d5cd8308c 100644 --- a/inc/changelog.php +++ b/inc/changelog.php @@ -20,18 +20,18 @@ define('DOKU_CHANGE_TYPE_REVERT', 'R'); * @author Ben Coburn <btcoburn@silicodon.net> */ function parseChangelogLine($line) { - $tmp = explode("\t", $line); + $tmp = explode("\t", $line); if ($tmp!==false && count($tmp)>1) { - $info = array(); - $info['date'] = (int)$tmp[0]; // unix timestamp - $info['ip'] = $tmp[1]; // IPv4 address (127.0.0.1) - $info['type'] = $tmp[2]; // log line type - $info['id'] = $tmp[3]; // page id - $info['user'] = $tmp[4]; // user name - $info['sum'] = $tmp[5]; // edit summary (or action reason) - $info['extra'] = rtrim($tmp[6], "\n"); // extra data (varies by line type) - return $info; - } else { return false; } + $info = array(); + $info['date'] = (int)$tmp[0]; // unix timestamp + $info['ip'] = $tmp[1]; // IPv4 address (127.0.0.1) + $info['type'] = $tmp[2]; // log line type + $info['id'] = $tmp[3]; // page id + $info['user'] = $tmp[4]; // user name + $info['sum'] = $tmp[5]; // edit summary (or action reason) + $info['extra'] = rtrim($tmp[6], "\n"); // extra data (varies by line type) + return $info; + } else { return false; } } /** @@ -42,57 +42,57 @@ function parseChangelogLine($line) { * @author Ben Coburn <btcoburn@silicodon.net> */ function addLogEntry($date, $id, $type=DOKU_CHANGE_TYPE_EDIT, $summary='', $extra='', $flags=null){ - global $conf, $INFO; - - // check for special flags as keys - if (!is_array($flags)) { $flags = array(); } - $flagExternalEdit = isset($flags['ExternalEdit']); - - $id = cleanid($id); - $file = wikiFN($id); - $created = @filectime($file); - $minor = ($type===DOKU_CHANGE_TYPE_MINOR_EDIT); - $wasRemoved = ($type===DOKU_CHANGE_TYPE_DELETE); - - if(!$date) $date = time(); //use current time if none supplied - $remote = (!$flagExternalEdit)?clientIP(true):'127.0.0.1'; - $user = (!$flagExternalEdit)?$_SERVER['REMOTE_USER']:''; - - $strip = array("\t", "\n"); - $logline = array( - 'date' => $date, - 'ip' => $remote, - 'type' => str_replace($strip, '', $type), - 'id' => $id, - 'user' => $user, - 'sum' => str_replace($strip, '', $summary), - 'extra' => str_replace($strip, '', $extra) - ); - - // update metadata - if (!$wasRemoved) { - $oldmeta = p_read_metadata($id); - $meta = array(); - if (!$INFO['exists'] && empty($oldmeta['persistent']['date']['created'])){ // newly created - $meta['date']['created'] = $created; - if ($user) $meta['creator'] = $INFO['userinfo']['name']; - } elseif (!$INFO['exists'] && !empty($oldmeta['persistent']['date']['created'])) { // re-created / restored - $meta['date']['created'] = $oldmeta['persistent']['date']['created']; - $meta['date']['modified'] = $created; // use the files ctime here - $meta['creator'] = $oldmeta['persistent']['creator']; - if ($user) $meta['contributor'][$user] = $INFO['userinfo']['name']; - } elseif (!$minor) { // non-minor modification - $meta['date']['modified'] = $date; - if ($user) $meta['contributor'][$user] = $INFO['userinfo']['name']; + global $conf, $INFO; + + // check for special flags as keys + if (!is_array($flags)) { $flags = array(); } + $flagExternalEdit = isset($flags['ExternalEdit']); + + $id = cleanid($id); + $file = wikiFN($id); + $created = @filectime($file); + $minor = ($type===DOKU_CHANGE_TYPE_MINOR_EDIT); + $wasRemoved = ($type===DOKU_CHANGE_TYPE_DELETE); + + if(!$date) $date = time(); //use current time if none supplied + $remote = (!$flagExternalEdit)?clientIP(true):'127.0.0.1'; + $user = (!$flagExternalEdit)?$_SERVER['REMOTE_USER']:''; + + $strip = array("\t", "\n"); + $logline = array( + 'date' => $date, + 'ip' => $remote, + 'type' => str_replace($strip, '', $type), + 'id' => $id, + 'user' => $user, + 'sum' => str_replace($strip, '', $summary), + 'extra' => str_replace($strip, '', $extra) + ); + + // update metadata + if (!$wasRemoved) { + $oldmeta = p_read_metadata($id); + $meta = array(); + if (!$INFO['exists'] && empty($oldmeta['persistent']['date']['created'])){ // newly created + $meta['date']['created'] = $created; + if ($user) $meta['creator'] = $INFO['userinfo']['name']; + } elseif (!$INFO['exists'] && !empty($oldmeta['persistent']['date']['created'])) { // re-created / restored + $meta['date']['created'] = $oldmeta['persistent']['date']['created']; + $meta['date']['modified'] = $created; // use the files ctime here + $meta['creator'] = $oldmeta['persistent']['creator']; + if ($user) $meta['contributor'][$user] = $INFO['userinfo']['name']; + } elseif (!$minor) { // non-minor modification + $meta['date']['modified'] = $date; + if ($user) $meta['contributor'][$user] = $INFO['userinfo']['name']; + } + $meta['last_change'] = $logline; + p_set_metadata($id, $meta); } - $meta['last_change'] = $logline; - p_set_metadata($id, $meta, true); - } - - // add changelog lines - $logline = implode("\t", $logline)."\n"; - io_saveFile(metaFN($id,'.changes'),$logline,true); //page changelog - io_saveFile($conf['changelog'],$logline,true); //global changelog cache + + // add changelog lines + $logline = implode("\t", $logline)."\n"; + io_saveFile(metaFN($id,'.changes'),$logline,true); //page changelog + io_saveFile($conf['changelog'],$logline,true); //global changelog cache } /** @@ -104,28 +104,28 @@ function addLogEntry($date, $id, $type=DOKU_CHANGE_TYPE_EDIT, $summary='', $extr * @author Ben Coburn <btcoburn@silicodon.net> */ function addMediaLogEntry($date, $id, $type=DOKU_CHANGE_TYPE_EDIT, $summary='', $extra='', $flags=null){ - global $conf, $INFO; - - $id = cleanid($id); - - if(!$date) $date = time(); //use current time if none supplied - $remote = clientIP(true); - $user = $_SERVER['REMOTE_USER']; - - $strip = array("\t", "\n"); - $logline = array( - 'date' => $date, - 'ip' => $remote, - 'type' => str_replace($strip, '', $type), - 'id' => $id, - 'user' => $user, - 'sum' => str_replace($strip, '', $summary), - 'extra' => str_replace($strip, '', $extra) - ); - - // add changelog lines - $logline = implode("\t", $logline)."\n"; - io_saveFile($conf['media_changelog'],$logline,true); //global media changelog cache + global $conf, $INFO; + + $id = cleanid($id); + + if(!$date) $date = time(); //use current time if none supplied + $remote = clientIP(true); + $user = $_SERVER['REMOTE_USER']; + + $strip = array("\t", "\n"); + $logline = array( + 'date' => $date, + 'ip' => $remote, + 'type' => str_replace($strip, '', $type), + 'id' => $id, + 'user' => $user, + 'sum' => str_replace($strip, '', $summary), + 'extra' => str_replace($strip, '', $extra) + ); + + // add changelog lines + $logline = implode("\t", $logline)."\n"; + io_saveFile($conf['media_changelog'],$logline,true); //global media changelog cache } /** @@ -148,35 +148,34 @@ function addMediaLogEntry($date, $id, $type=DOKU_CHANGE_TYPE_EDIT, $summary='', * @author Ben Coburn <btcoburn@silicodon.net> */ function getRecents($first,$num,$ns='',$flags=0){ - global $conf; - $recent = array(); - $count = 0; - - if(!$num) - return $recent; + global $conf; + $recent = array(); + $count = 0; + + if(!$num) + return $recent; + + // read all recent changes. (kept short) + if ($flags & RECENTS_MEDIA_CHANGES) { + $lines = @file($conf['media_changelog']); + } else { + $lines = @file($conf['changelog']); + } - // read all recent changes. (kept short) - if ($flags & RECENTS_MEDIA_CHANGES) { - $lines = @file($conf['media_changelog']); - } else { - $lines = @file($conf['changelog']); - } - - - // handle lines - $seen = array(); // caches seen lines, _handleRecent() skips them - for($i = count($lines)-1; $i >= 0; $i--){ - $rec = _handleRecent($lines[$i], $ns, $flags, $seen); - if($rec !== false) { - if(--$first >= 0) continue; // skip first entries - $recent[] = $rec; - $count++; - // break when we have enough entries - if($count >= $num){ break; } + // handle lines + $seen = array(); // caches seen lines, _handleRecent() skips them + for($i = count($lines)-1; $i >= 0; $i--){ + $rec = _handleRecent($lines[$i], $ns, $flags, $seen); + if($rec !== false) { + if(--$first >= 0) continue; // skip first entries + $recent[] = $rec; + $count++; + // break when we have enough entries + if($count >= $num){ break; } + } } - } - return $recent; + return $recent; } /** @@ -200,39 +199,39 @@ function getRecents($first,$num,$ns='',$flags=0){ * @author Ben Coburn <btcoburn@silicodon.net> */ function getRecentsSince($from,$to=null,$ns='',$flags=0){ - global $conf; - $recent = array(); + global $conf; + $recent = array(); - if($to && $to < $from) - return $recent; + if($to && $to < $from) + return $recent; + + // read all recent changes. (kept short) + if ($flags & RECENTS_MEDIA_CHANGES) { + $lines = @file($conf['media_changelog']); + } else { + $lines = @file($conf['changelog']); + } - // read all recent changes. (kept short) - if ($flags & RECENTS_MEDIA_CHANGES) { - $lines = @file($conf['media_changelog']); - } else { - $lines = @file($conf['changelog']); - } - - // we start searching at the end of the list - $lines = array_reverse($lines); - - // handle lines - $seen = array(); // caches seen lines, _handleRecent() skips them - - foreach($lines as $line){ - $rec = _handleRecent($line, $ns, $flags, $seen); - if($rec !== false) { - if ($rec['date'] >= $from) { - if (!$to || $rec['date'] <= $to) { - $recent[] = $rec; + // we start searching at the end of the list + $lines = array_reverse($lines); + + // handle lines + $seen = array(); // caches seen lines, _handleRecent() skips them + + foreach($lines as $line){ + $rec = _handleRecent($line, $ns, $flags, $seen); + if($rec !== false) { + if ($rec['date'] >= $from) { + if (!$to || $rec['date'] <= $to) { + $recent[] = $rec; + } + } else { + break; + } } - } else { - break; - } } - } - return array_reverse($recent); + return array_reverse($recent); } /** @@ -245,39 +244,39 @@ function getRecentsSince($from,$to=null,$ns='',$flags=0){ * @author Ben Coburn <btcoburn@silicodon.net> */ function _handleRecent($line,$ns,$flags,&$seen){ - if(empty($line)) return false; //skip empty lines + if(empty($line)) return false; //skip empty lines - // split the line into parts - $recent = parseChangelogLine($line); - if ($recent===false) { return false; } + // split the line into parts + $recent = parseChangelogLine($line); + if ($recent===false) { return false; } - // skip seen ones - if(isset($seen[$recent['id']])) return false; + // skip seen ones + if(isset($seen[$recent['id']])) return false; - // skip minors - if($recent['type']===DOKU_CHANGE_TYPE_MINOR_EDIT && ($flags & RECENTS_SKIP_MINORS)) return false; + // skip minors + if($recent['type']===DOKU_CHANGE_TYPE_MINOR_EDIT && ($flags & RECENTS_SKIP_MINORS)) return false; - // remember in seen to skip additional sights - $seen[$recent['id']] = 1; + // remember in seen to skip additional sights + $seen[$recent['id']] = 1; - // check if it's a hidden page - if(isHiddenPage($recent['id'])) return false; + // check if it's a hidden page + if(isHiddenPage($recent['id'])) return false; - // filter namespace - if (($ns) && (strpos($recent['id'],$ns.':') !== 0)) return false; + // filter namespace + if (($ns) && (strpos($recent['id'],$ns.':') !== 0)) return false; - // exclude subnamespaces - if (($flags & RECENTS_SKIP_SUBSPACES) && (getNS($recent['id']) != $ns)) return false; + // exclude subnamespaces + if (($flags & RECENTS_SKIP_SUBSPACES) && (getNS($recent['id']) != $ns)) return false; - // check ACL - $recent['perms'] = auth_quickaclcheck($recent['id']); - if ($recent['perms'] < AUTH_READ) return false; + // check ACL + $recent['perms'] = auth_quickaclcheck($recent['id']); + if ($recent['perms'] < AUTH_READ) return false; - // check existance - $fn = (($flags & RECENTS_MEDIA_CHANGES) ? mediaFN($recent['id']) : wikiFN($recent['id'])); - if((!@file_exists($fn)) && ($flags & RECENTS_SKIP_DELETED)) return false; + // check existance + $fn = (($flags & RECENTS_MEDIA_CHANGES) ? mediaFN($recent['id']) : wikiFN($recent['id'])); + if((!@file_exists($fn)) && ($flags & RECENTS_SKIP_DELETED)) return false; - return $recent; + return $recent; } /** @@ -291,80 +290,80 @@ function _handleRecent($line,$ns,$flags,&$seen){ * @author Ben Coburn <btcoburn@silicodon.net> */ function getRevisionInfo($id, $rev, $chunk_size=8192) { - global $cache_revinfo; - $cache =& $cache_revinfo; - if (!isset($cache[$id])) { $cache[$id] = array(); } - $rev = max($rev, 0); - - // check if it's already in the memory cache - if (isset($cache[$id]) && isset($cache[$id][$rev])) { - return $cache[$id][$rev]; - } - - $file = metaFN($id, '.changes'); - if (!@file_exists($file)) { return false; } - if (filesize($file)<$chunk_size || $chunk_size==0) { - // read whole file - $lines = file($file); - if ($lines===false) { return false; } - } else { - // read by chunk - $fp = fopen($file, 'rb'); // "file pointer" - if ($fp===false) { return false; } - $head = 0; - fseek($fp, 0, SEEK_END); - $tail = ftell($fp); - $finger = 0; - $finger_rev = 0; - - // find chunk - while ($tail-$head>$chunk_size) { - $finger = $head+floor(($tail-$head)/2.0); - fseek($fp, $finger); - fgets($fp); // slip the finger forward to a new line - $finger = ftell($fp); - $tmp = fgets($fp); // then read at that location - $tmp = parseChangelogLine($tmp); - $finger_rev = $tmp['date']; - if ($finger==$head || $finger==$tail) { break; } - if ($finger_rev>$rev) { - $tail = $finger; - } else { - $head = $finger; - } + global $cache_revinfo; + $cache =& $cache_revinfo; + if (!isset($cache[$id])) { $cache[$id] = array(); } + $rev = max($rev, 0); + + // check if it's already in the memory cache + if (isset($cache[$id]) && isset($cache[$id][$rev])) { + return $cache[$id][$rev]; } - if ($tail-$head<1) { - // cound not find chunk, assume requested rev is missing - fclose($fp); - return false; - } + $file = metaFN($id, '.changes'); + if (!@file_exists($file)) { return false; } + if (filesize($file)<$chunk_size || $chunk_size==0) { + // read whole file + $lines = file($file); + if ($lines===false) { return false; } + } else { + // read by chunk + $fp = fopen($file, 'rb'); // "file pointer" + if ($fp===false) { return false; } + $head = 0; + fseek($fp, 0, SEEK_END); + $tail = ftell($fp); + $finger = 0; + $finger_rev = 0; + + // find chunk + while ($tail-$head>$chunk_size) { + $finger = $head+floor(($tail-$head)/2.0); + fseek($fp, $finger); + fgets($fp); // slip the finger forward to a new line + $finger = ftell($fp); + $tmp = fgets($fp); // then read at that location + $tmp = parseChangelogLine($tmp); + $finger_rev = $tmp['date']; + if ($finger==$head || $finger==$tail) { break; } + if ($finger_rev>$rev) { + $tail = $finger; + } else { + $head = $finger; + } + } + + if ($tail-$head<1) { + // cound not find chunk, assume requested rev is missing + fclose($fp); + return false; + } - // read chunk - $chunk = ''; - $chunk_size = max($tail-$head, 0); // found chunk size - $got = 0; - fseek($fp, $head); - while ($got<$chunk_size && !feof($fp)) { - $tmp = @fread($fp, max($chunk_size-$got, 0)); - if ($tmp===false) { break; } //error state - $got += strlen($tmp); - $chunk .= $tmp; + // read chunk + $chunk = ''; + $chunk_size = max($tail-$head, 0); // found chunk size + $got = 0; + fseek($fp, $head); + while ($got<$chunk_size && !feof($fp)) { + $tmp = @fread($fp, max($chunk_size-$got, 0)); + if ($tmp===false) { break; } //error state + $got += strlen($tmp); + $chunk .= $tmp; + } + $lines = explode("\n", $chunk); + array_pop($lines); // remove trailing newline + fclose($fp); } - $lines = explode("\n", $chunk); - array_pop($lines); // remove trailing newline - fclose($fp); - } - - // parse and cache changelog lines - foreach ($lines as $value) { - $tmp = parseChangelogLine($value); - if ($tmp!==false) { - $cache[$id][$tmp['date']] = $tmp; + + // parse and cache changelog lines + foreach ($lines as $value) { + $tmp = parseChangelogLine($value); + if ($tmp!==false) { + $cache[$id][$tmp['date']] = $tmp; + } } - } - if (!isset($cache[$id][$rev])) { return false; } - return $cache[$id][$rev]; + if (!isset($cache[$id][$rev])) { return false; } + return $cache[$id][$rev]; } /** @@ -388,87 +387,87 @@ function getRevisionInfo($id, $rev, $chunk_size=8192) { * @author Ben Coburn <btcoburn@silicodon.net> */ function getRevisions($id, $first, $num, $chunk_size=8192) { - global $cache_revinfo; - $cache =& $cache_revinfo; - if (!isset($cache[$id])) { $cache[$id] = array(); } - - $revs = array(); - $lines = array(); - $count = 0; - $file = metaFN($id, '.changes'); - $num = max($num, 0); - $chunk_size = max($chunk_size, 0); - if ($first<0) { $first = 0; } - else if (@file_exists(wikiFN($id))) { - // skip current revision if the page exists - $first = max($first+1, 0); - } - - if (!@file_exists($file)) { return $revs; } - if (filesize($file)<$chunk_size || $chunk_size==0) { - // read whole file - $lines = file($file); - if ($lines===false) { return $revs; } - } else { - // read chunks backwards - $fp = fopen($file, 'rb'); // "file pointer" - if ($fp===false) { return $revs; } - fseek($fp, 0, SEEK_END); - $tail = ftell($fp); - - // chunk backwards - $finger = max($tail-$chunk_size, 0); - while ($count<$num+$first) { - fseek($fp, $finger); - if ($finger>0) { - fgets($fp); // slip the finger forward to a new line - $finger = ftell($fp); - } - - // read chunk - if ($tail<=$finger) { break; } - $chunk = ''; - $read_size = max($tail-$finger, 0); // found chunk size - $got = 0; - while ($got<$read_size && !feof($fp)) { - $tmp = @fread($fp, max($read_size-$got, 0)); - if ($tmp===false) { break; } //error state - $got += strlen($tmp); - $chunk .= $tmp; - } - $tmp = explode("\n", $chunk); - array_pop($tmp); // remove trailing newline - - // combine with previous chunk - $count += count($tmp); - $lines = array_merge($tmp, $lines); - - // next chunk - if ($finger==0) { break; } // already read all the lines - else { - $tail = $finger; + global $cache_revinfo; + $cache =& $cache_revinfo; + if (!isset($cache[$id])) { $cache[$id] = array(); } + + $revs = array(); + $lines = array(); + $count = 0; + $file = metaFN($id, '.changes'); + $num = max($num, 0); + $chunk_size = max($chunk_size, 0); + if ($first<0) { $first = 0; } + else if (@file_exists(wikiFN($id))) { + // skip current revision if the page exists + $first = max($first+1, 0); + } + + if (!@file_exists($file)) { return $revs; } + if (filesize($file)<$chunk_size || $chunk_size==0) { + // read whole file + $lines = file($file); + if ($lines===false) { return $revs; } + } else { + // read chunks backwards + $fp = fopen($file, 'rb'); // "file pointer" + if ($fp===false) { return $revs; } + fseek($fp, 0, SEEK_END); + $tail = ftell($fp); + + // chunk backwards $finger = max($tail-$chunk_size, 0); - } + while ($count<$num+$first) { + fseek($fp, $finger); + if ($finger>0) { + fgets($fp); // slip the finger forward to a new line + $finger = ftell($fp); + } + + // read chunk + if ($tail<=$finger) { break; } + $chunk = ''; + $read_size = max($tail-$finger, 0); // found chunk size + $got = 0; + while ($got<$read_size && !feof($fp)) { + $tmp = @fread($fp, max($read_size-$got, 0)); + if ($tmp===false) { break; } //error state + $got += strlen($tmp); + $chunk .= $tmp; + } + $tmp = explode("\n", $chunk); + array_pop($tmp); // remove trailing newline + + // combine with previous chunk + $count += count($tmp); + $lines = array_merge($tmp, $lines); + + // next chunk + if ($finger==0) { break; } // already read all the lines + else { + $tail = $finger; + $finger = max($tail-$chunk_size, 0); + } + } + fclose($fp); } - fclose($fp); - } - - // skip parsing extra lines - $num = max(min(count($lines)-$first, $num), 0); - if ($first>0 && $num>0) { $lines = array_slice($lines, max(count($lines)-$first-$num, 0), $num); } - else if ($first>0 && $num==0) { $lines = array_slice($lines, 0, max(count($lines)-$first, 0)); } - else if ($first==0 && $num>0) { $lines = array_slice($lines, max(count($lines)-$num, 0)); } - - // handle lines in reverse order - for ($i = count($lines)-1; $i >= 0; $i--) { - $tmp = parseChangelogLine($lines[$i]); - if ($tmp!==false) { - $cache[$id][$tmp['date']] = $tmp; - $revs[] = $tmp['date']; + + // skip parsing extra lines + $num = max(min(count($lines)-$first, $num), 0); + if ($first>0 && $num>0) { $lines = array_slice($lines, max(count($lines)-$first-$num, 0), $num); } + else if ($first>0 && $num==0) { $lines = array_slice($lines, 0, max(count($lines)-$first, 0)); } + else if ($first==0 && $num>0) { $lines = array_slice($lines, max(count($lines)-$num, 0)); } + + // handle lines in reverse order + for ($i = count($lines)-1; $i >= 0; $i--) { + $tmp = parseChangelogLine($lines[$i]); + if ($tmp!==false) { + $cache[$id][$tmp['date']] = $tmp; + $revs[] = $tmp['date']; + } } - } - return $revs; + return $revs; } diff --git a/inc/cliopts.php b/inc/cliopts.php index a3698ab24..588f0bc6d 100644 --- a/inc/cliopts.php +++ b/inc/cliopts.php @@ -1,32 +1,34 @@ <?php /** -* Brutally chopped and modified from http://pear.php.net/package/Console_Getopts -*/ -// +----------------------------------------------------------------------+ -// | PHP Version 4 | -// +----------------------------------------------------------------------+ -// | Copyright (c) 1997-2003 The PHP Group | -// +----------------------------------------------------------------------+ -// | This source file is subject to version 3.0 of the PHP license, | -// | that is bundled with this package in the file LICENSE, and is | -// | available through the world-wide-web at the following url: | -// | http://www.php.net/license/3_0.txt. | -// | If you did not receive a copy of the PHP license and are unable to | -// | obtain it through the world-wide-web, please send a note to | -// | license@php.net so we can mail you a copy immediately. | -// +----------------------------------------------------------------------+ -// | Author: Andrei Zmievski <andrei@php.net> | -// | Modified: Harry Fuecks hfuecks gmail.com | -// +----------------------------------------------------------------------+ -// - + * Brutally chopped and modified from http://pear.php.net/package/Console_Getopts + * + * PHP Version 5 + * + * Copyright (c) 1997-2004 The PHP Group + * + * LICENSE: This source file is subject to the New BSD license that is + * available through the world-wide-web at the following URI: + * http://www.opensource.org/licenses/bsd-license.php. If you did not receive + * a copy of the New BSD License and are unable to obtain it through the web, + * please send a note to license@php.net so we can mail you a copy immediately. + * + * @category Console + * @package Console_Getopt + * @author Andrei Zmievski <andrei@php.net> + * @modified Harry Fuecks hfuecks gmail.com + * @modified Tanguy Ortolo <tanguy+dokuwiki@ortolo.eu> + * @license http://www.opensource.org/licenses/bsd-license.php New BSD License + * @version CVS: $Id$ + * @link http://pear.php.net/package/Console_Getopt + * + */ //------------------------------------------------------------------------------ /** -* Sets up CLI environment based on SAPI and PHP version -* Helps resolve some issues between the CGI and CLI SAPIs -* as well is inconsistencies between PHP 4.3+ and older versions -*/ + * Sets up CLI environment based on SAPI and PHP version + * Helps resolve some issues between the CGI and CLI SAPIs + * as well is inconsistencies between PHP 4.3+ and older versions + */ if (version_compare(phpversion(), '4.3.0', '<') || php_sapi_name() == 'cgi') { // Handle output buffering @ob_end_flush(); @@ -67,16 +69,16 @@ define('DOKU_CLI_OPTS_ARG_READ',5);//Could not read argv * @author Andrei Zmievski <andrei@php.net> * */ - class Doku_Cli_Opts { +class Doku_Cli_Opts { /** - * <?php ?> - * @see http://www.sitepoint.com/article/php-command-line-1/3 - * @param string executing file name - this MUST be passed the __FILE__ constant - * @param string short options - * @param array (optional) long options - * @return Doku_Cli_Opts_Container or Doku_Cli_Opts_Error - */ + * <?php ?> + * @see http://www.sitepoint.com/article/php-command-line-1/3 + * @param string executing file name - this MUST be passed the __FILE__ constant + * @param string short options + * @param array (optional) long options + * @return Doku_Cli_Opts_Container or Doku_Cli_Opts_Error + */ function & getOptions($bin_file, $short_options, $long_options = null) { $args = Doku_Cli_Opts::readPHPArgv(); @@ -99,18 +101,74 @@ define('DOKU_CLI_OPTS_ARG_READ',5);//Could not read argv return $container; } + /** + * Parses the command-line options. + * + * The first parameter to this function should be the list of command-line + * arguments without the leading reference to the running program. + * + * The second parameter is a string of allowed short options. Each of the + * option letters can be followed by a colon ':' to specify that the option + * requires an argument, or a double colon '::' to specify that the option + * takes an optional argument. + * + * The third argument is an optional array of allowed long options. The + * leading '--' should not be included in the option name. Options that + * require an argument should be followed by '=', and options that take an + * option argument should be followed by '=='. + * + * The return value is an array of two elements: the list of parsed + * options and the list of non-option command-line arguments. Each entry in + * the list of parsed options is a pair of elements - the first one + * specifies the option, and the second one specifies the option argument, + * if there was one. + * + * Long and short options can be mixed. + * + * Most of the semantics of this function are based on GNU getopt_long(). + * + * @param array $args an array of command-line arguments + * @param string $short_options specifies the list of allowed short options + * @param array $long_options specifies the list of allowed long options + * + * @return array two-element array containing the list of parsed options and + * the non-option arguments + * @access public + */ function getopt2($args, $short_options, $long_options = null) { return Doku_Cli_Opts::doGetopt( 2, $args, $short_options, $long_options ); } + /** + * This function expects $args to start with the script name (POSIX-style). + * Preserved for backwards compatibility. + * + * @param array $args an array of command-line arguments + * @param string $short_options specifies the list of allowed short options + * @param array $long_options specifies the list of allowed long options + * + * @see getopt2() + * @return array two-element array containing the list of parsed options and + * the non-option arguments + */ function getopt($args, $short_options, $long_options = null) { return Doku_Cli_Opts::doGetopt( 1, $args, $short_options, $long_options ); } + /** + * The actual implementation of the argument parsing code. + * + * @param int $version Version to use + * @param array $args an array of command-line arguments + * @param string $short_options specifies the list of allowed short options + * @param array $long_options specifies the list of allowed long options + * + * @return array + */ function doGetopt($version, $args, $short_options, $long_options = null) { // in case you pass directly readPHPArgv() as the first arg @@ -157,6 +215,10 @@ define('DOKU_CLI_OPTS_ARG_READ',5);//Could not read argv $error = Doku_Cli_Opts::_parseLongOption(substr($arg, 2), $long_options, $opts, $args); if (Doku_Cli_Opts::isError($error)) return $error; + } elseif ($arg == '-') { + // - is stdin + $non_opts = array_merge($non_opts, array_slice($args, $i)); + break; } else { $error = Doku_Cli_Opts::_parseShortOption(substr($arg, 1), $short_options, $opts, $args); if (Doku_Cli_Opts::isError($error)) @@ -167,8 +229,20 @@ define('DOKU_CLI_OPTS_ARG_READ',5);//Could not read argv return array($opts, $non_opts); } + /** + * Parse short option + * + * @param string $arg Argument + * @param string[] $short_options Available short options + * @param string[][] &$opts + * @param string[] &$args + * + * @access private + * @return void + */ function _parseShortOption($arg, $short_options, &$opts, &$args) { - for ($i = 0; $i < strlen($arg); $i++) { + $len = strlen($arg); + for ($i = 0; $i < $len; $i++) { $opt = $arg{$i}; $opt_arg = null; @@ -195,8 +269,14 @@ define('DOKU_CLI_OPTS_ARG_READ',5);//Could not read argv if ($i + 1 < strlen($arg)) { $opts[] = array($opt, substr($arg, $i + 1)); break; - } else if (list(, $opt_arg) = each($args)) + } else if (list(, $opt_arg) = each($args)) { /* Else use the next argument. */; + if (Doku_Cli_Opts::_isShortOpt($opt_arg) || Doku_Cli_Opts::_isLongOpt($opt_arg)) + return Doku_Cli_Opts::raiseError( + DOKU_CLI_OPTS_OPT_ARG_REQUIRED, + "option requires an argument --$opt" + ); + } else return Doku_Cli_Opts::raiseError( DOKU_CLI_OPTS_OPT_ARG_REQUIRED, @@ -209,25 +289,75 @@ define('DOKU_CLI_OPTS_ARG_READ',5);//Could not read argv } } + /** + * Checks if an argument is a short option + * + * @param string $arg Argument to check + * + * @access private + * @return bool + */ + function _isShortOpt($arg) + { + return strlen($arg) == 2 && $arg[0] == '-' + && preg_match('/[a-zA-Z]/', $arg[1]); + } + + /** + * Checks if an argument is a long option + * + * @param string $arg Argument to check + * + * @access private + * @return bool + */ + function _isLongOpt($arg) + { + return strlen($arg) > 2 && $arg[0] == '-' && $arg[1] == '-' && + preg_match('/[a-zA-Z]+$/', substr($arg, 2)); + } + + /** + * Parse long option + * + * @param string $arg Argument + * @param string[] $long_options Available long options + * @param string[][] &$opts + * @param string[] &$args + * + * @access private + * @return void|PEAR_Error + */ function _parseLongOption($arg, $long_options, &$opts, &$args) { - @list($opt, $opt_arg) = explode('=', $arg); + @list($opt, $opt_arg) = explode('=', $arg, 2); $opt_len = strlen($opt); + $opt_cnt = count($long_options); - for ($i = 0; $i < count($long_options); $i++) { + for ($i = 0; $i < $opt_cnt; $i++) { $long_opt = $long_options[$i]; $opt_start = substr($long_opt, 0, $opt_len); + $long_opt_name = str_replace('=', '', $long_opt); + /* Option doesn't match. Go on to the next one. */ if ($opt_start != $opt) continue; - $opt_rest = substr($long_opt, $opt_len); + $opt_rest = substr($long_opt, $opt_len); /* Check that the options uniquely matches one of the allowed options. */ + if ($i + 1 < count($long_options)) { + $next_option_rest = substr($long_options[$i + 1], $opt_len); + } else { + $next_option_rest = ''; + } + if ($opt_rest != '' && $opt{0} != '=' && - $i + 1 < count($long_options) && - $opt == substr($long_options[$i+1], 0, $opt_len)) { + $i + 1 < $opt_cnt && + $opt == substr($long_options[$i+1], 0, $opt_len) && + $next_option_rest != '' && + $next_option_rest{0} != '=') { return Doku_Cli_Opts::raiseError( DOKU_CLI_OPTS_OPT_ABIGUOUS, "Option --$opt is ambiguous" @@ -244,6 +374,13 @@ define('DOKU_CLI_OPTS_ARG_READ',5);//Could not read argv "Option --$opt requires an argument" ); } + + if (Doku_Cli_Opts::_isShortOpt($opt_arg) + || Doku_Cli_Opts::_isLongOpt($opt_arg)) + return Doku_Cli_Opts::raiseError( + DOKU_CLI_OPTS_OPT_ARG_REQUIRED, + "Option --$opt requires an argument" + ); } } else if ($opt_arg) { return Doku_Cli_Opts::raiseError( @@ -262,6 +399,13 @@ define('DOKU_CLI_OPTS_ARG_READ',5);//Could not read argv ); } + /** + * Safely read the $argv PHP array across different PHP configurations. + * Will take care on register_globals and register_argc_argv ini directives + * + * @access public + * @return mixed the $argv PHP array or PEAR error if not registered + */ function readPHPArgv() { global $argv; if (!is_array($argv)) { @@ -326,7 +470,6 @@ class Doku_Cli_Opts_Container { $this->options[$opt_name] = $option[1]; } - $this->args = $options[1]; } diff --git a/inc/common.php b/inc/common.php index 321148c7a..bf5987c28 100644 --- a/inc/common.php +++ b/inc/common.php @@ -7,12 +7,6 @@ */ if(!defined('DOKU_INC')) die('meh.'); -require_once(DOKU_INC.'inc/io.php'); -require_once(DOKU_INC.'inc/changelog.php'); -require_once(DOKU_INC.'inc/utf8.php'); -require_once(DOKU_INC.'inc/mail.php'); -require_once(DOKU_INC.'inc/parserutils.php'); -require_once(DOKU_INC.'inc/infoutils.php'); /** * These constants are used with the recents function @@ -29,7 +23,7 @@ define('RECENTS_MEDIA_CHANGES',16); * @see htmlspecialchars() */ function hsc($string){ - return htmlspecialchars($string, ENT_QUOTES, 'UTF-8'); + return htmlspecialchars($string, ENT_QUOTES, 'UTF-8'); } /** @@ -40,7 +34,7 @@ function hsc($string){ * @author Andreas Gohr <andi@splitbrain.org> */ function ptln($string,$indent=0){ - echo str_repeat(' ', $indent)."$string\n"; + echo str_repeat(' ', $indent)."$string\n"; } /** @@ -49,7 +43,7 @@ function ptln($string,$indent=0){ * @author Andreas Gohr <andi@splitbrain.org> */ function stripctl($string){ - return preg_replace('/[\x00-\x1F]+/s','',$string); + return preg_replace('/[\x00-\x1F]+/s','',$string); } /** @@ -61,21 +55,21 @@ function stripctl($string){ * @return string */ function getSecurityToken(){ - return md5(auth_cookiesalt().session_id()); + return md5(auth_cookiesalt().session_id()); } /** * Check the secret CSRF token */ function checkSecurityToken($token=null){ - if(!$_SERVER['REMOTE_USER']) return true; // no logged in user, no need for a check + if(!$_SERVER['REMOTE_USER']) return true; // no logged in user, no need for a check - if(is_null($token)) $token = $_REQUEST['sectok']; - if(getSecurityToken() != $token){ - msg('Security Token did not match. Possible CSRF attack.',-1); - return false; - } - return true; + if(is_null($token)) $token = $_REQUEST['sectok']; + if(getSecurityToken() != $token){ + msg('Security Token did not match. Possible CSRF attack.',-1); + return false; + } + return true; } /** @@ -84,12 +78,12 @@ function checkSecurityToken($token=null){ * @author Andreas Gohr <andi@splitbrain.org> */ function formSecurityToken($print=true){ - $ret = '<div class="no"><input type="hidden" name="sectok" value="'.getSecurityToken().'" /></div>'."\n"; - if($print){ - echo $ret; - }else{ - return $ret; - } + $ret = '<div class="no"><input type="hidden" name="sectok" value="'.getSecurityToken().'" /></div>'."\n"; + if($print){ + echo $ret; + }else{ + return $ret; + } } /** @@ -99,128 +93,127 @@ function formSecurityToken($print=true){ * @author Andreas Gohr <andi@splitbrain.org> */ function pageinfo(){ - global $ID; - global $REV; - global $RANGE; - global $USERINFO; - global $conf; - global $lang; - - // include ID & REV not redundant, as some parts of DokuWiki may temporarily change $ID, e.g. p_wiki_xhtml - // FIXME ... perhaps it would be better to ensure the temporary changes weren't necessary - $info['id'] = $ID; - $info['rev'] = $REV; + global $ID; + global $REV; + global $RANGE; + global $USERINFO; + global $conf; + global $lang; + + // include ID & REV not redundant, as some parts of DokuWiki may temporarily change $ID, e.g. p_wiki_xhtml + // FIXME ... perhaps it would be better to ensure the temporary changes weren't necessary + $info['id'] = $ID; + $info['rev'] = $REV; // set info about manager/admin status. $info['isadmin'] = false; $info['ismanager'] = false; - if(isset($_SERVER['REMOTE_USER'])){ - $info['userinfo'] = $USERINFO; - $info['perm'] = auth_quickaclcheck($ID); - $info['subscribed'] = is_subscribed($ID,$_SERVER['REMOTE_USER'],false); - $info['subscribedns'] = is_subscribed($ID,$_SERVER['REMOTE_USER'],true); - $info['client'] = $_SERVER['REMOTE_USER']; - - if($info['perm'] == AUTH_ADMIN){ - $info['isadmin'] = true; - $info['ismanager'] = true; - }elseif(auth_ismanager()){ - $info['ismanager'] = true; - } - - // if some outside auth were used only REMOTE_USER is set - if(!$info['userinfo']['name']){ - $info['userinfo']['name'] = $_SERVER['REMOTE_USER']; - } - - }else{ - $info['perm'] = auth_aclcheck($ID,'',null); - $info['subscribed'] = false; - $info['client'] = clientIP(true); - } - - $info['namespace'] = getNS($ID); - $info['locked'] = checklock($ID); - $info['filepath'] = fullpath(wikiFN($ID)); - $info['exists'] = @file_exists($info['filepath']); - if($REV){ - //check if current revision was meant - if($info['exists'] && (@filemtime($info['filepath'])==$REV)){ - $REV = ''; - }elseif($RANGE){ - //section editing does not work with old revisions! - $REV = ''; - $RANGE = ''; - msg($lang['nosecedit'],0); + if(isset($_SERVER['REMOTE_USER'])){ + $info['userinfo'] = $USERINFO; + $info['perm'] = auth_quickaclcheck($ID); + $info['subscribed'] = get_info_subscribed(); + $info['client'] = $_SERVER['REMOTE_USER']; + + if($info['perm'] == AUTH_ADMIN){ + $info['isadmin'] = true; + $info['ismanager'] = true; + }elseif(auth_ismanager()){ + $info['ismanager'] = true; + } + + // if some outside auth were used only REMOTE_USER is set + if(!$info['userinfo']['name']){ + $info['userinfo']['name'] = $_SERVER['REMOTE_USER']; + } + }else{ - //really use old revision - $info['filepath'] = fullpath(wikiFN($ID,$REV)); - $info['exists'] = @file_exists($info['filepath']); - } - } - $info['rev'] = $REV; - if($info['exists']){ - $info['writable'] = (is_writable($info['filepath']) && - ($info['perm'] >= AUTH_EDIT)); - }else{ - $info['writable'] = ($info['perm'] >= AUTH_CREATE); - } - $info['editable'] = ($info['writable'] && empty($info['lock'])); - $info['lastmod'] = @filemtime($info['filepath']); - - //load page meta data - $info['meta'] = p_get_metadata($ID); - - //who's the editor - if($REV){ - $revinfo = getRevisionInfo($ID, $REV, 1024); - }else{ - if (is_array($info['meta']['last_change'])) { - $revinfo = $info['meta']['last_change']; - } else { - $revinfo = getRevisionInfo($ID, $info['lastmod'], 1024); - // cache most recent changelog line in metadata if missing and still valid - if ($revinfo!==false) { + $info['perm'] = auth_aclcheck($ID,'',null); + $info['subscribed'] = false; + $info['client'] = clientIP(true); + } + + $info['namespace'] = getNS($ID); + $info['locked'] = checklock($ID); + $info['filepath'] = fullpath(wikiFN($ID)); + $info['exists'] = @file_exists($info['filepath']); + if($REV){ + //check if current revision was meant + if($info['exists'] && (@filemtime($info['filepath'])==$REV)){ + $REV = ''; + }elseif($RANGE){ + //section editing does not work with old revisions! + $REV = ''; + $RANGE = ''; + msg($lang['nosecedit'],0); + }else{ + //really use old revision + $info['filepath'] = fullpath(wikiFN($ID,$REV)); + $info['exists'] = @file_exists($info['filepath']); + } + } + $info['rev'] = $REV; + if($info['exists']){ + $info['writable'] = (is_writable($info['filepath']) && + ($info['perm'] >= AUTH_EDIT)); + }else{ + $info['writable'] = ($info['perm'] >= AUTH_CREATE); + } + $info['editable'] = ($info['writable'] && empty($info['locked'])); + $info['lastmod'] = @filemtime($info['filepath']); + + //load page meta data + $info['meta'] = p_get_metadata($ID); + + //who's the editor + if($REV){ + $revinfo = getRevisionInfo($ID, $REV, 1024); + }else{ + if (is_array($info['meta']['last_change'])) { + $revinfo = $info['meta']['last_change']; + } else { + $revinfo = getRevisionInfo($ID, $info['lastmod'], 1024); + // cache most recent changelog line in metadata if missing and still valid + if ($revinfo!==false) { + $info['meta']['last_change'] = $revinfo; + p_set_metadata($ID, array('last_change' => $revinfo)); + } + } + } + //and check for an external edit + if($revinfo!==false && $revinfo['date']!=$info['lastmod']){ + // cached changelog line no longer valid + $revinfo = false; $info['meta']['last_change'] = $revinfo; p_set_metadata($ID, array('last_change' => $revinfo)); - } - } - } - //and check for an external edit - if($revinfo!==false && $revinfo['date']!=$info['lastmod']){ - // cached changelog line no longer valid - $revinfo = false; - $info['meta']['last_change'] = $revinfo; - p_set_metadata($ID, array('last_change' => $revinfo)); - } - - $info['ip'] = $revinfo['ip']; - $info['user'] = $revinfo['user']; - $info['sum'] = $revinfo['sum']; - // See also $INFO['meta']['last_change'] which is the most recent log line for page $ID. - // Use $INFO['meta']['last_change']['type']===DOKU_CHANGE_TYPE_MINOR_EDIT in place of $info['minor']. - - if($revinfo['user']){ - $info['editor'] = $revinfo['user']; - }else{ - $info['editor'] = $revinfo['ip']; - } - - // draft - $draft = getCacheName($info['client'].$ID,'.draft'); - if(@file_exists($draft)){ - if(@filemtime($draft) < @filemtime(wikiFN($ID))){ - // remove stale draft - @unlink($draft); + } + + $info['ip'] = $revinfo['ip']; + $info['user'] = $revinfo['user']; + $info['sum'] = $revinfo['sum']; + // See also $INFO['meta']['last_change'] which is the most recent log line for page $ID. + // Use $INFO['meta']['last_change']['type']===DOKU_CHANGE_TYPE_MINOR_EDIT in place of $info['minor']. + + if($revinfo['user']){ + $info['editor'] = $revinfo['user']; }else{ - $info['draft'] = $draft; + $info['editor'] = $revinfo['ip']; + } + + // draft + $draft = getCacheName($info['client'].$ID,'.draft'); + if(@file_exists($draft)){ + if(@filemtime($draft) < @filemtime(wikiFN($ID))){ + // remove stale draft + @unlink($draft); + }else{ + $info['draft'] = $draft; + } } - } - // mobile detection - $info['ismobile'] = clientismobile(); + // mobile detection + $info['ismobile'] = clientismobile(); - return $info; + return $info; } /** @@ -229,16 +222,16 @@ function pageinfo(){ * @author Andreas Gohr */ function buildURLparams($params, $sep='&'){ - $url = ''; - $amp = false; - foreach($params as $key => $val){ - if($amp) $url .= $sep; - - $url .= $key.'='; - $url .= rawurlencode((string)$val); - $amp = true; - } - return $url; + $url = ''; + $amp = false; + foreach($params as $key => $val){ + if($amp) $url .= $sep; + + $url .= rawurlencode($key).'='; + $url .= rawurlencode((string)$val); + $amp = true; + } + return $url; } /** @@ -249,16 +242,16 @@ function buildURLparams($params, $sep='&'){ * @author Andreas Gohr */ function buildAttributes($params,$skipempty=false){ - $url = ''; - foreach($params as $key => $val){ - if($key{0} == '_') continue; - if($val === '' && $skipempty) continue; - - $url .= $key.'="'; - $url .= htmlspecialchars ($val); - $url .= '" '; - } - return $url; + $url = ''; + foreach($params as $key => $val){ + if($key{0} == '_') continue; + if($val === '' && $skipempty) continue; + + $url .= $key.'="'; + $url .= htmlspecialchars ($val); + $url .= '" '; + } + return $url; } @@ -268,47 +261,47 @@ function buildAttributes($params,$skipempty=false){ * @author Andreas Gohr <andi@splitbrain.org> */ function breadcrumbs(){ - // we prepare the breadcrumbs early for quick session closing - static $crumbs = null; - if($crumbs != null) return $crumbs; - - global $ID; - global $ACT; - global $conf; - - //first visit? - $crumbs = isset($_SESSION[DOKU_COOKIE]['bc']) ? $_SESSION[DOKU_COOKIE]['bc'] : array(); - //we only save on show and existing wiki documents - $file = wikiFN($ID); - if($ACT != 'show' || !@file_exists($file)){ + // we prepare the breadcrumbs early for quick session closing + static $crumbs = null; + if($crumbs != null) return $crumbs; + + global $ID; + global $ACT; + global $conf; + + //first visit? + $crumbs = isset($_SESSION[DOKU_COOKIE]['bc']) ? $_SESSION[DOKU_COOKIE]['bc'] : array(); + //we only save on show and existing wiki documents + $file = wikiFN($ID); + if($ACT != 'show' || !@file_exists($file)){ + $_SESSION[DOKU_COOKIE]['bc'] = $crumbs; + return $crumbs; + } + + // page names + $name = noNSorNS($ID); + if (useHeading('navigation')) { + // get page title + $title = p_get_first_heading($ID,true); + if ($title) { + $name = $title; + } + } + + //remove ID from array + if (isset($crumbs[$ID])) { + unset($crumbs[$ID]); + } + + //add to array + $crumbs[$ID] = $name; + //reduce size + while(count($crumbs) > $conf['breadcrumbs']){ + array_shift($crumbs); + } + //save to session $_SESSION[DOKU_COOKIE]['bc'] = $crumbs; return $crumbs; - } - - // page names - $name = noNSorNS($ID); - if (useHeading('navigation')) { - // get page title - $title = p_get_first_heading($ID,true); - if ($title) { - $name = $title; - } - } - - //remove ID from array - if (isset($crumbs[$ID])) { - unset($crumbs[$ID]); - } - - //add to array - $crumbs[$ID] = $name; - //reduce size - while(count($crumbs) > $conf['breadcrumbs']){ - array_shift($crumbs); - } - //save to session - $_SESSION[DOKU_COOKIE]['bc'] = $crumbs; - return $crumbs; } /** @@ -323,19 +316,19 @@ function breadcrumbs(){ * @author Andreas Gohr <andi@splitbrain.org> */ function idfilter($id,$ue=true){ - global $conf; - if ($conf['useslash'] && $conf['userewrite']){ - $id = strtr($id,':','/'); - }elseif (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' && - $conf['userewrite']) { - $id = strtr($id,':',';'); - } - if($ue){ - $id = rawurlencode($id); - $id = str_replace('%3A',':',$id); //keep as colon - $id = str_replace('%2F','/',$id); //keep as slash - } - return $id; + global $conf; + if ($conf['useslash'] && $conf['userewrite']){ + $id = strtr($id,':','/'); + }elseif (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' && + $conf['userewrite']) { + $id = strtr($id,':',';'); + } + if($ue){ + $id = rawurlencode($id); + $id = str_replace('%3A',':',$id); //keep as colon + $id = str_replace('%2F','/',$id); //keep as slash + } + return $id; } /** @@ -347,35 +340,35 @@ function idfilter($id,$ue=true){ * @author Andreas Gohr <andi@splitbrain.org> */ function wl($id='',$more='',$abs=false,$sep='&'){ - global $conf; - if(is_array($more)){ - $more = buildURLparams($more,$sep); - }else{ - $more = str_replace(',',$sep,$more); - } - - $id = idfilter($id); - if($abs){ - $xlink = DOKU_URL; - }else{ - $xlink = DOKU_BASE; - } - - if($conf['userewrite'] == 2){ - $xlink .= DOKU_SCRIPT.'/'.$id; - if($more) $xlink .= '?'.$more; - }elseif($conf['userewrite']){ - $xlink .= $id; - if($more) $xlink .= '?'.$more; - }elseif($id){ - $xlink .= DOKU_SCRIPT.'?id='.$id; - if($more) $xlink .= $sep.$more; - }else{ - $xlink .= DOKU_SCRIPT; - if($more) $xlink .= '?'.$more; - } - - return $xlink; + global $conf; + if(is_array($more)){ + $more = buildURLparams($more,$sep); + }else{ + $more = str_replace(',',$sep,$more); + } + + $id = idfilter($id); + if($abs){ + $xlink = DOKU_URL; + }else{ + $xlink = DOKU_BASE; + } + + if($conf['userewrite'] == 2){ + $xlink .= DOKU_SCRIPT.'/'.$id; + if($more) $xlink .= '?'.$more; + }elseif($conf['userewrite']){ + $xlink .= $id; + if($more) $xlink .= '?'.$more; + }elseif($id){ + $xlink .= DOKU_SCRIPT.'?id='.$id; + if($more) $xlink .= $sep.$more; + }else{ + $xlink .= DOKU_SCRIPT; + if($more) $xlink .= '?'.$more; + } + + return $xlink; } /** @@ -386,33 +379,33 @@ function wl($id='',$more='',$abs=false,$sep='&'){ * @author Ben Coburn <btcoburn@silicodon.net> */ function exportlink($id='',$format='raw',$more='',$abs=false,$sep='&'){ - global $conf; - if(is_array($more)){ - $more = buildURLparams($more,$sep); - }else{ - $more = str_replace(',',$sep,$more); - } - - $format = rawurlencode($format); - $id = idfilter($id); - if($abs){ - $xlink = DOKU_URL; - }else{ - $xlink = DOKU_BASE; - } - - if($conf['userewrite'] == 2){ - $xlink .= DOKU_SCRIPT.'/'.$id.'?do=export_'.$format; - if($more) $xlink .= $sep.$more; - }elseif($conf['userewrite'] == 1){ - $xlink .= '_export/'.$format.'/'.$id; - if($more) $xlink .= '?'.$more; - }else{ - $xlink .= DOKU_SCRIPT.'?do=export_'.$format.$sep.'id='.$id; - if($more) $xlink .= $sep.$more; - } - - return $xlink; + global $conf; + if(is_array($more)){ + $more = buildURLparams($more,$sep); + }else{ + $more = str_replace(',',$sep,$more); + } + + $format = rawurlencode($format); + $id = idfilter($id); + if($abs){ + $xlink = DOKU_URL; + }else{ + $xlink = DOKU_BASE; + } + + if($conf['userewrite'] == 2){ + $xlink .= DOKU_SCRIPT.'/'.$id.'?do=export_'.$format; + if($more) $xlink .= $sep.$more; + }elseif($conf['userewrite'] == 1){ + $xlink .= '_export/'.$format.'/'.$id; + if($more) $xlink .= '?'.$more; + }else{ + $xlink .= DOKU_SCRIPT.'?do=export_'.$format.$sep.'id='.$id; + if($more) $xlink .= $sep.$more; + } + + return $xlink; } /** @@ -430,71 +423,71 @@ function exportlink($id='',$format='raw',$more='',$abs=false,$sep='&'){ * @param boolean $abs - Create an absolute URL */ function ml($id='',$more='',$direct=true,$sep='&',$abs=false){ - global $conf; - if(is_array($more)){ - // strip defaults for shorter URLs - if(isset($more['cache']) && $more['cache'] == 'cache') unset($more['cache']); - if(!$more['w']) unset($more['w']); - if(!$more['h']) unset($more['h']); - if(isset($more['id']) && $direct) unset($more['id']); - $more = buildURLparams($more,$sep); - }else{ - $more = str_replace('cache=cache','',$more); //skip default - $more = str_replace(',,',',',$more); - $more = str_replace(',',$sep,$more); - } - - if($abs){ - $xlink = DOKU_URL; - }else{ - $xlink = DOKU_BASE; - } - - // external URLs are always direct without rewriting - if(preg_match('#^(https?|ftp)://#i',$id)){ - $xlink .= 'lib/exe/fetch.php'; - // add hash: - $xlink .= '?hash='.substr(md5(auth_cookiesalt().$id),0,6); - if($more){ - $xlink .= $sep.$more; - $xlink .= $sep.'media='.rawurlencode($id); + global $conf; + if(is_array($more)){ + // strip defaults for shorter URLs + if(isset($more['cache']) && $more['cache'] == 'cache') unset($more['cache']); + if(!$more['w']) unset($more['w']); + if(!$more['h']) unset($more['h']); + if(isset($more['id']) && $direct) unset($more['id']); + $more = buildURLparams($more,$sep); }else{ - $xlink .= $sep.'media='.rawurlencode($id); + $more = str_replace('cache=cache','',$more); //skip default + $more = str_replace(',,',',',$more); + $more = str_replace(',',$sep,$more); + } + + if($abs){ + $xlink = DOKU_URL; + }else{ + $xlink = DOKU_BASE; + } + + // external URLs are always direct without rewriting + if(preg_match('#^(https?|ftp)://#i',$id)){ + $xlink .= 'lib/exe/fetch.php'; + // add hash: + $xlink .= '?hash='.substr(md5(auth_cookiesalt().$id),0,6); + if($more){ + $xlink .= $sep.$more; + $xlink .= $sep.'media='.rawurlencode($id); + }else{ + $xlink .= $sep.'media='.rawurlencode($id); + } + return $xlink; } - return $xlink; - } - $id = idfilter($id); + $id = idfilter($id); - // decide on scriptname - if($direct){ - if($conf['userewrite'] == 1){ - $script = '_media'; + // decide on scriptname + if($direct){ + if($conf['userewrite'] == 1){ + $script = '_media'; + }else{ + $script = 'lib/exe/fetch.php'; + } }else{ - $script = 'lib/exe/fetch.php'; + if($conf['userewrite'] == 1){ + $script = '_detail'; + }else{ + $script = 'lib/exe/detail.php'; + } } - }else{ - if($conf['userewrite'] == 1){ - $script = '_detail'; + + // build URL based on rewrite mode + if($conf['userewrite']){ + $xlink .= $script.'/'.$id; + if($more) $xlink .= '?'.$more; }else{ - $script = 'lib/exe/detail.php'; - } - } - - // build URL based on rewrite mode - if($conf['userewrite']){ - $xlink .= $script.'/'.$id; - if($more) $xlink .= '?'.$more; - }else{ - if($more){ - $xlink .= $script.'?'.$more; - $xlink .= $sep.'media='.$id; - }else{ - $xlink .= $script.'?media='.$id; - } - } - - return $xlink; + if($more){ + $xlink .= $script.'?'.$more; + $xlink .= $sep.'media='.$id; + }else{ + $xlink .= $script.'?media='.$id; + } + } + + return $xlink; } @@ -506,10 +499,7 @@ function ml($id='',$more='',$direct=true,$sep='&',$abs=false){ * @author Andreas Gohr <andi@splitbrain.org> */ function script($script='doku.php'){ -# $link = getBaseURL(); -# $link .= $script; -# return $link; - return DOKU_BASE.DOKU_SCRIPT; + return DOKU_BASE.DOKU_SCRIPT; } /** @@ -537,54 +527,54 @@ function script($script='doku.php'){ * @return bool - true if a spam word was found */ function checkwordblock($text=''){ - global $TEXT; - global $PRE; - global $SUF; - global $conf; - global $INFO; - - if(!$conf['usewordblock']) return false; - - if(!$text) $text = "$PRE $TEXT $SUF"; - - // we prepare the text a tiny bit to prevent spammers circumventing URL checks - $text = preg_replace('!(\b)(www\.[\w.:?\-;,]+?\.[\w.:?\-;,]+?[\w/\#~:.?+=&%@\!\-.:?\-;,]+?)([.:?\-;,]*[^\w/\#~:.?+=&%@\!\-.:?\-;,])!i','\1http://\2 \2\3',$text); - - $wordblocks = getWordblocks(); - //how many lines to read at once (to work around some PCRE limits) - if(version_compare(phpversion(),'4.3.0','<')){ - //old versions of PCRE define a maximum of parenthesises even if no - //backreferences are used - the maximum is 99 - //this is very bad performancewise and may even be too high still - $chunksize = 40; - }else{ - //read file in chunks of 200 - this should work around the - //MAX_PATTERN_SIZE in modern PCRE - $chunksize = 200; - } - while($blocks = array_splice($wordblocks,0,$chunksize)){ - $re = array(); - #build regexp from blocks - foreach($blocks as $block){ - $block = preg_replace('/#.*$/','',$block); - $block = trim($block); - if(empty($block)) continue; - $re[] = $block; - } - if(count($re) && preg_match('#('.join('|',$re).')#si',$text,$matches)) { - //prepare event data - $data['matches'] = $matches; - $data['userinfo']['ip'] = $_SERVER['REMOTE_ADDR']; - if($_SERVER['REMOTE_USER']) { - $data['userinfo']['user'] = $_SERVER['REMOTE_USER']; - $data['userinfo']['name'] = $INFO['userinfo']['name']; - $data['userinfo']['mail'] = $INFO['userinfo']['mail']; - } - $callback = create_function('', 'return true;'); - return trigger_event('COMMON_WORDBLOCK_BLOCKED', $data, $callback, true); - } - } - return false; + global $TEXT; + global $PRE; + global $SUF; + global $conf; + global $INFO; + + if(!$conf['usewordblock']) return false; + + if(!$text) $text = "$PRE $TEXT $SUF"; + + // we prepare the text a tiny bit to prevent spammers circumventing URL checks + $text = preg_replace('!(\b)(www\.[\w.:?\-;,]+?\.[\w.:?\-;,]+?[\w/\#~:.?+=&%@\!\-.:?\-;,]+?)([.:?\-;,]*[^\w/\#~:.?+=&%@\!\-.:?\-;,])!i','\1http://\2 \2\3',$text); + + $wordblocks = getWordblocks(); + // how many lines to read at once (to work around some PCRE limits) + if(version_compare(phpversion(),'4.3.0','<')){ + // old versions of PCRE define a maximum of parenthesises even if no + // backreferences are used - the maximum is 99 + // this is very bad performancewise and may even be too high still + $chunksize = 40; + }else{ + // read file in chunks of 200 - this should work around the + // MAX_PATTERN_SIZE in modern PCRE + $chunksize = 200; + } + while($blocks = array_splice($wordblocks,0,$chunksize)){ + $re = array(); + // build regexp from blocks + foreach($blocks as $block){ + $block = preg_replace('/#.*$/','',$block); + $block = trim($block); + if(empty($block)) continue; + $re[] = $block; + } + if(count($re) && preg_match('#('.join('|',$re).')#si',$text,$matches)) { + // prepare event data + $data['matches'] = $matches; + $data['userinfo']['ip'] = $_SERVER['REMOTE_ADDR']; + if($_SERVER['REMOTE_USER']) { + $data['userinfo']['user'] = $_SERVER['REMOTE_USER']; + $data['userinfo']['name'] = $INFO['userinfo']['name']; + $data['userinfo']['mail'] = $INFO['userinfo']['mail']; + } + $callback = create_function('', 'return true;'); + return trigger_event('COMMON_WORDBLOCK_BLOCKED', $data, $callback, true); + } + } + return false; } /** @@ -601,60 +591,60 @@ function checkwordblock($text=''){ * @author Andreas Gohr <andi@splitbrain.org> */ function clientIP($single=false){ - $ip = array(); - $ip[] = $_SERVER['REMOTE_ADDR']; - if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) - $ip = array_merge($ip,explode(',',$_SERVER['HTTP_X_FORWARDED_FOR'])); - if(!empty($_SERVER['HTTP_X_REAL_IP'])) - $ip = array_merge($ip,explode(',',$_SERVER['HTTP_X_REAL_IP'])); - - // some IPv4/v6 regexps borrowed from Feyd - // see: http://forums.devnetwork.net/viewtopic.php?f=38&t=53479 - $dec_octet = '(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|[0-9])'; - $hex_digit = '[A-Fa-f0-9]'; - $h16 = "{$hex_digit}{1,4}"; - $IPv4Address = "$dec_octet\\.$dec_octet\\.$dec_octet\\.$dec_octet"; - $ls32 = "(?:$h16:$h16|$IPv4Address)"; - $IPv6Address = - "(?:(?:{$IPv4Address})|(?:". - "(?:$h16:){6}$ls32" . - "|::(?:$h16:){5}$ls32" . - "|(?:$h16)?::(?:$h16:){4}$ls32" . - "|(?:(?:$h16:){0,1}$h16)?::(?:$h16:){3}$ls32" . - "|(?:(?:$h16:){0,2}$h16)?::(?:$h16:){2}$ls32" . - "|(?:(?:$h16:){0,3}$h16)?::(?:$h16:){1}$ls32" . - "|(?:(?:$h16:){0,4}$h16)?::$ls32" . - "|(?:(?:$h16:){0,5}$h16)?::$h16" . - "|(?:(?:$h16:){0,6}$h16)?::" . - ")(?:\\/(?:12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))?)"; - - // remove any non-IP stuff - $cnt = count($ip); - $match = array(); - for($i=0; $i<$cnt; $i++){ - if(preg_match("/^$IPv4Address$/",$ip[$i],$match) || preg_match("/^$IPv6Address$/",$ip[$i],$match)) { - $ip[$i] = $match[0]; - } else { - $ip[$i] = ''; + $ip = array(); + $ip[] = $_SERVER['REMOTE_ADDR']; + if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) + $ip = array_merge($ip,explode(',',str_replace(' ','',$_SERVER['HTTP_X_FORWARDED_FOR']))); + if(!empty($_SERVER['HTTP_X_REAL_IP'])) + $ip = array_merge($ip,explode(',',str_replace(' ','',$_SERVER['HTTP_X_REAL_IP']))); + + // some IPv4/v6 regexps borrowed from Feyd + // see: http://forums.devnetwork.net/viewtopic.php?f=38&t=53479 + $dec_octet = '(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]\d|[0-9])'; + $hex_digit = '[A-Fa-f0-9]'; + $h16 = "{$hex_digit}{1,4}"; + $IPv4Address = "$dec_octet\\.$dec_octet\\.$dec_octet\\.$dec_octet"; + $ls32 = "(?:$h16:$h16|$IPv4Address)"; + $IPv6Address = + "(?:(?:{$IPv4Address})|(?:". + "(?:$h16:){6}$ls32" . + "|::(?:$h16:){5}$ls32" . + "|(?:$h16)?::(?:$h16:){4}$ls32" . + "|(?:(?:$h16:){0,1}$h16)?::(?:$h16:){3}$ls32" . + "|(?:(?:$h16:){0,2}$h16)?::(?:$h16:){2}$ls32" . + "|(?:(?:$h16:){0,3}$h16)?::(?:$h16:){1}$ls32" . + "|(?:(?:$h16:){0,4}$h16)?::$ls32" . + "|(?:(?:$h16:){0,5}$h16)?::$h16" . + "|(?:(?:$h16:){0,6}$h16)?::" . + ")(?:\\/(?:12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9]))?)"; + + // remove any non-IP stuff + $cnt = count($ip); + $match = array(); + for($i=0; $i<$cnt; $i++){ + if(preg_match("/^$IPv4Address$/",$ip[$i],$match) || preg_match("/^$IPv6Address$/",$ip[$i],$match)) { + $ip[$i] = $match[0]; + } else { + $ip[$i] = ''; + } + if(empty($ip[$i])) unset($ip[$i]); } - if(empty($ip[$i])) unset($ip[$i]); - } - $ip = array_values(array_unique($ip)); - if(!$ip[0]) $ip[0] = '0.0.0.0'; // for some strange reason we don't have a IP - - if(!$single) return join(',',$ip); - - // decide which IP to use, trying to avoid local addresses - $ip = array_reverse($ip); - foreach($ip as $i){ - if(preg_match('/^(127\.|10\.|192\.168\.|172\.((1[6-9])|(2[0-9])|(3[0-1]))\.)/',$i)){ - continue; - }else{ - return $i; + $ip = array_values(array_unique($ip)); + if(!$ip[0]) $ip[0] = '0.0.0.0'; // for some strange reason we don't have a IP + + if(!$single) return join(',',$ip); + + // decide which IP to use, trying to avoid local addresses + $ip = array_reverse($ip); + foreach($ip as $i){ + if(preg_match('/^(127\.|10\.|192\.168\.|172\.((1[6-9])|(2[0-9])|(3[0-1]))\.)/',$i)){ + continue; + }else{ + return $i; + } } - } - // still here? just use the first (last) address - return $ip[0]; + // still here? just use the first (last) address + return $ip[0]; } /** @@ -687,17 +677,17 @@ function clientismobile(){ * @returns a comma separated list of hostnames */ function gethostsbyaddrs($ips){ - $hosts = array(); - $ips = explode(',',$ips); + $hosts = array(); + $ips = explode(',',$ips); - if(is_array($ips)) { - foreach($ips as $ip){ - $hosts[] = gethostbyaddr(trim($ip)); + if(is_array($ips)) { + foreach($ips as $ip){ + $hosts[] = gethostbyaddr(trim($ip)); + } + return join(',',$hosts); + } else { + return gethostbyaddr(trim($ips)); } - return join(',',$hosts); - } else { - return gethostbyaddr(trim($ips)); - } } /** @@ -708,25 +698,25 @@ function gethostsbyaddrs($ips){ * @author Andreas Gohr <andi@splitbrain.org> */ function checklock($id){ - global $conf; - $lock = wikiLockFN($id); + global $conf; + $lock = wikiLockFN($id); - //no lockfile - if(!@file_exists($lock)) return false; + //no lockfile + if(!@file_exists($lock)) return false; - //lockfile expired - if((time() - filemtime($lock)) > $conf['locktime']){ - @unlink($lock); - return false; - } + //lockfile expired + if((time() - filemtime($lock)) > $conf['locktime']){ + @unlink($lock); + return false; + } - //my own lock - $ip = io_readFile($lock); - if( ($ip == clientIP()) || ($ip == $_SERVER['REMOTE_USER']) ){ - return false; - } + //my own lock + $ip = io_readFile($lock); + if( ($ip == clientIP()) || ($ip == $_SERVER['REMOTE_USER']) ){ + return false; + } - return $ip; + return $ip; } /** @@ -735,12 +725,18 @@ function checklock($id){ * @author Andreas Gohr <andi@splitbrain.org> */ function lock($id){ - $lock = wikiLockFN($id); - if($_SERVER['REMOTE_USER']){ - io_saveFile($lock,$_SERVER['REMOTE_USER']); - }else{ - io_saveFile($lock,clientIP()); - } + global $conf; + + if($conf['locktime'] == 0){ + return; + } + + $lock = wikiLockFN($id); + if($_SERVER['REMOTE_USER']){ + io_saveFile($lock,$_SERVER['REMOTE_USER']); + }else{ + io_saveFile($lock,clientIP()); + } } /** @@ -750,15 +746,15 @@ function lock($id){ * @return bool true if a lock was removed */ function unlock($id){ - $lock = wikiLockFN($id); - if(@file_exists($lock)){ - $ip = io_readFile($lock); - if( ($ip == clientIP()) || ($ip == $_SERVER['REMOTE_USER']) ){ - @unlink($lock); - return true; + $lock = wikiLockFN($id); + if(@file_exists($lock)){ + $ip = io_readFile($lock); + if( ($ip == clientIP()) || ($ip == $_SERVER['REMOTE_USER']) ){ + @unlink($lock); + return true; + } } - } - return false; + return false; } /** @@ -768,8 +764,8 @@ function unlock($id){ * @author Andreas Gohr <andi@splitbrain.org> */ function cleanText($text){ - $text = preg_replace("/(\015\012)|(\015)/","\012",$text); - return $text; + $text = preg_replace("/(\015\012)|(\015)/","\012",$text); + return $text; } /** @@ -781,8 +777,8 @@ function cleanText($text){ * @author Andreas Gohr <andi@splitbrain.org> */ function formText($text){ - $text = str_replace("\012","\015\012",$text); - return htmlspecialchars($text); + $text = str_replace("\012","\015\012",$text); + return htmlspecialchars($text); } /** @@ -791,7 +787,7 @@ function formText($text){ * @author Andreas Gohr <andi@splitbrain.org> */ function rawLocale($id){ - return io_readFile(localeFN($id)); + return io_readFile(localeFN($id)); } /** @@ -800,77 +796,92 @@ function rawLocale($id){ * @author Andreas Gohr <andi@splitbrain.org> */ function rawWiki($id,$rev=''){ - return io_readWikiPage(wikiFN($id, $rev), $id, $rev); + return io_readWikiPage(wikiFN($id, $rev), $id, $rev); } /** * Returns the pagetemplate contents for the ID's namespace * + * @triggers COMMON_PAGE_FROMTEMPLATE * @author Andreas Gohr <andi@splitbrain.org> */ -function pageTemplate($data){ - $id = $data[0]; - global $conf; - global $INFO; - - $path = dirname(wikiFN($id)); - - if(@file_exists($path.'/_template.txt')){ - $tpl = io_readFile($path.'/_template.txt'); - }else{ - // search upper namespaces for templates - $len = strlen(rtrim($conf['datadir'],'/')); - while (strlen($path) >= $len){ - if(@file_exists($path.'/__template.txt')){ - $tpl = io_readFile($path.'/__template.txt'); - break; - } - $path = substr($path, 0, strrpos($path, '/')); - } - } - if(!$tpl) return ''; - - // replace placeholders - $file = noNS($id); - $page = strtr($file,'_',' '); - - $tpl = str_replace(array( - '@ID@', - '@NS@', - '@FILE@', - '@!FILE@', - '@!FILE!@', - '@PAGE@', - '@!PAGE@', - '@!!PAGE@', - '@!PAGE!@', - '@USER@', - '@NAME@', - '@MAIL@', - '@DATE@', - ), - array( - $id, - getNS($id), - $file, - utf8_ucfirst($file), - utf8_strtoupper($file), - $page, - utf8_ucfirst($page), - utf8_ucwords($page), - utf8_strtoupper($page), - $_SERVER['REMOTE_USER'], - $INFO['userinfo']['name'], - $INFO['userinfo']['mail'], - $conf['dformat'], - ), $tpl); - - // we need the callback to work around strftime's char limit - $tpl = preg_replace_callback('/%./',create_function('$m','return strftime($m[0]);'),$tpl); - - return $tpl; +function pageTemplate($id){ + global $conf; + + if (is_array($id)) $id = $id[0]; + + $path = dirname(wikiFN($id)); + $tpl = ''; + if(@file_exists($path.'/_template.txt')){ + $tpl = io_readFile($path.'/_template.txt'); + }else{ + // search upper namespaces for templates + $len = strlen(rtrim($conf['datadir'],'/')); + while (strlen($path) >= $len){ + if(@file_exists($path.'/__template.txt')){ + $tpl = io_readFile($path.'/__template.txt'); + break; + } + $path = substr($path, 0, strrpos($path, '/')); + } + } + $data = compact('tpl', 'id'); + trigger_event('COMMON_PAGE_FROMTEMPLATE', $data, 'parsePageTemplate', true); + return $data['tpl']; } +/** + * Performs common page template replacements + * This is the default action for COMMON_PAGE_FROMTEMPLATE + * + * @author Andreas Gohr <andi@splitbrain.org> + */ +function parsePageTemplate(&$data) { + extract($data); + + global $USERINFO; + global $conf; + + // replace placeholders + $file = noNS($id); + $page = strtr($file,'_',' '); + + $tpl = str_replace(array( + '@ID@', + '@NS@', + '@FILE@', + '@!FILE@', + '@!FILE!@', + '@PAGE@', + '@!PAGE@', + '@!!PAGE@', + '@!PAGE!@', + '@USER@', + '@NAME@', + '@MAIL@', + '@DATE@', + ), + array( + $id, + getNS($id), + $file, + utf8_ucfirst($file), + utf8_strtoupper($file), + $page, + utf8_ucfirst($page), + utf8_ucwords($page), + utf8_strtoupper($page), + $_SERVER['REMOTE_USER'], + $USERINFO['name'], + $USERINFO['mail'], + $conf['dformat'], + ), $tpl); + + // we need the callback to work around strftime's char limit + $tpl = preg_replace_callback('/%./',create_function('$m','return strftime($m[0]);'),$tpl); + $data['tpl'] = $tpl; + return $tpl; +} /** * Returns the raw Wiki Text in three slices. @@ -883,38 +894,42 @@ function pageTemplate($data){ * @author Andreas Gohr <andi@splitbrain.org> */ function rawWikiSlices($range,$id,$rev=''){ - list($from,$to) = explode('-',$range,2); - $text = io_readWikiPage(wikiFN($id, $rev), $id, $rev); - if(!$from) $from = 0; - if(!$to) $to = strlen($text)+1; - - $slices[0] = substr($text,0,$from-1); - $slices[1] = substr($text,$from-1,$to-$from); - $slices[2] = substr($text,$to); - - return $slices; + $text = io_readWikiPage(wikiFN($id, $rev), $id, $rev); + + // Parse range + list($from,$to) = explode('-',$range,2); + // Make range zero-based, use defaults if marker is missing + $from = !$from ? 0 : ($from - 1); + $to = !$to ? strlen($text) : ($to - 1); + + $slices[0] = substr($text, 0, $from); + $slices[1] = substr($text, $from, $to-$from); + $slices[2] = substr($text, $to); + return $slices; } /** * Joins wiki text slices * - * function to join the text slices with correct lineendings again. + * function to join the text slices. * When the pretty parameter is set to true it adds additional empty * lines between sections if needed (used on saving). * * @author Andreas Gohr <andi@splitbrain.org> */ function con($pre,$text,$suf,$pretty=false){ + if($pretty){ + if ($pre !== '' && substr($pre, -1) !== "\n" && + substr($text, 0, 1) !== "\n") { + $pre .= "\n"; + } + if ($suf !== '' && substr($text, -1) !== "\n" && + substr($suf, 0, 1) !== "\n") { + $text .= "\n"; + } + } - if($pretty){ - if($pre && substr($pre,-1) != "\n") $pre .= "\n"; - if($suf && substr($text,-1) != "\n") $text .= "\n"; - } - - // Avoid double newline above section when saving section edit - //if($pre) $pre .= "\n"; - if($suf) $text .= "\n"; - return $pre.$text.$suf; + return $pre.$text.$suf; } /** @@ -925,102 +940,101 @@ function con($pre,$text,$suf,$pretty=false){ * @author Ben Coburn <btcoburn@silicodon.net> */ function saveWikiText($id,$text,$summary,$minor=false){ - /* Note to developers: - This code is subtle and delicate. Test the behavior of - the attic and changelog with dokuwiki and external edits - after any changes. External edits change the wiki page - directly without using php or dokuwiki. - */ - global $conf; - global $lang; - global $REV; - // ignore if no changes were made - if($text == rawWiki($id,'')){ - return; - } - - $file = wikiFN($id); - $old = @filemtime($file); // from page - $wasRemoved = empty($text); - $wasCreated = !@file_exists($file); - $wasReverted = ($REV==true); - $newRev = false; - $oldRev = getRevisions($id, -1, 1, 1024); // from changelog - $oldRev = (int)(empty($oldRev)?0:$oldRev[0]); - if(!@file_exists(wikiFN($id, $old)) && @file_exists($file) && $old>=$oldRev) { - // add old revision to the attic if missing - saveOldRevision($id); - // add a changelog entry if this edit came from outside dokuwiki - if ($old>$oldRev) { - addLogEntry($old, $id, DOKU_CHANGE_TYPE_EDIT, $lang['external_edit'], '', array('ExternalEdit'=>true)); - // remove soon to be stale instructions - $cache = new cache_instructions($id, $file); - $cache->removeCache(); - } - } - - if ($wasRemoved){ - // Send "update" event with empty data, so plugins can react to page deletion - $data = array(array($file, '', false), getNS($id), noNS($id), false); - trigger_event('IO_WIKIPAGE_WRITE', $data); - // pre-save deleted revision - @touch($file); - clearstatcache(); - $newRev = saveOldRevision($id); - // remove empty file - @unlink($file); - // remove old meta info... - $mfiles = metaFiles($id); - $changelog = metaFN($id, '.changes'); - $metadata = metaFN($id, '.meta'); - foreach ($mfiles as $mfile) { - // but keep per-page changelog to preserve page history and keep meta data - if (@file_exists($mfile) && $mfile!==$changelog && $mfile!==$metadata) { @unlink($mfile); } - } - // purge meta data - p_purge_metadata($id); - $del = true; - // autoset summary on deletion - if(empty($summary)) $summary = $lang['deleted']; - // remove empty namespaces - io_sweepNS($id, 'datadir'); - io_sweepNS($id, 'mediadir'); - }else{ - // save file (namespace dir is created in io_writeWikiPage) - io_writeWikiPage($file, $text, $id); - // pre-save the revision, to keep the attic in sync - $newRev = saveOldRevision($id); - $del = false; - } - - // select changelog line type - $extra = ''; - $type = DOKU_CHANGE_TYPE_EDIT; - if ($wasReverted) { - $type = DOKU_CHANGE_TYPE_REVERT; - $extra = $REV; - } - else if ($wasCreated) { $type = DOKU_CHANGE_TYPE_CREATE; } - else if ($wasRemoved) { $type = DOKU_CHANGE_TYPE_DELETE; } - else if ($minor && $conf['useacl'] && $_SERVER['REMOTE_USER']) { $type = DOKU_CHANGE_TYPE_MINOR_EDIT; } //minor edits only for logged in users - - addLogEntry($newRev, $id, $type, $summary, $extra); - // send notify mails - notify($id,'admin',$old,$summary,$minor); - notify($id,'subscribers',$old,$summary,$minor); - - // update the purgefile (timestamp of the last time anything within the wiki was changed) - io_saveFile($conf['cachedir'].'/purgefile',time()); - - // if useheading is enabled, purge the cache of all linking pages - if(useHeading('content')){ - require_once(DOKU_INC.'inc/fulltext.php'); - $pages = ft_backlinks($id); - foreach ($pages as $page) { - $cache = new cache_renderer($page, wikiFN($page), 'xhtml'); - $cache->removeCache(); - } - } + /* Note to developers: + This code is subtle and delicate. Test the behavior of + the attic and changelog with dokuwiki and external edits + after any changes. External edits change the wiki page + directly without using php or dokuwiki. + */ + global $conf; + global $lang; + global $REV; + // ignore if no changes were made + if($text == rawWiki($id,'')){ + return; + } + + $file = wikiFN($id); + $old = @filemtime($file); // from page + $wasRemoved = empty($text); + $wasCreated = !@file_exists($file); + $wasReverted = ($REV==true); + $newRev = false; + $oldRev = getRevisions($id, -1, 1, 1024); // from changelog + $oldRev = (int)(empty($oldRev)?0:$oldRev[0]); + if(!@file_exists(wikiFN($id, $old)) && @file_exists($file) && $old>=$oldRev) { + // add old revision to the attic if missing + saveOldRevision($id); + // add a changelog entry if this edit came from outside dokuwiki + if ($old>$oldRev) { + addLogEntry($old, $id, DOKU_CHANGE_TYPE_EDIT, $lang['external_edit'], '', array('ExternalEdit'=>true)); + // remove soon to be stale instructions + $cache = new cache_instructions($id, $file); + $cache->removeCache(); + } + } + + if ($wasRemoved){ + // Send "update" event with empty data, so plugins can react to page deletion + $data = array(array($file, '', false), getNS($id), noNS($id), false); + trigger_event('IO_WIKIPAGE_WRITE', $data); + // pre-save deleted revision + @touch($file); + clearstatcache(); + $newRev = saveOldRevision($id); + // remove empty file + @unlink($file); + // remove old meta info... + $mfiles = metaFiles($id); + $changelog = metaFN($id, '.changes'); + $metadata = metaFN($id, '.meta'); + foreach ($mfiles as $mfile) { + // but keep per-page changelog to preserve page history and keep meta data + if (@file_exists($mfile) && $mfile!==$changelog && $mfile!==$metadata) { @unlink($mfile); } + } + // purge meta data + p_purge_metadata($id); + $del = true; + // autoset summary on deletion + if(empty($summary)) $summary = $lang['deleted']; + // remove empty namespaces + io_sweepNS($id, 'datadir'); + io_sweepNS($id, 'mediadir'); + }else{ + // save file (namespace dir is created in io_writeWikiPage) + io_writeWikiPage($file, $text, $id); + // pre-save the revision, to keep the attic in sync + $newRev = saveOldRevision($id); + $del = false; + } + + // select changelog line type + $extra = ''; + $type = DOKU_CHANGE_TYPE_EDIT; + if ($wasReverted) { + $type = DOKU_CHANGE_TYPE_REVERT; + $extra = $REV; + } + else if ($wasCreated) { $type = DOKU_CHANGE_TYPE_CREATE; } + else if ($wasRemoved) { $type = DOKU_CHANGE_TYPE_DELETE; } + else if ($minor && $conf['useacl'] && $_SERVER['REMOTE_USER']) { $type = DOKU_CHANGE_TYPE_MINOR_EDIT; } //minor edits only for logged in users + + addLogEntry($newRev, $id, $type, $summary, $extra); + // send notify mails + notify($id,'admin',$old,$summary,$minor); + notify($id,'subscribers',$old,$summary,$minor); + + // update the purgefile (timestamp of the last time anything within the wiki was changed) + io_saveFile($conf['cachedir'].'/purgefile',time()); + + // if useheading is enabled, purge the cache of all linking pages + if(useHeading('content')){ + $pages = ft_backlinks($id); + foreach ($pages as $page) { + $cache = new cache_renderer($page, wikiFN($page), 'xhtml'); + $cache->removeCache(); + } + } } /** @@ -1030,13 +1044,13 @@ function saveWikiText($id,$text,$summary,$minor=false){ * @author Andreas Gohr <andi@splitbrain.org> */ function saveOldRevision($id){ - global $conf; - $oldf = wikiFN($id); - if(!@file_exists($oldf)) return ''; - $date = filemtime($oldf); - $newf = wikiFN($id,$date); - io_writeWikiPage($newf, rawWiki($id), $id, $date); - return $date; + global $conf; + $oldf = wikiFN($id); + if(!@file_exists($oldf)) return ''; + $date = filemtime($oldf); + $newf = wikiFN($id,$date); + io_writeWikiPage($newf, rawWiki($id), $id, $date); + return $date; } /** @@ -1052,72 +1066,76 @@ function saveOldRevision($id){ * @author Andreas Gohr <andi@splitbrain.org> */ function notify($id,$who,$rev='',$summary='',$minor=false,$replace=array()){ - global $lang; - global $conf; - global $INFO; - - // decide if there is something to do - if($who == 'admin'){ - if(empty($conf['notify'])) return; //notify enabled? - $text = rawLocale('mailtext'); - $to = $conf['notify']; - $bcc = ''; - }elseif($who == 'subscribers'){ - if(!$conf['subscribers']) return; //subscribers enabled? - if($conf['useacl'] && $_SERVER['REMOTE_USER'] && $minor) return; //skip minors - $bcc = subscriber_addresslist($id,false); - if(empty($bcc)) return; - $to = ''; - $text = rawLocale('subscribermail'); - }elseif($who == 'register'){ - if(empty($conf['registernotify'])) return; - $text = rawLocale('registermail'); - $to = $conf['registernotify']; - $bcc = ''; - }else{ - return; //just to be safe - } - - $ip = clientIP(); - $text = str_replace('@DATE@',dformat(),$text); - $text = str_replace('@BROWSER@',$_SERVER['HTTP_USER_AGENT'],$text); - $text = str_replace('@IPADDRESS@',$ip,$text); - $text = str_replace('@HOSTNAME@',gethostsbyaddrs($ip),$text); - $text = str_replace('@NEWPAGE@',wl($id,'',true,'&'),$text); - $text = str_replace('@PAGE@',$id,$text); - $text = str_replace('@TITLE@',$conf['title'],$text); - $text = str_replace('@DOKUWIKIURL@',DOKU_URL,$text); - $text = str_replace('@SUMMARY@',$summary,$text); - $text = str_replace('@USER@',$_SERVER['REMOTE_USER'],$text); - - foreach ($replace as $key => $substitution) { - $text = str_replace('@'.strtoupper($key).'@',$substitution, $text); - } - - if($who == 'register'){ - $subject = $lang['mail_new_user'].' '.$summary; - }elseif($rev){ - $subject = $lang['mail_changed'].' '.$id; - $text = str_replace('@OLDPAGE@',wl($id,"rev=$rev",true,'&'),$text); - require_once(DOKU_INC.'inc/DifferenceEngine.php'); - $df = new Diff(explode("\n",rawWiki($id,$rev)), - explode("\n",rawWiki($id))); - $dformat = new UnifiedDiffFormatter(); - $diff = $dformat->format($df); - }else{ - $subject=$lang['mail_newpage'].' '.$id; - $text = str_replace('@OLDPAGE@','none',$text); - $diff = rawWiki($id); - } - $text = str_replace('@DIFF@',$diff,$text); - $subject = '['.$conf['title'].'] '.$subject; - - $from = $conf['mailfrom']; - $from = str_replace('@USER@',$_SERVER['REMOTE_USER'],$from); - $from = str_replace('@NAME@',$INFO['userinfo']['name'],$from); - $from = str_replace('@MAIL@',$INFO['userinfo']['mail'],$from); - - mail_send($to,$subject,$text,$from,'',$bcc); + global $lang; + global $conf; + global $INFO; + + // decide if there is something to do + if($who == 'admin'){ + if(empty($conf['notify'])) return; //notify enabled? + $text = rawLocale('mailtext'); + $to = $conf['notify']; + $bcc = ''; + }elseif($who == 'subscribers'){ + if(!$conf['subscribers']) return; //subscribers enabled? + if($conf['useacl'] && $_SERVER['REMOTE_USER'] && $minor) return; //skip minors + $data = array('id' => $id, 'addresslist' => '', 'self' => false); + trigger_event('COMMON_NOTIFY_ADDRESSLIST', $data, + 'subscription_addresslist'); + $bcc = $data['addresslist']; + if(empty($bcc)) return; + $to = ''; + $text = rawLocale('subscr_single'); + }elseif($who == 'register'){ + if(empty($conf['registernotify'])) return; + $text = rawLocale('registermail'); + $to = $conf['registernotify']; + $bcc = ''; + }else{ + return; //just to be safe + } + + $ip = clientIP(); + $text = str_replace('@DATE@',dformat(),$text); + $text = str_replace('@BROWSER@',$_SERVER['HTTP_USER_AGENT'],$text); + $text = str_replace('@IPADDRESS@',$ip,$text); + $text = str_replace('@HOSTNAME@',gethostsbyaddrs($ip),$text); + $text = str_replace('@NEWPAGE@',wl($id,'',true,'&'),$text); + $text = str_replace('@PAGE@',$id,$text); + $text = str_replace('@TITLE@',$conf['title'],$text); + $text = str_replace('@DOKUWIKIURL@',DOKU_URL,$text); + $text = str_replace('@SUMMARY@',$summary,$text); + $text = str_replace('@USER@',$_SERVER['REMOTE_USER'],$text); + $text = str_replace('@NAME@',$INFO['userinfo']['name'],$text); + $text = str_replace('@MAIL@',$INFO['userinfo']['mail'],$text); + + foreach ($replace as $key => $substitution) { + $text = str_replace('@'.strtoupper($key).'@',$substitution, $text); + } + + if($who == 'register'){ + $subject = $lang['mail_new_user'].' '.$summary; + }elseif($rev){ + $subject = $lang['mail_changed'].' '.$id; + $text = str_replace('@OLDPAGE@',wl($id,"rev=$rev",true,'&'),$text); + $df = new Diff(explode("\n",rawWiki($id,$rev)), + explode("\n",rawWiki($id))); + $dformat = new UnifiedDiffFormatter(); + $diff = $dformat->format($df); + }else{ + $subject=$lang['mail_newpage'].' '.$id; + $text = str_replace('@OLDPAGE@','none',$text); + $diff = rawWiki($id); + } + $text = str_replace('@DIFF@',$diff,$text); + $subject = '['.$conf['title'].'] '.$subject; + + $from = $conf['mailfrom']; + $from = str_replace('@USER@',$_SERVER['REMOTE_USER'],$from); + $from = str_replace('@NAME@',$INFO['userinfo']['name'],$from); + $from = str_replace('@MAIL@',$INFO['userinfo']['mail'],$from); + + mail_send($to,$subject,$text,$from,'',$bcc); } /** @@ -1127,32 +1145,32 @@ function notify($id,$who,$rev='',$summary='',$minor=false,$replace=array()){ * @author Todd Augsburger <todd@rollerorgans.com> */ function getGoogleQuery(){ - if (!isset($_SERVER['HTTP_REFERER'])) { - return ''; - } - $url = parse_url($_SERVER['HTTP_REFERER']); - - $query = array(); - - // temporary workaround against PHP bug #49733 - // see http://bugs.php.net/bug.php?id=49733 - if(UTF8_MBSTRING) $enc = mb_internal_encoding(); - parse_str($url['query'],$query); - if(UTF8_MBSTRING) mb_internal_encoding($enc); - - $q = ''; - if(isset($query['q'])) - $q = $query['q']; // google, live/msn, aol, ask, altavista, alltheweb, gigablast - elseif(isset($query['p'])) - $q = $query['p']; // yahoo - elseif(isset($query['query'])) - $q = $query['query']; // lycos, netscape, clusty, hotbot - elseif(preg_match("#a9\.com#i",$url['host'])) // a9 - $q = urldecode(ltrim($url['path'],'/')); - - if($q === '') return ''; - $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/',$q,-1,PREG_SPLIT_NO_EMPTY); - return $q; + if (!isset($_SERVER['HTTP_REFERER'])) { + return ''; + } + $url = parse_url($_SERVER['HTTP_REFERER']); + + $query = array(); + + // temporary workaround against PHP bug #49733 + // see http://bugs.php.net/bug.php?id=49733 + if(UTF8_MBSTRING) $enc = mb_internal_encoding(); + parse_str($url['query'],$query); + if(UTF8_MBSTRING) mb_internal_encoding($enc); + + $q = ''; + if(isset($query['q'])) + $q = $query['q']; // google, live/msn, aol, ask, altavista, alltheweb, gigablast + elseif(isset($query['p'])) + $q = $query['p']; // yahoo + elseif(isset($query['query'])) + $q = $query['query']; // lycos, netscape, clusty, hotbot + elseif(preg_match("#a9\.com#i",$url['host'])) // a9 + $q = urldecode(ltrim($url['path'],'/')); + + if($q === '') return ''; + $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/',$q,-1,PREG_SPLIT_NO_EMPTY); + return $q; } /** @@ -1162,18 +1180,18 @@ function getGoogleQuery(){ * @author Andreas Gohr <andi@splitbrain.org> */ function setCorrectLocale(){ - global $conf; - global $lang; - - $enc = strtoupper($lang['encoding']); - foreach ($lang['locales'] as $loc){ - //try locale - if(@setlocale(LC_ALL,$loc)) return; - //try loceale with encoding - if(@setlocale(LC_ALL,"$loc.$enc")) return; - } - //still here? try to set from environment - @setlocale(LC_ALL,""); + global $conf; + global $lang; + + $enc = strtoupper($lang['encoding']); + foreach ($lang['locales'] as $loc){ + //try locale + if(@setlocale(LC_ALL,$loc)) return; + //try loceale with encoding + if(@setlocale(LC_ALL,"$loc.$enc")) return; + } + //still here? try to set from environment + @setlocale(LC_ALL,""); } /** @@ -1186,16 +1204,16 @@ function setCorrectLocale(){ * @version 1.0.0 */ function filesize_h($size, $dec = 1){ - $sizes = array('B', 'KB', 'MB', 'GB'); - $count = count($sizes); - $i = 0; + $sizes = array('B', 'KB', 'MB', 'GB'); + $count = count($sizes); + $i = 0; - while ($size >= 1024 && ($i < $count - 1)) { - $size /= 1024; - $i++; - } + while ($size >= 1024 && ($i < $count - 1)) { + $size /= 1024; + $i++; + } - return round($size, $dec) . ' ' . $sizes[$i]; + return round($size, $dec) . ' ' . $sizes[$i]; } /** @@ -1204,29 +1222,28 @@ function filesize_h($size, $dec = 1){ * @author Andreas Gohr <gohr@cosmocode.de> */ function datetime_h($dt){ - global $lang; - - $ago = time() - $dt; - if($ago > 24*60*60*30*12*2){ - return sprintf($lang['years'], round($ago/(24*60*60*30*12))); - } - if($ago > 24*60*60*30*2){ - return sprintf($lang['months'], round($ago/(24*60*60*30))); - } - if($ago > 24*60*60*7*2){ - return sprintf($lang['weeks'], round($ago/(24*60*60*7))); - } - if($ago > 24*60*60*2){ - return sprintf($lang['days'], round($ago/(24*60*60))); - } - if($ago > 60*60*2){ - return sprintf($lang['hours'], round($ago/(60*60))); - } - if($ago > 60*2){ - return sprintf($lang['minutes'], round($ago/(60))); - } - return sprintf($lang['seconds'], $ago); + global $lang; + $ago = time() - $dt; + if($ago > 24*60*60*30*12*2){ + return sprintf($lang['years'], round($ago/(24*60*60*30*12))); + } + if($ago > 24*60*60*30*2){ + return sprintf($lang['months'], round($ago/(24*60*60*30))); + } + if($ago > 24*60*60*7*2){ + return sprintf($lang['weeks'], round($ago/(24*60*60*7))); + } + if($ago > 24*60*60*2){ + return sprintf($lang['days'], round($ago/(24*60*60))); + } + if($ago > 60*60*2){ + return sprintf($lang['hours'], round($ago/(60*60))); + } + if($ago > 60*2){ + return sprintf($lang['minutes'], round($ago/(60))); + } + return sprintf($lang['seconds'], $ago); } /** @@ -1239,14 +1256,14 @@ function datetime_h($dt){ * @author Andreas Gohr <gohr@cosmocode.de> */ function dformat($dt=null,$format=''){ - global $conf; + global $conf; - if(is_null($dt)) $dt = time(); - $dt = (int) $dt; - if(!$format) $format = $conf['dformat']; + if(is_null($dt)) $dt = time(); + $dt = (int) $dt; + if(!$format) $format = $conf['dformat']; - $format = str_replace('%f',datetime_h($dt),$format); - return strftime($format,$dt); + $format = str_replace('%f',datetime_h($dt),$format); + return strftime($format,$dt); } /** @@ -1256,113 +1273,25 @@ function dformat($dt=null,$format=''){ * @author Christopher Smith <chris@jalakai.co.uk> */ function obfuscate($email) { - global $conf; - - switch ($conf['mailguard']) { - case 'visible' : - $obfuscate = array('@' => ' [at] ', '.' => ' [dot] ', '-' => ' [dash] '); - return strtr($email, $obfuscate); - - case 'hex' : - $encode = ''; - for ($x=0; $x < strlen($email); $x++) $encode .= '&#x' . bin2hex($email{$x}).';'; - return $encode; - - case 'none' : - default : - return $email; - } -} + global $conf; -/** - * Let us know if a user is tracking a page or a namespace - * - * @author Andreas Gohr <andi@splitbrain.org> - */ -function is_subscribed($id,$uid,$ns=false){ - if(!$ns) { - $file=metaFN($id,'.mlist'); - } else { - if(!getNS($id)) { - $file = metaFN(getNS($id),'.mlist'); - } else { - $file = metaFN(getNS($id),'/.mlist'); + switch ($conf['mailguard']) { + case 'visible' : + $obfuscate = array('@' => ' [at] ', '.' => ' [dot] ', '-' => ' [dash] '); + return strtr($email, $obfuscate); + + case 'hex' : + $encode = ''; + $len = strlen($email); + for ($x=0; $x < $len; $x++){ + $encode .= '&#x' . bin2hex($email{$x}).';'; + } + return $encode; + + case 'none' : + default : + return $email; } - } - if (@file_exists($file)) { - $mlist = file($file); - $pos = array_search($uid."\n",$mlist); - return is_int($pos); - } - - return false; -} - -/** - * Return a string with the email addresses of all the - * users subscribed to a page - * - * @author Steven Danz <steven-danz@kc.rr.com> - */ -function subscriber_addresslist($id,$self=true){ - global $conf; - global $auth; - - if (!$conf['subscribers']) return ''; - - $users = array(); - $emails = array(); - - // load the page mlist file content - $mlist = array(); - $file=metaFN($id,'.mlist'); - if (@file_exists($file)) { - $mlist = file($file); - foreach ($mlist as $who) { - $who = rtrim($who); - if(!$self && $who == $_SERVER['REMOTE_USER']) continue; - $users[$who] = true; - } - } - - // load also the namespace mlist file content - $ns = getNS($id); - while ($ns) { - $nsfile = metaFN($ns,'/.mlist'); - if (@file_exists($nsfile)) { - $mlist = file($nsfile); - foreach ($mlist as $who) { - $who = rtrim($who); - if(!$self && $who == $_SERVER['REMOTE_USER']) continue; - $users[$who] = true; - } - } - $ns = getNS($ns); - } - // root namespace - $nsfile = metaFN('','.mlist'); - if (@file_exists($nsfile)) { - $mlist = file($nsfile); - foreach ($mlist as $who) { - $who = rtrim($who); - if(!$self && $who == $_SERVER['REMOTE_USER']) continue; - $users[$who] = true; - } - } - if(!empty($users)) { - foreach (array_keys($users) as $who) { - $info = $auth->getUserData($who); - if($info === false) continue; - $level = auth_aclcheck($id,$who,$info['grps']); - if ($level >= AUTH_READ) { - if (strcasecmp($info['mail'],$conf['notify']) != 0) { - $emails[] = $info['mail']; - } - } - } - } - - return implode(',',$emails); } /** @@ -1371,7 +1300,7 @@ function subscriber_addresslist($id,$self=true){ * @author Andreas Gohr <andi@splitbrain.org> */ function unslash($string,$char="'"){ - return str_replace('\\'.$char,$char,$string); + return str_replace('\\'.$char,$char,$string); } /** @@ -1395,6 +1324,9 @@ function php_to_byte($v){ case 'K': $ret *= 1024; break; + default; + $ret *= 10; + break; } return $ret; } @@ -1422,7 +1354,7 @@ function preg_quote_cb($string){ */ function shorten($keep,$short,$max,$min=9,$char='…'){ $max = $max - utf8_strlen($keep); - if($max < $min) return $keep; + if($max < $min) return $keep; $len = utf8_strlen($short); if($len <= $max) return $keep.$short; $half = floor($max/2); @@ -1440,26 +1372,26 @@ function editorinfo($username){ global $auth; switch($conf['showuseras']){ - case 'username': - case 'email': - case 'email_link': - if($auth) $info = $auth->getUserData($username); - break; - default: - return hsc($username); + case 'username': + case 'email': + case 'email_link': + if($auth) $info = $auth->getUserData($username); + break; + default: + return hsc($username); } if(isset($info) && $info) { switch($conf['showuseras']){ - case 'username': - return hsc($info['name']); - case 'email': - return obfuscate($info['mail']); - case 'email_link': - $mail=obfuscate($info['mail']); - return '<a href="mailto:'.$mail.'">'.$mail.'</a>'; - default: - return hsc($username); + case 'username': + return hsc($info['name']); + case 'email': + return obfuscate($info['mail']); + case 'email_link': + $mail=obfuscate($info['mail']); + return '<a href="mailto:'.$mail.'">'.$mail.'</a>'; + default: + return hsc($username); } } else { return hsc($username); @@ -1503,22 +1435,24 @@ function license_img($type){ * @author Andreas Gohr <andi@splitbrain.org> */ function is_mem_available($mem,$bytes=1048576){ - $limit = trim(ini_get('memory_limit')); - if(empty($limit)) return true; // no limit set! + $limit = trim(ini_get('memory_limit')); + if(empty($limit)) return true; // no limit set! - // parse limit to bytes - $limit = php_to_byte($limit); + // parse limit to bytes + $limit = php_to_byte($limit); - // get used memory if possible - if(function_exists('memory_get_usage')){ - $used = memory_get_usage(); - } + // get used memory if possible + if(function_exists('memory_get_usage')){ + $used = memory_get_usage(); + }else{ + $used = $bytes; + } - if($used+$mem > $limit){ - return false; - } + if($used+$mem > $limit){ + return false; + } - return true; + return true; } /** @@ -1530,9 +1464,28 @@ function is_mem_available($mem,$bytes=1048576){ * @author Andreas Gohr <andi@splitbrain.org> */ function send_redirect($url){ + //are there any undisplayed messages? keep them in session for display + global $MSG; + if (isset($MSG) && count($MSG) && !defined('NOSESSION')){ + //reopen session, store data and close session again + @session_start(); + $_SESSION[DOKU_COOKIE]['msg'] = $MSG; + } + // always close the session session_write_close(); + // work around IE bug + // http://www.ianhoar.com/2008/11/16/internet-explorer-6-and-redirected-anchor-links/ + list($url,$hash) = explode('#',$url); + if($hash){ + if(strpos($url,'?')){ + $url = $url.'&#'.$hash; + }else{ + $url = $url.'?&#'.$hash; + } + } + // check if running on IIS < 6 with CGI-PHP if( isset($_SERVER['SERVER_SOFTWARE']) && isset($_SERVER['GATEWAY_INTERFACE']) && (strpos($_SERVER['GATEWAY_INTERFACE'],'CGI') !== false) && @@ -1545,4 +1498,30 @@ function send_redirect($url){ exit; } +/** + * Validate a value using a set of valid values + * + * This function checks whether a specified value is set and in the array + * $valid_values. If not, the function returns a default value or, if no + * default is specified, throws an exception. + * + * @param string $param The name of the parameter + * @param array $valid_values A set of valid values; Optionally a default may + * be marked by the key “default”. + * @param array $array The array containing the value (typically $_POST + * or $_GET) + * @param string $exc The text of the raised exception + * + * @author Adrian Lang <lang@cosmocode.de> + */ +function valid_input_set($param, $valid_values, $array, $exc = '') { + if (isset($array[$param]) && in_array($array[$param], $valid_values)) { + return $array[$param]; + } elseif (isset($valid_values['default'])) { + return $valid_values['default']; + } else { + throw new Exception($exc); + } +} + //Setup VIM: ex: et ts=2 enc=utf-8 : diff --git a/inc/config_cascade.php b/inc/config_cascade.php new file mode 100644 index 000000000..3ae68a000 --- /dev/null +++ b/inc/config_cascade.php @@ -0,0 +1,66 @@ +<?php +/** + * The default config cascade + * + * This array configures the default locations of various files in the + * DokuWiki directory hierarchy. It can be overriden in inc/preload.php + */ +$config_cascade = array( + 'main' => array( + 'default' => array(DOKU_CONF.'dokuwiki.php'), + 'local' => array(DOKU_CONF.'local.php'), + 'protected' => array(DOKU_CONF.'local.protected.php'), + ), + 'acronyms' => array( + 'default' => array(DOKU_CONF.'acronyms.conf'), + 'local' => array(DOKU_CONF.'acronyms.local.conf'), + ), + 'entities' => array( + 'default' => array(DOKU_CONF.'entities.conf'), + 'local' => array(DOKU_CONF.'entities.local.conf'), + ), + 'interwiki' => array( + 'default' => array(DOKU_CONF.'interwiki.conf'), + 'local' => array(DOKU_CONF.'interwiki.local.conf'), + ), + 'license' => array( + 'default' => array(DOKU_CONF.'license.php'), + 'local' => array(DOKU_CONF.'license.local.php'), + ), + 'mediameta' => array( + 'default' => array(DOKU_CONF.'mediameta.php'), + 'local' => array(DOKU_CONF.'mediameta.local.php'), + ), + 'mime' => array( + 'default' => array(DOKU_CONF.'mime.conf'), + 'local' => array(DOKU_CONF.'mime.local.conf'), + ), + 'scheme' => array( + 'default' => array(DOKU_CONF.'scheme.conf'), + 'local' => array(DOKU_CONF.'scheme.local.conf'), + ), + 'smileys' => array( + 'default' => array(DOKU_CONF.'smileys.conf'), + 'local' => array(DOKU_CONF.'smileys.local.conf'), + ), + 'wordblock' => array( + 'default' => array(DOKU_CONF.'wordblock.conf'), + 'local' => array(DOKU_CONF.'wordblock.local.conf'), + ), + 'userstyle' => array( + 'default' => DOKU_CONF.'userstyle.css', + 'print' => DOKU_CONF.'printstyle.css', + 'feed' => DOKU_CONF.'feedstyle.css', + 'all' => DOKU_CONF.'allstyle.css', + ), + 'userscript' => array( + 'default' => DOKU_CONF.'userscript.js' + ), + 'acl' => array( + 'default' => DOKU_CONF.'acl.auth.php', + ), + 'plainauth.users' => array( + 'default' => DOKU_CONF.'users.auth.php', + ), +); + diff --git a/inc/confutils.php b/inc/confutils.php index 9ec7a551e..4306dab8f 100644 --- a/inc/confutils.php +++ b/inc/confutils.php @@ -16,29 +16,24 @@ * @author Andreas Gohr <andi@splitbrain.org> */ function mimetype($file, $knownonly=true){ - $ret = array(false,false,false); // return array - $mtypes = getMimeTypes(); // known mimetypes - $exts = join('|',array_keys($mtypes)); // known extensions (regexp) - if(!$knownonly){ - $exts = $exts.'|[_\-A-Za-z0-9]+'; // any extension - } - if(preg_match('#\.('.$exts.')$#i',$file,$matches)){ - $ext = strtolower($matches[1]); - } - - if($ext){ - if (isset($mtypes[$ext])){ - if($mtypes[$ext][0] == '!'){ - $ret = array($ext, substr($mtypes[$ext],1), true); - }else{ - $ret = array($ext, $mtypes[$ext], false); - } - }elseif(!$knownonly){ - $ret = array($ext, 'application/octet-stream', true); + $mtypes = getMimeTypes(); // known mimetypes + $ext = strrpos($file, '.'); + if ($ext === false) { + return array(false, false, false); + } + $ext = strtolower(substr($file, $ext + 1)); + if (!isset($mtypes[$ext])){ + if ($knownonly) { + return array(false, false, false); + } else { + return array($ext, 'application/octet-stream', true); + } + } + if($mtypes[$ext][0] == '!'){ + return array($ext, substr($mtypes[$ext],1), true); + }else{ + return array($ext, $mtypes[$ext], false); } - } - - return $ret; } /** @@ -47,11 +42,11 @@ function mimetype($file, $knownonly=true){ * @author Andreas Gohr <andi@splitbrain.org> */ function getMimeTypes() { - static $mime = NULL; - if ( !$mime ) { - $mime = retrieveConfig('mime','confToHash'); - } - return $mime; + static $mime = null; + if ( !$mime ) { + $mime = retrieveConfig('mime','confToHash'); + } + return $mime; } /** @@ -60,11 +55,11 @@ function getMimeTypes() { * @author Harry Fuecks <hfuecks@gmail.com> */ function getAcronyms() { - static $acronyms = NULL; - if ( !$acronyms ) { - $acronyms = retrieveConfig('acronyms','confToHash'); - } - return $acronyms; + static $acronyms = null; + if ( !$acronyms ) { + $acronyms = retrieveConfig('acronyms','confToHash'); + } + return $acronyms; } /** @@ -73,11 +68,11 @@ function getAcronyms() { * @author Harry Fuecks <hfuecks@gmail.com> */ function getSmileys() { - static $smileys = NULL; - if ( !$smileys ) { - $smileys = retrieveConfig('smileys','confToHash'); - } - return $smileys; + static $smileys = null; + if ( !$smileys ) { + $smileys = retrieveConfig('smileys','confToHash'); + } + return $smileys; } /** @@ -86,11 +81,11 @@ function getSmileys() { * @author Harry Fuecks <hfuecks@gmail.com> */ function getEntities() { - static $entities = NULL; - if ( !$entities ) { - $entities = retrieveConfig('entities','confToHash'); - } - return $entities; + static $entities = null; + if ( !$entities ) { + $entities = retrieveConfig('entities','confToHash'); + } + return $entities; } /** @@ -99,13 +94,13 @@ function getEntities() { * @author Harry Fuecks <hfuecks@gmail.com> */ function getInterwiki() { - static $wikis = NULL; - if ( !$wikis ) { - $wikis = retrieveConfig('interwiki','confToHash',array(true)); - } - //add sepecial case 'this' - $wikis['this'] = DOKU_URL.'{NAME}'; - return $wikis; + static $wikis = null; + if ( !$wikis ) { + $wikis = retrieveConfig('interwiki','confToHash',array(true)); + } + //add sepecial case 'this' + $wikis['this'] = DOKU_URL.'{NAME}'; + return $wikis; } /** @@ -113,23 +108,23 @@ function getInterwiki() { * */ function getWordblocks() { - static $wordblocks = NULL; - if ( !$wordblocks ) { - $wordblocks = retrieveConfig('wordblock','file'); - } - return $wordblocks; + static $wordblocks = null; + if ( !$wordblocks ) { + $wordblocks = retrieveConfig('wordblock','file'); + } + return $wordblocks; } function getSchemes() { - static $schemes = NULL; - if ( !$schemes ) { - $schemes = retrieveConfig('scheme','file'); - } - $schemes = array_map('trim', $schemes); - $schemes = preg_replace('/^#.*/', '', $schemes); - $schemes = array_filter($schemes); - return $schemes; + static $schemes = null; + if ( !$schemes ) { + $schemes = retrieveConfig('scheme','file'); + } + $schemes = array_map('trim', $schemes); + $schemes = preg_replace('/^#.*/', '', $schemes); + $schemes = array_filter($schemes); + return $schemes; } /** @@ -143,22 +138,23 @@ function getSchemes() { * @author Gina Haeussge <gina@foosel.net> */ function linesToHash($lines, $lower=false) { - foreach ( $lines as $line ) { - //ignore comments (except escaped ones) - $line = preg_replace('/(?<![&\\\\])#.*$/','',$line); - $line = str_replace('\\#','#',$line); - $line = trim($line); - if(empty($line)) continue; - $line = preg_split('/\s+/',$line,2); - // Build the associative array - if($lower){ - $conf[strtolower($line[0])] = $line[1]; - }else{ - $conf[$line[0]] = $line[1]; + $conf = array(); + foreach ( $lines as $line ) { + //ignore comments (except escaped ones) + $line = preg_replace('/(?<![&\\\\])#.*$/','',$line); + $line = str_replace('\\#','#',$line); + $line = trim($line); + if(empty($line)) continue; + $line = preg_split('/\s+/',$line,2); + // Build the associative array + if($lower){ + $conf[strtolower($line[0])] = $line[1]; + }else{ + $conf[$line[0]] = $line[1]; + } } - } - return $conf; + return $conf; } /** @@ -172,11 +168,11 @@ function linesToHash($lines, $lower=false) { * @author Gina Haeussge <gina@foosel.net> */ function confToHash($file,$lower=false) { - $conf = array(); - $lines = @file( $file ); - if ( !$lines ) return $conf; + $conf = array(); + $lines = @file( $file ); + if ( !$lines ) return $conf; - return linesToHash($lines, $lower); + return linesToHash($lines, $lower); } /** @@ -190,23 +186,23 @@ function confToHash($file,$lower=false) { * @return array configuration values */ function retrieveConfig($type,$fn,$params=null) { - global $config_cascade; + global $config_cascade; - if(!is_array($params)) $params = array(); + if(!is_array($params)) $params = array(); - $combined = array(); - if (!is_array($config_cascade[$type])) trigger_error('Missing config cascade for "'.$type.'"',E_USER_WARNING); - foreach (array('default','local','protected') as $config_group) { - if (empty($config_cascade[$type][$config_group])) continue; - foreach ($config_cascade[$type][$config_group] as $file) { - if (@file_exists($file)) { - $config = call_user_func_array($fn,array_merge(array($file),$params)); - $combined = array_merge($combined, $config); - } + $combined = array(); + if (!is_array($config_cascade[$type])) trigger_error('Missing config cascade for "'.$type.'"',E_USER_WARNING); + foreach (array('default','local','protected') as $config_group) { + if (empty($config_cascade[$type][$config_group])) continue; + foreach ($config_cascade[$type][$config_group] as $file) { + if (@file_exists($file)) { + $config = call_user_func_array($fn,array_merge(array($file),$params)); + $combined = array_merge($combined, $config); + } + } } - } - return $combined; + return $combined; } /** @@ -218,16 +214,16 @@ function retrieveConfig($type,$fn,$params=null) { * @return array list of files, default before local before protected */ function getConfigFiles($type) { - global $config_cascade; - $files = array(); + global $config_cascade; + $files = array(); - if (!is_array($config_cascade[$type])) trigger_error('Missing config cascade for "'.$type.'"',E_USER_WARNING); - foreach (array('default','local','protected') as $config_group) { - if (empty($config_cascade[$type][$config_group])) continue; - $files = array_merge($files, $config_cascade[$type][$config_group]); - } + if (!is_array($config_cascade[$type])) trigger_error('Missing config cascade for "'.$type.'"',E_USER_WARNING); + foreach (array('default','local','protected') as $config_group) { + if (empty($config_cascade[$type][$config_group])) continue; + $files = array_merge($files, $config_cascade[$type][$config_group]); + } - return $files; + return $files; } /** @@ -237,23 +233,29 @@ function getConfigFiles($type) { * @returns boolean true if enabled, false if disabled */ function actionOK($action){ - static $disabled = null; - if(is_null($disabled)){ - global $conf; + static $disabled = null; + if(is_null($disabled)){ + global $conf; + global $auth; - // prepare disabled actions array and handle legacy options - $disabled = explode(',',$conf['disableactions']); - $disabled = array_map('trim',$disabled); - if(isset($conf['openregister']) && !$conf['openregister']) $disabled[] = 'register'; - if(isset($conf['resendpasswd']) && !$conf['resendpasswd']) $disabled[] = 'resendpwd'; - if(isset($conf['subscribers']) && !$conf['subscribers']) { - $disabled[] = 'subscribe'; - $disabled[] = 'subscribens'; + // prepare disabled actions array and handle legacy options + $disabled = explode(',',$conf['disableactions']); + $disabled = array_map('trim',$disabled); + if(isset($conf['openregister']) && !$conf['openregister']) $disabled[] = 'register'; + if(isset($conf['resendpasswd']) && !$conf['resendpasswd']) $disabled[] = 'resendpwd'; + if(isset($conf['subscribers']) && !$conf['subscribers']) { + $disabled[] = 'subscribe'; + } + if (is_null($auth) || !$auth->canDo('addUser')) { + $disabled[] = 'register'; + } + if (is_null($auth) || !$auth->canDo('modPass')) { + $disabled[] = 'resendpwd'; + } + $disabled = array_unique($disabled); } - $disabled = array_unique($disabled); - } - return !in_array($action,$disabled); + return !in_array($action,$disabled); } /** @@ -266,25 +268,30 @@ function actionOK($action){ * @returns boolean true if headings should be used for $linktype, false otherwise */ function useHeading($linktype) { - static $useHeading = null; + static $useHeading = null; - if (is_null($useHeading)) { - global $conf; + if (is_null($useHeading)) { + global $conf; - if (!empty($conf['useheading'])) { - switch ($conf['useheading']) { - case 'content' : $useHeading['content'] = true; break; - case 'navigation' : $useHeading['navigation'] = true; break; - default: - $useHeading['content'] = true; - $useHeading['navigation'] = true; - } - } else { - $useHeading = array(); + if (!empty($conf['useheading'])) { + switch ($conf['useheading']) { + case 'content': + $useHeading['content'] = true; + break; + + case 'navigation': + $useHeading['navigation'] = true; + break; + default: + $useHeading['content'] = true; + $useHeading['navigation'] = true; + } + } else { + $useHeading = array(); + } } - } - return (!empty($useHeading[$linktype])); + return (!empty($useHeading[$linktype])); } /** @@ -295,13 +302,13 @@ function useHeading($linktype) { * @return string the encoded value */ function conf_encodeString($str,$code) { - switch ($code) { - case 'base64' : return '<b>'.base64_encode($str); - case 'uuencode' : return '<u>'.convert_uuencode($str); - case 'plain': - default: - return $str; - } + switch ($code) { + case 'base64' : return '<b>'.base64_encode($str); + case 'uuencode' : return '<u>'.convert_uuencode($str); + case 'plain': + default: + return $str; + } } /** * return obscured data as plain text @@ -310,11 +317,11 @@ function conf_encodeString($str,$code) { * @return string plain text */ function conf_decodeString($str) { - switch (substr($str,0,3)) { - case '<b>' : return base64_decode(substr($str,3)); - case '<u>' : return convert_uudecode(substr($str,3)); - default: // not encode (or unknown) - return $str; - } + switch (substr($str,0,3)) { + case '<b>' : return base64_decode(substr($str,3)); + case '<u>' : return convert_uudecode(substr($str,3)); + default: // not encode (or unknown) + return $str; + } } -//Setup VIM: ex: et ts=2 enc=utf-8 : +//Setup VIM: ex: et ts=4 enc=utf-8 : diff --git a/inc/events.php b/inc/events.php index 1604c73c6..621cb64c1 100644 --- a/inc/events.php +++ b/inc/events.php @@ -7,196 +7,191 @@ */ if(!defined('DOKU_INC')) die('meh.'); -require_once(DOKU_INC.'inc/pluginutils.php'); class Doku_Event { - // public properties - var $name = ''; // READONLY event name, objects must register against this name to see the event - var $data = NULL; // READWRITE data relevant to the event, no standardised format (YET!) - var $result = NULL; // READWRITE the results of the event action, only relevant in "_AFTER" advise - // event handlers may modify this if they are preventing the default action - // to provide the after event handlers with event results - var $canPreventDefault = true; // READONLY if true, event handlers can prevent the events default action - - // private properties, event handlers can effect these through the provided methods - var $_default = true; // whether or not to carry out the default action associated with the event - var $_continue = true; // whether or not to continue propagating the event to other handlers - - /** - * event constructor - */ - function Doku_Event($name, &$data) { - - $this->name = $name; - $this->data =& $data; - - } - - /** - * advise functions - * - * advise all registered handlers of this event - * - * if these methods are used by functions outside of this object, they must - * properly handle correct processing of any default action and issue an - * advise_after() signal. e.g. - * $evt = new Doku_Event(name, data); - * if ($evt->advise_before(canPreventDefault) { - * // default action code block - * } - * $evt->advise_after(); - * unset($evt); - * - * @return results of processing the event, usually $this->_default - */ - function advise_before($enablePreventDefault=true) { - global $EVENT_HANDLER; - - $this->canPreventDefault = $enablePreventDefault; - $EVENT_HANDLER->process_event($this,'BEFORE'); - - return (!$enablePreventDefault || $this->_default); - } - - function advise_after() { - global $EVENT_HANDLER; - - $this->_continue = true; - $EVENT_HANDLER->process_event($this,'AFTER'); - } - - /** - * trigger - * - * - advise all registered (<event>_BEFORE) handlers that this event is about to take place - * - carry out the default action using $this->data based on $enablePrevent and - * $this->_default, all of which may have been modified by the event handlers. - * - advise all registered (<event>_AFTER) handlers that the event has taken place - * - * @return $event->results - * the value set by any <event>_before or <event> handlers if the default action is prevented - * or the results of the default action (as modified by <event>_after handlers) - * or NULL no action took place and no handler modified the value - */ - function trigger($action=NULL, $enablePrevent=true) { - - if (!is_callable($action)) $enablePrevent = false; - - if ($this->advise_before($enablePrevent) && is_callable($action)) { - if (is_array($action)) { - list($obj,$method) = $action; - $this->result = $obj->$method($this->data); - } else { - $this->result = $action($this->data); - } + // public properties + var $name = ''; // READONLY event name, objects must register against this name to see the event + var $data = null; // READWRITE data relevant to the event, no standardised format (YET!) + var $result = null; // READWRITE the results of the event action, only relevant in "_AFTER" advise + // event handlers may modify this if they are preventing the default action + // to provide the after event handlers with event results + var $canPreventDefault = true; // READONLY if true, event handlers can prevent the events default action + + // private properties, event handlers can effect these through the provided methods + var $_default = true; // whether or not to carry out the default action associated with the event + var $_continue = true; // whether or not to continue propagating the event to other handlers + + /** + * event constructor + */ + function Doku_Event($name, &$data) { + + $this->name = $name; + $this->data =& $data; + + } + + /** + * advise functions + * + * advise all registered handlers of this event + * + * if these methods are used by functions outside of this object, they must + * properly handle correct processing of any default action and issue an + * advise_after() signal. e.g. + * $evt = new Doku_Event(name, data); + * if ($evt->advise_before(canPreventDefault) { + * // default action code block + * } + * $evt->advise_after(); + * unset($evt); + * + * @return results of processing the event, usually $this->_default + */ + function advise_before($enablePreventDefault=true) { + global $EVENT_HANDLER; + + $this->canPreventDefault = $enablePreventDefault; + $EVENT_HANDLER->process_event($this,'BEFORE'); + + return (!$enablePreventDefault || $this->_default); + } + + function advise_after() { + global $EVENT_HANDLER; + + $this->_continue = true; + $EVENT_HANDLER->process_event($this,'AFTER'); + } + + /** + * trigger + * + * - advise all registered (<event>_BEFORE) handlers that this event is about to take place + * - carry out the default action using $this->data based on $enablePrevent and + * $this->_default, all of which may have been modified by the event handlers. + * - advise all registered (<event>_AFTER) handlers that the event has taken place + * + * @return $event->results + * the value set by any <event>_before or <event> handlers if the default action is prevented + * or the results of the default action (as modified by <event>_after handlers) + * or NULL no action took place and no handler modified the value + */ + function trigger($action=null, $enablePrevent=true) { + + if (!is_callable($action)) $enablePrevent = false; + + if ($this->advise_before($enablePrevent) && is_callable($action)) { + if (is_array($action)) { + list($obj,$method) = $action; + $this->result = $obj->$method($this->data); + } else { + $this->result = $action($this->data); + } + } + + $this->advise_after(); + + return $this->result; } - $this->advise_after(); - - return $this->result; - } - - /** - * stopPropagation - * - * stop any further processing of the event by event handlers - * this function does not prevent the default action taking place - */ - function stopPropagation() { $this->_continue = false; } - - /** - * preventDefault - * - * prevent the default action taking place - */ - function preventDefault() { $this->_default = false; } + /** + * stopPropagation + * + * stop any further processing of the event by event handlers + * this function does not prevent the default action taking place + */ + function stopPropagation() { $this->_continue = false; } + + /** + * preventDefault + * + * prevent the default action taking place + */ + function preventDefault() { $this->_default = false; } } class Doku_Event_Handler { - // public properties: none + // public properties: none - // private properties - var $_hooks = array(); // array of events and their registered handlers + // private properties + var $_hooks = array(); // array of events and their registered handlers - /** - * event_handler - * - * constructor, loads all action plugins and calls their register() method giving them - * an opportunity to register any hooks they require - */ - function Doku_Event_Handler() { + /** + * event_handler + * + * constructor, loads all action plugins and calls their register() method giving them + * an opportunity to register any hooks they require + */ + function Doku_Event_Handler() { - // load action plugins - $plugin = NULL; - $pluginlist = plugin_list('action'); + // load action plugins + $plugin = null; + $pluginlist = plugin_list('action'); - foreach ($pluginlist as $plugin_name) { - $plugin =& plugin_load('action',$plugin_name); + foreach ($pluginlist as $plugin_name) { + $plugin =& plugin_load('action',$plugin_name); - if ($plugin !== NULL) $plugin->register($this); - } - } - - /** - * register_hook - * - * register a hook for an event - * - * @PARAM $event (string) name used by the event, (incl '_before' or '_after' for triggers) - * @PARAM $obj (obj) object in whose scope method is to be executed, - * if NULL, method is assumed to be a globally available function - * @PARAM $method (function) event handler function - * @PARAM $param (mixed) data passed to the event handler - */ - function register_hook($event, $advise, &$obj, $method, $param=NULL) { - $this->_hooks[$event.'_'.$advise][] = array(&$obj, $method, $param); - } - - function process_event(&$event,$advise='') { - - $evt_name = $event->name . ($advise ? '_'.$advise : '_BEFORE'); - - if (!empty($this->_hooks[$evt_name])) { - $hook = reset($this->_hooks[$evt_name]); - do { -// list($obj, $method, $param) = $hook; - $obj =& $hook[0]; - $method = $hook[1]; - $param = $hook[2]; - - if (is_null($obj)) { - $method($event, $param); - } else { - $obj->$method($event, $param); + if ($plugin !== null) $plugin->register($this); } + } + + /** + * register_hook + * + * register a hook for an event + * + * @param $event (string) name used by the event, (incl '_before' or '_after' for triggers) + * @param $obj (obj) object in whose scope method is to be executed, + * if NULL, method is assumed to be a globally available function + * @param $method (function) event handler function + * @param $param (mixed) data passed to the event handler + */ + function register_hook($event, $advise, &$obj, $method, $param=null) { + $this->_hooks[$event.'_'.$advise][] = array(&$obj, $method, $param); + } - } while ($event->_continue && $hook = next($this->_hooks[$evt_name])); + function process_event(&$event,$advise='') { + + $evt_name = $event->name . ($advise ? '_'.$advise : '_BEFORE'); + + if (!empty($this->_hooks[$evt_name])) { + $hook = reset($this->_hooks[$evt_name]); + do { + // list($obj, $method, $param) = $hook; + $obj =& $hook[0]; + $method = $hook[1]; + $param = $hook[2]; + + if (is_null($obj)) { + $method($event, $param); + } else { + $obj->$method($event, $param); + } + + } while ($event->_continue && $hook = next($this->_hooks[$evt_name])); + } } - } } /** - * trigger_event + * trigger_event * - * function wrapper to process (create, trigger and destroy) an event + * function wrapper to process (create, trigger and destroy) an event * - * @PARAM $name (string) name for the event - * @PARAM $data (mixed) event data - * @PARAM $action (callback) (optional, default=NULL) default action, a php callback function - * @PARAM $canPreventDefault (bool) (optional, default=true) can hooks prevent the default action + * @param $name (string) name for the event + * @param $data (mixed) event data + * @param $action (callback) (optional, default=NULL) default action, a php callback function + * @param $canPreventDefault (bool) (optional, default=true) can hooks prevent the default action * - * @RETURN (mixed) the event results value after all event processing is complete + * @return (mixed) the event results value after all event processing is complete * by default this is the return value of the default action however * it can be set or modified by event handler hooks */ -function trigger_event($name, &$data, $action=NULL, $canPreventDefault=true) { +function trigger_event($name, &$data, $action=null, $canPreventDefault=true) { - $evt = new Doku_Event($name, $data); - return $evt->trigger($action, $canPreventDefault); + $evt = new Doku_Event($name, $data); + return $evt->trigger($action, $canPreventDefault); } - -// create the event handler -global $EVENT_HANDLER; -$EVENT_HANDLER = new Doku_Event_Handler(); diff --git a/inc/feedcreator.class.php b/inc/feedcreator.class.php index 86113e8c3..e7b8d7afc 100644 --- a/inc/feedcreator.class.php +++ b/inc/feedcreator.class.php @@ -336,7 +336,7 @@ class UniversalFeedCreator extends FeedCreator { } } - function _sendMIME($format) { + function _sendMIME() { header('Content-Type: '.$this->contentType.'; charset='.$this->encoding, true); } @@ -369,35 +369,35 @@ class UniversalFeedCreator extends FeedCreator { } - /** - * Turns on caching and checks if there is a recent version of this feed in the cache. - * If there is, an HTTP redirect header is sent. - * To effectively use caching, you should create the FeedCreator object and call this method - * before anything else, especially before you do the time consuming task to build the feed - * (web fetching, for example). - * - * @param string format format the feed should comply to. Valid values are: - * "PIE0.1" (deprecated), "mbox", "RSS0.91", "RSS1.0", "RSS2.0", "OPML", "ATOM0.3". - * @param filename string optional the filename where a recent version of the feed is saved. If not specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see _generateFilename()). - * @param timeout int optional the timeout in seconds before a cached version is refreshed (defaults to 3600 = 1 hour) - */ - function useCached($format="RSS0.91", $filename="", $timeout=3600) { - $this->_setFormat($format); - $this->_feed->useCached($filename, $timeout); - } + /** + * Turns on caching and checks if there is a recent version of this feed in the cache. + * If there is, an HTTP redirect header is sent. + * To effectively use caching, you should create the FeedCreator object and call this method + * before anything else, especially before you do the time consuming task to build the feed + * (web fetching, for example). + * + * @param string format format the feed should comply to. Valid values are: + * "PIE0.1" (deprecated), "mbox", "RSS0.91", "RSS1.0", "RSS2.0", "OPML", "ATOM0.3". + * @param filename string optional the filename where a recent version of the feed is saved. If not specified, the filename is $_SERVER["PHP_SELF"] with the extension changed to .xml (see _generateFilename()). + * @param timeout int optional the timeout in seconds before a cached version is refreshed (defaults to 3600 = 1 hour) + */ + function useCached($format="RSS0.91", $filename="", $timeout=3600) { + $this->_setFormat($format); + $this->_feed->useCached($filename, $timeout); + } - /** - * Outputs feed to the browser - needed for on-the-fly feed generation (like it is done in WordPress, etc.) - * - * @param format string format the feed should comply to. Valid values are: - * "PIE0.1" (deprecated), "mbox", "RSS0.91", "RSS1.0", "RSS2.0", "OPML", "ATOM0.3". - */ - function outputFeed($format='RSS0.91') { + /** + * Outputs feed to the browser - needed for on-the-fly feed generation (like it is done in WordPress, etc.) + * + * @param format string format the feed should comply to. Valid values are: + * "PIE0.1" (deprecated), "mbox", "RSS0.91", "RSS1.0", "RSS2.0", "OPML", "ATOM0.3". + */ + function outputFeed($format='RSS0.91') { $this->_setFormat($format); - $this->_sendMIME($format); + $this->_sendMIME(); $this->_feed->outputFeed(); - } + } } @@ -794,7 +794,8 @@ class RSSCreator10 extends FeedCreator { $feed.= " <dc:date>".htmlspecialchars($now->iso8601())."</dc:date>\n"; $feed.= " <items>\n"; $feed.= " <rdf:Seq>\n"; - for ($i=0;$i<count($this->items);$i++) { + $icnt = count($this->items); + for ($i=0; $i<$icnt; $i++) { $feed.= " <rdf:li rdf:resource=\"".htmlspecialchars($this->items[$i]->link)."\"/>\n"; } $feed.= " </rdf:Seq>\n"; @@ -809,7 +810,8 @@ class RSSCreator10 extends FeedCreator { } $feed.= $this->_createAdditionalElements($this->additionalElements, " "); - for ($i=0;$i<count($this->items);$i++) { + $icnt = count($this->items); + for ($i=0; $i<$icnt; $i++) { $feed.= " <item rdf:about=\"".htmlspecialchars($this->items[$i]->link)."\">\n"; //$feed.= " <dc:type>Posting</dc:type>\n"; $feed.= " <dc:format>text/html</dc:format>\n"; @@ -940,7 +942,8 @@ class RSSCreator091 extends FeedCreator { } $feed.= $this->_createAdditionalElements($this->additionalElements, " "); - for ($i=0;$i<count($this->items);$i++) { + $icnt = count($this->items); + for ($i=0; $i<$icnt; $i++) { $feed.= " <item>\n"; $feed.= " <title>".FeedCreator::iTrunc(htmlspecialchars(strip_tags($this->items[$i]->title)),100)."</title>\n"; $feed.= " <link>".htmlspecialchars($this->items[$i]->link)."</link>\n"; @@ -968,7 +971,7 @@ class RSSCreator091 extends FeedCreator { $feed.= " <comments>".htmlspecialchars($this->items[$i]->comments)."</comments>\n"; } if ($this->items[$i]->date!="") { - $itemDate = new FeedDate($this->items[$i]->date); + $itemDate = new FeedDate($this->items[$i]->date); $feed.= " <pubDate>".htmlspecialchars($itemDate->rfc822())."</pubDate>\n"; } if ($this->items[$i]->guid!="") { @@ -976,18 +979,15 @@ class RSSCreator091 extends FeedCreator { } $feed.= $this->_createAdditionalElements($this->items[$i]->additionalElements, " "); - if ($this->RSSVersion == "2.0" && $this->items[$i]->enclosure != NULL) - { - $feed.= " <enclosure url=\""; - $feed.= $this->items[$i]->enclosure->url; - $feed.= "\" length=\""; - $feed.= $this->items[$i]->enclosure->length; - $feed.= "\" type=\""; - $feed.= $this->items[$i]->enclosure->type; - $feed.= "\"/>\n"; - } - - + if ($this->RSSVersion == "2.0" && $this->items[$i]->enclosure != null) { + $feed.= " <enclosure url=\""; + $feed.= $this->items[$i]->enclosure->url; + $feed.= "\" length=\""; + $feed.= $this->items[$i]->enclosure->length; + $feed.= "\" type=\""; + $feed.= $this->items[$i]->enclosure->type; + $feed.= "\"/>\n"; + } $feed.= " </item>\n"; } @@ -1038,7 +1038,8 @@ class PIECreator01 extends FeedCreator { $this->truncSize = 500; $feed.= " <subtitle>".$this->getDescription()."</subtitle>\n"; $feed.= " <link>".$this->link."</link>\n"; - for ($i=0;$i<count($this->items);$i++) { + $icnt = count($this->items); + for ($i=0; $i<$icnt; $i++) { $feed.= " <entry>\n"; $feed.= " <title>".FeedCreator::iTrunc(htmlspecialchars(strip_tags($this->items[$i]->title)),100)."</title>\n"; $feed.= " <link>".htmlspecialchars($this->items[$i]->link)."</link>\n"; @@ -1081,7 +1082,7 @@ class PIECreator01 extends FeedCreator { * @since 1.7.2-mod (modified) * @author Mohammad Hafiz Ismail (mypapit@gmail.com) */ - class AtomCreator10 extends FeedCreator { +class AtomCreator10 extends FeedCreator { function AtomCreator10() { $this->contentType = "application/atom+xml"; @@ -1114,7 +1115,8 @@ class PIECreator01 extends FeedCreator { $feed.= " <generator>".FEEDCREATOR_VERSION."</generator>\n"; $feed.= "<link rel=\"self\" type=\"application/atom+xml\" href=\"". $this->syndicationURL . "\" />\n"; $feed.= $this->_createAdditionalElements($this->additionalElements, " "); - for ($i=0;$i<count($this->items);$i++) { + $icnt = count($this->items); + for ($i=0; $i<$icnt; $i++) { $feed.= " <entry>\n"; $feed.= " <title>".htmlspecialchars(strip_tags($this->items[$i]->title))."</title>\n"; $feed.= " <link rel=\"alternate\" type=\"text/html\" href=\"".htmlspecialchars($this->items[$i]->link)."\"/>\n"; @@ -1134,8 +1136,8 @@ class PIECreator01 extends FeedCreator { if ($this->items[$i]->description!="") { $feed.= " <summary>".htmlspecialchars($this->items[$i]->description)."</summary>\n"; } - if ($this->items[$i]->enclosure != NULL) { - $feed.=" <link rel=\"enclosure\" href=\"". $this->items[$i]->enclosure->url ."\" type=\"". $this->items[$i]->enclosure->type."\" length=\"". $this->items[$i]->enclosure->length . "\" />\n"; + if ($this->items[$i]->enclosure != null) { + $feed.=" <link rel=\"enclosure\" href=\"". $this->items[$i]->enclosure->url ."\" type=\"". $this->items[$i]->enclosure->type."\" length=\"". $this->items[$i]->enclosure->length . "\" />\n"; } $feed.= " </entry>\n"; } @@ -1195,7 +1197,8 @@ class AtomCreator03 extends FeedCreator { } $feed.= " <generator>".FEEDCREATOR_VERSION."</generator>\n"; $feed.= $this->_createAdditionalElements($this->additionalElements, " "); - for ($i=0;$i<count($this->items);$i++) { + $icnt = count($this->items); + for ($i=0; $i<$icnt; $i++) { $feed.= " <entry>\n"; $feed.= " <title>".htmlspecialchars(strip_tags($this->items[$i]->title))."</title>\n"; $feed.= " <link rel=\"alternate\" type=\"text/html\" href=\"".htmlspecialchars($this->items[$i]->link)."\"/>\n"; @@ -1254,7 +1257,8 @@ class MBOXCreator extends FeedCreator { if ( ($dec == 32) && ($i == ($linlen - 1)) ) { // convert space at eol only $c = "=20"; } elseif ( ($dec == 61) || ($dec < 32 ) || ($dec > 126) ) { // always encode "\t", which is *not* required - $h2 = floor($dec/16); $h1 = floor($dec%16); + $h2 = floor($dec/16); + $h1 = floor($dec%16); $c = $escape.$hex["$h2"].$hex["$h1"]; } if ( (strlen($newline) + strlen($c)) >= $line_max ) { // CRLF is not counted @@ -1274,7 +1278,8 @@ class MBOXCreator extends FeedCreator { * @return string the feed's complete text */ function createFeed() { - for ($i=0;$i<count($this->items);$i++) { + $icnt = count($this->items); + for ($i=0; $i<$icnt; $i++) { if ($this->items[$i]->author!="") { $from = $this->items[$i]->author; } else { @@ -1347,7 +1352,8 @@ class OPMLCreator extends FeedCreator { } $feed.= " </head>\n"; $feed.= " <body>\n"; - for ($i=0;$i<count($this->items);$i++) { + $icnt = count($this->items); + for ($i=0;$i<$icnt; $i++) { $feed.= " <outline type=\"rss\" "; $title = htmlspecialchars(strip_tags(strtr($this->items[$i]->title,"\n\r"," "))); $feed.= " title=\"".$title."\""; @@ -1468,7 +1474,8 @@ class HTMLCreator extends FeedCreator { $feedArray[] = "<div class='".$this->stylePrefix."header'>".$this->header."</div>"; } - for ($i=0;$i<count($this->items);$i++) { + $icnt = count($this->items); + for ($i=0; $i<$icnt; $i++) { if ($this->separator and $i > 0) { $feedArray[] = "<div class='".$this->stylePrefix."separator'>".$this->separator."</div>"; } @@ -1528,8 +1535,7 @@ class JSCreator extends HTMLCreator { * writes the javascript * @return string the scripts's complete text */ - function createFeed() - { + function createFeed() { $feed = parent::createFeed(); $feedArray = explode("\n",$feed); diff --git a/inc/form.php b/inc/form.php index a514526b7..70190d2b4 100644 --- a/inc/form.php +++ b/inc/form.php @@ -7,7 +7,6 @@ */ if(!defined('DOKU_INC')) die('meh.'); -require_once(DOKU_INC.'inc/html.php'); /** * Class for creating simple HTML forms. @@ -283,6 +282,27 @@ class Doku_Form { echo $this->getForm(); } + /** + * Add a radio set + * + * This function adds a set of radio buttons to the form. If $_POST[$name] + * is set, this radio is preselected, else the first radio button. + * + * @param string $name The HTML field name + * @param array $entries An array of entries $value => $caption + * + * @author Adrian Lang <lang@cosmocode.de> + */ + + function addRadioSet($name, $entries) { + $value = (isset($_POST[$name]) && isset($entries[$_POST[$name]])) ? + $_POST[$name] : key($entries); + foreach($entries as $val => $cap) { + $data = ($value === $val) ? array('checked' => 'checked') : array(); + $this->addElement(form_makeRadioField($name, $val, $cap, '', '', $data)); + } + } + } /** @@ -464,6 +484,8 @@ function form_makeFileField($name, $label=null, $id='', $class='', $attrs=array( * form_makeCheckboxField * * Create a form element for a checkbox input element with label. + * If $value is an array, a hidden field with the same name and the value + * $value[1] is constructed as well. * * @see form_makeFieldRight * @author Tom N Harris <tnharris@whoopdedo.org> @@ -798,6 +820,8 @@ function form_filefield($attrs) { * _class : class attribute used on the label tag * _text : Text to display after the input. Not escaped. * Other attributes are passed to buildAttributes() for the input tag. + * If value is an array, a hidden field with the same name and the value + * $attrs['value'][1] is constructed as well. * * @author Tom N Harris <tnharris@whoopdedo.org> */ @@ -807,7 +831,13 @@ function form_checkboxfield($attrs) { $s = '<label'; if ($attrs['_class']) $s .= ' class="'.$attrs['_class'].'"'; if (!empty($attrs['id'])) $s .= ' for="'.$attrs['id'].'"'; - $s .= '><input type="checkbox" '.buildAttributes($attrs,true).'/>'; + $s .= '>'; + if (is_array($attrs['value'])) { + echo '<input type="hidden" name="' . hsc($attrs['name']) .'"' + . ' value="' . hsc($attrs['value'][1]) . '" />'; + $attrs['value'] = $attrs['value'][0]; + } + $s .= '<input type="checkbox" '.buildAttributes($attrs,true).'/>'; $s .= ' <span>'.$attrs['_text'].'</span></label>'; if (preg_match('/(^| )block($| )/', $attrs['_class'])) $s .= '<br />'; @@ -859,7 +889,9 @@ function form_menufield($attrs) { $s .= ' <select '.buildAttributes($attrs,true).'>'.DOKU_LF; if (!empty($attrs['_options'])) { $selected = false; - for($n=0;$n<count($attrs['_options']);$n++){ + + $cnt = count($attrs['_options']); + for($n=0; $n < $cnt; $n++){ @list($value,$text,$select) = $attrs['_options'][$n]; $p = ''; if (!is_null($text)) diff --git a/inc/fulltext.php b/inc/fulltext.php index c8236e1d4..e90205e9c 100644 --- a/inc/fulltext.php +++ b/inc/fulltext.php @@ -7,8 +7,11 @@ */ if(!defined('DOKU_INC')) die('meh.'); -require_once(DOKU_INC.'inc/indexer.php'); +/** + * create snippets for the first few results only + */ +if(!defined('FT_SNIPPET_NUMBER')) define('FT_SNIPPET_NUMBER',15); /** * The fulltext search @@ -20,10 +23,10 @@ require_once(DOKU_INC.'inc/indexer.php'); */ function ft_pageSearch($query,&$highlight){ - $data['query'] = $query; - $data['highlight'] =& $highlight; + $data['query'] = $query; + $data['highlight'] =& $highlight; - return trigger_event('SEARCH_QUERY_FULLPAGE', $data, '_ft_pageSearch'); + return trigger_event('SEARCH_QUERY_FULLPAGE', $data, '_ft_pageSearch'); } /** @@ -135,7 +138,6 @@ function ft_backlinks($id){ $docs = array_keys(ft_resultCombine(array_values($matches))); $docs = array_filter($docs,'isVisiblePage'); // discard hidden pages if(!count($docs)) return $result; - require_once(DOKU_INC.'inc/parserutils.php'); // check metadata for matching links foreach($docs as $match){ @@ -189,7 +191,7 @@ function ft_mediause($id,$max){ foreach($matches[1] as $img){ $img = trim($img); if(preg_match('/^https?:\/\//i',$img)) continue; // skip external images - list($img) = explode('?',$img); // remove any parameters + list($img) = explode('?',$img); // remove any parameters resolve_mediaid($ns,$img,$exists); // resolve the possibly relative img if($img == $id){ // we have a match @@ -211,53 +213,64 @@ function ft_mediause($id,$max){ * Quicksearch for pagenames * * By default it only matches the pagename and ignores the - * namespace. This can be changed with the second parameter + * namespace. This can be changed with the second parameter. + * The third parameter allows to search in titles as well. * - * refactored into ft_pageLookup(), _ft_pageLookup() and trigger_event() + * The function always returns titles as well * + * @triggers SEARCH_QUERY_PAGELOOKUP * @author Andreas Gohr <andi@splitbrain.org> + * @author Adrian Lang <lang@cosmocode.de> */ -function ft_pageLookup($id,$pageonly=true){ - $data = array('id' => $id, 'pageonly' => $pageonly); - return trigger_event('SEARCH_QUERY_PAGELOOKUP',$data,'_ft_pageLookup'); +function ft_pageLookup($id, $in_ns=false, $in_title=false){ + $data = compact('id', 'in_ns', 'in_title'); + $data['has_titles'] = true; // for plugin backward compatibility check + return trigger_event('SEARCH_QUERY_PAGELOOKUP', $data, '_ft_pageLookup'); } function _ft_pageLookup(&$data){ - // split out original parameterrs + // split out original parameters $id = $data['id']; - $pageonly = $data['pageonly']; + if (preg_match('/(?:^| )@(\w+)/', $id, $matches)) { + $ns = cleanID($matches[1]) . ':'; + $id = str_replace($matches[0], '', $id); + } - global $conf; - $id = preg_quote($id,'/'); - $pages = file($conf['indexdir'].'/page.idx'); - if($id) $pages = array_values(preg_grep('/'.$id.'/',$pages)); - - $cnt = count($pages); - for($i=0; $i<$cnt; $i++){ - if($pageonly){ - if(!preg_match('/'.$id.'/',noNS($pages[$i]))){ - unset($pages[$i]); - continue; + $in_ns = $data['in_ns']; + $in_title = $data['in_title']; + + $pages = array_map('rtrim', idx_getIndex('page', '')); + $titles = array_map('rtrim', idx_getIndex('title', '')); + $pages = array_combine($pages, $titles); + + $cleaned = cleanID($id); + if ($id !== '' && $cleaned !== '') { + foreach ($pages as $p_id => $p_title) { + if ((strpos($in_ns ? $p_id : noNSorNS($p_id), $cleaned) === false) && + (!$in_title || (stripos($p_title, $id) === false)) ) { + unset($pages[$p_id]); } } - if(!page_exists($pages[$i])){ - unset($pages[$i]); - continue; + } + if (isset($ns)) { + foreach (array_keys($pages) as $p_id) { + if (strpos($p_id, $ns) !== 0) { + unset($pages[$p_id]); + } } } - $pages = array_filter($pages,'isVisiblePage'); // discard hidden pages - if(!count($pages)) return array(); - + // discard hidden pages + // discard nonexistent pages // check ACL permissions foreach(array_keys($pages) as $idx){ - if(auth_quickaclcheck(trim($pages[$idx])) < AUTH_READ){ + if(!isVisiblePage($idx) || !page_exists($idx) || + auth_quickaclcheck($idx) < AUTH_READ) { unset($pages[$idx]); } } - $pages = array_map('trim',$pages); - usort($pages,'ft_pagesorter'); + uasort($pages,'ft_pagesorter'); return $pages; } @@ -286,11 +299,11 @@ function ft_pagesorter($a, $b){ function ft_snippet($id,$highlight){ $text = rawWiki($id); $evdata = array( - 'id' => $id, - 'text' => &$text, - 'highlight' => &$highlight, - 'snippet' => '', - ); + 'id' => $id, + 'text' => &$text, + 'highlight' => &$highlight, + 'snippet' => '', + ); $evt = new Doku_Event('FULLTEXT_SNIPPET_CREATE',$evdata); if ($evt->advise_before()) { @@ -305,60 +318,60 @@ function ft_snippet($id,$highlight){ $re3 = "$re1.{0,45}(?!\\1)$re1.{0,45}(?!\\1)(?!\\2)$re1"; for ($cnt=4; $cnt--;) { - if (0) { - } else if (preg_match('/'.$re3.'/iu',$text,$match,PREG_OFFSET_CAPTURE,$offset)) { - } else if (preg_match('/'.$re2.'/iu',$text,$match,PREG_OFFSET_CAPTURE,$offset)) { - } else if (preg_match('/'.$re1.'/iu',$text,$match,PREG_OFFSET_CAPTURE,$offset)) { - } else { - break; - } - - list($str,$idx) = $match[0]; - - // convert $idx (a byte offset) into a utf8 character offset - $utf8_idx = utf8_strlen(substr($text,0,$idx)); - $utf8_len = utf8_strlen($str); - - // establish context, 100 bytes surrounding the match string - // first look to see if we can go 100 either side, - // then drop to 50 adding any excess if the other side can't go to 50, - $pre = min($utf8_idx-$utf8_offset,100); - $post = min($len-$utf8_idx-$utf8_len,100); - - if ($pre>50 && $post>50) { - $pre = $post = 50; - } else if ($pre>50) { - $pre = min($pre,100-$post); - } else if ($post>50) { - $post = min($post, 100-$pre); - } else { - // both are less than 50, means the context is the whole string - // make it so and break out of this loop - there is no need for the - // complex snippet calculations - $snippets = array($text); - break; - } - - // establish context start and end points, try to append to previous - // context if possible - $start = $utf8_idx - $pre; - $append = ($start < $end) ? $end : false; // still the end of the previous context snippet - $end = $utf8_idx + $utf8_len + $post; // now set it to the end of this context - - if ($append) { - $snippets[count($snippets)-1] .= utf8_substr($text,$append,$end-$append); - } else { - $snippets[] = utf8_substr($text,$start,$end-$start); - } - - // set $offset for next match attempt - // substract strlen to avoid splitting a potential search success, - // this is an approximation as the search pattern may match strings - // of varying length and it will fail if the context snippet - // boundary breaks a matching string longer than the current match - $utf8_offset = $utf8_idx + $post; - $offset = $idx + strlen(utf8_substr($text,$utf8_idx,$post)); - $offset = utf8_correctIdx($text,$offset); + if (0) { + } else if (preg_match('/'.$re3.'/iu',$text,$match,PREG_OFFSET_CAPTURE,$offset)) { + } else if (preg_match('/'.$re2.'/iu',$text,$match,PREG_OFFSET_CAPTURE,$offset)) { + } else if (preg_match('/'.$re1.'/iu',$text,$match,PREG_OFFSET_CAPTURE,$offset)) { + } else { + break; + } + + list($str,$idx) = $match[0]; + + // convert $idx (a byte offset) into a utf8 character offset + $utf8_idx = utf8_strlen(substr($text,0,$idx)); + $utf8_len = utf8_strlen($str); + + // establish context, 100 bytes surrounding the match string + // first look to see if we can go 100 either side, + // then drop to 50 adding any excess if the other side can't go to 50, + $pre = min($utf8_idx-$utf8_offset,100); + $post = min($len-$utf8_idx-$utf8_len,100); + + if ($pre>50 && $post>50) { + $pre = $post = 50; + } else if ($pre>50) { + $pre = min($pre,100-$post); + } else if ($post>50) { + $post = min($post, 100-$pre); + } else { + // both are less than 50, means the context is the whole string + // make it so and break out of this loop - there is no need for the + // complex snippet calculations + $snippets = array($text); + break; + } + + // establish context start and end points, try to append to previous + // context if possible + $start = $utf8_idx - $pre; + $append = ($start < $end) ? $end : false; // still the end of the previous context snippet + $end = $utf8_idx + $utf8_len + $post; // now set it to the end of this context + + if ($append) { + $snippets[count($snippets)-1] .= utf8_substr($text,$append,$end-$append); + } else { + $snippets[] = utf8_substr($text,$start,$end-$start); + } + + // set $offset for next match attempt + // substract strlen to avoid splitting a potential search success, + // this is an approximation as the search pattern may match strings + // of varying length and it will fail if the context snippet + // boundary breaks a matching string longer than the current match + $utf8_offset = $utf8_idx + $post; + $offset = $idx + strlen(utf8_substr($text,$utf8_idx,$post)); + $offset = utf8_correctIdx($text,$offset); } $m = "\1"; @@ -391,16 +404,16 @@ function ft_resultCombine($args){ $result = array(); if ($array_count > 1) { - foreach ($args[0] as $key => $value) { - $result[$key] = $value; - for ($i = 1; $i !== $array_count; $i++) { - if (!isset($args[$i][$key])) { - unset($result[$key]); - break; + foreach ($args[0] as $key => $value) { + $result[$key] = $value; + for ($i = 1; $i !== $array_count; $i++) { + if (!isset($args[$i][$key])) { + unset($result[$key]); + break; + } + $result[$key] += $args[$i][$key]; } - $result[$key] += $args[$i][$key]; } - } } return $result; } @@ -651,30 +664,30 @@ function ft_queryParser($query){ switch (substr($token, 0, 3)) { case 'N+:': - $q['ns'][] = $body; // for backward compatibility - break; + $q['ns'][] = $body; // for backward compatibility + break; case 'N-:': - $q['notns'][] = $body; // for backward compatibility - break; + $q['notns'][] = $body; // for backward compatibility + break; case 'W_:': - $q['words'][] = $body; - break; + $q['words'][] = $body; + break; case 'W-:': - $q['words'][] = $body; - $q['not'][] = $body; // for backward compatibility - break; + $q['words'][] = $body; + $q['not'][] = $body; // for backward compatibility + break; case 'W+:': - $q['words'][] = $body; - $q['highlight'][] = str_replace('*', '', $body); - $q['and'][] = $body; // for backward compatibility - break; + $q['words'][] = $body; + $q['highlight'][] = str_replace('*', '', $body); + $q['and'][] = $body; // for backward compatibility + break; case 'P-:': - $q['phrases'][] = $body; - break; + $q['phrases'][] = $body; + break; case 'P+:': - $q['phrases'][] = $body; - $q['highlight'][] = str_replace('*', '', $body); - break; + $q['phrases'][] = $body; + $q['highlight'][] = str_replace('*', '', $body); + break; } } foreach (array('words', 'phrases', 'highlight', 'ns', 'notns', 'and', 'not') as $key) { diff --git a/inc/geshi.php b/inc/geshi.php index abe69a2bd..31d2da49f 100644 --- a/inc/geshi.php +++ b/inc/geshi.php @@ -41,7 +41,7 @@ // /** The version of this GeSHi file */ -define('GESHI_VERSION', '1.0.8.4'); +define('GESHI_VERSION', '1.0.8.8'); // Define the root directory for the GeSHi code tree if (!defined('GESHI_ROOT')) { @@ -207,8 +207,10 @@ define('GESHI_NUMBER_BIN_PREFIX_PERCENT', 32); //%[01]+ define('GESHI_NUMBER_BIN_PREFIX_0B', 64); //0b[01]+ /** Number format to highlight octal numbers with a leading zero */ define('GESHI_NUMBER_OCT_PREFIX', 256); //0[0-7]+ +/** Number format to highlight octal numbers with a prefix 0o (logtalk) */ +define('GESHI_NUMBER_OCT_PREFIX_0O', 512); //0[0-7]+ /** Number format to highlight octal numbers with a suffix of o */ -define('GESHI_NUMBER_OCT_SUFFIX', 512); //[0-7]+[oO] +define('GESHI_NUMBER_OCT_SUFFIX', 1024); //[0-7]+[oO] /** Number format to highlight hex numbers with a prefix 0x */ define('GESHI_NUMBER_HEX_PREFIX', 4096); //0x[0-9a-fA-F]+ /** Number format to highlight hex numbers with a suffix of h */ @@ -1084,13 +1086,14 @@ class GeSHi { * @param string The style to make the escape characters * @param boolean Whether to merge the new styles with the old or just * to overwrite them + * @param int Tells the group of strings for which style should be set. * @since 1.0.0 */ - function set_strings_style($style, $preserve_defaults = false) { + function set_strings_style($style, $preserve_defaults = false, $group = 0) { if (!$preserve_defaults) { - $this->language_data['STYLES']['STRINGS'][0] = $style; + $this->language_data['STYLES']['STRINGS'][$group] = $style; } else { - $this->language_data['STYLES']['STRINGS'][0] .= $style; + $this->language_data['STYLES']['STRINGS'][$group] .= $style; } } @@ -1132,13 +1135,14 @@ class GeSHi { * @param string The style to make the numbers * @param boolean Whether to merge the new styles with the old or just * to overwrite them + * @param int Tells the group of numbers for which style should be set. * @since 1.0.0 */ - function set_numbers_style($style, $preserve_defaults = false) { + function set_numbers_style($style, $preserve_defaults = false, $group = 0) { if (!$preserve_defaults) { - $this->language_data['STYLES']['NUMBERS'][0] = $style; + $this->language_data['STYLES']['NUMBERS'][$group] = $style; } else { - $this->language_data['STYLES']['NUMBERS'][0] .= $style; + $this->language_data['STYLES']['NUMBERS'][$group] .= $style; } } @@ -1370,6 +1374,7 @@ class GeSHi { 'delphi' => array('dpk', 'dpr', 'pp', 'pas'), 'diff' => array('diff', 'patch'), 'dos' => array('bat', 'cmd'), + 'gdb' => array('kcrash', 'crash', 'bt'), 'gettext' => array('po', 'pot'), 'gml' => array('gml'), 'gnuplot' => array('plt'), @@ -1966,31 +1971,33 @@ class GeSHi { //All this formats are matched case-insensitively! static $numbers_format = array( GESHI_NUMBER_INT_BASIC => - '(?<![0-9a-z_\.%])(?<![\d\.]e[+\-])([1-9]\d*?|0)(?![0-9a-z]|\.(?!(?m:$)))', + '(?:(?<![0-9a-z_\.%])|(?<=\.\.))(?<![\d\.]e[+\-])([1-9]\d*?|0)(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', GESHI_NUMBER_INT_CSTYLE => - '(?<![0-9a-z_\.%])(?<![\d\.]e[+\-])([1-9]\d*?|0)l(?![0-9a-z\.])', + '(?<![0-9a-z_\.%])(?<![\d\.]e[+\-])([1-9]\d*?|0)l(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', GESHI_NUMBER_BIN_SUFFIX => - '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])[01]+?b(?![0-9a-z\.])', + '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])[01]+?[bB](?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', GESHI_NUMBER_BIN_PREFIX_PERCENT => - '(?<![0-9a-z_\.%])(?<![\d\.]e[+\-])%[01]+?(?![0-9a-z\.])', + '(?<![0-9a-z_\.%])(?<![\d\.]e[+\-])%[01]+?(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', GESHI_NUMBER_BIN_PREFIX_0B => - '(?<![0-9a-z_\.%])(?<![\d\.]e[+\-])0b[01]+?(?![0-9a-z\.])', + '(?<![0-9a-z_\.%])(?<![\d\.]e[+\-])0b[01]+?(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', GESHI_NUMBER_OCT_PREFIX => - '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])0[0-7]+?(?![0-9a-z\.])', + '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])0[0-7]+?(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', + GESHI_NUMBER_OCT_PREFIX_0O => + '(?<![0-9a-z_\.%])(?<![\d\.]e[+\-])0o[0-7]+?(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', GESHI_NUMBER_OCT_SUFFIX => - '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])[0-7]+?o(?![0-9a-z\.])', + '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])[0-7]+?o(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', GESHI_NUMBER_HEX_PREFIX => - '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])0x[0-9a-f]+?(?![0-9a-z\.])', + '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])0x[0-9a-fA-F]+?(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', GESHI_NUMBER_HEX_SUFFIX => - '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])\d[0-9a-f]*?h(?![0-9a-z\.])', + '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])\d[0-9a-fA-F]*?[hH](?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', GESHI_NUMBER_FLT_NONSCI => - '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])\d+?\.\d+?(?![0-9a-z\.])', + '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])\d+?\.\d+?(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', GESHI_NUMBER_FLT_NONSCI_F => - '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])(?:\d+?(?:\.\d*?)?|\.\d+?)f(?![0-9a-z\.])', + '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])(?:\d+?(?:\.\d*?)?|\.\d+?)f(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', GESHI_NUMBER_FLT_SCI_SHORT => - '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])\.\d+?(?:e[+\-]?\d+?)?(?![0-9a-z\.])', + '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])\.\d+?(?:e[+\-]?\d+?)?(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)', GESHI_NUMBER_FLT_SCI_ZERO => - '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])(?:\d+?(?:\.\d*?)?|\.\d+?)(?:e[+\-]?\d+?)?(?![0-9a-z\.])' + '(?<![0-9a-z_\.])(?<![\d\.]e[+\-])(?:\d+?(?:\.\d*?)?|\.\d+?)(?:e[+\-]?\d+?)?(?![0-9a-z]|\.(?:[eE][+\-]?)?\d)' ); //At this step we have an associative array with flag groups for a @@ -2012,7 +2019,7 @@ class GeSHi { } $this->language_data['NUMBERS_RXCACHE'][$key] = - "/(?<!<\|\/)(?<!<\|!REG3XP)(?<!<\|\/NUM!)(?<!\d\/>)($regexp)(?!\|>)(?![^\"\|\>\<]+<)/i"; + "/(?<!<\|\/)(?<!<\|!REG3XP)(?<!<\|\/NUM!)(?<!\d\/>)($regexp)(?!(?:<DOT>|(?>[^\<]))+>)(?![^<]*>)(?!\|>)(?!\/>)/i"; // } } @@ -2033,6 +2040,10 @@ class GeSHi { // Start the timer $start_time = microtime(); + // Replace all newlines to a common form. + $code = str_replace("\r\n", "\n", $this->source); + $code = str_replace("\r", "\n", $code); + // Firstly, if there is an error, we won't highlight if ($this->error) { //Escape the source for output @@ -2053,13 +2064,6 @@ class GeSHi { $this->build_parse_cache(); } - // Replace all newlines to a common form. - $code = str_replace("\r\n", "\n", $this->source); - $code = str_replace("\r", "\n", $code); - - // Add spaces for regular expression matching and line numbers -// $code = "\n" . $code . "\n"; - // Initialise various stuff $length = strlen($code); $COMMENT_MATCHED = false; @@ -2647,7 +2651,8 @@ class GeSHi { $start = $i + $hq_strlen; while ($close_pos = strpos($part, $this->language_data['HARDQUOTE'][1], $start)) { $start = $close_pos + 1; - if ($this->lexic_permissions['ESCAPE_CHAR'] && $part[$close_pos - 1] == $this->language_data['HARDCHAR']) { + if ($this->lexic_permissions['ESCAPE_CHAR'] && $part[$close_pos - 1] == $this->language_data['HARDCHAR'] && + (($i + $hq_strlen) != ($close_pos))) { //Support empty string for HQ escapes if Starter = Escape // make sure this quote is not escaped foreach ($this->language_data['HARDESCAPE'] as $hardescape) { if (substr($part, $close_pos - 1, strlen($hardescape)) == $hardescape) { @@ -3087,7 +3092,7 @@ class GeSHi { $result = preg_replace('/^ /m', ' ', $result); $result = str_replace(' ', ' ', $result); - if ($this->line_numbers == GESHI_NO_LINE_NUMBERS) { + if ($this->line_numbers == GESHI_NO_LINE_NUMBERS && $this->header_type != GESHI_HEADER_PRE_TABLE) { if ($this->line_ending === null) { $result = nl2br($result); } else { @@ -3430,7 +3435,7 @@ class GeSHi { //FIX for symbol highlighting ... if ($this->lexic_permissions['SYMBOLS'] && !empty($this->language_data['SYMBOLS'])) { //Get all matches and throw away those witin a block that is already highlighted... (i.e. matched by a regexp) - $n_symbols = preg_match_all("/<\|(?:<DOT>|[^>])+>(?:(?!\|>).*?)\|>|<\/a>|(?:" . $this->language_data['SYMBOL_SEARCH'] . ")+/", $stuff_to_parse, $pot_symbols, PREG_OFFSET_CAPTURE | PREG_SET_ORDER); + $n_symbols = preg_match_all("/<\|(?:<DOT>|[^>])+>(?:(?!\|>).*?)\|>|<\/a>|(?:" . $this->language_data['SYMBOL_SEARCH'] . ")+(?![^<]+?>)/", $stuff_to_parse, $pot_symbols, PREG_OFFSET_CAPTURE | PREG_SET_ORDER); $global_offset = 0; for ($s_id = 0; $s_id < $n_symbols; ++$s_id) { $symbol_match = $pot_symbols[$s_id][0][0]; @@ -3969,16 +3974,16 @@ class GeSHi { * @todo Document behaviour change - class is outputted regardless of whether * we're using classes or not. Same with style */ - $attributes = ' class="' . $this->language; + $attributes = ' class="' . $this->_genCSSName($this->language); if ($this->overall_class != '') { - $attributes .= " ".$this->overall_class; + $attributes .= " ".$this->_genCSSName($this->overall_class); } $attributes .= '"'; if ($this->overall_id != '') { $attributes .= " id=\"{$this->overall_id}\""; } - if ($this->overall_style != '') { + if ($this->overall_style != '' && !$this->use_classes) { $attributes .= ' style="' . $this->overall_style . '"'; } @@ -4215,6 +4220,10 @@ class GeSHi { return strtr($string, $aTransSpecchar); } + function _genCSSName($name){ + return (is_numeric($name[0]) ? '_' : '') . $name; + } + /** * Returns a stylesheet for the highlighted code. If $economy mode * is true, we only return the stylesheet declarations that matter for @@ -4242,11 +4251,11 @@ class GeSHi { // that should be used, the same for a class. Otherwise, a selector // of '' means that these styles will be applied anywhere if ($this->overall_id) { - $selector = '#' . $this->overall_id; + $selector = '#' . $this->_genCSSName($this->overall_id); } else { - $selector = '.' . $this->language; + $selector = '.' . $this->_genCSSName($this->language); if ($this->overall_class) { - $selector .= '.' . $this->overall_class; + $selector .= '.' . $this->_genCSSName($this->overall_class); } } $selector .= ' '; @@ -4555,7 +4564,10 @@ class GeSHi { // make sure the last tokens get converted as well $new_entry = $this->_optimize_regexp_list_tokens_to_string($tokens); if (GESHI_MAX_PCRE_SUBPATTERNS && $num_subpatterns + substr_count($new_entry, '(?:') > GESHI_MAX_PCRE_SUBPATTERNS) { - $regexp_list[++$list_key] = $new_entry; + if ( !empty($regexp_list[$list_key]) ) { + ++$list_key; + } + $regexp_list[$list_key] = $new_entry; } else { if (!empty($regexp_list[$list_key])) { $new_entry = '|' . $new_entry; diff --git a/inc/geshi/4cs.php b/inc/geshi/4cs.php new file mode 100644 index 000000000..48b671f4a --- /dev/null +++ b/inc/geshi/4cs.php @@ -0,0 +1,139 @@ +<?php +/************************************************************************************* + * 4cs.php + * ------ + * Author: Jason Curl (jason.curl@continental-corporation.com) + * Copyright: (c) 2009 Jason Curl + * Release Version: 1.0.8.8 + * Date Started: 2009/09/05 + * + * 4CS language file for GeSHi. + * + * CHANGES + * ------- + * 2009/09/05 + * - First Release + * + * TODO (updated 2009/09/01) + * ------------------------- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'GADV 4CS', + 'COMMENT_SINGLE' => array(1 => "//"), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + 'All', 'AllMatches', 'And', 'And_Filters', 'As', 'Asc', 'BasedOn', + 'BestMatch', 'Block', 'Buffer', 'ByRef', 'ByVal', 'Call', 'Channel', + 'Chr', 'Clear', 'Close', 'Confirm', 'Const', 'Continue', 'Cos', + 'Critical', 'Declare', 'Default', 'DefaultChannel', 'DefaultDelayTime', + 'DefaultReceiveMode', 'DefaultResponseTime', '#Define', 'DelayTime', + 'Delete', 'Div', 'Else', '#Else', 'ElseIf', '#ElseIf', 'End', 'EndCritical', + 'EndInlineC', 'EndFunction', 'EndIf', '#EndIf', 'EndInputList', + 'EndLocalChannel', 'EndScenario', 'EndSub', 'EndWhile', 'Error', + 'ErrorLevelOff', 'ErrorLevelOn', 'ErrorLevelSet', 'ErrorLevelSetRaw', + 'Event', 'EventMode', 'EventOff', 'EventOn', 'EventSet', 'EventSetRaw', + 'Execute', 'Exit', 'Exp', 'FileClose', 'FilterClear', 'FileEOF', 'FileOpen', + 'FileRead', 'FileSize', 'FileWrite', 'FilterAdd', 'FilterMode', + 'FilterOff', 'FilterOn', 'For', 'Format', 'Function', 'GoOnline', 'GoTo', + 'Handle', 'Hide', 'If', '#If', '#IfDef', '#IfNDef', 'Ignore', '#Include', + 'InlineC', 'Input', 'InputItem', 'InputList', 'Kill', 'LBound', 'LocalChannel', + 'Local', 'Log', 'Log10', 'LogOff', 'LogOn', 'Loop', 'Message', 'Mod', + 'MonitorChannel', 'MostFormat', 'MostMessage', 'Named', 'Never', 'Next', + 'NoOrder', 'Not', 'Nothing', 'NoWait', 'Numeric', 'OnError', 'OnEvent', + 'Or', 'Or_Filters', 'Order', 'Pass', 'Pow', 'Prototype', 'Quit', 'Raise', + 'Random', 'Receive', 'ReceiveMode', 'ReceiveRaw', 'Redim', 'Remote', 'Repeat', + 'Repeated', 'ResponseTime', 'Resume', 'ResumeCritical', 'RT_Common', + 'RT_Dll_Call', 'RT_FILEIO', 'RT_General', 'RT_HardwareAccess', + 'RT_MessageVariableAccess', 'RT_Scenario', 'RT_VariableAccess', 'Runtime', + 'Scenario', 'ScenarioEnd', 'ScenarioStart', 'ScenarioStatus', 'ScenarioTerminate', + 'Send', 'SendRaw', 'Set', 'SetError', 'Sin', 'Single', 'Show', 'Start', + 'StartCritical', 'Starts', 'Static', 'Step', 'Stop', 'String', 'Sub', + 'System_Error', 'TerminateAllChilds', 'Terminates', 'Then', 'Throw', 'TimeOut', + 'To', 'TooLate', 'Trunc', 'UBound', 'Unexpected', 'Until', 'User_Error', + 'View', 'Wait', 'Warning', 'While', 'XOr' + ), + 2 => array( + 'alias', 'winapi', 'long', 'char', 'double', 'float', 'int', 'short', 'lib' + ) + ), + 'SYMBOLS' => array( + '=', ':=', '<', '>', '<>' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #0000C0; font-weight: bold;', + 2 => 'color: #808080;' + ), + 'COMMENTS' => array( + 1 => 'color: #008000;' + ), + 'BRACKETS' => array( + 0 => 'color: #000080;' + ), + 'STRINGS' => array( + 0 => 'color: #800080;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;' + ), + 'METHODS' => array( + 1 => 'color: #66cc66;' + ), + 'SYMBOLS' => array( + 0 => 'color: #000080;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099;' + ), + 'SCRIPT' => array( + ), + 'REGEXPS' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/abap.php b/inc/geshi/abap.php index 229de9891..942d2397e 100644 --- a/inc/geshi/abap.php +++ b/inc/geshi/abap.php @@ -7,7 +7,7 @@ * - Sandra Rossi (sandra.rossi@gmail.com) * - Jacob Laursen (jlu@kmd.dk) * Copyright: (c) 2007 Andres Picazo - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/06/04 * * ABAP language file for GeSHi. diff --git a/inc/geshi/actionscript.php b/inc/geshi/actionscript.php index 016dc8e90..41d66edd2 100644 --- a/inc/geshi/actionscript.php +++ b/inc/geshi/actionscript.php @@ -4,7 +4,7 @@ * ---------------- * Author: Steffen Krause (Steffen.krause@muse.de) * Copyright: (c) 2004 Steffen Krause, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/06/20 * * Actionscript language file for GeSHi. diff --git a/inc/geshi/actionscript3.php b/inc/geshi/actionscript3.php index a54e9d4df..4aab929dc 100644 --- a/inc/geshi/actionscript3.php +++ b/inc/geshi/actionscript3.php @@ -4,7 +4,7 @@ * ---------------- * Author: Jordi Boggiano (j.boggiano@seld.be) * Copyright: (c) 2007 Jordi Boggiano (http://www.seld.be/), Benny Baumann (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2007/11/26 * * ActionScript3 language file for GeSHi. diff --git a/inc/geshi/ada.php b/inc/geshi/ada.php index 530ed5e4c..c6b0597bb 100644 --- a/inc/geshi/ada.php +++ b/inc/geshi/ada.php @@ -4,7 +4,7 @@ * ------- * Author: Tux (tux@inmail.cz) * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/07/29 * * Ada language file for GeSHi. @@ -57,14 +57,16 @@ $language_data = array ( 'goto', 'return' ), 2 => array( - 'abs', 'and', 'mod', 'not', 'or', 'rem', 'xor' + 'abs', 'and', 'at', 'mod', 'not', 'or', 'rem', 'xor' ), 3 => array( - 'abort', 'abstract', 'accept', 'access', 'aliased', 'all', 'array', 'at', 'body', - 'constant', 'delay', 'delta', 'digits', 'entry', 'exit', - 'function', 'generic', 'in', 'limited', 'new', 'null', 'of', 'others', 'out', 'package', 'pragma', - 'private', 'procedure', 'protected', 'raise', 'range', 'record', 'renames', 'requeue', 'reverse', - 'separate', 'subtype', 'tagged', 'task', 'terminate', 'type', 'use', 'when', 'with' + 'abort', 'abstract', 'accept', 'access', 'aliased', 'all', 'array', + 'body', 'constant', 'delay', 'delta', 'digits', 'entry', 'exit', + 'function', 'generic', 'in', 'interface', 'limited', 'new', 'null', + 'of', 'others', 'out', 'overriding', 'package', 'pragma', 'private', + 'procedure', 'protected', 'raise', 'range', 'record', 'renames', + 'requeue', 'reverse', 'separate', 'subtype', 'synchronized', + 'tagged', 'task', 'terminate', 'type', 'use', 'when', 'with' ) ), 'SYMBOLS' => array( @@ -130,4 +132,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/apache.php b/inc/geshi/apache.php index f319e3e3c..34704eb22 100644 --- a/inc/geshi/apache.php +++ b/inc/geshi/apache.php @@ -4,7 +4,7 @@ * ---------- * Author: Tux (tux@inmail.cz) * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/29/07 * * Apache language file for GeSHi. diff --git a/inc/geshi/applescript.php b/inc/geshi/applescript.php index 85e3d6d0d..9e214f2e1 100644 --- a/inc/geshi/applescript.php +++ b/inc/geshi/applescript.php @@ -4,7 +4,7 @@ * -------- * Author: Stephan Klimek (http://www.initware.org) * Copyright: Stephan Klimek (http://www.initware.org) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2005/07/20 * * AppleScript language file for GeSHi. diff --git a/inc/geshi/apt_sources.php b/inc/geshi/apt_sources.php index 891c10e5e..f4cf9ae3f 100644 --- a/inc/geshi/apt_sources.php +++ b/inc/geshi/apt_sources.php @@ -4,7 +4,7 @@ * ---------- * Author: Milian Wolff (mail@milianw.de) * Copyright: (c) 2008 Milian Wolff (http://milianw.de) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/06/17 * * Apt sources.list language file for GeSHi. diff --git a/inc/geshi/asm.php b/inc/geshi/asm.php index 2efeac9dc..d54e24023 100644 --- a/inc/geshi/asm.php +++ b/inc/geshi/asm.php @@ -4,7 +4,7 @@ * ------- * Author: Tux (tux@inmail.cz) * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/07/27 * * x86 Assembler language file for GeSHi. diff --git a/inc/geshi/asp.php b/inc/geshi/asp.php index 7bfec11e1..4a9d6c8e2 100644 --- a/inc/geshi/asp.php +++ b/inc/geshi/asp.php @@ -4,7 +4,7 @@ * -------- * Author: Amit Gupta (http://blog.igeek.info/) * Copyright: (c) 2004 Amit Gupta (http://blog.igeek.info/), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/08/13 * * ASP language file for GeSHi. @@ -151,7 +151,7 @@ $language_data = array ( 2 => array( '<script language="javascript" runat="server">' => '</script>' ), - 3 => "/(?<start><%=?)(?:\"[^\"]*?\"|\/\*(?!\*\/).*?\*\/|.)*?(?<end>%>|\Z)/sm" + 3 => "/(?P<start><%=?)(?:\"[^\"]*?\"|\/\*(?!\*\/).*?\*\/|.)*?(?P<end>%>|\Z)/sm" ), 'HIGHLIGHT_STRICT_BLOCK' => array( 0 => true, diff --git a/inc/geshi/autoconf.php b/inc/geshi/autoconf.php new file mode 100644 index 000000000..0883f9f54 --- /dev/null +++ b/inc/geshi/autoconf.php @@ -0,0 +1,512 @@ +<?php +/************************************************************************************* + * autoconf.php + * ----- + * Author: Mihai Vasilian (grayasm@gmail.com) + * Copyright: (c) 2010 Mihai Vasilian + * Release Version: 1.0.8.8 + * Date Started: 2010/01/25 + * + * autoconf language file for GeSHi. + * + *********************************************************************************** + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'Autoconf', + 'COMMENT_SINGLE' => array(2 => '#'), + 'COMMENT_MULTI' => array(), + 'COMMENT_REGEXP' => array( + //Multiline-continued single-line comments + 1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m', + //Multiline-continued preprocessor define + 2 => '/#(?:\\\\\\\\|\\\\\\n|.)*$/m', + //Single Line comment started by dnl + 3 => '/(?<!\$)\bdnl\b.*$/m', + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'ESCAPE_REGEXP' => array(), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B | + GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI | + GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO, + 'KEYWORDS' => array( + 1 => array( + 'AC_ACT_IFELSE', + 'AC_AIX', + 'AC_ALLOCA', + 'AC_ARG_ARRAY', + 'AC_ARG_ENABLE', + 'AC_ARG_PROGRAM', + 'AC_ARG_VAR', + 'AC_ARG_WITH', + 'AC_AUTOCONF_VERSION', + 'AC_BEFORE', + 'AC_C_BACKSLASH_A', + 'AC_C_BIGENDIAN', + 'AC_C_CHAR_UNSIGNED', + 'AC_C_CONST', + 'AC_C_CROSS', + 'AC_C_FLEXIBLE_ARRAY_MEMBER', + 'AC_C_INLINE', + 'AC_C_LONG_DOUBLE', + 'AC_C_PROTOTYPES', + 'AC_C_RESTRICT', + 'AC_C_STRINGIZE', + 'AC_C_TYPEOF', + 'AC_C_VARARRAYS', + 'AC_C_VOLATILE', + 'AC_CACHE_CHECK', + 'AC_CACHE_LOAD', + 'AC_CACHE_SAVE', + 'AC_CACHE_VAL', + 'AC_CANONICAL_BUILD', + 'AC_CANONICAL_HOST', + 'AC_CANONICAL_SYSTEM', + 'AC_CANONICAL_TARGET', + 'AC_CHAR_UNSIGNED', + 'AC_CHECK_ALIGNOF', + 'AC_CHECK_DECL', + 'AC_CHECK_DECLS', + 'AC_CHECK_DECLS_ONCE', + 'AC_CHECK_FILE', + 'AC_CHECK_FILES', + 'AC_CHECK_FUNC', + 'AC_CHECK_FUNCS', + 'AC_CHECK_FUNCS_ONCE', + 'AC_CHECK_HEADER', + 'AC_CHECK_HEADERS', + 'AC_CHECK_HEADERS_ONCE', + 'AC_CHECK_LIB', + 'AC_CHECK_MEMBER', + 'AC_CHECK_MEMBERS', + 'AC_CHECK_PROG', + 'AC_CHECK_PROGS', + 'AC_CHECK_SIZEOF', + 'AC_CHECK_TARGET_TOOL', + 'AC_CHECK_TARGET_TOOLS', + 'AC_CHECK_TOOL', + 'AC_CHECK_TOOLS', + 'AC_CHECK_TYPE', + 'AC_CHECK_TYPES', + 'AC_CHECKING', + 'AC_COMPILE_CHECK', + 'AC_COMPILE_IFELSE', + 'AC_COMPUTE_INT', + 'AC_CONFIG_AUX_DIR', + 'AC_CONFIG_COMMANDS', + 'AC_CONFIG_COMMANDS_POST', + 'AC_CONFIG_COMMANDS_PRE', + 'AC_CONFIG_FILES', + 'AC_CONFIG_HEADERS', + 'AC_CONFIG_ITEMS', + 'AC_CONFIG_LIBOBJ_DIR', + 'AC_CONFIG_LINKS', + 'AC_CONFIG_MACRO_DIR', + 'AC_CONFIG_SRCDIR', + 'AC_CONFIG_SUBDIRS', + 'AC_CONFIG_TESTDIR', + 'AC_CONST', + 'AC_COPYRIGHT', + 'AC_CROSS_CHECK', + 'AC_CYGWIN', + 'AC_DATAROOTDIR_CHECKED', + 'AC_DECL_SYS_SIGLIST', + 'AC_DECL_YYTEXT', + 'AC_DEFINE', + 'AC_DEFINE_UNQUOTED', + 'AC_DEFUN', + 'AC_DEFUN_ONCE', + 'AC_DIAGNOSE', + 'AC_DIR_HEADER', + 'AC_DISABLE_OPTION_CHECKING', + 'AC_DYNIX_SEQ', + 'AC_EGREP_CPP', + 'AC_EGREP_HEADER', + 'AC_EMXOS2', + 'AC_ENABLE', + 'AC_ERLANG_CHECK_LIB', + 'AC_ERLANG_NEED_ERL', + 'AC_ERLANG_NEED_ERLC', + 'AC_ERLANG_PATH_ERL', + 'AC_ERLANG_PATH_ERLC', + 'AC_ERLANG_SUBST_ERTS_VER', + 'AC_ERLANG_SUBST_INSTALL_LIB_DIR', + 'AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR', + 'AC_ERLANG_SUBST_LIB_DIR', + 'AC_ERLANG_SUBST_ROOT_DIR', + 'AC_ERROR', + 'AC_EXEEXT', + 'AC_F77_DUMMY_MAIN', + 'AC_F77_FUNC', + 'AC_F77_LIBRARY_LDFLAGS', + 'AC_F77_MAIN', + 'AC_F77_WRAPPERS', + 'AC_FATAL', + 'AC_FC_FREEFORM', + 'AC_FC_FUNC', + 'AC_FC_LIBRARY_LDFLAGS', + 'AC_FC_MAIN', + 'AC_FC_SRCEXT', + 'AC_FC_WRAPPERS', + 'AC_FIND_X', + 'AC_FIND_XTRA', + 'AC_FOREACH', + 'AC_FUNC_ALLOCA', + 'AC_FUNC_CHECK', + 'AC_FUNC_CHOWN', + 'AC_FUNC_CLOSEDIR_VOID', + 'AC_FUNC_ERROR_AT_LINE', + 'AC_FUNC_FNMATCH', + 'AC_FUNC_FNMATCH_GNU', + 'AC_FUNC_FORK', + 'AC_FUNC_FSEEKO', + 'AC_FUNC_GETGROUPS', + 'AC_FUNC_GETLOADAVG', + 'AC_FUNC_GETMNTENT', + 'AC_FUNC_GETPGRP', + 'AC_FUNC_LSTAT', + 'AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK', + 'AC_FUNC_MALLOC', + 'AC_FUNC_MBRTOWC', + 'AC_FUNC_MEMCMP', + 'AC_FUNC_MKTIME', + 'AC_FUNC_MMAP', + 'AC_FUNC_OBSTACK', + 'AC_FUNC_REALLOC', + 'AC_FUNC_SELECT_ARGTYPES', + 'AC_FUNC_SETPGRP', + 'AC_FUNC_SETVBUF_REVERSED', + 'AC_FUNC_STAT', + 'AC_FUNC_STRCOLL', + 'AC_FUNC_STRERROR_R', + 'AC_FUNC_STRFTIME', + 'AC_FUNC_STRNLEN', + 'AC_FUNC_STRTOD', + 'AC_FUNC_STRTOLD', + 'AC_FUNC_UTIME_NULL', + 'AC_FUNC_VPRINTF', + 'AC_FUNC_WAIT3', + 'AC_GCC_TRADITIONAL', + 'AC_GETGROUPS_T', + 'AC_GETLOADAVG', + 'AC_GNU_SOURCE', + 'AC_HAVE_FUNCS', + 'AC_HAVE_HEADERS', + 'AC_HAVE_LIBRARY', + 'AC_HAVE_POUNDBANG', + 'AC_HEADER_ASSERT', + 'AC_HEADER_CHECK', + 'AC_HEADER_DIRENT', + 'AC_HEADER_EGREP', + 'AC_HEADER_MAJOR', + 'AC_HEADER_RESOLV', + 'AC_HEADER_STAT', + 'AC_HEADER_STDBOOL', + 'AC_HEADER_STDC', + 'AC_HEADER_SYS_WAIT', + 'AC_HEADER_TIME', + 'AC_HEADER_TIOCGWINSZ', + 'AC_HELP_STRING', + 'AC_INCLUDES_DEFAULT', + 'AC_INIT', + 'AC_INLINE', + 'AC_INT_16_BITS', + 'AC_IRIX_SUN', + 'AC_ISC_POSIX', + 'AC_LANG_ASSERT', + 'AC_LANG_C', + 'AC_LANG_CALL', + 'AC_LANG_CONFTEST', + 'AC_LANG_CPLUSPLUS', + 'AC_LANG_FORTRAN77', + 'AC_LANG_FUNC_LINK_TRY', + 'AC_LANG_POP', + 'AC_LANG_PROGRAM', + 'AC_LANG_PUSH', + 'AC_LANG_RESTORE', + 'AC_LANG_SAVE', + 'AC_LANG_SOURCE', + 'AC_LANG_WERROR', + 'AC_LIBOBJ', + 'AC_LIBSOURCE', + 'AC_LIBSOURCES', + 'AC_LINK_FILES', + 'AC_LINK_IFELSE', + 'AC_LN_S', + 'AC_LONG_64_BITS', + 'AC_LONG_DOUBLE', + 'AC_LONG_FILE_NAMES', + 'AC_MAJOR_HEADER', + 'AC_MEMORY_H', + 'AC_MINGW32', + 'AC_MINIX', + 'AC_MINUS_C_MINUS_O', + 'AC_MMAP', + 'AC_MODE_T', + 'AC_MSG_CHECKING', + 'AC_MSG_ERROR', + 'AC_MSG_FAILURE', + 'AC_MSG_NOTICE', + 'AC_MSG_RESULT', + 'AC_MSG_WARN', + 'AC_OBJEXT', + 'AC_OBSOLETE', + 'AC_OFF_T', + 'AC_OPENMP', + 'AC_OUTPUT', + 'AC_OUTPUT_COMMANDS', + 'AC_PACKAGE_BUGREPORT', + 'AC_PACKAGE_NAME', + 'AC_PACKAGE_STRING', + 'AC_PACKAGE_TARNAME', + 'AC_PACKAGE_URL', + 'AC_PACKAGE_VERSION', + 'AC_PATH_PROG', + 'AC_PATH_PROGS', + 'AC_PATH_PROGS_FEATURE_CHECK', + 'AC_PATH_TARGET_TOOL', + 'AC_PATH_TOOL', + 'AC_PATH_X', + 'AC_PATH_XTRA', + 'AC_PID_T', + 'AC_PREFIX', + 'AC_PREFIX_DEFAULT', + 'AC_PREFIX_PROGRAM', + 'AC_PREPROC_IFELSE', + 'AC_PREREQ', + 'AC_PRESERVE_HELP_ORDER', + 'AC_PROG_AWK', + 'AC_PROG_CC', + 'AC_PROG_CC_C89', + 'AC_PROG_CC_C99', + 'AC_PROG_CC_C_O', + 'AC_PROG_CC_STDC', + 'AC_PROG_CPP', + 'AC_PROG_CPP_WERROR', + 'AC_PROG_CXX', + 'AC_PROG_CXX_C_O', + 'AC_PROG_CXXCPP', + 'AC_PROG_EGREP', + 'AC_PROG_F77', + 'AC_PROG_F77_C_O', + 'AC_PROG_FC', + 'AC_PROG_FC_C_O', + 'AC_PROG_FGREP', + 'AC_PROG_GCC_TRADITIONAL', + 'AC_PROG_GREP', + 'AC_PROG_INSTALL', + 'AC_PROG_LEX', + 'AC_PROG_LN_S', + 'AC_PROG_MAKE_SET', + 'AC_PROG_MKDIR_P', + 'AC_PROG_OBJC', + 'AC_PROG_OBJCPP', + 'AC_PROG_OBJCXX', + 'AC_PROG_OBJCXXCPP', + 'AC_PROG_RANLIB', + 'AC_PROG_SED', + 'AC_PROG_YACC', + 'AC_PROGRAM_CHECK', + 'AC_PROGRAM_EGREP', + 'AC_PROGRAM_PATH', + 'AC_PROGRAMS_CHECK', + 'AC_PROGRAMS_PATH', + 'AC_REMOTE_TAPE', + 'AC_REPLACE_FNMATCH', + 'AC_REPLACE_FUNCS', + 'AC_REQUIRE', + 'AC_REQUIRE_AUX_FILE', + 'AC_REQUIRE_CPP', + 'AC_RESTARTABLE_SYSCALLS', + 'AC_RETSIGTYPE', + 'AC_REVISION', + 'AC_RSH', + 'AC_RUN_IFELSE', + 'AC_SCO_INTL', + 'AC_SEARCH_LIBS', + 'AC_SET_MAKE', + 'AC_SETVBUF_REVERSED', + 'AC_SIZE_T', + 'AC_SIZEOF_TYPE', + 'AC_ST_BLKSIZE', + 'AC_ST_BLOCKS', + 'AC_ST_RDEV', + 'AC_STAT_MACROS_BROKEN', + 'AC_STDC_HEADERS', + 'AC_STRCOLL', + 'AC_STRUCT_DIRENT_D_INO', + 'AC_STRUCT_DIRENT_D_TYPE', + 'AC_STRUCT_ST_BLKSIZE', + 'AC_STRUCT_ST_BLOCKS', + 'AC_STRUCT_ST_RDEV', + 'AC_STRUCT_TIMEZONE', + 'AC_STRUCT_TM', + 'AC_SUBST', + 'AC_SUBST_FILE', + 'AC_SYS_INTERPRETER', + 'AC_SYS_LARGEFILE', + 'AC_SYS_LONG_FILE_NAMES', + 'AC_SYS_POSIX_TERMIOS', + 'AC_SYS_RESTARTABLE_SYSCALLS', + 'AC_SYS_SIGLIST_DECLARED', + 'AC_TEST_CPP', + 'AC_TEST_PROGRAM', + 'AC_TIME_WITH_SYS_TIME', + 'AC_TIMEZONE', + 'AC_TRY_ACT', + 'AC_TRY_COMPILE', + 'AC_TRY_CPP', + 'AC_TRY_LINK', + 'AC_TRY_LINK_FUNC', + 'AC_TRY_RUN', + 'AC_TYPE_GETGROUPS', + 'AC_TYPE_INT16_T', + 'AC_TYPE_INT32_T', + 'AC_TYPE_INT64_T', + 'AC_TYPE_INT8_T', + 'AC_TYPE_INTMAX_T', + 'AC_TYPE_INTPTR_T', + 'AC_TYPE_LONG_DOUBLE', + 'AC_TYPE_LONG_DOUBLE_WIDER', + 'AC_TYPE_LONG_LONG_INT', + 'AC_TYPE_MBSTATE_T', + 'AC_TYPE_MODE_T', + 'AC_TYPE_OFF_T', + 'AC_TYPE_PID_T', + 'AC_TYPE_SIGNAL', + 'AC_TYPE_SIZE_T', + 'AC_TYPE_SSIZE_T', + 'AC_TYPE_UID_T', + 'AC_TYPE_UINT16_T', + 'AC_TYPE_UINT32_T', + 'AC_TYPE_UINT64_T', + 'AC_TYPE_UINT8_T', + 'AC_TYPE_UINTMAX_T', + 'AC_TYPE_UINTPTR_T', + 'AC_TYPE_UNSIGNED_LONG_LONG_INT', + 'AC_UID_T', + 'AC_UNISTD_H', + 'AC_USE_SYSTEM_EXTENSIONS', + 'AC_USG', + 'AC_UTIME_NULL', + 'AC_VALIDATE_CACHED_SYSTEM_TUPLE', + 'AC_VERBOSE', + 'AC_VFORK', + 'AC_VPRINTF', + 'AC_WAIT3', + 'AC_WARN', + 'AC_WARNING', + 'AC_WITH', + 'AC_WORDS_BIGENDIAN', + 'AC_XENIX_DIR', + 'AC_YYTEXT_POINTER', + 'AH_BOTTOM', + 'AH_HEADER', + 'AH_TEMPLATE', + 'AH_TOP', + 'AH_VERBATIM', + 'AU_ALIAS', + 'AU_DEFUN'), + ), + 'SYMBOLS' => array('(', ')', '[', ']', '!', '@', '%', '&', '*', '|', '/', '<', '>', ';;', '`'), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #00ffff;', + ), + 'COMMENTS' => array( + 1 => 'color: #666666;', + 2 => 'color: #339900;', + 3 => 'color: #666666;', + 'MULTI' => 'color: #ff0000; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099;', + 1 => 'color: #000099;', + 2 => 'color: #660099;', + 3 => 'color: #660099;', + 4 => 'color: #660099;', + 5 => 'color: #006699;', + 'HARD' => '', + ), + 'BRACKETS' => array( + 0 => 'color: #008000;' + ), + 'STRINGS' => array( + 0 => 'color: #996600;' + ), + 'NUMBERS' => array( + 0 => 'color: #0000dd;', + GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;', + GESHI_NUMBER_OCT_PREFIX => 'color: #208080;', + GESHI_NUMBER_HEX_PREFIX => 'color: #208080;', + GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;', + GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;', + GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;', + GESHI_NUMBER_FLT_NONSCI => 'color:#800080;' + ), + 'METHODS' => array( + 1 => 'color: #202020;', + 2 => 'color: #202020;' + ), + 'SYMBOLS' => array( + 0 => 'color: #008000;', + 1 => 'color: #000080;', + 2 => 'color: #000040;', + 3 => 'color: #000040;', + 4 => 'color: #008080;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4, + 'PARSER_CONTROL' => array( + 'COMMENTS' => array( + 'DISALLOWED_BEFORE' => '$' + ), + 'KEYWORDS' => array( + 'DISALLOWED_BEFORE' => "(?<![\.\-a-zA-Z0-9_\$\#])", + 'DISALLOWED_AFTER' => "(?![\.\-a-zA-Z0-9_%\\/])" + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/autohotkey.php b/inc/geshi/autohotkey.php new file mode 100644 index 000000000..6a3528334 --- /dev/null +++ b/inc/geshi/autohotkey.php @@ -0,0 +1,373 @@ +<?php +/************************************************************************************* + * autohotkey.php + * -------- + * Author: Naveen Garg (naveen.garg@gmail.com) + * Copyright: (c) 2009 Naveen Garg and GeSHi + * Release Version: 1.0.8.8 + * Date Started: 2009/06/11 + * + * Autohotkey language file for GeSHi. + * + * CHANGES + * ------- + * Release 1.0.8.5 (2009/06/11) + * - First Release + * + * TODO + * ---- + * Reference: http://www.autohotkey.com/docs/ + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'Autohotkey', + 'COMMENT_SINGLE' => array( + 1 => ';' + ), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + 'while','if','and','or','else','return' + ), + 2 => array( + // built in variables + 'A_AhkPath','A_AhkVersion','A_AppData','A_AppDataCommon', + 'A_AutoTrim','A_BatchLines','A_CaretX','A_CaretY', + 'A_ComputerName','A_ControlDelay','A_Cursor','A_DD', + 'A_DDD','A_DDDD','A_DefaultMouseSpeed','A_Desktop', + 'A_DesktopCommon','A_DetectHiddenText','A_DetectHiddenWindows','A_EndChar', + 'A_EventInfo','A_ExitReason','A_FormatFloat','A_FormatInteger', + 'A_Gui','A_GuiEvent','A_GuiControl','A_GuiControlEvent', + 'A_GuiHeight','A_GuiWidth','A_GuiX','A_GuiY', + 'A_Hour','A_IconFile','A_IconHidden','A_IconNumber', + 'A_IconTip','A_Index','A_IPAddress1','A_IPAddress2', + 'A_IPAddress3','A_IPAddress4','A_ISAdmin','A_IsCompiled', + 'A_IsCritical','A_IsPaused','A_IsSuspended','A_KeyDelay', + 'A_Language','A_LastError','A_LineFile','A_LineNumber', + 'A_LoopField','A_LoopFileAttrib','A_LoopFileDir','A_LoopFileExt', + 'A_LoopFileFullPath','A_LoopFileLongPath','A_LoopFileName','A_LoopFileShortName', + 'A_LoopFileShortPath','A_LoopFileSize','A_LoopFileSizeKB','A_LoopFileSizeMB', + 'A_LoopFileTimeAccessed','A_LoopFileTimeCreated','A_LoopFileTimeModified','A_LoopReadLine', + 'A_LoopRegKey','A_LoopRegName','A_LoopRegSubkey','A_LoopRegTimeModified', + 'A_LoopRegType','A_MDAY','A_Min','A_MM', + 'A_MMM','A_MMMM','A_Mon','A_MouseDelay', + 'A_MSec','A_MyDocuments','A_Now','A_NowUTC', + 'A_NumBatchLines','A_OSType','A_OSVersion','A_PriorHotkey', + 'A_ProgramFiles','A_Programs','A_ProgramsCommon','A_ScreenHeight', + 'A_ScreenWidth','A_ScriptDir','A_ScriptFullPath','A_ScriptName', + 'A_Sec','A_Space','A_StartMenu','A_StartMenuCommon', + 'A_Startup','A_StartupCommon','A_StringCaseSense','A_Tab', + 'A_Temp','A_ThisFunc','A_ThisHotkey','A_ThisLabel', + 'A_ThisMenu','A_ThisMenuItem','A_ThisMenuItemPos','A_TickCount', + 'A_TimeIdle','A_TimeIdlePhysical','A_TimeSincePriorHotkey','A_TimeSinceThisHotkey', + 'A_TitleMatchMode','A_TitleMatchModeSpeed','A_UserName','A_WDay', + 'A_WinDelay','A_WinDir','A_WorkingDir','A_YDay', + 'A_YEAR','A_YWeek','A_YYYY','Clipboard', + 'ClipboardAll','ComSpec','ErrorLevel','ProgramFiles', + ), + 3 => array( + 'AutoTrim', + 'BlockInput','Break','Click', + 'ClipWait','Continue','Control', + 'ControlClick','ControlFocus','ControlGet', + 'ControlGetFocus','ControlGetPos','ControlGetText', + 'ControlMove','ControlSend','ControlSendRaw', + 'ControlSetText','CoordMode','Critical', + 'DetectHiddenText','DetectHiddenWindows','DllCall','Drive', + 'DriveGet','DriveSpaceFree', + 'Else','EnvAdd','EnvDiv', + 'EnvGet','EnvMult','EnvSet', + 'EnvSub','EnvUpdate','Exit', + 'ExitApp','FileAppend','FileCopy', + 'FileCopyDir','FileCreateDir','FileCreateShortcut', + 'FileDelete','FileGetAttrib','FileGetShortcut', + 'FileGetSize','FileGetTime','FileGetVersion', + 'FileInstall','FileMove','FileMoveDir', + 'FileRead','FileReadLine','FileRecycle', + 'FileRecycleEmpty','FileRemoveDir','FileSelectFile', + 'FileSelectFolder','FileSetAttrib','FileSetTime', + 'FormatTime','Gosub', + 'Goto','GroupActivate','GroupAdd', + 'GroupClose','GroupDeactivate','Gui', + 'GuiControl','GuiControlGet','Hotkey', + 'IfExist','IfGreater','IfGreaterOrEqual', + 'IfInString','IfLess','IfLessOrEqual', + 'IfMsgBox','IfNotEqual','IfNotExist', + 'IfNotInString','IfWinActive','IfWinExist', + 'IfWinNotActive','IfWinNotExist','ImageSearch', + 'IniDelete','IniRead','IniWrite', + 'Input','InputBox','KeyHistory', + 'KeyWait','ListHotkeys','ListLines', + 'ListVars','Loop', + 'Menu','MouseClick','MouseClickDrag', + 'MouseGetPos','MouseMove','MsgBox', + 'OnMessage','OnExit','OutputDebug', + 'PixelGetColor','PixelSearch','PostMessage', + 'Process','Progress','Random', + 'RegExMatch','RegExReplace','RegisterCallback', + 'RegDelete','RegRead','RegWrite', + 'Reload','Repeat','Return', + 'Run','RunAs','RunWait', + 'Send','SendEvent','SendInput', + 'SendMessage','SendMode','SendPlay', + 'SendRaw','SetBatchLines','SetCapslockState', + 'SetControlDelay','SetDefaultMouseSpeed','SetEnv', + 'SetFormat','SetKeyDelay','SetMouseDelay', + 'SetNumlockState','SetScrollLockState','SetStoreCapslockMode', + 'SetTimer','SetTitleMatchMode','SetWinDelay', + 'SetWorkingDir','Shutdown','Sleep', + 'Sort','SoundBeep','SoundGet', + 'SoundGetWaveVolume','SoundPlay','SoundSet', + 'SoundSetWaveVolume','SplashImage','SplashTextOff', + 'SplashTextOn','SplitPath','StatusBarGetText', + 'StatusBarWait','StringCaseSense','StringGetPos', + 'StringLeft','StringLen','StringLower', + 'StringMid','StringReplace','StringRight', + 'StringSplit','StringTrimLeft','StringTrimRight', + 'StringUpper','Suspend','SysGet', + 'Thread','ToolTip','Transform', + 'TrayTip','URLDownloadToFile','While', + 'VarSetCapacity', + 'WinActivate','WinActivateBottom','WinClose', + 'WinGet','WinGetActiveStats','WinGetActiveTitle', + 'WinGetClass','WinGetPos','WinGetText', + 'WinGetTitle','WinHide','WinKill', + 'WinMaximize','WinMenuSelectItem','WinMinimize', + 'WinMinimizeAll','WinMinimizeAllUndo','WinMove', + 'WinRestore','WinSet','WinSetTitle', + 'WinShow','WinWait','WinWaitActive', + 'WinWaitClose','WinWaitNotActive' + ), + 4 => array( + 'Abs','ACos','Asc','ASin', + 'ATan','Ceil','Chr','Cos', + 'Exp','FileExist','Floor', + 'GetKeyState','IL_Add','IL_Create','IL_Destroy', + 'InStr','IsFunc','IsLabel','Ln', + 'Log','LV_Add','LV_Delete','LV_DeleteCol', + 'LV_GetCount','LV_GetNext','LV_GetText','LV_Insert', + 'LV_InsertCol','LV_Modify','LV_ModifyCol','LV_SetImageList', + 'Mod','NumGet','NumPut', + 'Round', + 'SB_SetIcon','SB_SetParts','SB_SetText','Sin', + 'Sqrt','StrLen','SubStr','Tan', + 'TV_Add','TV_Delete','TV_GetChild','TV_GetCount', + 'TV_GetNext','TV_Get','TV_GetParent','TV_GetPrev', + 'TV_GetSelection','TV_GetText','TV_Modify', + 'WinActive','WinExist' + ), + 5 => array( + // #Directives + 'AllowSameLineComments','ClipboardTimeout','CommentFlag', + 'ErrorStdOut','EscapeChar','HotkeyInterval', + 'HotkeyModifierTimeout','Hotstring','IfWinActive', + 'IfWinExist','IfWinNotActive','IfWinNotExist', + 'Include','IncludeAgain','InstallKeybdHook', + 'InstallMouseHook','KeyHistory','LTrim', + 'MaxHotkeysPerInterval','MaxMem','MaxThreads', + 'MaxThreadsBuffer','MaxThreadsPerHotkey','NoEnv', + 'NoTrayIcon','Persistent','SingleInstance', + 'UseHook','WinActivateForce' + ), + 6 => array( + 'Shift','LShift','RShift', + 'Alt','LAlt','RAlt', + 'LControl','RControl', + 'Ctrl','LCtrl','RCtrl', + 'LWin','RWin','AppsKey', + 'AltDown','AltUp','ShiftDown', + 'ShiftUp','CtrlDown','CtrlUp', + 'LWinDown','LWinUp','RWinDown', + 'RWinUp','LButton','RButton', + 'MButton','WheelUp','WheelDown', + 'WheelLeft','WheelRight','XButton1', + 'XButton2','Joy1','Joy2', + 'Joy3','Joy4','Joy5', + 'Joy6','Joy7','Joy8', + 'Joy9','Joy10','Joy11', + 'Joy12','Joy13','Joy14', + 'Joy15','Joy16','Joy17', + 'Joy18','Joy19','Joy20', + 'Joy21','Joy22','Joy23', + 'Joy24','Joy25','Joy26', + 'Joy27','Joy28','Joy29', + 'Joy30','Joy31','Joy32', + 'JoyX','JoyY','JoyZ', + 'JoyR','JoyU','JoyV', + 'JoyPOV','JoyName','JoyButtons', + 'JoyAxes','JoyInfo','Space', + 'Tab','Enter', + 'Escape','Esc','BackSpace', + 'BS','Delete','Del', + 'Insert','Ins','PGUP', + 'PGDN','Home','End', + 'Up','Down','Left', + 'Right','PrintScreen','CtrlBreak', + 'Pause','ScrollLock','CapsLock', + 'NumLock','Numpad0','Numpad1', + 'Numpad2','Numpad3','Numpad4', + 'Numpad5','Numpad6','Numpad7', + 'Numpad8','Numpad9','NumpadMult', + 'NumpadAdd','NumpadSub','NumpadDiv', + 'NumpadDot','NumpadDel','NumpadIns', + 'NumpadClear','NumpadUp','NumpadDown', + 'NumpadLeft','NumpadRight','NumpadHome', + 'NumpadEnd','NumpadPgup','NumpadPgdn', + 'NumpadEnter','F1','F2', + 'F3','F4','F5', + 'F6','F7','F8', + 'F9','F10','F11', + 'F12','F13','F14', + 'F15','F16','F17', + 'F18','F19','F20', + 'F21','F22','F23', + 'F24','Browser_Back','Browser_Forward', + 'Browser_Refresh','Browser_Stop','Browser_Search', + 'Browser_Favorites','Browser_Home','Volume_Mute', + 'Volume_Down','Volume_Up','Media_Next', + 'Media_Prev','Media_Stop','Media_Play_Pause', + 'Launch_Mail','Launch_Media','Launch_App1', + 'Launch_App2' + ), + 7 => array( + // Gui commands + 'Add', + 'Show', 'Submit', 'Cancel', 'Destroy', + 'Font', 'Color', 'Margin', 'Flash', 'Default', + 'GuiEscape','GuiClose','GuiSize','GuiContextMenu','GuiDropFilesTabStop', + ), + 8 => array( + // Gui Controls + 'Button', + 'Checkbox','Radio','DropDownList','DDL', + 'ComboBox','ListBox','ListView', + 'Text', 'Edit', 'UpDown', 'Picture', + 'TreeView','DateTime', 'MonthCal', + 'Slider' + ) + ), + 'SYMBOLS' => array( + '(',')','[',']', + '+','-','*','/','&','^', + '=','+=','-=','*=','/=','&=', + '==','<','<=','>','>=',':=', + ',','.' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #AAAAFF; font-weight: bold;', // reserved #blue + 2 => 'color: #88FF88;', // BIV yellow + 3 => 'color: #FF00FF; font-style: italic;', // commands purple + 4 => 'color: #888844; font-weight: bold;', // functions #0080FF + 5 => 'color: #000000; font-style: italic;', // directives #black + 6 => 'color: #FF0000; font-style: italic;', // hotkeys #red + 7 => 'color: #000000; font-style: italic;', // gui commands #black + 8 => 'color: #000000; font-style: italic;' // gui controls + ), + 'COMMENTS' => array( + 'MULTI' => 'font-style: italic; color: #669900;', + 1 => 'font-style: italic; color: #009933;' + ), + 'ESCAPE_CHAR' => array( + 0 => '' + ), + 'BRACKETS' => array( + 0 => 'color: #00FF00; font-weight: bold;' + ), + 'STRINGS' => array( + 0 => 'font-weight: bold; color: #008080;' + ), + 'NUMBERS' => array( + 0 => 'color: #0000dd;' + ), + 'METHODS' => array( + 1 => 'color: #0000FF; font-style: italic; font-weight: italic;' + ), + 'SYMBOLS' => array( + 0 => 'color: #000000; font-weight: italic;' + ), + 'REGEXPS' => array( + 0 => 'font-weight: italic; color: #A00A0;', + 1 => 'color: #CC0000; font-style: italic;', + 2 => 'color: #DD0000; font-style: italic;', + 3 => 'color: #88FF88;' + ), + 'SCRIPT' => array( + ) + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + 1 => '_' + ), + 'REGEXPS' => array( + //Variables + 0 => '%[a-zA-Z_][a-zA-Z0-9_]*%', + //hotstrings + 1 => '::[\w\d]+::', + //labels + 2 => '\w[\w\d]+:\s', + //Built-in Variables + 3 => '\bA_\w+\b(?![^<]*>)' + ), + 'URLS' => array( + 1 => '', + 2 => 'http://www.autohotkey.com/docs/Variables.htm#{FNAME}', + 3 => 'http://www.autohotkey.com/docs/commands/{FNAME}.htm', + 4 => 'http://www.autohotkey.com/docs/Functions.htm#BuiltIn', + 5 => 'http://www.autohotkey.com/docs/commands/_{FNAME}.htm', + 6 => '', + 7 => 'http://www.autohotkey.com/docs/commands/Gui.htm#{FNAME}', + 8 => 'http://www.autohotkey.com/docs/commands/GuiControls.htm#{FNAME}' + ), + 'STRICT_MODE_APPLIES' => GESHI_MAYBE, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + 0 => true, + 1 => true, + 2 => true, + 3 => true + ), + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 5 => array( + 'DISALLOWED_BEFORE' => '(?<!\w)\#' + ) + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/autoit.php b/inc/geshi/autoit.php index 526fe5d99..c8ef4404b 100644 --- a/inc/geshi/autoit.php +++ b/inc/geshi/autoit.php @@ -4,7 +4,7 @@ * -------- * Author: big_daddy (robert.i.anthony@gmail.com) * Copyright: (c) 2006 and to GESHi ;) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2006/01/26 * * AutoIT language file for GeSHi. @@ -60,7 +60,10 @@ $language_data = array ( 'COMMENT_MULTI' => array( '#comments-start' => '#comments-end', '#cs' => '#ce'), - 'COMMENT_REGEXP' => array(0 => '/(?<!#)#(\s.*)?$/m'), + 'COMMENT_REGEXP' => array( + 0 => '/(?<!#)#(\s.*)?$/m', + 1 => '/(?<=include)\s+<.*?>/' + ), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array("'", '"'), 'ESCAPE_CHAR' => '', @@ -1101,8 +1104,9 @@ $language_data = array ( 6 => 'color: #A00FF0; font-style: italic;' ), 'COMMENTS' => array( + 'MULTI' => 'font-style: italic; color: #669900;', 0 => 'font-style: italic; color: #009933;', - 'MULTI' => 'font-style: italic; color: #669900;' + 1 => 'font-style: italic; color: #9977BB;', ), 'ESCAPE_CHAR' => array( 0 => '' @@ -1111,7 +1115,7 @@ $language_data = array ( 0 => 'color: #FF0000; font-weight: bold;' ), 'STRINGS' => array( - 0 => 'font-weight: bold; color: #008080;' + 0 => 'font-weight: bold; color: #9977BB;' ), 'NUMBERS' => array( 0 => 'color: #AC00A9; font-style: italic; font-weight: bold;' diff --git a/inc/geshi/avisynth.php b/inc/geshi/avisynth.php index c0526e956..f74f50c3a 100644 --- a/inc/geshi/avisynth.php +++ b/inc/geshi/avisynth.php @@ -4,7 +4,7 @@ * -------- * Author: Ryan Jones (sciguyryan@gmail.com) * Copyright: (c) 2008 Ryan Jones - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/10/08 * * AviSynth language file for GeSHi. diff --git a/inc/geshi/awk.php b/inc/geshi/awk.php new file mode 100644 index 000000000..5d540315c --- /dev/null +++ b/inc/geshi/awk.php @@ -0,0 +1,158 @@ +<?php +/************************************************ + * awk.php + * ------- + * Author: George Pollard (porges@porg.es) + * Copyright: (c) 2009 George Pollard + * Release Version: 1.0.8.8 + * Date Started: 2009/01/28 + * + * Awk language file for GeSHi. + * + * CHANGES + * ------- + * 2009/01/28 (1.0.8.5) + * - First Release + * + * TODO (updated 2009/01/28) + * ------------------------- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'awk', + 'COMMENT_SINGLE' => array( + 1 => '#' + ), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array ( + 1 => array( + 'for', 'in', 'if', 'else', 'while', 'do', 'continue', 'break' + ), + 2 => array( + 'BEGIN', 'END' + ), + 3 => array( + 'ARGC', 'ARGV', 'CONVFMT', 'ENVIRON', + 'FILENAME', 'FNR', 'FS', 'NF', 'NR', 'OFMT', + 'OFS','ORS','RLENGTH','RS','RSTART','SUBSEP' + ), + 4 => array( + 'gsub','index','length','match','split', + 'sprintf','sub','substr','tolower','toupper', + 'atan2','cos','exp','int','log','rand', + 'sin','sqrt','srand' + ), + 5 => array( + 'print','printf','getline','close','fflush','system' + ), + 6 => array( + 'function', 'return' + ) + ), + 'SYMBOLS' => array ( + 0 => array( + '(',')','[',']','{','}' + ), + 1 => array( + '!','||','&&' + ), + 2 => array( + '<','>','<=','>=','==','!=' + ), + 3 => array( + '+','-','*','/','%','^','++','--' + ), + 4 => array( + '~','!~' + ), + 5 => array( + '?',':' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #000000; font-weight: bold;', + 2 => 'color: #C20CB9; font-weight: bold;', + 3 => 'color: #4107D5; font-weight: bold;', + 4 => 'color: #07D589; font-weight: bold;', + 5 => 'color: #0BD507; font-weight: bold;', + 6 => 'color: #078CD5; font-weight: bold;' + ), + 'COMMENTS' => array( + 1 => 'color:#808080;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'SYMBOLS' => array( + 0 => 'color:black;', + 1 => 'color:black;', + 2 => 'color:black;', + 3 => 'color:black;', + 4 => 'color:#C4C364;', + 5 => 'color:black;font-weight:bold;'), + 'SCRIPT' => array(), + 'REGEXPS' => array( + 0 => 'color:#000088;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #000000;' + ), + 'BRACKETS' => array( + 0 => 'color: #7a0874; font-weight: bold;' + ), + 'METHODS' => array() + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array (), + 'REGEXPS' => array( + 0 => "\\$[a-zA-Z0-9_]+" + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array (), + 'HIGHLIGHT_STRICT_BLOCK' => array() +); + +?> diff --git a/inc/geshi/bash.php b/inc/geshi/bash.php index bb0a571ba..dad391c8a 100644 --- a/inc/geshi/bash.php +++ b/inc/geshi/bash.php @@ -4,7 +4,7 @@ * -------- * Author: Andreas Gohr (andi@splitbrain.org) * Copyright: (c) 2004 Andreas Gohr, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/08/20 * * BASH language file for GeSHi. @@ -91,7 +91,7 @@ $language_data = array ( ), 2 => array( 'aclocal', 'aconnect', 'aplay', 'apm', 'apmsleep', 'apropos', - 'apt-cache', 'apt-get', 'apt-key', 'aptitude', + 'apt-cache', 'apt-file', 'apt-get', 'apt-key', 'apt-src', 'aptitude', 'ar', 'arch', 'arecord', 'as', 'as86', 'ash', 'autoconf', 'autoheader', 'automake', 'awk', @@ -104,10 +104,11 @@ $language_data = array ( 'chown', 'chroot', 'chsh', 'chvt', 'clear', 'cmp', 'comm', 'co', 'col', 'cp', 'cpio', 'cpp', 'csh', 'cut', 'cvs', 'cvs-pserver', - 'dash', 'date', 'dd', 'dc', 'dcop', 'deallocvt', 'df', 'dialog', - 'diff', 'diff3', 'dir', 'dircolors', 'directomatic', 'dirname', - 'dmesg', 'dnsdomainname', 'domainname', 'dpkg', 'dselect', 'du', - 'dumpkeys', + 'dash', 'date', 'dc', 'dch', 'dcop', 'dd', 'ddate', 'ddd', + 'deallocvt', 'debconf', 'defoma', 'depmod', 'df', 'dh', + 'dialog', 'diff', 'diff3', 'dig', 'dir', 'dircolors', 'directomatic', + 'dirname', 'dmesg', 'dnsdomainname', 'domainname', 'dpkg', + 'dselect', 'du', 'dumpkeys', 'ed', 'egrep', 'env', 'expr', @@ -119,9 +120,51 @@ $language_data = array ( 'gimptool', 'gmake', 'gocr', 'grep', 'groups', 'gs', 'gunzip', 'gzexe', 'gzip', + 'git', 'gitaction', 'git-add', 'git-add--interactive', 'git-am', + 'git-annotate', 'git-apply', 'git-archive', 'git-bisect', + 'git-bisect--helper', 'git-blame', 'git-branch', 'git-bundle', + 'git-cat-file', 'git-check-attr', 'git-checkout', + 'git-checkout-index', 'git-check-ref-format', 'git-cherry', + 'git-cherry-pick', 'git-clean', 'git-clone', 'git-commit', + 'git-commit-tree', 'git-config', 'git-count-objects', 'git-daemon', + 'git-describe', 'git-diff', 'git-diff-files', 'git-diff-index', + 'git-difftool', 'git-difftool--helper', 'git-diff-tree', + 'gitdpkgname', 'git-fast-export', 'git-fast-import', 'git-fetch', + 'git-fetch-pack', 'git-fetch--tool', 'git-filter-branch', 'gitfm', + 'git-fmt-merge-msg', 'git-for-each-ref', 'git-format-patch', + 'git-fsck', 'git-fsck-objects', 'git-gc', 'git-get-tar-commit-id', + 'git-grep', 'git-hash-object', 'git-help', 'git-http-fetch', + 'git-http-push', 'git-imap-send', 'git-index-pack', 'git-init', + 'git-init-db', 'git-instaweb', 'gitkeys', 'git-log', + 'git-lost-found', 'git-ls-files', 'git-ls-remote', 'git-ls-tree', + 'git-mailinfo', 'git-mailsplit', 'git-merge', 'git-merge-base', + 'git-merge-file', 'git-merge-index', 'git-merge-octopus', + 'git-merge-one-file', 'git-merge-ours', 'git-merge-recursive', + 'git-merge-resolve', 'git-merge-subtree', 'git-mergetool', + 'git-mergetool--lib', 'git-merge-tree', 'gitmkdirs', 'git-mktag', + 'git-mktree', 'gitmount', 'git-mv', 'git-name-rev', + 'git-pack-objects', 'git-pack-redundant', 'git-pack-refs', + 'git-parse-remote', 'git-patch-id', 'git-peek-remote', 'git-prune', + 'git-prune-packed', 'gitps', 'git-pull', 'git-push', + 'git-quiltimport', 'git-read-tree', 'git-rebase', + 'git-rebase--interactive', 'git-receive-pack', 'git-reflog', + 'gitregrep', 'git-relink', 'git-remote', 'git-repack', + 'git-repo-config', 'git-request-pull', 'git-rerere', 'git-reset', + 'git-revert', 'git-rev-list', 'git-rev-parse', 'gitrfgrep', + 'gitrgrep', 'git-rm', 'git-send-pack', 'git-shell', 'git-shortlog', + 'git-show', 'git-show-branch', 'git-show-index', 'git-show-ref', + 'git-sh-setup', 'git-stage', 'git-stash', 'git-status', + 'git-stripspace', 'git-submodule', 'git-svn', 'git-symbolic-ref', + 'git-tag', 'git-tar-tree', 'gitunpack', 'git-unpack-file', + 'git-unpack-objects', 'git-update-index', 'git-update-ref', + 'git-update-server-info', 'git-upload-archive', 'git-upload-pack', + 'git-var', 'git-verify-pack', 'git-verify-tag', 'gitview', + 'git-web--browse', 'git-whatchanged', 'gitwhich', 'gitwipe', + 'git-write-tree', 'gitxgrep', + 'head', 'hexdump', 'hostname', - 'id', 'ifconfig', 'igawk', 'install', + 'id', 'ifconfig', 'ifdown', 'ifup', 'igawk', 'install', 'join', @@ -166,8 +209,10 @@ $language_data = array ( 'valgrind', 'vdir', 'vi', 'vim', 'vmstat', - 'w', 'wall', 'wc', 'wget', 'whatis', 'whereis', 'which', 'whiptail', - 'who', 'whoami', 'write', + 'w', 'wall', 'watch', 'wc', 'wget', 'whatis', 'whereis', + 'which', 'whiptail', 'who', 'whoami', 'whois', 'wine', 'wineboot', + 'winebuild', 'winecfg', 'wineconsole', 'winedbg', 'winedump', + 'winefile', 'wodim', 'write', 'xargs', 'xhost', 'xmodmap', 'xset', @@ -258,9 +303,9 @@ $language_data = array ( //Variable assignment 2 => "(?<![\.a-zA-Z_\-])([a-zA-Z_][a-zA-Z0-9_]*?)(?==)", //Shorthand shell variables - 4 => "\\$[*#\$\\-\\?!]", + 4 => "\\$[*#\$\\-\\?!\d]", //Parameters of commands - 5 => "(?<=\s)--?[0-9a-zA-Z\-]+(?=[\s=]|$)" + 5 => "(?<=\s)--?[0-9a-zA-Z\-]+(?=[\s=]|<(?:SEMI|PIPE)>|$)" ), 'STRICT_MODE_APPLIES' => GESHI_NEVER, 'SCRIPT_DELIMITERS' => array( @@ -274,7 +319,7 @@ $language_data = array ( ), 'KEYWORDS' => array( 'DISALLOWED_BEFORE' => "(?<![\.\-a-zA-Z0-9_\$\#])", - 'DISALLOWED_AFTER' => "(?![\.\-a-zA-Z0-9_%\\/])" + 'DISALLOWED_AFTER' => "(?![\.\-a-zA-Z0-9_%=\\/])" ) ) ); diff --git a/inc/geshi/basic4gl.php b/inc/geshi/basic4gl.php index 5e3330930..7ac869304 100644 --- a/inc/geshi/basic4gl.php +++ b/inc/geshi/basic4gl.php @@ -4,7 +4,7 @@ * --------------------------------- * Author: Matthew Webb (bmatthew1@blueyonder.co.uk) * Copyright: (c) 2004 Matthew Webb (http://matthew-4gl.wikispaces.com) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2007/09/15 * * Basic4GL language file for GeSHi. diff --git a/inc/geshi/bf.php b/inc/geshi/bf.php index c4be922e0..ba44e6caf 100644 --- a/inc/geshi/bf.php +++ b/inc/geshi/bf.php @@ -4,7 +4,7 @@ * ---------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2009/10/31 * * Brainfuck language file for GeSHi. diff --git a/inc/geshi/bibtex.php b/inc/geshi/bibtex.php new file mode 100644 index 000000000..e47e0665c --- /dev/null +++ b/inc/geshi/bibtex.php @@ -0,0 +1,183 @@ +<?php +/******************************************************************************** + * bibtex.php + * ----- + * Author: Quinn Taylor (quinntaylor@mac.com) + * Copyright: (c) 2009 Quinn Taylor (quinntaylor@mac.com), Nigel McNie (http://qbnz.com/highlighter) + * Release Version: 1.0.8.8 + * Date Started: 2009/04/29 + * + * BibTeX language file for GeSHi. + * + * CHANGES + * ------- + * 2009/04/29 (1.0.8.4) + * - First Release + * + * TODO + * ------------------------- + * - Add regex for matching and replacing URLs with corresponding hyperlinks + * - Add regex for matching more LaTeX commands that may be embedded in BibTeX + * (Someone who understands regex better than I should borrow from latex.php) + ******************************************************************************** + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * +*******************************************************************************/ + +// http://en.wikipedia.org/wiki/BibTeX +// http://www.fb10.uni-bremen.de/anglistik/langpro/bibliographies/jacobsen-bibtex.html + +$language_data = array ( + 'LANG_NAME' => 'BibTeX', + 'OOLANG' => false, + 'COMMENT_SINGLE' => array( + 1 => '%%' + ), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array(), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 0 => array( + '@comment','@preamble','@string' + ), + // Standard entry types + 1 => array( + '@article','@book','@booklet','@conference','@inbook', + '@incollection','@inproceedings','@manual','@mastersthesis', + '@misc','@phdthesis','@proceedings','@techreport','@unpublished' + ), + // Custom entry types + 2 => array( + '@collection','@patent','@webpage' + ), + // Standard entry field names + 3 => array( + 'address','annote','author','booktitle','chapter','crossref', + 'edition','editor','howpublished','institution','journal','key', + 'month','note','number','organization','pages','publisher','school', + 'series','title','type','volume','year' + ), + // Custom entry field names + 4 => array( + 'abstract','affiliation','chaptername','cited-by','cites', + 'contents','copyright','date-added','date-modified','doi','eprint', + 'isbn','issn','keywords','language','lccn','lib-congress', + 'location','price','rating','read','size','source','url' + ) + ), + 'URLS' => array( + 0 => '', + 1 => '', + 2 => '', + 3 => '', + 4 => '' + ), + 'SYMBOLS' => array( + '{', '}', '#', '=', ',' + ), + 'CASE_SENSITIVE' => array( + 1 => false, + 2 => false, + 3 => false, + 4 => false, + GESHI_COMMENTS => false, + ), + // Define the colors for the groups listed above + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #C02020;', // Standard entry types + 2 => 'color: #C02020;', // Custom entry types + 3 => 'color: #C08020;', // Standard entry field names + 4 => 'color: #C08020;' // Custom entry field names + ), + 'COMMENTS' => array( + 1 => 'color: #2C922C; font-style: italic;' + ), + 'STRINGS' => array( + 0 => 'color: #2020C0;' + ), + 'SYMBOLS' => array( + 0 => 'color: #E02020;' + ), + 'REGEXPS' => array( + 1 => 'color: #2020C0;', // {...} + 2 => 'color: #C08020;', // BibDesk fields + 3 => 'color: #800000;' // LaTeX commands + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000000; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #E02020;' + ), + 'NUMBERS' => array( + ), + 'METHODS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'REGEXPS' => array( + // {parameters} + 1 => array( + GESHI_SEARCH => "(?<=\\{)(?:\\{(?R)\\}|[^\\{\\}])*(?=\\})", + GESHI_REPLACE => '\0', + GESHI_MODIFIERS => 's', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + 2 => array( + GESHI_SEARCH => "\bBdsk-(File|Url)-\d+", + GESHI_REPLACE => '\0', + GESHI_MODIFIERS => 'Us', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + 3 => array( + GESHI_SEARCH => "\\\\[A-Za-z0-9]*+", + GESHI_REPLACE => '\0', + GESHI_MODIFIERS => 'Us', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'OBJECT_SPLITTERS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'PARSER_CONTROL' => array( + 'ENABLE_FLAGS' => array( + 'NUMBERS' => GESHI_NEVER + ), + 'KEYWORDS' => array( + 3 => array( + 'DISALLOWED_AFTER' => '(?=\s*=)' + ), + 4 => array( + 'DISALLOWED_AFTER' => '(?=\s*=)' + ), + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/blitzbasic.php b/inc/geshi/blitzbasic.php index 3ad5eabf0..e43ec4635 100644 --- a/inc/geshi/blitzbasic.php +++ b/inc/geshi/blitzbasic.php @@ -4,7 +4,7 @@ * -------------- * Author: P�draig O`Connel (info@moonsword.info) * Copyright: (c) 2005 P�draig O`Connel (http://moonsword.info) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 16.10.2005 * * BlitzBasic language file for GeSHi. diff --git a/inc/geshi/bnf.php b/inc/geshi/bnf.php index 0032acf48..f52df9cb8 100644 --- a/inc/geshi/bnf.php +++ b/inc/geshi/bnf.php @@ -4,7 +4,7 @@ * -------- * Author: Rowan Rodrik van der Molen (rowan@bigsmoke.us) * Copyright: (c) 2006 Rowan Rodrik van der Molen (http://www.bigsmoke.us/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2006/09/28 * * BNF (Backus-Naur form) language file for GeSHi. @@ -45,21 +45,26 @@ $language_data = array ( 'LANG_NAME' => 'bnf', - 'COMMENT_SINGLE' => array(), + 'COMMENT_SINGLE' => array(';'), 'COMMENT_MULTI' => array(), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array('"', "'"), 'ESCAPE_CHAR' => '', 'KEYWORDS' => array(), 'SYMBOLS' => array( - '(', ')', '<', '>', '::=', '|' + 0 => array('(', ')'), + 1 => array('<', '>'), + 2 => array('[', ']'), + 3 => array('{', '}'), + 4 => array('=', '*', '/', '|', ':'), ), 'CASE_SENSITIVE' => array( - //GESHI_COMMENTS => false + GESHI_COMMENTS => false ), 'STYLES' => array( 'KEYWORDS' => array(), 'COMMENTS' => array( + 0 => 'color: #666666; font-style: italic;', // Single Line comments ), 'ESCAPE_CHAR' => array( 0 => '' @@ -78,8 +83,12 @@ $language_data = array ( 0 => '' ), 'SYMBOLS' => array( - 0 => 'color: #000066; font-weight: bold;', // Unused - ), + 0 => 'color: #000066; font-weight: bold;', // Round brackets + 1 => 'color: #000066; font-weight: bold;', // Angel Brackets + 2 => 'color: #000066; font-weight: bold;', // Square Brackets + 3 => 'color: #000066; font-weight: bold;', // BRaces + 4 => 'color: #006600; font-weight: bold;', // Other operator symbols + ), 'REGEXPS' => array( 0 => 'color: #007;', ), @@ -107,4 +116,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/boo.php b/inc/geshi/boo.php index d555dd4a2..09d4ee40e 100644 --- a/inc/geshi/boo.php +++ b/inc/geshi/boo.php @@ -4,7 +4,7 @@ * -------- * Author: Marcus Griep (neoeinstein+GeSHi@gmail.com) * Copyright: (c) 2007 Marcus Griep (http://www.xpdm.us) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2007/09/10 * * Boo language file for GeSHi. diff --git a/inc/geshi/c.php b/inc/geshi/c.php index 86f576ef6..b0e2987d7 100644 --- a/inc/geshi/c.php +++ b/inc/geshi/c.php @@ -7,7 +7,7 @@ * - Jack Lloyd (lloyd@randombit.net) * - Michael Mol (mikemol@gmail.com) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/06/04 * * C language file for GeSHi. @@ -96,8 +96,22 @@ $language_data = array ( ), 4 => array( 'auto', 'char', 'const', 'double', 'float', 'int', 'long', - 'register', 'short', 'signed', 'sizeof', 'static', 'string', 'struct', - 'typedef', 'union', 'unsigned', 'void', 'volatile', 'wchar_t' + 'register', 'short', 'signed', 'sizeof', 'static', 'struct', + 'typedef', 'union', 'unsigned', 'void', 'volatile', 'wchar_t', + + 'int8', 'int16', 'int32', 'int64', + 'uint8', 'uint16', 'uint32', 'uint64', + + 'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t', + 'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t', + + 'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t', + 'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t', + + 'int8_t', 'int16_t', 'int32_t', 'int64_t', + 'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t', + + 'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t' ), ), 'SYMBOLS' => array( diff --git a/inc/geshi/c_mac.php b/inc/geshi/c_mac.php index 46a3600fe..1a034ae08 100644 --- a/inc/geshi/c_mac.php +++ b/inc/geshi/c_mac.php @@ -4,7 +4,7 @@ * --------- * Author: M. Uli Kusterer (witness.of.teachtext@gmx.net) * Copyright: (c) 2004 M. Uli Kusterer, Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/06/04 * * C for Macs language file for GeSHi. @@ -112,10 +112,25 @@ $language_data = array ( ), 4 => array( 'auto', 'char', 'const', 'double', 'float', 'int', 'long', - 'register', 'short', 'signed', 'static', 'string', 'struct', + 'register', 'short', 'signed', 'static', 'struct', 'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf', 'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t', - 'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm', + 'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm', 'wchar_t', + + 'int8', 'int16', 'int32', 'int64', + 'uint8', 'uint16', 'uint32', 'uint64', + + 'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t', + 'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t', + + 'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t', + 'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t', + + 'int8_t', 'int16_t', 'int32_t', 'int64_t', + 'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t', + + 'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t', + // Mac-specific types: 'CFArrayRef', 'CFDictionaryRef', 'CFMutableDictionaryRef', 'CFBundleRef', 'CFSetRef', 'CFStringRef', 'CFURLRef', 'CFLocaleRef', 'CFDateFormatterRef', 'CFNumberFormatterRef', 'CFPropertyListRef', diff --git a/inc/geshi/caddcl.php b/inc/geshi/caddcl.php index 12e1d3b75..74310d6d9 100644 --- a/inc/geshi/caddcl.php +++ b/inc/geshi/caddcl.php @@ -4,7 +4,7 @@ * ---------- * Author: Roberto Rossi (rsoftware@altervista.org) * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/08/30 * * CAD DCL (Dialog Control Language) language file for GeSHi. diff --git a/inc/geshi/cadlisp.php b/inc/geshi/cadlisp.php index c537370d5..9277e5192 100644 --- a/inc/geshi/cadlisp.php +++ b/inc/geshi/cadlisp.php @@ -4,7 +4,7 @@ * ----------- * Author: Roberto Rossi (rsoftware@altervista.org) * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/blog) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/08/30 * * AutoCAD/IntelliCAD Lisp language file for GeSHi. diff --git a/inc/geshi/cfdg.php b/inc/geshi/cfdg.php index 5091ffa4c..ee17fdf53 100644 --- a/inc/geshi/cfdg.php +++ b/inc/geshi/cfdg.php @@ -4,7 +4,7 @@ * -------- * Author: John Horigan <john@glyphic.com> * Copyright: (c) 2006 John Horigan http://www.ozonehouse.com/john/ - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2006/03/11 * * CFDG language file for GeSHi. diff --git a/inc/geshi/cfm.php b/inc/geshi/cfm.php index ac81695ab..dd508eec7 100644 --- a/inc/geshi/cfm.php +++ b/inc/geshi/cfm.php @@ -4,7 +4,7 @@ * ------- * Author: Diego * Copyright: (c) 2006 Diego - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2006/02/25 * * ColdFusion language file for GeSHi. diff --git a/inc/geshi/chaiscript.php b/inc/geshi/chaiscript.php new file mode 100644 index 000000000..e1baad4db --- /dev/null +++ b/inc/geshi/chaiscript.php @@ -0,0 +1,140 @@ +<?php +/************************************************************************************* + * chaiscript.php + * -------------- + * Author: Jason Turner & Jonathan Turner + * Copyright: (c) 2010 Jason Turner (lefticus@gmail.com), + * (c) 2009 Jonathan Turner, + * (c) 2004 Ben Keen (ben.keen@gmail.com), Benny Baumann (http://qbnz.com/highlighter) + * Release Version: 1.0.8.8 + * Date Started: 2009/07/03 + * + * ChaiScript language file for GeSHi. + * + * Based on JavaScript by Ben Keen (ben.keen@gmail.com) + * + * CHANGES + * ------- + * 2010/03/30 (1.0.8.8) + * - Updated to include more language features + * - Removed left over pieces from JavaScript + * 2009/07/03 (1.0.0) + * - First Release + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'ChaiScript', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array('/*' => '*/'), + //Regular Expressions + 'COMMENT_REGEXP' => array(2 => "/(?<=[\\s^])s\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/[gimsu]*(?=[\\s$\\.\\;])|(?<=[\\s^(=])m?\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/[gimsu]*(?=[\\s$\\.\\,\\;\\)])/iU"), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( + 'break', 'else', 'else if', 'eval', 'for', 'if', 'return', 'while', 'try', 'catch', 'finally', + ), + 2 => array( + 'def', 'false', 'fun', 'true', 'var', 'attr', + ), + 3 => array( + // built in functions + 'throw', + ) + ), + 'SYMBOLS' => array( + '(', ')', '[', ']', '{', '}', + '+', '-', '*', '/', '%', + '!', '@', '&', '|', '^', + '<', '>', '=', + ',', ';', '?', ':' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #000066; font-weight: bold;', + 2 => 'color: #003366; font-weight: bold;', + 3 => 'color: #000066;' + ), + 'COMMENTS' => array( + 1 => 'color: #006600; font-style: italic;', + 2 => 'color: #009966; font-style: italic;', + 'MULTI' => 'color: #006600; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #3366CC;' + ), + 'NUMBERS' => array( + 0 => 'color: #CC0000;' + ), + 'METHODS' => array( + 1 => 'color: #660066;' + ), + 'SYMBOLS' => array( + 0 => 'color: #339933;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + 0 => '', + 1 => '', + 2 => '', + 3 => '' + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_MAYBE, + 'SCRIPT_DELIMITERS' => array( + 0 => array( + ), + 1 => array( + ) + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + 0 => true, + 1 => true + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/cil.php b/inc/geshi/cil.php index 994f86316..142c7743a 100644 --- a/inc/geshi/cil.php +++ b/inc/geshi/cil.php @@ -4,7 +4,7 @@ * -------- * Author: Marcus Griep (neoeinstein+GeSHi@gmail.com) * Copyright: (c) 2007 Marcus Griep (http://www.xpdm.us) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2007/10/24 * * CIL (Common Intermediate Language) language file for GeSHi. diff --git a/inc/geshi/clojure.php b/inc/geshi/clojure.php new file mode 100644 index 000000000..4bcb9a3ae --- /dev/null +++ b/inc/geshi/clojure.php @@ -0,0 +1,134 @@ +<?php +/************************************************************************************* + * clojure.php + * -------- + * Author: Jess Johnson (jess@grok-code.com) + * Copyright: (c) 2009 Jess Johnson (http://grok-code.com) + * Release Version: 1.0.8.8 + * Date Started: 2009/09/20 + * + * Clojure language file for GeSHi. + * + * This file borrows significantly from the lisp language file for GeSHi + * + * CHANGES + * ------- + * 2009/09/20 (1.0.8.6) + * - First Release + * + * TODO (updated 2009/09/20) + * ------------------------- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'Clojure', + 'COMMENT_SINGLE' => array(1 => ';'), + 'COMMENT_MULTI' => array(';|' => '|;'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( + 'defn', 'defn-', 'defmulti', 'defmethod', 'defmacro', 'deftest', + 'defstruct', 'def', 'defonce', 'let', 'letfn', 'do', 'cond', 'condp', + 'for', 'loop', 'recur', 'when', 'when-not', 'when-let', 'when-first', + 'if', 'if-let', 'if-not', 'doto', 'and', 'or','not','aget','aset', + 'dosync', 'doseq', 'dotimes', 'dorun', 'doall', + 'load', 'import', 'unimport', 'ns', 'in-ns', 'refer', 'print', + 'try', 'catch', 'finally', 'throw', 'fn', 'update-in', + 'with-open', 'with-local-vars', 'binding', + 'gen-class', 'gen-and-load-class', 'gen-and-save-class', + 'implement', 'proxy', 'lazy-cons', 'with-meta', + 'struct', 'struct-map', 'delay', 'locking', 'sync', 'time', 'apply', + 'remove', 'merge', 'interleave', 'interpose', 'distinct', + 'cons', 'concat', 'lazy-cat', 'cycle', 'rest', 'frest', 'drop', + 'drop-while', 'nthrest', 'take', 'take-while', 'take-nth', 'butlast', + 'reverse', 'sort', 'sort-by', 'split-at', 'partition', 'split-with', + 'first', 'ffirst', 'rfirst', 'zipmap', 'into', 'set', 'vec', + 'to-array-2d', 'not-empty', 'seq?', 'not-every?', 'every?', 'not-any?', + 'map', 'mapcat', 'vector?', 'list?', 'hash-map', 'reduce', 'filter', + 'vals', 'keys', 'rseq', 'subseq', 'rsubseq', 'count', 'empty?', + 'fnseq', 'repeatedly', 'iterate', 'drop-last', + 'repeat', 'replicate', 'range', 'into-array', + 'line-seq', 'resultset-seq', 're-seq', 're-find', 'tree-seq', 'file-seq', + 'iterator-seq', 'enumeration-seq', 'declare', 'xml-seq', + 'symbol?', 'string?', 'vector', 'conj', 'str', + 'pos?', 'neg?', 'zero?', 'nil?', 'inc', 'dec', 'format', + 'alter', 'commute', 'ref-set', 'floor', 'assoc', 'send', 'send-off' + ) + ), + 'SYMBOLS' => array( + '(', ')', '{', '}', '[', ']', '!', '%', '^', '&', '/','+','-','*','=','<','>',';','|', '.', '..', '->', + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => true, + 1 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #b1b100;' + ), + 'COMMENTS' => array( + 1 => 'color: #808080; font-style: italic;', + 'MULTI' => 'color: #808080; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #66cc66;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;' + ), + 'METHODS' => array( + 0 => 'color: #555;', + 1 => 'color: #555;' + ), + 'SYMBOLS' => array( + 0 => 'color: #66cc66;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + '::', ':' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/cmake.php b/inc/geshi/cmake.php new file mode 100644 index 000000000..ccd855b0b --- /dev/null +++ b/inc/geshi/cmake.php @@ -0,0 +1,181 @@ +<?php +/************************************************************************************* + * cmake.php + * ------- + * Author: Daniel Nelson (danieln@eng.utah.edu) + * Copyright: (c) 2009 Daniel Nelson + * Release Version: 1.0.8.8 + * Date Started: 2009/04/06 + * + * CMake language file for GeSHi. + * + * Keyword list generated using CMake 2.6.3. + * + * CHANGES + * ------- + * <date-of-release> (<GeSHi release>) + * - First Release + * + * TODO (updated <date-of-release>) + * ------------------------- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'CMake', + 'COMMENT_SINGLE' => array(1 => '#'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '\\', + 'ESCAPE_REGEXP' => array( + // Quoted variables ${...} + 1 => "/\\$(ENV)?\\{[^\\n\\}]*?\\}/i", + // Quoted registry keys [...] + 2 => "/\\[HKEY[^\n\\]]*?]/i" + ), + 'KEYWORDS' => array( + 1 => array( + 'add_custom_command', 'add_custom_target', 'add_definitions', + 'add_dependencies', 'add_executable', 'add_library', + 'add_subdirectory', 'add_test', 'aux_source_directory', 'break', + 'build_command', 'cmake_minimum_required', 'cmake_policy', + 'configure_file', 'create_test_sourcelist', 'define_property', + 'else', 'elseif', 'enable_language', 'enable_testing', + 'endforeach', 'endfunction', 'endif', 'endmacro', + 'endwhile', 'execute_process', 'export', 'file', 'find_file', + 'find_library', 'find_package', 'find_path', 'find_program', + 'fltk_wrap_ui', 'foreach', 'function', 'get_cmake_property', + 'get_directory_property', 'get_filename_component', 'get_property', + 'get_source_file_property', 'get_target_property', + 'get_test_property', 'if', 'include', 'include_directories', + 'include_external_msproject', 'include_regular_expression', + 'install', 'link_directories', 'list', 'load_cache', + 'load_command', 'macro', 'mark_as_advanced', 'math', 'message', + 'option', 'output_required_files', 'project', 'qt_wrap_cpp', + 'qt_wrap_ui', 'remove_definitions', 'return', 'separate_arguments', + 'set', 'set_directory_properties', 'set_property', + 'set_source_files_properties', 'set_target_properties', + 'set_tests_properties', 'site_name', 'source_group', 'string', + 'target_link_libraries', 'try_compile', 'try_run', 'unset', + 'variable_watch', 'while' + ), + 2 => array( + // Deprecated commands + 'build_name', 'exec_program', 'export_library_dependencies', + 'install_files', 'install_programs', 'install_targets', + 'link_libraries', 'make_directory', 'remove', 'subdir_depends', + 'subdirs', 'use_mangled_mesa', 'utility_source', + 'variable_requires', 'write_file' + ), + 3 => array( + // Special command arguments, this list is not comprehesive. + 'AND', 'APPEND', 'ASCII', 'BOOL', 'CACHE', 'COMMAND', 'COMMENT', + 'COMPARE', 'CONFIGURE', 'DEFINED', 'DEPENDS', 'DIRECTORY', + 'EQUAL', 'EXCLUDE_FROM_ALL', 'EXISTS', 'FALSE', 'FATAL_ERROR', + 'FILEPATH', 'FIND', 'FORCE', 'GET', 'GLOBAL', 'GREATER', + 'IMPLICIT_DEPENDS', 'INSERT', 'INTERNAL', 'IS_ABSOLUTE', + 'IS_DIRECTORY', 'IS_NEWER_THAN', 'LENGTH', 'LESS', + 'MAIN_DEPENDENCY', 'MATCH', 'MATCHALL', 'MATCHES', 'MODULE', 'NOT', + 'NOTFOUND', 'OFF', 'ON', 'OR', 'OUTPUT', 'PARENT_SCOPE', 'PATH', + 'POLICY', 'POST_BUILD', 'PRE_BUILD', 'PRE_LINK', 'PROPERTY', + 'RANDOM', 'REGEX', 'REMOVE_AT', 'REMOVE_DUPLICATES', 'REMOVE_ITEM', + 'REPLACE', 'REVERSE', 'SEND_ERROR', 'SHARED', 'SORT', 'SOURCE', + 'STATIC', 'STATUS', 'STREQUAL', 'STRGREATER', 'STRING', 'STRIP', + 'STRLESS', 'SUBSTRING', 'TARGET', 'TEST', 'TOLOWER', 'TOUPPER', + 'TRUE', 'VERBATIM', 'VERSION', 'VERSION_EQUAL', 'VERSION_GREATOR', + 'VERSION_LESS', 'WORKING_DIRECTORY', + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => true + ), + 'SYMBOLS' => array( + 0 => array('(', ')') + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #1f3f81; font-style: bold;', + 2 => 'color: #1f3f81;', + 3 => 'color: #077807; font-sytle: italic;' + ), + 'BRACKETS' => array(), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;', + 1 => 'color: #b08000;', + 2 => 'color: #0000cd;' + ), + 'STRINGS' => array( + 0 => 'color: #912f11;', + ), + 'SYMBOLS' => array( + 0 => 'color: #197d8b;' + ), + 'NUMBERS' => array(), + 'METHODS' => array(), + 'REGEXPS' => array( + 0 => 'color: #b08000;', + 1 => 'color: #0000cd;' + ), + 'SCRIPT' => array() + ), + 'URLS' => array( + 1 => 'http://www.cmake.org/cmake/help/cmake2.6docs.html#command:{FNAMEL}', + 2 => 'http://www.cmake.org/cmake/help/cmake2.6docs.html#command:{FNAMEL}', + 3 => '', + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array(), + 'REGEXPS' => array( + // Unquoted variables + 0 => "\\$(ENV)?\\{[^\\n}]*?\\}", + // Unquoted registry keys + 1 => "\\[HKEY[^\n\\]]*?]" + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array(), + 'TAB_WIDTH' => 4, + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + // These keywords cannot come after a open paren + 1 => array( + 'DISALLOWED_AFTER' => '(?= *\()' + ), + 2 => array( + 'DISALLOWED_AFTER' => '(?= *\()' + ) + ), + 'ENABLE_FLAGS' => array( + 'BRACKETS' => GESHI_NEVER, + 'METHODS' => GESHI_NEVER, + 'NUMBERS' => GESHI_NEVER + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/cobol.php b/inc/geshi/cobol.php index 9adae16e3..c1220a06f 100644 --- a/inc/geshi/cobol.php +++ b/inc/geshi/cobol.php @@ -4,7 +4,7 @@ * ---------- * Author: BenBE (BenBE@omorphia.org) * Copyright: (c) 2007-2008 BenBE (http://www.omorphia.de/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2007/07/02 * * COBOL language file for GeSHi. diff --git a/inc/geshi/cpp-qt.php b/inc/geshi/cpp-qt.php index 43105de3d..8523d16b7 100644 --- a/inc/geshi/cpp-qt.php +++ b/inc/geshi/cpp-qt.php @@ -4,13 +4,16 @@ * ------- * Author: Iulian M * Copyright: (c) 2006 Iulian M - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/09/27 * * C++ (with QT extensions) language file for GeSHi. * * CHANGES * ------- + * 2009/06/28 (1.0.8.4) + * - Updated list of Keywords from Qt 4.5 + * * 2008/05/23 (1.0.7.22) * - Added description of extra language features (SF#1970248) * @@ -86,8 +89,9 @@ $language_data = array ( 'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC', 'virtual', 'public', 'private', 'protected', 'template', 'using', 'namespace', 'try', 'catch', 'inline', 'dynamic_cast', 'const_cast', 'reinterpret_cast', - 'static_cast', 'explicit', 'friend', 'wchar_t', 'typename', 'typeid', 'class' , - 'foreach','connect', 'Q_OBJECT' , 'slots' , 'signals' + 'static_cast', 'explicit', 'friend', 'typename', 'typeid', 'class' , + 'foreach','connect', 'Q_OBJECT' , 'slots' , 'signals', 'Q_SIGNALS', 'Q_SLOTS', + 'Q_FOREACH', 'QCOMPARE', 'QVERIFY', 'qDebug', 'kDebug', 'QBENCHMARK' ), 3 => array( 'cin', 'cerr', 'clog', 'cout', @@ -116,106 +120,351 @@ $language_data = array ( 'register', 'short', 'shortint', 'signed', 'static', 'struct', 'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf', 'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t', - 'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm', + 'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm', 'wchar_t', + + 'int8', 'int16', 'int32', 'int64', + 'uint8', 'uint16', 'uint32', 'uint64', + + 'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t', + 'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t', + + 'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t', + 'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t', + + 'int8_t', 'int16_t', 'int32_t', 'int64_t', + 'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t', + + 'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t' ), 5 => array( - 'QAbstractButton','QDir','QIntValidator','QRegExpValidator','QTabWidget','QAbstractEventDispatcher', - 'QDirectPainter','QIODevice','QRegion','QTcpServer','QAbstractExtensionFactory','QDirModel', - 'QItemDelegate','QResizeEvent','QTcpSocket','QAbstractExtensionManager','QDockWidget', - 'QItemEditorCreatorBase','QResource','QTemporaryFile','QAbstractFileEngine','QDomAttr', - 'QItemEditorFactory','QRubberBand','QTestEventList','QAbstractFileEngineHandler','QDomCDATASection', - 'QItemSelection','QScreen','QTextBlock','QAbstractFormBuilder','QDomCharacterData','QItemSelectionModel', - 'QScreenCursor','QTextBlockFormat','QAbstractGraphicsShapeItem','QDomComment','QItemSelectionRange', - 'QScreenDriverFactory','QTextBlockGroup','QAbstractItemDelegate','QDomDocument','QKbdDriverFactory', - 'QScreenDriverPlugin','QTextBlockUserData','QAbstractItemModel','QDomDocumentFragment','QKbdDriverPlugin', - 'QScrollArea','QTextBrowser','QAbstractItemView','QDomDocumentType','QKeyEvent','QScrollBar', - 'QTextCharFormat','QAbstractListModel','QDomElement','QKeySequence','QSemaphore','QTextCodec', - 'QAbstractPrintDialog','QDomEntity','QLabel','QSessionManager','QTextCodecPlugin','QAbstractProxyModel', - 'QDomEntityReference','QLatin1Char','QSet','QTextCursor','QAbstractScrollArea','QDomImplementation', - 'QLatin1String','QSetIterator','QTextDecoder','QAbstractSlider','QDomNamedNodeMap','QLayout','QSettings', - 'QTextDocument','QAbstractSocket','QDomNode','QLayoutItem','QSharedData','QTextDocumentFragment', - 'QAbstractSpinBox','QDomNodeList','QLCDNumber','QSharedDataPointer','QTextEdit','QAbstractTableModel', - 'QDomNotation','QLibrary','QShortcut','QTextEncoder','QAbstractTextDocumentLayout', - 'QDomProcessingInstruction','QLibraryInfo','QShortcutEvent','QTextFormat','QAccessible','QDomText', - 'QLine','QShowEvent','QTextFragment','QAccessibleBridge','QDoubleSpinBox','QLinearGradient', - 'QSignalMapper','QTextFrame','QAccessibleBridgePlugin','QDoubleValidator','QLineEdit','QSignalSpy', - 'QTextFrameFormat','QAccessibleEvent','QDrag','QLineF','QSize','QTextImageFormat','QAccessibleInterface', - 'QDragEnterEvent','QLinkedList','QSizeF','QTextInlineObject','QAccessibleObject','QDragLeaveEvent', - 'QLinkedListIterator','QSizeGrip','QTextLayout','QAccessiblePlugin','QDragMoveEvent','QLinuxFbScreen', - 'QSizePolicy','QTextLength','QAccessibleWidget','QDropEvent','QList','QSlider','QTextLine','QAction', - 'QDynamicPropertyChangeEvent','QListIterator','QSocketNotifier','QTextList','QActionEvent','QErrorMessage', - 'QListView','QSortFilterProxyModel','QTextListFormat','QActionGroup','QEvent','QListWidget','QSound', - 'QTextObject','QApplication','QEventLoop','QListWidgetItem','QSpacerItem','QTextOption','QAssistantClient', - 'QExtensionFactory','QLocale','QSpinBox','QTextStream','QAxAggregated','QExtensionManager', - 'QMacPasteboardMime','QSplashScreen','QTextTable','QAxBase','QFile','QMacStyle','QSplitter', - 'QTextTableCell','QAxBindable','QFileDialog','QMainWindow','QSplitterHandle','QTextTableFormat', - 'QAxFactory','QFileIconProvider','QMap','QSqlDatabase','QThread','QAxObject','QFileInfo','QMapIterator', - 'QSqlDriver','QThreadStorage','QAxScript','QFileOpenEvent','QMatrix','QSqlDriverCreator','QTime', - 'QAxScriptEngine','QFileSystemWatcher','QMenu','QSqlDriverCreatorBase','QTimeEdit','QAxScriptManager', - 'QFlag','QMenuBar','QSqlDriverPlugin','QTimeLine','QAxWidget','QFlags','QMessageBox','QSqlError','QTimer', - 'QBasicTimer','QFocusEvent','QMetaClassInfo','QSqlField','QTimerEvent','QBitArray','QFocusFrame', - 'QMetaEnum','QSqlIndex','QToolBar','QBitmap','QFont','QMetaMethod','QSqlQuery','QToolBox','QBoxLayout', - 'QFontComboBox','QMetaObject','QSqlQueryModel','QToolButton','QBrush','QFontDatabase','QMetaProperty', - 'QSqlRecord','QToolTip','QBuffer','QFontDialog','QMetaType','QSqlRelation','QTransformedScreen', - 'QButtonGroup','QFontInfo','QMimeData','QSqlRelationalDelegate','QTranslator','QByteArray','QFontMetrics', - 'QMimeSource','QSqlRelationalTableModel','QTreeView','QByteArrayMatcher','QFontMetricsF','QModelIndex', - 'QSqlResult','QTreeWidget','QCache','QFormBuilder','QMotifStyle','QSqlTableModel','QTreeWidgetItem', - 'QCalendarWidget','QFrame','QMouseDriverFactory','QStack','QTreeWidgetItemIterator','QCDEStyle', - 'QFSFileEngine','QMouseDriverPlugin','QStackedLayout','QUdpSocket','QChar','QFtp','QMouseEvent', - 'QStackedWidget','QUiLoader','QCheckBox','QGenericArgument','QMoveEvent','QStandardItem','QUndoCommand', - 'QChildEvent','QGenericReturnArgument','QMovie','QStandardItemEditorCreator','QUndoGroup', - 'QCleanlooksStyle','QGLColormap','QMultiHash','QStandardItemModel','QUndoStack','QClipboard', - 'QGLContext','QMultiMap','QStatusBar','QUndoView','QCloseEvent','QGLFormat','QMutableHashIterator', - 'QStatusTipEvent','QUrl','QColor','QGLFramebufferObject','QMutableLinkedListIterator','QString', - 'QUrlInfo','QColorDialog','QGLPixelBuffer','QMutableListIterator','QStringList','QUuid','QColormap', - 'QGLWidget','QMutableMapIterator','QStringListModel','QValidator','QComboBox','QGradient', - 'QMutableSetIterator','QStringMatcher','QVariant','QCommonStyle','QGraphicsEllipseItem', - 'QMutableVectorIterator','QStyle','QVarLengthArray','QCompleter','QGraphicsItem','QMutex', - 'QStyleFactory','QVBoxLayout','QConicalGradient','QGraphicsItemAnimation','QMutexLocker', - 'QStyleHintReturn','QVector','QContextMenuEvent','QGraphicsItemGroup','QNetworkAddressEntry', - 'QStyleHintReturnMask','QVectorIterator','QCopChannel','QGraphicsLineItem','QNetworkInterface', - 'QStyleOption','QVFbScreen','QCoreApplication','QGraphicsPathItem','QNetworkProxy','QStyleOptionButton', - 'QVNCScreen','QCursor','QGraphicsPixmapItem','QObject','QStyleOptionComboBox','QWaitCondition', - 'QCustomRasterPaintDevice','QGraphicsPolygonItem','QObjectCleanupHandler','QStyleOptionComplex', - 'QWhatsThis','QDataStream','QGraphicsRectItem','QPageSetupDialog','QStyleOptionDockWidget', - 'QWhatsThisClickedEvent','QDataWidgetMapper','QGraphicsScene','QPaintDevice','QStyleOptionFocusRect', - 'QWheelEvent','QDate','QGraphicsSceneContextMenuEvent','QPaintEngine','QStyleOptionFrame','QWidget', - 'QDateEdit','QGraphicsSceneEvent','QPaintEngineState','QStyleOptionFrameV2','QWidgetAction','QDateTime', - 'QGraphicsSceneHoverEvent','QPainter','QStyleOptionGraphicsItem','QWidgetItem','QDateTimeEdit', - 'QGraphicsSceneMouseEvent','QPainterPath','QStyleOptionGroupBox','QWindowsMime','QDBusAbstractAdaptor', - 'QGraphicsSceneWheelEvent','QPainterPathStroker','QStyleOptionHeader','QWindowsStyle', - 'QDBusAbstractInterface','QGraphicsSimpleTextItem','QPaintEvent','QStyleOptionMenuItem', - 'QWindowStateChangeEvent','QDBusArgument','QGraphicsSvgItem','QPair','QStyleOptionProgressBar', - 'QWindowsXPStyle','QDBusConnection','QGraphicsTextItem','QPalette','QStyleOptionProgressBarV2', - 'QWorkspace','QDBusConnectionInterface','QGraphicsView','QPen','QStyleOptionQ3DockWindow','QWriteLocker', - 'QDBusError','QGridLayout','QPersistentModelIndex','QStyleOptionQ3ListView','QWSCalibratedMouseHandler', - 'QDBusInterface','QGroupBox','QPicture','QStyleOptionQ3ListViewItem','QWSClient','QDBusMessage','QHash', - 'QPictureFormatPlugin','QStyleOptionRubberBand','QWSEmbedWidget','QDBusObjectPath','QHashIterator', - 'QPictureIO','QStyleOptionSizeGrip','QWSEvent','QDBusReply','QHBoxLayout','QPixmap','QStyleOptionSlider', - 'QWSInputMethod','QDBusServer','QHeaderView','QPixmapCache','QStyleOptionSpinBox','QWSKeyboardHandler', - 'QDBusSignature','QHelpEvent','QPlastiqueStyle','QStyleOptionTab','QWSMouseHandler','QDBusVariant', - 'QHideEvent','QPluginLoader','QStyleOptionTabBarBase','QWSPointerCalibrationData','QDecoration', - 'QHostAddress','QPoint','QStyleOptionTabV2','QWSScreenSaver','QDecorationFactory','QHostInfo','QPointer', - 'QStyleOptionTabWidgetFrame','QWSServer','QDecorationPlugin','QHoverEvent','QPointF','QStyleOptionTitleBar', - 'QWSTslibMouseHandler','QDesignerActionEditorInterface','QHttp','QPolygon','QStyleOptionToolBar','QWSWindow', - 'QDesignerContainerExtension','QHttpHeader','QPolygonF','QStyleOptionToolBox','QWSWindowSurface', - 'QDesignerCustomWidgetCollectionInterface','QHttpRequestHeader','QPrintDialog','QStyleOptionToolButton', - 'QX11EmbedContainer','QDesignerCustomWidgetInterface','QHttpResponseHeader','QPrintEngine', - 'QStyleOptionViewItem','QX11EmbedWidget','QDesignerFormEditorInterface','QIcon','QPrinter', - 'QStyleOptionViewItemV2','QX11Info','QDesignerFormWindowCursorInterface','QIconDragEvent','QProcess', - 'QStylePainter','QXmlAttributes','QDesignerFormWindowInterface','QIconEngine','QProgressBar', - 'QStylePlugin','QXmlContentHandler','QDesignerFormWindowManagerInterface','QIconEnginePlugin', - 'QProgressDialog','QSvgRenderer','QXmlDeclHandler','QDesignerMemberSheetExtension','QImage', - 'QProxyModel','QSvgWidget','QXmlDefaultHandler','QDesignerObjectInspectorInterface','QImageIOHandler', - 'QPushButton','QSyntaxHighlighter','QXmlDTDHandler','QDesignerPropertyEditorInterface','QImageIOPlugin', - 'QQueue','QSysInfo','QXmlEntityResolver','QDesignerPropertySheetExtension','QImageReader','QRadialGradient', - 'QSystemLocale','QXmlErrorHandler','QDesignerTaskMenuExtension','QImageWriter','QRadioButton', - 'QSystemTrayIcon','QXmlInputSource','QDesignerWidgetBoxInterface','QInputContext','QRasterPaintEngine', - 'QTabBar','QXmlLexicalHandler','QDesktopServices','QInputContextFactory','QReadLocker','QTabletEvent', - 'QXmlLocator','QDesktopWidget','QInputContextPlugin','QReadWriteLock','QTableView','QXmlNamespaceSupport', - 'QDial','QInputDialog','QRect','QTableWidget','QXmlParseException','QDialog','QInputEvent','QRectF', - 'QTableWidgetItem','QXmlReader','QDialogButtonBox','QInputMethodEvent','QRegExp', - 'QTableWidgetSelectionRange','QXmlSimpleReader' + "Q_UINT16", "Q_UINT32", "Q_UINT64", "Q_UINT8", "Q_ULLONG", + "Q_ULONG", "Q3Accel", "Q3Action", "Q3ActionGroup", "Q3AsciiBucket", + "Q3AsciiCache", "Q3AsciiCacheIterator", "Q3AsciiDict", + "Q3AsciiDictIterator", "Q3BaseBucket", "Q3BoxLayout", "Q3Button", + "Q3ButtonGroup", "Q3Cache", "Q3CacheIterator", "Q3Canvas", + "Q3CanvasEllipse", "Q3CanvasItem", "Q3CanvasItemList", + "Q3CanvasLine", "Q3CanvasPixmap", "Q3CanvasPixmapArray", + "Q3CanvasPolygon", "Q3CanvasPolygonalItem", "Q3CanvasRectangle", + "Q3CanvasSpline", "Q3CanvasSprite", "Q3CanvasText", "Q3CanvasView", + "Q3CheckListItem", "Q3CheckTableItem", "Q3CleanupHandler", + "Q3ColorDrag", "Q3ComboBox", "Q3ComboTableItem", "Q3CString", + "Q3DataBrowser", "Q3DataTable", "Q3DataView", "Q3DateEdit", + "Q3DateTimeEdit", "Q3DateTimeEditBase", "Q3DeepCopy", "Q3Dict", + "Q3DictIterator", "Q3Dns", "Q3DnsSocket", "Q3DockArea", + "Q3DockAreaLayout", "Q3DockWindow", "Q3DragObject", "Q3DropSite", + "Q3EditorFactory", "Q3FileDialog", "Q3FileIconProvider", + "Q3FilePreview", "Q3Frame", "Q3Ftp", "Q3GArray", "Q3GCache", + "Q3GCacheIterator", "Q3GDict", "Q3GDictIterator", "Q3GList", + "Q3GListIterator", "Q3GListStdIterator", "Q3Grid", "Q3GridLayout", + "Q3GridView", "Q3GroupBox", "Q3GVector", "Q3HBox", "Q3HBoxLayout", + "Q3HButtonGroup", "Q3Header", "Q3HGroupBox", "Q3Http", + "Q3HttpHeader", "Q3HttpRequestHeader", "Q3HttpResponseHeader", + "Q3IconDrag", "Q3IconDragItem", "Q3IconView", "Q3IconViewItem", + "Q3ImageDrag", "Q3IntBucket", "Q3IntCache", "Q3IntCacheIterator", + "Q3IntDict", "Q3IntDictIterator", "Q3ListBox", "Q3ListBoxItem", + "Q3ListBoxPixmap", "Q3ListBoxText", "Q3ListView", "Q3ListViewItem", + "Q3ListViewItemIterator", "Q3LNode", "Q3LocalFs", "Q3MainWindow", + "Q3MemArray", "Q3MimeSourceFactory", "Q3MultiLineEdit", + "Q3NetworkOperation", "Q3NetworkProtocol", "Q3NetworkProtocolDict", + "Q3NetworkProtocolFactory", "Q3NetworkProtocolFactoryBase", + "Q3ObjectDictionary", "Q3PaintDeviceMetrics", "Q3Painter", + "Q3Picture", "Q3PointArray", "Q3PolygonScanner", "Q3PopupMenu", + "Q3Process", "Q3ProgressBar", "Q3ProgressDialog", "Q3PtrBucket", + "Q3PtrCollection", "Q3PtrDict", "Q3PtrDictIterator", "Q3PtrList", + "Q3PtrListIterator", "Q3PtrListStdIterator", "Q3PtrQueue", + "Q3PtrStack", "Q3PtrVector", "Q3RangeControl", "Q3ScrollView", + "Q3Semaphore", "Q3ServerSocket", "Q3Shared", "Q3Signal", + "Q3SimpleRichText", "Q3SingleCleanupHandler", "Q3Socket", + "Q3SocketDevice", "Q3SortedList", "Q3SpinWidget", "Q3SqlCursor", + "Q3SqlEditorFactory", "Q3SqlFieldInfo", "Q3SqlFieldInfoList", + "Q3SqlForm", "Q3SqlPropertyMap", "Q3SqlRecordInfo", + "Q3SqlSelectCursor", "Q3StoredDrag", "Q3StrIList", "Q3StringBucket", + "Q3StrIVec", "Q3StrList", "Q3StrListIterator", "Q3StrVec", + "Q3StyleSheet", "Q3StyleSheetItem", "Q3SyntaxHighlighter", + "Q3TabDialog", "Q3Table", "Q3TableItem", "Q3TableSelection", + "Q3TextBrowser", "Q3TextDrag", "Q3TextEdit", + "Q3TextEditOptimPrivate", "Q3TextStream", "Q3TextView", + "Q3TimeEdit", "Q3ToolBar", "Q3TSFUNC", "Q3UriDrag", "Q3Url", + "Q3UrlOperator", "Q3ValueList", "Q3ValueListConstIterator", + "Q3ValueListIterator", "Q3ValueStack", "Q3ValueVector", "Q3VBox", + "Q3VBoxLayout", "Q3VButtonGroup", "Q3VGroupBox", "Q3WhatsThis", + "Q3WidgetStack", "Q3Wizard", "QAbstractButton", + "QAbstractEventDispatcher", "QAbstractExtensionFactory", + "QAbstractExtensionManager", "QAbstractFileEngine", + "QAbstractFileEngineHandler", "QAbstractFileEngineIterator", + "QAbstractFormBuilder", "QAbstractGraphicsShapeItem", + "QAbstractItemDelegate", "QAbstractItemModel", "QAbstractItemView", + "QAbstractListModel", "QAbstractMessageHandler", + "QAbstractNetworkCache", "QAbstractPageSetupDialog", + "QAbstractPrintDialog", "QAbstractProxyModel", + "QAbstractScrollArea", "QAbstractSlider", "QAbstractSocket", + "QAbstractSpinBox", "QAbstractTableModel", + "QAbstractTextDocumentLayout", "QAbstractUndoItem", + "QAbstractUriResolver", "QAbstractXmlNodeModel", + "QAbstractXmlReceiver", "QAccessible", "QAccessible2Interface", + "QAccessibleApplication", "QAccessibleBridge", + "QAccessibleBridgeFactoryInterface", "QAccessibleBridgePlugin", + "QAccessibleEditableTextInterface", "QAccessibleEvent", + "QAccessibleFactoryInterface", "QAccessibleInterface", + "QAccessibleInterfaceEx", "QAccessibleObject", + "QAccessibleObjectEx", "QAccessiblePlugin", + "QAccessibleSimpleEditableTextInterface", + "QAccessibleTableInterface", "QAccessibleTextInterface", + "QAccessibleValueInterface", "QAccessibleWidget", + "QAccessibleWidgetEx", "QAction", "QActionEvent", "QActionGroup", + "QApplication", "QArgument", "QAssistantClient", "QAtomicInt", + "QAtomicPointer", "QAuthenticator", "QBasicAtomicInt", + "QBasicAtomicPointer", "QBasicTimer", "QBitArray", "QBitmap", + "QBitRef", "QBool", "QBoxLayout", "QBrush", "QBrushData", "QBuffer", + "QButtonGroup", "QByteArray", "QByteArrayMatcher", "QByteRef", + "QCache", "QCalendarWidget", "QCDEStyle", "QChar", "QCharRef", + "QCheckBox", "QChildEvent", "QCleanlooksStyle", "QClipboard", + "QClipboardEvent", "QCloseEvent", "QColor", "QColorDialog", + "QColorGroup", "QColormap", "QColumnView", "QComboBox", + "QCommandLinkButton", "QCommonStyle", "QCompleter", + "QConicalGradient", "QConstString", "QContextMenuEvent", "QCOORD", + "QCoreApplication", "QCryptographicHash", "QCursor", "QCursorShape", + "QCustomEvent", "QDataStream", "QDataWidgetMapper", "QDate", + "QDateEdit", "QDateTime", "QDateTimeEdit", "QDB2Driver", + "QDB2Result", "QDBusAbstractAdaptor", "QDBusAbstractInterface", + "QDBusArgument", "QDBusConnection", "QDBusConnectionInterface", + "QDBusContext", "QDBusError", "QDBusInterface", "QDBusMessage", + "QDBusMetaType", "QDBusObjectPath", "QDBusPendingCall", + "QDBusPendingCallWatcher", "QDBusPendingReply", + "QDBusPendingReplyData", "QDBusReply", "QDBusServer", + "QDBusSignature", "QDBusVariant", "QDebug", + "QDesignerActionEditorInterface", "QDesignerBrushManagerInterface", + "QDesignerComponents", "QDesignerContainerExtension", + "QDesignerCustomWidgetCollectionInterface", + "QDesignerCustomWidgetInterface", "QDesignerDnDItemInterface", + "QDesignerDynamicPropertySheetExtension", "QDesignerExportWidget", + "QDesignerExtraInfoExtension", "QDesignerFormEditorInterface", + "QDesignerFormEditorPluginInterface", "QDesignerFormWindowCursorInterface", + "QDesignerFormWindowInterface", "QDesignerFormWindowManagerInterface", + "QDesignerFormWindowToolInterface", + "QDesignerIconCacheInterface", "QDesignerIntegrationInterface", + "QDesignerLanguageExtension", "QDesignerLayoutDecorationExtension", + "QDesignerMemberSheetExtension", "QDesignerMetaDataBaseInterface", + "QDesignerMetaDataBaseItemInterface", + "QDesignerObjectInspectorInterface", "QDesignerPromotionInterface", + "QDesignerPropertyEditorInterface", + "QDesignerPropertySheetExtension", "QDesignerResourceBrowserInterface", + "QDesignerTaskMenuExtension", "QDesignerWidgetBoxInterface", + "QDesignerWidgetDataBaseInterface", "QDesignerWidgetDataBaseItemInterface", + "QDesignerWidgetFactoryInterface", "QDesktopServices", + "QDesktopWidget", "QDial", "QDialog", "QDialogButtonBox", "QDir", + "QDirIterator", "QDirModel", "QDockWidget", "QDomAttr", + "QDomCDATASection", "QDomCharacterData", "QDomComment", + "QDomDocument", "QDomDocumentFragment", "QDomDocumentType", + "QDomElement", "QDomEntity", "QDomEntityReference", + "QDomImplementation", "QDomNamedNodeMap", "QDomNode", + "QDomNodeList", "QDomNotation", "QDomProcessingInstruction", + "QDomText", "QDoubleSpinBox", "QDoubleValidator", "QDrag", + "QDragEnterEvent", "QDragLeaveEvent", "QDragMoveEvent", + "QDragResponseEvent", "QDropEvent", "QDynamicPropertyChangeEvent", + "QErrorMessage", "QEvent", "QEventLoop", "QEventSizeOfChecker", + "QExplicitlySharedDataPointer", "QExtensionFactory", + "QExtensionManager", "QFactoryInterface", "QFile", "QFileDialog", + "QFileIconProvider", "QFileInfo", "QFileInfoList", + "QFileInfoListIterator", "QFileOpenEvent", "QFileSystemModel", + "QFileSystemWatcher", "QFlag", "QFlags", "QFocusEvent", + "QFocusFrame", "QFont", "QFontComboBox", "QFontDatabase", + "QFontDialog", "QFontInfo", "QFontMetrics", "QFontMetricsF", + "QForeachContainer", "QForeachContainerBase", "QFormBuilder", + "QFormLayout", "QFrame", "QFSFileEngine", "QFtp", "QFuture", + "QFutureInterface", "QFutureInterfaceBase", "QFutureIterator", + "QFutureSynchronizer", "QFutureWatcher", "QFutureWatcherBase", + "QGenericArgument", "QGenericReturnArgument", "QGLColormap", + "QGLContext", "QGLFormat", "QGLFramebufferObject", "QGlobalStatic", + "QGlobalStaticDeleter", "QGLPixelBuffer", "QGLWidget", "QGradient", + "QGradientStop", "QGradientStops", "QGraphicsEllipseItem", + "QGraphicsGridLayout", "QGraphicsItem", "QGraphicsItemAnimation", + "QGraphicsItemGroup", "QGraphicsLayout", "QGraphicsLayoutItem", + "QGraphicsLinearLayout", "QGraphicsLineItem", "QGraphicsPathItem", + "QGraphicsPixmapItem", "QGraphicsPolygonItem", + "QGraphicsProxyWidget", "QGraphicsRectItem", "QGraphicsScene", + "QGraphicsSceneContextMenuEvent", "QGraphicsSceneDragDropEvent", + "QGraphicsSceneEvent", "QGraphicsSceneHelpEvent", + "QGraphicsSceneHoverEvent", "QGraphicsSceneMouseEvent", + "QGraphicsSceneMoveEvent", "QGraphicsSceneResizeEvent", + "QGraphicsSceneWheelEvent", "QGraphicsSimpleTextItem", + "QGraphicsSvgItem", "QGraphicsTextItem", "QGraphicsView", + "QGraphicsWidget", "QGridLayout", "QGroupBox", "QGtkStyle", "QHash", + "QHashData", "QHashDummyNode", "QHashDummyValue", "QHashIterator", + "QHashNode", "QHBoxLayout", "QHeaderView", "QHelpContentItem", + "QHelpContentModel", "QHelpContentWidget", "QHelpEngine", + "QHelpEngineCore", "QHelpEvent", "QHelpGlobal", "QHelpIndexModel", + "QHelpIndexWidget", "QHelpSearchEngine", "QHelpSearchQuery", + "QHelpSearchQueryWidget", "QHelpSearchResultWidget", "QHideEvent", + "QHostAddress", "QHostInfo", "QHoverEvent", "QHttp", "QHttpHeader", + "QHttpRequestHeader", "QHttpResponseHeader", "QIBaseDriver", + "QIBaseResult", "QIcon", "QIconDragEvent", "QIconEngine", + "QIconEngineFactoryInterface", "QIconEngineFactoryInterfaceV2", + "QIconEnginePlugin", "QIconEnginePluginV2", "QIconEngineV2", + "QIconSet", "QImage", "QImageIOHandler", + "QImageIOHandlerFactoryInterface", "QImageIOPlugin", "QImageReader", + "QImageTextKeyLang", "QImageWriter", "QIncompatibleFlag", + "QInputContext", "QInputContextFactory", + "QInputContextFactoryInterface", "QInputContextPlugin", + "QInputDialog", "QInputEvent", "QInputMethodEvent", "Q_INT16", + "Q_INT32", "Q_INT64", "Q_INT8", "QInternal", "QIntForSize", + "QIntForType", "QIntValidator", "QIODevice", "Q_IPV6ADDR", + "QIPv6Address", "QItemDelegate", "QItemEditorCreator", + "QItemEditorCreatorBase", "QItemEditorFactory", "QItemSelection", + "QItemSelectionModel", "QItemSelectionRange", "QKeyEvent", + "QKeySequence", "QLabel", "QLatin1Char", "QLatin1String", "QLayout", + "QLayoutItem", "QLayoutIterator", "QLCDNumber", "QLibrary", + "QLibraryInfo", "QLine", "QLinearGradient", "QLineEdit", "QLineF", + "QLinkedList", "QLinkedListData", "QLinkedListIterator", + "QLinkedListNode", "QList", "QListData", "QListIterator", + "QListView", "QListWidget", "QListWidgetItem", "Q_LLONG", "QLocale", + "QLocalServer", "QLocalSocket", "Q_LONG", "QMacCompatGLenum", + "QMacCompatGLint", "QMacCompatGLuint", "QMacGLCompatTypes", + "QMacMime", "QMacPasteboardMime", "QMainWindow", "QMap", "QMapData", + "QMapIterator", "QMapNode", "QMapPayloadNode", "QMatrix", + "QMdiArea", "QMdiSubWindow", "QMenu", "QMenuBar", + "QMenubarUpdatedEvent", "QMenuItem", "QMessageBox", + "QMetaClassInfo", "QMetaEnum", "QMetaMethod", "QMetaObject", + "QMetaObjectExtraData", "QMetaProperty", "QMetaType", "QMetaTypeId", + "QMetaTypeId2", "QMimeData", "QMimeSource", "QModelIndex", + "QModelIndexList", "QMotifStyle", "QMouseEvent", "QMoveEvent", + "QMovie", "QMultiHash", "QMultiMap", "QMutableFutureIterator", + "QMutableHashIterator", "QMutableLinkedListIterator", + "QMutableListIterator", "QMutableMapIterator", + "QMutableSetIterator", "QMutableStringListIterator", + "QMutableVectorIterator", "QMutex", "QMutexLocker", "QMYSQLDriver", + "QMYSQLResult", "QNetworkAccessManager", "QNetworkAddressEntry", + "QNetworkCacheMetaData", "QNetworkCookie", "QNetworkCookieJar", + "QNetworkDiskCache", "QNetworkInterface", "QNetworkProxy", + "QNetworkProxyFactory", "QNetworkProxyQuery", "QNetworkReply", + "QNetworkRequest", "QNoDebug", "QNoImplicitBoolCast", "QObject", + "QObjectCleanupHandler", "QObjectData", "QObjectList", + "QObjectUserData", "QOCIDriver", "QOCIResult", "QODBCDriver", + "QODBCResult", "QPageSetupDialog", "QPaintDevice", "QPaintEngine", + "QPaintEngineState", "QPainter", "QPainterPath", + "QPainterPathPrivate", "QPainterPathStroker", "QPaintEvent", + "QPair", "QPalette", "QPen", "QPersistentModelIndex", "QPicture", + "QPictureFormatInterface", "QPictureFormatPlugin", "QPictureIO", + "Q_PID", "QPixmap", "QPixmapCache", "QPlainTextDocumentLayout", + "QPlainTextEdit", "QPlastiqueStyle", "QPluginLoader", "QPoint", + "QPointer", "QPointF", "QPolygon", "QPolygonF", "QPrintDialog", + "QPrintEngine", "QPrinter", "QPrinterInfo", "QPrintPreviewDialog", + "QPrintPreviewWidget", "QProcess", "QProgressBar", + "QProgressDialog", "QProxyModel", "QPSQLDriver", "QPSQLResult", + "QPushButton", "QQueue", "QRadialGradient", "QRadioButton", + "QReadLocker", "QReadWriteLock", "QRect", "QRectF", "QRegExp", + "QRegExpValidator", "QRegion", "QResizeEvent", "QResource", + "QReturnArgument", "QRgb", "QRubberBand", "QRunnable", + "QScriptable", "QScriptClass", "QScriptClassPropertyIterator", + "QScriptContext", "QScriptContextInfo", "QScriptContextInfoList", + "QScriptEngine", "QScriptEngineAgent", "QScriptEngineDebugger", + "QScriptExtensionInterface", "QScriptExtensionPlugin", + "QScriptString", "QScriptSyntaxCheckResult", "QScriptValue", + "QScriptValueIterator", "QScriptValueList", "QScrollArea", + "QScrollBar", "QSemaphore", "QSessionManager", "QSet", + "QSetIterator", "QSettings", "QSharedData", "QSharedDataPointer", + "QSharedMemory", "QSharedPointer", "QShortcut", "QShortcutEvent", + "QShowEvent", "QSignalMapper", "QSignalSpy", "QSimpleXmlNodeModel", + "QSize", "QSizeF", "QSizeGrip", "QSizePolicy", "QSlider", + "QSocketNotifier", "QSortFilterProxyModel", "QSound", + "QSourceLocation", "QSpacerItem", "QSpinBox", "QSplashScreen", + "QSplitter", "QSplitterHandle", "QSpontaneKeyEvent", "QSqlDatabase", + "QSqlDriver", "QSqlDriverCreator", "QSqlDriverCreatorBase", + "QSqlDriverFactoryInterface", "QSqlDriverPlugin", "QSqlError", + "QSqlField", "QSqlIndex", "QSQLite2Driver", "QSQLite2Result", + "QSQLiteDriver", "QSQLiteResult", "QSqlQuery", "QSqlQueryModel", + "QSqlRecord", "QSqlRelation", "QSqlRelationalDelegate", + "QSqlRelationalTableModel", "QSqlResult", "QSqlTableModel", "QSsl", + "QSslCertificate", "QSslCipher", "QSslConfiguration", "QSslError", + "QSslKey", "QSslSocket", "QStack", "QStackedLayout", + "QStackedWidget", "QStandardItem", "QStandardItemEditorCreator", + "QStandardItemModel", "QStatusBar", "QStatusTipEvent", + "QStdWString", "QString", "QStringList", "QStringListIterator", + "QStringListModel", "QStringMatcher", "QStringRef", "QStyle", + "QStyledItemDelegate", "QStyleFactory", "QStyleFactoryInterface", + "QStyleHintReturn", "QStyleHintReturnMask", + "QStyleHintReturnVariant", "QStyleOption", "QStyleOptionButton", + "QStyleOptionComboBox", "QStyleOptionComplex", + "QStyleOptionDockWidget", "QStyleOptionDockWidgetV2", + "QStyleOptionFocusRect", "QStyleOptionFrame", "QStyleOptionFrameV2", + "QStyleOptionFrameV3", "QStyleOptionGraphicsItem", + "QStyleOptionGroupBox", "QStyleOptionHeader", + "QStyleOptionMenuItem", "QStyleOptionProgressBar", + "QStyleOptionProgressBarV2", "QStyleOptionQ3DockWindow", + "QStyleOptionQ3ListView", "QStyleOptionQ3ListViewItem", + "QStyleOptionRubberBand", "QStyleOptionSizeGrip", + "QStyleOptionSlider", "QStyleOptionSpinBox", "QStyleOptionTab", + "QStyleOptionTabBarBase", "QStyleOptionTabBarBaseV2", + "QStyleOptionTabV2", "QStyleOptionTabV3", + "QStyleOptionTabWidgetFrame", "QStyleOptionTitleBar", + "QStyleOptionToolBar", "QStyleOptionToolBox", + "QStyleOptionToolBoxV2", "QStyleOptionToolButton", + "QStyleOptionViewItem", "QStyleOptionViewItemV2", + "QStyleOptionViewItemV3", "QStyleOptionViewItemV4", "QStylePainter", + "QStylePlugin", "QSvgGenerator", "QSvgRenderer", "QSvgWidget", + "QSyntaxHighlighter", "QSysInfo", "QSystemLocale", + "QSystemSemaphore", "QSystemTrayIcon", "Qt", "Qt3Support", + "QTabBar", "QTabletEvent", "QTableView", "QTableWidget", + "QTableWidgetItem", "QTableWidgetSelectionRange", "QTabWidget", + "QtAlgorithms", "QtAssistant", "QtCleanUpFunction", + "QtConcurrentFilter", "QtConcurrentMap", "QtConcurrentRun", + "QtContainerFwd", "QtCore", "QTcpServer", "QTcpSocket", "QtDBus", + "QtDebug", "QtDesigner", "QTDSDriver", "QTDSResult", + "QTemporaryFile", "QtEndian", "QTest", "QTestAccessibility", + "QTestAccessibilityEvent", "QTestData", "QTestDelayEvent", + "QTestEvent", "QTestEventList", "QTestEventLoop", + "QTestKeyClicksEvent", "QTestKeyEvent", "QTestMouseEvent", + "QtEvents", "QTextBlock", "QTextBlockFormat", "QTextBlockGroup", + "QTextBlockUserData", "QTextBoundaryFinder", "QTextBrowser", + "QTextCharFormat", "QTextCodec", "QTextCodecFactoryInterface", + "QTextCodecPlugin", "QTextCursor", "QTextDecoder", "QTextDocument", + "QTextDocumentFragment", "QTextDocumentWriter", "QTextEdit", + "QTextEncoder", "QTextFormat", "QTextFragment", "QTextFrame", + "QTextFrameFormat", "QTextFrameLayoutData", "QTextImageFormat", + "QTextInlineObject", "QTextIStream", "QTextItem", "QTextLayout", + "QTextLength", "QTextLine", "QTextList", "QTextListFormat", + "QTextObject", "QTextObjectInterface", "QTextOption", + "QTextOStream", "QTextStream", "QTextStreamFunction", + "QTextStreamManipulator", "QTextTable", "QTextTableCell", + "QTextTableCellFormat", "QTextTableFormat", "QtGlobal", "QtGui", + "QtHelp", "QThread", "QThreadPool", "QThreadStorage", + "QThreadStorageData", "QTime", "QTimeEdit", "QTimeLine", "QTimer", + "QTimerEvent", "QtMsgHandler", "QtNetwork", "QToolBar", + "QToolBarChangeEvent", "QToolBox", "QToolButton", "QToolTip", + "QtOpenGL", "QtPlugin", "QtPluginInstanceFunction", "QTransform", + "QTranslator", "QTreeView", "QTreeWidget", "QTreeWidgetItem", + "QTreeWidgetItemIterator", "QTS", "QtScript", "QtScriptTools", + "QtSql", "QtSvg", "QtTest", "QtUiTools", "QtWebKit", "QtXml", + "QtXmlPatterns", "QTypeInfo", "QUdpSocket", "QUiLoader", + "QUintForSize", "QUintForType", "QUndoCommand", "QUndoGroup", + "QUndoStack", "QUndoView", "QUnixPrintWidget", "QUpdateLaterEvent", + "QUrl", "QUrlInfo", "QUuid", "QValidator", "QVariant", + "QVariantComparisonHelper", "QVariantHash", "QVariantList", + "QVariantMap", "QVarLengthArray", "QVBoxLayout", "QVector", + "QVectorData", "QVectorIterator", "QVectorTypedData", + "QWaitCondition", "QWeakPointer", "QWebDatabase", "QWebFrame", + "QWebHistory", "QWebHistoryInterface", "QWebHistoryItem", + "QWebHitTestResult", "QWebPage", "QWebPluginFactory", + "QWebSecurityOrigin", "QWebSettings", "QWebView", "QWhatsThis", + "QWhatsThisClickedEvent", "QWheelEvent", "QWidget", "QWidgetAction", + "QWidgetData", "QWidgetItem", "QWidgetItemV2", "QWidgetList", + "QWidgetMapper", "QWidgetSet", "QWindowsCEStyle", "QWindowsMime", + "QWindowsMobileStyle", "QWindowsStyle", "QWindowStateChangeEvent", + "QWindowsVistaStyle", "QWindowsXPStyle", "QWizard", "QWizardPage", + "QWMatrix", "QWorkspace", "QWriteLocker", "QX11EmbedContainer", + "QX11EmbedWidget", "QX11Info", "QXmlAttributes", + "QXmlContentHandler", "QXmlDeclHandler", "QXmlDefaultHandler", + "QXmlDTDHandler", "QXmlEntityResolver", "QXmlErrorHandler", + "QXmlFormatter", "QXmlInputSource", "QXmlItem", + "QXmlLexicalHandler", "QXmlLocator", "QXmlName", "QXmlNamePool", + "QXmlNamespaceSupport", "QXmlNodeModelIndex", "QXmlParseException", + "QXmlQuery", "QXmlReader", "QXmlResultItems", "QXmlSerializer", + "QXmlSimpleReader", "QXmlStreamAttribute", "QXmlStreamAttributes", + "QXmlStreamEntityDeclaration", "QXmlStreamEntityDeclarations", + "QXmlStreamEntityResolver", "QXmlStreamNamespaceDeclaration", + "QXmlStreamNamespaceDeclarations", "QXmlStreamNotationDeclaration", + "QXmlStreamNotationDeclarations", "QXmlStreamReader", + "QXmlStreamStringRef", "QXmlStreamWriter" ) ), 'SYMBOLS' => array( diff --git a/inc/geshi/cpp.php b/inc/geshi/cpp.php index 264ef638d..30f5a93f2 100644 --- a/inc/geshi/cpp.php +++ b/inc/geshi/cpp.php @@ -7,7 +7,7 @@ * - M. Uli Kusterer (witness.of.teachtext@gmx.net) * - Jack Lloyd (lloyd@randombit.net) * Copyright: (c) 2004 Dennis Bayer, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/09/27 * * C++ language file for GeSHi. @@ -97,7 +97,7 @@ $language_data = array ( 'EXIT_FAILURE', 'EXIT_SUCCESS', 'RAND_MAX', 'CLOCKS_PER_SEC', 'virtual', 'public', 'private', 'protected', 'template', 'using', 'namespace', 'try', 'catch', 'inline', 'dynamic_cast', 'const_cast', 'reinterpret_cast', - 'static_cast', 'explicit', 'friend', 'wchar_t', 'typename', 'typeid', 'class' + 'static_cast', 'explicit', 'friend', 'typename', 'typeid', 'class' ), 3 => array( 'cin', 'cerr', 'clog', 'cout', 'delete', 'new', 'this', @@ -126,7 +126,21 @@ $language_data = array ( 'register', 'short', 'shortint', 'signed', 'static', 'struct', 'typedef', 'union', 'unsigned', 'void', 'volatile', 'extern', 'jmp_buf', 'signal', 'raise', 'va_list', 'ptrdiff_t', 'size_t', 'FILE', 'fpos_t', - 'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm', + 'div_t', 'ldiv_t', 'clock_t', 'time_t', 'tm', 'wchar_t', + + 'int8', 'int16', 'int32', 'int64', + 'uint8', 'uint16', 'uint32', 'uint64', + + 'int_fast8_t', 'int_fast16_t', 'int_fast32_t', 'int_fast64_t', + 'uint_fast8_t', 'uint_fast16_t', 'uint_fast32_t', 'uint_fast64_t', + + 'int_least8_t', 'int_least16_t', 'int_least32_t', 'int_least64_t', + 'uint_least8_t', 'uint_least16_t', 'uint_least32_t', 'uint_least64_t', + + 'int8_t', 'int16_t', 'int32_t', 'int64_t', + 'uint8_t', 'uint16_t', 'uint32_t', 'uint64_t', + + 'intmax_t', 'uintmax_t', 'intptr_t', 'uintptr_t' ), ), 'SYMBOLS' => array( diff --git a/inc/geshi/csharp.php b/inc/geshi/csharp.php index 0f8a5e2a3..6a9c3c2bd 100644 --- a/inc/geshi/csharp.php +++ b/inc/geshi/csharp.php @@ -3,16 +3,19 @@ * csharp.php * ---------- * Author: Alan Juden (alan@judenware.org) + * Revised by: Michael Mol (mikemol@gmail.com) * Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/06/04 * * C# language file for GeSHi. * * CHANGES * ------- + * 2009/04/03 (1.0.8.6) + * - Added missing keywords identified by Rosetta Code users. * 2008/05/25 (1.0.7.22) - * - Added highlighting of using and namespace directives as non-OOP + * - Added highlighting of using and namespace directives as non-OOP * 2005/01/05 (1.0.1) * - Used hardquote support for @"..." strings (Cliff Stanford) * 2004/11/27 (1.0.0) @@ -59,12 +62,12 @@ $language_data = array ( 1 => array( 'as', 'auto', 'base', 'break', 'case', 'catch', 'const', 'continue', 'default', 'do', 'else', 'event', 'explicit', 'extern', 'false', - 'finally', 'fixed', 'for', 'foreach', 'goto', 'if', 'implicit', - 'in', 'internal', 'lock', 'namespace', 'null', 'operator', 'out', - 'override', 'params', 'partial', 'private', 'protected', 'public', - 'readonly', 'ref', 'return', 'sealed', 'stackalloc', 'static', - 'switch', 'this', 'throw', 'true', 'try', 'unsafe', 'using', - 'virtual', 'void', 'while' + 'finally', 'fixed', 'for', 'foreach', 'from', 'goto', 'if', + 'implicit', 'in', 'internal', 'lock', 'namespace', 'null', + 'operator', 'out', 'override', 'params', 'partial', 'private', + 'protected', 'public', 'readonly', 'ref', 'return', 'sealed', + 'select', 'stackalloc', 'static', 'switch', 'this', 'throw', 'true', + 'try', 'unsafe', 'using', 'virtual', 'where', 'while', 'yield' ), 2 => array( '#elif', '#endif', '#endregion', '#else', '#error', '#define', '#if', @@ -76,7 +79,7 @@ $language_data = array ( 4 => array( 'bool', 'byte', 'char', 'class', 'decimal', 'delegate', 'double', 'enum', 'float', 'int', 'interface', 'long', 'object', 'sbyte', - 'short', 'string', 'struct', 'uint', 'ulong', 'ushort' + 'short', 'string', 'struct', 'uint', 'ulong', 'ushort', 'void' ), 5 => array( 'Microsoft.Win32', @@ -169,7 +172,7 @@ $language_data = array ( ), 'SYMBOLS' => array( '+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!', ':', ';', - '(', ')', '{', '}', '[', ']', '|' + '(', ')', '{', '}', '[', ']', '|', '.' ), 'CASE_SENSITIVE' => array( GESHI_COMMENTS => false, @@ -181,10 +184,10 @@ $language_data = array ( ), 'STYLES' => array( 'KEYWORDS' => array( - 1 => 'color: #0600FF;', + 1 => 'color: #0600FF; font-weight: bold;', 2 => 'color: #FF8000; font-weight: bold;', 3 => 'color: #008000;', - 4 => 'color: #FF0000;', + 4 => 'color: #6666cc; font-weight: bold;', 5 => 'color: #000000;' ), 'COMMENTS' => array( @@ -198,7 +201,7 @@ $language_data = array ( 'HARD' => 'color: #008080; font-weight: bold;' ), 'BRACKETS' => array( - 0 => 'color: #000000;' + 0 => 'color: #008000;' ), 'STRINGS' => array( 0 => 'color: #666666;', @@ -242,7 +245,7 @@ $language_data = array ( 'PARSER_CONTROL' => array( 'KEYWORDS' => array( 'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\|\#>|^])", - 'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_<\|%\\-])" + 'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_%\\-])" ) ) ); diff --git a/inc/geshi/css.php b/inc/geshi/css.php index f6386bdc0..51f261486 100644 --- a/inc/geshi/css.php +++ b/inc/geshi/css.php @@ -4,7 +4,7 @@ * ------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/06/18 * * CSS language file for GeSHi. diff --git a/inc/geshi/cuesheet.php b/inc/geshi/cuesheet.php new file mode 100644 index 000000000..81c607c10 --- /dev/null +++ b/inc/geshi/cuesheet.php @@ -0,0 +1,138 @@ +<?php +/************************************************************************************* + * cuesheet.php + * ---------- + * Author: Benny Baumann (benbe@geshi.org) + * Copyright: (c) 2009 Benny Baumann (http://qbnz.com/highlighter/) + * Release Version: 1.0.8.8 + * Date Started: 2009/12/21 + * + * Cuesheet language file for GeSHi. + * + * CHANGES + * ------- + * 2009/12/21 (1.0.8.6) + * - First Release + * + * TODO (updated 2009/12/21) + * ------------------------- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'Cuesheet', + 'COMMENT_SINGLE' => array(1 => ';'), + 'COMMENT_MULTI' => array(), + 'COMMENT_REGEXP' => array( + //Single-Line Comments using REM command + 1 => "/(?<=\bREM\b).*?$/im", + ), + 'CASE_KEYWORDS' => GESHI_CAPS_UPPER, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + 'CATALOG','CDTEXTFILE','FILE','FLAGS','INDEX','ISRC','PERFORMER', + 'POSTGAP','PREGAP','REM','SONGWRITER','TITLE','TRACK' + ), + 2 => array( + 'AIFF', 'BINARY', 'MOTOROLA', 'MP3', 'WAVE' + ), + 3 => array( + '4CH', 'DCP', 'PRE', 'SCMS' + ), + 4 => array( + 'AUDIO', 'CDG', 'MODE1/2048', 'MODE1/2336', 'MODE2/2336', + 'MODE2/2352', 'CDI/2336', 'CDI/2352' + ) + ), + 'SYMBOLS' => array( + ':' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #000000; font-weight: bold;', + 2 => 'color: #000066; font-weight: bold;', + 3 => 'color: #000066; font-weight: bold;', + 4 => 'color: #000066; font-weight: bold;' + ), + 'COMMENTS' => array( + 1 => 'color: #808080;', + ), + 'BRACKETS' => array( + 0 => 'color: #0000ff;' + ), + 'STRINGS' => array( + 0 => 'color: #0000ff;' + ), + 'NUMBERS' => array( + 0 => 'color: #006600;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #000066;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099;' + ), + 'SCRIPT' => array( + ), + 'REGEXPS' => array( + 1 => 'color: #000099;', + 2 => 'color: #009900;', + ) + ), + 'URLS' => array( + 1 => 'http://digitalx.org/cuesheetsyntax.php#{FNAMEL}', + 2 => '', + 3 => '', + 4 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + 2 => '\b[A-Za-z0-9]{5}\d{7}\b', + 1 => '(?<=[\s:]|^)\d+(?=[\s:]|$)', + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 2, + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 'DISALLOWED_BEFORE' => '(?<![\w\.])', + 'DISALLOWED_AFTER' => '(?![\w\.])', + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/d.php b/inc/geshi/d.php index 691091809..5ef349d52 100644 --- a/inc/geshi/d.php +++ b/inc/geshi/d.php @@ -4,7 +4,7 @@ * ----- * Author: Thomas Kuehne (thomas@kuehne.cn) * Copyright: (c) 2005 Thomas Kuehne (http://thomas.kuehne.cn/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2005/04/22 * * D language file for GeSHi. diff --git a/inc/geshi/dcs.php b/inc/geshi/dcs.php index 0f6bad372..4762ed906 100644 --- a/inc/geshi/dcs.php +++ b/inc/geshi/dcs.php @@ -4,7 +4,7 @@ * --------------------------------- * Author: Stelio Passaris (GeSHi@stelio.net) * Copyright: (c) 2009 Stelio Passaris (http://stelio.net/stiki/GeSHi) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2009/01/20 * * DCS language file for GeSHi. @@ -59,9 +59,6 @@ $language_data = array ( ), 'COMMENT_MULTI' => array( ), - 'HARDQUOTE' => array( - ), - 'HARDESCAPE' => '', 'COMMENT_REGEXP' => array( // Highlight embedded C code in a separate color: 2 => '/\bINSERT_C_CODE\b.*?\bEND_C_CODE\b/ims' diff --git a/inc/geshi/delphi.php b/inc/geshi/delphi.php index 9d7ad7e7d..ff54af8f9 100644 --- a/inc/geshi/delphi.php +++ b/inc/geshi/delphi.php @@ -4,7 +4,7 @@ * ---------- * Author: J�rja Norbert (jnorbi@vipmail.hu), Benny Baumann (BenBE@omorphia.de) * Copyright: (c) 2004 J�rja Norbert, Benny Baumann (BenBE@omorphia.de), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/07/26 * * Delphi (Object Pascal) language file for GeSHi. @@ -68,7 +68,7 @@ $language_data = array ( 'Repeat', 'Requires', 'Resourcestring', 'Set', 'Shl', 'Shr', 'Then', 'ThreadVar', 'To', 'Try', 'Type', 'Unit', 'Until', 'Uses', 'Var', 'Virtual', 'While', 'With', 'Xor', 'assembler', 'far', - 'near', 'pascal', 'register', 'cdecl', 'safecall', 'stdcall', 'varargs' + 'near', 'pascal', 'cdecl', 'safecall', 'stdcall', 'varargs' ), 2 => array( 'nil', 'false', 'self', 'true', 'var', 'type', 'const' diff --git a/inc/geshi/diff.php b/inc/geshi/diff.php index b4703c1d2..5570406da 100644 --- a/inc/geshi/diff.php +++ b/inc/geshi/diff.php @@ -4,7 +4,7 @@ * -------- * Author: Conny Brunnkvist (conny@fuchsia.se), W. Tasin (tasin@fhm.edu) * Copyright: (c) 2004 Fuchsia Open Source Solutions (http://www.fuchsia.se/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/12/29 * * Diff-output language file for GeSHi. @@ -115,7 +115,7 @@ $language_data = array ( 0 => "[0-9,]+[acd][0-9,]+", //Removed lines 1 => array( - GESHI_SEARCH => '^\\<.*$', + GESHI_SEARCH => '(^|(?<=\A\s))\\<.*$', GESHI_REPLACE => '\\0', GESHI_MODIFIERS => 'm', GESHI_BEFORE => '', @@ -123,7 +123,7 @@ $language_data = array ( ), //Inserted lines 2 => array( - GESHI_SEARCH => '^\\>.*$', + GESHI_SEARCH => '(^|(?<=\A\s))\\>.*$', GESHI_REPLACE => '\\0', GESHI_MODIFIERS => 'm', GESHI_BEFORE => '', @@ -131,7 +131,7 @@ $language_data = array ( ), //Location line 3 => array( - GESHI_SEARCH => '^[\\-]{3}\\s.*$', + GESHI_SEARCH => '(^|(?<=\A\s))-{3}\\s.*$', GESHI_REPLACE => '\\0', GESHI_MODIFIERS => 'm', GESHI_BEFORE => '', @@ -139,7 +139,7 @@ $language_data = array ( ), //Inserted line 4 => array( - GESHI_SEARCH => '^(\\+){3}\\s.*$', + GESHI_SEARCH => '(^|(?<=\A\s))(\\+){3}\\s.*$', GESHI_REPLACE => '\\0', GESHI_MODIFIERS => 'm', GESHI_BEFORE => '', @@ -147,7 +147,7 @@ $language_data = array ( ), //Modified line 5 => array( - GESHI_SEARCH => '^\\!.*$', + GESHI_SEARCH => '(^|(?<=\A\s))\\!.*$', GESHI_REPLACE => '\\0', GESHI_MODIFIERS => 'm', GESHI_BEFORE => '', @@ -155,7 +155,7 @@ $language_data = array ( ), //File specification 6 => array( - GESHI_SEARCH => '^[\\@]{2}.*$', + GESHI_SEARCH => '(^|(?<=\A\s))[\\@]{2}.*$', GESHI_REPLACE => '\\0', GESHI_MODIFIERS => 'm', GESHI_BEFORE => '', @@ -163,7 +163,7 @@ $language_data = array ( ), //Removed line 7 => array( - GESHI_SEARCH => '^\\-.*$', + GESHI_SEARCH => '(^|(?<=\A\s))\\-.*$', GESHI_REPLACE => '\\0', GESHI_MODIFIERS => 'm', GESHI_BEFORE => '', @@ -171,7 +171,7 @@ $language_data = array ( ), //Inserted line 8 => array( - GESHI_SEARCH => '^\\+.*$', + GESHI_SEARCH => '(^|(?<=\A\s))\\+.*$', GESHI_REPLACE => '\\0', GESHI_MODIFIERS => 'm', GESHI_BEFORE => '', @@ -179,7 +179,7 @@ $language_data = array ( ), //File specification 9 => array( - GESHI_SEARCH => '^(\\*){3}\\s.*$', + GESHI_SEARCH => '(^|(?<=\A\s))(\\*){3}\\s.*$', GESHI_REPLACE => '\\0', GESHI_MODIFIERS => 'm', GESHI_BEFORE => '', @@ -193,4 +193,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/div.php b/inc/geshi/div.php index 0e249740c..276e9e882 100644 --- a/inc/geshi/div.php +++ b/inc/geshi/div.php @@ -4,7 +4,7 @@ * --------------------------------- * Author: Gabriel Lorenzo (ermakina@gmail.com) * Copyright: (c) 2005 Gabriel Lorenzo (http://ermakina.gazpachito.net) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2005/06/19 * * DIV language file for GeSHi. diff --git a/inc/geshi/dos.php b/inc/geshi/dos.php index bec3de129..9484d3766 100644 --- a/inc/geshi/dos.php +++ b/inc/geshi/dos.php @@ -4,7 +4,7 @@ * ------- * Author: Alessandro Staltari (staltari@geocities.com) * Copyright: (c) 2005 Alessandro Staltari (http://www.geocities.com/SiliconValley/Vista/8155/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2005/07/05 * * DOS language file for GeSHi. @@ -64,7 +64,10 @@ $language_data = array ( 'COMMENT_SINGLE' => array(), 'COMMENT_MULTI' => array(), //DOS comment lines - 'COMMENT_REGEXP' => array(1 => "/^\s*@?REM.*$/mi"), + 'COMMENT_REGEXP' => array( + 1 => "/^\s*@?REM\b.*$/mi", + 2 => "/^\s*::.*$/m" + ), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array(), 'ESCAPE_CHAR' => '', @@ -114,7 +117,8 @@ $language_data = array ( 4 => 'color: #0000ff; font-weight: bold;' ), 'COMMENTS' => array( - 1 => 'color: #808080; font-style: italic;' + 1 => 'color: #808080; font-style: italic;', + 2 => 'color: #b100b1; font-style: italic;', ), 'ESCAPE_CHAR' => array( 0 => 'color: #ff0000; font-weight: bold;' @@ -195,4 +199,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/dot.php b/inc/geshi/dot.php index c45a74af7..04b6792d7 100644 --- a/inc/geshi/dot.php +++ b/inc/geshi/dot.php @@ -4,7 +4,7 @@ * --------------------------------- * Author: Adrien Friggeri (adrien@friggeri.net) * Copyright: (c) 2007 Adrien Friggeri (http://www.friggeri.net) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2007/05/30 * * dot language file for GeSHi. @@ -63,14 +63,14 @@ $language_data = array ( 'node', 'graph', 'digraph', 'strict', 'edge', 'subgraph' ), 3 => array( - 'Mcircle', 'Mdiamond', 'Mrecord', 'Msquare', 'TRUE', 'auto', 'back', - 'bold', 'both', 'box', 'circle', 'compress', 'dashed', 'diamond', 'dot', - 'dotted', 'doublecircle', 'doubleoctagon', 'egg', 'ellipse', 'epsf', 'false', - 'fill', 'filled', 'forward', 'global', 'hexagon', 'house', 'inv', 'invdot', - 'invhouse', 'invis', 'invodot', 'invtrapezium', 'invtriangle', 'local', 'max', - 'min', 'none', 'normal', 'octagon', 'odot', 'out', 'parallelogram', 'plaintext', - 'polygon', 'record', 'same', 'solid', 'trapezium', 'triangle', 'tripleoctagon', - 'true' + 'Mcircle', 'Mdiamond', 'Mrecord', 'Msquare', 'auto', 'back', 'bold', + 'both', 'box', 'circle', 'compress', 'dashed', 'diamond', 'dot', + 'dotted', 'doublecircle', 'doubleoctagon', 'egg', 'ellipse', 'epsf', + 'false', 'fill', 'filled', 'forward', 'global', 'hexagon', 'house', + 'inv', 'invdot', 'invhouse', 'invis', 'invodot', 'invtrapezium', + 'invtriangle', 'local', 'max', 'min', 'none', 'normal', 'octagon', + 'odot', 'out', 'parallelogram', 'plaintext', 'polygon', 'record', + 'same', 'solid', 'trapezium', 'triangle', 'tripleoctagon', 'true' ), 4 => array( 'aliceblue', 'antiquewhite', 'aquamarine', 'azure', 'beige', 'bisque', 'black', @@ -161,4 +161,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/ecmascript.php b/inc/geshi/ecmascript.php new file mode 100644 index 000000000..3e61b57cb --- /dev/null +++ b/inc/geshi/ecmascript.php @@ -0,0 +1,210 @@ +<?php +/************************************************************************************* + * ecmascript.php + * -------------- + * Author: Michel Mariani (http://www.tonton-pixel.com/site/) + * Copyright: (c) 2010 Michel Mariani (http://www.tonton-pixel.com/site/) + * Release Version: 1.0.8.8 + * Date Started: 2010/01/08 + * + * ECMAScript language file for GeSHi. + * + * CHANGES + * ------- + * 2010/01/08 (1.0.8.6) + * - First Release + * - Adapted from javascript.php to support plain ECMAScript/JavaScript (no HTML, no DOM) + * - Fixed regular expression for 'COMMENT_REGEXP' to exclude 'COMMENT_MULTI' syntax + * - Added '~' and removed '@' from 'SYMBOLS' + * - Cleaned up and expanded the list of 'KEYWORDS' + * - Added support for 'ESCAPE_REGEXP' and 'NUMBERS' (from c.php) + * - Selected colors to match my web site color chart + * - Added full number highlighting in all C language style formats + * - Added highlighting of escape sequences in strings, in all C language style formats including Unicode (\uXXXX). + * + * TODO (updated 2010/01/08) + * ------------------------- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'ECMAScript', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array('/*' => '*/'), + // Regular Expression Literals + 'COMMENT_REGEXP' => array(2 => "/(?<=[\\s^])s\\/(?:\\\\.|(?!\n)[^\\*\\/\\\\])+\\/(?:\\\\.|(?!\n)[^\\*\\/\\\\])+\\/[gimsu]*(?=[\\s$\\.\\;])|(?<=[\\s^(=])m?\\/(?:\\\\.|(?!\n)[^\\*\\/\\\\])+\\/[gimsu]*(?=[\\s$\\.\\,\\;\\)])/iU"), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'ESCAPE_REGEXP' => array( + //Simple Single Char Escapes + 1 => "#\\\\[\\\\abfnrtv\'\"?\n]#i", + //Hexadecimal Char Specs + 2 => "#\\\\x[\da-fA-F]{2}#", + //Hexadecimal Char Specs + 3 => "#\\\\u[\da-fA-F]{4}#", + //Hexadecimal Char Specs + 4 => "#\\\\U[\da-fA-F]{8}#", + //Octal Char Specs + 5 => "#\\\\[0-7]{1,3}#" + ), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_INT_CSTYLE | GESHI_NUMBER_BIN_PREFIX_0B | + GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_NONSCI | + GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO, + 'KEYWORDS' => array( + 1 => array( // Reserved literals + 'false', 'true', + 'null' + ), + 2 => array( // Main keywords + 'break', 'case', 'catch', 'continue', 'default', 'delete', 'do', 'else', + 'finally', 'for', 'function', 'if', 'in', 'instanceof', 'new', 'return', + 'switch', 'this', 'throw', 'try', 'typeof', 'var', 'void', 'while', + 'with' + ), + 3 => array( // Extra keywords or keywords reserved for future use + 'abstract', 'as', 'boolean', 'byte', 'char', 'class', 'const', 'debugger', + 'double', 'enum', 'export', 'extends', 'final', 'float', 'goto', 'implements', + 'import', 'int', 'interface', 'is', 'long', 'native', 'namespace', 'package', + 'private', 'protected', 'public', 'short', 'static', 'super', 'synchronized', 'throws', + 'transient', 'use', 'volatile' + ), + 4 => array( // Operators + 'get', 'set' + ), + 5 => array( // Built-in object classes + 'Array', 'Boolean', 'Date', 'EvalError', 'Error', 'Function', 'Math', 'Number', + 'Object', 'RangeError', 'ReferenceError', 'RegExp', 'String', 'SyntaxError', 'TypeError', 'URIError' + ), + 6 => array( // Global properties + 'Infinity', 'NaN', 'undefined' + ), + 7 => array( // Global methods + 'decodeURI', 'decodeURIComponent', 'encodeURI', 'encodeURIComponent', + 'eval', 'isFinite', 'isNaN', 'parseFloat', 'parseInt', + // The escape and unescape functions do not work properly for non-ASCII characters and have been deprecated. + // In JavaScript 1.5 and later, use encodeURI, decodeURI, encodeURIComponent, and decodeURIComponent. + 'escape', 'unescape' + ), + 8 => array( // Function's arguments + 'arguments' + ) + ), + 'SYMBOLS' => array( + '(', ')', '[', ']', '{', '}', + '+', '-', '*', '/', '%', + '!', '.', '&', '|', '^', + '<', '>', '=', '~', + ',', ';', '?', ':' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + 5 => true, + 6 => true, + 7 => true, + 8 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #009999;', + 2 => 'color: #1500C8;', + 3 => 'color: #1500C8;', + 4 => 'color: #1500C8;', + 5 => 'color: #1500C8;', + 6 => 'color: #1500C8;', + 7 => 'color: #1500C8;', + 8 => 'color: #1500C8;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 2 => 'color: #CC0000;', + 'MULTI' => 'color: #666666; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #3366CC;', + 1 => 'color: #3366CC;', + 2 => 'color: #3366CC;', + 3 => 'color: #3366CC;', + 4 => 'color: #3366CC;', + 5 => 'color: #3366CC;', + 'HARD' => '', + ), + 'BRACKETS' => array( + 0 => 'color: #008800;' + ), + 'STRINGS' => array( + 0 => 'color: #9900FF;' + ), + 'NUMBERS' => array( + 0 => 'color: #FF00FF;', + GESHI_NUMBER_BIN_PREFIX_0B => 'color: #FF00FF;', + GESHI_NUMBER_OCT_PREFIX => 'color: #FF00FF;', + GESHI_NUMBER_HEX_PREFIX => 'color: #FF00FF;', + GESHI_NUMBER_FLT_SCI_SHORT => 'color: #FF00FF;', + GESHI_NUMBER_FLT_SCI_ZERO => 'color: #FF00FF;', + GESHI_NUMBER_FLT_NONSCI_F => 'color: #FF00FF;', + GESHI_NUMBER_FLT_NONSCI => 'color: #FF00FF;' + ), + 'METHODS' => array( + 1 => 'color: #660066;' + ), + 'SYMBOLS' => array( + 0 => 'color: #339933;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + 0 => '', + 1 => '', + 2 => '', + 3 => '' + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4 +); + +?>
\ No newline at end of file diff --git a/inc/geshi/eiffel.php b/inc/geshi/eiffel.php index ab7abf974..89cef7965 100644 --- a/inc/geshi/eiffel.php +++ b/inc/geshi/eiffel.php @@ -4,7 +4,7 @@ * ---------- * Author: Zoran Simic (zsimic@axarosenberg.com) * Copyright: (c) 2005 Zoran Simic - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2005/06/30 * * Eiffel language file for GeSHi. diff --git a/inc/geshi/email.php b/inc/geshi/email.php index a0a744c6d..91a104840 100644 --- a/inc/geshi/email.php +++ b/inc/geshi/email.php @@ -4,7 +4,7 @@ * --------------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/10/19 * * Email (mbox \ eml \ RFC format) language file for GeSHi. @@ -51,10 +51,11 @@ $language_data = array ( 'HTTP', 'SMTP', 'ASMTP', 'ESMTP' ), 2 => array( - 'Content-Type','Content-Transfer-Encoding','Content-Disposition', - 'Delivered-To','Dkim-Signature','Domainkey-Signature','In-Reply-To', - 'Message-Id','MIME-Version','Received','Received-SPF','References', - 'Resend-From','Resend-To','Return-Path' + 'Authentication-Results','Content-Description','Content-Type', + 'Content-Disposition','Content-Transfer-Encoding','Delivered-To', + 'Dkim-Signature','Domainkey-Signature','In-Reply-To','Message-Id', + 'MIME-Version','OpenPGP','Received','Received-SPF','References', + 'Resend-From','Resend-To','Return-Path','User-Agent' ), 3 => array( 'Date','From','Subject','To', @@ -131,7 +132,7 @@ $language_data = array ( ), //Email-Adresses or Mail-IDs 2 => array( - GESHI_SEARCH => "\b[\w\.]+@\w+(?:(?:\.\w+)*\.\w{2,4})?", + GESHI_SEARCH => "\b[\w\.\-]+@\w+(?:(?:\.\w+)*\.\w{2,4})?", GESHI_REPLACE => "\\0", GESHI_MODIFIERS => "mi", GESHI_BEFORE => "", @@ -159,7 +160,7 @@ $language_data = array ( ), //Field-Assignments 5 => array( - GESHI_SEARCH => "(?<=\s)[A-Z0-9\-]+(?==(?!\s|$))", + GESHI_SEARCH => "(?<=\s)[A-Z0-9\-\.]+(?==(?:$|\s$|[^\s=]))", GESHI_REPLACE => "\\0", GESHI_MODIFIERS => "mi", GESHI_BEFORE => "", @@ -177,7 +178,7 @@ $language_data = array ( ), 'STRICT_MODE_APPLIES' => GESHI_ALWAYS, 'SCRIPT_DELIMITERS' => array( - 0 => "/(?<start>^)[A-Z][a-zA-Z0-9\-]*\s*:\s*(?:.|(?=\n\s)\n)*(?<end>$)/m" + 0 => "/(?P<start>^)[A-Z][a-zA-Z0-9\-]*\s*:\s*(?:.|(?=\n\s)\n)*(?P<end>$)/m" ), 'HIGHLIGHT_STRICT_BLOCK' => array( 0 => true, diff --git a/inc/geshi/erlang.php b/inc/geshi/erlang.php new file mode 100644 index 000000000..d98de2f37 --- /dev/null +++ b/inc/geshi/erlang.php @@ -0,0 +1,441 @@ +<?php +/************************************************************************************* + * erlang.php + * -------- + * Author: Benny Baumann (BenBE@geshi.org) + * Contributions: + * - Uwe Dauernheim (uwe@dauernheim.net) + * - Dan Forest-Barbier (dan@twisted.in) + * Copyright: (c) 2008 Uwe Dauernheim (http://www.kreisquadratur.de/) + * Release Version: 1.0.8.8 + * Date Started: 2008-09-27 + * + * Erlang language file for GeSHi. + * + * CHANGES + * ------- + * 2009/05/02 (1.0.8.3) + * - Now using 'PARSER_CONTROL' instead of huge rexgexps, better and cleaner + * + * 2009/04/26 (1.0.8.3) + * - Only link to existing docs / Fixes + * + * 2008-09-28 (1.0.0.1) + * [!] Bug fixed with keyword module. + * [+] Added more function names + * + * 2008-09-27 (1.0.0) + * [ ] First Release + * + * TODO (updated 2008-09-27) + * ------------------------- + * [!] Stop ';' from being transformed to '<SEMI>' + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array( + 'LANG_NAME' => 'Erlang', + 'COMMENT_SINGLE' => array(1 => '%'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'HARDQUOTE' => array("'", "'"), + 'HARDESCAPE' => array("'", "\\"), + 'HARDCHAR' => "\\", + 'ESCAPE_CHAR' => '\\', + 'NUMBERS' => GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_FLT_SCI_ZERO, + 'KEYWORDS' => array( + //Control flow keywrods + 1 => array( + 'after', 'andalso', 'begin', 'case', 'catch', 'end', 'fun', 'if', + 'of', 'orelse', 'receive', 'try', 'when', 'query' + ), + //Binary operators + 2 => array( + 'and', 'band', 'bnot', 'bor', 'bsl', 'bsr', 'bxor', 'div', 'not', + 'or', 'rem', 'xor' + ), + 3 => array( + 'abs', 'alive', 'apply', 'atom_to_list', 'binary_to_list', + 'binary_to_term', 'concat_binary', 'date', 'disconnect_node', + 'element', 'erase', 'exit', 'float', 'float_to_list', 'get', + 'get_keys', 'group_leader', 'halt', 'hd', 'integer_to_list', + 'is_alive', 'length', 'link', 'list_to_atom', 'list_to_binary', + 'list_to_float', 'list_to_integer', 'list_to_pid', 'list_to_tuple', + 'load_module', 'make_ref', 'monitor_node', 'node', 'nodes', 'now', + 'open_port', 'pid_to_list', 'process_flag', 'process_info', + 'process', 'put', 'register', 'registered', 'round', 'self', + 'setelement', 'size', 'spawn', 'spawn_link', 'split_binary', + 'statistics', 'term_to_binary', 'throw', 'time', 'tl', 'trunc', + 'tuple_to_list', 'unlink', 'unregister', 'whereis' + ), + // Built-In Functions + 4 => array( + 'atom', 'binary', 'constant', 'function', 'integer', 'is_atom', + 'is_binary', 'is_constant', 'is_function', 'is_integer', 'is_list', + 'is_number', 'is_pid', 'is_reference', 'is_record', 'list', + 'number', 'pid', 'ports', 'port_close', 'port_info', 'reference' + ), + // Erlang/OTP internal modules (scary one) + 5 => array( + 'alarm_handler', 'any', 'app', 'application', 'appmon', 'appup', + 'array', 'asn1ct', 'asn1rt', 'auth', 'base64', 'beam_lib', 'c', + 'calendar', 'code', 'common_test_app', 'compile', 'config', + 'corba', 'corba_object', 'cosEventApp', 'CosEventChannelAdmin', + 'CosEventChannelAdmin_ConsumerAdmin', + 'CosEventChannelAdmin_EventChannel', + 'CosEventChannelAdmin_ProxyPullConsumer', + 'CosEventChannelAdmin_ProxyPullSupplier', + 'CosEventChannelAdmin_ProxyPushConsumer', + 'CosEventChannelAdmin_ProxyPushSupplier', + 'CosEventChannelAdmin_SupplierAdmin', 'CosEventDomainAdmin', + 'CosEventDomainAdmin_EventDomain', + 'CosEventDomainAdmin_EventDomainFactory', + 'cosEventDomainApp', 'CosFileTransfer_Directory', + 'CosFileTransfer_File', 'CosFileTransfer_FileIterator', + 'CosFileTransfer_FileTransferSession', + 'CosFileTransfer_VirtualFileSystem', + 'cosFileTransferApp', 'CosNaming', 'CosNaming_BindingIterator', + 'CosNaming_NamingContext', 'CosNaming_NamingContextExt', + 'CosNotification', 'CosNotification_AdminPropertiesAdmin', + 'CosNotification_QoSAdmin', 'cosNotificationApp', + 'CosNotifyChannelAdmin_ConsumerAdmin', + 'CosNotifyChannelAdmin_EventChannel', + 'CosNotifyChannelAdmin_EventChannelFactory', + 'CosNotifyChannelAdmin_ProxyConsumer', + 'CosNotifyChannelAdmin_ProxyPullConsumer', + 'CosNotifyChannelAdmin_ProxyPullSupplier', + 'CosNotifyChannelAdmin_ProxyPushConsumer', + 'CosNotifyChannelAdmin_ProxyPushSupplier', + 'CosNotifyChannelAdmin_ProxySupplier', + 'CosNotifyChannelAdmin_SequenceProxyPullConsumer', + 'CosNotifyChannelAdmin_SequenceProxyPullSupplier', + 'CosNotifyChannelAdmin_SequenceProxyPushConsumer', + 'CosNotifyChannelAdmin_SequenceProxyPushSupplier', + 'CosNotifyChannelAdmin_StructuredProxyPullConsumer', + 'CosNotifyChannelAdmin_StructuredProxyPullSupplier', + 'CosNotifyChannelAdmin_StructuredProxyPushConsumer', + 'CosNotifyChannelAdmin_StructuredProxyPushSupplier', + 'CosNotifyChannelAdmin_SupplierAdmin', + 'CosNotifyComm_NotifyPublish', 'CosNotifyComm_NotifySubscribe', + 'CosNotifyFilter_Filter', 'CosNotifyFilter_FilterAdmin', + 'CosNotifyFilter_FilterFactory', 'CosNotifyFilter_MappingFilter', + 'cosProperty', 'CosPropertyService_PropertiesIterator', + 'CosPropertyService_PropertyNamesIterator', + 'CosPropertyService_PropertySet', + 'CosPropertyService_PropertySetDef', + 'CosPropertyService_PropertySetDefFactory', + 'CosPropertyService_PropertySetFactory', 'cosTime', + 'CosTime_TimeService', 'CosTime_TIO', 'CosTime_UTO', + 'CosTimerEvent_TimerEventHandler', + 'CosTimerEvent_TimerEventService', 'cosTransactions', + 'CosTransactions_Control', 'CosTransactions_Coordinator', + 'CosTransactions_RecoveryCoordinator', 'CosTransactions_Resource', + 'CosTransactions_SubtransactionAwareResource', + 'CosTransactions_Terminator', 'CosTransactions_TransactionFactory', + 'cover', 'cprof', 'cpu_sup', 'crashdump', 'crypto', 'crypto_app', + 'ct', 'ct_cover', 'ct_ftp', 'ct_master', 'ct_rpc', 'ct_snmp', + 'ct_ssh', 'ct_telnet', 'dbg', 'debugger', 'dets', 'dialyzer', + 'dict', 'digraph', 'digraph_utils', 'disk_log', 'disksup', + 'docb_gen', 'docb_transform', 'docb_xml_check', 'docbuilder_app', + 'driver_entry', 'edoc', 'edoc_doclet', 'edoc_extract', + 'edoc_layout', 'edoc_lib', 'edoc_run', 'egd', 'ei', 'ei_connect', + 'epmd', 'epp', 'epp_dodger', 'eprof', 'erl', 'erl_boot_server', + 'erl_call', 'erl_comment_scan', 'erl_connect', 'erl_ddll', + 'erl_driver', 'erl_error', 'erl_eterm', 'erl_eval', + 'erl_expand_records', 'erl_format', 'erl_global', 'erl_id_trans', + 'erl_internal', 'erl_lint', 'erl_malloc', 'erl_marshal', + 'erl_parse', 'erl_pp', 'erl_prettypr', 'erl_prim_loader', + 'erl_prim_loader_stub', 'erl_recomment', 'erl_scan', + 'erl_set_memory_block', 'erl_syntax', 'erl_syntax_lib', 'erl_tar', + 'erl_tidy', 'erlang', 'erlang_mode', 'erlang_stub', 'erlc', + 'erlsrv', 'error_handler', 'error_logger', 'erts_alloc', + 'erts_alloc_config', 'escript', 'et', 'et_collector', + 'et_selector', 'et_viewer', 'etop', 'ets', 'eunit', 'file', + 'file_sorter', 'filelib', 'filename', 'fixed', 'fprof', 'ftp', + 'gb_sets', 'gb_trees', 'gen_event', 'gen_fsm', 'gen_sctp', + 'gen_server', 'gen_tcp', 'gen_udp', 'gl', 'global', 'global_group', + 'glu', 'gs', 'heart', 'http', 'httpd', 'httpd_conf', + 'httpd_socket', 'httpd_util', 'i', 'ic', 'ic_c_protocol', + 'ic_clib', 'igor', 'inet', 'inets', 'init', 'init_stub', + 'instrument', 'int', 'interceptors', 'inviso', 'inviso_as_lib', + 'inviso_lfm', 'inviso_lfm_tpfreader', 'inviso_rt', + 'inviso_rt_meta', 'io', 'io_lib', 'kernel_app', 'lib', 'lists', + 'lname', 'lname_component', 'log_mf_h', 'make', 'math', 'megaco', + 'megaco_codec_meas', 'megaco_codec_transform', + 'megaco_edist_compress', 'megaco_encoder', 'megaco_flex_scanner', + 'megaco_tcp', 'megaco_transport', 'megaco_udp', 'megaco_user', + 'memsup', 'mnesia', 'mnesia_frag_hash', 'mnesia_registry', + 'mod_alias', 'mod_auth', 'mod_esi', 'mod_security', + 'Module_Interface', 'ms_transform', 'net_adm', 'net_kernel', + 'new_ssl', 'nteventlog', 'observer_app', 'odbc', 'orber', + 'orber_acl', 'orber_diagnostics', 'orber_ifr', 'orber_tc', + 'orddict', 'ordsets', 'os', 'os_mon', 'os_mon_mib', 'os_sup', + 'otp_mib', 'overload', 'packages', 'percept', 'percept_profile', + 'pg', 'pg2', 'pman', 'pool', 'prettypr', 'proc_lib', 'proplists', + 'public_key', 'qlc', 'queue', 'random', 'rb', 're', 'regexp', + 'registry', 'rel', 'release_handler', 'reltool', 'relup', 'rpc', + 'run_erl', 'run_test', 'runtime_tools_app', 'sasl_app', 'script', + 'seq_trace', 'sets', 'shell', 'shell_default', 'slave', 'snmp', + 'snmp_app', 'snmp_community_mib', 'snmp_framework_mib', + 'snmp_generic', 'snmp_index', 'snmp_notification_mib', 'snmp_pdus', + 'snmp_standard_mib', 'snmp_target_mib', 'snmp_user_based_sm_mib', + 'snmp_view_based_acm_mib', 'snmpa', 'snmpa_conf', 'snmpa_error', + 'snmpa_error_io', 'snmpa_error_logger', 'snmpa_error_report', + 'snmpa_local_db', 'snmpa_mpd', 'snmpa_network_interface', + 'snmpa_network_interface_filter', + 'snmpa_notification_delivery_info_receiver', + 'snmpa_notification_filter', 'snmpa_supervisor', 'snmpc', 'snmpm', + 'snmpm_conf', 'snmpm_mpd', 'snmpm_network_interface', 'snmpm_user', + 'sofs', 'ssh', 'ssh_channel', 'ssh_connection', 'ssh_sftp', + 'ssh_sftpd', 'ssl', 'ssl_app', 'ssl_pkix', 'start', 'start_erl', + 'start_webtool', 'stdlib_app', 'string', 'supervisor', + 'supervisor_bridge', 'sys', 'systools', 'tags', 'test_server', + 'test_server_app', 'test_server_ctrl', 'tftp', 'timer', 'toolbar', + 'ttb', 'tv', 'unicode', 'unix_telnet', 'user', 'webtool', 'werl', + 'win32reg', 'wrap_log_reader', 'wx', 'wx_misc', 'wx_object', + 'wxAcceleratorEntry', 'wxAcceleratorTable', 'wxArtProvider', + 'wxAuiDockArt', 'wxAuiManager', 'wxAuiNotebook', 'wxAuiPaneInfo', + 'wxAuiTabArt', 'wxBitmap', 'wxBitmapButton', 'wxBitmapDataObject', + 'wxBoxSizer', 'wxBrush', 'wxBufferedDC', 'wxBufferedPaintDC', + 'wxButton', 'wxCalendarCtrl', 'wxCalendarDateAttr', + 'wxCalendarEvent', 'wxCaret', 'wxCheckBox', 'wxCheckListBox', + 'wxChildFocusEvent', 'wxChoice', 'wxClientDC', 'wxClipboard', + 'wxCloseEvent', 'wxColourData', 'wxColourDialog', + 'wxColourPickerCtrl', 'wxColourPickerEvent', 'wxComboBox', + 'wxCommandEvent', 'wxContextMenuEvent', 'wxControl', + 'wxControlWithItems', 'wxCursor', 'wxDataObject', 'wxDateEvent', + 'wxDatePickerCtrl', 'wxDC', 'wxDialog', 'wxDirDialog', + 'wxDirPickerCtrl', 'wxDisplayChangedEvent', 'wxEraseEvent', + 'wxEvent', 'wxEvtHandler', 'wxFileDataObject', 'wxFileDialog', + 'wxFileDirPickerEvent', 'wxFilePickerCtrl', 'wxFindReplaceData', + 'wxFindReplaceDialog', 'wxFlexGridSizer', 'wxFocusEvent', 'wxFont', + 'wxFontData', 'wxFontDialog', 'wxFontPickerCtrl', + 'wxFontPickerEvent', 'wxFrame', 'wxGauge', 'wxGBSizerItem', + 'wxGenericDirCtrl', 'wxGLCanvas', 'wxGraphicsBrush', + 'wxGraphicsContext', 'wxGraphicsFont', 'wxGraphicsMatrix', + 'wxGraphicsObject', 'wxGraphicsPath', 'wxGraphicsPen', + 'wxGraphicsRenderer', 'wxGrid', 'wxGridBagSizer', 'wxGridCellAttr', + 'wxGridCellEditor', 'wxGridCellRenderer', 'wxGridEvent', + 'wxGridSizer', 'wxHelpEvent', 'wxHtmlEasyPrinting', 'wxIcon', + 'wxIconBundle', 'wxIconizeEvent', 'wxIdleEvent', 'wxImage', + 'wxImageList', 'wxJoystickEvent', 'wxKeyEvent', + 'wxLayoutAlgorithm', 'wxListBox', 'wxListCtrl', 'wxListEvent', + 'wxListItem', 'wxListView', 'wxMask', 'wxMaximizeEvent', + 'wxMDIChildFrame', 'wxMDIClientWindow', 'wxMDIParentFrame', + 'wxMemoryDC', 'wxMenu', 'wxMenuBar', 'wxMenuEvent', 'wxMenuItem', + 'wxMessageDialog', 'wxMiniFrame', 'wxMirrorDC', + 'wxMouseCaptureChangedEvent', 'wxMouseEvent', 'wxMoveEvent', + 'wxMultiChoiceDialog', 'wxNavigationKeyEvent', 'wxNcPaintEvent', + 'wxNotebook', 'wxNotebookEvent', 'wxNotifyEvent', + 'wxPageSetupDialog', 'wxPageSetupDialogData', 'wxPaintDC', + 'wxPaintEvent', 'wxPalette', 'wxPaletteChangedEvent', 'wxPanel', + 'wxPasswordEntryDialog', 'wxPen', 'wxPickerBase', 'wxPostScriptDC', + 'wxPreviewCanvas', 'wxPreviewControlBar', 'wxPreviewFrame', + 'wxPrintData', 'wxPrintDialog', 'wxPrintDialogData', 'wxPrinter', + 'wxPrintout', 'wxPrintPreview', 'wxProgressDialog', + 'wxQueryNewPaletteEvent', 'wxRadioBox', 'wxRadioButton', + 'wxRegion', 'wxSashEvent', 'wxSashLayoutWindow', 'wxSashWindow', + 'wxScreenDC', 'wxScrollBar', 'wxScrolledWindow', 'wxScrollEvent', + 'wxScrollWinEvent', 'wxSetCursorEvent', 'wxShowEvent', + 'wxSingleChoiceDialog', 'wxSizeEvent', 'wxSizer', 'wxSizerFlags', + 'wxSizerItem', 'wxSlider', 'wxSpinButton', 'wxSpinCtrl', + 'wxSpinEvent', 'wxSplashScreen', 'wxSplitterEvent', + 'wxSplitterWindow', 'wxStaticBitmap', 'wxStaticBox', + 'wxStaticBoxSizer', 'wxStaticLine', 'wxStaticText', 'wxStatusBar', + 'wxStdDialogButtonSizer', 'wxStyledTextCtrl', 'wxStyledTextEvent', + 'wxSysColourChangedEvent', 'wxTextAttr', 'wxTextCtrl', + 'wxTextDataObject', 'wxTextEntryDialog', 'wxToggleButton', + 'wxToolBar', 'wxToolTip', 'wxTopLevelWindow', 'wxTreeCtrl', + 'wxTreeEvent', 'wxUpdateUIEvent', 'wxWindow', 'wxWindowCreateEvent', + 'wxWindowDC', 'wxWindowDestroyEvent', 'wxXmlResource', 'xmerl', + 'xmerl_eventp', 'xmerl_scan', 'xmerl_xpath', 'xmerl_xs', + 'xmerl_xsd', 'xref', 'yecc', 'zip', 'zlib', 'zlib_stub' + ), + // Binary modifiers + 6 => array( + 'big', 'binary', 'float', 'integer', 'little', 'signed', 'unit', 'unsigned' + ) + ), + 'SYMBOLS' => array( + 0 => array('(', ')', '[', ']', '{', '}'), + 1 => array('->', ',', ';', '.'), + 2 => array('<<', '>>'), + 3 => array('=', '||', '-', '+', '*', '/', '++', '--', '!', '<', '>', '>=', + '=<', '==', '/=', '=:=', '=/=') + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + 5 => true, + 6 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #186895;', + 2 => 'color: #014ea4;', + 3 => 'color: #fa6fff;', + 4 => 'color: #fa6fff;', + 5 => 'color: #ff4e18;', + 6 => 'color: #9d4f37;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 'MULTI' => 'color: #666666; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;', + 'HARD' => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #109ab8;' + ), + 'STRINGS' => array( + 0 => 'color: #ff7800;' + ), + 'NUMBERS' => array( + 0 => 'color: #ff9600;' + ), + 'METHODS' => array( + 1 => 'color: #006600;', + 2 => 'color: #006600;' + ), + 'SYMBOLS' => array( + 0 => 'color: #004866;', + 1 => 'color: #6bb810;', + 2 => 'color: #ee3800;', + 3 => 'color: #014ea4;' + ), + 'REGEXPS' => array( + 0 => 'color: #6941fd;', + 1 => 'color: #d400ed;', + 2 => 'color: #5400b3;', + 3 => 'color: #ff3c00;', + 4 => 'color: #6941fd;', + 5 => 'color: #45b3e6;', + 6 => 'color: #ff9600;', + 7 => 'color: #d400ed;', + 8 => 'color: #ff9600;' + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => 'http://erlang.org/doc/man/{FNAME}.html', + 6 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '->', + 2 => ':' + ), + 'REGEXPS' => array( + //Macro definitions + 0 => array( + GESHI_SEARCH => '(-define\s*\()([a-zA-Z0-9_]+)(\(|,)', + GESHI_REPLACE => '\2', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '\1', + GESHI_AFTER => '\3' + ), + // Record definitions + 1 => array( + GESHI_SEARCH => '(-record\s*\()([a-zA-Z0-9_]+)(,)', + GESHI_REPLACE => '\2', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '\1', + GESHI_AFTER => '\3' + ), + // Precompiler directives + 2 => array( + GESHI_SEARCH => '(-)([a-z][a-zA-Z0-9_]*)(\()', + GESHI_REPLACE => '\2', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '\1', + GESHI_AFTER => '\3' + ), + // Functions + 3 => array( + GESHI_SEARCH => '([a-z]\w*|\'\w*\')(\s*\()', + GESHI_REPLACE => '\1', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '', + GESHI_AFTER => '\2' + ), + // Macros + 4 => array( + GESHI_SEARCH => '(\?)([a-zA-Z0-9_]+)', + GESHI_REPLACE => '\2', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '\1', + GESHI_AFTER => '' + ), + // Variables - With hack to avoid interfering wish GeSHi internals + 5 => array( + GESHI_SEARCH => '([([{,<+*-\/=\s!]|<)(?!(?:PIPE|SEMI|DOT|NUM|REG3XP\d*)\W)([A-Z_]\w*)(?!\w)', + GESHI_REPLACE => '\2', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '\1', + GESHI_AFTER => '' + ), + // ASCIIcodes + 6 => '(\$[a-zA-Z0-9_])', + // Records + 7 => array( + GESHI_SEARCH => '(#)([a-z][a-zA-Z0-9_]*)(\.|\{)', + GESHI_REPLACE => '\2', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '\1', + GESHI_AFTER => '\3' + ), + // Numbers with a different radix + 8 => '(?<=>)(#[a-zA-Z0-9]*)' + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array(), + 'TAB_WIDTH' => 4, + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 3 => array( + 'DISALLOWED_BEFORE' => '', + 'DISALLOWED_AFTER' => '(?=\s*\()' + ), + 5 => array( + 'DISALLOWED_BEFORE' => '(?<=\'|)', + 'DISALLOWED_AFTER' => '(?=(\'|):)' + ), + 6 => array( + 'DISALLOWED_BEFORE' => '(?<=\/|-)', + 'DISALLOWED_AFTER' => '' + ) + ) + ), +); + +?>
\ No newline at end of file diff --git a/inc/geshi/fo.php b/inc/geshi/fo.php new file mode 100644 index 000000000..3a1d24021 --- /dev/null +++ b/inc/geshi/fo.php @@ -0,0 +1,327 @@ +<?php +/************************************************************************************* + * fo.php + * -------- + * Author: Tan-Vinh Nguyen (tvnguyen@web.de) + * Copyright: (c) 2009 Tan-Vinh Nguyen + * Release Version: 1.0.8.8 + * Date Started: 2009/03/23 + * + * fo language file for GeSHi. + * + * FO stands for "Flexible Oberflaechen" (Flexible Surfaces) and + * is part of the abas-ERP. + * + * CHANGES + * ------- + * 2009/03/23 (1.0.0) + * - First Release + * Basic commands in German and English + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'FO (abas-ERP)', + 'COMMENT_SINGLE' => array(1 => '..'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + //Control Flow + 1 => array( + /* see http://www.abas.de/sub_de/kunden/help/hd/html/9.html */ + + /* fo keywords, part 1: control flow */ + '.weiter', '.continue' + + /* this language works with goto's only*/ + ), + + //FO Keywords + 2 => array( + /* fo keywords, part 2 */ + '.fo', '.formel', '.formula', + '.zuweisen', '.assign', + '.fehler', '.error', + '.ende', '.end' + ), + + //Java Keywords + 3 => array( + /* Java keywords, part 3: primitive data types */ + '.art', '.type', + 'integer', 'real', 'bool', 'text', 'datum', 'woche', 'termin', 'zeit', + 'mehr', 'MEHR' + ), + + //Reserved words in fo literals + 4 => array( + /* other reserved words in fo literals */ + /* should be styled to look similar to numbers and Strings */ + 'false', 'null', 'true', + 'OBJEKT', + 'VORGANG', 'PROCESS', + 'OFFEN', 'OPEN', + 'ABORT', + 'AN', 'ADDEDTO', + 'AUF', 'NEW', + 'BILDSCHIRM', 'TERMINAL', + 'PC', + 'MASKE', 'SCREEN', + 'ZEILE', 'LINE' + ), + + // interpreter settings + 5 => array ( + '..!INTERPRETER', 'DEBUG' + ), + + // database commands + 6 => array ( + '.hole', '.hol', '.select', + '.lade', '.load', + '.aktion', '.action', + '.belegen', '.occupy', + '.bringe', '.rewrite', + '.dazu', '.add', + '.löschen', '.delete', + '.mache', '.make', + '.merke', '.reserve', + '.setze', '.set', + 'SPERREN', 'LOCK', + 'TEIL', 'PART', + 'KEINESPERRE', + 'AMASKE', 'ASCREEN', + 'BETRIEB', 'WORK-ORDER', + 'NUMERISCH', 'NUMERICAL', + 'VORSCHLAG', 'SUGGESTION', + 'OBLIGO', 'OUTSTANDING', + 'LISTE', 'LIST', + 'DRUCK', 'PRINT', + 'ÜBERNAHME', 'TAGEOVER', + 'ABLAGE', 'FILINGSYSTEM', + 'BDE', 'PDC', + 'BINDUNG', 'ALLOCATION', + 'BUCHUNG', 'ENTRY', + 'COLLI', 'SERIAL', + 'DATEI', 'FILE', + 'VERKAUF', 'SALES', + 'EINKAUF', 'PURCHASING', + 'EXEMPLAR', 'EXAMPLE', + 'FERTIGUNG', 'PRODUCTION', + 'FIFO', + 'GRUPPE', 'GROUP', + 'JAHR', 'YEAR', + 'JOURNAL', + 'KOPF', 'HEADER', + 'KOSTEN', + 'LIFO', + 'LMENGE', 'SQUANTITY', + 'LOHNFERTIGUNG', 'SUBCONTRACTING', + 'LPLATZ', 'LOCATION', + 'MBELEGUNG', 'MACHLOADING', + 'MONAT', 'MONTH', 'MZ', + 'NACHRICHT', 'MESSAGE', + 'PLAN', 'TARGET', + 'REGIONEN', 'REGIONS', + 'SERVICEANFRAGE', 'SERVICEREQUEST', + 'VERWENDUNG', 'APPLICATION', + 'WEITER', 'CONTINUE', + 'ABBRUCH', 'CANCEL', + 'ABLAGEKENNZEICHEN', 'FILLINGCODE', + 'ALLEIN', 'SINGLEUSER', + 'AUFZAEHLTYP', 'ENUMERATION-TYPE', + 'AUSGABE', 'OUTPUT', + 'DEZPUNKT', 'DECPOINT' + ), + + // output settings + 7 => array ( + '.absatz', '.para', + '.blocksatz', '.justified', + '.flattersatz', '.unjustified', + '.format', + '.box', + '.drucken', '.print', + '.gedruckt', '.printed', + '.länge', '.length', + '.links', '.left', + '.rechts', '.right', + '.oben', '.up', + '.unten', '.down', + '.seite', '.page', + '.tabellensatz', '.tablerecord', + '.trenner', '.separator', + 'ARCHIV' + ), + + // text commands + 8 => array ( + '.text', + '.atext', + '.println', + '.uebersetzen', '.translate' + ), + + // I/O commands + 9 => array ( + '.aus', '.ausgabe', '.output', + '.ein', '.eingabe', '.input', + '.datei', '.file', + '.lesen', '.read', + '.sortiere', '.sort', + '-ÖFFNEN', '-OPEN', + '-TEST', + '-LESEN', '-READ', + 'VON', 'FROM' + ), + + //system + 10 => array ( + '.browser', + '.kommando', '.command', + '.system', '.dde', + '.editiere', '.edit', + '.hilfe', '.help', + '.kopieren', '.copy', + '.pc.clip', + '.pc.copy', + '.pc.dll', + '.pc.exec', + '.pc.open', + 'DIAGNOSE', 'ERRORREPORT', + 'DOPPELPUNKT', 'COLON', + 'ERSETZUNG', 'REPLACEMENT', + 'WARTEN', 'PARALLEL' + ), + + //fibu/accounting specific commands + 11 => array ( + '.budget', + '.chart', + 'VKZ', + 'KONTO', 'ACCOUNT', + 'AUSZUG', 'STATEMENT', + 'WAEHRUNG', 'CURRENCY', + 'WAEHRUNGSKURS', 'EXCHANGERATE', + 'AUSWAEHR', 'FORCURR', + 'BUCHUNGSKREIS', 'SET OF BOOKS' + ), + + // efop - extended flexible surface + 12 => array ( + '.cursor', + '.farbe', '.colour', + '.fenster', '.window', + '.hinweis', '.note', + '.menue', '.menu', + '.schutz', '.protection', + '.zeigen', '.view', + '.zeile', '.line', + 'VORDERGRUND', 'FOREGROUND', + 'HINTERGRUND', 'BACKGROUND', + 'SOFORT', 'IMMEDIATELY', + 'AKTUALISIEREN', 'UPDATE', + 'FENSTERSCHLIESSEN', 'CLOSEWINDOWS' + ), + ), + 'SYMBOLS' => array( + 0 => array('(', ')', '[', ']', '{', '}', '*', '&', '%', ';', '<', '>'), + 1 => array('?', '!') + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + /* all fo keywords are case sensitive, don't have to but I like this type of coding */ + 1 => true, 2 => true, 3 => true, 4 => true, + 5 => true, 6 => true, 7 => true, 8 => true, 9 => true, + 10 => true, 11 => true, 12 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #000000; font-weight: bold;', + 2 => 'color: #000000; font-weight: bold;', + 3 => 'color: #006600; font-weight: bold;', + 4 => 'color: #006600; font-weight: bold;', + 5 => 'color: #003399; font-weight: bold;', + 6 => 'color: #003399; font-weight: bold;', + 7 => 'color: #003399; font-weight: bold;', + 8 => 'color: #003399; font-weight: bold;', + 9 => 'color: #003399; font-weight: bold;', + 10 => 'color: #003399; font-weight: bold;', + 11 => 'color: #003399; font-weight: bold;', + 12 => 'color: #003399; font-weight: bold;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + //2 => 'color: #006699;', + 'MULTI' => 'color: #666666; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #0000ff;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;' + ), + 'METHODS' => array( + 1 => 'color: #006633;', + 2 => 'color: #006633;' + ), + 'SYMBOLS' => array( + 0 => 'color: #339933;', + 1 => 'color: #000000; font-weight: bold;' + ), + 'SCRIPT' => array( + ), + 'REGEXPS' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '', + 9 => '', + 10 => '', + 11 => '', + 12 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array(), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ) +); +?>
\ No newline at end of file diff --git a/inc/geshi/fortran.php b/inc/geshi/fortran.php index 26dc9b19d..6eac52ae0 100644 --- a/inc/geshi/fortran.php +++ b/inc/geshi/fortran.php @@ -4,7 +4,7 @@ * ----------- * Author: Cedric Arrabie (cedric.arrabie@univ-pau.fr) * Copyright: (C) 2006 Cetric Arrabie - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2006/04/22 * * Fortran language file for GeSHi. diff --git a/inc/geshi/freebasic.php b/inc/geshi/freebasic.php index 780305ba3..35fc8ca6f 100644 --- a/inc/geshi/freebasic.php +++ b/inc/geshi/freebasic.php @@ -4,7 +4,7 @@ * ------------- * Author: Roberto Rossi * Copyright: (c) 2005 Roberto Rossi (http://rsoftware.altervista.org) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2005/08/19 * * FreeBasic (http://www.freebasic.net/) language file for GeSHi. diff --git a/inc/geshi/fsharp.php b/inc/geshi/fsharp.php new file mode 100644 index 000000000..56146958c --- /dev/null +++ b/inc/geshi/fsharp.php @@ -0,0 +1,211 @@ +<?php +/************************************************************************************* + * fsharp.php + * ---------- + * Author: julien ortin (jo_spam-divers@yahoo.fr) + * Copyright: (c) 2009 julien ortin + * Release Version: 1.0.8.8 + * Date Started: 2009/09/20 + * + * F# language file for GeSHi. + * + * CHANGES + * ------- + * 2009/09/22 (1.0.1) + * - added rules for single char handling (generics ['a] vs char ['x']) + * - added symbols and keywords + * 2009/09/20 (1.0.0) + * - Initial release + * + * TODO + * ------------------------- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array( + 'LANG_NAME' => 'F#', + 'COMMENT_SINGLE' => array(1 => '//', 2 => '#'), + 'COMMENT_MULTI' => array('(*' => '*)', '/*' => '*/'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'HARDQUOTE' => array('@"', '"'), + 'HARDESCAPE' => array('"'), + 'HARDCHAR' => '"', + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + /* main F# keywords */ + /* section 3.4 */ + 1 => array( + 'abstract', 'and', 'as', 'assert', 'base', 'begin', 'class', 'default', 'delegate', 'do', 'done', + 'downcast', 'downto', 'elif', 'else', 'end', 'exception', 'extern', 'false', 'finally', 'for', + 'fun', 'function', 'if', 'in', 'inherit', 'inline', 'interface', 'internal', 'lazy', 'let', + 'match', 'member', 'module', 'mutable', 'namespace', 'new', 'not', 'null', 'of', 'open', 'or', + 'override', 'private', 'public', 'rec', 'return', 'sig', 'static', 'struct', 'then', 'to', + 'true', 'try', 'type', 'upcast', 'use', 'val', 'void', 'when', 'while', 'with', 'yield', + 'asr', 'land', 'lor', 'lsl', 'lsr', 'lxor', 'mod', + /* identifiers are reserved for future use by F# */ + 'atomic', 'break', 'checked', 'component', 'const', 'constraint', 'constructor', + 'continue', 'eager', 'fixed', 'fori', 'functor', 'global', 'include', 'method', 'mixin', + 'object', 'parallel', 'params', 'process', 'protected', 'pure', 'sealed', 'tailcall', + 'trait', 'virtual', 'volatile', + /* take monads into account */ + 'let!', 'yield!' + ), + /* define names of main libraries in F# Core, so we can link to it + * http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/namespaces.html + */ + 2 => array( + 'Array', 'Array2D', 'Array3D', 'Array4D', 'ComparisonIdentity', 'HashIdentity', 'List', + 'Map', 'Seq', 'SequenceExpressionHelpers', 'Set', 'CommonExtensions', 'Event', + 'ExtraTopLevelOperators', 'LanguagePrimitives', 'NumericLiterals', 'Operators', + 'OptimizedClosures', 'Option', 'String', 'NativePtr', 'Printf' + ), + /* 17.2 & 17.3 */ + 3 => array( + 'abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'exp', + 'floor', 'log', 'log10', 'pown', 'round', 'sign', 'sin', 'sinh', 'sqrt', + 'tan', 'tanh', + 'ignore', + 'fst', 'snd', + 'stdin', 'stdout', 'stderr', + 'KeyValue', + 'max', 'min' + ), + /* Pervasives Types & Overloaded Conversion Functions */ + 4 => array( + 'bool', 'byref', 'byte', 'char', 'decimal', 'double', 'exn', 'float', 'float32', + 'FuncConvert', 'ilsigptr', 'int', 'int16', 'int32', 'int64', 'int8', + 'nativeint', 'nativeptr', 'obj', 'option', 'ref', 'sbyte', 'single', 'string', 'uint16', + 'uint32', 'uint64', 'uint8', 'unativeint', 'unit', + 'enum', + 'async', 'seq', 'dict' + ), + /* 17.2 Exceptions */ + 5 => array ( + 'failwith', 'invalidArg', 'raise', 'rethrow' + ), + /* 3.3 Conditional compilation & 13.3 Compiler Directives + light / light off */ + 6 => array( + '(*IF-FSHARP', 'ENDIF-FSHARP*)', '(*F#', 'F#*)', '(*IF-OCAML', 'ENDIF-OCAML*)', + '#light', + '#if', '#else', '#endif', '#indent', '#nowarn', '#r', '#reference', + '#I', '#Include', '#load', '#time', '#help', '#q', '#quit', + ), + /* 3.11 Pre-processor Declarations / Identifier Replacements */ + 7 => array( + '__SOURCE_DIRECTORY__', '__SOURCE_FILE__', '__LINE__' + ), + /* 17.2 Object Transformation Operators */ + 8 => array( + 'box', 'hash', 'sizeof', 'typeof', 'typedefof', 'unbox' + ) + ), + /* 17.2 basic operators + the yield and yield! arrows */ + 'SYMBOLS' => array( + 1 => array('+', '-', '/', '*', '**', '%', '~-'), + 2 => array('<', '<=', '>', '<=', '=', '<>'), + 3 => array('<<<', '>>>', '^^^', '&&&', '|||', '~~~'), + 4 => array('|>', '>>', '<|', '<<'), + 5 => array('!', '->', '->>'), + 6 => array('[',']','(',')','{','}', '[|', '|]', '(|', '|)'), + 7 => array(':=', ';', ';;') + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, /* keywords */ + 2 => true, /* modules */ + 3 => true, /* pervasives functions */ + 4 => true, /* types and overloaded conversion operators */ + 5 => true, /* exceptions */ + 6 => true, /* conditional compilation & compiler Directives */ + 7 => true, /* pre-processor declarations / identifier replacements */ + 8 => true /* object transformation operators */ + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #06c; font-weight: bold;', /* nice blue */ + 2 => 'color: #06c; font-weight: bold;', /* nice blue */ + 3 => 'color: #06c; font-weight: bold;', /* nice blue */ + 4 => 'color: #06c; font-weight: bold;', /* nice blue */ + 5 => 'color: #06c; font-weight: bold;', /* nice blue */ + 6 => 'color: #06c; font-weight: bold;', /* nice blue */ + 7 => 'color: #06c; font-weight: bold;', /* nice blue */ + 8 => 'color: #06c; font-weight: bold;' /* nice blue */ + ), + 'COMMENTS' => array( + 'MULTI' => 'color: #5d478b; font-style: italic;', /* light purple */ + 1 => 'color: #5d478b; font-style: italic;', + 2 => 'color: #5d478b; font-style: italic;' /* light purple */ + ), + 'ESCAPE_CHAR' => array( + ), + 'BRACKETS' => array( + 0 => 'color: #6c6;' + ), + 'STRINGS' => array( + 0 => 'color: #3cb371;' /* nice green */ + ), + 'NUMBERS' => array( + 0 => 'color: #c6c;' /* pink */ + ), + 'METHODS' => array( + 1 => 'color: #060;' /* dark green */ + ), + 'REGEXPS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #a52a2a;' /* maroon */ + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + /* some of keywords are Pervasives functions (land, lxor, asr, ...) */ + 1 => '', + 2 => 'http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/namespaces.html', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4, + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\|\#>|^])", + 'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_<\|%\\-])" + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/gambas.php b/inc/geshi/gambas.php new file mode 100644 index 000000000..0fc89bb59 --- /dev/null +++ b/inc/geshi/gambas.php @@ -0,0 +1,214 @@ +<?php +/************************************************************************************* + * gambas.php + * --------- + * Author: Jesus Guardon (jguardon@telefonica.net) + * Copyright: (c) 2009 Jesus Guardon (http://gambas-es.org), + * Benny Baumann (http://qbnz.com/highlighter) + * Release Version: 1.0.8.8 + * Date Started: 2004/08/20 + * + * GAMBAS language file for GeSHi. + * GAMBAS Official Site: http://gambas.sourceforge.net + * + * CHANGES + * ------- + * 2009/09/26 (1.0.1) + * - Splitted dollar-ended keywords in another group to match with or without '$' + * - Modified URL for object/components keywords search through Google "I'm feeling lucky" + * 2009/09/23 (1.0.0) + * - Initial release + * + * TODO (updated 2009/09/26) + * ------------------------- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'GAMBAS', + 'COMMENT_SINGLE' => array(1 => "'"), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '\\', + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | + GESHI_NUMBER_FLT_NONSCI_F | GESHI_NUMBER_FLT_SCI_SHORT | GESHI_NUMBER_FLT_SCI_ZERO, + 'KEYWORDS' => array( + //keywords + 1 => array( + 'APPEND', 'AS', 'BREAK', 'BYREF', 'CASE', 'CATCH', 'CLASS', 'CLOSE', 'CONST', 'CONTINUE', 'COPY', + 'CREATE', 'DEBUG', 'DEC', 'DEFAULT', 'DIM', 'DO', 'EACH', 'ELSE', 'END', 'ENDIF', 'ERROR', 'EVENT', 'EXEC', + 'EXPORT', 'EXTERN', 'FALSE', 'FINALLY', 'FLUSH', 'FOR', 'FUNCTION', 'GOTO', 'IF', 'IN', 'INC', 'INHERITS', + 'INPUT', 'FROM', 'IS', 'KILL', 'LAST', 'LIBRARY', 'LIKE', 'LINE INPUT', 'LINK', 'LOCK', 'LOOP', 'ME', + 'MKDIR', 'MOVE', 'NEW', 'NEXT', 'NULL', 'OPEN', 'OPTIONAL', 'OUTPUT', 'PIPE', 'PRINT', 'PRIVATE', + 'PROCEDURE', 'PROPERTY', 'PUBLIC', 'QUIT', 'RAISE', 'RANDOMIZE', 'READ', 'REPEAT', 'RETURN', 'RMDIR', + 'SEEK', 'SELECT', 'SHELL', 'SLEEP', 'STATIC', 'STEP', 'STOP', 'SUB', 'SUPER', 'SWAP', 'THEN', 'TO', + 'TRUE', 'TRY', 'UNLOCK', 'UNTIL', 'WAIT', 'WATCH', 'WEND', 'WHILE', 'WITH', 'WRITE' + ), + //functions + 2 => array( + 'Abs', 'Access', 'Acos', 'Acosh', 'Alloc', 'Ang', 'Asc', 'ASin', 'ASinh', 'Asl', 'Asr', 'Assign', 'Atan', + 'ATan2', 'ATanh', + 'BChg', 'BClr', 'Bin', 'BSet', 'BTst', + 'CBool', 'Cbr', 'CByte', 'CDate', 'CFloat', 'Choose', 'Chr', 'CInt', 'CLong', 'Comp', 'Conv', 'Cos', + 'Cosh', 'CShort', 'CSng', 'CStr', + 'DateAdd', 'DateDiff', 'Day', 'DConv', 'Deg', 'DFree', 'Dir', + 'Eof', 'Eval', 'Exist', 'Exp', 'Exp10', 'Exp2', 'Expm', + 'Fix', 'Format', 'Frac', 'Free', + 'Hex', 'Hour', 'Hyp', + 'Iif', 'InStr', 'Int', 'IsAscii', 'IsBlank', 'IsBoolean', 'IsByte', 'IsDate', 'IsDigit', 'IsDir', + 'IsFloat', 'IsHexa', 'IsInteger', 'IsLCase', 'IsLetter', 'IsLong', 'IsNull', 'IsNumber', 'IsObject', + 'IsPunct', 'IsShort', 'IsSingle', 'IsSpace', 'IsString', 'IsUCase', 'IsVariant', + 'LCase', 'Left', 'Len', 'Lof', 'Log', 'Log10', 'Log2', 'Logp', 'Lsl', 'Lsr', 'LTrim', + 'Mag', 'Max', 'Mid', 'Min', 'Minute', 'Month', 'Now', 'Quote', + 'Rad', 'RDir', 'Realloc', 'Replace', 'Right', 'RInStr', 'Rnd', 'Rol', 'Ror', 'Round', 'RTrim', + 'Scan', 'SConv', 'Second', 'Seek', 'Sgn', 'Shl', 'Shr', 'Sin', 'Sinh', 'Space', 'Split', 'Sqr', + 'Stat', 'Str', 'StrPtr', 'Subst', + 'Tan', 'Tanh', 'Temp$', 'Time', 'Timer', 'Tr', 'Trim', 'TypeOf', + 'UCase', 'Unquote', 'Val', 'VarPtr', 'Week', 'WeekDay', 'Year' + ), + //string functions + 3 => array( + 'Bin$', 'Chr$', 'Conv$', 'DConv$', 'Format$', 'Hex$', 'LCase$', 'Left$', 'LTrim$', 'Mid$', 'Quote$', + 'Replace$', 'Right$', 'SConv$', 'Space$', 'Str$', 'String$', 'Subst$', 'Tr$', 'Trim$', 'UCase$', + 'Unquote$' + ), + //datatypes + 4 => array( + 'Boolean', 'Byte', 'Short', 'Integer', 'Long', 'Single', 'Float', 'Date', 'String', 'Variant', 'Object', + 'Pointer', 'File' + ), + //operators + 5 => array( + 'AND', 'DIV', 'MOD', 'NOT', 'OR', 'XOR' + ), + //objects/classes + 6 => array( + 'Application', 'Array', 'Byte[]', 'Collection', 'Component', 'Enum', 'Observer', 'Param', 'Process', + 'Stream', 'System', 'User', 'Chart', 'Compress', 'Crypt', 'Blob', 'Connection', 'DB', 'Database', + 'DatabaseUser', 'Field', 'Index', 'Result', 'ResultField', 'Table', 'DataBrowser', 'DataCombo', + 'DataControl', 'DataSource', 'DataView', 'Desktop', 'DesktopFile', 'Balloon', 'ColorButton', + 'ColorChooser', 'DateChooser', 'DirChooser', 'DirView', 'Expander', 'FileChooser', 'FileView', + 'FontChooser', 'InputBox', 'ListContainer', 'SidePanel', 'Stock', 'TableView', 'ToolPanel', 'ValueBox', + 'Wizard', 'Dialog', 'ToolBar', 'WorkSpace', 'DnsClient', 'SerialPort', 'ServerSocket', 'Socket', + 'UdpSocket', 'FtpClient', 'HttpClient', 'SmtpClient', 'Regexp', 'Action', 'Button', 'CheckBox', + 'ColumnView', 'ComboBox', 'Draw', 'Container', 'Control', 'Cursor', 'DrawingArea', 'Embedder', + 'Font', 'Form', 'Frame', 'GridView', 'HBox', 'HPanel', 'HSplit', 'IconView', 'Image', 'Key', 'Label', + 'Line', 'ListBox', 'ListView', 'Menu', 'Message', 'Mouse', 'MovieBox', 'Panel', 'Picture', 'PictureBox', + 'ProgressBar', 'RadioButton', 'ScrollBar', 'ScrollView', 'Separator', 'Slider', 'SpinBox', 'TabStrip', + 'TextArea', 'TextBox', 'TextLabel', 'ToggleButton', 'TrayIcon', 'TreeView', 'VBox', 'VPanel', 'VSplit', + 'Watcher', 'Window', 'Dial', 'Editor', 'LCDNumber', 'Printer', 'TextEdit', 'WebBrowser', 'GLarea', + 'Report', 'ReportCloner', 'ReportContainer', 'ReportControl', 'ReportDrawing', 'ReportField', 'ReportHBox', + 'ReportImage', 'ReportLabel', 'ReportSection', 'ReportSpecialField', 'ReportTextLabel', 'ReportVBox', + 'CDRom', 'Channel', 'Music', 'Sound', 'Settings', 'VideoDevice', 'Vb', 'CGI', 'HTML', 'Request', 'Response', + 'Session', 'XmlDocument', 'XmlNode', 'XmlReader', 'XmlReaderNodeType', 'XmlWriter', 'RpcArray', 'RpcClient', + 'RpcFunction', 'RpcServer', 'RpcStruct', 'RpcType', 'XmlRpc', 'Xslt' + ), + //constants + 7 => array( + 'Pi' + ), + ), + 'SYMBOLS' => array( + '&', '&=', '&/', '*', '*=', '+', '+=', '-', '-=', '//', '/', '/=', '=', '==', '\\', '\\=', + '^', '^=', '[', ']', '{', '}', '<', '>', '<>', '<=', '>=' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #0600FF; font-weight: bold;', // Keywords + 2 => 'color: #8B1433;', // Functions + 3 => 'color: #8B1433;', // String Functions + 4 => 'color: #0600FF;', // Data Types + 5 => 'color: #1E90FF;', // Operators + 6 => 'color: #0600FF;', // Objects/Components + 7 => 'color: #0600FF;' // Constants + ), + 'COMMENTS' => array( + 1 => 'color: #1A5B1A; font-style: italic;', + 'MULTI' => 'color: #1A5B1A; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #008080;' + ), + 'BRACKETS' => array( + 0 => 'color: #612188;' + ), + 'STRINGS' => array( + 0 => 'color: #7E4B05;' + ), + 'NUMBERS' => array( + 0 => 'color: #FF0000;', + GESHI_NUMBER_INT_BASIC => 'color: #FF0000;' + ), + 'METHODS' => array( + 1 => 'color: #0000FF;' + ), + 'SYMBOLS' => array( + 0 => 'color: #6132B2;' + ), + 'REGEXPS' => array( + //3 => 'color: #8B1433;' //fakes '$' colour matched by REGEXP + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => 'http://gambasdoc.org/help/lang/{FNAMEL}', + 2 => 'http://gambasdoc.org/help/lang/{FNAMEL}', + 3 => 'http://www.google.com/search?hl=en&q={FNAMEL}+site:http://gambasdoc.org/help/lang/&btnI=I%27m%20Feeling%20Lucky', + 4 => 'http://gambasdoc.org/help/lang/type/{FNAMEL}', + 5 => 'http://gambasdoc.org/help/lang/{FNAMEL}', + 6 => 'http://www.google.com/search?hl=en&q={FNAMEL}+site:http://gambasdoc.org/&btnI=I%27m%20Feeling%20Lucky', + 7 => 'http://gambasdoc.org/help/lang/{FNAMEL}' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 =>'.' + ), + 'REGEXPS' => array( + //3 => "\\$(?!\\w)" //matches '$' at the end of Keyword + ), + 'STRICT_MODE_APPLIES' => GESHI_MAYBE, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 2 => array( + 'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_\|%\\-&;\$])" + ) + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/gdb.php b/inc/geshi/gdb.php new file mode 100644 index 000000000..ed7ee2ffa --- /dev/null +++ b/inc/geshi/gdb.php @@ -0,0 +1,175 @@ +<?php +/************************************************************************************* + * gdb.php + * -------- + * Author: Milian Wolff (mail@milianw.de) + * Copyright: (c) 2009 Milian Wolff + * Release Version: 1.0.8.8 + * Date Started: 2009/06/24 + * + * GDB language file for GeSHi. + * + * CHANGES + * ------- + * 2009/06/24 (1.0.0) + * - First Release + * + * TODO (updated 2009/06/24) + * ------------------------- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'GDB', + 'COMMENT_SINGLE' => array(), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 0 => array( + 'Application', + 'signal', + ), + 1 => array( + 'Segmentation fault', + '[KCrash Handler]', + ), + ), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC, + 'SYMBOLS' => array( + ), + 'CASE_SENSITIVE' => array( + 0 => true, + 1 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 0 => 'font-weight:bold;', + 1 => 'font-weight:bold; color: #ff0000;' + ), + 'COMMENTS' => array( + ), + 'ESCAPE_CHAR' => array( + 0 => '' + ), + 'BRACKETS' => array( + 0 => 'font-weight:bold;' + ), + 'STRINGS' => array( + 0 => 'color: #933;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;', + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + ), + 'REGEXPS' => array( + 0 => 'color: #000066; font-weight:bold;', + 1 => 'color: #006600;', + 2 => 'color: #000066;', + 3 => 'color: #0066FF; text-style:italic;', + 4 => 'color: #80B5FF; text-style:italic;', + 5 => 'color: #A3007D;', + 6 => 'color: #FF00BF;', + 7 => 'font-weight: bold;' + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 0 => '', + 1 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + //[Current Thread...], [KCrash Handler] etc. + 0 => array( + GESHI_SEARCH => '^\[.+\]', + GESHI_REPLACE => '\\0', + GESHI_MODIFIERS => 'm', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + //stack number + 1 => array( + GESHI_SEARCH => '^#\d+', + GESHI_REPLACE => '\\0', + GESHI_MODIFIERS => 'm', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + //Thread X (Thread...) + 2 => array( + GESHI_SEARCH => '^Thread \d.+$', + GESHI_REPLACE => '\\0', + GESHI_MODIFIERS => 'm', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + //Files with linenumbers + 3 => array( + GESHI_SEARCH => '(at )(.+)(:\d+\s*)$', + GESHI_REPLACE => '\\2', + GESHI_MODIFIERS => 'm', + GESHI_BEFORE => '\\1', + GESHI_AFTER => '\\3' + ), + //Libs without linenumbers + 4 => array( + GESHI_SEARCH => '(from )(.+)(\s*)$', + GESHI_REPLACE => '\\2', + GESHI_MODIFIERS => 'm', + GESHI_BEFORE => '\\1', + GESHI_AFTER => '\\3' + ), + //Hex mem address + 5 => '0x[a-f0-9]+', + //Line numbers + 6 => array( + GESHI_SEARCH => '(:)(\d+)(\s*)$', + GESHI_REPLACE => '\\2', + GESHI_MODIFIERS => 'm', + GESHI_BEFORE => '\\1', + GESHI_AFTER => '\\3' + ), + //Location + 7 => array( + GESHI_SEARCH => '( in )([^ \(\)]+)( \()', + GESHI_REPLACE => '\\2', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '\\1', + GESHI_AFTER => '\\3' + ), + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ) +); + +?> diff --git a/inc/geshi/genero.php b/inc/geshi/genero.php index 1e3d7efb6..a7ccf5fee 100644 --- a/inc/geshi/genero.php +++ b/inc/geshi/genero.php @@ -4,7 +4,7 @@ * ---------- * Author: Lars Gersmann (lars.gersmann@gmail.com) * Copyright: (c) 2007 Lars Gersmann, Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2007/07/01 * * Genero (FOURJ's Genero 4GL) language file for GeSHi. diff --git a/inc/geshi/genie.php b/inc/geshi/genie.php new file mode 100644 index 000000000..66bea6dc7 --- /dev/null +++ b/inc/geshi/genie.php @@ -0,0 +1,157 @@ +<?php +/************************************************************************************* + * genie.php + * ---------- + * Author: Nicolas Joseph (nicolas.joseph@valaide.org) + * Copyright: (c) 2009 Nicolas Joseph + * Release Version: 1.0.8.8 + * Date Started: 2009/04/29 + * + * Genie language file for GeSHi. + * + * CHANGES + * ------- + * + * TODO + * ---- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'Genie', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'COMMENT_REGEXP' => array( + //Using and Namespace directives (basic support) + //Please note that the alias syntax for using is not supported + 3 => '/(?:(?<=using[\\n\\s])|(?<=namespace[\\n\\s]))[\\n\\s]*([a-zA-Z0-9_]+\\.)*[a-zA-Z0-9_]+[\n\s]*(?=[;=])/i'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'HARDQUOTE' => array('@"', '"'), + 'HARDESCAPE' => array('""'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( + 'and', 'as', 'abstract', 'break', 'case', 'cast', 'catch', 'const', + 'construct', 'continue', 'default', 'def', 'delete', 'div', + 'dynamic', 'do', 'downto', 'else', 'ensures', 'except', 'extern', + 'false', 'final', 'finally', 'for', 'foreach', 'get', 'if', 'in', + 'init', 'inline', 'internal', 'implements', 'lock', 'not', 'null', + 'of', 'or', 'otherwise', 'out', 'override', 'pass', 'raise', + 'raises', 'readonly', 'ref', 'requires', 'self', 'set', 'static', + 'super', 'switch', 'to', 'true', 'try', 'unless', 'uses', 'var', 'virtual', + 'volatile', 'void', 'when', 'while' + ), +// 2 => array( +// ), + 3 => array( + 'is', 'isa', 'new', 'owned', 'sizeof', 'typeof', 'unchecked', + 'unowned', 'weak' + ), + 4 => array( + 'bool', 'byte', 'class', 'char', 'date', 'datetime', 'decimal', 'delegate', + 'double', 'enum', 'event', 'exception', 'float', 'int', 'interface', + 'long', 'object', 'prop', 'sbyte', 'short', 'single', 'string', + 'struct', 'ulong', 'ushort' + ), +// 5 => array( +// ), + ), + 'SYMBOLS' => array( + '+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!', ':', ';', + '(', ')', '{', '}', '[', ']', '|' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, +// 2 => false, + 3 => false, + 4 => false, +// 5 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #0600FF;', +// 2 => 'color: #FF8000; font-weight: bold;', + 3 => 'color: #008000;', + 4 => 'color: #FF0000;', +// 5 => 'color: #000000;' + ), + 'COMMENTS' => array( + 1 => 'color: #008080; font-style: italic;', +// 2 => 'color: #008080;', + 3 => 'color: #008080;', + 'MULTI' => 'color: #008080; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #008080; font-weight: bold;', + 'HARD' => 'color: #008080; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #000000;' + ), + 'STRINGS' => array( + 0 => 'color: #666666;', + 'HARD' => 'color: #666666;' + ), + 'NUMBERS' => array( + 0 => 'color: #FF0000;' + ), + 'METHODS' => array( + 1 => 'color: #0000FF;', + 2 => 'color: #0000FF;' + ), + 'SYMBOLS' => array( + 0 => 'color: #008000;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', +// 2 => '', + 3 => '', + 4 => '', +// 5 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4, + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\|\#>|^])", + 'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_<\|%\\-])" + ) + ) +); + +?> diff --git a/inc/geshi/gettext.php b/inc/geshi/gettext.php index a1dcd8c8a..e1c88e185 100644 --- a/inc/geshi/gettext.php +++ b/inc/geshi/gettext.php @@ -4,7 +4,7 @@ * -------- * Author: Milian Wolff (mail@milianw.de) * Copyright: (c) 2008 Milian Wolff - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/05/25 * * GNU Gettext .po/.pot language file for GeSHi. diff --git a/inc/geshi/glsl.php b/inc/geshi/glsl.php index 9b31fa482..f9a37ed07 100644 --- a/inc/geshi/glsl.php +++ b/inc/geshi/glsl.php @@ -4,7 +4,7 @@ * ----- * Author: Benny Baumann (BenBE@omorphia.de) * Copyright: (c) 2008 Benny Baumann (BenBE@omorphia.de) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/03/20 * * glSlang language file for GeSHi. diff --git a/inc/geshi/gml.php b/inc/geshi/gml.php index da3d3a8e8..3f8a06c4f 100644 --- a/inc/geshi/gml.php +++ b/inc/geshi/gml.php @@ -4,7 +4,7 @@ * -------- * Author: Jos� Jorge Enr�quez (jenriquez@users.sourceforge.net) * Copyright: (c) 2005 Jos� Jorge Enr�quez Rodr�guez (http://www.zonamakers.com) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2005/06/21 * * GML language file for GeSHi. diff --git a/inc/geshi/gnuplot.php b/inc/geshi/gnuplot.php index 863d0dbd6..980561d35 100644 --- a/inc/geshi/gnuplot.php +++ b/inc/geshi/gnuplot.php @@ -4,7 +4,7 @@ * ---------- * Author: Milian Wolff (mail@milianw.de) * Copyright: (c) 2008 Milian Wolff (http://milianw.de) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/07/07 * * Gnuplot script language file for GeSHi. diff --git a/inc/geshi/groovy.php b/inc/geshi/groovy.php index 7db153c75..f2a2e9ab5 100644 --- a/inc/geshi/groovy.php +++ b/inc/geshi/groovy.php @@ -4,7 +4,7 @@ * ---------- * Author: Ivan F. Villanueva B. (geshi_groovy@artificialidea.com) * Copyright: (c) 2006 Ivan F. Villanueva B.(http://www.artificialidea.com) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2006/04/29 * * Groovy language file for GeSHi. @@ -985,7 +985,7 @@ $language_data = array ( 'URLS' => array( 1 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAMEL}', 2 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAMEL}', - 3 => 'http://www.google.de/search?as_q={FNAME}&num=100&hl=en&as_occt=url&as_sitesearch=java.sun.com%2Fj2se%2F1.5.0%2Fdocs%2Fapi%2F', + 3 => 'http://www.google.de/search?as_q={FNAME}&num=100&hl=en&as_occt=url&as_sitesearch=java.sun.com%2Fj2se%2F1%2E5%2E0%2Fdocs%2Fapi%2F', 4 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}', 5 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}', 6 => 'http://www.google.de/search?q=site%3Adocs.codehaus.org/%20{FNAME}', @@ -1008,4 +1008,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/gwbasic.php b/inc/geshi/gwbasic.php new file mode 100644 index 000000000..7b2385de7 --- /dev/null +++ b/inc/geshi/gwbasic.php @@ -0,0 +1,153 @@ +<?php +/************************************************************************************* + * gwbasic.php + * ---------- + * Author: José Gabriel Moya Yangüela (josemoya@gmail.com) + * Copyright: (c) 2010 José Gabriel Moya Yangüela (http://doc.apagada.com) + * Release Version: 1.0.8.8 + * Date Started: 2010/01/30 + * + * GwBasic language file for GeSHi. + * + * CHANGES + * ------- + * REM was not classified as comment. + * APPEND and RANDOM missing. + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'GwBasic', + 'COMMENT_SINGLE' => array(1 => "'", 2=> "REM"), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + /* Statements */ + 1 => array('END','FOR','NEXT','DATA','INPUT','DIM','READ','LET', + 'GOTO','RUN','IF','RESTORE','GOSUB','RETURN','REM', + 'STOP','PRINT','CLEAR','LIST','NEW','ON','WAIT','DEF', + 'POKE','CONT','OUT','LPRINT','LLIST','WIDTH','ELSE', + 'TRON','TROFF','SWAP','ERASE','EDIT','ERROR','RESUME', + 'DELETE','AUTO','RENUM','DEFSTR','DEFINT','DEFSNG', + 'DEFDBL','LINE','WHILE','WEND','CALL','WRITE','OPTION', + 'RANDOMIZE','OPEN','CLOSE','LOAD','MERGE','SAVE', + 'COLOR','CLS','MOTOR','BSAVE','BLOAD','SOUND','BEEP', + 'PSET','PRESET','SCREEN','KEY','LOCATE','TO','THEN', + 'STEP','USR','FN','SPC','NOT','ERL','ERR','STRING', + 'USING','INSTR','VARPTR','CSRLIN','POINT','OFF', + 'FILES','FIELD','SYSTEM','NAME','LSET','RSET','KILL', + 'PUT','GET','RESET','COMMON','CHAIN','PAINT','COM', + 'CIRCLE','DRAW','PLAY','TIMER','IOCTL','CHDIR','MKDIR', + 'RMDIR','SHELL','VIEW','WINDOW','PMAP','PALETTE','LCOPY', + 'CALLS','PCOPY','LOCK','UNLOCK','RANDOM','APPEND', + ), + 2 => array( + /* Functions */ + 'CVI','CVS','CVD','MKI','MKS','MKD','ENVIRON', + 'LEFT','RIGHT','MID','SGN','INT','ABS', + 'SQR','SIN','LOG','EXP','COS','TAN','ATN', + 'FRE','INP','POS','LEN','STR','VAL','ASC', + 'CHR','PEEK','SPACE','OCT','HEX','LPOS', + 'CINT','CSNG','CDBL','FIX','PEN','STICK', + 'STRIG','EOF','LOC','LOF' + ), + 3 => array( + /* alpha Operators */ + 'AND','OR','XOR','EQV','IMP','MOD' + ), + 4 => array( + /* parameterless functions */ + 'INKEY','DATE','TIME','ERDEV','RND' + ) + ), + 'SYMBOLS' => array( + 0 => array( + '>','=','<','+','-','*','/','^','\\' + ), + 1 => array( + '?' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #00a1a1;font-weight: bold', + 2 => 'color: #000066;font-weight: bold', + 3 => 'color: #00a166;font-weight: bold', + 4 => 'color: #0066a1;font-weight: bold' + ), + 'COMMENTS' => array( + 1 => 'color: #808080;', + 2 => 'color: #808080;' + ), + 'BRACKETS' => array( + 0 => 'color: #66cc66;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + /* Same as KEYWORDS[3] (and, or, not...) */ + 0 => 'color: #00a166;font-weight: bold', + 1 => 'color: #00a1a1;font-weight: bold', + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099;' + ), + 'SCRIPT' => array( + ), + 'REGEXPS' => array( + 1 => 'color: #708090' + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + 1 => '^[0-9]+ ' + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/haskell.php b/inc/geshi/haskell.php index f0e570f1c..4997a26c3 100644 --- a/inc/geshi/haskell.php +++ b/inc/geshi/haskell.php @@ -4,7 +4,7 @@ * ---------- * Author: Jason Dagit (dagit@codersbase.com) based on ocaml.php by Flaie (fireflaie@gmail.com) * Copyright: (c) 2005 Flaie, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2005/08/27 * * Haskell language file for GeSHi. @@ -41,7 +41,10 @@ $language_data = array ( 'LANG_NAME' => 'Haskell', 'COMMENT_SINGLE' => array( 1 => '--'), 'COMMENT_MULTI' => array('{-' => '-}'), - 'COMMENT_REGEXP' => array(2 => "/-->/"), + 'COMMENT_REGEXP' => array( + 2 => "/-->/", + 3 => "/{-(?:(?R)|.)-}/s", //Nested Comments + ), 'CASE_KEYWORDS' => 0, 'QUOTEMARKS' => array('"'), 'ESCAPE_CHAR' => "\\", @@ -146,7 +149,8 @@ $language_data = array ( 'COMMENTS' => array( 1 => 'color: #5d478b; font-style: italic;', 2 => 'color: #339933; font-weight: bold;', - 'MULTI' => 'color: #5d478b; font-style: italic;' /* light purpHle */ + 3 => 'color: #5d478b; font-style: italic;', /* light purple */ + 'MULTI' => 'color: #5d478b; font-style: italic;' /* light purple */ ), 'ESCAPE_CHAR' => array( 0 => 'background-color: #3cb371; font-weight: bold;' @@ -195,4 +199,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/hicest.php b/inc/geshi/hicest.php new file mode 100644 index 000000000..6cb61f87c --- /dev/null +++ b/inc/geshi/hicest.php @@ -0,0 +1,108 @@ +<?php +/************************************************************************************* + * hicest.php + * -------- + * Author: Georg Petrich (spt@hicest.com) + * Copyright: (c) 2010 Georg Petrich (http://www.HicEst.com) + * Release Version: 1.0.8.8 + * Date Started: 2010/03/15 + * + * HicEst language file for GeSHi. + * + * CHANGES + * ------- + * yyyy/mm/dd (v.v.v.v) + * - First Release + * + * TODO (updated yyyy/mm/dd) + * ------------------------- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array( + 'LANG_NAME' => 'HicEst', + 'COMMENT_SINGLE' => array(1 => '!'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"', '\''), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + '$cmd_line', 'abs', 'acos', 'alarm', 'alias', 'allocate', 'appendix', 'asin', 'atan', 'axis', 'beep', + 'call', 'ceiling', 'char', 'character', 'com', 'continue', 'cos', 'cosh', 'data', 'diffeq', 'dimension', 'dlg', 'dll', + 'do', 'edit', 'else', 'elseif', 'end', 'enddo', 'endif', 'exp', 'floor', 'function', 'fuz', 'goto', 'iand', 'ichar', + 'ieor', 'if', 'index', 'init', 'int', 'intpol', 'ior', 'key', 'len', 'len_trim', 'line', 'lock', 'log', 'max', 'maxloc', + 'min', 'minloc', 'mod', 'nint', 'not', 'open', 'pop', 'ran', 'read', 'real', 'return', 'rgb', 'roots', 'sign', 'sin', + 'sinh', 'solve', 'sort', 'subroutine', 'sum', 'system', 'tan', 'tanh', 'then', 'time', 'use', 'window', 'write', 'xeq' + ) + ), + 'SYMBOLS' => array( + 1 => array( + '(', ')', '+', '-', '*', '/', '=', '<', '>', '!', '^', ':', ',' + ), + 2 => array( + '$', '$$' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #ff0000;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 'MULTI' => 'color: #666666; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #0000ff;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;', + ), + 'METHODS' => array( + 0 => 'color: #004000;' + ), + 'SYMBOLS' => array( + 1 => 'color: #339933;', + 2 => 'color: #ff0000;' + ), + 'REGEXPS' => array(), + 'SCRIPT' => array() + ), + 'URLS' => array(1 => ''), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array(), + 'REGEXPS' => array(), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array() +); + +?>
\ No newline at end of file diff --git a/inc/geshi/hq9plus.php b/inc/geshi/hq9plus.php index 2a5c429ca..50a0f80c6 100644 --- a/inc/geshi/hq9plus.php +++ b/inc/geshi/hq9plus.php @@ -4,7 +4,7 @@ * ---------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2009/10/31 * * HQ9+ language file for GeSHi. diff --git a/inc/geshi/html4strict.php b/inc/geshi/html4strict.php index 314351523..301513e4e 100644 --- a/inc/geshi/html4strict.php +++ b/inc/geshi/html4strict.php @@ -4,7 +4,7 @@ * --------------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/07/10 * * HTML 4.01 strict language file for GeSHi. diff --git a/inc/geshi/icon.php b/inc/geshi/icon.php new file mode 100644 index 000000000..0712c21c3 --- /dev/null +++ b/inc/geshi/icon.php @@ -0,0 +1,212 @@ +<?php +/************************************************************************************* + * icon.php + * -------- + * Author: Matt Oates (mattoates@gmail.com) + * Copyright: (c) 2010 Matt Oates (http://mattoates.co.uk) + * Release Version: 1.0.8.8 + * Date Started: 2010/04/24 + * + * Icon language file for GeSHi. + * + * CHANGES + * ------- + * 2010/04/24 (0.0.0.2) + * - Validated with Geshi langcheck.php FAILED due to preprocessor keywords looking like symbols + * - Hard wrapped to improve readability + * 2010/04/20 (0.0.0.1) + * - First Release + * + * TODO (updated 2010/04/20) + * ------------------------- + * - Do the & need replacing with &? + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array( + 'LANG_NAME' => 'Icon', + 'COMMENT_SINGLE' => array(1 => '#'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"', '\''), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( + 'break', 'case', 'continue', 'create', 'default', 'do', 'else', + 'end', 'every', 'fail', 'for', 'if', 'import', 'initial', + 'initially', 'invocable', 'link', 'next', 'not', 'of', 'package', + 'procedure', 'record', 'repeat', 'return', 'switch', 'suspend', + 'then', 'to', 'until', 'while' + ), + 2 => array( + 'global', 'local', 'static' + ), + 3 => array( + 'allocated', 'ascii', 'clock', 'collections', + 'column', 'cset', 'current', 'date', 'dateline', 'digits', + 'dump', 'e', 'error', 'errornumber', 'errortext', + 'errorvalue', 'errout', 'eventcode', 'eventsource', 'eventvalue', + 'fail', 'features', 'file', 'host', 'input', 'lcase', + 'letters', 'level', 'line', 'main', 'now', 'null', + 'output', 'phi', 'pi', 'pos', 'progname', 'random', + 'regions', 'source', 'storage', 'subject', 'syserr', 'time', + 'trace', 'ucase', 'version', 'col', 'control', 'interval', + 'ldrag', 'lpress', 'lrelease', 'mdrag', 'meta', 'mpress', + 'mrelease', 'rdrag', 'resize', 'row', 'rpress', 'rrelease', + 'shift', 'window', 'x', 'y' + ), + 4 => array( + 'abs', 'acos', 'any', 'args', 'asin', 'atan', 'bal', 'center', 'char', + 'chmod', 'close', 'cofail', 'collect', 'copy', 'cos', 'cset', 'ctime', 'delay', 'delete', + 'detab', 'display', 'dtor', 'entab', 'errorclear', 'event', 'eventmask', 'EvGet', 'exit', + 'exp', 'fetch', 'fieldnames', 'find', 'flock', 'flush', 'function', 'get', 'getch', + 'getche', 'getenv', 'gettimeofday', 'globalnames', 'gtime', 'iand', 'icom', 'image', + 'insert', 'integer', 'ior', 'ishift', 'ixor', 'key', 'left', 'list', 'load', 'loadfunc', + 'localnames', 'log', 'many', 'map', 'match', 'member', 'mkdir', 'move', 'name', 'numeric', + 'open', 'opmask', 'ord', 'paramnames', 'parent', 'pipe', 'pop', 'pos', 'proc', 'pull', + 'push', 'put', 'read', 'reads', 'real', 'receive', 'remove', 'rename', 'repl', 'reverse', + 'right', 'rmdir', 'rtod', 'runerr', 'seek', 'select', 'send', 'seq', 'serial', 'set', + 'setenv', 'sort', 'sortf', 'sql', 'sqrt', 'stat', 'stop', 'string', 'system', 'tab', + 'table', 'tan', 'trap', 'trim', 'truncate', 'type', 'upto', 'utime', 'variable', 'where', + 'write', 'writes' + ), + 5 => array( + 'Active', 'Alert', 'Bg', 'Clip', 'Clone', 'Color', 'ColorValue', + 'CopyArea', 'Couple', 'DrawArc', 'DrawCircle', 'DrawCurve', 'DrawCylinder', 'DrawDisk', + 'DrawImage', 'DrawLine', 'DrawPoint', 'DrawPolygon', 'DrawRectangle', 'DrawSegment', + 'DrawSphere', 'DrawString', 'DrawTorus', 'EraseArea', 'Event', 'Fg', 'FillArc', + 'FillCircle', 'FillPolygon', 'FillRectangle', 'Font', 'FreeColor', 'GotoRC', 'GotoXY', + 'IdentifyMatrix', 'Lower', 'MatrixMode', 'NewColor', 'PaletteChars', 'PaletteColor', + 'PaletteKey', 'Pattern', 'Pending', 'Pixel', 'PopMatrix', 'PushMatrix', 'PushRotate', + 'PushScale', 'PushTranslate', 'QueryPointer', 'Raise', 'ReadImage', 'Refresh', 'Rotate', + 'Scale', 'Texcoord', 'TextWidth', 'Texture', 'Translate', 'Uncouple', 'WAttrib', + 'WDefault', 'WFlush', 'WindowContents', 'WriteImage', 'WSync' + ), + 6 => array( + 'define', 'include', 'ifdef', 'ifndef', 'else', 'endif', 'error', + 'line', 'undef' + ), + 7 => array( + '_V9', '_AMIGA', '_ACORN', '_CMS', '_MACINTOSH', '_MSDOS_386', + '_MS_WINDOWS_NT', '_MSDOS', '_MVS', '_OS2', '_POR', 'T', '_UNIX', '_POSIX', '_DBM', + '_VMS', '_ASCII', '_EBCDIC', '_CO_EXPRESSIONS', '_CONSOLE_WINDOW', '_DYNAMIC_LOADING', + '_EVENT_MONITOR', '_EXTERNAL_FUNCTIONS', '_KEYBOARD_FUNCTIONS', '_LARGE_INTEGERS', + '_MULTITASKING', '_PIPES', '_RECORD_IO', '_SYSTEM_FUNCTION', '_MESSAGING', '_GRAPHICS', + '_X_WINDOW_SYSTEM', '_MS_WINDOWS', '_WIN32', '_PRESENTATION_MGR', '_ARM_FUNCTIONS', + '_DOS_FUNCTIONS' + ), + 8 => array( + 'line' + ) + ), + 'SYMBOLS' => array( + 1 => array( + '(', ')', '{', '}', '[', ']', '+', '-', '*', '/', '\\', '%', '=', '<', '>', '!', '^', + '&', '|', '?', ':', ';', ',', '.', '~', '@' + ), + 2 => array( + '$(', '$)', '$<', '$>', '$' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + 5 => true, + 6 => true, + 7 => true, + 8 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #b1b100;', + 2 => 'color: #b1b100;', + 3 => 'color: #b1b100;', + 4 => 'color: #b1b100;', + 5 => 'color: #b1b100;', + 6 => 'color: #b1b100;', + 7 => 'color: #b1b100;', + 8 => 'color: #b1b100;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 'MULTI' => 'color: #666666; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #0000ff;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;', + ), + 'METHODS' => array( + 0 => 'color: #004000;' + ), + 'SYMBOLS' => array( + 1 => 'color: #339933;', + 2 => 'color: #b1b100;' + ), + 'REGEXPS' => array(), + 'SCRIPT' => array() + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array(1 => '.'), + 'REGEXPS' => array(), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array(), + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 3 => array( + 'DISALLOWED_BEFORE' => '(?<=&)' + ), + 4 => array( + 'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9_\"\'])", + 'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_\"\'])" + ), + 6 => array( + 'DISALLOWED_BEFORE' => '(?<=\$)' + ), + 8 => array( + 'DISALLOWED_BEFORE' => '(?<=#)' + ) + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/idl.php b/inc/geshi/idl.php index 9160fd150..d2d9a92fa 100644 --- a/inc/geshi/idl.php +++ b/inc/geshi/idl.php @@ -4,7 +4,7 @@ * ------- * Author: Cedric Bosdonnat (cedricbosdo@openoffice.org) * Copyright: (c) 2006 Cedric Bosdonnat - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2006/08/20 * * Unoidl language file for GeSHi. diff --git a/inc/geshi/ini.php b/inc/geshi/ini.php index 365b4d6f8..e48cc045c 100644 --- a/inc/geshi/ini.php +++ b/inc/geshi/ini.php @@ -4,7 +4,7 @@ * -------- * Author: deguix (cevo_deguix@yahoo.com.br) * Copyright: (c) 2005 deguix - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2005/03/27 * * INI language file for GeSHi. diff --git a/inc/geshi/inno.php b/inc/geshi/inno.php index 99563514d..9ec8cdfd9 100644 --- a/inc/geshi/inno.php +++ b/inc/geshi/inno.php @@ -4,7 +4,7 @@ * ---------- * Author: Thomas Klingler (hotline@theratech.de) based on delphi.php from J�rja Norbert (jnorbi@vipmail.hu) * Copyright: (c) 2004 J�rja Norbert, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2005/07/29 * * Inno Script language inkl. Delphi (Object Pascal) language file for GeSHi. diff --git a/inc/geshi/intercal.php b/inc/geshi/intercal.php index a58960089..cd800a8eb 100644 --- a/inc/geshi/intercal.php +++ b/inc/geshi/intercal.php @@ -4,7 +4,7 @@ * ---------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2009/10/31 * * INTERCAL language file for GeSHi. diff --git a/inc/geshi/io.php b/inc/geshi/io.php index 7ec53a881..94c278f03 100644 --- a/inc/geshi/io.php +++ b/inc/geshi/io.php @@ -4,7 +4,7 @@ * ------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2006 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2006/09/23 * * Io language file for GeSHi. Thanks to Johnathan Wright for the suggestion and help diff --git a/inc/geshi/j.php b/inc/geshi/j.php new file mode 100644 index 000000000..61154c7ef --- /dev/null +++ b/inc/geshi/j.php @@ -0,0 +1,227 @@ +<?php +/************************************************************************************* + * j.php + * -------- + * Author: Ric Sherlock (tikkanz@gmail.com) + * Copyright: (c) 2009 Ric Sherlock + * Release Version: 1.0.8.8 + * Date Started: 2009/11/10 + * + * J language file for GeSHi. + * + * CHANGES + * ------- + * 2010/03/01 (1.0.8.8) + * - Add support for label_xyz. and goto_xyz. + * - Fix highlighting of for_i. + * - Use alternative method for highlighting for_xyz. construct + * 2010/02/14 (1.0.8.7) + * - Add support for primitives + * 2010/01/12 (1.0.2) + * - Use HARDQUOTE for strings + * - Highlight open quotes/incomplete strings + * - Highlight multi-line comments that use Note + * - Refinements for NUMBERS and Argument keywords + * - Highlight infinity and neg. infinity using REGEXPS + * - Highlight "for_myvar." style Control keyword using REGEXPS + * 2009/12/14 (1.0.1) + * - Regex for NUMBERS, SYMBOLS for () and turn off BRACKETS + * 2009/11/12 (1.0.0) + * - First Release + * + * + * TODO (updated 2010/01/27) + * ------------------------- + * * combine keyword categories by using conditional regex statement in PARSER CONTROL? + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'J', + 'COMMENT_SINGLE' => array(), + 'COMMENT_MULTI' => array(), + 'COMMENT_REGEXP' => array( + 1 => '/(?<!\w)NB\..*?$/m', //singleline comments NB. + 2 => '/(?<=\bNote\b).*?$\s+\)(?:(?!\n)\s)*$/sm', //multiline comments in Note + 3 => "/'[^']*?$/m" //incomplete strings/open quotes + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array(), + 'ESCAPE_CHAR' => '', + 'HARDQUOTE' => array("'", "'"), + 'HARDESCAPE' => array("'"), + 'HARDCHAR' => "'", + 'NUMBERS' => array( + //Some instances of infinity are not correctly handled by GeSHi NUMBERS currently + //There are two solutions labelled "infinity Method A" and "infinity Method B" + //infinity Method B - requires following adjustment to line 3349 of geshi.php + // preg_match('#\d#' becomes preg_match('#[\d_]#' + 0 => '\b(?:_?\d+(?:\.\d+)?(?:x|[bejprx]_?[\da-z]+(?:\.[\da-z]+)?)?)(?![\w\.\:])', //infinity Method A + //0 => '\b(?:_?\d+(?:\.\d+)?(?:x|[bejprx]_?[\da-z]+(?:\.[\da-z]+)?)?|__?)(?![\w\.\:])', //infinity Method B + ), + 'KEYWORDS' => array( + //Control words + 1 => array( + 'assert.', 'break.', 'case.', 'catch.', 'catcht.', 'continue.', 'do.', + 'else.', 'elseif.', 'end.', 'fcase.', 'for.', 'goto.', 'if.', 'label.', + 'return.', 'select.', 'throw.', 'trap.', 'try.', 'while.', 'whilst.' + ), + //Arguments + 2 => array( + 'm', 'n', 'u', 'v', 'x', 'y' + ), +/* +Commented out for now due to conflicts with Lang Check + //Primitives beginning with a symbol (except . or :) + 6 => array( + '=', '<', '<.', '<:', //verbs + '_:','>', '>.', '>:', + '+', '+.', '+:', '*', '*.', '*:', '-', '-.', '-:', '%', '%.', '%:', + '^', '^.', '$', '$.', '$:', '~.', '~:', '\|', '|.', '|:', + ',', ',.', ',:', ';', ';:', '#', '#.', '#:', '!', '/:', '\:', + '[', '[:', ']', '{', '{.', '{:', '{::', '}.', '}:', + '".', '":', '?', '?.', + '~', '\/;', '\\', '/.', '\\.', '}', //adverbs + '^:', ';.', '!.', '!:', //conj + '"', '`', '`:', '@', '@.', '@:', + '&', '&.', '&:', '&.:', + '_.', //nouns + '=.', '=:', //other + ), + //Primitives beginning with a letter or number + 7 => array( + 'A.', 'c.', 'C.', 'e.', 'E.', //verbs + 'i.', 'i:', 'I.', 'j.', 'L.', 'o.', + 'p.', 'p..', 'p:', 'q:', 'r.', 's:', 'u:', 'x:', + '_9:', '_8:', '_7:', '_6:', '_5:', '_4:', '_3:', '_2:', '_1:', + '0:', '1:', '2:', '3:', '4:', '5:', '6:', '7:', '8:', '9:', + 'b.', 'f.', 'M.', 't.', 't:', //adverbs + 'd.', 'D.', 'D:', 'H.', 'L:', 'S:', 'T.', //conj + 'a.', 'a:', //nouns + ), + //Primitives beginning with symbol . or : + 8 => array( + '..', '.:', '.', ':.', '::', ':', //conj + ), +*/ + ), + 'SYMBOLS' => array( + //Punctuation + 0 => array( + '(', ')' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, +// 6 => true, +// 7 => true, +// 8 => true, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #0000ff; font-weight: bold;', + 2 => 'color: #0000cc; font-weight: bold;', +// 6 => 'color: #000000; font-weight: bold;', +// 7 => 'color: #000000; font-weight: bold;', +// 8 => 'color: #000000; font-weight: bold;', + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 2 => 'color: #666666; font-style: italic; font-weight: bold;', + 3 => 'color: #ff00ff; ', //open quote + 'MULTI' => 'color: #666666; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 'HARD' => 'font-weight: bold;', + 0 => '', + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 'HARD' => 'color: #ff0000;', + 0 => 'color: #ff0000;', + ), + 'NUMBERS' => array( + 0 => 'color: #009999; font-weight: bold;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #009900; font-weight: bold;' + ), + 'REGEXPS' => array( + 0 => 'color: #0000ff; font-weight: bold;', //for_xyz. - same as kw1 + 1 => 'color: #009999; font-weight: bold;' //infinity - same as nu0 + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', //'http://www.jsoftware.com/help/dictionary/ctrl.htm', + 2 => '', +// 6 => '', //'http://www.jsoftware.com/jwiki/Vocabulary', +// 7 => '', //'http://www.jsoftware.com/jwiki/Vocabulary', +// 8 => '', //'http://www.jsoftware.com/jwiki/Vocabulary', + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + 0 => '\b(for|goto|label)_[a-zA-Z]\w*\.', //for_xyz. - should be kw1 + 1 => '\b__?(?![\w\.\:])' //infinity - should be nu0 + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'PARSER_CONTROL' => array( + 'ENABLE_FLAGS' => array( + 'BRACKETS' => GESHI_NEVER, + ), + 'KEYWORDS' => array( + //Control words + 2 => array( + 'DISALLOWED_BEFORE' => '(?<!\w)', + 'DISALLOWED_AFTER' => '(?![\w\.\:])', + ), + //Primtives starting with a symbol (except . or :) + 6 => array( + 'DISALLOWED_BEFORE' => '(?!K)', // effect should be to allow anything + 'DISALLOWED_AFTER' => '(?=.*)', + ), + //Primtives starting with a letter + 7 => array( + 'DISALLOWED_BEFORE' => '(?<!\w)', + 'DISALLOWED_AFTER' => '(?=.*)', + ), + //Primtives starting with symbol . or : + 8 => array( + 'DISALLOWED_BEFORE' => '(?<=\s)', + 'DISALLOWED_AFTER' => '(?=.*)', + ), + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/java.php b/inc/geshi/java.php index d8a2d5e4d..3269dffe2 100644 --- a/inc/geshi/java.php +++ b/inc/geshi/java.php @@ -4,7 +4,7 @@ * -------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/07/10 * * Java language file for GeSHi. diff --git a/inc/geshi/java5.php b/inc/geshi/java5.php index 34696d760..bc9af739a 100644 --- a/inc/geshi/java5.php +++ b/inc/geshi/java5.php @@ -4,7 +4,7 @@ * -------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/07/10 * * Java language file for GeSHi. @@ -56,7 +56,7 @@ $language_data = array ( 'COMMENT_MULTI' => array('/*' => '*/'), 'COMMENT_REGEXP' => array( //Import and Package directives (Basic Support only) - 2 => '/(?:(?<=import[\\n\\s])|(?<=package[\\n\\s]))[\\n\\s]*([a-zA-Z0-9_]+\\.)*([a-zA-Z0-9_]+|\*)(?=[\n\s;])/i', + 2 => '/(?:(?<=import[\\n\\s](?!static))|(?<=import[\\n\\s]static[\\n\\s])|(?<=package[\\n\\s]))[\\n\\s]*([a-zA-Z0-9_]+\\.)*([a-zA-Z0-9_]+|\*)(?=[\n\s;])/i', // javadoc comments 3 => '#/\*\*(?![\*\/]).*\*/#sU' ), @@ -850,167 +850,167 @@ $language_data = array ( 2 => '', 3 => '', 4 => '', - 5 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/applet/{FNAME}.html', - 6 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/{FNAME}.html', - 7 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/color/{FNAME}.html', - 8 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/datatransfer/{FNAME}.html', - 9 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/dnd/{FNAME}.html', - 10 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/event/{FNAME}.html', - 11 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/font/{FNAME}.html', - 12 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/geom/{FNAME}.html', - 13 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/im/{FNAME}.html', - 14 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/im/spi/{FNAME}.html', - 15 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/image/{FNAME}.html', - 16 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/image/renderable/{FNAME}.html', - 17 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/awt/print/{FNAME}.html', - 18 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/beans/{FNAME}.html', - 19 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/beans/beancontext/{FNAME}.html', - 20 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/io/{FNAME}.html', - 21 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/{FNAME}.html', - 22 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/annotation/{FNAME}.html', - 23 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/instrument/{FNAME}.html', - 24 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/management/{FNAME}.html', - 25 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/ref/{FNAME}.html', - 26 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/lang/reflect/{FNAME}.html', - 27 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/math/{FNAME}.html', - 28 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/net/{FNAME}.html', - 29 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/nio/{FNAME}.html', - 30 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/nio/channels/{FNAME}.html', - 31 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/nio/channels/spi/{FNAME}.html', - 32 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/nio/charset/{FNAME}.html', - 33 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/nio/charset/spi/{FNAME}.html', - 34 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/{FNAME}.html', - 35 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/activation/{FNAME}.html', - 36 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/dgc/{FNAME}.html', - 37 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/registry/{FNAME}.html', - 38 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/rmi/server/{FNAME}.html', - 39 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/security/{FNAME}.html', - 40 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/security/acl/{FNAME}.html', - 41 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/security/cert/{FNAME}.html', - 42 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/security/interfaces/{FNAME}.html', - 43 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/security/spec/{FNAME}.html', - 44 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/sql/{FNAME}.html', - 45 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/text/{FNAME}.html', - 46 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/{FNAME}.html', - 47 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/{FNAME}.html', - 48 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/atomic/{FNAME}.html', - 49 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/locks/{FNAME}.html', - 50 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/jar/{FNAME}.html', - 51 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/logging/{FNAME}.html', - 52 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/prefs/{FNAME}.html', - 53 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/regex/{FNAME}.html', - 54 => 'http://java.sun.com/j2se/1.5.0/docs/api/java/util/zip/{FNAME}.html', - 55 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/accessibility/{FNAME}.html', - 56 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/activity/{FNAME}.html', - 57 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/crypto/{FNAME}.html', - 58 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/crypto/interfaces/{FNAME}.html', - 59 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/crypto/spec/{FNAME}.html', - 60 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/{FNAME}.html', - 61 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/event/{FNAME}.html', - 62 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/metadata/{FNAME}.html', - 63 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/plugins/bmp/{FNAME}.html', - 64 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/plugins/jpeg/{FNAME}.html', - 65 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/spi/{FNAME}.html', - 66 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/imageio/stream/{FNAME}.html', - 67 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/{FNAME}.html', - 68 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/loading/{FNAME}.html', - 69 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/modelmbean/{FNAME}.html', - 70 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/monitor/{FNAME}.html', - 71 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/openmbean/{FNAME}.html', - 72 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/relation/{FNAME}.html', - 73 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/remote/{FNAME}.html', - 74 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/remote/rmi/{FNAME}.html', - 75 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/management/timer/{FNAME}.html', - 76 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/naming/{FNAME}.html', - 77 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/naming/directory/{FNAME}.html', - 78 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/naming/event/{FNAME}.html', - 79 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/naming/ldap/{FNAME}.html', - 80 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/naming/spi/{FNAME}.html', - 81 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/net/{FNAME}.html', - 82 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/net/ssl/{FNAME}.html', - 83 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/print/{FNAME}.html', - 84 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/print/attribute/{FNAME}.html', - 85 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/print/attribute/standard/{FNAME}.html', - 86 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/print/event/{FNAME}.html', - 87 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/rmi/{FNAME}.html', - 88 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/rmi/CORBA/{FNAME}.html', - 89 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/rmi/ssl/{FNAME}.html', - 90 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/{FNAME}.html', - 91 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/callback/{FNAME}.html', - 92 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/kerberos/{FNAME}.html', - 93 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/login/{FNAME}.html', - 94 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/spi/{FNAME}.html', - 95 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/auth/x500/{FNAME}.html', - 96 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/security/sasl/{FNAME}.html', - 97 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sound/midi/{FNAME}.html', - 98 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sound/midi/spi/{FNAME}.html', - 99 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sound/sampled/{FNAME}.html', - 100 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sound/sampled/spi/{FNAME}.html', - 101 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sql/{FNAME}.html', - 102 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sql/rowset/{FNAME}.html', - 103 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sql/rowset/serial/{FNAME}.html', - 104 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/sql/rowset/spi/{FNAME}.html', - 105 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/{FNAME}.html', - 106 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/border/{FNAME}.html', - 107 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/colorchooser/{FNAME}.html', - 108 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/event/{FNAME}.html', - 109 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/filechooser/{FNAME}.html', - 110 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/plaf/{FNAME}.html', - 111 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/plaf/basic/{FNAME}.html', - 112 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/plaf/metal/{FNAME}.html', - 113 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/plaf/multi/{FNAME}.html', - 114 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/plaf/synth/{FNAME}.html', - 115 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/table/{FNAME}.html', - 116 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/{FNAME}.html', - 117 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/html/{FNAME}.html', - 118 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/html/parser/{FNAME}.html', - 119 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/text/rtf/{FNAME}.html', - 120 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/tree/{FNAME}.html', - 121 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/undo/{FNAME}.html', - 122 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/transaction/{FNAME}.html', - 123 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/transaction/xa/{FNAME}.html', - 124 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/{FNAME}.html', - 125 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/datatype/{FNAME}.html', - 126 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/namespace/{FNAME}.html', - 127 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/parsers/{FNAME}.html', - 128 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/{FNAME}.html', - 129 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/dom/{FNAME}.html', - 130 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/sax/{FNAME}.html', - 131 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/transform/stream/{FNAME}.html', - 132 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/validation/{FNAME}.html', - 133 => 'http://java.sun.com/j2se/1.5.0/docs/api/javax/xml/xpath/{FNAME}.html', - 134 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/ietf/jgss/{FNAME}.html', - 135 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CORBA/{FNAME}.html', - 136 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CORBA/DynAnyPackage/{FNAME}.html', - 137 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CORBA/TypeCodePackage/{FNAME}.html', - 138 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CORBA/portable/{FNAME}.html', - 139 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CosNaming/{FNAME}.html', - 140 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CosNaming/NamingContextExtPackage/{FNAME}.html', - 141 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/CosNaming/NamingContextPackage/{FNAME}.html', - 142 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/Dynamic/{FNAME}.html', - 143 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/DynamicAny/{FNAME}.html', - 144 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/DynamicAny/DynAnyFactoryPackage/{FNAME}.html', - 145 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/DynamicAny/DynAnyPackage/{FNAME}.html', - 146 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/IOP/{FNAME}.html', - 147 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/IOP/CodecFactoryPackage/{FNAME}.html', - 148 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/IOP/CodecPackage/{FNAME}.html', - 149 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/Messaging/{FNAME}.html', - 150 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableInterceptor/{FNAME}.html', - 151 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableInterceptor/ORBInitInfoPackage/{FNAME}.html', - 152 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableServer/{FNAME}.html', - 153 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableServer/CurrentPackage/{FNAME}.html', - 154 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableServer/POAManagerPackage/{FNAME}.html', - 155 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableServer/POAPackage/{FNAME}.html', - 156 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/PortableServer/ServantLocatorPackage/{FNAME}.html', - 157 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/SendingContext/{FNAME}.html', - 158 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/omg/stub/java/rmi/{FNAME}.html', - 159 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/w3c/dom/{FNAME}.html', - 160 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/w3c/dom/bootstrap/{FNAME}.html', - 161 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/w3c/dom/events/{FNAME}.html', - 162 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/w3c/dom/ls/{FNAME}.html', - 163 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/xml/sax/{FNAME}.html', - 164 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/xml/sax/ext/{FNAME}.html', - 165 => 'http://java.sun.com/j2se/1.5.0/docs/api/org/xml/sax/helpers/{FNAME}.html', + 5 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/applet/{FNAME}.html', + 6 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/{FNAME}.html', + 7 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/color/{FNAME}.html', + 8 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/datatransfer/{FNAME}.html', + 9 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/dnd/{FNAME}.html', + 10 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/event/{FNAME}.html', + 11 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/font/{FNAME}.html', + 12 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/geom/{FNAME}.html', + 13 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/im/{FNAME}.html', + 14 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/im/spi/{FNAME}.html', + 15 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/image/{FNAME}.html', + 16 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/image/renderable/{FNAME}.html', + 17 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/awt/print/{FNAME}.html', + 18 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/beans/{FNAME}.html', + 19 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/beans/beancontext/{FNAME}.html', + 20 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/io/{FNAME}.html', + 21 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/lang/{FNAME}.html', + 22 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/lang/annotation/{FNAME}.html', + 23 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/lang/instrument/{FNAME}.html', + 24 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/lang/management/{FNAME}.html', + 25 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/lang/ref/{FNAME}.html', + 26 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/lang/reflect/{FNAME}.html', + 27 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/math/{FNAME}.html', + 28 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/net/{FNAME}.html', + 29 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/nio/{FNAME}.html', + 30 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/nio/channels/{FNAME}.html', + 31 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/nio/channels/spi/{FNAME}.html', + 32 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/nio/charset/{FNAME}.html', + 33 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/nio/charset/spi/{FNAME}.html', + 34 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/rmi/{FNAME}.html', + 35 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/rmi/activation/{FNAME}.html', + 36 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/rmi/dgc/{FNAME}.html', + 37 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/rmi/registry/{FNAME}.html', + 38 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/rmi/server/{FNAME}.html', + 39 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/security/{FNAME}.html', + 40 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/security/acl/{FNAME}.html', + 41 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/security/cert/{FNAME}.html', + 42 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/security/interfaces/{FNAME}.html', + 43 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/security/spec/{FNAME}.html', + 44 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/sql/{FNAME}.html', + 45 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/text/{FNAME}.html', + 46 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/util/{FNAME}.html', + 47 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/util/concurrent/{FNAME}.html', + 48 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/util/concurrent/atomic/{FNAME}.html', + 49 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/util/concurrent/locks/{FNAME}.html', + 50 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/util/jar/{FNAME}.html', + 51 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/util/logging/{FNAME}.html', + 52 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/util/prefs/{FNAME}.html', + 53 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/util/regex/{FNAME}.html', + 54 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/java/util/zip/{FNAME}.html', + 55 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/accessibility/{FNAME}.html', + 56 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/activity/{FNAME}.html', + 57 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/crypto/{FNAME}.html', + 58 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/crypto/interfaces/{FNAME}.html', + 59 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/crypto/spec/{FNAME}.html', + 60 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/imageio/{FNAME}.html', + 61 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/imageio/event/{FNAME}.html', + 62 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/imageio/metadata/{FNAME}.html', + 63 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/imageio/plugins/bmp/{FNAME}.html', + 64 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/imageio/plugins/jpeg/{FNAME}.html', + 65 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/imageio/spi/{FNAME}.html', + 66 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/imageio/stream/{FNAME}.html', + 67 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/management/{FNAME}.html', + 68 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/management/loading/{FNAME}.html', + 69 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/management/modelmbean/{FNAME}.html', + 70 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/management/monitor/{FNAME}.html', + 71 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/management/openmbean/{FNAME}.html', + 72 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/management/relation/{FNAME}.html', + 73 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/management/remote/{FNAME}.html', + 74 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/management/remote/rmi/{FNAME}.html', + 75 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/management/timer/{FNAME}.html', + 76 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/naming/{FNAME}.html', + 77 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/naming/directory/{FNAME}.html', + 78 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/naming/event/{FNAME}.html', + 79 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/naming/ldap/{FNAME}.html', + 80 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/naming/spi/{FNAME}.html', + 81 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/net/{FNAME}.html', + 82 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/net/ssl/{FNAME}.html', + 83 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/print/{FNAME}.html', + 84 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/print/attribute/{FNAME}.html', + 85 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/print/attribute/standard/{FNAME}.html', + 86 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/print/event/{FNAME}.html', + 87 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/rmi/{FNAME}.html', + 88 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/rmi/CORBA/{FNAME}.html', + 89 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/rmi/ssl/{FNAME}.html', + 90 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/security/auth/{FNAME}.html', + 91 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/security/auth/callback/{FNAME}.html', + 92 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/security/auth/kerberos/{FNAME}.html', + 93 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/security/auth/login/{FNAME}.html', + 94 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/security/auth/spi/{FNAME}.html', + 95 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/security/auth/x500/{FNAME}.html', + 96 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/security/sasl/{FNAME}.html', + 97 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/sound/midi/{FNAME}.html', + 98 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/sound/midi/spi/{FNAME}.html', + 99 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/sound/sampled/{FNAME}.html', + 100 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/sound/sampled/spi/{FNAME}.html', + 101 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/sql/{FNAME}.html', + 102 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/sql/rowset/{FNAME}.html', + 103 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/sql/rowset/serial/{FNAME}.html', + 104 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/sql/rowset/spi/{FNAME}.html', + 105 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/{FNAME}.html', + 106 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/border/{FNAME}.html', + 107 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/colorchooser/{FNAME}.html', + 108 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/event/{FNAME}.html', + 109 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/filechooser/{FNAME}.html', + 110 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/plaf/{FNAME}.html', + 111 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/plaf/basic/{FNAME}.html', + 112 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/plaf/metal/{FNAME}.html', + 113 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/plaf/multi/{FNAME}.html', + 114 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/plaf/synth/{FNAME}.html', + 115 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/table/{FNAME}.html', + 116 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/text/{FNAME}.html', + 117 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/text/html/{FNAME}.html', + 118 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/text/html/parser/{FNAME}.html', + 119 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/text/rtf/{FNAME}.html', + 120 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/tree/{FNAME}.html', + 121 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/swing/undo/{FNAME}.html', + 122 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/transaction/{FNAME}.html', + 123 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/transaction/xa/{FNAME}.html', + 124 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/xml/{FNAME}.html', + 125 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/xml/datatype/{FNAME}.html', + 126 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/xml/namespace/{FNAME}.html', + 127 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/xml/parsers/{FNAME}.html', + 128 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/xml/transform/{FNAME}.html', + 129 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/xml/transform/dom/{FNAME}.html', + 130 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/xml/transform/sax/{FNAME}.html', + 131 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/xml/transform/stream/{FNAME}.html', + 132 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/xml/validation/{FNAME}.html', + 133 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/javax/xml/xpath/{FNAME}.html', + 134 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/ietf/jgss/{FNAME}.html', + 135 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/CORBA/{FNAME}.html', + 136 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/CORBA/DynAnyPackage/{FNAME}.html', + 137 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/CORBA/TypeCodePackage/{FNAME}.html', + 138 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/CORBA/portable/{FNAME}.html', + 139 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/CosNaming/{FNAME}.html', + 140 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/CosNaming/NamingContextExtPackage/{FNAME}.html', + 141 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/CosNaming/NamingContextPackage/{FNAME}.html', + 142 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/Dynamic/{FNAME}.html', + 143 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/DynamicAny/{FNAME}.html', + 144 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/DynamicAny/DynAnyFactoryPackage/{FNAME}.html', + 145 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/DynamicAny/DynAnyPackage/{FNAME}.html', + 146 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/IOP/{FNAME}.html', + 147 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/IOP/CodecFactoryPackage/{FNAME}.html', + 148 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/IOP/CodecPackage/{FNAME}.html', + 149 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/Messaging/{FNAME}.html', + 150 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/PortableInterceptor/{FNAME}.html', + 151 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/PortableInterceptor/ORBInitInfoPackage/{FNAME}.html', + 152 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/PortableServer/{FNAME}.html', + 153 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/PortableServer/CurrentPackage/{FNAME}.html', + 154 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/PortableServer/POAManagerPackage/{FNAME}.html', + 155 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/PortableServer/POAPackage/{FNAME}.html', + 156 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/PortableServer/ServantLocatorPackage/{FNAME}.html', + 157 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/SendingContext/{FNAME}.html', + 158 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/omg/stub/java/rmi/{FNAME}.html', + 159 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/w3c/dom/{FNAME}.html', + 160 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/w3c/dom/bootstrap/{FNAME}.html', + 161 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/w3c/dom/events/{FNAME}.html', + 162 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/w3c/dom/ls/{FNAME}.html', + 163 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/xml/sax/{FNAME}.html', + 164 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/xml/sax/ext/{FNAME}.html', + 165 => 'http://java.sun.com/j2se/1%2E5%2E0/docs/api/org/xml/sax/helpers/{FNAME}.html', /* ambiguous class names (appear in more than one package) */ 166 => 'http://www.google.com/search?sitesearch=java.sun.com&q=allinurl%3Aj2se%2F1+5+0%2Fdocs%2Fapi+{FNAME}' ), @@ -1025,7 +1025,13 @@ $language_data = array ( 'SCRIPT_DELIMITERS' => array( ), 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 'DISALLOWED_BEFORE' => '(?<![a-zA-Z0-9\$_\|\#>|^&"\'])', + 'DISALLOWED_AFTER' => '(?![a-zA-Z0-9_\|%\\-;"\'])' + ) ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/javascript.php b/inc/geshi/javascript.php index 4ffef2b2e..429cdd653 100644 --- a/inc/geshi/javascript.php +++ b/inc/geshi/javascript.php @@ -4,7 +4,7 @@ * -------------- * Author: Ben Keen (ben.keen@gmail.com) * Copyright: (c) 2004 Ben Keen (ben.keen@gmail.com), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/06/20 * * JavaScript language file for GeSHi. diff --git a/inc/geshi/jquery.php b/inc/geshi/jquery.php new file mode 100644 index 000000000..54e653ed1 --- /dev/null +++ b/inc/geshi/jquery.php @@ -0,0 +1,238 @@ +<?php +/************************************************************************************* + * jquery.php + * -------------- + * Author: Rob Loach (http://www.robloach.net) + * Copyright: (c) 2009 Rob Loach (http://www.robloach.net) + * Release Version: 1.0.8.8 + * Date Started: 2009/07/20 + * + * jQuery 1.3 language file for GeSHi. + * + * CHANGES + * ------- + * 2009/07/20 (1.0.8.5) + * - First Release + * + * TODO (updated 2009/07/20) + * ------------------------- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'jQuery', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array('/*' => '*/'), + //Regular Expressions + 'COMMENT_REGEXP' => array(2 => "/(?<=[\\s^])s\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/[gimsu]*(?=[\\s$\\.\\;])|(?<=[\\s^(=])m?\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/[gimsu]*(?=[\\s$\\.\\,\\;\\)])/iU"), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( + 'as', 'break', 'case', 'catch', 'continue', 'decodeURI', 'delete', 'do', + 'else', 'encodeURI', 'eval', 'finally', 'for', 'if', 'in', 'is', 'item', + 'instanceof', 'return', 'switch', 'this', 'throw', 'try', 'typeof', 'void', + 'while', 'write', 'with' + ), + 2 => array( + 'class', 'const', 'default', 'debugger', 'export', 'extends', 'false', + 'function', 'import', 'namespace', 'new', 'null', 'package', 'private', + 'protected', 'public', 'super', 'true', 'use', 'var' + ), + 3 => array( + // common functions for Window object + 'alert', 'back', 'close', 'confirm', 'forward', 'home', + 'name', 'navigate', 'onblur', 'onerror', 'onfocus', 'onload', 'onmove', + 'onresize', 'onunload', 'open', 'print', 'prompt', 'status', + //'blur', 'focus', 'scroll', // Duplicate with kw9 + //'stop', //Duplicate with kw10 + ), + 4 => array( + // jQuery Core Functions + 'jQuery', 'each', 'size', 'length', 'selector', 'context', 'eq', + 'index', 'data', 'removeData', 'queue', 'dequeue', 'noConflict' + //'get', //Duplicate with kw11 + ), + 5 => array( + // jQuery Attribute Functions + 'attr', 'removeAttr', 'addClass', 'hasClass', 'removeClass', 'toggleClass', + 'html', 'text', 'val', + ), + 6 => array( + // jQuery Traversing Functions + 'filter', 'not', 'slice', 'add', 'children', 'closest', + 'contents', 'find', 'next', 'nextAll', 'parent', 'parents', + 'prev', 'prevAll', 'siblings', 'andSelf', 'end', + //'is', //Dup with kw1 + //'offsetParent', //Duplicate with kw8 + //'map', //Duplicate with kw12 + ), + 7 => array( + // jQuery Manipulation Functions + 'append', 'appendTo', 'prepend', 'prependTo', 'after', 'before', 'insertAfter', + 'insertBefore', 'wrap', 'wrapAll', 'wrapInner', 'replaceWith', 'replaceAll', + 'empty', 'remove', 'clone', + ), + 8 => array( + // jQuery CSS Functions + 'css', 'offset', 'offsetParent', 'position', 'scrollTop', 'scrollLeft', + 'height', 'width', 'innerHeight', 'innerWidth', 'outerHeight', 'outerWidth', + ), + 9 => array( + // jQuery Events Functions + 'ready', 'bind', 'one', 'trigger', 'triggerHandler', 'unbind', 'live', + 'die', 'hover', 'blur', 'change', 'click', 'dblclick', 'error', + 'focus', 'keydown', 'keypress', 'keyup', 'mousedown', 'mouseenter', + 'mouseleave', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'resize', + 'scroll', 'select', 'submit', 'unload', + //'toggle', //Duplicate with kw10 + //'load', //Duplicate with kw11 + ), + 10 => array( + // jQuery Effects Functions + 'show', 'hide', 'toggle', 'slideDown', 'slideUp', 'slideToggle', 'fadeIn', + 'fadeOut', 'fadeTo', 'animate', 'stop', + ), + 11 => array( + // jQuery Ajax Functions + 'ajax', 'load', 'get', 'getJSON', 'getScript', 'post', 'ajaxComplete', + 'ajaxError', 'ajaxSend', 'ajaxStart', 'ajaxStop', 'ajaxSuccess', 'ajaxSetup', + 'serialize', 'serializeArray', + ), + 12 => array( + // jQuery Utility Functions + 'support', 'browser', 'version', 'boxModal', 'extend', 'grep', 'makeArray', + 'map', 'inArray', 'merge', 'unique', 'isArray', 'isFunction', 'trim', + 'param', + ), + ), + 'SYMBOLS' => array( + 0 => array( + '(', ')', '[', ']', '{', '}', + '+', '-', '*', '/', '%', + '!', '@', '&', '|', '^', + '<', '>', '=', + ',', ';', '?', ':' + ), + 1 => array( + '$' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false, + 7 => false, + 8 => false, + 9 => false, + 10 => false, + 11 => false, + 12 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #000066; font-weight: bold;', + 2 => 'color: #003366; font-weight: bold;', + 3 => 'color: #000066;', + 4 => 'color: #000066;', + 5 => 'color: #000066;', + 6 => 'color: #000066;', + 7 => 'color: #000066;', + 8 => 'color: #000066;', + 9 => 'color: #000066;', + 10 => 'color: #000066;', + 11 => 'color: #000066;', + 12 => 'color: #000066;' + ), + 'COMMENTS' => array( + 1 => 'color: #006600; font-style: italic;', + 2 => 'color: #009966; font-style: italic;', + 'MULTI' => 'color: #006600; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #3366CC;' + ), + 'NUMBERS' => array( + 0 => 'color: #CC0000;' + ), + 'METHODS' => array( + 1 => 'color: #660066;' + ), + 'SYMBOLS' => array( + 0 => 'color: #339933;', + 1 => 'color: #000066;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + 0 => '', + 1 => '', + 2 => '', + 3 => '' + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => 'http://docs.jquery.com/Core/{FNAME}', + 5 => 'http://docs.jquery.com/Attributes/{FNAME}', + 6 => 'http://docs.jquery.com/Traversing/{FNAME}', + 7 => 'http://docs.jquery.com/Manipulation/{FNAME}', + 8 => 'http://docs.jquery.com/CSS/{FNAME}', + 9 => 'http://docs.jquery.com/Events/{FNAME}', + 10 => 'http://docs.jquery.com/Effects/{FNAME}', + 11 => 'http://docs.jquery.com/Ajax/{FNAME}', + 12 => 'http://docs.jquery.com/Utilities/{FNAME}' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_MAYBE, + 'SCRIPT_DELIMITERS' => array( + 0 => array( + '<script type="text/javascript">' => '</script>' + ), + 1 => array( + '<script language="javascript">' => '</script>' + ) + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + 0 => true, + 1 => true + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/kixtart.php b/inc/geshi/kixtart.php index bdffd5875..62cb54652 100644 --- a/inc/geshi/kixtart.php +++ b/inc/geshi/kixtart.php @@ -4,7 +4,7 @@ * -------- * Author: Riley McArdle (riley@glyff.net) * Copyright: (c) 2007 Riley McArdle (http://www.glyff.net/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2007/08/31 * * PHP language file for GeSHi. diff --git a/inc/geshi/klonec.php b/inc/geshi/klonec.php index 03d64a166..e47e597ef 100644 --- a/inc/geshi/klonec.php +++ b/inc/geshi/klonec.php @@ -4,7 +4,7 @@ * -------- * Author: AUGER Mickael * Copyright: Synchronic - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/04/16 * * KLone with C language file for GeSHi. diff --git a/inc/geshi/klonecpp.php b/inc/geshi/klonecpp.php index fd2d53864..1a2d2082b 100644 --- a/inc/geshi/klonecpp.php +++ b/inc/geshi/klonecpp.php @@ -4,7 +4,7 @@ * -------- * Author: AUGER Mickael * Copyright: Synchronic - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/04/16 * * KLone with C++ language file for GeSHi. diff --git a/inc/geshi/latex.php b/inc/geshi/latex.php index bad2c1861..1ba3d409e 100644 --- a/inc/geshi/latex.php +++ b/inc/geshi/latex.php @@ -4,7 +4,7 @@ * ----- * Author: efi, Matthias Pospiech (matthias@pospiech.eu) * Copyright: (c) 2006 efi, Matthias Pospiech (matthias@pospiech.eu), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2006/09/23 * * LaTeX language file for GeSHi. @@ -61,21 +61,26 @@ $language_data = array ( 'ESCAPE_CHAR' => '', 'KEYWORDS' => array( 1 => array( - 'addlinespace','address','appendix','author','backmatter', + 'addlinespace','and','address','appendix','author','backmatter', 'bfseries','bibitem','bigskip','blindtext','caption','captionabove', - 'captionbelow','cdot','centering','cite','color','colorbox','date', - 'def','definecolor','documentclass','edef','eqref','else','email','emph','fbox', - 'fi','flushleft','flushright','footnote','frac','frontmatter','graphicspath','hfill', - 'hline','hspace','huge','include','includegraphics','infty','input','int','ifx', - 'item','label','LaTeX','left','let','limits','listfiles','listoffigures', - 'listoftables','mainmatter','makeatletter','makeatother','makebox', - 'makeindex','maketitle','mbox','mediumskip','newcommand', - 'newenvironment','newpage','nocite','nonumber','pagestyle','par','paragraph','parbox', - 'parident','parskip','partial','raggedleft','raggedright','raisebox','ref', - 'renewcommand','renewenvironment','right','rule','section','setlength', - 'sffamily','subparagraph','subsection','subsubsection','sum','table', - 'tableofcontents','textbf','textcolor','textit','textnormal', - 'textsuperscript','texttt','title','today','ttfamily','urlstyle', + 'captionbelow','cdot','centering','chapter','cite','color', + 'colorbox','date','dedication','def','definecolor','documentclass', + 'edef','else','email','emph','eqref','extratitle','fbox','fi', + 'flushleft','flushright','footnote','frac','frontmatter', + 'graphicspath','hfill','hline','hspace','huge','ifx','include', + 'includegraphics','infty','input','int','item','itemsep', + 'KOMAoption','KOMAoptions','label','LaTeX','left','let','limits', + 'listfiles','listoffigures','listoftables','lowertitleback', + 'mainmatter','makeatletter','makeatother','makebox','makeindex', + 'maketitle','mbox','mediumskip','newcommand','newenvironment', + 'newpage','nocite','nonumber','pagestyle','par','paragraph', + 'parbox','parident','parskip','partial','publishers','raggedleft', + 'raggedright','raisebox','ref','renewcommand','renewenvironment', + 'right','rule','section','setlength','sffamily','subject', + 'subparagraph','subsection','subsubsection','subtitle','sum', + 'table','tableofcontents','textbf','textcolor','textit', + 'textnormal','textsuperscript','texttt','textwidth','thanks','title', + 'titlehead','today','ttfamily','uppertitleback','urlstyle', 'usepackage','vspace' ) ), @@ -142,7 +147,7 @@ $language_data = array ( ), // [options] 2 => array( - GESHI_SEARCH => "(?<=\[).+(?=\])", + GESHI_SEARCH => "(?<=\[).*(?=\])", GESHI_REPLACE => '\0', GESHI_MODIFIERS => 'Us', GESHI_BEFORE => '', diff --git a/inc/geshi/lisp.php b/inc/geshi/lisp.php index aa492058b..a8f50691e 100644 --- a/inc/geshi/lisp.php +++ b/inc/geshi/lisp.php @@ -4,7 +4,7 @@ * -------- * Author: Roberto Rossi (rsoftware@altervista.org) * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/08/30 * * Generic Lisp language file for GeSHi. @@ -73,7 +73,7 @@ $language_data = array ( 'rem','min','max','abs','sin','cos','tan','expt','exp','sqrt', 'random','logand','logior','logxor','lognot','bignums','logeqv', 'lognand','lognor','logorc2','logtest','logbitp','logcount', - 'integer','nil','parse-integer' + 'integer','nil','parse-integer','make-list','print','write' ) ), 'SYMBOLS' => array( @@ -141,4 +141,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/locobasic.php b/inc/geshi/locobasic.php index a799d6900..a3e22a7be 100644 --- a/inc/geshi/locobasic.php +++ b/inc/geshi/locobasic.php @@ -4,7 +4,7 @@ * ------------- * Author: Nacho Cabanes * Copyright: (c) 2009 Nacho Cabanes (http://www.nachocabanes.com) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2009/03/22 * * Locomotive Basic (Amstrad CPC series) language file for GeSHi. @@ -80,8 +80,8 @@ $language_data = array ( ), 'STYLES' => array( 'KEYWORDS' => array( - 1 => 'color: #0000ff; font-weight: bold;', - 2 => 'color: #008888; font-weight: bold;' + 1 => 'color: #000088; font-weight: bold;', + 2 => 'color: #AA00AA; font-weight: bold;' ), 'COMMENTS' => array( 1 => 'color: #808080;', @@ -91,7 +91,7 @@ $language_data = array ( 0 => 'color: #ff0000;' ), 'STRINGS' => array( - 0 => 'color: #ff0000;' + 0 => 'color: #008800;' ), 'NUMBERS' => array( 0 => 'color: #0044ff;' diff --git a/inc/geshi/logtalk.php b/inc/geshi/logtalk.php new file mode 100644 index 000000000..fb77bd6d3 --- /dev/null +++ b/inc/geshi/logtalk.php @@ -0,0 +1,330 @@ +<?php +/************************************************************************************* + * logtalk.php + * ----------- + * + * Author: Paulo Moura (pmoura@logtalk.org) + * Copyright: (c) 2009 Paulo Moura (http://logtalk.org/) + * Release Version: 1.0.8.8 + * Date Started: 2009/10/24 + * + * Logtalk language file for GeSHi. + * + * CHANGES + * ------- + * 2009/10/28 (1.0.0) + * - First Release + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array( + 'LANG_NAME' => 'Logtalk', + 'COMMENT_SINGLE' => array(1 => '%'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'COMMENT_REGEXP' => array(2 => "/0'./sim"), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'"), + 'HARDQUOTE' => array('"', '"'), + 'HARDESCAPE' => array(), + 'ESCAPE_CHAR' => '', + 'ESCAPE_REGEXP' => array( + //Simple Single Char Escapes + 1 => "#\\\\[\\\\abfnrtv\'\"?\n]#i", + //Hexadecimal Char Specs + 2 => "#\\\\x[\da-fA-F]+\\\\#", + //Octal Char Specs + 3 => "#\\\\[0-7]+\\\\#" + ), + 'NUMBERS' => + GESHI_NUMBER_INT_BASIC | + GESHI_NUMBER_BIN_PREFIX_0B | + GESHI_NUMBER_OCT_PREFIX_0O | + GESHI_NUMBER_HEX_PREFIX | + GESHI_NUMBER_FLT_NONSCI | + GESHI_NUMBER_FLT_SCI_ZERO, + 'KEYWORDS' => array( + // Directives (with arguments) + 1 => array( + // file directives + 'encoding', 'ensure_loaded', + // flag directives + 'set_logtalk_flag', 'set_prolog_flag', + // entity opening directives + 'category', 'object', 'protocol', + // predicate scope directives + 'private', 'protected', 'public', + // conditional compilation directives + 'elif', 'if', + // entity directives + 'calls', 'initialization', 'op', 'uses', + // predicate directives + 'alias', 'discontiguous', 'dynamic', 'mode', 'info', 'meta_predicate', 'multifile', 'synchronized', + // module directives + 'export', 'module', 'reexport', 'use_module' + ), + // Directives (no arguments) + 2 => array( + // entity directives + 'dynamic', + // multi-threading directives + 'synchronized', 'threaded', + // entity closing directives + 'end_category', 'end_object', 'end_protocol', + // conditional compilation directives + 'else', 'endif' + ), + // Entity relations + 3 => array( + 'complements', 'extends', 'imports', 'implements','instantiates', 'specializes' + ), + // Built-in predicates (with arguments) + 4 => array( + // event handlers + 'after', 'before', + // execution-context methods + 'parameter', 'self', 'sender', 'this', + // predicate reflection + 'current_predicate', 'predicate_property', + // DCGs and term expansion + 'expand_goal', 'expand_term', 'goal_expansion', 'phrase', 'term_expansion', + // entity + 'abolish_category', 'abolish_object', 'abolish_protocol', + 'create_category', 'create_object', 'create_protocol', + 'current_category', 'current_object', 'current_protocol', + 'category_property', 'object_property', 'protocol_property', + // entity relations + 'complements_object', + 'extends_category', 'extends_object', 'extends_protocol', + 'implements_protocol', 'imports_category', + 'instantiates_class', 'specializes_class', + // events + 'abolish_events', 'current_event', 'define_events', + // flags + 'current_logtalk_flag', 'set_logtalk_flag', + 'current_prolog_flag', 'set_prolog_flag', + // compiling, loading, and library path + 'logtalk_compile', 'logtalk_library_path', 'logtalk_load', + // database + 'abolish', 'asserta', 'assertz', 'clause', 'retract', 'retractall', + // control + 'call', 'catch', 'once', 'throw', + // all solutions predicates + 'bagof', 'findall', 'forall', 'setof', + // multi-threading meta-predicates + 'threaded', + 'threaded_call', 'threaded_once', 'threaded_ignore', 'threaded_exit', 'threaded_peek', + 'threaded_wait', 'threaded_notify', + // term unification + 'unify_with_occurs_check', + // atomic term processing + 'atom_chars', 'atom_codes', 'atom_concat', 'atom_length', + 'number_chars', 'number_codes', + 'char_code', + // term creation and decomposition + 'arg', 'copy_term', 'functor', + // term testing + 'atom', 'atomic', 'compound', 'float', 'integer', 'nonvar', 'number', 'sub_atom', 'var', + // stream selection and control + 'current_input', 'current_output', 'set_input', 'set_output', + 'open', 'close', 'flush_output', 'stream_property', + 'at_end_of_stream', 'set_stream_position', + // character and byte input/output predicates + 'get_byte', 'get_char', 'get_code', + 'peek_byte', 'peek_char', 'peek_code', + 'put_byte', 'put_char', 'put_code', + 'nl', + // term input/output predicates + 'current_op', 'op', + 'write', 'writeq', 'write_canonical', 'write_term', + 'read', 'read_term', + 'char_conversion', 'current_char_conversion', + // + 'halt' + ), + // Built-in predicates (no arguments) + 5 => array( + // control + 'fail', 'repeat', 'true', + // character and byte input/output predicates + 'nl', + // implementation defined hooks functions + 'halt', + // arithemtic evaluation + 'is', + // stream selection and control + 'at_end_of_stream', 'flush_output' + ), + // Evaluable functors (with arguments) + 6 => array( + 'float_integer_part', 'float_fractional_part', + 'rem', 'mod', 'abs', 'sign', 'floor', 'truncate', 'round', 'ceiling', + 'cos', 'atan', 'exp', 'log', 'sin', 'sqrt' + ), + // Evaluable functors (no arguments) + 7 => array( + 'mod', 'rem' + ), + ), + 'SYMBOLS' => array( + 0 => array( + // external call + '{', '}' + ), + 1 => array( + // arithemtic comparison + '=:=', '=\=', '<', '=<', '>=', '>', + // term comparison + '<<', '>>', '/\\', '\\/', '\\', + // bitwise functors + '==', '\==', '@<', '@=<', '@>=', '@>', + // evaluable functors + '+', '-', '*', '/', '**', + // logic and control + '!', '\\+', ';', + // message sending operators + '::', '^^', ':', + // grammar rule and conditional functors + '-->', '->', + // mode operators + '@', '?', + // term to list predicate + '=..', + // unification + '=', '\\=' + ), + 2 => array( + // clause and directive functors + ':-' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + 5 => true, + 6 => true, + 7 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #2e4dc9;', + 2 => 'color: #2e4dc9;', + 3 => 'color: #2e4dc9;', + 4 => 'color: #9d4f37;', + 5 => 'color: #9d4f37;', + 6 => 'color: #9d4f37;', + 7 => 'color: #9d4f37;' + ), + 'NUMBERS' => array( + 0 => 'color: #430000;' + ), + 'COMMENTS' => array( + 1 => 'color: #60a0b0; font-style: italic;', + 2 => 'color: #430000;', + 'MULTI' => 'color: #60a0b0; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #9f0000; font-weight: bold;', + 1 => 'color: #9f0000; font-weight: bold;', + 2 => 'color: #9f0000; font-weight: bold;', + 3 => 'color: #9f0000; font-weight: bold;', + 'HARD' => '', + ), + 'SYMBOLS' => array( + 0 => 'color: #666666;font-weight: bold;', + 1 => 'color: #666666;font-weight: bold;', + 2 => 'color: #000000;' + ), + 'BRACKETS' => array( + 0 => 'color: #000000;' + ), + 'STRINGS' => array( + 0 => 'color: #9f0000;', + 'HARD' => 'color: #9f0000;' + ), + 'METHODS' => array( + ), + 'REGEXPS' => array( + 0 => 'color: #848484;' + ), + 'SCRIPT' => array() + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + 1 => '::' + ), + 'REGEXPS' => array( + // variables + 0 => '\b(?!(?:PIPE|SEMI|REG3XP\d*)[^a-zA-Z0-9_])[A-Z_][a-zA-Z0-9_]*(?![a-zA-Z0-9_])' + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array(), + 'TAB_WIDTH' => 4, + 'PARSER_CONTROL' => array( + 'ENABLE_FLAGS' => array( + 'BRACKETS' => GESHI_NEVER + ), + 'KEYWORDS' => array( + 1 => array( + 'DISALLOWED_BEFORE' => '(?<=:-\s)', + 'DISALLOWED_AFTER' => '(?=\()' + ), + 2 => array( + 'DISALLOWED_BEFORE' => '(?<=:-\s)', + 'DISALLOWED_AFTER' => '(?=\.)' + ), + 3 => array( + 'DISALLOWED_BEFORE' => '(?<![a-zA-Z0-9\$_\|\#>|^&\'"])', + 'DISALLOWED_AFTER' => '(?=\()' + ), + 4 => array( + 'DISALLOWED_BEFORE' => '(?<![a-zA-Z0-9\$_\|\#>|^&\'"])', + 'DISALLOWED_AFTER' => '(?=\()' + ), + 5 => array( + 'DISALLOWED_BEFORE' => '(?<![a-zA-Z0-9\$_\|\#>|^&\'"])', + 'DISALLOWED_AFTER' => '(?![a-zA-Z0-9_\|%\\-&\'"])' + ), + 6 => array( + 'DISALLOWED_BEFORE' => '(?<![a-zA-Z0-9\$_\|\#;>|^&\'"])', + 'DISALLOWED_AFTER' => '(?=\()' + ), + 7 => array( + 'DISALLOWED_BEFORE' => '(?<![a-zA-Z0-9\$_\|\#;>|^&\'"])', + 'DISALLOWED_AFTER' => '(?![a-zA-Z0-9_\|%\\-&\'"])' + ) + ) + ), +); + +?>
\ No newline at end of file diff --git a/inc/geshi/lolcode.php b/inc/geshi/lolcode.php index fc60e3e9f..a804913cc 100644 --- a/inc/geshi/lolcode.php +++ b/inc/geshi/lolcode.php @@ -4,7 +4,7 @@ * ---------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2009/10/31 * * LOLcode language file for GeSHi. diff --git a/inc/geshi/lotusformulas.php b/inc/geshi/lotusformulas.php index e82d6bf3d..862adbc82 100644 --- a/inc/geshi/lotusformulas.php +++ b/inc/geshi/lotusformulas.php @@ -4,7 +4,7 @@ * ------------------------ * Author: Richard Civil (info@richardcivil.net) * Copyright: (c) 2008 Richard Civil (info@richardcivil.net), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/04/12 * * @Formula/@Command language file for GeSHi. diff --git a/inc/geshi/lotusscript.php b/inc/geshi/lotusscript.php index 5272377b1..1ef2f3eee 100644 --- a/inc/geshi/lotusscript.php +++ b/inc/geshi/lotusscript.php @@ -4,7 +4,7 @@ * ------------------------ * Author: Richard Civil (info@richardcivil.net) * Copyright: (c) 2008 Richard Civil (info@richardcivil.net), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/04/12 * * LotusScript language file for GeSHi. diff --git a/inc/geshi/lscript.php b/inc/geshi/lscript.php index 1a5b0726e..b7e313212 100644 --- a/inc/geshi/lscript.php +++ b/inc/geshi/lscript.php @@ -4,7 +4,7 @@ * --------- * Author: Arendedwinter (admin@arendedwinter.com) * Copyright: (c) 2008 Beau McGuigan (http://www.arendedwinter.com) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 15/11/2008 * * Lightwave Script language file for GeSHi. diff --git a/inc/geshi/lsl2.php b/inc/geshi/lsl2.php index 0b62ee8b7..e5f40969b 100644 --- a/inc/geshi/lsl2.php +++ b/inc/geshi/lsl2.php @@ -4,7 +4,7 @@ * -------- * Author: William Fry (william.fry@nyu.edu) * Copyright: (c) 2009 William Fry - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2009/02/04 * * Linden Scripting Language (LSL2) language file for GeSHi. diff --git a/inc/geshi/lua.php b/inc/geshi/lua.php index f85086bb2..abeaa54ea 100644 --- a/inc/geshi/lua.php +++ b/inc/geshi/lua.php @@ -4,7 +4,7 @@ * ------- * Author: Roberto Rossi (rsoftware@altervista.org) * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/07/10 * * LUA language file for GeSHi. diff --git a/inc/geshi/m68k.php b/inc/geshi/m68k.php index cc5807c6f..543b73c8b 100644 --- a/inc/geshi/m68k.php +++ b/inc/geshi/m68k.php @@ -4,7 +4,7 @@ * -------- * Author: Benny Baumann (BenBE@omorphia.de) * Copyright: (c) 2007 Benny Baumann (http://www.omorphia.de/), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2007/02/06 * * Motorola 68000 Assembler language file for GeSHi. diff --git a/inc/geshi/magiksf.php b/inc/geshi/magiksf.php new file mode 100644 index 000000000..f3da7fcf2 --- /dev/null +++ b/inc/geshi/magiksf.php @@ -0,0 +1,193 @@ +<?php +/************************************************************************************* + * magiksf.php + * -------- + * Author: Sjoerd van Leent (svanleent@gmail.com) + * Copyright: (c) 2010 Sjoerd van Leent + * Release Version: 1.0.8.8 + * Date Started: 2010/02/15 + * + * MagikSF language file for GeSHi. + * + * CHANGES + * ------- + * 2010/02/22 (1.0.0.2) + * - Symbols also accept the ! and ? characters properly + * - Labels (identifiers starting with !) are also coloured + * 2010/02/17 (1.0.0.1) + * - Parsing out symbols better + * - Add package identifiers + * 2010/02/15 (1.0.0) + * - First Release + * + * TODO + * ---- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'ESCAPE_CHAR' => null, + 'LANG_NAME' => 'MagikSF', + 'COMMENT_SINGLE' => array(1 => '##', 2 => '#%', 3 => '#'), + 'COMMENT_MULTI' => array("_pragma(" => ")"), + //Multiline-continued single-line comments + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + '_block', '_endblock', '_proc', '_endproc', '_loop', '_endloop', + '_method', '_endmethod', + '_protect', '_endprotect', '_protection', '_locking', + '_continue', + ), + 2 => array( + '_self', '_thisthread', '_pragma', '_private', '_abstract', + '_local', '_global', '_dynamic', '_package', '_constant', + '_import', '_iter', '_lock', '_optional', '_recursive', '_super' + ), + 3 => array( + '_if', '_endif', '_then', '_else', '_elif', '_orif', '_andif', '_for', '_over', + '_try', '_endtry', '_when', '_throw', '_catch', '_endcatch', '_handling', + '_finally', '_loopbody', '_return', '_leave', '_with' + ), + 4 => array( + '_false', '_true', '_maybe', '_unset', '_no_way' + ), + 5 => array( + '_mod', '_div', '_or', '_and', '_cf', '_is', '_isnt', '_not', '_gather', '_scatter', + '_allresults', '_clone', '_xor' + ), + 6 => array( + 'def_slotted_exemplar', 'write_string', 'write', 'condition', + 'record_transaction', 'gis_program_manager', 'perform', 'define_shared_constant', + 'property_list', 'rope', 'def_property', 'def_mixin' + ), + ), + 'SYMBOLS' => array( + '(', ')', '{', '}', '[', ']', + '+', '-', '*', '/', '**', + '=', '<', '>', '<<', '>>', + ',', '$', + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #000000; font-weight: bold;', + 2 => 'color: #ff3f3f;', + 3 => 'color: #3f7f3f; font-weight: bold;', + 4 => 'color: #cc66cc;', + 5 => 'color: #ff3fff; font-weight: bold;', + 6 => 'font-weight: bold;', + ), + 'COMMENTS' => array( + 1 => 'color: #339933; font-weight: bold;', + 2 => 'color: #993333;', + 3 => 'color: #339933;', + 'MULTI' => 'color: #7f7f7f; font-style: italic', + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #ff3f3f;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;' + ), + 'METHODS' => array( + 1 => 'color: #202020;', + 2 => 'color: #202020;' + ), + 'SYMBOLS' => array( + 0 => 'color: #ff3f3f;' + ), + 'REGEXPS' => array( + 1 => 'color: #3f3fff;', + 2 => 'color: #3f3fff;', + 3 => 'color: #cc66cc;', + 4 => 'color: #7f3f7f; font-style: italic;', + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + 1 => array( + GESHI_SEARCH => '\b[a-zA-Z0-9_]+:', // package identifiers + GESHI_REPLACE => '\\0', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + 2 => array( + GESHI_SEARCH => ':(?:[a-zA-Z0-9!?_]+|(?:[<pipe>].*?[<pipe>]))*', //symbols + GESHI_REPLACE => '\\0', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + 3 => array( + GESHI_SEARCH => '%space|%tab|%newline|%.', //characters + GESHI_REPLACE => '\\0', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + 4 => array( + GESHI_SEARCH => '@(?:[a-zA-Z0-9!?_]+|(?:[<pipe>].*?[<pipe>]))*', //symbols + GESHI_REPLACE => '\\0', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4 +); + +?>
\ No newline at end of file diff --git a/inc/geshi/make.php b/inc/geshi/make.php index f01209ebf..689552312 100644 --- a/inc/geshi/make.php +++ b/inc/geshi/make.php @@ -4,7 +4,7 @@ * -------- * Author: Neil Bird <phoenix@fnxweb.com> * Copyright: (c) 2008 Neil Bird - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/08/26 * * make language file for GeSHi. diff --git a/inc/geshi/mapbasic.php b/inc/geshi/mapbasic.php new file mode 100644 index 000000000..0025d4e22 --- /dev/null +++ b/inc/geshi/mapbasic.php @@ -0,0 +1,908 @@ +<?php +/************************************************************************************* + * mapbasic.php + * ------ + * Author: Tomasz Berus (t.berus@gisodkuchni.pl) + * Copyright: (c) 2009 Tomasz Berus (http://sourceforge.net/projects/mbsyntax/) + * Release Version: 1.0.8.8 + * Date Started: 2008/11/25 + * + * MapBasic language file for GeSHi. + * + * CHANGES + * ------- + * 2009/09/17 (1.0.1) + * - Replaced all tabs with spaces + * - Fixed 'URLS' array + * 2008/11/25 (1.0.0) + * - First Release (MapBasic v9.5) + * + * TODO (updated 2008/11/25) + * ------------------------- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'MapBasic', + 'COMMENT_SINGLE' => array(1 => "'"), + 'COMMENT_MULTI' => array(), + 'COMMENT_REGEXP' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( +/* + 1 - Statements + Clauses + Data Types + Logical Operators, Geographical Operators + SQL + 2 - Special Procedures + 3 - Functions + 4 - Constants + 5 - Extended keywords (case sensitive) +*/ + 1 => array( + 'Add', 'Alias', 'All', 'Alter', 'And', 'Any', 'Application', 'Arc', + 'Area', 'As', 'AutoLabel', 'Bar', 'Beep', 'Begin', 'Bind', + 'Browse', 'Brush', 'BrushPicker', 'Button', 'ButtonPad', + 'ButtonPads', 'BY', 'Call', 'CancelButton', 'Cartographic', 'Case', + 'CharSet', 'Check', 'CheckBox', 'Clean', 'Close', 'Collection', + 'Column', 'Combine', 'Command', 'Commit', 'Connection', + 'ConnectionNumber', 'Contains', 'Continue', 'Control', 'CoordSys', + 'Create', 'Cutter', 'Date', 'Datum', 'DDEExecute', 'DDEPoke', + 'DDETerminate', 'DDETerminateAll', 'Declare', 'Default', 'Define', + 'Delete', 'Dialog', 'Digitizer', 'Dim', 'Disaggregate', + 'Disconnect', 'Distance', 'Do', 'Document', 'DocumentWindow', + 'Drag', 'Drop', 'EditText', 'Ellipse', 'Enclose', 'End', 'Entire', + 'Entirely', 'Erase', 'Error', 'Event', 'Exit', 'Export', + 'Farthest', 'Fetch', 'File', 'Find', 'Float', 'FME', 'Font', + 'FontPicker', 'For', 'Format', 'Frame', 'From', 'Function', + 'Geocode', 'Get', 'Global', 'Goto', 'Graph', 'Grid', 'GROUP', + 'GroupBox', 'Handler', 'If', 'Import', 'In', 'Include', 'Index', + 'Info', 'Input', 'Insert', 'Integer', 'Intersect', 'Intersects', + 'INTO', 'Isogram', 'Item', 'Kill', 'Layout', 'Legend', 'Line', + 'Link', 'ListBox', 'Logical', 'Loop', 'Map', 'Map3D', 'MapInfo', + 'MapInfoDialog', 'Menu', 'Merge', 'Metadata', 'Method', 'Mod', + 'Move', 'MultiListBox', 'MultiPoint', 'MWS', 'Nearest', 'Next', + 'NOSELECT', 'Not', 'Note', 'Object', 'Objects', 'Offset', + 'OKButton', 'OnError', 'Open', 'Or', 'ORDER', 'Overlay', 'Pack', + 'Paper', 'Part', 'Partly', 'Pen', 'PenPicker', 'Pline', 'Point', + 'PopupMenu', 'Preserve', 'Print', 'PrintWin', 'PrismMap', + 'Processing', 'Program', 'ProgressBar', 'ProgressBars', 'Put', + 'RadioGroup', 'Randomize', 'Ranges', 'Rect', 'ReDim', + 'Redistricter', 'Refresh', 'Region', 'Register', 'Relief', + 'Reload', 'Remove', 'Rename', 'Report', 'Reproject', 'Resolution', + 'Resume', 'Rollback', 'RoundRect', 'RowID', 'Run', 'Save', 'Seek', + 'Select', 'Selection', 'Server', 'Set', 'Shade', 'SmallInt', + 'Snap', 'Split', 'StaticText', 'StatusBar', 'Stop', 'String', + 'Style', 'Styles', 'Sub', 'Symbol', 'SymbolPicker', 'Symbols', + 'Table', 'Target', 'Terminate', 'Text', 'Then', 'Threshold', + 'Timeout', 'To', 'Transaction', 'Transform', 'Type', 'UnDim', + 'Units', 'Unlink', 'Update', 'Using', 'VALUES', 'Version', + 'Versioning', 'Wend', 'WFS', 'WHERE', 'While', 'Window', 'Within', + 'Workspace', 'Write' + ), + 2 => array( + 'EndHandler', 'ForegroundTaskSwitchHandler', 'Main', + 'RemoteMapGenHandler', 'RemoteMsgHandler', 'SelChangedHandler', + 'ToolHandler', 'WinChangedHandler', 'WinClosedHandler', + 'WinFocusChangedHandler' + ), + 3 => array( + 'Abs', 'Acos', 'ApplicationDirectory$', 'AreaOverlap', 'Asc', + 'Asin', 'Ask', 'Atn', 'Avg', 'Buffer', 'ButtonPadInfo', + 'CartesianArea', 'CartesianBuffer', 'CartesianConnectObjects', + 'CartesianDistance', 'CartesianObjectDistance', + 'CartesianObjectLen', 'CartesianOffset', 'CartesianOffsetXY', + 'CartesianPerimeter', 'Centroid', 'CentroidX', 'CentroidY', + 'ChooseProjection$', 'Chr$', 'ColumnInfo', 'CommandInfo', + 'ConnectObjects', 'ControlPointInfo', 'ConvertToPline', + 'ConvertToRegion', 'ConvexHull', 'CoordSysName$', 'Cos', 'Count', + 'CreateCircle', 'CreateLine', 'CreatePoint', 'CreateText', + 'CurDate', 'CurrentBorderPen', 'CurrentBrush', 'CurrentFont', + 'CurrentLinePen', 'CurrentPen', 'CurrentSymbol', 'DateWindow', + 'Day', 'DDEInitiate', 'DDERequest$', 'DeformatNumber$', 'EOF', + 'EOT', 'EPSGToCoordSysString$', 'Err', 'Error$', 'Exp', + 'ExtractNodes', 'FileAttr', 'FileExists', 'FileOpenDlg', + 'FileSaveAsDlg', 'Fix', 'Format$', 'FormatDate$', 'FormatNumber$', + 'FrontWindow', 'GeocodeInfo', 'GetFolderPath$', 'GetGridCellValue', + 'GetMetadata$', 'GetSeamlessSheet', 'GridTableInfo', + 'HomeDirectory$', 'InStr', 'Int', 'IntersectNodes', + 'IsGridCellNull', 'IsogramInfo', 'IsPenWidthPixels', + 'LabelFindByID', 'LabelFindFirst', 'LabelFindNext', 'LabelInfo', + 'LayerInfo', 'LCase$', 'Left$', 'LegendFrameInfo', 'LegendInfo', + 'LegendStyleInfo', 'Len', 'Like', 'LocateFile$', 'LOF', 'Log', + 'LTrim$', 'MakeBrush', 'MakeCustomSymbol', 'MakeFont', + 'MakeFontSymbol', 'MakePen', 'MakeSymbol', 'Map3DInfo', + 'MapperInfo', 'Max', 'Maximum', 'MBR', 'MenuItemInfoByHandler', + 'MenuItemInfoByID', 'MGRSToPoint', 'MICloseContent', + 'MICloseFtpConnection', 'MICloseFtpFileFind', + 'MICloseHttpConnection', 'MICloseHttpFile', 'MICloseSession', + 'MICreateSession', 'MICreateSessionFull', 'Mid$', 'MidByte$', + 'MIErrorDlg', 'MIFindFtpFile', 'MIFindNextFtpFile', 'MIGetContent', + 'MIGetContentBuffer', 'MIGetContentLen', 'MIGetContentString', + 'MIGetContentToFile', 'MIGetContentType', + 'MIGetCurrentFtpDirectory', 'MIGetErrorCode', 'MIGetErrorMessage', + 'MIGetFileURL', 'MIGetFtpConnection', 'MIGetFtpFile', + 'MIGetFtpFileFind', 'MIGetFtpFileName', 'MIGetHttpConnection', + 'MIIsFtpDirectory', 'MIIsFtpDots', 'Min', 'Minimum', + 'MIOpenRequest', 'MIOpenRequestFull', 'MIParseURL', 'MIPutFtpFile', + 'MIQueryInfo', 'MIQueryInfoStatusCode', 'MISaveContent', + 'MISendRequest', 'MISendSimpleRequest', 'MISetCurrentFtpDirectory', + 'MISetSessionTimeout', 'MIXmlAttributeListDestroy', + 'MIXmlDocumentCreate', 'MIXmlDocumentDestroy', + 'MIXmlDocumentGetNamespaces', 'MIXmlDocumentGetRootNode', + 'MIXmlDocumentLoad', 'MIXmlDocumentLoadXML', + 'MIXmlDocumentLoadXMLString', 'MIXmlDocumentSetProperty', + 'MIXmlGetAttributeList', 'MIXmlGetChildList', + 'MIXmlGetNextAttribute', 'MIXmlGetNextNode', 'MIXmlNodeDestroy', + 'MIXmlNodeGetAttributeValue', 'MIXmlNodeGetFirstChild', + 'MIXmlNodeGetName', 'MIXmlNodeGetParent', 'MIXmlNodeGetText', + 'MIXmlNodeGetValue', 'MIXmlNodeListDestroy', 'MIXmlSCDestroy', + 'MIXmlSCGetLength', 'MIXmlSCGetNamespace', 'MIXmlSelectNodes', + 'MIXmlSelectSingleNode', 'Month', 'NumAllWindows', 'NumberToDate', + 'NumCols', 'NumTables', 'NumWindows', 'ObjectDistance', + 'ObjectGeography', 'ObjectInfo', 'ObjectLen', 'ObjectNodeHasM', + 'ObjectNodeHasZ', 'ObjectNodeM', 'ObjectNodeX', 'ObjectNodeY', + 'ObjectNodeZ', 'OffsetXY', 'Overlap', 'OverlayNodes', + 'PathToDirectory$', 'PathToFileName$', 'PathToTableName$', + 'PenWidthToPoints', 'Perimeter', 'PointsToPenWidth', + 'PointToMGRS$', 'PrismMapInfo', 'ProgramDirectory$', 'Proper$', + 'ProportionOverlap', 'RasterTableInfo', 'ReadControlValue', + 'RegionInfo', 'RemoteQueryHandler', 'RGB', 'Right$', 'Rnd', + 'Rotate', 'RotateAtPoint', 'Round', 'RTrim$', 'SearchInfo', + 'SearchPoint', 'SearchRect', 'SelectionInfo', 'Server_ColumnInfo', + 'Server_Connect', 'Server_ConnectInfo', 'Server_DriverInfo', + 'Server_EOT', 'Server_Execute', 'Server_GetODBCHConn', + 'Server_GetODBCHStmt', 'Server_NumCols', 'Server_NumDrivers', + 'SessionInfo', 'Sgn', 'Sin', 'Space$', 'SphericalArea', + 'SphericalConnectObjects', 'SphericalDistance', + 'SphericalObjectDistance', 'SphericalObjectLen', 'SphericalOffset', + 'SphericalOffsetXY', 'SphericalPerimeter', 'Sqr', 'Str$', + 'String$', 'StringCompare', 'StringCompareIntl', 'StringToDate', + 'StyleAttr', 'Sum', 'SystemInfo', 'TableInfo', 'Tan', + 'TempFileName$', 'TextSize', 'Time', 'Timer', 'TriggerControl', + 'TrueFileName$', 'UBound', 'UCase$', 'UnitAbbr$', 'UnitName$', + 'Val', 'Weekday', 'WindowID', 'WindowInfo', 'WtAvg', 'Year' + ), + 4 => array( + 'BLACK', 'BLUE', 'BRUSH_BACKCOLOR', 'BRUSH_FORECOLOR', + 'BRUSH_PATTERN', 'BTNPAD_INFO_FLOATING', 'BTNPAD_INFO_NBTNS', + 'BTNPAD_INFO_WIDTH', 'BTNPAD_INFO_WINID', 'BTNPAD_INFO_X', + 'BTNPAD_INFO_Y', 'CLS', 'CMD_INFO_CTRL', 'CMD_INFO_CUSTOM_OBJ', + 'CMD_INFO_DLG_DBL', 'CMD_INFO_DLG_OK', 'CMD_INFO_EDIT_ASK', + 'CMD_INFO_EDIT_DISCARD', 'CMD_INFO_EDIT_SAVE', + 'CMD_INFO_EDIT_STATUS', 'CMD_INFO_EDIT_TABLE', 'CMD_INFO_FIND_RC', + 'CMD_INFO_FIND_ROWID', 'CMD_INFO_HL_FILE_NAME', + 'CMD_INFO_HL_LAYER_ID', 'CMD_INFO_HL_ROWID', + 'CMD_INFO_HL_TABLE_NAME', 'CMD_INFO_HL_WINDOW_ID', + 'CMD_INFO_INTERRUPT', 'CMD_INFO_MENUITEM', 'CMD_INFO_MSG', + 'CMD_INFO_ROWID', 'CMD_INFO_SELTYPE', 'CMD_INFO_SHIFT', + 'CMD_INFO_STATUS', 'CMD_INFO_TASK_SWITCH', 'CMD_INFO_TOOLBTN', + 'CMD_INFO_WIN', 'CMD_INFO_X', 'CMD_INFO_X2', 'CMD_INFO_XCMD', + 'CMD_INFO_Y', 'CMD_INFO_Y2', 'COL_INFO_DECPLACES', + 'COL_INFO_EDITABLE', 'COL_INFO_INDEXED', 'COL_INFO_NAME', + 'COL_INFO_NUM', 'COL_INFO_TYPE', 'COL_INFO_WIDTH', 'COL_TYPE_CHAR', + 'COL_TYPE_DATE', 'COL_TYPE_DATETIME', 'COL_TYPE_DECIMAL', + 'COL_TYPE_FLOAT', 'COL_TYPE_GRAPHIC', 'COL_TYPE_INTEGER', + 'COL_TYPE_LOGICAL', 'COL_TYPE_SMALLINT', 'COL_TYPE_TIME', 'CYAN', + 'DATE_WIN_CURPROG', 'DATE_WIN_SESSION', 'DEG_2_RAD', + 'DICTIONARY_ADDRESS_ONLY', 'DICTIONARY_ALL', + 'DICTIONARY_PREFER_ADDRESS', 'DICTIONARY_PREFER_USER', + 'DICTIONARY_USER_ONLY', 'DM_CUSTOM_CIRCLE', 'DM_CUSTOM_ELLIPSE', + 'DM_CUSTOM_LINE', 'DM_CUSTOM_POINT', 'DM_CUSTOM_POLYGON', + 'DM_CUSTOM_POLYLINE', 'DM_CUSTOM_RECT', 'DMPAPER_10X11', + 'DMPAPER_10X14', 'DMPAPER_11X17', 'DMPAPER_12X11', 'DMPAPER_15X11', + 'DMPAPER_9X11', 'DMPAPER_A_PLUS', 'DMPAPER_A2', 'DMPAPER_A3', + 'DMPAPER_A3_EXTRA', 'DMPAPER_A3_EXTRA_TRANSVERSE', + 'DMPAPER_A3_ROTATED', 'DMPAPER_A3_TRANSVERSE', 'DMPAPER_A4', + 'DMPAPER_A4_EXTRA', 'DMPAPER_A4_PLUS', 'DMPAPER_A4_ROTATED', + 'DMPAPER_A4_TRANSVERSE', 'DMPAPER_A4SMALL', 'DMPAPER_A5', + 'DMPAPER_A5_EXTRA', 'DMPAPER_A5_ROTATED', 'DMPAPER_A5_TRANSVERSE', + 'DMPAPER_A6', 'DMPAPER_A6_ROTATED', 'DMPAPER_B_PLUS', 'DMPAPER_B4', + 'DMPAPER_B4_JIS_ROTATED', 'DMPAPER_B5', 'DMPAPER_B5_EXTRA', + 'DMPAPER_B5_JIS_ROTATED', 'DMPAPER_B5_TRANSVERSE', + 'DMPAPER_B6_JIS', 'DMPAPER_B6_JIS_ROTATED', 'DMPAPER_CSHEET', + 'DMPAPER_DBL_JAPANESE_POSTCARD', + 'DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED', 'DMPAPER_DSHEET', + 'DMPAPER_ENV_10', 'DMPAPER_ENV_11', 'DMPAPER_ENV_12', + 'DMPAPER_ENV_14', 'DMPAPER_ENV_9', 'DMPAPER_ENV_B4', + 'DMPAPER_ENV_B5', 'DMPAPER_ENV_B6', 'DMPAPER_ENV_C3', + 'DMPAPER_ENV_C4', 'DMPAPER_ENV_C5', 'DMPAPER_ENV_C6', + 'DMPAPER_ENV_C65', 'DMPAPER_ENV_DL', 'DMPAPER_ENV_INVITE', + 'DMPAPER_ENV_ITALY', 'DMPAPER_ENV_MONARCH', 'DMPAPER_ENV_PERSONAL', + 'DMPAPER_ESHEET', 'DMPAPER_EXECUTIVE', + 'DMPAPER_FANFOLD_LGL_GERMAN', 'DMPAPER_FANFOLD_STD_GERMAN', + 'DMPAPER_FANFOLD_US', 'DMPAPER_FIRST', 'DMPAPER_FOLIO', + 'DMPAPER_ISO_B4', 'DMPAPER_JAPANESE_POSTCARD', + 'DMPAPER_JAPANESE_POSTCARD_ROTATED', 'DMPAPER_JENV_CHOU3', + 'DMPAPER_JENV_CHOU3_ROTATED', 'DMPAPER_JENV_CHOU4', + 'DMPAPER_JENV_CHOU4_ROTATED', 'DMPAPER_JENV_KAKU2', + 'DMPAPER_JENV_KAKU2_ROTATED', 'DMPAPER_JENV_KAKU3', + 'DMPAPER_JENV_KAKU3_ROTATED', 'DMPAPER_JENV_YOU4', + 'DMPAPER_JENV_YOU4_ROTATED', 'DMPAPER_LEDGER', 'DMPAPER_LEGAL', + 'DMPAPER_LEGAL_EXTRA', 'DMPAPER_LETTER', 'DMPAPER_LETTER_EXTRA', + 'DMPAPER_LETTER_EXTRA_TRANSVERSE', 'DMPAPER_LETTER_PLUS', + 'DMPAPER_LETTER_ROTATED', 'DMPAPER_LETTER_TRANSVERSE', + 'DMPAPER_LETTERSMALL', 'DMPAPER_NOTE', 'DMPAPER_P16K', + 'DMPAPER_P16K_ROTATED', 'DMPAPER_P32K', 'DMPAPER_P32K_ROTATED', + 'DMPAPER_P32KBIG', 'DMPAPER_P32KBIG_ROTATED', 'DMPAPER_PENV_1', + 'DMPAPER_PENV_1_ROTATED', 'DMPAPER_PENV_10', + 'DMPAPER_PENV_10_ROTATED', 'DMPAPER_PENV_2', + 'DMPAPER_PENV_2_ROTATED', 'DMPAPER_PENV_3', + 'DMPAPER_PENV_3_ROTATED', 'DMPAPER_PENV_4', + 'DMPAPER_PENV_4_ROTATED', 'DMPAPER_PENV_5', + 'DMPAPER_PENV_5_ROTATED', 'DMPAPER_PENV_6', + 'DMPAPER_PENV_6_ROTATED', 'DMPAPER_PENV_7', + 'DMPAPER_PENV_7_ROTATED', 'DMPAPER_PENV_8', + 'DMPAPER_PENV_8_ROTATED', 'DMPAPER_PENV_9', + 'DMPAPER_PENV_9_ROTATED', 'DMPAPER_QUARTO', 'DMPAPER_RESERVED_48', + 'DMPAPER_RESERVED_49', 'DMPAPER_STATEMENT', 'DMPAPER_TABLOID', + 'DMPAPER_TABLOID_EXTRA', 'DMPAPER_USER', 'ERR_BAD_WINDOW', + 'ERR_BAD_WINDOW_NUM', 'ERR_CANT_ACCESS_FILE', + 'ERR_CANT_INITIATE_LINK', 'ERR_CMD_NOT_SUPPORTED', + 'ERR_FCN_ARG_RANGE', 'ERR_FCN_INVALID_FMT', + 'ERR_FCN_OBJ_FETCH_FAILED', 'ERR_FILEMGR_NOTOPEN', + 'ERR_FP_MATH_LIB_DOMAIN', 'ERR_FP_MATH_LIB_RANGE', + 'ERR_INVALID_CHANNEL', 'ERR_INVALID_READ_CONTROL', + 'ERR_INVALID_TRIG_CONTROL', 'ERR_NO_FIELD', + 'ERR_NO_RESPONSE_FROM_APP', 'ERR_NULL_SELECTION', + 'ERR_PROCESS_FAILED_IN_APP', 'ERR_TABLE_NOT_FOUND', + 'ERR_WANT_MAPPER_WIN', 'FALSE', 'FILE_ATTR_FILESIZE', + 'FILE_ATTR_MODE', 'FILTER_ALL_DIRECTIONS_1', + 'FILTER_ALL_DIRECTIONS_2', 'FILTER_DIAGONALLY', + 'FILTER_HORIZONTALLY', 'FILTER_VERTICALLY', + 'FILTER_VERTICALLY_AND_HORIZONTALLY', 'FOLDER_APPDATA', + 'FOLDER_COMMON_APPDATA', 'FOLDER_COMMON_DOCS', + 'FOLDER_LOCAL_APPDATA', 'FOLDER_MI_APPDATA', + 'FOLDER_MI_COMMON_APPDATA', 'FOLDER_MI_LOCAL_APPDATA', + 'FOLDER_MI_PREFERENCE', 'FOLDER_MYDOCS', 'FOLDER_MYPICS', + 'FONT_BACKCOLOR', 'FONT_FORECOLOR', 'FONT_NAME', 'FONT_POINTSIZE', + 'FONT_STYLE', 'FRAME_INFO_BORDER_PEN', 'FRAME_INFO_COLUMN', + 'FRAME_INFO_HEIGHT', 'FRAME_INFO_LABEL', 'FRAME_INFO_MAP_LAYER_ID', + 'FRAME_INFO_NUM_STYLES', 'FRAME_INFO_POS_X', 'FRAME_INFO_POS_Y', + 'FRAME_INFO_REFRESHABLE', 'FRAME_INFO_SUBTITLE', + 'FRAME_INFO_SUBTITLE_FONT', 'FRAME_INFO_TITLE', + 'FRAME_INFO_TITLE_FONT', 'FRAME_INFO_TYPE', 'FRAME_INFO_VISIBLE', + 'FRAME_INFO_WIDTH', 'FRAME_TYPE_STYLE', 'FRAME_TYPE_THEME', + 'GEO_CONTROL_POINT_X', 'GEO_CONTROL_POINT_Y', 'GEOCODE_BATCH_SIZE', + 'GEOCODE_COUNT_GEOCODED', 'GEOCODE_COUNT_NOTGEOCODED', + 'GEOCODE_COUNTRY_SUBDIVISION', 'GEOCODE_COUNTRY_SUBDIVISION2', + 'GEOCODE_DICTIONARY', 'GEOCODE_FALLBACK_GEOGRAPHIC', + 'GEOCODE_FALLBACK_POSTAL', 'GEOCODE_MAX_BATCH_SIZE', + 'GEOCODE_MIXED_CASE', 'GEOCODE_MUNICIPALITY', + 'GEOCODE_MUNICIPALITY2', 'GEOCODE_OFFSET_CENTER', + 'GEOCODE_OFFSET_CENTER_UNITS', 'GEOCODE_OFFSET_END', + 'GEOCODE_OFFSET_END_UNITS', 'GEOCODE_PASSTHROUGH', + 'GEOCODE_POSTAL_CODE', 'GEOCODE_RESULT_MARK_MULTIPLE', + 'GEOCODE_STREET_NAME', 'GEOCODE_STREET_NUMBER', + 'GEOCODE_UNABLE_TO_CONVERT_DATA', 'GREEN', + 'GRID_TAB_INFO_HAS_HILLSHADE', 'GRID_TAB_INFO_MAX_VALUE', + 'GRID_TAB_INFO_MIN_VALUE', 'HOTLINK_INFO_ENABLED', + 'HOTLINK_INFO_EXPR', 'HOTLINK_INFO_MODE', 'HOTLINK_INFO_RELATIVE', + 'HOTLINK_MODE_BOTH', 'HOTLINK_MODE_LABEL', 'HOTLINK_MODE_OBJ', + 'IMAGE_CLASS_BILEVEL', 'IMAGE_CLASS_GREYSCALE', + 'IMAGE_CLASS_PALETTE', 'IMAGE_CLASS_RGB', 'IMAGE_TYPE_GRID', + 'IMAGE_TYPE_RASTER', 'INCL_ALL', 'INCL_COMMON', 'INCL_CROSSINGS', + 'ISOGRAM_AMBIENT_SPEED_DIST_UNIT', + 'ISOGRAM_AMBIENT_SPEED_TIME_UNIT', 'ISOGRAM_BANDING', + 'ISOGRAM_BATCH_SIZE', 'ISOGRAM_DEFAULT_AMBIENT_SPEED', + 'ISOGRAM_MAJOR_POLYGON_ONLY', 'ISOGRAM_MAJOR_ROADS_ONLY', + 'ISOGRAM_MAX_BANDS', 'ISOGRAM_MAX_BATCH_SIZE', + 'ISOGRAM_MAX_DISTANCE', 'ISOGRAM_MAX_DISTANCE_UNITS', + 'ISOGRAM_MAX_OFFROAD_DIST', 'ISOGRAM_MAX_OFFROAD_DIST_UNITS', + 'ISOGRAM_MAX_TIME', 'ISOGRAM_MAX_TIME_UNITS', + 'ISOGRAM_POINTS_ONLY', 'ISOGRAM_PROPAGATION_FACTOR', + 'ISOGRAM_RECORDS_INSERTED', 'ISOGRAM_RECORDS_NOTINSERTED', + 'ISOGRAM_RETURN_HOLES', 'ISOGRAM_SIMPLIFICATION_FACTOR', + 'LABEL_INFO_ANCHORX', 'LABEL_INFO_ANCHORY', 'LABEL_INFO_DRAWN', + 'LABEL_INFO_EDIT', 'LABEL_INFO_EDIT_ANCHOR', + 'LABEL_INFO_EDIT_ANGLE', 'LABEL_INFO_EDIT_FONT', + 'LABEL_INFO_EDIT_OFFSET', 'LABEL_INFO_EDIT_PEN', + 'LABEL_INFO_EDIT_POSITION', 'LABEL_INFO_EDIT_TEXT', + 'LABEL_INFO_EDIT_TEXTARROW', 'LABEL_INFO_EDIT_TEXTLINE', + 'LABEL_INFO_EDIT_VISIBILITY', 'LABEL_INFO_OBJECT', + 'LABEL_INFO_OFFSET', 'LABEL_INFO_ORIENTATION', + 'LABEL_INFO_POSITION', 'LABEL_INFO_ROWID', 'LABEL_INFO_SELECT', + 'LABEL_INFO_TABLE', 'LAYER_INFO_ARROWS', 'LAYER_INFO_CENTROIDS', + 'LAYER_INFO_COSMETIC', 'LAYER_INFO_DISPLAY', + 'LAYER_INFO_DISPLAY_GLOBAL', 'LAYER_INFO_DISPLAY_GRAPHIC', + 'LAYER_INFO_DISPLAY_OFF', 'LAYER_INFO_DISPLAY_VALUE', + 'LAYER_INFO_EDITABLE', 'LAYER_INFO_HOTLINK_COUNT', + 'LAYER_INFO_HOTLINK_EXPR', 'LAYER_INFO_HOTLINK_MODE', + 'LAYER_INFO_HOTLINK_RELATIVE', 'LAYER_INFO_LABEL_ALPHA', + 'LAYER_INFO_LABEL_ORIENT_CURVED', + 'LAYER_INFO_LABEL_ORIENT_HORIZONTAL', + 'LAYER_INFO_LABEL_ORIENT_PARALLEL', 'LAYER_INFO_LAYER_ALPHA', + 'LAYER_INFO_LAYER_TRANSLUCENCY', 'LAYER_INFO_LBL_AUTODISPLAY', + 'LAYER_INFO_LBL_CURFONT', 'LAYER_INFO_LBL_DUPLICATES', + 'LAYER_INFO_LBL_EXPR', 'LAYER_INFO_LBL_FONT', 'LAYER_INFO_LBL_LT', + 'LAYER_INFO_LBL_LT_ARROW', 'LAYER_INFO_LBL_LT_NONE', + 'LAYER_INFO_LBL_LT_SIMPLE', 'LAYER_INFO_LBL_MAX', + 'LAYER_INFO_LBL_OFFSET', 'LAYER_INFO_LBL_ORIENTATION', + 'LAYER_INFO_LBL_OVERLAP', 'LAYER_INFO_LBL_PARALLEL', + 'LAYER_INFO_LBL_PARTIALSEGS', 'LAYER_INFO_LBL_POS', + 'LAYER_INFO_LBL_POS_BC', 'LAYER_INFO_LBL_POS_BL', + 'LAYER_INFO_LBL_POS_BR', 'LAYER_INFO_LBL_POS_CC', + 'LAYER_INFO_LBL_POS_CL', 'LAYER_INFO_LBL_POS_CR', + 'LAYER_INFO_LBL_POS_TC', 'LAYER_INFO_LBL_POS_TL', + 'LAYER_INFO_LBL_POS_TR', 'LAYER_INFO_LBL_VIS_OFF', + 'LAYER_INFO_LBL_VIS_ON', 'LAYER_INFO_LBL_VIS_ZOOM', + 'LAYER_INFO_LBL_VISIBILITY', 'LAYER_INFO_LBL_ZOOM_MAX', + 'LAYER_INFO_LBL_ZOOM_MIN', 'LAYER_INFO_NAME', 'LAYER_INFO_NODES', + 'LAYER_INFO_OVR_BRUSH', 'LAYER_INFO_OVR_FONT', + 'LAYER_INFO_OVR_LINE', 'LAYER_INFO_OVR_PEN', + 'LAYER_INFO_OVR_SYMBOL', 'LAYER_INFO_PATH', + 'LAYER_INFO_SELECTABLE', 'LAYER_INFO_TYPE', + 'LAYER_INFO_TYPE_COSMETIC', 'LAYER_INFO_TYPE_GRID', + 'LAYER_INFO_TYPE_IMAGE', 'LAYER_INFO_TYPE_NORMAL', + 'LAYER_INFO_TYPE_THEMATIC', 'LAYER_INFO_TYPE_WMS', + 'LAYER_INFO_ZOOM_LAYERED', 'LAYER_INFO_ZOOM_MAX', + 'LAYER_INFO_ZOOM_MIN', 'LEGEND_INFO_MAP_ID', + 'LEGEND_INFO_NUM_FRAMES', 'LEGEND_INFO_ORIENTATION', + 'LEGEND_INFO_STYLE_SAMPLE_SIZE', 'LEGEND_STYLE_INFO_FONT', + 'LEGEND_STYLE_INFO_OBJ', 'LEGEND_STYLE_INFO_TEXT', + 'LOCATE_ABB_FILE', 'LOCATE_CLR_FILE', 'LOCATE_CUSTSYMB_DIR', + 'LOCATE_DEF_WOR', 'LOCATE_FNT_FILE', 'LOCATE_GEOCODE_SERVERLIST', + 'LOCATE_GRAPH_DIR', 'LOCATE_LAYOUT_TEMPLATE_DIR', + 'LOCATE_MNU_FILE', 'LOCATE_PEN_FILE', 'LOCATE_PREF_FILE', + 'LOCATE_PRJ_FILE', 'LOCATE_ROUTING_SERVERLIST', + 'LOCATE_THMTMPLT_DIR', 'LOCATE_WFS_SERVERLIST', + 'LOCATE_WMS_SERVERLIST', 'M_3DMAP_CLONE_VIEW', + 'M_3DMAP_PREVIOUS_VIEW', 'M_3DMAP_PROPERTIES', + 'M_3DMAP_REFRESH_GRID_TEXTURE', 'M_3DMAP_VIEW_ENTIRE_GRID', + 'M_3DMAP_VIEWPOINT_CONTROL', 'M_3DMAP_WIREFRAME', + 'M_ANALYZE_CALC_STATISTICS', 'M_ANALYZE_CUSTOMIZE_LEGEND', + 'M_ANALYZE_FIND', 'M_ANALYZE_FIND_SELECTION', + 'M_ANALYZE_INVERTSELECT', 'M_ANALYZE_SELECT', + 'M_ANALYZE_SELECTALL', 'M_ANALYZE_SHADE', 'M_ANALYZE_SQLQUERY', + 'M_ANALYZE_UNSELECT', 'M_BROWSE_EDIT', 'M_BROWSE_GRID', + 'M_BROWSE_NEW_RECORD', 'M_BROWSE_OPTIONS', 'M_BROWSE_PICK_FIELDS', + 'M_DBMS_OPEN_ODBC', 'M_EDIT_CLEAR', 'M_EDIT_CLEAROBJ', + 'M_EDIT_COPY', 'M_EDIT_CUT', 'M_EDIT_GETINFO', 'M_EDIT_NEW_ROW', + 'M_EDIT_PASTE', 'M_EDIT_PREFERENCES', 'M_EDIT_PREFERENCES_COUNTRY', + 'M_EDIT_PREFERENCES_FILE', 'M_EDIT_PREFERENCES_IMAGE_PROC', + 'M_EDIT_PREFERENCES_LAYOUT', 'M_EDIT_PREFERENCES_LEGEND', + 'M_EDIT_PREFERENCES_MAP', 'M_EDIT_PREFERENCES_OUTPUT', + 'M_EDIT_PREFERENCES_PATH', 'M_EDIT_PREFERENCES_PRINTER', + 'M_EDIT_PREFERENCES_STYLES', 'M_EDIT_PREFERENCES_SYSTEM', + 'M_EDIT_PREFERENCES_WEBSERVICES', 'M_EDIT_RESHAPE', 'M_EDIT_UNDO', + 'M_FILE_ABOUT', 'M_FILE_ADD_WORKSPACE', 'M_FILE_CLOSE', + 'M_FILE_CLOSE_ALL', 'M_FILE_CLOSE_ODBC', 'M_FILE_EXIT', + 'M_FILE_HELP', 'M_FILE_NEW', 'M_FILE_OPEN', 'M_FILE_OPEN_ODBC', + 'M_FILE_OPEN_ODBC_CONN', 'M_FILE_OPEN_UNIVERSAL_DATA', + 'M_FILE_OPEN_WFS', 'M_FILE_OPEN_WMS', 'M_FILE_PAGE_SETUP', + 'M_FILE_PRINT', 'M_FILE_PRINT_SETUP', 'M_FILE_REVERT', + 'M_FILE_RUN', 'M_FILE_SAVE', 'M_FILE_SAVE_COPY_AS', + 'M_FILE_SAVE_QUERY', 'M_FILE_SAVE_WINDOW_AS', + 'M_FILE_SAVE_WORKSPACE', 'M_FORMAT_CUSTOM_COLORS', + 'M_FORMAT_PICK_FILL', 'M_FORMAT_PICK_FONT', 'M_FORMAT_PICK_LINE', + 'M_FORMAT_PICK_SYMBOL', 'M_GRAPH_3D_VIEWING_ANGLE', + 'M_GRAPH_FORMATING', 'M_GRAPH_GENERAL_OPTIONS', + 'M_GRAPH_GRID_SCALES', 'M_GRAPH_LABEL_AXIS', + 'M_GRAPH_SAVE_AS_TEMPLATE', 'M_GRAPH_SERIES', + 'M_GRAPH_SERIES_OPTIONS', 'M_GRAPH_TITLES', 'M_GRAPH_TYPE', + 'M_GRAPH_VALUE_AXIS', 'M_HELP_ABOUT', 'M_HELP_CHECK_FOR_UPDATE', + 'M_HELP_CONNECT_MIFORUM', 'M_HELP_CONTENTS', + 'M_HELP_CONTEXTSENSITIVE', 'M_HELP_HELPMODE', + 'M_HELP_MAPINFO_3DGRAPH_HELP', 'M_HELP_MAPINFO_CONNECT_SERVICES', + 'M_HELP_MAPINFO_WWW', 'M_HELP_MAPINFO_WWW_STORE', + 'M_HELP_MAPINFO_WWW_TUTORIAL', 'M_HELP_SEARCH', + 'M_HELP_TECHSUPPORT', 'M_HELP_USE_HELP', 'M_LAYOUT_ACTUAL', + 'M_LAYOUT_ALIGN', 'M_LAYOUT_AUTOSCROLL_ONOFF', + 'M_LAYOUT_BRING2FRONT', 'M_LAYOUT_CHANGE_VIEW', + 'M_LAYOUT_DISPLAYOPTIONS', 'M_LAYOUT_DROPSHADOWS', + 'M_LAYOUT_ENTIRE', 'M_LAYOUT_LAYOUT_SIZE', 'M_LAYOUT_PREVIOUS', + 'M_LAYOUT_SEND2BACK', 'M_LEGEND_ADD_FRAMES', 'M_LEGEND_DELETE', + 'M_LEGEND_PROPERTIES', 'M_LEGEND_REFRESH', 'M_MAP_AUTOLABEL', + 'M_MAP_AUTOSCROLL_ONOFF', 'M_MAP_CHANGE_VIEW', + 'M_MAP_CLEAR_COSMETIC', 'M_MAP_CLEAR_CUSTOM_LABELS', + 'M_MAP_CLIP_REGION_ONOFF', 'M_MAP_CLONE_MAPPER', + 'M_MAP_CREATE_3DMAP', 'M_MAP_CREATE_LEGEND', + 'M_MAP_CREATE_PRISMMAP', 'M_MAP_ENTIRE_LAYER', + 'M_MAP_LAYER_CONTROL', 'M_MAP_MODIFY_THEMATIC', 'M_MAP_OPTIONS', + 'M_MAP_PREVIOUS', 'M_MAP_PROJECTION', 'M_MAP_SAVE_COSMETIC', + 'M_MAP_SET_CLIP_REGION', 'M_MAP_SETUNITS', 'M_MAP_SETUPDIGITIZER', + 'M_MAP_THEMATIC', 'M_MAPBASIC_CLEAR', 'M_MAPBASIC_SAVECONTENTS', + 'M_OBJECTS_BREAKPOLY', 'M_OBJECTS_BUFFER', + 'M_OBJECTS_CHECK_REGIONS', 'M_OBJECTS_CLEAN', + 'M_OBJECTS_CLEAR_TARGET', 'M_OBJECTS_COMBINE', + 'M_OBJECTS_CONVEX_HULL', 'M_OBJECTS_CVT_PGON', + 'M_OBJECTS_CVT_PLINE', 'M_OBJECTS_DISAGG', + 'M_OBJECTS_DRIVE_REGION', 'M_OBJECTS_ENCLOSE', 'M_OBJECTS_ERASE', + 'M_OBJECTS_ERASE_OUT', 'M_OBJECTS_MERGE', 'M_OBJECTS_OFFSET', + 'M_OBJECTS_OVERLAY', 'M_OBJECTS_POLYLINE_SPLIT', + 'M_OBJECTS_POLYLINE_SPLIT_AT_NODE', 'M_OBJECTS_RESHAPE', + 'M_OBJECTS_ROTATE', 'M_OBJECTS_SET_TARGET', 'M_OBJECTS_SMOOTH', + 'M_OBJECTS_SNAP', 'M_OBJECTS_SPLIT', 'M_OBJECTS_UNSMOOTH', + 'M_OBJECTS_VORONOI', 'M_ORACLE_CREATE_WORKSPACE', + 'M_ORACLE_DELETE_WORKSPACE', 'M_ORACLE_MERGE_PARENT', + 'M_ORACLE_REFRESH_FROM_PARENT', 'M_ORACLE_VERSION_ENABLE_OFF', + 'M_ORACLE_VERSION_ENABLE_ON', 'M_QUERY_CALC_STATISTICS', + 'M_QUERY_FIND', 'M_QUERY_FIND_ADDRESS', 'M_QUERY_FIND_SELECTION', + 'M_QUERY_FIND_SELECTION_CURRENT_MAP', 'M_QUERY_INVERTSELECT', + 'M_QUERY_SELECT', 'M_QUERY_SELECTALL', 'M_QUERY_SQLQUERY', + 'M_QUERY_UNSELECT', 'M_REDISTRICT_ADD', 'M_REDISTRICT_ASSIGN', + 'M_REDISTRICT_DELETE', 'M_REDISTRICT_OPTIONS', + 'M_REDISTRICT_TARGET', 'M_SENDMAIL_CURRENTWINDOW', + 'M_SENDMAIL_WORKSPACE', 'M_TABLE_APPEND', 'M_TABLE_BUFFER', + 'M_TABLE_CHANGESYMBOL', 'M_TABLE_CREATE_POINTS', 'M_TABLE_DELETE', + 'M_TABLE_DRIVE_REGION', 'M_TABLE_EXPORT', 'M_TABLE_GEOCODE', + 'M_TABLE_IMPORT', 'M_TABLE_MAKEMAPPABLE', + 'M_TABLE_MERGE_USING_COLUMN', 'M_TABLE_MODIFY_STRUCTURE', + 'M_TABLE_PACK', 'M_TABLE_RASTER_REG', 'M_TABLE_RASTER_STYLE', + 'M_TABLE_REFRESH', 'M_TABLE_RENAME', + 'M_TABLE_UNIVERSAL_DATA_REFRESH', 'M_TABLE_UNLINK', + 'M_TABLE_UPDATE_COLUMN', 'M_TABLE_VORONOI', 'M_TABLE_WEB_GEOCODE', + 'M_TABLE_WFS_PROPS', 'M_TABLE_WFS_REFRESH', 'M_TABLE_WMS_PROPS', + 'M_TOOLS_ADD_NODE', 'M_TOOLS_ARC', 'M_TOOLS_CRYSTAL_REPORTS_NEW', + 'M_TOOLS_CRYSTAL_REPORTS_OPEN', 'M_TOOLS_DRAGWINDOW', + 'M_TOOLS_ELLIPSE', 'M_TOOLS_EXPAND', 'M_TOOLS_FRAME', + 'M_TOOLS_HOTLINK', 'M_TOOLS_LABELER', 'M_TOOLS_LINE', + 'M_TOOLS_MAPBASIC', 'M_TOOLS_PNT_QUERY', 'M_TOOLS_POINT', + 'M_TOOLS_POLYGON', 'M_TOOLS_POLYLINE', 'M_TOOLS_RASTER_REG', + 'M_TOOLS_RECENTER', 'M_TOOLS_RECTANGLE', 'M_TOOLS_ROUNDEDRECT', + 'M_TOOLS_RULER', 'M_TOOLS_RUN', 'M_TOOLS_SEARCH_BOUNDARY', + 'M_TOOLS_SEARCH_POLYGON', 'M_TOOLS_SEARCH_RADIUS', + 'M_TOOLS_SEARCH_RECT', 'M_TOOLS_SELECTOR', 'M_TOOLS_SHRINK', + 'M_TOOLS_TEXT', 'M_TOOLS_TOOL_MANAGER', 'M_WINDOW_ARRANGEICONS', + 'M_WINDOW_BROWSE', 'M_WINDOW_BUTTONPAD', 'M_WINDOW_CASCADE', + 'M_WINDOW_EXPORT_WINDOW', 'M_WINDOW_FIRST', 'M_WINDOW_GRAPH', + 'M_WINDOW_LAYOUT', 'M_WINDOW_LEGEND', 'M_WINDOW_MAP', + 'M_WINDOW_MAPBASIC', 'M_WINDOW_MORE', 'M_WINDOW_REDISTRICT', + 'M_WINDOW_REDRAW', 'M_WINDOW_STATISTICS', 'M_WINDOW_STATUSBAR', + 'M_WINDOW_TILE', 'M_WINDOW_TOOL_PALETTE', 'MAGENTA', + 'MAP3D_INFO_BACKGROUND', 'MAP3D_INFO_CAMERA_CLIP_FAR', + 'MAP3D_INFO_CAMERA_CLIP_NEAR', 'MAP3D_INFO_CAMERA_FOCAL_X', + 'MAP3D_INFO_CAMERA_FOCAL_Y', 'MAP3D_INFO_CAMERA_FOCAL_Z', + 'MAP3D_INFO_CAMERA_VPN_1', 'MAP3D_INFO_CAMERA_VPN_2', + 'MAP3D_INFO_CAMERA_VPN_3', 'MAP3D_INFO_CAMERA_VU_1', + 'MAP3D_INFO_CAMERA_VU_2', 'MAP3D_INFO_CAMERA_VU_3', + 'MAP3D_INFO_CAMERA_X', 'MAP3D_INFO_CAMERA_Y', + 'MAP3D_INFO_CAMERA_Z', 'MAP3D_INFO_LIGHT_COLOR', + 'MAP3D_INFO_LIGHT_X', 'MAP3D_INFO_LIGHT_Y', 'MAP3D_INFO_LIGHT_Z', + 'MAP3D_INFO_RESOLUTION_X', 'MAP3D_INFO_RESOLUTION_Y', + 'MAP3D_INFO_SCALE', 'MAP3D_INFO_UNITS', 'MAPPER_INFO_AREAUNITS', + 'MAPPER_INFO_CENTERX', 'MAPPER_INFO_CENTERY', + 'MAPPER_INFO_CLIP_DISPLAY_ALL', 'MAPPER_INFO_CLIP_DISPLAY_POLYOBJ', + 'MAPPER_INFO_CLIP_OVERLAY', 'MAPPER_INFO_CLIP_REGION', + 'MAPPER_INFO_CLIP_TYPE', 'MAPPER_INFO_COORDSYS_CLAUSE', + 'MAPPER_INFO_COORDSYS_CLAUSE_WITH_BOUNDS', + 'MAPPER_INFO_COORDSYS_NAME', 'MAPPER_INFO_DISPLAY', + 'MAPPER_INFO_DISPLAY_DECIMAL', 'MAPPER_INFO_DISPLAY_DEGMINSEC', + 'MAPPER_INFO_DISPLAY_DMS', 'MAPPER_INFO_DISPLAY_MGRS', + 'MAPPER_INFO_DISPLAY_POSITION', 'MAPPER_INFO_DISPLAY_SCALE', + 'MAPPER_INFO_DISPLAY_ZOOM', 'MAPPER_INFO_DIST_CALC_TYPE', + 'MAPPER_INFO_DIST_CARTESIAN', 'MAPPER_INFO_DIST_SPHERICAL', + 'MAPPER_INFO_DISTUNITS', 'MAPPER_INFO_EDIT_LAYER', + 'MAPPER_INFO_LAYERS', 'MAPPER_INFO_MAXX', 'MAPPER_INFO_MAXY', + 'MAPPER_INFO_MERGE_MAP', 'MAPPER_INFO_MINX', 'MAPPER_INFO_MINY', + 'MAPPER_INFO_MOVE_DUPLICATE_NODES', 'MAPPER_INFO_NUM_THEMATIC', + 'MAPPER_INFO_REPROJECTION', 'MAPPER_INFO_RESAMPLING', + 'MAPPER_INFO_SCALE', 'MAPPER_INFO_SCROLLBARS', + 'MAPPER_INFO_XYUNITS', 'MAPPER_INFO_ZOOM', 'MAX_STRING_LENGTH', + 'MENUITEM_INFO_ACCELERATOR', 'MENUITEM_INFO_CHECKABLE', + 'MENUITEM_INFO_CHECKED', 'MENUITEM_INFO_ENABLED', + 'MENUITEM_INFO_HANDLER', 'MENUITEM_INFO_HELPMSG', + 'MENUITEM_INFO_ID', 'MENUITEM_INFO_SHOWHIDEABLE', + 'MENUITEM_INFO_TEXT', 'MI_CURSOR_ARROW', 'MI_CURSOR_CHANGE_WIDTH', + 'MI_CURSOR_CROSSHAIR', 'MI_CURSOR_DRAG_OBJ', + 'MI_CURSOR_FINGER_LEFT', 'MI_CURSOR_FINGER_UP', + 'MI_CURSOR_GRABBER', 'MI_CURSOR_IBEAM', 'MI_CURSOR_IBEAM_CROSS', + 'MI_CURSOR_ZOOM_IN', 'MI_CURSOR_ZOOM_OUT', 'MI_ICON_ADD_NODE', + 'MI_ICON_ARC', 'MI_ICON_ARROW', 'MI_ICON_ARROW_1', + 'MI_ICON_ARROW_10', 'MI_ICON_ARROW_11', 'MI_ICON_ARROW_12', + 'MI_ICON_ARROW_13', 'MI_ICON_ARROW_14', 'MI_ICON_ARROW_15', + 'MI_ICON_ARROW_16', 'MI_ICON_ARROW_17', 'MI_ICON_ARROW_18', + 'MI_ICON_ARROW_19', 'MI_ICON_ARROW_2', 'MI_ICON_ARROW_20', + 'MI_ICON_ARROW_21', 'MI_ICON_ARROW_3', 'MI_ICON_ARROW_4', + 'MI_ICON_ARROW_5', 'MI_ICON_ARROW_6', 'MI_ICON_ARROW_7', + 'MI_ICON_ARROW_8', 'MI_ICON_ARROW_9', 'MI_ICON_CLIP_MODE', + 'MI_ICON_CLIP_REGION', 'MI_ICON_CLOSE_ALL', + 'MI_ICON_COMMUNICATION_1', 'MI_ICON_COMMUNICATION_10', + 'MI_ICON_COMMUNICATION_11', 'MI_ICON_COMMUNICATION_12', + 'MI_ICON_COMMUNICATION_2', 'MI_ICON_COMMUNICATION_3', + 'MI_ICON_COMMUNICATION_4', 'MI_ICON_COMMUNICATION_5', + 'MI_ICON_COMMUNICATION_6', 'MI_ICON_COMMUNICATION_7', + 'MI_ICON_COMMUNICATION_8', 'MI_ICON_COMMUNICATION_9', + 'MI_ICON_COMPASS_CIRCLE_TA', 'MI_ICON_COMPASS_CONTRACT', + 'MI_ICON_COMPASS_EXPAND', 'MI_ICON_COMPASS_POLY_TA', + 'MI_ICON_COMPASS_TAG', 'MI_ICON_COMPASS_UNTAG', 'MI_ICON_COPY', + 'MI_ICON_CROSSHAIR', 'MI_ICON_CUT', 'MI_ICON_DISTRICT_MANY', + 'MI_ICON_DISTRICT_SAME', 'MI_ICON_DRAG_HANDLE', 'MI_ICON_ELLIPSE', + 'MI_ICON_EMERGENCY_1', 'MI_ICON_EMERGENCY_10', + 'MI_ICON_EMERGENCY_11', 'MI_ICON_EMERGENCY_12', + 'MI_ICON_EMERGENCY_13', 'MI_ICON_EMERGENCY_14', + 'MI_ICON_EMERGENCY_15', 'MI_ICON_EMERGENCY_16', + 'MI_ICON_EMERGENCY_17', 'MI_ICON_EMERGENCY_18', + 'MI_ICON_EMERGENCY_2', 'MI_ICON_EMERGENCY_3', + 'MI_ICON_EMERGENCY_4', 'MI_ICON_EMERGENCY_5', + 'MI_ICON_EMERGENCY_6', 'MI_ICON_EMERGENCY_7', + 'MI_ICON_EMERGENCY_8', 'MI_ICON_EMERGENCY_9', 'MI_ICON_GRABBER', + 'MI_ICON_GRAPH_SELECT', 'MI_ICON_HELP', 'MI_ICON_HOT_LINK', + 'MI_ICON_INFO', 'MI_ICON_INVERTSELECT', 'MI_ICON_LABEL', + 'MI_ICON_LAYERS', 'MI_ICON_LEGEND', 'MI_ICON_LETTERS_A', + 'MI_ICON_LETTERS_B', 'MI_ICON_LETTERS_C', 'MI_ICON_LETTERS_D', + 'MI_ICON_LETTERS_E', 'MI_ICON_LETTERS_F', 'MI_ICON_LETTERS_G', + 'MI_ICON_LETTERS_H', 'MI_ICON_LETTERS_I', 'MI_ICON_LETTERS_J', + 'MI_ICON_LETTERS_K', 'MI_ICON_LETTERS_L', 'MI_ICON_LETTERS_M', + 'MI_ICON_LETTERS_N', 'MI_ICON_LETTERS_O', 'MI_ICON_LETTERS_P', + 'MI_ICON_LETTERS_Q', 'MI_ICON_LETTERS_R', 'MI_ICON_LETTERS_S', + 'MI_ICON_LETTERS_T', 'MI_ICON_LETTERS_U', 'MI_ICON_LETTERS_V', + 'MI_ICON_LETTERS_W', 'MI_ICON_LETTERS_X', 'MI_ICON_LETTERS_Y', + 'MI_ICON_LETTERS_Z', 'MI_ICON_LINE', 'MI_ICON_LINE_STYLE', + 'MI_ICON_MAPSYMB_1', 'MI_ICON_MAPSYMB_10', 'MI_ICON_MAPSYMB_11', + 'MI_ICON_MAPSYMB_12', 'MI_ICON_MAPSYMB_13', 'MI_ICON_MAPSYMB_14', + 'MI_ICON_MAPSYMB_15', 'MI_ICON_MAPSYMB_16', 'MI_ICON_MAPSYMB_17', + 'MI_ICON_MAPSYMB_18', 'MI_ICON_MAPSYMB_19', 'MI_ICON_MAPSYMB_2', + 'MI_ICON_MAPSYMB_20', 'MI_ICON_MAPSYMB_21', 'MI_ICON_MAPSYMB_22', + 'MI_ICON_MAPSYMB_23', 'MI_ICON_MAPSYMB_24', 'MI_ICON_MAPSYMB_25', + 'MI_ICON_MAPSYMB_26', 'MI_ICON_MAPSYMB_3', 'MI_ICON_MAPSYMB_4', + 'MI_ICON_MAPSYMB_5', 'MI_ICON_MAPSYMB_6', 'MI_ICON_MAPSYMB_7', + 'MI_ICON_MAPSYMB_8', 'MI_ICON_MAPSYMB_9', 'MI_ICON_MARITIME_1', + 'MI_ICON_MARITIME_10', 'MI_ICON_MARITIME_2', 'MI_ICON_MARITIME_3', + 'MI_ICON_MARITIME_4', 'MI_ICON_MARITIME_5', 'MI_ICON_MARITIME_6', + 'MI_ICON_MARITIME_7', 'MI_ICON_MARITIME_8', 'MI_ICON_MARITIME_9', + 'MI_ICON_MB_1', 'MI_ICON_MB_10', 'MI_ICON_MB_11', 'MI_ICON_MB_12', + 'MI_ICON_MB_13', 'MI_ICON_MB_14', 'MI_ICON_MB_2', 'MI_ICON_MB_3', + 'MI_ICON_MB_4', 'MI_ICON_MB_5', 'MI_ICON_MB_6', 'MI_ICON_MB_7', + 'MI_ICON_MB_8', 'MI_ICON_MB_9', 'MI_ICON_MISC_1', + 'MI_ICON_MISC_10', 'MI_ICON_MISC_11', 'MI_ICON_MISC_12', + 'MI_ICON_MISC_13', 'MI_ICON_MISC_14', 'MI_ICON_MISC_15', + 'MI_ICON_MISC_16', 'MI_ICON_MISC_17', 'MI_ICON_MISC_18', + 'MI_ICON_MISC_19', 'MI_ICON_MISC_2', 'MI_ICON_MISC_20', + 'MI_ICON_MISC_21', 'MI_ICON_MISC_22', 'MI_ICON_MISC_23', + 'MI_ICON_MISC_24', 'MI_ICON_MISC_25', 'MI_ICON_MISC_26', + 'MI_ICON_MISC_27', 'MI_ICON_MISC_28', 'MI_ICON_MISC_29', + 'MI_ICON_MISC_3', 'MI_ICON_MISC_30', 'MI_ICON_MISC_31', + 'MI_ICON_MISC_4', 'MI_ICON_MISC_5', 'MI_ICON_MISC_6', + 'MI_ICON_MISC_7', 'MI_ICON_MISC_8', 'MI_ICON_MISC_9', + 'MI_ICON_NEW_DOC', 'MI_ICON_NUMBERS_1', 'MI_ICON_NUMBERS_10', + 'MI_ICON_NUMBERS_11', 'MI_ICON_NUMBERS_12', 'MI_ICON_NUMBERS_13', + 'MI_ICON_NUMBERS_14', 'MI_ICON_NUMBERS_15', 'MI_ICON_NUMBERS_16', + 'MI_ICON_NUMBERS_17', 'MI_ICON_NUMBERS_18', 'MI_ICON_NUMBERS_19', + 'MI_ICON_NUMBERS_2', 'MI_ICON_NUMBERS_20', 'MI_ICON_NUMBERS_21', + 'MI_ICON_NUMBERS_22', 'MI_ICON_NUMBERS_23', 'MI_ICON_NUMBERS_24', + 'MI_ICON_NUMBERS_25', 'MI_ICON_NUMBERS_26', 'MI_ICON_NUMBERS_27', + 'MI_ICON_NUMBERS_28', 'MI_ICON_NUMBERS_29', 'MI_ICON_NUMBERS_3', + 'MI_ICON_NUMBERS_30', 'MI_ICON_NUMBERS_31', 'MI_ICON_NUMBERS_32', + 'MI_ICON_NUMBERS_4', 'MI_ICON_NUMBERS_5', 'MI_ICON_NUMBERS_6', + 'MI_ICON_NUMBERS_7', 'MI_ICON_NUMBERS_8', 'MI_ICON_NUMBERS_9', + 'MI_ICON_ODBC_DISCONNECT', 'MI_ICON_ODBC_MAPPABLE', + 'MI_ICON_ODBC_OPEN', 'MI_ICON_ODBC_REFRESH', 'MI_ICON_ODBC_SYMBOL', + 'MI_ICON_ODBC_UNLINK', 'MI_ICON_OPEN_FILE', 'MI_ICON_OPEN_WOR', + 'MI_ICON_OPENWFS', 'MI_ICON_OPENWMS', 'MI_ICON_PASTE', + 'MI_ICON_POLYGON', 'MI_ICON_POLYLINE', 'MI_ICON_PRINT', + 'MI_ICON_REALESTATE_1', 'MI_ICON_REALESTATE_10', + 'MI_ICON_REALESTATE_11', 'MI_ICON_REALESTATE_12', + 'MI_ICON_REALESTATE_13', 'MI_ICON_REALESTATE_14', + 'MI_ICON_REALESTATE_15', 'MI_ICON_REALESTATE_16', + 'MI_ICON_REALESTATE_17', 'MI_ICON_REALESTATE_18', + 'MI_ICON_REALESTATE_19', 'MI_ICON_REALESTATE_2', + 'MI_ICON_REALESTATE_20', 'MI_ICON_REALESTATE_21', + 'MI_ICON_REALESTATE_22', 'MI_ICON_REALESTATE_23', + 'MI_ICON_REALESTATE_3', 'MI_ICON_REALESTATE_4', + 'MI_ICON_REALESTATE_5', 'MI_ICON_REALESTATE_6', + 'MI_ICON_REALESTATE_7', 'MI_ICON_REALESTATE_8', + 'MI_ICON_REALESTATE_9', 'MI_ICON_RECT', 'MI_ICON_REGION_STYLE', + 'MI_ICON_RESHAPE', 'MI_ICON_ROUND_RECT', 'MI_ICON_RULER', + 'MI_ICON_RUN', 'MI_ICON_SAVE_FILE', 'MI_ICON_SAVE_WIN', + 'MI_ICON_SAVE_WOR', 'MI_ICON_SEARCH_BDY', 'MI_ICON_SEARCH_POLYGON', + 'MI_ICON_SEARCH_RADIUS', 'MI_ICON_SEARCH_RECT', 'MI_ICON_SIGNS_1', + 'MI_ICON_SIGNS_10', 'MI_ICON_SIGNS_11', 'MI_ICON_SIGNS_12', + 'MI_ICON_SIGNS_13', 'MI_ICON_SIGNS_14', 'MI_ICON_SIGNS_15', + 'MI_ICON_SIGNS_16', 'MI_ICON_SIGNS_17', 'MI_ICON_SIGNS_18', + 'MI_ICON_SIGNS_19', 'MI_ICON_SIGNS_2', 'MI_ICON_SIGNS_3', + 'MI_ICON_SIGNS_4', 'MI_ICON_SIGNS_5', 'MI_ICON_SIGNS_6', + 'MI_ICON_SIGNS_7', 'MI_ICON_SIGNS_8', 'MI_ICON_SIGNS_9', + 'MI_ICON_STATISTICS', 'MI_ICON_SYMBOL', 'MI_ICON_SYMBOL_STYLE', + 'MI_ICON_TEXT', 'MI_ICON_TEXT_STYLE', 'MI_ICON_TRANSPORT_1', + 'MI_ICON_TRANSPORT_10', 'MI_ICON_TRANSPORT_11', + 'MI_ICON_TRANSPORT_12', 'MI_ICON_TRANSPORT_13', + 'MI_ICON_TRANSPORT_14', 'MI_ICON_TRANSPORT_15', + 'MI_ICON_TRANSPORT_16', 'MI_ICON_TRANSPORT_17', + 'MI_ICON_TRANSPORT_18', 'MI_ICON_TRANSPORT_19', + 'MI_ICON_TRANSPORT_2', 'MI_ICON_TRANSPORT_20', + 'MI_ICON_TRANSPORT_21', 'MI_ICON_TRANSPORT_22', + 'MI_ICON_TRANSPORT_23', 'MI_ICON_TRANSPORT_24', + 'MI_ICON_TRANSPORT_25', 'MI_ICON_TRANSPORT_26', + 'MI_ICON_TRANSPORT_27', 'MI_ICON_TRANSPORT_3', + 'MI_ICON_TRANSPORT_4', 'MI_ICON_TRANSPORT_5', + 'MI_ICON_TRANSPORT_6', 'MI_ICON_TRANSPORT_7', + 'MI_ICON_TRANSPORT_8', 'MI_ICON_TRANSPORT_9', 'MI_ICON_UNDO', + 'MI_ICON_UNSELECT_ALL', 'MI_ICON_WINDOW_FRAME', 'MI_ICON_WRENCH', + 'MI_ICON_ZOOM_IN', 'MI_ICON_ZOOM_OUT', 'MI_ICON_ZOOM_QUESTION', + 'MI_ICONS_MAPS_1', 'MI_ICONS_MAPS_10', 'MI_ICONS_MAPS_11', + 'MI_ICONS_MAPS_12', 'MI_ICONS_MAPS_13', 'MI_ICONS_MAPS_14', + 'MI_ICONS_MAPS_15', 'MI_ICONS_MAPS_2', 'MI_ICONS_MAPS_3', + 'MI_ICONS_MAPS_4', 'MI_ICONS_MAPS_5', 'MI_ICONS_MAPS_6', + 'MI_ICONS_MAPS_7', 'MI_ICONS_MAPS_8', 'MI_ICONS_MAPS_9', + 'MIPLATFORM_HP', 'MIPLATFORM_MAC68K', 'MIPLATFORM_POWERMAC', + 'MIPLATFORM_SPECIAL', 'MIPLATFORM_SUN', 'MIPLATFORM_WIN16', + 'MIPLATFORM_WIN32', 'MODE_APPEND', 'MODE_BINARY', 'MODE_INPUT', + 'MODE_OUTPUT', 'MODE_RANDOM', 'OBJ_ARC', 'OBJ_ELLIPSE', + 'OBJ_FRAME', 'OBJ_GEO_ARCBEGANGLE', 'OBJ_GEO_ARCENDANGLE', + 'OBJ_GEO_CENTROID', 'OBJ_GEO_LINEBEGX', 'OBJ_GEO_LINEBEGY', + 'OBJ_GEO_LINEENDX', 'OBJ_GEO_LINEENDY', 'OBJ_GEO_MAXX', + 'OBJ_GEO_MAXY', 'OBJ_GEO_MINX', 'OBJ_GEO_MINY', 'OBJ_GEO_POINTM', + 'OBJ_GEO_POINTX', 'OBJ_GEO_POINTY', 'OBJ_GEO_POINTZ', + 'OBJ_GEO_ROUNDRADIUS', 'OBJ_GEO_TEXTANGLE', 'OBJ_GEO_TEXTLINEX', + 'OBJ_GEO_TEXTLINEY', 'OBJ_INFO_BRUSH', 'OBJ_INFO_FILLFRAME', + 'OBJ_INFO_FRAMETITLE', 'OBJ_INFO_FRAMEWIN', 'OBJ_INFO_HAS_M', + 'OBJ_INFO_HAS_Z', 'OBJ_INFO_MPOINT', 'OBJ_INFO_NONEMPTY', + 'OBJ_INFO_NPNTS', 'OBJ_INFO_NPOLYGONS', 'OBJ_INFO_PEN', + 'OBJ_INFO_PLINE', 'OBJ_INFO_REGION', 'OBJ_INFO_SMOOTH', + 'OBJ_INFO_SYMBOL', 'OBJ_INFO_TEXTARROW', 'OBJ_INFO_TEXTFONT', + 'OBJ_INFO_TEXTJUSTIFY', 'OBJ_INFO_TEXTSPACING', + 'OBJ_INFO_TEXTSTRING', 'OBJ_INFO_TYPE', 'OBJ_INFO_Z_UNIT', + 'OBJ_INFO_Z_UNIT_SET', 'OBJ_LINE', 'OBJ_PLINE', 'OBJ_POINT', + 'OBJ_RECT', 'OBJ_REGION', 'OBJ_ROUNDRECT', 'OBJ_TEXT', + 'OBJ_TYPE_ARC', 'OBJ_TYPE_COLLECTION', 'OBJ_TYPE_ELLIPSE', + 'OBJ_TYPE_FRAME', 'OBJ_TYPE_LINE', 'OBJ_TYPE_MPOINT', + 'OBJ_TYPE_PLINE', 'OBJ_TYPE_POINT', 'OBJ_TYPE_RECT', + 'OBJ_TYPE_REGION', 'OBJ_TYPE_ROUNDRECT', 'OBJ_TYPE_TEXT', + 'ORIENTATION_CUSTOM', 'ORIENTATION_LANDSCAPE', + 'ORIENTATION_PORTRAIT', 'PEN_COLOR', 'PEN_INDEX', + 'PEN_INTERLEAVED', 'PEN_PATTERN', 'PEN_WIDTH', 'PLATFORM_MAC', + 'PLATFORM_MOTIF', 'PLATFORM_SPECIAL', 'PLATFORM_WIN', + 'PLATFORM_X11', 'PLATFORM_XOL', 'PRISMMAP_INFO_BACKGROUND', + 'PRISMMAP_INFO_CAMERA_CLIP_FAR', 'PRISMMAP_INFO_CAMERA_CLIP_NEAR', + 'PRISMMAP_INFO_CAMERA_FOCAL_X', 'PRISMMAP_INFO_CAMERA_FOCAL_Y', + 'PRISMMAP_INFO_CAMERA_FOCAL_Z', 'PRISMMAP_INFO_CAMERA_VPN_1', + 'PRISMMAP_INFO_CAMERA_VPN_2', 'PRISMMAP_INFO_CAMERA_VPN_3', + 'PRISMMAP_INFO_CAMERA_VU_1', 'PRISMMAP_INFO_CAMERA_VU_2', + 'PRISMMAP_INFO_CAMERA_VU_3', 'PRISMMAP_INFO_CAMERA_X', + 'PRISMMAP_INFO_CAMERA_Y', 'PRISMMAP_INFO_CAMERA_Z', + 'PRISMMAP_INFO_INFOTIP_EXPR', 'PRISMMAP_INFO_LIGHT_COLOR', + 'PRISMMAP_INFO_LIGHT_X', 'PRISMMAP_INFO_LIGHT_Y', + 'PRISMMAP_INFO_LIGHT_Z', 'PRISMMAP_INFO_SCALE', 'RAD_2_DEG', + 'RASTER_CONTROL_POINT_X', 'RASTER_CONTROL_POINT_Y', + 'RASTER_TAB_INFO_ALPHA', 'RASTER_TAB_INFO_BITS_PER_PIXEL', + 'RASTER_TAB_INFO_BRIGHTNESS', 'RASTER_TAB_INFO_CONTRAST', + 'RASTER_TAB_INFO_DISPLAY_TRANSPARENT', 'RASTER_TAB_INFO_GREYSCALE', + 'RASTER_TAB_INFO_HEIGHT', 'RASTER_TAB_INFO_IMAGE_CLASS', + 'RASTER_TAB_INFO_IMAGE_NAME', 'RASTER_TAB_INFO_IMAGE_TYPE', + 'RASTER_TAB_INFO_NUM_CONTROL_POINTS', + 'RASTER_TAB_INFO_TRANSPARENT_COLOR', 'RASTER_TAB_INFO_WIDTH', + 'RED', 'REGION_INFO_IS_CLOCKWISE', 'SEARCH_INFO_ROW', + 'SEARCH_INFO_TABLE', 'SECONDS_PER_DAY', 'SEL_INFO_NROWS', + 'SEL_INFO_SELNAME', 'SEL_INFO_TABLENAME', + 'SESSION_INFO_AREA_UNITS', 'SESSION_INFO_COORDSYS_CLAUSE', + 'SESSION_INFO_DISTANCE_UNITS', 'SESSION_INFO_PAPER_UNITS', + 'SRV_COL_INFO_ALIAS', 'SRV_COL_INFO_NAME', + 'SRV_COL_INFO_PRECISION', 'SRV_COL_INFO_SCALE', + 'SRV_COL_INFO_STATUS', 'SRV_COL_INFO_TYPE', 'SRV_COL_INFO_VALUE', + 'SRV_COL_INFO_WIDTH', 'SRV_COL_TYPE_BIN_STRING', + 'SRV_COL_TYPE_CHAR', 'SRV_COL_TYPE_DATE', 'SRV_COL_TYPE_DECIMAL', + 'SRV_COL_TYPE_FIXED_LEN_STRING', 'SRV_COL_TYPE_FLOAT', + 'SRV_COL_TYPE_INTEGER', 'SRV_COL_TYPE_LOGICAL', + 'SRV_COL_TYPE_NONE', 'SRV_COL_TYPE_SMALLINT', + 'SRV_CONNECT_INFO_DB_NAME', 'SRV_CONNECT_INFO_DRIVER_NAME', + 'SRV_CONNECT_INFO_DS_NAME', 'SRV_CONNECT_INFO_QUOTE_CHAR', + 'SRV_CONNECT_INFO_SQL_USER_ID', 'SRV_DRV_DATA_SOURCE', + 'SRV_DRV_INFO_NAME', 'SRV_DRV_INFO_NAME_LIST', 'SRV_ERROR', + 'SRV_FETCH_FIRST', 'SRV_FETCH_LAST', 'SRV_FETCH_NEXT', + 'SRV_FETCH_PREV', 'SRV_INVALID_HANDLE', 'SRV_NEED_DATA', + 'SRV_NO_MORE_DATA', 'SRV_NULL_DATA', 'SRV_SUCCESS', + 'SRV_SUCCESS_WITH_INFO', 'SRV_TRUNCATED_DATA', + 'SRV_WM_HIST_NO_OVERWRITE', 'SRV_WM_HIST_NONE', + 'SRV_WM_HIST_OVERWRITE', 'STR_EQ', 'STR_GT', 'STR_LT', + 'STYLE_SAMPLE_SIZE_LARGE', 'STYLE_SAMPLE_SIZE_SMALL', + 'SWITCHING_INTO_MAPINFO', 'SWITCHING_OUT_OF_MAPINFO', + 'SYMBOL_ANGLE', 'SYMBOL_CODE', 'SYMBOL_COLOR', + 'SYMBOL_CUSTOM_NAME', 'SYMBOL_CUSTOM_STYLE', 'SYMBOL_FONT_NAME', + 'SYMBOL_FONT_STYLE', 'SYMBOL_KIND', 'SYMBOL_KIND_CUSTOM', + 'SYMBOL_KIND_FONT', 'SYMBOL_KIND_VECTOR', 'SYMBOL_POINTSIZE', + 'SYS_INFO_APPIDISPATCH', 'SYS_INFO_APPLICATIONWND', + 'SYS_INFO_APPVERSION', 'SYS_INFO_CHARSET', + 'SYS_INFO_COPYPROTECTED', 'SYS_INFO_DATE_FORMAT', + 'SYS_INFO_DDESTATUS', 'SYS_INFO_DIG_INSTALLED', + 'SYS_INFO_DIG_MODE', 'SYS_INFO_MAPINFOWND', + 'SYS_INFO_MDICLIENTWND', 'SYS_INFO_MIBUILD_NUMBER', + 'SYS_INFO_MIPLATFORM', 'SYS_INFO_MIVERSION', + 'SYS_INFO_NUMBER_FORMAT', 'SYS_INFO_PLATFORM', + 'SYS_INFO_PRODUCTLEVEL', 'SYS_INFO_RUNTIME', + 'TAB_GEO_CONTROL_POINT_X', 'TAB_GEO_CONTROL_POINT_Y', + 'TAB_INFO_BROWSER_LIST', 'TAB_INFO_COORDSYS_CLAUSE', + 'TAB_INFO_COORDSYS_CLAUSE_WITHOUT_BOUNDS', + 'TAB_INFO_COORDSYS_MAXX', 'TAB_INFO_COORDSYS_MAXY', + 'TAB_INFO_COORDSYS_MINX', 'TAB_INFO_COORDSYS_MINY', + 'TAB_INFO_COORDSYS_NAME', 'TAB_INFO_EDITED', 'TAB_INFO_FASTEDIT', + 'TAB_INFO_MAPPABLE', 'TAB_INFO_MAPPABLE_TABLE', 'TAB_INFO_MAXX', + 'TAB_INFO_MAXY', 'TAB_INFO_MINX', 'TAB_INFO_MINY', 'TAB_INFO_NAME', + 'TAB_INFO_NCOLS', 'TAB_INFO_NREFS', 'TAB_INFO_NROWS', + 'TAB_INFO_NUM', 'TAB_INFO_READONLY', 'TAB_INFO_SEAMLESS', + 'TAB_INFO_SUPPORT_MZ', 'TAB_INFO_TABFILE', 'TAB_INFO_TEMP', + 'TAB_INFO_THEME_METADATA', 'TAB_INFO_TYPE', 'TAB_INFO_UNDO', + 'TAB_INFO_USERBROWSE', 'TAB_INFO_USERCLOSE', + 'TAB_INFO_USERDISPLAYMAP', 'TAB_INFO_USEREDITABLE', + 'TAB_INFO_USERMAP', 'TAB_INFO_USERREMOVEMAP', 'TAB_INFO_Z_UNIT', + 'TAB_INFO_Z_UNIT_SET', 'TAB_TYPE_BASE', 'TAB_TYPE_FME', + 'TAB_TYPE_IMAGE', 'TAB_TYPE_LINKED', 'TAB_TYPE_RESULT', + 'TAB_TYPE_VIEW', 'TAB_TYPE_WFS', 'TAB_TYPE_WMS', 'TRUE', 'WHITE', + 'WIN_3DMAP', 'WIN_BROWSER', 'WIN_BUTTONPAD', 'WIN_CART_LEGEND', + 'WIN_GRAPH', 'WIN_HELP', 'WIN_INFO', 'WIN_INFO_AUTOSCROLL', + 'WIN_INFO_CLONEWINDOW', 'WIN_INFO_ENHANCED_RENDERING', + 'WIN_INFO_EXPORT_ANTIALIASING', 'WIN_INFO_EXPORT_BORDER', + 'WIN_INFO_EXPORT_DITHER', 'WIN_INFO_EXPORT_FILTER', + 'WIN_INFO_EXPORT_MASKSIZE', 'WIN_INFO_EXPORT_THRESHOLD', + 'WIN_INFO_EXPORT_TRANSPRASTER', 'WIN_INFO_EXPORT_TRANSPVECTOR', + 'WIN_INFO_EXPORT_TRUECOLOR', 'WIN_INFO_HEIGHT', + 'WIN_INFO_LEGENDS_MAP', 'WIN_INFO_NAME', 'WIN_INFO_OPEN', + 'WIN_INFO_PRINTER_BORDER', 'WIN_INFO_PRINTER_BOTTOMMARGIN', + 'WIN_INFO_PRINTER_COPIES', 'WIN_INFO_PRINTER_DITHER', + 'WIN_INFO_PRINTER_LEFTMARGIN', 'WIN_INFO_PRINTER_METHOD', + 'WIN_INFO_PRINTER_NAME', 'WIN_INFO_PRINTER_ORIENT', + 'WIN_INFO_PRINTER_PAPERSIZE', 'WIN_INFO_PRINTER_RIGHTMARGIN', + 'WIN_INFO_PRINTER_SCALE_PATTERNS', 'WIN_INFO_PRINTER_TOPMARGIN', + 'WIN_INFO_PRINTER_TRANSPRASTER', 'WIN_INFO_PRINTER_TRANSPVECTOR', + 'WIN_INFO_PRINTER_TRUECOLOR', 'WIN_INFO_SMARTPAN', + 'WIN_INFO_SMOOTH_IMAGE', 'WIN_INFO_SMOOTH_TEXT', + 'WIN_INFO_SMOOTH_VECTOR', 'WIN_INFO_SNAPMODE', + 'WIN_INFO_SNAPTHRESHOLD', 'WIN_INFO_STATE', + 'WIN_INFO_SYSMENUCLOSE', 'WIN_INFO_TABLE', 'WIN_INFO_TOPMOST', + 'WIN_INFO_TYPE', 'WIN_INFO_WIDTH', 'WIN_INFO_WINDOWID', + 'WIN_INFO_WND', 'WIN_INFO_WORKSPACE', 'WIN_INFO_X', 'WIN_INFO_Y', + 'WIN_LAYOUT', 'WIN_LEGEND', 'WIN_MAPBASIC', 'WIN_MAPINFO', + 'WIN_MAPPER', 'WIN_MESSAGE', 'WIN_PENPICKER', + 'WIN_PRINTER_LANDSCAPE', 'WIN_PRINTER_PORTRAIT', 'WIN_RULER', + 'WIN_STATE_MAXIMIZED', 'WIN_STATE_MINIMIZED', 'WIN_STATE_NORMAL', + 'WIN_STATISTICS', 'WIN_STYLE_CHILD', 'WIN_STYLE_POPUP', + 'WIN_STYLE_POPUP_FULLCAPTION', 'WIN_STYLE_STANDARD', + 'WIN_SYMBOLPICKER', 'WIN_TOOLBAR', 'WIN_TOOLPICKER', 'YELLOW' + ), + 5 => array( + 'Abbrs', 'Above', 'Access', 'Active', 'Address', 'Advanced', + 'Affine', 'Align', 'Alpha', 'alpha_value', 'Always', 'Angle', + 'Animate', 'Antialiasing', 'Append', 'Apply', 'ApplyUpdates', + 'Arrow', 'Ascending', 'ASCII', 'At', 'AttributeData', 'Auto', + 'Autoflip', 'Autokey', 'Automatic', 'Autoscroll', 'Axis', + 'Background', 'Banding', 'Batch', 'Behind', 'Below', 'Bend', + 'Binary', 'Blocks', 'Border', 'BorderPen', 'Bottom', 'Bounds', + 'ByteOrder', 'ByVal', 'Calling', 'Camera', 'Candidates', + 'Cartesian', 'Cell', 'Center', 'Change', 'Char', 'Circle', + 'Clipping', 'CloseMatchesOnly', 'ClosestAddr', 'Color', 'Columns', + 'Contents', 'ControlPoints', 'Copies', 'Copyright', 'Counter', + 'Country', 'CountrySecondarySubdivision', 'CountrySubdivision', + 'Cross', 'CubicConvolution', 'Cull', 'Cursor', 'Custom', 'Data', + 'DBF', 'DDE', 'Decimal', 'DecimalPlaces', 'DefaultAmbientSpeed', + 'DefaultPropagationFactor', 'DeformatNumber', 'Delimiter', + 'Density', 'DenyWrite', 'Descending', 'Destroy', 'Device', + 'Dictionary', 'DInfo', 'Disable', 'DiscardUpdates', 'Display', + 'Dither', 'DrawMode', 'DropKey', 'Droplines', 'Duplicates', + 'Dynamic', 'Earth', 'East', 'EditLayerPopup', 'Elevation', 'Else', + 'ElseIf', 'Emf', 'Enable', 'Envinsa', 'ErrorDiffusion', 'Extents', + 'Fallback', 'FastEdit', 'FillFrame', 'Filter', 'First', 'Fit', + 'Fixed', 'FocalPoint', 'Footnote', 'Force', 'FromMapCatalog', + 'Front', 'Gap', 'Geographic', 'Geography', 'Graduated', 'Graphic', + 'Gutter', 'Half', 'Halftone', 'Handles', 'Height', 'Help', + 'HelpMsg', 'Hide', 'Hierarchical', 'HIGHLOW', 'History', 'Icon', + 'ID', 'Ignore', 'Image', 'Inflect', 'Inset', 'Inside', + 'Interactive', 'Internal', 'Interpolate', 'IntersectingStreet', + 'Justify', 'Key', 'Label', 'Labels', 'Landscape', 'Large', 'Last', + 'Layer', 'Left', 'Lib', 'Light', 'LinePen', 'Lines', 'Linestyle', + 'Longitude', 'LOWHIGH', 'Major', 'MajorPolygonOnly', + 'MajorRoadsOnly', 'MapBounds', 'MapMarker', 'MapString', 'Margins', + 'MarkMultiple', 'MaskSize', 'Match', 'MaxOffRoadDistance', + 'Message', 'MICODE', 'Minor', 'MixedCase', 'Mode', 'ModifierKeys', + 'Modify', 'Multiple', 'MultiPolygonRgns', 'Municipality', + 'MunicipalitySubdivision', 'Name', 'NATIVE', 'NearestNeighbor', + 'NoCollision', 'Node', 'Nodes', 'NoIndex', 'None', 'Nonearth', + 'NoRefresh', 'Normalized', 'North', 'Number', 'ObjectType', 'ODBC', + 'Off', 'OK', 'OLE', 'On', 'Options', 'Orientation', 'OtherBdy', + 'Output', 'Outside', 'Overlapped', 'Overwrite', 'Pagebreaks', + 'Pan', 'Papersize', 'Parent', 'PassThrough', 'Password', + 'Patterns', 'Per', 'Percent', 'Percentage', 'Permanent', + 'PersistentCache', 'Pie', 'Pitch', 'Placename', 'PointsOnly', + 'PolyObj', 'Portrait', 'Position', 'PostalCode', 'Prefer', + 'Preferences', 'Prev', 'Printer', 'Projection', 'PushButton', + 'Quantile', 'Query', 'Random', 'Range', 'Raster', 'Read', + 'ReadOnly', 'Rec', 'Redraw', 'Refine', 'Regionstyle', 'RemoveData', + 'Replace', 'Reprojection', 'Resampling', 'Restore', 'ResultCode', + 'ReturnHoles', 'Right', 'Roll', 'ROP', 'Rotated', 'Row', 'Ruler', + 'Scale', 'ScrollBars', 'Seamless', 'SecondaryPostalCode', + 'SelfInt', 'Separator', 'Series', 'Service', 'SetKey', + 'SetTraverse', 'Shades', 'Show', 'Simple', 'SimplificationFactor', + 'Size', 'Small', 'Smart', 'Smooth', 'South', 'Spacing', + 'SPATIALWARE', 'Spherical', 'Square', 'Stacked', 'Step', 'Store', + 'Street', 'StreetName', 'StreetNumber', 'StyleType', 'Subtitle', + 'SysMenuClose', 'Thin', 'Tick', 'Title', 'TitleAxisY', + 'TitleGroup', 'Titles', 'TitleSeries', 'ToggleButton', 'Tolerance', + 'ToolbarPosition', 'ToolButton', 'Toolkit', 'Top', 'Translucency', + 'translucency_percent', 'Transparency', 'Transparent', 'Traverse', + 'TrueColor', 'Uncheck', 'Undo', 'Union', 'Unit', 'Until', 'URL', + 'Use', 'User', 'UserBrowse', 'UserClose', 'UserDisplayMap', + 'UserEdit', 'UserMap', 'UserRemoveMap', 'Value', 'Variable', + 'Vary', 'Vector', 'Versioned', 'View', 'ViewDisplayPopup', + 'VisibleOnly', 'VMDefault', 'VMGrid', 'VMRaster', 'Voronoi', + 'Warnings', 'Wedge', 'West', 'Width', 'With', 'XY', 'XYINDEX', + 'Yaw', 'Zoom' + ) + ), + 'SYMBOLS' => array( + //Numeric/String Operators + Comparison Operators + '(', ')', '[', ']', '+', '-', '*', '/', '\\', '^', '&', + '=', '<', '>' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #0000ff;', //Statements + Clauses + Data Types + Logical Operators, Geographical Operators + SQL + 2 => 'color: #2391af;', //Special Procedures + 3 => 'color: #2391af;', //Functions + 4 => 'color: #c635cb;', //Constants + 5 => 'color: #0000ff;' //Extended keywords (case sensitive) + ), + 'COMMENTS' => array( + 1 => 'color: #008000;', + 'MULTI' => 'color: #008000;' + ), + 'BRACKETS' => array( + 0 => 'color: #000000;' + ), + 'STRINGS' => array( + 0 => 'color: #a31515;' + ), + 'NUMBERS' => array( + 0 => 'color: #000000;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #000000;' + ), + 'ESCAPE_CHAR' => array( + ), + 'SCRIPT' => array( + ), + 'REGEXPS' => array( + 0 => 'color: #12198b;', //Table Attributes + 1 => 'color: #2391af;' //Data Types + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + //Table Attribute + 0 => "[\\.]{1}[a-zA-Z0-9_]+", + //Data Type + 1 => "(?xi) \\s+ as \\s+ (Alias|Brush|Date|Float|Font|Integer|Logical|Object|Pen|SmallInt|String|Symbol)" + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), +); + +?>
\ No newline at end of file diff --git a/inc/geshi/matlab.php b/inc/geshi/matlab.php index f7b649573..1f9c12b78 100644 --- a/inc/geshi/matlab.php +++ b/inc/geshi/matlab.php @@ -4,7 +4,7 @@ * ----------- * Author: Florian Knorn (floz@gmx.de) * Copyright: (c) 2004 Florian Knorn (http://www.florian-knorn.com) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2005/02/09 * * Matlab M-file language file for GeSHi. @@ -215,7 +215,7 @@ $language_data = array ( ), 'REGEXPS' => array( //Complex numbers - 0 => '(?<![\\w])[+-]?[\\d]*([\\d]\\.|\\.[\\d])?[\\d]*[ij](?![\\w])' + 0 => '(?<![\\w\\/])[+-]?[\\d]*([\\d]\\.|\\.[\\d])?[\\d]*[ij](?![\\w]|\<DOT>html)' ), 'STRICT_MODE_APPLIES' => GESHI_NEVER, 'SCRIPT_DELIMITERS' => array( @@ -224,4 +224,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/mirc.php b/inc/geshi/mirc.php index bc773458c..1b7df83aa 100644 --- a/inc/geshi/mirc.php +++ b/inc/geshi/mirc.php @@ -4,7 +4,7 @@ * ----- * Author: Alberto 'Birckin' de Areba (Birckin@hotmail.com) * Copyright: (c) 2006 Alberto de Areba - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2006/05/29 * * mIRC Scripting language file for GeSHi. diff --git a/inc/geshi/mmix.php b/inc/geshi/mmix.php new file mode 100644 index 000000000..3e90dce29 --- /dev/null +++ b/inc/geshi/mmix.php @@ -0,0 +1,173 @@ +<?php +/************************************************************************************* + * mmix.php + * ------- + * Author: Benny Baumann (BenBE@geshi.org) + * Copyright: (c) 2009 Benny Baumann (http://qbnz.com/highlighter/) + * Release Version: 1.0.8.8 + * Date Started: 2009/10/16 + * + * MMIX Assembler language file for GeSHi. + * + * This is an implementation of the MMIX language as designed by Donald E. Knuth + * + * CHANGES + * ------- + * 2004/08/05 (1.0.8.6) + * - First Release + * + * TODO (updated 2009/10/16) + * ------------------------- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'MMIX', + 'COMMENT_SINGLE' => array(1 => ';'), + 'COMMENT_MULTI' => array(), + //Line address prefix suppression + 'COMMENT_REGEXP' => array(2 => "/^\s*[0-9a-f]{12,16}+(?:\s+[0-9a-f]+(?:\.{3}[0-9a-f]{2,})?)?:/mi"), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + /*CPU*/ + 1 => array( + '16ADDU','2ADDU','4ADDU','8ADDU','ADD','ADDU','AND','ANDN','ANDNH', + 'ANDNL','ANDNMH','ANDNML','BDIF','BEV','BN','BNN','BNP','BNZ','BOD', + 'BP','BZ','CMP','CMPU','CSEV','CSN','CSNN','CSNP','CSNZ','CSOD', + 'CSP','CSWAP','CSZ','DIV','DIVU','FADD','FCMP','FCMPE','FDIV', + 'FEQL','FEQLE','FINT','FIX','FIXU','FLOT','FLOTU','FMUL','FREM', + 'FSQRT','FSUB','FUN','FUNE','GET','GETA','GO','INCH','INCL','INCMH', + 'INCML','JMP','LDB','LDBU','LDHT','LDO','LDOU','LDSF','LDT','LDTU', + 'LDUNC','LDVTS','LDW','LDWU','MOR','MUL','MULU','MUX','MXOR','NAND', + 'NEG','NEGU','NOR','NXOR','ODIF','OR','ORH','ORL','ORMH','ORML', + 'ORN','PBEV','PBN','PBNN','PBNP','PBNZ','PBOD','PBP','PBZ','POP', + 'PREGO','PRELD','PREST','PUSHGO','PUSHJ','PUT','RESUME','SADD', + 'SAVE','SETH','SETL','SETMH','SETML','SFLOT','SFLOTU','SL','SLU', + 'SR','SRU','STB','STBU','STCO','STHT','STO','STOU','STSF','STT', + 'STTU','STUNC','STW','STWU','SUB','SUBU','SWYM','SYNC','SYNCD', + 'SYNCID','TDIF','TRAP','TRIP','UNSAVE','WDIF','XOR','ZSEV','ZSN', + 'ZSNN','ZSNP','ZSNZ','ZSOD','ZSP','ZSZ' + ), + /*registers*/ + 3 => array( + 'rA','rB','rC','rD','rE','rF','rG','rH','rI','rJ','rK','rL','rM', + 'rN','rO','rP','rQ','rR','rS','rT','rU','rV','rW','rX','rY','rZ', + 'rBB','rTT','rWW','rXX','rYY','rZZ' + ), + /*Directive*/ + 4 => array( + ), + /*Operands*/ + 5 => array( + ) + ), + 'SYMBOLS' => array( + '[', ']', '(', ')', + '+', '-', '*', '/', '%', + '.', ',', ';', ':' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => false, + 3 => true, + 4 => false, + 5 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #00007f; font-weight: bold;', + 2 => 'color: #0000ff; font-weight: bold;', + 3 => 'color: #00007f;', + 4 => 'color: #000000; font-weight: bold;', + 5 => 'color: #000000; font-weight: bold;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 2 => 'color: #adadad; font-style: italic;', + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900; font-weight: bold;' + ), + 'STRINGS' => array( + 0 => 'color: #7f007f;' + ), + 'NUMBERS' => array( + 0 => 'color: #0000ff;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #339933;' + ), + 'REGEXPS' => array( +// 0 => 'color: #0000ff;', +// 1 => 'color: #0000ff;' + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '' + ), + 'NUMBERS' => + GESHI_NUMBER_BIN_PREFIX_PERCENT | + GESHI_NUMBER_BIN_SUFFIX | + GESHI_NUMBER_HEX_PREFIX | + GESHI_NUMBER_HEX_SUFFIX | + GESHI_NUMBER_OCT_SUFFIX | + GESHI_NUMBER_INT_BASIC | + GESHI_NUMBER_FLT_NONSCI | + GESHI_NUMBER_FLT_NONSCI_F | + GESHI_NUMBER_FLT_SCI_ZERO, + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + //Hex numbers +// 0 => /* */ "(?<=([\\s\\(\\)\\[\\],;.:+\\-\\/*]))(?:[0-9][0-9a-fA-F]{0,31}[hH]|0x[0-9a-fA-F]{1,32})(?=([\\s\\(\\)\\[\\],;.:+\\-\\/*]))", + //Binary numbers +// 1 => "(?<=([\\s\\(\\)\\[\\],;.:+\\-\\/*]))[01]{1,64}[bB](?=([\\s\\(\\)\\[\\],;.:+\\-\\/*]))" + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 8, + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\|\#>|^])", + 'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_<\|%])" + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/modula2.php b/inc/geshi/modula2.php new file mode 100644 index 000000000..042e7404a --- /dev/null +++ b/inc/geshi/modula2.php @@ -0,0 +1,136 @@ +<?php +/**************************************************************************** + * modula2.php + * ----------- + * Author: Benjamin Kowarsch (benjamin@modula2.net) + * Copyright: (c) 2009 Benjamin Kowarsch (benjamin@modula2.net) + * Release Version: 1.0.8.8 + * Date Started: 2009/11/05 + * + * Modula-2 language file for GeSHi. + * + * CHANGES + * ------- + * 2010/05/22 (1.0.8.8) + * - First Release + * + * TODO (updated 2010/05/22) + * ------------------------- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'Modula-2', + 'COMMENT_MULTI' => array('(*' => '*)'), + 'COMMENT_SINGLE' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'HARDQUOTE' => array("'", "'"), + 'HARDESCAPE' => array("''"), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( /* reserved words */ + 'AND', 'ARRAY', 'BEGIN', 'BY', 'CASE', 'CONST', 'DEFINITION', + 'DIV', 'DO', 'ELSE', 'ELSIF', 'END', 'EXIT', 'EXPORT', 'FOR', + 'FROM', 'IF', 'IMPLEMENTATION', 'IMPORT', 'IN', 'LOOP', 'MOD', + 'MODULE', 'NOT', 'OF', 'OR', 'POINTER', 'PROCEDURE', 'QUALIFIED', + 'RECORD', 'REPEAT', 'RETURN', 'SET', 'THEN', 'TO', 'TYPE', + 'UNTIL', 'VAR', 'WHILE', 'WITH' + ), + 2 => array( /* pervasive constants */ + 'NIL', 'FALSE', 'TRUE', + ), + 3 => array( /* pervasive types */ + 'BITSET', 'CAP', 'CHR', 'DEC', 'DISPOSE', 'EXCL', 'FLOAT', + 'HALT', 'HIGH', 'INC', 'INCL', 'MAX', 'MIN', 'NEW', 'ODD', 'ORD', + 'SIZE', 'TRUNC', 'VAL' + ), + 4 => array( /* pervasive functions and macros */ + 'ABS', 'BOOLEAN', 'CARDINAL', 'CHAR', 'INTEGER', + 'LONGCARD', 'LONGINT', 'LONGREAL', 'PROC', 'REAL' + ), + ), + 'SYMBOLS' => array( + ',', ':', '=', '+', '-', '*', '/', '#', '~' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #000000; font-weight: bold;', + 2 => 'color: #000000; font-weight: bold;', + 3 => 'color: #000066;', + 4 => 'color: #000066; font-weight: bold;' + ), + 'COMMENTS' => array( + 'MULTI' => 'color: #666666; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;', + 'HARD' => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;', + 'HARD' => 'color: #ff0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;' + ), + 'METHODS' => array( + 1 => 'color: #0066ee;' + ), + 'SYMBOLS' => array( + 0 => 'color: #339933;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + 1 => '' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4 +); + +?>
\ No newline at end of file diff --git a/inc/geshi/modula3.php b/inc/geshi/modula3.php index a1f04ca59..ad827a3e6 100644 --- a/inc/geshi/modula3.php +++ b/inc/geshi/modula3.php @@ -4,7 +4,7 @@ * ---------- * Author: mbishop (mbishop@esoteriq.org) * Copyright: (c) 2009 mbishop (mbishop@esoteriq.org) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2009/01/21 * * Modula-3 language file for GeSHi. diff --git a/inc/geshi/mpasm.php b/inc/geshi/mpasm.php index 53aa9e7a1..59247ff69 100644 --- a/inc/geshi/mpasm.php +++ b/inc/geshi/mpasm.php @@ -4,7 +4,7 @@ * --------- * Author: Bakalex (bakalex@gmail.com) * Copyright: (c) 2004 Bakalex, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/12/6 * * Microchip Assembler language file for GeSHi. diff --git a/inc/geshi/mxml.php b/inc/geshi/mxml.php index d34a92531..df4c9d50e 100644 --- a/inc/geshi/mxml.php +++ b/inc/geshi/mxml.php @@ -4,7 +4,7 @@ * ------- * Author: David Spurr * Copyright: (c) 2007 David Spurr (http://www.defusion.org.uk/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2007/10/04 * * MXML language file for GeSHi. Based on the XML file by Nigel McNie diff --git a/inc/geshi/mysql.php b/inc/geshi/mysql.php index f41092c16..ca171733f 100644 --- a/inc/geshi/mysql.php +++ b/inc/geshi/mysql.php @@ -4,7 +4,7 @@ * --------- * Author: Marjolein Katsma (marjolein.is.back@gmail.com) * Copyright: (c) 2008 Marjolein Katsma (http://blog.marjoleinkatsma.com/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008-12-12 * * MySQL language file for GeSHi. @@ -391,35 +391,35 @@ $language_data = array ( ) ), 'URLS' => array( - 1 => 'http://search.mysql.com/search?site=refman-51&q={FNAME}&lr=lang_en', - 2 => 'http://search.mysql.com/search?site=refman-51&q={FNAME}&lr=lang_en', - 3 => 'http://search.mysql.com/search?site=refman-51&q={FNAME}&lr=lang_en', - 4 => 'http://search.mysql.com/search?site=refman-51&q={FNAME}&lr=lang_en', - 5 => 'http://search.mysql.com/search?site=refman-51&q={FNAME}&lr=lang_en', - 6 => 'http://search.mysql.com/search?site=refman-51&q={FNAME}&lr=lang_en', - 7 => 'http://search.mysql.com/search?site=refman-51&q={FNAME}&lr=lang_en', - 8 => 'http://search.mysql.com/search?site=refman-51&q={FNAME}&lr=lang_en', - 9 => 'http://search.mysql.com/search?site=refman-51&q={FNAME}&lr=lang_en', + 1 => 'http://search.mysql.com/search?site=refman-%35%31&q={FNAME}', + 2 => 'http://search.mysql.com/search?site=refman-%35%31&q={FNAME}', + 3 => 'http://search.mysql.com/search?site=refman-%35%31&q={FNAME}', + 4 => 'http://search.mysql.com/search?site=refman-%35%31&q={FNAME}', + 5 => 'http://search.mysql.com/search?site=refman-%35%31&q={FNAME}', + 6 => 'http://search.mysql.com/search?site=refman-%35%31&q={FNAME}', + 7 => 'http://search.mysql.com/search?site=refman-%35%31&q={FNAME}', + 8 => 'http://search.mysql.com/search?site=refman-%35%31&q={FNAME}', + 9 => 'http://search.mysql.com/search?site=refman-%35%31&q={FNAME}', - 10 => 'http://dev.mysql.com/doc/refman/5.1/en/non-typed-operators.html', - 11 => 'http://dev.mysql.com/doc/refman/5.1/en/non-typed-operators.html', + 10 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/non-typed-operators.html', + 11 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/non-typed-operators.html', - 12 => 'http://dev.mysql.com/doc/refman/5.1/en/control-flow-functions.html', - 13 => 'http://dev.mysql.com/doc/refman/5.1/en/string-functions.html', - 14 => 'http://dev.mysql.com/doc/refman/5.1/en/string-functions.html', - 15 => 'http://dev.mysql.com/doc/refman/5.1/en/numeric-functions.html', - 16 => 'http://dev.mysql.com/doc/refman/5.1/en/numeric-functions.html', - 17 => 'http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html', - 18 => 'http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html', - 19 => 'http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html', - 20 => 'http://dev.mysql.com/doc/refman/5.1/en/comparison-operators.html', - 21 => 'http://dev.mysql.com/doc/refman/5.1/en/encryption-functions.html', - 22 => 'http://dev.mysql.com/doc/refman/5.1/en/group-by-functions-and-modifiers.html', - 23 => 'http://dev.mysql.com/doc/refman/5.1/en/information-functions.html', - 24 => 'http://dev.mysql.com/doc/refman/5.1/en/information-functions.html', - 25 => 'http://dev.mysql.com/doc/refman/5.1/en/func-op-summary-ref.html', - 26 => 'http://dev.mysql.com/doc/refman/5.1/en/func-op-summary-ref.html', - 27 => 'http://dev.mysql.com/doc/refman/5.1/en/analysing-spatial-information.html', + 12 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/control-flow-functions.html', + 13 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/string-functions.html', + 14 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/string-functions.html', + 15 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/numeric-functions.html', + 16 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/numeric-functions.html', + 17 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/date-and-time-functions.html', + 18 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/date-and-time-functions.html', + 19 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/comparison-operators.html', + 20 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/comparison-operators.html', + 21 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/encryption-functions.html', + 22 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/group-by-functions-and-modifiers.html', + 23 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/information-functions.html', + 24 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/information-functions.html', + 25 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/func-op-summary-ref.html', + 26 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/func-op-summary-ref.html', + 27 => 'http://dev.mysql.com/doc/refman/%35%2E%31/en/analysing-spatial-information.html', ), 'OOLANG' => false, 'OBJECT_SPLITTERS' => array( @@ -472,4 +472,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/newlisp.php b/inc/geshi/newlisp.php new file mode 100644 index 000000000..027e86588 --- /dev/null +++ b/inc/geshi/newlisp.php @@ -0,0 +1,191 @@ +<?php +/************************************************************************************* + * newlisp.php + * ---------- + * Author: cormullion (cormullion@mac.com) Sept 2009 + * Copyright: (c) 2009 Cormullion (http://unbalanced-parentheses.nfshost.com/) + * Release Version: 1.0.8.8 + * Date Started: 2009/09/30 + * + * newLISP language file for GeSHi. + * + * based on work by Lutz Mueller and Jeff Ober + * + * CHANGES + * ------- + * 2009/09/30 (1.0.8.6) + * - First Release + * + * TODO (updated 2009/09/30) + * ------------------------- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'newlisp', + 'COMMENT_SINGLE' => array(1 => ';', 2 => '#'), + 'COMMENT_MULTI' => array('[text]' => '[/text]', '{' => '}'), // also used for strings + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '\\', + 'NUMBERS' => GESHI_NUMBER_INT_BASIC | GESHI_NUMBER_OCT_PREFIX | GESHI_NUMBER_HEX_PREFIX | GESHI_NUMBER_FLT_SCI_ZERO, + 'TAB_WIDTH' => 2, + 'KEYWORDS' => array( + 1 => array( + 'NaN?','abort','abs','acos','acosh','add','address','amb','and', + 'append','append-file','apply','args','array','array-list','array?', + 'asin','asinh','assoc','atan','atan2','atanh','atom?','base64-dec', + 'base64-enc','bayes-query','bayes-train','begin','beta','betai', + 'bind','binomial','bits','callback','case','catch','ceil', + 'change-dir','char','chop','clean','close','command-event','cond', + 'cons','constant','context','context?','copy','copy-file','cos', + 'cosh','count','cpymem','crc32','crit-chi2','crit-z','current-line', + 'curry','date','date-value','debug','dec','def-new','default', + 'define','define-macro','delete','delete-file','delete-url', + 'destroy','det','device','difference','directory','directory?', + 'div','do-until','do-while','doargs','dolist','dostring','dotimes', + 'dotree','dump','dup','empty?','encrypt','ends-with','env','erf', + 'error-event','estack','eval','eval-string','exec','exists','exit', + 'exp','expand','explode','factor','fft','file-info','file?', + 'filter','find','find-all','first','flat','float','float?','floor', + 'flt','for','for-all','fork','format','fv','gammai','gammaln','gcd', + 'get-char','get-float','get-int','get-long','get-string','get-url', + 'global','global?','if','if-not','ifft','import','inc','index', + 'inf?','int','integer','integer?','intersect','invert','irr','join', + 'lambda','lambda?','last','last-error','legal?','length','let', + 'letex','letn','list','list?','load','local','log','lookup', + 'lower-case','macro?','main-args','make-dir','map','mat','match', + 'max','member','min','mod','mul','multiply','name','net-accept', + 'net-close','net-connect','net-error','net-eval','net-interface', + 'net-listen','net-local','net-lookup','net-peek','net-peer', + 'net-ping','net-receive','net-receive-from','net-receive-udp', + 'net-select','net-send','net-send-to','net-send-udp','net-service', + 'net-sessions','new','nil','nil?','normal','not','now','nper','npv', + 'nth','null?','number?','open','or','pack','parse','parse-date', + 'peek','pipe','pmt','pop','pop-assoc','post-url','pow', + 'pretty-print','primitive?','print','println','prob-chi2','prob-z', + 'process','prompt-event','protected?','push','put-url','pv','quote', + 'quote?','rand','random','randomize','read-buffer','read-char', + 'read-expr','read-file','read-key','read-line','read-utf8', + 'real-path','receive','ref','ref-all','regex','regex-comp', + 'remove-dir','rename-file','replace','reset','rest','reverse', + 'rotate','round','save','search','seed','seek','select','semaphore', + 'send','sequence','series','set','set-locale','set-ref', + 'set-ref-all','setf','setq','sgn','share','signal','silent','sin', + 'sinh','sleep','slice','sort','source','spawn','sqrt','starts-with', + 'string','string?','sub','swap','sym','symbol?','symbols','sync', + 'sys-error','sys-info','tan','tanh','throw','throw-error','time', + 'time-of-day','timer','title-case','trace','trace-highlight', + 'transpose','trim','true','true?','unicode','unify','unique', + 'unless','unpack','until','upper-case','utf8','utf8len','uuid', + 'wait-pid','when','while','write-buffer','write-char','write-file', + 'write-line','xfer-event','xml-error','xml-parse','xml-type-tags', + 'zero?' + ) + ), + 'SYMBOLS' => array( + 0 => array( + '(', ')','\'' + ), + 1 => array( + '!','!=','$','%','&','*','+','-','/',':', + '<','<<','<=','=','>','>=','>>','^','|' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #0000AA;' + ), + 'COMMENTS' => array( + 1 => 'color: #808080; font-style: italic;', + 2 => 'color: #808080; font-style: italic;', + 'MULTI' => 'color: #00aa00; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #009900;' + ), + 'BRACKETS' => array( + 0 => 'color: #66cc66;' + ), + 'STRINGS' => array( + 0 => 'color: #009900;' + ), + 'NUMBERS' => array( + 0 => 'color: #777700;' + ), + 'METHODS' => array( + 0 => 'color: #000099;' + ), + 'SYMBOLS' => array( + 0 => 'color: #AA0000;', + 1 => 'color: #0000AA;' + ), + 'REGEXPS' => array( + 0 => 'color: #00aa00;', + 1 => 'color: #00aa00;', + 2 => 'color: #00aa00;', + 3 => 'color: #00aa00;', + 4 => 'color: #00aa00;', + 5 => 'color: #AA0000;' + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => 'http://www.newlisp.org/downloads/newlisp_manual.html#{FNAME}' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array(':'), + 'REGEXPS' => array( + // tags in newlispdoc + 0 => "\s+@\S*?\s+", + // dollar sign symbols + 1 => "[\\$]\w*", + // curly-braced string literals + 2 => "{[^{}]*?}", + // [text] multi-line strings + 3 => "(?s)\[text\].*\[\/text\](?-s)", + // [code] multi-line blocks + 4 => "(?s)\[code\].*\[\/code\](?-s)", + // variable references + 5 => "'[\w\-]+" + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'PARSER_CONTROL' => array( + 'OOLANG' => array( + 'MATCH_AFTER' => '[a-zA-Z][a-zA-Z0-9_\-]*' + ), + 'KEYWORDS' => array( + 'DISALLOWED_BEFORE' => '(?<=[^\w\-])', + ) + ), + +); + +?>
\ No newline at end of file diff --git a/inc/geshi/nsis.php b/inc/geshi/nsis.php index 63767b025..5631a8389 100644 --- a/inc/geshi/nsis.php +++ b/inc/geshi/nsis.php @@ -4,7 +4,7 @@ * -------- * Author: deguix (cevo_deguix@yahoo.com.br), Tux (http://tux.a4.cz/) * Copyright: (c) 2005 deguix, 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2005/12/03 * * Nullsoft Scriptable Install System language file for GeSHi. diff --git a/inc/geshi/oberon2.php b/inc/geshi/oberon2.php index 4e4223f4f..8339f3fb8 100644 --- a/inc/geshi/oberon2.php +++ b/inc/geshi/oberon2.php @@ -4,7 +4,7 @@ * ---------- * Author: mbishop (mbishop@esoteriq.org) * Copyright: (c) 2009 mbishop (mbishop@esoteriq.org) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2009/02/10 * * Oberon-2 language file for GeSHi. diff --git a/inc/geshi/objc.php b/inc/geshi/objc.php index ec8d18e72..5a5c5940f 100644 --- a/inc/geshi/objc.php +++ b/inc/geshi/objc.php @@ -5,7 +5,7 @@ * Author: M. Uli Kusterer (witness.of.teachtext@gmx.net) * Contributors: Quinn Taylor (quinntaylor@mac.com) * Copyright: (c) 2008 Quinn Taylor, 2004 M. Uli Kusterer, Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/06/04 * * Objective-C language file for GeSHi. diff --git a/inc/geshi/ocaml-brief.php b/inc/geshi/ocaml-brief.php index f3d01a0a1..2e2a82fb2 100644 --- a/inc/geshi/ocaml-brief.php +++ b/inc/geshi/ocaml-brief.php @@ -4,7 +4,7 @@ * ---------- * Author: Flaie (fireflaie@gmail.com) * Copyright: (c) 2005 Flaie, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2005/08/27 * * OCaml (Objective Caml) language file for GeSHi. diff --git a/inc/geshi/ocaml.php b/inc/geshi/ocaml.php index 505149c31..46e6a22aa 100644 --- a/inc/geshi/ocaml.php +++ b/inc/geshi/ocaml.php @@ -4,7 +4,7 @@ * ---------- * Author: Flaie (fireflaie@gmail.com) * Copyright: (c) 2005 Flaie, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2005/08/27 * * OCaml (Objective Caml) language file for GeSHi. @@ -43,6 +43,7 @@ $language_data = array ( 'LANG_NAME' => 'OCaml', 'COMMENT_SINGLE' => array(), 'COMMENT_MULTI' => array('(*' => '*)'), + 'COMMENT_REGEXP' => array(1 => '/\(\*(?:(?R)|.)+?\*\)/s'), 'CASE_KEYWORDS' => 0, 'QUOTEMARKS' => array('"'), 'ESCAPE_CHAR' => "", @@ -58,13 +59,17 @@ $language_data = array ( ), /* define names of main librarys, so we can link to it */ 2 => array( - 'Arg', 'Arith_status', 'Array', 'ArrayLabels', 'Big_int', 'Bigarray', 'Buffer', 'Callback', - 'CamlinternalOO', 'Char', 'Complex', 'Condition', 'Dbm', 'Digest', 'Dynlink', 'Event', - 'Filename', 'Format', 'Gc', 'Genlex', 'Graphics', 'GraphicsX11', 'Hashtbl', 'Int32', 'Int64', - 'Lazy', 'Lexing', 'List', 'ListLabels', 'Map', 'Marshal', 'MoreLabels', 'Mutex', 'Nativeint', - 'Num', 'Obj', 'Oo', 'Parsing', 'Pervasives', 'Printexc', 'Printf', 'Queue', 'Random', 'Scanf', - 'Set', 'Sort', 'Stack', 'StdLabels', 'Str', 'Stream', 'String', 'StringLabels', 'Sys', 'Thread', - 'ThreadUnix', 'Tk' + 'Arg', 'Arith_status', 'Array', //'Array1', 'Array2', 'Array3', + 'ArrayLabels', 'Big_int', 'Bigarray', 'Buffer', 'Callback', + 'CamlinternalLazy', 'CamlinternalMod', 'CamlinternalOO', 'Char', + 'Complex', 'Condition', 'Dbm', 'Digest', 'Dynlink', 'Event', + 'Filename', 'Format', 'Gc', 'Genlex', 'Graphics', 'GraphicsX11', + 'Hashtbl', 'Int32', 'Int64', 'Lazy', 'Lexing', 'List', 'ListLabels', + 'Map', 'Marshal', 'MoreLabels', 'Mutex', 'Nativeint', 'Num', 'Obj', + 'Oo', 'Parsing', 'Pervasives', 'Printexc', 'Printf', 'Queue', + 'Random', 'Scanf', 'Set', 'Sort', 'Stack', 'StdLabels', 'Str', + 'Stream', 'String', 'StringLabels', 'Sys', 'Thread', 'ThreadUnix', + 'Tk', 'Unix', 'UnixLabels', 'Weak' ), /* just link to the Pervasives functions library, cause it's the default opened library when starting OCaml */ 3 => array( @@ -93,7 +98,9 @@ $language_data = array ( ), /* here Pervasives Types */ 4 => array ( - 'fpclass', 'in_channel', 'out_channel', 'open_flag', 'Sys_error', 'format' + 'array','bool','char','exn','file_descr','format','fpclass', + 'in_channel','int','int32','int64','list','nativeint','open_flag', + 'out_channel','string','Sys_error','unit' ), /* finally Pervasives Exceptions */ 5 => array ( @@ -102,8 +109,9 @@ $language_data = array ( ), /* highlighting symbols is really important in OCaml */ 'SYMBOLS' => array( + '+.', '-.', '*.', '/.', '[<', '>]', ';', '!', ':', '.', '=', '%', '^', '*', '-', '/', '+', - '>', '<', '(', ')', '[', ']', '&', '|', '#', "'" + '>', '<', '(', ')', '[', ']', '&', '|', '#', "'", ), 'CASE_SENSITIVE' => array( GESHI_COMMENTS => false, @@ -122,12 +130,13 @@ $language_data = array ( 5 => 'color: #06c; font-weight: bold;' /* nice blue */ ), 'COMMENTS' => array( - 'MULTI' => 'color: #5d478b; font-style: italic;' /* light purple */ + 'MULTI' => 'color: #5d478b; font-style: italic;', /* light purple */ + 1 => 'color: #5d478b; font-style: italic;' /* light purple */ ), 'ESCAPE_CHAR' => array( ), 'BRACKETS' => array( - 0 => 'color: #6c6;' + 0 => 'color: #a52a2a;' ), 'STRINGS' => array( 0 => 'color: #3cb371;' /* nice green */ @@ -139,6 +148,8 @@ $language_data = array ( 1 => 'color: #060;' /* dark green */ ), 'REGEXPS' => array( + 1 => 'font-weight:bold; color:#339933;', + 2 => 'font-weight:bold; color:#993399;' ), 'SYMBOLS' => array( 0 => 'color: #a52a2a;' /* maroon */ @@ -158,11 +169,13 @@ $language_data = array ( /* link to Pervasives exceptions */ 5 => 'http://caml.inria.fr/pub/docs/manual-ocaml/libref/Pervasives.html#EXCEPTION{FNAME}' ), - 'OOLANG' => true, + 'OOLANG' => false, 'OBJECT_SPLITTERS' => array( 1 => '.' ), 'REGEXPS' => array( + 1 => '~\w+', + 2 => '`(?=(?-i:[a-z]))\w*', ), 'STRICT_MODE_APPLIES' => GESHI_NEVER, 'SCRIPT_DELIMITERS' => array( @@ -171,4 +184,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/oobas.php b/inc/geshi/oobas.php index b4f95512a..6f6e13fc2 100644 --- a/inc/geshi/oobas.php +++ b/inc/geshi/oobas.php @@ -4,7 +4,7 @@ * --------- * Author: Roberto Rossi (rsoftware@altervista.org) * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/08/30 * * OpenOffice.org Basic language file for GeSHi. diff --git a/inc/geshi/oracle11.php b/inc/geshi/oracle11.php index e5417d7d0..f57c3f044 100644 --- a/inc/geshi/oracle11.php +++ b/inc/geshi/oracle11.php @@ -6,7 +6,7 @@ * Contributions: * - Updated for 11i by Simon Redhead * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/06/04 * * Oracle 11i language file for GeSHi. diff --git a/inc/geshi/oracle8.php b/inc/geshi/oracle8.php index d216db0a1..e470e0dd4 100644 --- a/inc/geshi/oracle8.php +++ b/inc/geshi/oracle8.php @@ -4,7 +4,7 @@ * ----------- * Author: Guy Wicks (Guy.Wicks@rbs.co.uk) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/06/04 * * Oracle 8 language file for GeSHi. diff --git a/inc/geshi/oxygene.php b/inc/geshi/oxygene.php new file mode 100644 index 000000000..3af03bfc2 --- /dev/null +++ b/inc/geshi/oxygene.php @@ -0,0 +1,152 @@ +<?php +/************************************************************************************* + * oxygene.php + * ---------- + * Author: Carlo Kok (ck@remobjects.com), J�rja Norbert (jnorbi@vipmail.hu), Benny Baumann (BenBE@omorphia.de) + * Copyright: (c) 2004 J�rja Norbert, Benny Baumann (BenBE@omorphia.de), Nigel McNie (http://qbnz.com/highlighter) + * Release Version: 1.0.8.8 + * Date Started: 2010/01/11 + * + * Delphi Prism (Oxygene) language file for GeSHi. + * Based on the original Delphi language file. + * + * CHANGES + * ------- + * 2010/01/11 (1.0.0) + * - First Release + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'Oxygene (Delphi Prism)', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array('(*' => '*)', '{' => '}'), + //Compiler directives + 'COMMENT_REGEXP' => array(2 => '/{\\$.*?}|\\(\\*\\$.*?\\*\\)/U'), + 'CASE_KEYWORDS' => 0, + 'QUOTEMARKS' => array("'"), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + 'and', 'begin', 'case', 'const', 'div', 'do', 'downto', 'else', + 'end', 'for', 'function', 'if', 'in', 'mod', 'not', 'of', 'or', + 'procedure', 'repeat', 'record', 'set', 'shl', 'shr', 'then', 'to', + 'type', 'until', 'uses', 'var','while', 'with', 'xor', 'exit', 'break', + 'class', 'constructor', 'inherited', 'private', 'public', 'protected', + 'property', 'As', 'Is', 'Unit', 'Continue', 'Try', 'Except', 'Forward', + 'Interface','Implementation', 'nil', 'out', 'loop', 'namespace', 'true', + 'false', 'new', 'ensure', 'require', 'on', 'event', 'delegate', 'method', + 'raise', 'assembly', 'module', 'using','locking', 'old', 'invariants', 'operator', + 'self', 'async', 'finalizer', 'where', 'yield', 'nullable', 'Future', + 'From', 'Finally', 'dynamic' + ), + 2 => array( + 'override', 'virtual', 'External', 'read', 'add', 'remove','final', 'abstract', + 'empty', 'global', 'locked', 'sealed', 'reintroduce', 'implements', 'each', + 'default', 'partial', 'finalize', 'enum', 'flags', 'result', 'readonly', 'unsafe', + 'pinned', 'matching', 'static', 'has', 'step', 'iterator', 'inline', 'nested', + 'Implies', 'Select', 'Order', 'By', 'Desc', 'Asc', 'Group', 'Join', 'Take', + 'Skip', 'Concat', 'Union', 'Reverse', 'Distinct', 'Into', 'Equals', 'params', + 'sequence', 'index', 'notify', 'Parallel', 'create', 'array', 'Queryable', 'Aspect', + 'volatile' + ), + 3 => array( + 'chr', 'ord', 'inc', 'dec', 'assert', 'iff', 'assigned','futureAssigned', 'length', 'low', 'high', 'typeOf', 'sizeOf', 'disposeAndNil', 'Coalesce', 'unquote' + ), + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, +// 4 => false, + ), + 'SYMBOLS' => array( + 0 => array('(', ')', '[', ']'), + 1 => array('.', ',', ':', ';'), + 2 => array('@', '^'), + 3 => array('=', '+', '-', '*', '/') + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #000000; font-weight: bold;', + 2 => 'color: #000000; font-weight: bold;', + 3 => 'color: #000066;', +// 4 => 'color: #000066; font-weight: bold;' + ), + 'COMMENTS' => array( + 1 => 'color: #808080; font-style: italic;', + 2 => 'color: #008000; font-style: italic;', + 'MULTI' => 'color: #808080; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #ff0000; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #000066;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #0000ff;' + ), + 'METHODS' => array( + 1 => 'color: #000000;' + ), + 'REGEXPS' => array( + 0 => 'color: #9ac;', + 1 => 'color: #ff0000;' + ), + 'SYMBOLS' => array( + 0 => 'color: #000066;', + 1 => 'color: #000066;', + 2 => 'color: #000066;', + 3 => 'color: #000066;' + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', +// 4 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + //Hex numbers + 0 => '\$[0-9a-fA-F]+', + //Characters + 1 => '\#\$?[0-9]{1,3}' + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 2 +); + +?>
\ No newline at end of file diff --git a/inc/geshi/oz.php b/inc/geshi/oz.php new file mode 100644 index 000000000..cd594d4ca --- /dev/null +++ b/inc/geshi/oz.php @@ -0,0 +1,144 @@ +<?php +/************************************************************************************* + * oz.php + * -------- + * Author: Wolfgang Meyer (Wolfgang.Meyer@gmx.net) + * Copyright: (c) 2010 Wolfgang Meyer + * Release Version: 1.0.8.8 + * Date Started: 2010/01/03 + * + * Oz language file for GeSHi. + * + * CHANGES + * ------- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array( + 'LANG_NAME' => 'OZ', + 'COMMENT_SINGLE' => array(1 => '%'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"','\''), + 'ESCAPE_CHAR' => '\\', + 'NUMBERS' => array(), + 'KEYWORDS' => array( + 1 => array( + 'declare','local','in','end','proc','fun','functor','require','prepare', + 'import','export','define','at','case','then','else','of','elseof', + 'elsecase','if','elseif','class','from','prop','attr','feat','meth', + 'self','true','false','unit','div','mod','andthen','orelse','cond','or', + 'dis','choice','not','thread','try','catch','finally','raise','lock', + 'skip','fail','for','do' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true + ), + 'SYMBOLS' => array( + '@', '!', '|', '<-', ':=', '<', '>', '=<', '>=', '<=', '#', '~', '.', + '*', '-', '+', '/', '<:', '>:', '=:', '=<:', '>=:', '\\=', '\\=:', ',', + '!!', '...', '==', '::', ':::' + ), + 'STYLES' => array( + 'REGEXPS' => array( + 1 => 'color: #0000ff;', + 2 => 'color: #00a030;', + 3 => 'color: #bc8f8f;', + 4 => 'color: #0000ff;', + 5 => 'color: #a020f0;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #bc8f8f;' + ), + 'KEYWORDS' => array( + 1 => 'color: #a020f0;' + ), + 'COMMENTS' => array( + 1 => 'color: #B22222;', + 'MULTI' => 'color: #B22222;' + ), + 'STRINGS' => array( + 0 => 'color: #bc8f8f;' + ), + 'SYMBOLS' => array( + 0 => 'color: #a020f0;' + ), + 'BRACKETS' => array(), + 'NUMBERS' => array(), + 'METHODS' => array(), + 'SCRIPT' => array() + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array(), + 'STRICT_MODE_APPLIES' => GESHI_MAYBE, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array(), + 'URLS' => array( + 1 => '' + ), + 'REGEXPS' => array( + // function and procedure definition + 1 => array( + GESHI_SEARCH => "(proc|fun)([^{}\n\)]*)(\\{)([\$A-Z\300-\326\330-\336][A-Z\300-\326\330-\336a-z\337-\366\370-\3770-9_.]*)", + GESHI_REPLACE => '\4', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '\1\2\3', + GESHI_AFTER => '' + ), + // class definition + 2 => array( + GESHI_SEARCH => "(class)([^A-Z\$]*)([\$A-Z\300-\326\330-\336][A-Z\300-\326\330-\336a-z\337-\366\370-\3770-9_.]*)", + GESHI_REPLACE => '\3\4', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '\1\2', + GESHI_AFTER => '' + ), + // single character + 3 => array( + GESHI_SEARCH => "&.", + GESHI_REPLACE => '\0', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ), + // method definition + 4 => array( + GESHI_SEARCH => "(meth)([^a-zA-Z]+)([a-zA-Z\300-\326\330-\336][A-Z\300-\326\330-\336a-z\337-\366\370-\3770-9]*)", + GESHI_REPLACE => '\3', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '\1\2', + GESHI_AFTER => '' + ), + // highlight "[]" + // ([] is actually a keyword, but that causes problems in validation; putting it into symbols doesn't work.) + 5 => array( + GESHI_SEARCH => "\[\]", + GESHI_REPLACE => '\0', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '', + GESHI_AFTER => '' + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/pascal.php b/inc/geshi/pascal.php index 01a66bfa0..7ee5729a6 100644 --- a/inc/geshi/pascal.php +++ b/inc/geshi/pascal.php @@ -4,7 +4,7 @@ * ---------- * Author: Tux (tux@inamil.cz) * Copyright: (c) 2004 Tux (http://tux.a4.cz/), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/07/26 * * Pascal language file for GeSHi. diff --git a/inc/geshi/pcre.php b/inc/geshi/pcre.php new file mode 100644 index 000000000..a67cf2858 --- /dev/null +++ b/inc/geshi/pcre.php @@ -0,0 +1,188 @@ +<?php +/************************************************************************************* + * pcre.php + * -------- + * Author: Benny Baumann (BenBE@geshi.org) + * Copyright: (c) 2010 Benny Baumann (http://qbnz.com/highlighter/) + * Release Version: 1.0.8.8 + * Date Started: 2010/05/22 + * + * PCRE language file for GeSHi. + * + * NOTE: This language file handles plain PCRE expressions without delimiters. + * If you want to highlight PCRE with delimiters you should use the + * Perl language file instead. + * + * CHANGES + * ------- + * 2010/05/22 (1.0.8.8) + * - First Release + * + * TODO (updated 2010/05/22) + * ------------------------- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'PCRE', + 'COMMENT_SINGLE' => array(), + 'COMMENT_MULTI' => array( + ), + 'COMMENT_REGEXP' => array( + // Non-matching groups + 1 => "/(?<=\()\?(?::|(?=\())/", + + // Modifier groups + 2 => "/(?<=\()\?[cdegimopsuxUX\-]+(?::|(?=\)))/", + + // Look-Aheads + 3 => "/(?<=\()\?[!=]/", + + // Look-Behinds + 4 => "/(?<=\()\?<[!=]/", + + // Forward Matching + 5 => "/(?<=\()\?>/", + + // Recursive Matching + 6 => "/(?<=\()\?R(?=\))/", + + // Named Subpattern + 7 => "/(?<=\()\?(?:P?<\w+>|\d+(?=\))|P[=>]\w+(?=\)))/", + + // Back Reference + 8 => "/\\\\(?:[1-9]\d?|g\d+|g\{(?:-?\d+|\w+)\}|k<\w+>|k'\w+'|k\{\w+\})/", + + // Byte sequence: Octal + 9 => "/\\\\[0-7]{2,3}/", + + // Byte sequence: Hex + 10 => "/\\\\x[0-9a-fA-F]{2}/", + + // Byte sequence: Hex + 11 => "/\\\\u[0-9a-fA-F]{4}/", + + // Byte sequence: Hex + 12 => "/\\\\U[0-9a-fA-F]{8}/", + + // Byte sequence: Unicode + 13 => "/\\\\[pP]\{[^}\n]+\}/", + + // One-Char Escapes + 14 => "/\\\\[abdefnrstvwzABCDGSWXZ\\\\\\.\[\]\(\)\{\}\^\\\$\?\+\*]/", + + // Byte sequence: Control-X sequence + 15 => "/\\\\c./", + + // Quantifier + 16 => "/\{(?:\d+,?|\d*,\d+)\}/", + + // Comment Subpattern + 17 => "/(?<=\()\?#[^\)]*/", + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array(), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + ), + 'SYMBOLS' => array( + 0 => array('.'), + 1 => array('(', ')'), + 2 => array('[', ']', '|'), + 3 => array('^', '$'), + 4 => array('?', '+', '*'), + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + ), + 'COMMENTS' => array( + 1 => 'color: #993333; font-weight: bold;', + 2 => 'color: #cc3300; font-weight: bold;', + 3 => 'color: #cc0066; font-weight: bold;', + 4 => 'color: #cc0066; font-weight: bold;', + 5 => 'color: #cc6600; font-weight: bold;', + 6 => 'color: #cc00cc; font-weight: bold;', + 7 => 'color: #cc9900; font-weight: bold; font-style: italic;', + 8 => 'color: #cc9900; font-style: italic;', + 9 => 'color: #669933; font-style: italic;', + 10 => 'color: #339933; font-style: italic;', + 11 => 'color: #339966; font-style: italic;', + 12 => 'color: #339999; font-style: italic;', + 13 => 'color: #663399; font-style: italic;', + 14 => 'color: #999933; font-style: italic;', + 15 => 'color: #993399; font-style: italic;', + 16 => 'color: #333399; font-style: italic;', + 17 => 'color: #666666; font-style: italic;', + 'MULTI' => 'color: #666666; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;', + 'HARD' => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;', + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;' + ), + 'METHODS' => array( + 1 => 'color: #006600;', + 2 => 'color: #006600;' + ), + 'SYMBOLS' => array( + 0 => 'color: #333399; font-weight: bold;', + 1 => 'color: #993333; font-weight: bold;', + 2 => 'color: #339933; font-weight: bold;', + 3 => 'color: #333399; font-weight: bold;', + 4 => 'color: #333399; font-style: italic;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'PARSER_CONTROL' => array( + 'ENABLE_FLAGS' => array( + 'BRACKETS' => GESHI_NEVER, + 'NUMBERS' => GESHI_NEVER + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/per.php b/inc/geshi/per.php index ea9c75f8e..b656c105e 100644 --- a/inc/geshi/per.php +++ b/inc/geshi/per.php @@ -4,7 +4,7 @@ * -------- * Author: Lars Gersmann (lars.gersmann@gmail.com) * Copyright: (c) 2007 Lars Gersmann - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2007/06/03 * * Per (forms) (FOURJ's Genero 4GL) language file for GeSHi. diff --git a/inc/geshi/perl.php b/inc/geshi/perl.php index 7c212515e..5d1c4320b 100644 --- a/inc/geshi/perl.php +++ b/inc/geshi/perl.php @@ -4,7 +4,7 @@ * -------- * Author: Andreas Gohr (andi@splitbrain.org), Ben Keen (ben.keen@gmail.com) * Copyright: (c) 2004 Andreas Gohr, Ben Keen (http://www.benjaminkeen.org/), Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/08/20 * * Perl language file for GeSHi. diff --git a/inc/geshi/perl6.php b/inc/geshi/perl6.php new file mode 100644 index 000000000..9ea20fc78 --- /dev/null +++ b/inc/geshi/perl6.php @@ -0,0 +1,197 @@ +<?php +/************************************************************************************* + * perl6.php + * --------- + * Author: Kodi Arfer (kodiarfer {at} warpmail {period} net); forked from perl.php 1.0.8 by Andreas Gohr (andi@splitbrain.org), Ben Keen (ben.keen@gmail.com) + * Copyright: (c) 2009 Kodi Arfer, (c) 2004 Andreas Gohr, Ben Keen (http://www.benjaminkeen.org/), Nigel McNie (http://qbnz.com/highlighter/) + * Release Version: 1.0.8.8 + * Date Started: 2009/11/07 + * + * Perl 6 language file for GeSHi. + * + * CHANGES + * ------- + * 2009/12/25 (1.0.8.6) + * - First Release + * + * TODO (updated 2009/11/07) + * ------------------------- + * * It's all pretty rough. Perl 6 is complicated; this'll never be more + * than reasonably accurate unless it's carefully written to match + * STD.pm. + * * It's largely incomplete. Lots of keywords are no doubt missing. + * * Recognize comments like #`( Hello! ). + * * Recognize qw-ing angle brackets. + * * ! should probably be in OBJECT_SPLITTERS too, but putting it there + * gives bizarre results. What to do?. + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'Perl 6', + 'COMMENT_SINGLE' => array(1 => '#'), + 'COMMENT_MULTI' => array('=begin' => '=end'), + 'COMMENT_REGEXP' => array( + //Regular expressions + 2 => "/(?<=[\\s^])(s|tr|y)\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/(?:\\\\.|(?!\n)[^\\/\\\\])*\\/[msixpogcde]*(?=[\\s$\\.\\;])|(?<=[\\s^(=])(m|q[qrwx]?)?\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/[msixpogc]*(?=[\\s$\\.\\,\\;\\)])/iU", + //Regular expression match variables + 3 => '/\$\d+/', + //Heredoc + 4 => '/<<\s*?([\'"]?)([a-zA-Z0-9]+)\1;[^\n]*?\\n.*\\n\\2(?![a-zA-Z0-9])/siU', + //Beastly hack to finish highlighting each POD block + 5 => '((?<==end) .+)' + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'HARDQUOTE' => array("'", "'"), // An optional 2-element array defining the beginning and end of a hard-quoted string + 'HARDESCAPE' => array('\\\''), + // Things that must still be escaped inside a hard-quoted string + // If HARDQUOTE is defined, HARDESCAPE must be defined + // This will not work unless the first character of each element is either in the + // QUOTEMARKS array or is the ESCAPE_CHAR + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( + 'do', 'else', 'elsif', 'for', 'if', 'then', 'until', + 'while', 'loop', 'repeat', 'my', 'xor', 'or', 'and', + 'unless', 'next', 'last', 'redo', 'not', 'our', 'let', + 'temp', 'state', 'enum', 'constant', 'continue', 'cmp', + 'ne', 'eq', 'lt', 'gt', 'le', 'ge', 'leg', 'div', 'X', + 'Z', 'x', 'xx', 'given', 'when', 'default', 'has', + 'returns', 'of', 'is', 'does', 'where', 'subset', 'but', + 'True', 'False', 'return', 'die', 'fail' + ), + 2 => array( + 'use', 'sub', 'multi', 'method', 'submethod', 'proto', + 'class', 'role', 'grammar', 'regex', 'token', 'rule', + 'new', 'BEGIN', 'END', 'CHECK', 'INIT', 'START', 'FIRST', + 'ENTER', 'LEAVE', 'KEEP', 'UNDO', 'NEXT', 'LAST', 'PRE', + 'POST', 'CATCH', 'CONTROL', 'BUILD' + ), + 3 => array( + 'all', 'any', 'cat', 'classify', 'defined', 'grep', 'first', + 'keys', 'kv', 'join', 'map', 'max', 'min', 'none', 'one', 'pairs', + 'print', 'printf', 'roundrobin', 'pick', 'reduce', 'reverse', 'say', + 'shape', 'sort', 'srand', 'undefine', 'uri', 'values', 'warn', 'zip', + + # Container + 'rotate', 'comb', 'end', 'elems', 'delete', + 'exists', 'pop', 'push', 'shift', 'splice', + 'unshift', 'invert', 'decode', + + # Numeric + 'succ', 'pred', 'abs', 'exp', 'log', + 'log10', 'rand', 'roots', 'cis', 'unpolar', 'i', 'floor', + 'ceiling', 'round', 'truncate', 'sign', 'sqrt', + 'polar', 're', 'im', 'I', 'atan2', 'nude', + 'denominator', 'numerator', + + # Str + 'p5chop', 'chop', 'p5chomp', 'chomp', 'lc', 'lcfirst', + 'uc', 'ucfirst', 'normalize', 'samecase', 'sameaccent', + 'capitalize', 'length', 'chars', 'graphs', 'codes', + 'bytes', 'encode', 'index', 'pack', 'quotemeta', 'rindex', + 'split', 'words', 'flip', 'sprintf', 'fmt', + 'substr', 'trim', 'unpack', 'match', 'subst', 'trans' + ) + ), + 'SYMBOLS' => array( + '<', '>', '=', + '!', '@', '~', '&', '|', '^', + '+','-', '*', '/', '%', + ',', ';', '?', '.', ':', + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #b1b100;', + 2 => 'color: #000000; font-weight: bold;', + 3 => 'color: #000066;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 2 => 'color: #009966; font-style: italic;', + 3 => 'color: #0000ff;', + 4 => 'color: #cc0000; font-style: italic;', + 5 => 'color: #666666; font-style: italic;', + 'MULTI' => 'color: #666666; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;', + 'HARD' => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;', + 'HARD' => 'color: #ff0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;' + ), + 'METHODS' => array( + 1 => 'color: #006600;', + 2 => 'color: #006600;' + ), + 'SYMBOLS' => array( + 0 => 'color: #339933;' + ), + 'REGEXPS' => array( + 0 => 'color: #0000ff;', + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.', + 2 => '::' + ), + 'REGEXPS' => array( + //Variable + 0 => '(?:[$@%]|&)(?:(?:[\^:*?!~]|<)?[a-zA-Z_][a-zA-Z0-9_]*|(?=\.))' + # We treat the . twigil specially so the name can be highlighted as an + # object field (via OBJECT_SPLITTERS). + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'PARSER_CONTROL' => array( + 'COMMENTS' => array( + 'DISALLOWED_BEFORE' => '$' + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/pf.php b/inc/geshi/pf.php new file mode 100644 index 000000000..d59a609d5 --- /dev/null +++ b/inc/geshi/pf.php @@ -0,0 +1,178 @@ +<?php +/************************************************************************************* + * pf.php + * -------- + * Author: David Berard (david@nfrance.com) + * Copyright: (c) 2010 Benny Baumann (http://qbnz.com/highlighter/) + * Release Version: 1.0.8.8 + * Date Started: 2009/10/16 + * Based on bash.php + * + * OpenBSD PACKET FILTER language file for GeSHi. + * + * CHANGES + * ------- + * 2009/10/16 (1.0.0) + * - First Release + * + * TODO + * ------------------------- + * * Support ALTQ + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'OpenBSD Packet Filter', + 'COMMENT_SINGLE' => array('#'), + 'COMMENT_MULTI' => array(), + 'COMMENT_REGEXP' => array( + 1 => "/\\$\\{[^\\n\\}]*?\\}/i", + 2 => '/<<-?\s*?(\'?)([a-zA-Z0-9]+)\1\\n.*\\n\\2(?![a-zA-Z0-9])/siU', + 3 => "/\\\\['\"]/siU" + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'HARDQUOTE' => array("'", "'"), + 'HARDESCAPE' => array("\'"), + 'ESCAPE_CHAR' => '', + 'ESCAPE_REGEXP' => array( + 1 => "#\\\\[nfrtv\\$\\\"\n]#i", + 2 => "#\\$[a-z_][a-z0-9_]*#i", + 3 => "/\\$\\{[^\\n\\}]*?\\}/i", + 4 => "/\\$\\([^\\n\\)]*?\\)/i", + 5 => "/`[^`]*`/" + ), + 'KEYWORDS' => array( + 1 => array( + 'pass' + ), + 2 => array( + 'block' + ), + 3 => array( + 'quick','keep','state','antispoof','table','persist','file','scrub', + 'set','skip','flags','on' + ), + 4 => array( + 'in','out','proto' + ) + ), + 'SYMBOLS' => array( + '(', ')', '[', ']', '!', '@', '%', '&', '*', '|', '/', '<', '>', ';;', '`','=' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #009900; font-weight: bold;', + 2 => 'color: #990000; font-weight: bold;', + 3 => 'color: #7a0874;', + 4 => 'color: #336699;' + ), + 'COMMENTS' => array( + 0 => 'color: #666666; font-style: italic;', + 1 => 'color: #800000;', + 2 => 'color: #cc0000; font-style: italic;', + 3 => 'color: #000000; font-weight: bold;' + ), + 'ESCAPE_CHAR' => array( + 1 => 'color: #000099; font-weight: bold;', + 2 => 'color: #007800;', + 3 => 'color: #007800;', + 4 => 'color: #007800;', + 5 => 'color: #780078;', + 'HARD' => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #7a0874; font-weight: bold;' + ), + 'STRINGS' => array( + 0 => 'color: #CC0000;', + 'HARD' => 'color: #CC0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #ff00cc;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #000000; font-weight: bold;' + ), + 'REGEXPS' => array( + 0 => 'color: #007800;', + 1 => 'color: #007800;', + 2 => 'color: #007800;', + 4 => 'color: #007800;', + 5 => 'color: #660033;', + 6 => 'color: #000099; font-weight: bold;', + 7 => 'color: #0000ff;', + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + //Variables (will be handled by comment_regexps) + 0 => "\\$\\{[a-zA-Z_][a-zA-Z0-9_]*?\\}", + //Variables without braces + 1 => "\\$[a-zA-Z_][a-zA-Z0-9_]*", + //Variable assignment + 2 => "(?<![\.a-zA-Z_\-])([a-zA-Z_][a-zA-Z0-9_]*?)(?==)", + //Shorthand shell variables + 4 => "\\$[*#\$\\-\\?!]", + //Parameters of commands + 5 => "(?<=\s)--?[0-9a-zA-Z\-]+(?=[\s=]|$)", + //IPs + 6 => "([0-9]{1,3}\.){3}[0-9]{1,3}", + //Tables + 7 => "(<(.*)>)" + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4, + 'PARSER_CONTROL' => array( + 'COMMENTS' => array( + 'DISALLOWED_BEFORE' => '$' + ), + 'KEYWORDS' => array( + 'DISALLOWED_BEFORE' => "(?<![\.\-a-zA-Z0-9_\$\#])", + 'DISALLOWED_AFTER' => "(?![\.\-a-zA-Z0-9_%\\/])" + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/php-brief.php b/inc/geshi/php-brief.php index 2a5d78611..c28d985f4 100644 --- a/inc/geshi/php-brief.php +++ b/inc/geshi/php-brief.php @@ -4,7 +4,7 @@ * ------------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/06/02 * * PHP (brief version) language file for GeSHi. @@ -185,7 +185,7 @@ $language_data = array ( 3 => array( '<script language="php">' => '</script>' ), - 4 => "/(?<start><\\?(?>php\b)?)(?:". + 4 => "/(?P<start><\\?(?>php\b)?)(?:". "(?>[^\"'?\\/<]+)|". "\\?(?!>)|". "(?>'(?>[^'\\\\]|\\\\'|\\\\\\\|\\\\)*')|". @@ -194,9 +194,9 @@ $language_data = array ( "\\/\\/(?>.*?$)|". "\\/(?=[^*\\/])|". "<(?!<<)|". - "<<<(?<phpdoc>\w+)\s.*?\s\k<phpdoc>". - ")*(?<end>\\?>|\Z)/sm", - 5 => "/(?<start><%)(?:". + "<<<(?P<phpdoc>\w+)\s.*?\s\k<phpdoc>". + ")*(?P<end>\\?>|\Z)/sm", + 5 => "/(?P<start><%)(?:". "(?>[^\"'%\\/<]+)|". "%(?!>)|". "(?>'(?>[^'\\\\]|\\\\'|\\\\\\\|\\\\)*')|". @@ -205,8 +205,8 @@ $language_data = array ( "\\/\\/(?>.*?$)|". "\\/(?=[^*\\/])|". "<(?!<<)|". - "<<<(?<phpdoc>\w+)\s.*?\s\k<phpdoc>". - ")*(?<end>%>)/sm" + "<<<(?P<phpdoc>\w+)\s.*?\s\k<phpdoc>". + ")*(?P<end>%>)/sm" ), 'HIGHLIGHT_STRICT_BLOCK' => array( 0 => true, diff --git a/inc/geshi/php.php b/inc/geshi/php.php index b96c947ed..ec6981134 100644 --- a/inc/geshi/php.php +++ b/inc/geshi/php.php @@ -4,7 +4,7 @@ * -------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/06/20 * * PHP language file for GeSHi. @@ -90,14 +90,14 @@ $language_data = array( 'as','break','case','continue','default','do','else','elseif', 'endfor','endforeach','endif','endswitch','endwhile','for', 'foreach','if','include','include_once','require','require_once', - 'return','switch','while', + 'return','switch','throw','while', 'echo','print' ), 2 => array( '&new','</script>','<?php','<script language', 'class','const','declare','extends','function','global','interface', - 'namespace','new','private','public','self','var' + 'namespace','new','private','protected','public','self','use','var' ), 3 => array( 'abs','acos','acosh','addcslashes','addslashes','aggregate', @@ -1077,7 +1077,7 @@ $language_data = array( 3 => array( '<script language="php">' => '</script>' ), - 4 => "/(?<start><\\?(?>php\b)?)(?:". + 4 => "/(?P<start><\\?(?>php\b)?)(?:". "(?>[^\"'?\\/<]+)|". "\\?(?!>)|". "(?>'(?>[^'\\\\]|\\\\'|\\\\\\\|\\\\)*')|". @@ -1086,9 +1086,9 @@ $language_data = array( "\\/\\/(?>.*?$)|". "\\/(?=[^*\\/])|". "<(?!<<)|". - "<<<(?<phpdoc>\w+)\s.*?\s\k<phpdoc>". - ")*(?<end>\\?>|\Z)/sm", - 5 => "/(?<start><%)(?:". + "<<<(?P<phpdoc>\w+)\s.*?\s\k<phpdoc>". + ")*(?P<end>\\?>|\Z)/sm", + 5 => "/(?P<start><%)(?:". "(?>[^\"'%\\/<]+)|". "%(?!>)|". "(?>'(?>[^'\\\\]|\\\\'|\\\\\\\|\\\\)*')|". @@ -1097,8 +1097,8 @@ $language_data = array( "\\/\\/(?>.*?$)|". "\\/(?=[^*\\/])|". "<(?!<<)|". - "<<<(?<phpdoc>\w+)\s.*?\s\k<phpdoc>". - ")*(?<end>%>)/sm", + "<<<(?P<phpdoc>\w+)\s.*?\s\k<phpdoc>". + ")*(?P<end>%>)/sm", ), 'HIGHLIGHT_STRICT_BLOCK' => array( 0 => true, diff --git a/inc/geshi/pic16.php b/inc/geshi/pic16.php index f25183ffb..626a768b0 100644 --- a/inc/geshi/pic16.php +++ b/inc/geshi/pic16.php @@ -4,7 +4,7 @@ * ------- * Author: Phil Mattison (mattison@ohmikron.com) * Copyright: (c) 2008 Ohmikron Corp. (http://www.ohmikron.com/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/07/30 * * PIC16 Assembler language file for GeSHi. diff --git a/inc/geshi/pike.php b/inc/geshi/pike.php new file mode 100644 index 000000000..2b860ccd6 --- /dev/null +++ b/inc/geshi/pike.php @@ -0,0 +1,103 @@ +<?php +/************************************************************************************* + * pike.php + * -------- + * Author: Rick E. (codeblock@eighthbit.net) + * Copyright: (c) 2009 Rick E. + * Release Version: 1.0.8.8 + * Date Started: 2009/12/10 + * + * Pike language file for GeSHi. + * + * CHANGES + * ------- + * 2009/12/25 (1.0.8.6) + * - First Release + * + * TODO (updated 2009/12/25) + * ------------------------- + * + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array( + 'LANG_NAME' => 'Pike', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( + 'goto', 'break', 'continue', 'return', 'case', 'default', 'if', + 'else', 'switch', 'while', 'foreach', 'do', 'for', 'gauge', + 'destruct', 'lambda', 'inherit', 'import', 'typeof', 'catch', + 'inline', 'nomask', 'private', 'protected', 'public', 'static' + ) + ), + 'SYMBOLS' => array( + 1 => array( + '(', ')', '{', '}', '[', ']', '+', '-', '*', '/', '%', '=', '!', '&', '|', '?', ';' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #b1b100;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 'MULTI' => 'color: #666666; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #0000ff;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;', + ), + 'METHODS' => array( + 0 => 'color: #004000;' + ), + 'SYMBOLS' => array( + 1 => 'color: #339933;' + ), + 'REGEXPS' => array(), + 'SCRIPT' => array() + ), + 'URLS' => array(1 => ''), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array(1 => '.'), + 'REGEXPS' => array(), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array() +); + +?> diff --git a/inc/geshi/pixelbender.php b/inc/geshi/pixelbender.php index b65e228a1..82c64ae52 100644 --- a/inc/geshi/pixelbender.php +++ b/inc/geshi/pixelbender.php @@ -4,7 +4,7 @@ * ---------------- * Author: Richard Olsson (r@richardolsson.se) * Copyright: (c) 2008 Richard Olsson (richardolsson.se) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/11/16 * * Pixel Bender 1.0 language file for GeSHi. diff --git a/inc/geshi/plsql.php b/inc/geshi/plsql.php index 6534a1922..e0145362c 100644 --- a/inc/geshi/plsql.php +++ b/inc/geshi/plsql.php @@ -4,7 +4,7 @@ * ------- * Author: Victor Engmark <victor.engmark@gmail.com> * Copyright: (c) 2006 Victor Engmark (http://l0b0.net/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2006/10/26 * * Oracle 9.2 PL/SQL language file for GeSHi. diff --git a/inc/geshi/postgresql.php b/inc/geshi/postgresql.php new file mode 100644 index 000000000..7f89fe2a4 --- /dev/null +++ b/inc/geshi/postgresql.php @@ -0,0 +1,288 @@ +<?php +/************************************************************************************* + * postgresql.php + * ----------- + * Author: Christophe Chauvet (christophe_at_kryskool_dot_org) + * Contributors: Leif Biberg Kristensen <leif_at_solumslekt_dot_org> 2010-05-03 + * Copyright: (c) 2007 Christophe Chauvet (http://kryskool.org/), Nigel McNie (http://qbnz.com/highlighter) + * Release Version: 1.0.8.8 + * Date Started: 2007/07/20 + * + * PostgreSQL language file for GeSHi. + * + * CHANGES + * ------- + * 2007/07/20 (1.0.0) + * - First Release + * + * TODO (updated 2007/07/20) + * ------------------------- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'PostgreSQL', + 'COMMENT_SINGLE' => array(1 => '--'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"', '`'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + //Put PostgreSQL reserved keywords here. I like mine uppercase. + 1 => array( + 'ABORT','ABSOLUTE','ACCESS','ACTION','ADD','ADMIN','AFTER', + 'AGGREGATE','ALL','ALSO','ALTER','ALWAYS','ANALYSE','ANALYZE','AND', + 'ANY','AS','ASC,','ASSERTION','ASSIGNMENT','ASYMMETRIC','AT', + 'AUTHORIZATION','BACKWARD','BEFORE','BEGIN','BETWEEN','BOTH','BY', + 'CACHE','CALLED','CASCADE','CASCADED','CASE','CAST','CATALOG', + 'CHAIN','CHARACTERISTICS','CHECK','CHECKPOINT','CLASS','CLOSE', + 'CLUSTER','COALESCE','COLLATE','COLUMN','COMMENT','COMMIT', + 'COMMITTED','CONCURRENTLY','CONFIGURATION','CONNECTION', + 'CONSTRAINT','CONSTRAINTS','CONTENT','CONTINUE','CONVERSION','COPY', + 'COST','CREATE','CREATEDB','CREATEROLE','CREATEUSER','CROSS','CSV', + 'CURRENT','CURRENT_CATALOG','CURRENT_DATE','CURRENT_ROLE', + 'CURRENT_SCHEMA','CURRENT_TIME','CURRENT_TIMESTAMP','CURRENT_USER', + 'CURSOR','CYCLE','DATA','DATABASE','DAY','DEALLOCATE','DEC', + 'DECLARE','DEFAULT','DEFAULTS','DEFERRABLE','DEFERRED','DEFINER', + 'DELETE','DELIMITER','DELIMITERS','DESC','DICTIONARY','DISABLE', + 'DISCARD','DISTINCT','DO','DOCUMENT','DOMAIN','DOUBLE','DROP', + 'EACH','ELSE','ENABLE','ENCODING','ENCRYPTED','END','ESCAPE', + 'EXCEPT','EXCLUDING','EXCLUSIVE','EXECUTE','EXISTS','EXPLAIN', + 'EXTERNAL','EXTRACT','FALSE','FAMILY','FETCH','FIRST','FOLLOWING', + 'FOR','FORCE','FOREIGN','FORWARD','FREEZE','FROM','FULL','FUNCTION', + 'GLOBAL','GRANT','GRANTED','GREATEST','GROUP','HANDLER','HAVING', + 'HEADER','HOLD','HOUR','IDENTITY','IF','ILIKE','IMMEDIATE', + 'IMMUTABLE','IMPLICIT','IN','INCLUDING','INCREMENT','INDEX', + 'INDEXES','INHERIT','INHERITS','INITIALLY','INNER','INOUT','INPUT', + 'INSENSITIVE','INSERT','INSTEAD','INTERSECT','INTO','INVOKER','IS', + 'ISNULL','ISOLATION','JOIN','KEY','LANCOMPILER','LANGUAGE','LARGE', + 'LAST','LC_COLLATE','LC_CTYPE','LEADING','LEAST','LEFT','LEVEL', + 'LIKE','LIMIT','LISTEN','LOAD','LOCAL','LOCALTIME','LOCALTIMESTAMP', + 'LOCATION','LOCK','LOGIN','LOOP','MAPPING','MATCH','MAXVALUE', + 'MINUTE','MINVALUE','MODE','MONTH','MOVE','NAME','NAMES','NATIONAL', + 'NATURAL','NEW','NEXT','NO','NOCREATEDB','NOCREATEROLE', + 'NOCREATEUSER','NOINHERIT','NOLOGIN','NONE','NOSUPERUSER','NOT', + 'NOTHING','NOTIFY','NOTNULL','NOWAIT','NULL','NULLIF','NULLS', + 'NUMERIC','OBJECT','OF','OFF','OFFSET','OIDS','OLD','ON','ONLY', + 'OPERATOR','OPTION','OPTIONS','OR','ORDER','OUT','OUTER','OVER', + 'OVERLAPS','OVERLAY','OWNED','OWNER','PARSER','PARTIAL','PARTITION', + 'PASSWORD','PLACING','PLANS','POSITION','PRECEDING','PRECISION', + 'PREPARE','PREPARED','PRESERVE','PRIMARY','PRIOR','PRIVILEGES', + 'PROCEDURAL','PROCEDURE','QUOTE','RANGE','READ','REASSIGN', + 'RECHECK','RECURSIVE','REFERENCES','REINDEX','RELATIVE','RELEASE', + 'RENAME','REPEATABLE','REPLACE','REPLICA','RESET','RESTART', + 'RESTRICT','RETURN','RETURNING','RETURNS','REVOKE','RIGHT','ROLE', + 'ROLLBACK','ROW','ROWS','RULE','SAVEPOINT','SCHEMA','SCROLL', + 'SEARCH','SECOND', + 'SECURITY','SELECT','SEQUENCE','SERIALIZABLE','SERVER','SESSION', + 'SESSION_USER','SET','SETOF','SHARE','SHOW','SIMILAR','SIMPLE', + 'SOME','STABLE','STANDALONE','START','STATEMENT','STATISTICS', + 'STDIN','STDOUT','STORAGE','STRICT','STRIP','SUPERUSER', + 'SYMMETRIC','SYSID','SYSTEM','TABLE','TABLESPACE','TEMP','TEMPLATE', + 'TEMPORARY','THEN','TO','TRAILING','TRANSACTION','TREAT','TRIGGER', + 'TRUE','TRUNCATE','TRUSTED','TYPE','UNBOUNDED','UNCOMMITTED', + 'UNENCRYPTED','UNION','UNIQUE','UNKNOWN','UNLISTEN','UNTIL', + 'UPDATE','USER','USING','VACUUM','VALID','VALIDATOR','VALUE', + 'VALUES','VARIADIC','VERBOSE','VERSION','VIEW','VOLATILE','WHEN', + 'WHERE','WHILE','WHITESPACE','WINDOW','WITH','WITHOUT','WORK','WRAPPER', + 'WRITE','XMLATTRIBUTES','XMLCONCAT','XMLELEMENT','XMLFOREST', + 'XMLPARSE','XMLPI','XMLROOT','XMLSERIALIZE','YEAR','YES','ZONE' + ), + + //Put functions here + 3 => array( + // mathematical functions + 'ABS','CBRT','CEIL','CEILING','DEGREES','DIV','EXP','FLOOR','LN', + 'LOG','MOD','PI','POWER','RADIANS','RANDOM','ROUND','SETSEED', + 'SIGN','SQRT','TRUNC','WIDTH_BUCKET', + // trigonometric functions + 'ACOS','ASIN','ATAN','ATAN2','COS','COT','SIN','TAN', + // string functions + 'BIT_LENGTH','CHAR_LENGTH','CHARACTER_LENGTH','LOWER', + 'OCTET_LENGTH','POSITION','SUBSTRING','TRIM','UPPER', + // other string functions + 'ASCII','BTRIM','CHR','CONVERT','CONVERT_FROM','CONVERT_TO', + 'DECODE','ENCODE','INITCAP','LENGTH','LPAD','LTRIM','MD5', + 'PG_CLIENT_ENCODING','QUOTE_IDENT','QUOTE_LITERAL','QUOTE_NULLABLE', + 'REGEXP_MATCHES','REGEXP_REPLACE','REGEXP_SPLIT_TO_ARRAY', + 'REGEXP_SPLIT_TO_TABLE','REPEAT','RPAD','RTRIM','SPLIT_PART', + 'STRPOS','SUBSTR','TO_ASCII','TO_HEX','TRANSLATE', + // binary string functions + 'GET_BIT','GET_BYTE','SET_BIT','SET_BYTE', + // data type formatting functions + 'TO_CHAR','TO_DATE','TO_NUMBER','TO_TIMESTAMP', + // date/time functions + 'AGE','CLOCK_TIMESTAMP','DATE_PART','DATE_TRUNC','EXTRACT', + 'ISFINITE','JUSTIFY_DAYS','JUSTIFY_HOURS','JUSTIFY_INTERVAL','NOW', + 'STATEMENT_TIMESTAMP','TIMEOFDAY','TRANSACTION_TIMESTAMP', + // enum support functions + 'ENUM_FIRST','ENUM_LAST','ENUM_RANGE', + // geometric functions + 'AREA','CENTER','DIAMETER','HEIGHT','ISCLOSED','ISOPEN','NPOINTS', + 'PCLOSE','POPEN','RADIUS','WIDTH', + 'BOX','CIRCLE','LSEG','PATH','POINT','POLYGON', + // cidr and inet functions + 'ABBREV','BROADCAST','FAMILY','HOST','HOSTMASK','MASKLEN','NETMASK', + 'NETWORK','SET_MASKLEN', + // text search functions + 'TO_TSVECTOR','SETWEIGHT','STRIP','TO_TSQUERY','PLAINTO_TSQUERY', + 'NUMNODE','QUERYTREE','TS_RANK','TS_RANK_CD','TS_HEADLINE', + 'TS_REWRITE','GET_CURRENT_TS_CONFIG','TSVECTOR_UPDATE_TRIGGER', + 'TSVECTOR_UPDATE_TRIGGER_COLUMN', + 'TS_DEBUG','TS_LEXISE','TS_PARSE','TS_TOKEN_TYPE','TS_STAT', + // XML functions + 'XMLCOMMENT','XMLCONCAT','XMLELEMENT','XMLFOREST','XMLPI','XMLROOT', + 'XMLAGG','XPATH','TABLE_TO_XMLSCHEMA','QUERY_TO_XMLSCHEMA', + 'CURSOR_TO_XMLSCHEMA','TABLE_TO_XML_AND_XMLSCHEMA', + 'QUERY_TO_XML_AND_XMLSCHEMA','SCHEMA_TO_XML','SCHEMA_TO_XMLSCHEMA', + 'SCHEMA_TO_XML_AND_XMLSCHEMA','DATABASE_TO_XML', + 'DATABASE_TO_XMLSCHEMA','DATABASE_TO_XML_AND_XMLSCHEMA', + // sequence manipulating functions + 'CURRVAL','LASTVAL','NEXTVAL','SETVAL', + // conditional expressions + 'COALESCE','NULLIF','GREATEST','LEAST', + // array functions + 'ARRAY_APPEND','ARRAY_CAT','ARRAY_NDIMS','ARRAY_DIMS','ARRAY_FILL', + 'ARRAY_LENGTH','ARRAY_LOWER','ARRAY_PREPEND','ARRAY_TO_STRING', + 'ARRAY_UPPER','STRING_TO_ARRAY','UNNEST', + // aggregate functions + 'ARRAY_AGG','AVG','BIT_AND','BIT_OR','BOOL_AND','BOOL_OR','COUNT', + 'EVERY','MAX','MIN','STRING_AGG','SUM', + // statistic aggregate functions + 'CORR','COVAR_POP','COVAR_SAMP','REGR_AVGX','REGR_AVGY', + 'REGR_COUNT','REGR_INTERCEPT','REGR_R2','REGR_SLOPE','REGR_SXX', + 'REGR_SXY','REGR_SYY','STDDEV','STDDEV_POP','STDDEV_SAMP', + 'VARIANCE','VAR_POP','VAR_SAMP', + // window functions + 'ROW_NUMBER','RANK','DENSE_RANK','PERCENT_RANK','CUME_DIST','NTILE', + 'LAG','LEAD','FIRST_VALUE','LAST_VALUE','NTH_VALUE', + // set returning functions + 'GENERATE_SERIES','GENERATE_SUBSCRIPTS' + // system information functions not currently included + ), + + //Put your postgresql var + 4 => array( + 'client_encoding', + 'standard_conforming_strings' + ), + + //Put your data types here + 5 => array( + 'ARRAY','ABSTIME','BIGINT','BIGSERIAL','BINARY','BIT','BIT VARYING', + 'BOOLEAN','BOX','BYTEA','CHAR','CHARACTER','CHARACTER VARYING', + 'CIDR','CIRCLE','DATE','DECIMAL','DOUBLE PRECISION','ENUM','FLOAT', + 'INET','INT','INTEGER','INTERVAL','NCHAR','REAL','SMALLINT','TEXT', + 'TIME','TIMESTAMP','VARCHAR','XML', + ), + + // //Put your package names here + // 6 => array( + // ), + + ), + 'SYMBOLS' => array( + '(', ')', '=', '<', '>', '|' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 3 => false, + 4 => false, + 5 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + // regular keywords + 1 => 'color: #000000; font-weight: bold; text-transform: uppercase;', + // inbuilt functions + 3 => 'color: #333399; font-weight: bold; text-transform: uppercase;', + // postgresql var(?) + 4 => 'color: #993333; font-weight: bold; text-transform: uppercase;', + // data types + 5 => 'color: #993333; font-weight: bold; text-transform: uppercase;', + ), + 'COMMENTS' => array( + 1 => 'color: #808080; font-style: italic;', + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #66cc66;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;' + ), + 'METHODS' => array( + 1 => 'color: #ff0000;' + ), + 'SYMBOLS' => array( + 0 => 'color: #66cc66;' + ), + 'SCRIPT' => array( + ), + 'REGEXPS' => array( + ) + ), + 'URLS' => array( + 1 => '', + 3 => '', + 4 => 'http://paste.postgresql.fr/wiki/desc.php?def={FNAME}', + 5 => '', + ), + + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 1 => array( + 'DISALLOWED_AFTER' => '(?![\(\w])' + ), + + 3 => array( + 'DISALLOWED_AFTER' => '(?=\()' + ), + + 4 => array( + 'DISALLOWED_AFTER' => '(?![\(\w])' + ), + + 5 => array( + 'DISALLOWED_AFTER' => '(?![\(\w])' + ), + ) + ) + +); + +?>
\ No newline at end of file diff --git a/inc/geshi/povray.php b/inc/geshi/povray.php index af6c443da..c987a013e 100644 --- a/inc/geshi/povray.php +++ b/inc/geshi/povray.php @@ -4,7 +4,7 @@ * -------- * Author: Carl Fürstenberg (azatoth@gmail.com) * Copyright: © 2007 Carl Fürstenberg - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/07/11 * * Povray language file for GeSHi. diff --git a/inc/geshi/powerbuilder.php b/inc/geshi/powerbuilder.php new file mode 100644 index 000000000..ef86c242c --- /dev/null +++ b/inc/geshi/powerbuilder.php @@ -0,0 +1,418 @@ +<?php +/************************************************************************************* + * powerbuilder.php + * ------ + * Author: Doug Porter (powerbuilder.geshi@gmail.com) + * Copyright: (c) 2009 Doug Porter + * Release Version: 1.0.8.8 + * Date Started: 2009/07/13 + * + * PowerBuilder (PowerScript) language file for GeSHi. + * + * Based on the TextPad Syntax file for PowerBuilder + * built by Rafi Avital + * + * CHANGES + * ------- + * 2009/07/13 (1.0.0) + * - First Release + * + * TODO (updated 2009/07/13) + * ------------------------- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'PowerBuilder', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'COMMENT_REGEXP' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'ESCAPE_CHAR' => '~', + 'KEYWORDS' => array( + 1 => array( + 'alias', 'and', 'autoinstantiate', 'call', + 'case', 'catch', 'choose', 'close', 'commit', 'connect', + 'constant', 'continue', 'create', 'cursor', 'declare', + 'delete', 'describe', 'descriptor', 'destroy', 'disconnect', + 'do', 'dynamic', 'else', 'elseif', 'end', 'enumerated', + 'event', 'execute', 'exit', 'external', 'false', 'fetch', + 'first', 'for', 'forward', 'from', 'function', 'global', + 'goto', 'halt', 'if', 'immediate', 'indirect', 'insert', + 'into', 'intrinsic', 'is', 'last', 'library', 'loop', 'next', + 'not', 'of', 'on', 'open', 'or', 'parent', 'post', 'prepare', + 'prior', 'private', 'privateread', 'privatewrite', 'procedure', + 'protected', 'protectedread', 'protectedwrite', 'prototypes', + 'public', 'readonly', 'ref', 'return', 'rollback', 'rpcfunc', + 'select', 'selectblob', 'shared', 'static', 'step', 'subroutine', + 'super', 'system', 'systemread', 'systemwrite', 'then', 'this', + 'to', 'trigger', 'true', 'try', 'type', 'until', 'update', 'updateblob', + 'using', 'variables', 'where', 'while', 'with', 'within' + ), + 2 => array ( + 'blob', 'boolean', 'char', 'character', 'date', 'datetime', + 'dec', 'decimal', + 'double', 'int', 'integer', 'long', 'real', 'string', 'time', + 'uint', 'ulong', 'unsignedint', 'unsignedinteger', 'unsignedlong' + ), + 3 => array ( + 'abortretryignore!', 'actbegin!', 'acterror!', 'actesql!', + 'actgarbagecollect!', 'activate!', 'activatemanually!', + 'activateondoubleclick!', + 'activateongetfocus!', 'actline!', 'actobjectcreate!', 'actobjectdestroy!', + 'actprofile!', 'actroutine!', 'acttrace!', 'actual!', + 'actuser!', 'adoresultset!', 'adtdate!', 'adtdatetime!', + 'adtdefault!', 'adtdouble!', 'adttext!', 'adttime!', + 'aix!', 'alignatbottom!', 'alignatleft!', 'alignatright!', + 'alignattop!', 'all!', 'allowpartialchanges!', 'alpha!', + 'ansi!', 'any!', 'anycase!', 'anyfont!', + 'append!', 'application!', 'arabiccharset!', 'area3d!', + 'areagraph!', 'arraybounds!', 'arrow!', 'ascending!', + 'asstatement!', 'atbottom!', 'atleft!', 'atright!', + 'attop!', 'autosize!', 'background!', 'balticcharset!', + 'bar3dgraph!', 'bar3dobjgraph!', 'bargraph!', 'barstack3dobjgraph!', + 'barstackgraph!', 'bdiagonal!', 'beam!', 'begin!', + 'begindrag!', 'beginlabeledit!', 'beginrightdrag!', 'behind!', + 'blob!', 'bold!', 'boolean!', 'bottom!', + 'boundedarray!', 'box!', 'byreferenceargument!', 'byvalueargument!', + 'cancel!', 'cascade!', 'cascaded!', 'category!', + 'center!', 'character!', 'charsetansi!', 'charsetansiarabic!', + 'charsetansihebrew!', 'charsetdbcsjapanese!', 'charsetunicode!', 'checkbox!', + 'child!', 'childtreeitem!', 'chinesebig5!', 'classdefinition!', + 'classdefinitionobject!', 'classorstructuretype!', 'clicked!', 'clip!', + 'clipboard!', 'clipformatbitmap!', 'clipformatdib!', 'clipformatdif!', + 'clipformatenhmetafile!', 'clipformathdrop!', 'clipformatlocale!', + 'clipformatmetafilepict!', + 'clipformatoemtext!', 'clipformatpalette!', 'clipformatpendata!', 'clipformatriff!', + 'clipformatsylk!', 'clipformattext!', 'clipformattiff!', 'clipformatunicodetext!', + 'clipformatwave!', 'clock!', 'close!', 'closequery!', + 'col3dgraph!', 'col3dobjgraph!', 'colgraph!', + 'colstack3dobjgraph!', 'colstackgraph!', 'columnclick!', 'commandbutton!', + 'connection!', 'connectioninfo!', 'connectobject!', 'connectprivilege!', + 'connectwithadminprivilege!', 'constructor!', 'containsany!', 'containsembeddedonly!', + 'containslinkedonly!', 'contextinformation!', 'contextkeyword!', 'continuous!', + 'corbaobject!', 'corbaunion!', 'cplusplus!', 'cross!', + 'csv!', 'cumulative!', 'cumulativepercent!', 'currenttreeitem!', + 'customvisual!', 'dash!', 'dashdot!', 'dashdotdot!', + 'data!', 'datachange!', 'datamodified!', 'datastore!', + 'datawindow!', 'datawindowchild!', 'date!', 'datemask!', + 'datetime!', 'datetimemask!', 'dbase2!', 'dbase3!', + 'dberror!', 'deactivate!', 'decimal!', 'decimalmask!', + 'decorative!', 'default!', 'defaultcharset!', 'delete!', + 'deleteallitems!', 'deleteitem!', 'descending!', 'desktop!', + 'destructor!', 'detail!', 'diamond!', 'dif!', + 'dirall!', 'dirapplication!', 'dirdatawindow!', 'directionall!', + 'directiondown!', 'directionleft!', 'directionright!', 'directionup!', + 'dirfunction!', 'dirmenu!', 'dirpipeline!', 'dirproject!', + 'dirquery!', 'dirstructure!', 'diruserobject!', 'dirwindow!', + 'displayasactivexdocument!', 'displayascontent!', 'displayasicon!', 'dot!', + 'double!', 'doubleclicked!', 'dragdrop!', 'dragenter!', + 'dragleave!', 'dragobject!', 'dragwithin!', 'drawobject!', + 'dropdownlistbox!', 'dropdownpicturelistbox!', 'drophighlighttreeitem!', 'dwobject!', + 'dynamicdescriptionarea!', 'dynamicstagingarea!', 'easteuropecharset!', 'editchanged!', + 'editmask!', 'editmenu!', 'end!', 'endlabeledit!', + 'enterprise!', 'enterpriseonlyfeature!', 'enumeratedtype!', 'enumerationdefinition!', + 'enumerationitemdefinition!', 'environment!', 'error!', 'errorlogging!', + 'eventnotexisterror!', 'eventwrongprototypeerror!', 'excel!', 'excel5!', + 'exceptionfail!', 'exceptionignore!', 'exceptionretry!', + 'exceptionsubstitutereturnvalue!', + 'exclamation!', 'exclude!', 'exportapplication!', 'exportdatawindow!', + 'exportfunction!', 'exportmenu!', 'exportpipeline!', 'exportproject!', + 'exportquery!', 'exportstructure!', 'exportuserobject!', 'exportwindow!', + 'externalvisual!', 'extobject!', 'failonanyconflict!', 'fdiagonal!', + 'featurenotsupportederror!', 'filealreadyopenerror!', 'filecloseerror!', + 'fileexists!', + 'fileinvalidformaterror!', 'filemenu!', 'filenotopenerror!', 'filenotseterror!', + 'filereaderror!', 'filetyperichtext!', 'filetypetext!', 'filewriteerror!', + 'filter!', 'first!', 'firstvisibletreeitem!', 'fixed!', + 'floating!', 'focusrect!', 'footer!', 'foreground!', + 'frombeginning!', 'fromcurrent!', 'fromend!', 'functionobject!', + 'gb231charset!', 'getfocus!', 'graph!', 'graphicobject!', + 'graxis!', 'grdispattr!', 'greekcharset!', 'groupbox!', + 'hand!', 'hangeul!', 'header!', 'hebrewcharset!', + 'helpmenu!', 'hide!', 'horizontal!', 'hotlinkalarm!', + 'hourglass!', 'hppa!', 'hprogressbar!', 'hpux!', + 'hscrollbar!', 'hticksonboth!', 'hticksonbottom!', 'hticksonneither!', + 'hticksontop!', 'htmltable!', 'htrackbar!', 'i286!', + 'i386!', 'i486!', 'icon!', 'icons!', + 'idle!', 'importdatawindow!', 'indent!', 'index!', + 'inet!', 'information!', 'inplace!', 'inputfieldselected!', + 'insertitem!', 'inside!', 'integer!', 'internetresult!', + 'italic!', 'itemchanged!', 'itemchanging!', 'itemcollapsed!', + 'itemcollapsing!', 'itemerror!', 'itemexpanded!', 'itemexpanding!', + 'itemfocuschanged!', 'itempopulate!', 'jaguarorb!', 'johabcharset!', + 'justify!', 'key!', 'key0!', 'key1!', + 'key2!', 'key3!', 'key4!', 'key5!', + 'key6!', 'key7!', 'key8!', 'key9!', + 'keya!', 'keyadd!', 'keyalt!', 'keyapps!', + 'keyb!', 'keyback!', 'keybackquote!', 'keybackslash!', + 'keyc!', 'keycapslock!', 'keycomma!', 'keycontrol!', + 'keyd!', 'keydash!', 'keydecimal!', 'keydelete!', + 'keydivide!', 'keydownarrow!', 'keye!', 'keyend!', + 'keyenter!', 'keyequal!', 'keyescape!', 'keyf!', + 'keyf1!', 'keyf10!', 'keyf11!', 'keyf12!', + 'keyf2!', 'keyf3!', 'keyf4!', 'keyf5!', + 'keyf6!', 'keyf7!', 'keyf8!', 'keyf9!', + 'keyg!', 'keyh!', 'keyhome!', 'keyi!', + 'keyinsert!', 'keyj!', 'keyk!', 'keyl!', + 'keyleftarrow!', 'keyleftbracket!', 'keyleftbutton!', 'keyleftwindows!', + 'keym!', 'keymiddlebutton!', 'keymultiply!', 'keyn!', + 'keynull!', 'keynumlock!', 'keynumpad0!', 'keynumpad1!', + 'keynumpad2!', 'keynumpad3!', 'keynumpad4!', 'keynumpad5!', + 'keynumpad6!', 'keynumpad7!', 'keynumpad8!', 'keynumpad9!', + 'keyo!', 'keyp!', 'keypagedown!', 'keypageup!', + 'keypause!', 'keyperiod!', 'keyprintscreen!', 'keyq!', + 'keyquote!', 'keyr!', 'keyrightarrow!', 'keyrightbracket!', + 'keyrightbutton!', 'keyrightwindows!', 'keys!', 'keyscrolllock!', + 'keysemicolon!', 'keyshift!', 'keyslash!', 'keyspacebar!', + 'keysubtract!', 'keyt!', 'keytab!', 'keyu!', + 'keyuparrow!', 'keyv!', 'keyw!', 'keyword!', + 'keyx!', 'keyy!', 'keyz!', 'languageafrikaans!', + 'languagealbanian!', 'languagearabicalgeria!', 'languagearabicbahrain!', + 'languagearabicegypt!', + 'languagearabiciraq!', 'languagearabicjordan!', 'languagearabickuwait!', + 'languagearabiclebanon!', + 'languagearabiclibya!', 'languagearabicmorocco!', 'languagearabicoman!', + 'languagearabicqatar!', + 'languagearabicsaudiarabia!', 'languagearabicsyria!', 'languagearabictunisia!', + 'languagearabicuae!', + 'languagearabicyemen!', 'languagebasque!', 'languagebulgarian!', 'languagebyelorussian!', + 'languagecatalan!', 'languagechinese!', 'languagechinesehongkong!', 'languagechinesesimplified!', + 'languagechinesesingapore!', 'languagechinesetraditional!', 'languagecroatian!', 'languageczech!', + 'languagedanish!', 'languagedutch!', 'languagedutchbelgian!', 'languagedutchneutral!', + 'languageenglish!', 'languageenglishaustralian!', 'languageenglishcanadian!', + 'languageenglishirish!', + 'languageenglishnewzealand!', 'languageenglishsouthafrica!', 'languageenglishuk!', + 'languageenglishus!', + 'languageestonian!', 'languagefaeroese!', 'languagefarsi!', 'languagefinnish!', + 'languagefrench!', 'languagefrenchbelgian!', 'languagefrenchcanadian!', 'languagefrenchluxembourg!', + 'languagefrenchneutral!', 'languagefrenchswiss!', 'languagegerman!', 'languagegermanaustrian!', + 'languagegermanliechtenstein!', 'languagegermanluxembourg!', 'languagegermanneutral!', + 'languagegermanswiss!', + 'languagegreek!', 'languagehebrew!', 'languagehindi!', 'languagehungarian!', + 'languageicelandic!', 'languageindonesian!', 'languageitalian!', 'languageitalianneutral!', + 'languageitalianswiss!', 'languagejapanese!', 'languagekorean!', 'languagekoreanjohab!', + 'languagelatvian!', 'languagelithuanian!', 'languagemacedonian!', 'languagemaltese!', + 'languageneutral!', 'languagenorwegian!', 'languagenorwegianbokmal!', 'languagenorwegiannynorsk!', + 'languagepolish!', 'languageportuguese!', 'languageportuguese_brazilian!', + 'languageportugueseneutral!', + 'languagerhaetoromanic!', 'languageromanian!', 'languageromanianmoldavia!', 'languagerussian!', + 'languagerussianmoldavia!', 'languagesami!', 'languageserbian!', 'languageslovak!', + 'languageslovenian!', 'languagesorbian!', 'languagesortnative!', 'languagesortunicode!', + 'languagespanish!', 'languagespanishcastilian!', 'languagespanishmexican!', 'languagespanishmodern!', + 'languagesutu!', 'languageswedish!', 'languagesystemdefault!', 'languagethai!', + 'languagetsonga!', 'languagetswana!', 'languageturkish!', 'languageukrainian!', + 'languageurdu!', 'languageuserdefault!', 'languagevenda!', 'languagexhosa!', + 'languagezulu!', 'last!', 'layer!', 'layered!', + 'Left!', 'leftmargin!', 'line!', 'line3d!', + 'linear!', 'linecolor!', 'linedown!', 'linegraph!', + 'lineleft!', 'linemode!', 'lineright!', 'lineup!', + 'linkupdateautomatic!', 'linkupdatemanual!', 'listbox!', 'listview!', + 'listviewitem!', 'listviewlargeicon!', 'listviewlist!', 'listviewreport!', + 'listviewsmallicon!', 'lockread!', 'lockreadwrite!', 'lockwrite!', + 'log10!', 'loge!', 'long!', 'losefocus!', + 'lower!', 'lowered!', 'm68000!', 'm68020!', + 'm68030!', 'm68040!', 'maccharset!', 'macintosh!', + 'mailattach!', 'mailbcc!', 'mailbodyasfile!', 'mailcc!', + 'maildownload!', 'mailentiremessage!', 'mailenvelopeonly!', 'mailfiledescription!', + 'mailmessage!', 'mailnewsession!', 'mailnewsessionwithdownload!', 'mailole!', + 'mailolestatic!', 'mailoriginator!', 'mailrecipient!', 'mailreturnaccessdenied!', + 'mailreturnattachmentnotfound!', 'mailreturnattachmentopenfailure!', + 'mailreturnattachmentwritefailure!', 'mailreturndiskfull!', + 'mailreturnfailure!', 'mailreturninsufficientmemory!', 'mailreturninvalidmessage!', + 'mailreturnloginfailure!', + 'mailreturnmessageinuse!', 'mailreturnnomessages!', 'mailreturnsuccess!', 'mailreturntexttoolarge!', + 'mailreturntoomanyfiles!', 'mailreturntoomanyrecipients!', 'mailreturntoomanysessions!', + 'mailreturnunknownrecipient!', + 'mailreturnuserabort!', 'mailsession!', 'mailsuppressattachments!', 'mailto!', + 'main!', 'maximized!', 'mdi!', 'mdiclient!', + 'mdihelp!', 'menu!', 'menucascade!', 'menuitemtypeabout!', + 'menuitemtypeexit!', 'menuitemtypehelp!', 'menuitemtypenormal!', 'merge!', + 'message!', 'minimized!', 'mips!', 'modelexistserror!', + 'modelnotexistserror!', 'modern!', 'modified!', 'mousedown!', + 'mousemove!', 'mouseup!', 'moved!', 'multiline!', + 'multilineedit!', 'mutexcreateerror!', 'new!', 'newmodified!', + 'next!', 'nexttreeitem!', 'nextvisibletreeitem!', 'noborder!', + 'noconnectprivilege!', 'nolegend!', 'none!', 'nonvisualobject!', + 'normal!', 'nosymbol!', 'notic!', 'notmodified!', + 'notopmost!', 'notype!', 'numericmask!', 'objhandle!', + 'oem!', 'off!', 'offsite!', 'ok!', + 'okcancel!', 'olecontrol!', 'olecustomcontrol!', 'oleobject!', + 'olestorage!', 'olestream!', 'oletxnobject!', 'omcontrol!', + 'omcustomcontrol!', 'omembeddedcontrol!', 'omobject!', 'omstorage!', + 'omstream!', 'open!', 'orb!', 'original!', + 'osf1!', 'other!', 'outside!', 'oval!', + 'pagedown!', 'pageleft!', 'pageright!', 'pageup!', + 'parenttreeitem!', 'pbtocppobject!', 'pentium!', 'percentage!', + 'picture!', 'picturebutton!', 'picturehyperlink!', 'picturelistbox!', + 'pictureselected!', 'pie3d!', 'piegraph!', 'pipeend!', + 'pipeline!', 'pipemeter!', 'pipestart!', 'popup!', + 'powerobject!', 'powerpc!', 'powerrs!', 'ppc601!', + 'ppc603!', 'ppc604!', 'previewdelete!', 'previewfunctionreselectrow!', + 'previewfunctionretrieve!', 'previewfunctionupdate!', 'previewinsert!', 'previewselect!', + 'previewupdate!', 'previoustreeitem!', 'previousvisibletreeitem!', 'primary!', + 'printend!', 'printfooter!', 'printheader!', 'printpage!', + 'printstart!', 'prior!', 'private!', 'process!', + 'profilecall!', 'profileclass!', 'profileline!', 'profileroutine!', + 'profiling!', 'protected!', 'psreport!', 'public!', + 'question!', 'radiobutton!', 'raised!', 'rbuttondown!', + 'rbuttonup!', 'read!', 'readonlyargument!', 'real!', + 'rectangle!', 'regbinary!', 'regexpandstring!', 'reglink!', + 'regmultistring!', 'regstring!', 'regulong!', 'regulongbigendian!', + 'remoteexec!', 'remotehotlinkstart!', 'remotehotlinkstop!', 'remoteobject!', + 'remoterequest!', 'remotesend!', 'rename!', 'replace!', + 'resize!', 'resizeborder!', 'response!', 'resultset!', + 'resultsets!', 'retrieveend!', 'retrieverow!', 'retrievestart!', + 'retrycancel!', 'richtextedit!', 'Right!', 'rightclicked!', + 'rightdoubleclicked!', 'rightmargin!', 'rnddays!', 'rnddefault!', + 'rndhours!', 'rndmicroseconds!', 'rndminutes!', 'rndmonths!', + 'rndnumber!', 'rndseconds!', 'rndyears!', 'roman!', + 'roottreeitem!', 'roundrectangle!', 'routineesql!', 'routineevent!', + 'routinefunction!', 'routinegarbagecollection!', 'routineobjectcreation!', + 'routineobjectdestruction!', + 'routineroot!', 'rowfocuschanged!', 'russiancharset!', 'save!', + 'scalartype!', 'scattergraph!', 'script!', 'scriptdefinition!', + 'scriptevent!', 'scriptfunction!', 'scrollhorizontal!', 'scrollvertical!', + 'selected!', 'selectionchanged!', 'selectionchanging!', 'series!', + 'service!', 'shade!', 'shadowbox!', 'shared!', + 'sharedobjectcreateinstanceerror!', 'sharedobjectcreatepbsessionerror!', + 'sharedobjectexistserror!', 'sharedobjectnotexistserror!', + 'shiftjis!', 'show!', 'simpletype!', 'simpletypedefinition!', + 'singlelineedit!', 'size!', 'sizenesw!', 'sizens!', + 'sizenwse!', 'sizewe!', 'sol2!', 'solid!', + 'sort!', 'sourcepblerror!', 'spacing1!', 'spacing15!', + 'spacing2!', 'sparc!', 'sqlinsert!', 'sqlpreview!', + 'square!', 'sslcallback!', 'sslserviceprovider!', 'statichyperlink!', + 'statictext!', 'stgdenynone!', 'stgdenyread!', 'stgdenywrite!', + 'stgexclusive!', 'stgread!', 'stgreadwrite!', 'stgwrite!', + 'stopsign!', 'straddle!', 'streammode!', 'stretch!', + 'strikeout!', 'string!', 'stringmask!', 'structure!', + 'stylebox!', 'stylelowered!', 'styleraised!', 'styleshadowbox!', + 'subscript!', 'success!', 'superscript!', 'swiss!', + 'sylk!', 'symbol!', 'symbolhollowbox!', 'symbolhollowcircle!', + 'symbolhollowdiamond!', 'symbolhollowdownarrow!', 'symbolhollowuparrow!', 'symbolplus!', + 'symbolsolidbox!', 'symbolsolidcircle!', 'symbolsoliddiamond!', 'symbolsoliddownarrow!', + 'symbolsoliduparrow!', 'symbolstar!', 'symbolx!', 'system!', + 'systemerror!', 'systemfunctions!', 'systemkey!', 'tab!', + 'tabsonbottom!', 'tabsonbottomandtop!', 'tabsonleft!', 'tabsonleftandright!', + 'tabsonright!', 'tabsonrightandleft!', 'tabsontop!', 'tabsontopandbottom!', + 'text!', 'thaicharset!', 'thread!', 'tile!', + 'tilehorizontal!', 'time!', 'timemask!', 'timer!', + 'timernone!', 'timing!', 'tobottom!', 'toolbarmoved!', + 'top!', 'topic!', 'topmost!', 'totop!', + 'traceactivitynode!', 'traceatomic!', 'tracebeginend!', 'traceerror!', + 'traceesql!', 'tracefile!', 'tracegarbagecollect!', 'tracegeneralerror!', + 'tracein!', 'traceline!', 'tracenomorenodes!', 'tracenotstartederror!', + 'traceobject!', 'traceout!', 'traceroutine!', 'tracestartederror!', + 'tracetree!', 'tracetreeerror!', 'tracetreeesql!', 'tracetreegarbagecollect!', + 'tracetreeline!', 'tracetreenode!', 'tracetreeobject!', 'tracetreeroutine!', + 'tracetreeuser!', 'traceuser!', 'transaction!', 'transactionserver!', + 'transparent!', 'transport!', 'treeview!', 'treeviewitem!', + 'turkishcharset!', 'typeboolean!', 'typecategory!', 'typecategoryaxis!', + 'typecategorylabel!', 'typedata!', 'typedate!', 'typedatetime!', + 'typedecimal!', 'typedefinition!', 'typedouble!', 'typegraph!', + 'typeinteger!', 'typelegend!', 'typelong!', 'typereal!', + 'typeseries!', 'typeseriesaxis!', 'typeserieslabel!', 'typestring!', + 'typetime!', 'typetitle!', 'typeuint!', 'typeulong!', + 'typeunknown!', 'typevalueaxis!', 'typevaluelabel!', 'ultrasparc!', + 'unboundedarray!', 'underline!', 'underlined!', 'unsignedinteger!', + 'unsignedlong!', 'unsorted!', 'uparrow!', 'updateend!', + 'updatestart!', 'upper!', 'userdefinedsort!', 'userobject!', + 'variable!', 'variableargument!', 'variablecardinalitydefinition!', 'variabledefinition!', + 'variableglobal!', 'variableinstance!', 'variablelocal!', 'variableshared!', + 'varlistargument!', 'vbxvisual!', 'vcenter!', 'vertical!', + 'vietnamesecharset!', 'viewchange!', 'vprogressbar!', 'vscrollbar!', + 'vticksonboth!', 'vticksonleft!', 'vticksonneither!', 'vticksonright!', + 'vtrackbar!', 'window!', 'windowmenu!', 'windowobject!', + 'windows!', 'windowsnt!', 'wk1!', 'wks!', + 'wmf!', 'write!', 'xpixelstounits!', 'xunitstopixels!', + 'xvalue!', 'yesno!', 'yesnocancel!', 'ypixelstounits!', + 'yunitstopixels!', + 'yvalue!', + 'zoom!' + ) + ), + 'SYMBOLS' => array( + 0 => array('(', ')', '[', ']', '{', '}'), + 1 => array('|'), + 2 => array('+', '-', '*', '/'), + 3 => array('=', '<', '>', '^') + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #008000; font-weight: bold;', + 2 => 'color: #990099; font-weight: bold;', + 3 => 'color: #330099; font-weight: bold;' + ), + 'COMMENTS' => array( + 1 => 'color: #0000ff; font-weight: bold;', + 'MULTI' => 'color: #0000ff; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #000000;' + ), + 'STRINGS' => array( + 0 => 'color: #800000;' + ), + 'NUMBERS' => array( + 0 => 'color: #330099; font-weight: bold;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #000000;', + 1 => 'color: #ffff00; background-color:#993300; font-weight: bold', + 2 => 'color: #000000;', + 3 => 'color: #000000;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #800000; font-weight: bold;' + ), + 'SCRIPT' => array( + ), + 'REGEXPS' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/powershell.php b/inc/geshi/powershell.php index e427059d3..c90538809 100644 --- a/inc/geshi/powershell.php +++ b/inc/geshi/powershell.php @@ -4,7 +4,7 @@ * --------------------------------- * Author: Frode Aarebrot (frode@aarebrot.net) * Copyright: (c) 2008 Frode Aarebrot (http://www.aarebrot.net) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/06/20 * * PowerShell language file for GeSHi. @@ -49,7 +49,7 @@ $language_data = array ( 'LANG_NAME' => 'PowerShell', 'COMMENT_SINGLE' => array(1 => '#'), - 'COMMENT_MULTI' => array(), + 'COMMENT_MULTI' => array('<#' => '#>'), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array("'", '"'), 'ESCAPE_CHAR' => '`', diff --git a/inc/geshi/progress.php b/inc/geshi/progress.php index 2d6024e74..90c3bf0fa 100644 --- a/inc/geshi/progress.php +++ b/inc/geshi/progress.php @@ -4,7 +4,7 @@ * -------- * Author: Marco Aurelio de Pasqual (marcop@hdi.com.br) * Copyright: (c) 2008 Marco Aurelio de Pasqual, Benny Baumann (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/07/11 * * Progress language file for GeSHi. diff --git a/inc/geshi/prolog.php b/inc/geshi/prolog.php index fa9e03a63..4dd01ff7e 100644 --- a/inc/geshi/prolog.php +++ b/inc/geshi/prolog.php @@ -4,7 +4,7 @@ * -------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/10/02 * * Prolog language file for GeSHi. @@ -130,7 +130,7 @@ $language_data = array ( ), 'REGEXPS' => array( //Variables - 0 => "(?<![A-Z_])(?!(?:PIPE|SEMI)[^a-zA-Z0-9_])[A-Z_][a-zA-Z0-9_]*(?![a-zA-Z0-9_])" + 0 => "(?<![a-zA-Z0-9_])(?!(?:PIPE|SEMI|DOT)[^a-zA-Z0-9_])[A-Z_][a-zA-Z0-9_]*(?![a-zA-Z0-9_])(?!\x7C)" ), 'STRICT_MODE_APPLIES' => GESHI_NEVER, 'SCRIPT_DELIMITERS' => array( @@ -140,4 +140,4 @@ $language_data = array ( 'TAB_WIDTH' => 4 ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/properties.php b/inc/geshi/properties.php new file mode 100644 index 000000000..9fc8b8da4 --- /dev/null +++ b/inc/geshi/properties.php @@ -0,0 +1,127 @@ +<?php +/************************************************************************************* + * properties.php + * -------- + * Author: Edy Hinzen + * Copyright: (c) 2009 Edy Hinzen + * Release Version: 1.0.8.8 + * Date Started: 2009/04/03 + * + * Property language file for GeSHi. + * + * CHANGES + * ------- + * 2008/04/03 (1.0.0) + * - First Release + * + * TODO + * ------------------------- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'PROPERTIES', + 'COMMENT_SINGLE' => array(1 => '#'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + /* Common used variables */ + 1 => array( + '${user.home}' + ), + ), + 'SYMBOLS' => array( + '[', ']', '=' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'font-weight: bold;', + ), + 'COMMENTS' => array( + 1 => 'color: #808080; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => '' + ), + 'BRACKETS' => array( + 0 => '' + ), + 'STRINGS' => array( + 0 => 'color: #933;' + ), + 'NUMBERS' => array( + 0 => '' + ), + 'METHODS' => array( + 0 => '' + ), + 'SYMBOLS' => array( + 0 => 'color: #000000;' + ), + 'REGEXPS' => array( + 0 => 'color: #000080; font-weight:bold;', + 1 => 'color: #008000; font-weight:bold;' + ), + 'SCRIPT' => array( + 0 => '' + ) + ), + 'URLS' => array( + 1 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + //Entry names + 0 => array( + GESHI_SEARCH => '^(\s*)([.a-zA-Z0-9_\-]+)(\s*=)', + GESHI_REPLACE => '\\2', + GESHI_MODIFIERS => 'm', + GESHI_BEFORE => '\\1', + GESHI_AFTER => '\\3' + ), + //Entry values + 1 => array( + // Evil hackery to get around GeSHi bug: <>" and ; are added so <span>s can be matched + // Explicit match on variable names because if a comment is before the first < of the span + // gets chewed up... + GESHI_SEARCH => '([<>";a-zA-Z0-9_]+\s*)=(.*)', + GESHI_REPLACE => '\\2', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '\\1=', + GESHI_AFTER => '' + ) + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/providex.php b/inc/geshi/providex.php index f24a57d18..0352ac2a1 100644 --- a/inc/geshi/providex.php +++ b/inc/geshi/providex.php @@ -4,7 +4,7 @@ * ---------- * Author: Jeff Wilder (jeff@coastallogix.com) * Copyright: (c) 2008 Coastal Logix (http://www.coastallogix.com) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/10/18 * * ProvideX language file for GeSHi. diff --git a/inc/geshi/purebasic.php b/inc/geshi/purebasic.php new file mode 100644 index 000000000..b24986f57 --- /dev/null +++ b/inc/geshi/purebasic.php @@ -0,0 +1,303 @@ +<?php +/************************************************************************************* + * purebasic.php + * ------- + * Author: GuShH + * Copyright: (c) 2009 Gustavo Julio Fiorenza + * Release Version: 1.0.8.8 + * Date Started: 13/06/2009 + * + * PureBasic language file for GeSHi. + * + * CHANGES + * ------- + * 13/06/2009 (1.0.0) + * - First Release + * + * TODO (updated 2009/06/13) + * ------------------------- + * Add the remaining ASM mnemonics and the 4.3x functions/etc. + * Better coloring (perhaps match the default scheme of PB?) + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'PureBasic', + 'COMMENT_SINGLE' => array( 1 => ";" ), + 'COMMENT_MULTI' => array( ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + // Keywords + 'And', 'As', 'Break', 'CallDebugger', 'Case', 'CompilerCase', 'CompilerDefault', 'CompilerElse', 'CompilerEndIf', 'CompilerEndSelect', + 'CompilerError', 'CompilerIf', 'CompilerSelect', 'Continue', 'Data', 'DataSection', 'EndDataSection', 'Debug', 'DebugLevel', 'Declare', + 'DeclareCDLL', 'DeclareDLL', 'Default', 'Define', 'Dim', 'DisableASM', 'DisableDebugger', 'DisableExplicit', 'Else', 'ElseIf', 'EnableASM', + 'EnableDebugger', 'EnableExplicit', 'End', 'EndEnumeration', 'EndIf', 'EndImport', 'EndInterface', 'EndMacro', 'EndProcedure', + 'EndSelect', 'EndStructure', 'EndStructureUnion', 'EndWith', 'Enumeration', 'Extends', 'FakeReturn', 'For', 'Next', 'ForEach', + 'ForEver', 'Global', 'Gosub', 'Goto', 'If', 'Import', 'ImportC', 'IncludeBinary', 'IncludeFile', 'IncludePath', 'Interface', 'Macro', + 'NewList', 'Not', 'Or', 'Procedure', 'ProcedureC', 'ProcedureCDLL', 'ProcedureDLL', 'ProcedureReturn', 'Protected', 'Prototype', + 'PrototypeC', 'Read', 'ReDim', 'Repeat', 'Until', 'Restore', 'Return', 'Select', 'Shared', 'Static', 'Step', 'Structure', 'StructureUnion', + 'Swap', 'To', 'Wend', 'While', 'With', 'XIncludeFile', 'XOr' + ), + 2 => array( + // All Functions + 'Abs', 'ACos', 'Add3DArchive', 'AddBillboard', 'AddDate', 'AddElement', 'AddGadgetColumn', 'AddGadgetItem', + 'AddKeyboardShortcut', 'AddMaterialLayer', 'AddPackFile', 'AddPackMemory', 'AddStatusBarField', 'AddSysTrayIcon', + 'AllocateMemory', 'AmbientColor', 'AnimateEntity', 'Asc', 'ASin', 'ATan', 'AudioCDLength', 'AudioCDName', 'AudioCDStatus', + 'AudioCDTrackLength', 'AudioCDTracks', 'AudioCDTrackSeconds', 'AvailableProgramOutput', 'AvailableScreenMemory', + 'BackColor', 'Base64Decoder', 'Base64Encoder', 'BillboardGroupLocate', 'BillboardGroupMaterial', 'BillboardGroupX', + 'BillboardGroupY', 'BillboardGroupZ', 'BillboardHeight', 'BillboardLocate', 'BillboardWidth', 'BillboardX', 'BillboardY', 'BillboardZ', + 'Bin', 'BinQ', 'Blue', 'Box', 'ButtonGadget', 'ButtonImageGadget', 'CalendarGadget', 'CallCFunction', 'CallCFunctionFast', + 'CallFunction', 'CallFunctionFast', 'CameraBackColor', 'CameraFOV', 'CameraLocate', 'CameraLookAt', 'CameraProjection', + 'CameraRange', 'CameraRenderMode', 'CameraX', 'CameraY', 'CameraZ', 'CatchImage', 'CatchSound', 'CatchSprite', + 'CatchXML', 'ChangeAlphaIntensity', 'ChangeCurrentElement', 'ChangeGamma', 'ChangeListIconGadgetDisplay', + 'ChangeSysTrayIcon', 'CheckBoxGadget', 'CheckEntityCollision', 'CheckFilename', 'ChildXMLNode', 'Chr', 'Circle', + 'ClearBillboards', 'ClearClipboard', 'ClearConsole', 'ClearError', 'ClearGadgetItemList', 'ClearList', 'ClearScreen', 'ClipSprite', + 'CloseConsole', 'CloseDatabase', 'CloseFile', 'CloseGadgetList', 'CloseHelp', 'CloseLibrary', 'CloseNetworkConnection', + 'CloseNetworkServer', 'ClosePack', 'ClosePreferences', 'CloseProgram', 'CloseScreen', 'CloseSubMenu', 'CloseWindow', + 'ColorRequester', 'ComboBoxGadget', 'CompareMemory', 'CompareMemoryString', 'ConnectionID', 'ConsoleColor', + 'ConsoleCursor', 'ConsoleError', 'ConsoleLocate', 'ConsoleTitle', 'ContainerGadget', 'CopyDirectory', 'CopyEntity', + 'CopyFile', 'CopyImage', 'CopyLight', 'CopyMaterial', 'CopyMemory', 'CopyMemoryString', 'CopyMesh', 'CopySprite', + 'CopyTexture', 'CopyXMLNode', 'Cos', 'CountBillboards', 'CountGadgetItems', 'CountLibraryFunctions', 'CountList', + 'CountMaterialLayers', 'CountProgramParameters', 'CountRenderedTriangles', 'CountString', 'CRC32Fingerprint', + 'CreateBillboardGroup', 'CreateCamera', 'CreateDirectory', 'CreateEntity', 'CreateFile', 'CreateGadgetList', + 'CreateImage', 'CreateLight', 'CreateMaterial', 'CreateMenu', 'CreateMesh', 'CreateMutex', 'CreateNetworkServer', + 'CreatePack', 'CreatePalette', 'CreateParticleEmitter', 'CreatePopupMenu', 'CreatePreferences', 'CreateSprite', + 'CreateSprite3D', 'CreateStatusBar', 'CreateTerrain', 'CreateTexture', 'CreateThread', 'CreateToolBar', 'CreateXML', + 'CreateXMLNode', 'DatabaseColumnName', 'DatabaseColumns', 'DatabaseColumnType', 'DatabaseDriverDescription', + 'DatabaseDriverName', 'DatabaseError', 'DatabaseQuery', 'DatabaseUpdate', 'Date', 'DateGadget', 'Day', 'DayOfWeek', + 'DayOfYear', 'DefaultPrinter', 'Defined', 'Delay', 'DeleteDirectory', 'DeleteElement', 'DeleteFile', 'DeleteXMLNode', + 'DESFingerprint', 'DesktopDepth', 'DesktopFrequency', 'DesktopHeight', 'DesktopMouseX', 'DesktopMouseY', 'DesktopName', + 'DesktopWidth', 'DirectoryEntryAttributes', 'DirectoryEntryDate', 'DirectoryEntryName', 'DirectoryEntrySize', + 'DirectoryEntryType', 'DisableGadget', 'DisableMaterialLighting', 'DisableMenuItem', 'DisableToolBarButton', 'DisableWindow', + 'DisASMCommand', 'DisplayAlphaSprite', 'DisplayPalette', 'DisplayPopupMenu', 'DisplayRGBFilter', 'DisplayShadowSprite', + 'DisplaySolidSprite', 'DisplaySprite', 'DisplaySprite3D', 'DisplayTranslucentSprite', 'DisplayTransparentSprite', 'DragFiles', + 'DragImage', 'DragOSFormats', 'DragPrivate', 'DragText', 'DrawAlphaImage', 'DrawImage', 'DrawingBuffer', + 'DrawingBufferPitch', 'DrawingBufferPixelFormat', 'DrawingFont', 'DrawingMode', 'DrawText', 'EditorGadget', + 'egrid_AddColumn', 'egrid_AddRows', 'egrid_AppendCells', 'egrid_ClearRows', 'egrid_CopyCells', + 'egrid_CreateCellCallback', 'egrid_CreateGrid', 'egrid_DeleteCells', 'egrid_FastDeleteCells', 'egrid_FreeGrid', + 'egrid_GetCellSelection', 'egrid_GetCellText', 'egrid_GetColumnOrderArray', 'egrid_HasSelectedCellChanged', 'egrid_Height', + 'egrid_HideEdit', 'egrid_HideGrid', 'egrid_MakeCellVisible', 'egrid_NumberOfColumns', 'egrid_NumberOfRows', + 'egrid_PasteCells', 'egrid_Register', 'egrid_RemoveCellCallback', 'egrid_RemoveColumn', 'egrid_RemoveRow', 'egrid_Resize', + 'egrid_SelectCell', 'egrid_SelectedColumn', 'egrid_SelectedRow', 'egrid_SetCellSelection', 'egrid_SetCellText', + 'egrid_SetColumnOrderArray', 'egrid_SetHeaderFont', 'egrid_SetHeaderHeight', 'egrid_SetOption', 'egrid_Width', 'egrid_x', + 'egrid_y', 'EjectAudioCD', 'ElapsedMilliseconds', 'Ellipse', 'EnableGadgetDrop', 'EnableGraphicalConsole', + 'EnableWindowDrop', 'EnableWorldCollisions', 'EnableWorldPhysics', 'Engine3DFrameRate', 'EntityAngleX', + 'EntityAnimationLength', 'EntityLocate', 'EntityMaterial', 'EntityMesh', 'EntityPhysicBody', 'EntityRenderMode', + 'EntityX', 'EntityY', 'EntityZ', 'EnvironmentVariableName', 'EnvironmentVariableValue', 'Eof', 'EventClient', + 'EventDropAction', 'EventDropBuffer', 'EventDropFiles', 'EventDropImage', 'EventDropPrivate', 'EventDropSize', + 'EventDropText', 'EventDropType', 'EventDropX', 'EventDropY', 'EventGadget', 'EventlParam', 'EventMenu', 'EventServer', + 'EventType', 'EventWindow', 'EventwParam', 'ExamineDatabaseDrivers', 'ExamineDesktops', 'ExamineDirectory', + 'ExamineEnvironmentVariables', 'ExamineIPAddresses', 'ExamineJoystick', 'ExamineKeyboard', 'ExamineLibraryFunctions', + 'ExamineMouse', 'ExaminePreferenceGroups', 'ExaminePreferenceKeys', 'ExamineScreenModes', 'ExamineWorldCollisions', + 'ExamineXMLAttributes', 'ExplorerComboGadget', 'ExplorerListGadget', 'ExplorerTreeGadget', 'ExportXML', + 'ExportXMLSize', 'FileBuffersSize', 'FileID', 'FileSeek', 'FileSize', 'FillArea', 'FindString', 'FinishDirectory', + 'FirstDatabaseRow', 'FirstElement', 'FirstWorldCollisionEntity', 'FlipBuffers', 'FlushFileBuffers', 'Fog', 'FontID', + 'FontRequester', 'FormatDate', 'FormatXML', 'Frame3DGadget', 'FreeBillboardGroup', 'FreeCamera', 'FreeEntity', + 'FreeFont', 'FreeGadget', 'FreeImage', 'FreeLight', 'FreeMaterial', 'FreeMemory', 'FreeMenu', 'FreeMesh', + 'FreeModule', 'FreeMovie', 'FreeMutex', 'FreePalette', 'FreeParticleEmitter', 'FreeSound', 'FreeSprite', + 'FreeSprite3D', 'FreeStatusBar', 'FreeTexture', 'FreeToolBar', 'FreeXML', 'FrontColor', 'GadgetHeight', 'GadgetID', + 'GadgetItemID', 'GadgetToolTip', 'GadgetType', 'GadgetWidth', 'GadgetX', 'GadgetY', 'GetActiveGadget', + 'GetActiveWindow', 'GetClientIP', 'GetClientPort', 'GetClipboardImage', 'GetClipboardText', 'GetCurrentDirectory', + 'GetCurrentEIP', 'GetDatabaseDouble', 'GetDatabaseFloat', 'GetDatabaseLong', 'GetDatabaseQuad', 'GetDatabaseString', + 'GetDisASMString', 'GetEntityAnimationTime', 'GetEntityFriction', 'GetEntityMass', 'GetEnvironmentVariable', + 'GetErrorAddress', 'GetErrorCounter', 'GetErrorDescription', 'GetErrorDLL', 'GetErrorLineNR', 'GetErrorModuleName', + 'GetErrorNumber', 'GetErrorRegister', 'GetExtensionPart', 'GetFileAttributes', 'GetFileDate', 'GetFilePart', 'GetFunction', + 'GetFunctionEntry', 'GetGadgetAttribute', 'GetGadgetColor', 'GetGadgetData', 'GetGadgetFont', + 'GetGadgetItemAttribute', 'GetGadgetItemColor', 'GetGadgetItemData', 'GetGadgetItemState', 'GetGadgetItemText', + 'GetGadgetState', 'GetGadgetText', 'GetHomeDirectory', 'GetMenuItemState', 'GetMenuItemText', 'GetMenuTitleText', + 'GetModulePosition', 'GetModuleRow', 'GetPaletteColor', 'GetPathPart', 'GetTemporaryDirectory', + 'GetToolBarButtonState', 'GetWindowColor', 'GetWindowState', 'GetWindowTitle', 'GetXMLAttribute', 'GetXMLEncoding', + 'GetXMLNodeName', 'GetXMLNodeOffset', 'GetXMLNodeText', 'GetXMLStandalone', 'GoToEIP', 'GrabImage', 'GrabSprite', + 'Green', 'Hex', 'HexQ', 'HideBillboardGroup', 'HideEntity', 'HideGadget', 'HideLight', 'HideMenu', 'HideParticleEmitter', + 'HideWindow', 'Hostname', 'Hour', 'HyperLinkGadget', 'ImageDepth', 'ImageGadget', 'ImageHeight', 'ImageID', + 'ImageOutput', 'ImageWidth', 'InitAudioCD', 'InitEngine3D', 'InitJoystick', 'InitKeyboard', 'InitMouse', 'InitMovie', + 'InitNetwork', 'InitPalette', 'InitScintilla', 'InitSound', 'InitSprite', 'InitSprite3D', 'Inkey', 'Input', 'InputRequester', + 'InsertElement', 'Int', 'IntQ', 'IPAddressField', 'IPAddressGadget', 'IPString', 'IsBillboardGroup', 'IsCamera', 'IsDatabase', + 'IsDirectory', 'IsEntity', 'IsFile', 'IsFont', 'IsGadget', 'IsImage', 'IsLibrary', 'IsLight', 'IsMaterial', 'IsMenu', 'IsMesh', + 'IsModule', 'IsMovie', 'IsPalette', 'IsParticleEmitter', 'IsProgram', 'IsScreenActive', 'IsSound', 'IsSprite', 'IsSprite3D', + 'IsStatusBar', 'IsSysTrayIcon', 'IsTexture', 'IsThread', 'IsToolBar', 'IsWindow', 'IsXML', 'JoystickAxisX', 'JoystickAxisY', + 'JoystickButton', 'KeyboardInkey', 'KeyboardMode', 'KeyboardPushed', 'KeyboardReleased', 'KillProgram', 'KillThread', + 'LastElement', 'LCase', 'Left', 'Len', 'LibraryFunctionAddress', 'LibraryFunctionName', 'LibraryID', 'LightColor', + 'LightLocate', 'LightSpecularColor', 'Line', 'LineXY', 'ListIconGadget', 'ListIndex', 'ListViewGadget', 'LoadFont', + 'LoadImage', 'LoadMesh', 'LoadModule', 'LoadMovie', 'LoadPalette', 'LoadSound', 'LoadSprite', 'LoadTexture', + 'LoadWorld', 'LoadXML', 'Loc', 'LockMutex', 'Lof', 'Log', 'Log10', 'LSet', 'LTrim', 'MainXMLNode', 'MakeIPAddress', + 'MaterialAmbientColor', 'MaterialBlendingMode', 'MaterialDiffuseColor', 'MaterialFilteringMode', 'MaterialID', + 'MaterialShadingMode', 'MaterialSpecularColor', 'MD5FileFingerprint', 'MD5Fingerprint', 'MDIGadget', 'MemorySize', + 'MemoryStringLength', 'MenuBar', 'MenuHeight', 'MenuID', 'MenuItem', 'MenuTitle', 'MeshID', 'MessageRequester', + 'Mid', 'Minute', 'ModuleVolume', 'Month', 'MouseButton', 'MouseDeltaX', 'MouseDeltaY', 'MouseLocate', 'MouseWheel', + 'MouseX', 'MouseY', 'MoveBillboard', 'MoveBillboardGroup', 'MoveCamera', 'MoveEntity', 'MoveLight', 'MoveMemory', + 'MoveParticleEmitter', 'MoveXMLNode', 'MovieAudio', 'MovieHeight', 'MovieInfo', 'MovieLength', 'MovieSeek', + 'MovieStatus', 'MovieWidth', 'NetworkClientEvent', 'NetworkServerEvent', 'NewPrinterPage', 'NextDatabaseDriver', + 'NextDatabaseRow', 'NextDirectoryEntry', 'NextElement', 'NextEnvironmentVariable', 'NextIPAddress', + 'NextLibraryFunction', 'NextPackFile', 'NextPreferenceGroup', 'NextPreferenceKey', 'NextScreenMode', + 'NextSelectedFileName', 'NextWorldCollision', 'NextXMLAttribute', 'NextXMLNode', 'OffsetOf', 'OnErrorExit', + 'OnErrorGosub', 'OnErrorGoto', 'OnErrorResume', 'OpenComPort', 'OpenConsole', 'OpenDatabase', + 'OpenDatabaseRequester', 'OpenFile', 'OpenFileRequester', 'OpenGadgetList', 'OpenHelp', 'OpenLibrary', + 'OpenNetworkConnection', 'OpenPack', 'OpenPreferences', 'OpenScreen', 'OpenSubMenu', 'OpenWindow', + 'OpenWindowedScreen', 'OptionGadget', 'OSVersion', 'PackerCallback', 'PackFileSize', 'PackMemory', 'PanelGadget', + 'ParentXMLNode', 'Parse3DScripts', 'ParseDate', 'ParticleColorFader', 'ParticleColorRange', 'ParticleEmissionRate', + 'ParticleEmitterDirection', 'ParticleEmitterLocate', 'ParticleEmitterX', 'ParticleEmitterY', 'ParticleEmitterZ', + 'ParticleMaterial', 'ParticleSize', 'ParticleTimeToLive', 'ParticleVelocity', 'PathRequester', 'PauseAudioCD', + 'PauseMovie', 'PauseThread', 'PeekB', 'PeekC', 'PeekD', 'PeekF', 'PeekL', 'PeekQ', 'PeekS', 'PeekW', 'PlayAudioCD', + 'PlayModule', 'PlayMovie', 'PlaySound', 'Plot', 'Point', 'PokeB', 'PokeC', 'PokeD', 'PokeF', 'PokeL', 'PokeQ', 'PokeS', + 'PokeW', 'Pow', 'PreferenceComment', 'PreferenceGroup', 'PreferenceGroupName', 'PreferenceKeyName', + 'PreferenceKeyValue', 'PreviousDatabaseRow', 'PreviousElement', 'PreviousXMLNode', 'Print', 'PrinterOutput', + 'PrinterPageHeight', 'PrinterPageWidth', 'PrintN', 'PrintRequester', 'ProgramExitCode', 'ProgramFilename', + 'ProgramID', 'ProgramParameter', 'ProgramRunning', 'ProgressBarGadget', 'Random', 'RandomSeed', 'RawKey', + 'ReadByte', 'ReadCharacter', 'ReadConsoleData', 'ReadData', 'ReadDouble', 'ReadFile', 'ReadFloat', 'ReadLong', + 'ReadPreferenceDouble', 'ReadPreferenceFloat', 'ReadPreferenceLong', 'ReadPreferenceQuad', + 'ReadPreferenceString', 'ReadProgramData', 'ReadProgramError', 'ReadProgramString', 'ReadQuad', 'ReadString', + 'ReadStringFormat', 'ReadWord', 'ReAllocateMemory', 'ReceiveNetworkData', 'ReceiveNetworkFile', 'Red', + 'Reg_DeleteEmptyKey', 'Reg_DeleteKey', 'Reg_DeleteValue', 'Reg_GetErrorMsg', 'Reg_GetErrorNr', + 'Reg_GetValueTyp', 'Reg_ListSubKey', 'Reg_ListSubValue', 'Reg_ReadBinary', 'Reg_ReadExpandString', + 'Reg_ReadLong', 'Reg_ReadMultiLineString', 'Reg_ReadQuad', 'Reg_ReadString', 'Reg_WriteBinary', + 'Reg_WriteExpandString', 'Reg_WriteLong', 'Reg_WriteMultiLineString', 'Reg_WriteQuad', 'Reg_WriteString', + 'ReleaseMouse', 'RemoveBillboard', 'RemoveEnvironmentVariable', 'RemoveGadgetColumn', 'RemoveGadgetItem', + 'RemoveKeyboardShortcut', 'RemoveMaterialLayer', 'RemovePreferenceGroup', 'RemovePreferenceKey', + 'RemoveString', 'RemoveSysTrayIcon', 'RemoveXMLAttribute', 'RenameFile', 'RenderMovieFrame', 'RenderWorld', + 'ReplaceString', 'ResetList', 'ResizeBillboard', 'ResizeEntity', 'ResizeGadget', 'ResizeImage', 'ResizeMovie', + 'ResizeParticleEmitter', 'ResizeWindow', 'ResolveXMLAttributeName', 'ResolveXMLNodeName', 'ResumeAudioCD', + 'ResumeMovie', 'ResumeThread', 'RGB', 'Right', 'RootXMLNode', 'RotateBillboardGroup', 'RotateCamera', + 'RotateEntity', 'RotateMaterial', 'RotateSprite3D', 'Round', 'RSet', 'RTrim', 'RunProgram', 'SaveFileRequester', + 'SaveImage', 'SaveSprite', 'SaveXML', 'ScaleEntity', 'ScaleMaterial', 'ScintillaGadget', 'ScintillaSendMessage', + 'ScreenID', 'ScreenModeDepth', 'ScreenModeHeight', 'ScreenModeRefreshRate', 'ScreenModeWidth', + 'ScreenOutput', 'ScrollAreaGadget', 'ScrollBarGadget', 'ScrollMaterial', 'Second', 'SecondWorldCollisionEntity', + 'SelectedFilePattern', 'SelectedFontColor', 'SelectedFontName', 'SelectedFontSize', 'SelectedFontStyle', + 'SelectElement', 'SendNetworkData', 'SendNetworkFile', 'SendNetworkString', 'SetActiveGadget', + 'SetActiveWindow', 'SetClipboardImage', 'SetClipboardText', 'SetCurrentDirectory', 'SetDragCallback', + 'SetDropCallback', 'SetEntityAnimationTime', 'SetEntityFriction', 'SetEntityMass', 'SetEnvironmentVariable', + 'SetErrorNumber', 'SetFileAttributes', 'SetFileDate', 'SetFrameRate', 'SetGadgetAttribute', 'SetGadgetColor', + 'SetGadgetData', 'SetGadgetFont', 'SetGadgetItemAttribute', 'SetGadgetItemColor', 'SetGadgetItemData', + 'SetGadgetItemState', 'SetGadgetItemText', 'SetGadgetState', 'SetGadgetText', 'SetMenuItemState', + 'SetMenuItemText', 'SetMenuTitleText', 'SetMeshData', 'SetModulePosition', 'SetPaletteColor', 'SetRefreshRate', + 'SetToolBarButtonState', 'SetWindowCallback', 'SetWindowColor', 'SetWindowState', 'SetWindowTitle', + 'SetXMLAttribute', 'SetXMLEncoding', 'SetXMLNodeName', 'SetXMLNodeOffset', 'SetXMLNodeText', + 'SetXMLStandalone', 'Sin', 'SizeOf', 'SkyBox', 'SkyDome', 'SmartWindowRefresh', 'SortArray', 'SortList', + 'SortStructuredArray', 'SortStructuredList', 'SoundFrequency', 'SoundPan', 'SoundVolume', 'Space', + 'SpinGadget', 'SplitterGadget', 'Sprite3DBlendingMode', 'Sprite3DQuality', 'SpriteCollision', 'SpriteDepth', + 'SpriteHeight', 'SpriteID', 'SpriteOutput', 'SpritePixelCollision', 'SpriteWidth', 'Sqr', 'Start3D', 'StartDrawing', + 'StartPrinting', 'StartSpecialFX', 'StatusBarHeight', 'StatusBarIcon', 'StatusBarID', 'StatusBarText', + 'StickyWindow', 'Stop3D', 'StopAudioCD', 'StopDrawing', 'StopModule', 'StopMovie', 'StopPrinting', + 'StopSound', 'StopSpecialFX', 'Str', 'StrD', 'StrF', 'StringByteLength', 'StringField', 'StringGadget', 'StrQ', + 'StrU', 'Subsystem', 'SwapElements', 'SysTrayIconToolTip', 'Tan', 'TerrainHeight', 'TextGadget', 'TextHeight', + 'TextureHeight', 'TextureID', 'TextureOutput', 'TextureWidth', 'TextWidth', 'ThreadID', 'ThreadPriority', + 'ToolBarHeight', 'ToolBarID', 'ToolBarImageButton', 'ToolBarSeparator', 'ToolBarStandardButton', + 'ToolBarToolTip', 'TrackBarGadget', 'TransformSprite3D', 'TransparentSpriteColor', 'TreeGadget', 'Trim', + 'TruncateFile', 'TryLockMutex', 'UCase', 'UnlockMutex', 'UnpackMemory', 'UseAudioCD', 'UseBuffer', + 'UseGadgetList', 'UseJPEGImageDecoder', 'UseJPEGImageEncoder', 'UseODBCDatabase', 'UseOGGSoundDecoder', + 'UsePNGImageDecoder', 'UsePNGImageEncoder', 'UseTGAImageDecoder', 'UseTIFFImageDecoder', 'Val', 'ValD', + 'ValF', 'ValQ', 'WaitProgram', 'WaitThread', 'WaitWindowEvent', 'WebGadget', 'WebGadgetPath', 'WindowEvent', + 'WindowHeight', 'WindowID', 'WindowMouseX', 'WindowMouseY', 'WindowOutput', 'WindowWidth', 'WindowX', + 'WindowY', 'WorldGravity', 'WorldShadows', 'WriteByte', 'WriteCharacter', 'WriteConsoleData', 'WriteData', + 'WriteDouble', 'WriteFloat', 'WriteLong', 'WritePreferenceDouble', 'WritePreferenceFloat', 'WritePreferenceLong', + 'WritePreferenceQuad', 'WritePreferenceString', 'WriteProgramData', 'WriteProgramString', 'WriteProgramStringN', + 'WriteQuad', 'WriteString', 'WriteStringFormat', 'WriteStringN', 'WriteWord', 'XMLAttributeName', 'XMLAttributeValue', + 'XMLChildCount', 'XMLError', 'XMLErrorLine', 'XMLErrorPosition', 'XMLNodeFromID', 'XMLNodeFromPath', 'XMLNodePath', + 'XMLNodeType', 'XMLStatus', 'Year', 'ZoomSprite3D' + ), + 3 => array( + // some ASM instructions + 'AAA', 'AAD', 'AAM', 'AAS', 'ADC', 'ADD', 'AND', 'ARPL', 'BOUND', 'BSF', 'BSR', 'BSWAP', 'BT', 'BTC', 'BTR', + 'BTS', 'CALL', 'CBW', 'CDQ', 'CLC', 'CLD', 'CLI', 'CLTS', 'CMC', 'CMP', 'CMPS', 'CMPXCHG', 'CWD', 'CWDE', + 'DAA', 'DAS', 'DB', 'DD', 'DEC', 'DIV', 'DW', 'ENTER', 'ESC', 'F2XM1', 'FABS', 'FADD', 'FCHS', 'FCLEX', + 'FCOM', 'FDIV', 'FDIVR', 'FFREE', 'FINCSTP', 'FINIT', 'FLD', 'FLD1', 'FLDCW', 'FMUL', 'FNOP', 'FPATAN', + 'FPREM', 'FRNDINT', 'FSAVE', 'FSCALE', 'FSETPM', 'FSIN', 'FSQRT', 'FST', 'FSTENV', 'FSTSW', 'FSUB', + 'FSUBR', 'FTST', 'FUCOM', 'FWAIT', 'FXAM', 'FXCH', 'FXTRACT', 'FYL2X', 'FYL2XP1', 'HLT', 'IDIV', 'IMUL', + 'IN', 'INC', 'INS', 'INT', 'INTO', 'INVLPG', 'IRET', 'IRETD', 'JA', 'JAE', 'JB', 'JBE', 'JC', 'JCXZ', 'JE', 'JECXZ', + 'JG', 'JGE', 'JL', 'JLE', 'JMP', 'JNA', 'JNAE', 'JNB', 'JNBE', 'JNC', 'JNE', 'JNG', 'JNGE', 'JNL', 'JNLE', 'JNO', 'JNP', + 'JNS', 'JNZ', 'JO', 'JP', 'JPE', 'JPO', 'JS', 'JZ', 'LAHF', 'LAR', 'LDS', 'LEA', 'LEAVE', 'LES', 'LFS', 'LGDT', 'LGS', + 'LIDT', 'LLDT', 'LMSW', 'LOCK', 'LODS', 'LOOP', 'LOOPE', 'LOOPNE', 'LOOPNZ', 'LOOPZ', 'LSL', 'LSS', 'LTR', + 'MOV', 'MOVS', 'MOVSX', 'MOVZX', 'MUL', 'NEG', 'NOP', 'NOT', 'OR', 'OUT', 'OUTS', 'POP', 'POPA', 'POPAD', + 'POPF', 'POPFD', 'PUSH', 'PUSHA', 'PUSHAD', 'PUSHF', 'PUSHFD', 'RCL', 'RCR', 'REP', 'REPE', 'REPNE', + 'REPNZ', 'REPZ', 'RET', 'RETF', 'ROL', 'ROR', 'SAHF', 'SAL', 'SAR', 'SBB', 'SCAS', 'SETAE', 'SETB', 'SETBE', + 'SETC', 'SETE', 'SETG', 'SETGE', 'SETL', 'SETLE', 'SETNA', 'SETNAE', 'SETNB', 'SETNC', 'SETNE', 'SETNG', + 'SETNGE', 'SETNL', 'SETNLE', 'SETNO', 'SETNP', 'SETNS', 'SETNZ', 'SETO', 'SETP', 'SETPE', 'SETPO', + 'SETS', 'SETZ', 'SGDT', 'SHL', 'SHLD', 'SHR', 'SHRD', 'SIDT', 'SLDT', 'SMSW', 'STC', 'STD', 'STI', + 'STOS', 'STR', 'SUB', 'TEST', 'VERR', 'VERW', 'WAIT', 'WBINVD', 'XCHG', 'XLAT', 'XLATB', 'XOR' + ) + ), + 'SYMBOLS' => array( + '(', ')', '+', '-', '*', '/', '\\', '>', '<', '=', '<=', '>=', '&', '|', '!', '~', '<>', '>>', '<<', '%' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #000066; font-weight: bold;', + 2 => 'color: #0000ff;', + 3 => 'color: #000fff;' + ), + 'COMMENTS' => array( + 1 => 'color: #ff0000; font-style: italic;', + 'MULTI' => 'color: #ff0000; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #000066;' + ), + 'STRINGS' => array( + 0 => 'color: #009900;' + ), + 'NUMBERS' => array( + 0 => 'color: #CC0000;' + ), + 'METHODS' => array( + 1 => 'color: #006600;' + ), + 'SYMBOLS' => array( + 0 => 'color: #000066;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + 0 => '', + 1 => '', + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + 1 => '\\' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array( + 0 => false, + 1 => false + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/python.php b/inc/geshi/python.php index 6f378f434..1be7e2953 100644 --- a/inc/geshi/python.php +++ b/inc/geshi/python.php @@ -4,7 +4,7 @@ * ---------- * Author: Roberto Rossi (rsoftware@altervista.org) * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/08/30 * * Python language file for GeSHi. diff --git a/inc/geshi/q.php b/inc/geshi/q.php new file mode 100644 index 000000000..9629ded4a --- /dev/null +++ b/inc/geshi/q.php @@ -0,0 +1,149 @@ +<?php +/************************************************************************************* + * q.php + * ----- + * Author: Ian Roddis (ian.roddis@proteanmind.net) + * Copyright: (c) 2008 Ian Roddis (http://proteanmind.net) + * Release Version: 1.0.8.8 + * Date Started: 2009/01/21 + * + * q/kdb+ language file for GeSHi. + * + * Based on information available from code.kx.com + * + * CHANGES + * ------- + * 2010/01/21 (1.0.0) + * - First Release + * + * TODO (updated <1.0.0>) + * ------------------------- + * - Fix the handling of single line comments + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'q/kdb+', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array(), + 'COMMENT_REGEXP' => array( + 2 => '/ \s\/.*/', # This needs to get fixed up, since it won't catch some instances + # Multi line comments (Moved from REGEXPS) + 3 => '/^\/\s*?\n.*?\n\\\s*?\n/smi' + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '\\', + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array(), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array(), + 'TAB_WIDTH' => 4, + 'KEYWORDS' => array( + 1 => array( + 'abs', 'acos', 'all', 'and', 'any', 'asc', 'asin', 'asof', 'atan', 'attr', 'avg', 'avgs', 'bin', 'ceiling', + 'cols', 'cor', 'cos', 'count', 'cov', 'cross', 'cut', 'deltas', 'desc', 'dev', 'differ', 'distinct', + 'div', 'each', 'enlist', 'eval', 'except', 'exec', 'exit', 'exp', 'fills', 'first', 'flip', 'floor', + 'fkeys', 'get', 'getenv', 'group', 'gtime', 'hclose', 'hcount', 'hdel', 'hopen', 'hsym', 'iasc', 'idesc', + 'in', 'insert', 'inter', 'inv', 'joins', 'key', 'keys', 'last', 'like', 'load', 'log', 'lower', + 'lsq', 'ltime', 'ltrim', 'mavg', 'max', 'maxs', 'mcount', 'md5', 'mdev', 'med', 'meta', 'min', 'mins', + 'mmax', 'mmin', 'mmu', 'mod', 'msum', 'neg', 'next', 'not', 'null', 'or', 'over', 'parse', 'peach', + 'plist', 'prd', 'prds', 'prev', 'rand', 'rank', 'ratios', 'raze', 'read0', 'read1', 'reciprocal', + 'reverse', 'rload', 'rotate', 'rsave', 'rtrim', 'save', 'scan', 'set', 'setenv', 'show', 'signum', + 'sin', 'sqrt', 'ss', 'ssr', 'string', 'sublist', 'sum', 'sums', 'sv', 'system', 'tables', 'tan', 'til', 'trim', + 'txf', 'type', 'ungroup', 'union', 'upper', 'upsert', 'value', 'var', 'view', 'views', 'vs', + 'wavg', 'within', 'wsum', 'xasc', 'xbar', 'xcol', 'xcols', 'xdesc', 'xexp', 'xgroup', 'xkey', + 'xlog', 'xprev', 'xrank' + ), + # kdb database template keywords + 2 => array( + 'aj', 'by', 'delete', 'fby', 'from', 'ij', 'lj', 'pj', 'select', 'uj', 'update', 'where', 'wj', + ), + ), + 'SYMBOLS' => array( + '?', '#', ',', '_', '@', '.', '^', '~', '$', '!', '\\', '\\', '/:', '\:', "'", "':", '::', '+', '-', '%', '*' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #000099; font-weight: bold;', + 2 => 'color: #009900; font-weight: bold;', + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 2 => 'color: #666666; font-style: italic;', + 3 => 'color: #808080; font-style: italic;', + 'MULTI' => 'color: #808080; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;', + 1 => 'color: #000099; font-weight: bold;', + 2 => 'color: #660099; font-weight: bold;', + 3 => 'color: #660099; font-weight: bold;', + 4 => 'color: #660099; font-weight: bold;', + 5 => 'color: #006699; font-weight: bold;', + 'HARD' => '', + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #990000;' + ), + 'NUMBERS' => array( + 0 => 'color: #0000dd;', + GESHI_NUMBER_BIN_PREFIX_0B => 'color: #208080;', + GESHI_NUMBER_OCT_PREFIX => 'color: #208080;', + GESHI_NUMBER_HEX_PREFIX => 'color: #208080;', + GESHI_NUMBER_FLT_SCI_SHORT => 'color:#800080;', + GESHI_NUMBER_FLT_SCI_ZERO => 'color:#800080;', + GESHI_NUMBER_FLT_NONSCI_F => 'color:#800080;', + GESHI_NUMBER_FLT_NONSCI => 'color:#800080;' + ), + 'METHODS' => array( + 1 => 'color: #202020;', + 2 => 'color: #202020;' + ), + 'SYMBOLS' => array( + 0 => 'color: #339933;' + ), + 'REGEXPS' => array( + 2 => 'color: #999900;', + ), + 'SCRIPT' => array( + ) + ), + 'REGEXPS' => array( + # Symbols + 2 => '`[^\s"]*', + ), + 'URLS' => array( + 1 => '', + 2 => '', + ), +); + +?>
\ No newline at end of file diff --git a/inc/geshi/qbasic.php b/inc/geshi/qbasic.php index e3b5df8a1..da4372258 100644 --- a/inc/geshi/qbasic.php +++ b/inc/geshi/qbasic.php @@ -4,7 +4,7 @@ * ---------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/06/20 * * QBasic/QuickBASIC language file for GeSHi. @@ -55,7 +55,9 @@ $language_data = array ( 'COMMENT_MULTI' => array(), 'COMMENT_REGEXP' => array( //Single-Line Comments using REM command - 2 => "/\bREM.*?$/i" + 2 => "/\bREM.*?$/i", + //Line numbers + 3 => "/^\s*\d+/im" ), 'CASE_KEYWORDS' => GESHI_CAPS_UPPER, 'QUOTEMARKS' => array('"'), @@ -93,7 +95,7 @@ $language_data = array ( ) ), 'SYMBOLS' => array( - '(', ')', ',', '+', '-', '*', '/', '=', '<', '>' + '(', ')', ',', '+', '-', '*', '/', '=', '<', '>', '^' ), 'CASE_SENSITIVE' => array( GESHI_COMMENTS => false, @@ -107,7 +109,8 @@ $language_data = array ( ), 'COMMENTS' => array( 1 => 'color: #808080;', - 2 => 'color: #808080;' + 2 => 'color: #808080;', + 3 => 'color: #8080C0;' ), 'BRACKETS' => array( 0 => 'color: #66cc66;' @@ -129,6 +132,8 @@ $language_data = array ( 'SCRIPT' => array( ), 'REGEXPS' => array( + 1 => 'color: #cc66cc;', + 2 => 'color: #339933;' ) ), 'URLS' => array( @@ -139,6 +144,8 @@ $language_data = array ( 'OBJECT_SPLITTERS' => array( ), 'REGEXPS' => array( + 1 => '&(?:H[0-9a-fA-F]+|O[0-7]+)(?!\w)', + 2 => '#[0-9]+(?!\w)' ), 'STRICT_MODE_APPLIES' => GESHI_NEVER, 'SCRIPT_DELIMITERS' => array( @@ -148,4 +155,4 @@ $language_data = array ( 'TAB_WIDTH' => 8 ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/rails.php b/inc/geshi/rails.php index cc6e079b0..64d83ea16 100644 --- a/inc/geshi/rails.php +++ b/inc/geshi/rails.php @@ -4,7 +4,7 @@ * --------- * Author: Moises Deniz * Copyright: (c) 2005 Moises Deniz - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2007/03/21 * * Ruby (with Ruby on Rails Framework) language file for GeSHi. diff --git a/inc/geshi/rebol.php b/inc/geshi/rebol.php index 97eff1f32..a3889eec9 100644 --- a/inc/geshi/rebol.php +++ b/inc/geshi/rebol.php @@ -4,7 +4,7 @@ * -------- * Author: Lecanu Guillaume (Guillaume@LyA.fr) * Copyright: (c) 2004-2005 Lecanu Guillaume (Guillaume@LyA.fr) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/12/22 * * Rebol language file for GeSHi. diff --git a/inc/geshi/reg.php b/inc/geshi/reg.php index 59199f743..bb2e845f3 100644 --- a/inc/geshi/reg.php +++ b/inc/geshi/reg.php @@ -4,7 +4,7 @@ * ------- * Author: Sean Hanna (smokingrope@gmail.com) * Copyright: (c) 2006 Sean Hanna - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 03/15/2006 * * Microsoft Registry Editor language file for GeSHi. diff --git a/inc/geshi/robots.php b/inc/geshi/robots.php index af5fe1426..baf286b7f 100644 --- a/inc/geshi/robots.php +++ b/inc/geshi/robots.php @@ -4,7 +4,7 @@ * -------- * Author: Christian Lescuyer (cl@goelette.net) * Copyright: (c) 2006 Christian Lescuyer http://xtian.goelette.info - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2006/02/17 * * robots.txt language file for GeSHi. @@ -36,12 +36,14 @@ $language_data = array ( 'LANG_NAME' => 'robots.txt', 'COMMENT_SINGLE' => array(1 => '#'), 'COMMENT_MULTI' => array(), + 'COMMENT_REGEXP' => array(1 => "/^Comment:.*?/m"), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array(), 'ESCAPE_CHAR' => '', 'KEYWORDS' => array( 1 => array( - 'User-agent', 'Disallow' + 'Allow', 'Crawl-delay', 'Disallow', 'Request-rate', 'Robot-version', + 'Sitemap', 'User-agent', 'Visit-time' ) ), 'SYMBOLS' => array( @@ -95,4 +97,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/rpmspec.php b/inc/geshi/rpmspec.php new file mode 100644 index 000000000..96dc9556f --- /dev/null +++ b/inc/geshi/rpmspec.php @@ -0,0 +1,133 @@ +<?php +/************************************************************************************* + * rpmspec.php + * --------------------------------- + * Author: Paul Grinberg (gri6507 TA unity-linux TOD org) + * Copyright: (c) 2010 Paul Grinberg + * Release Version: 1.0.8.8 + * Date Started: 2010/04/27 + * + * RPM Spec language file for GeSHi. + * + * CHANGES + * ------- + * 2010/04/27 (0.1) + * - First Release + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'RPM Specification File', + 'COMMENT_SINGLE' => array(1 => '#'), + 'COMMENT_MULTI' => array(), + 'QUOTEMARKS' => array('"','`'), + 'ESCAPE_CHAR' => '\\', + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + ), + 'KEYWORDS' => array( + ), + 'SYMBOLS' => array( + '<', '>', '=', + '!', '@', '~', '&', '|', '^', + '+','-', '*', '/', '%', + ',', ';', '?', '.', ':' + ), + 'STYLES' => array( + 'KEYWORDS' => array( + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 'MULTI' => 'color: #666666; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;', + 'HARD' => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;', + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;' + ), + 'METHODS' => array( + 1 => 'color: #006600;', + 2 => 'color: #006600;' + ), + 'SYMBOLS' => array( + 0 => 'color: #339933;' + ), + 'REGEXPS' => array( + 1 => 'color: #0000ff;', + 2 => 'color: #009999;', + 3 => 'color: #000000; font-weight: bold;', + 4 => 'color: #ff6600; font-style: italic;', + ), + 'SCRIPT' => array( + ) + ), + 'REGEXPS' => array( + 1 => array( + // search for generic macros + GESHI_SEARCH => '(%{?[a-zA-Z0-9_]+}?)', + GESHI_REPLACE => '\\1', + GESHI_MODIFIERS => '', + GESHI_BEFORE => '', + GESHI_AFTER => '', + ), + 2 => array( + // search for special macros + GESHI_SEARCH => '(%(?:define|patch\d*|mklibname|mkrel|configure\S+|makeinstall\S+|make_session|make|defattr|config|doc|setup))', + GESHI_REPLACE => '\\1', + GESHI_MODIFIERS => 'i', + GESHI_BEFORE => '', + GESHI_AFTER => '', + ), + 3 => array ( + // special definitions + GESHI_SEARCH => '((?:summary|license|buildroot|buildrequires|provides|version|release|source\d*|group|buildarch|autoreqprov|provides|obsoletes|vendor|distribution|suggests|autoreq|autoprov|conflicts|name|url|requires|patch\d*):)', + GESHI_REPLACE => '\\1', + GESHI_MODIFIERS => 'i', + GESHI_BEFORE => '', + GESHI_AFTER => '', + ), + 4 => array ( + // section delimiting words + GESHI_SEARCH => '(%(?:description|package|prep|build|install|clean|postun|preun|post|pre|files|changelog))', + GESHI_REPLACE => '\\1', + GESHI_MODIFIERS => 'i', + GESHI_BEFORE => '', + GESHI_AFTER => '', + ), + ), + 'URLS' => array(), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array(), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), +); + +?>
\ No newline at end of file diff --git a/inc/geshi/rsplus.php b/inc/geshi/rsplus.php new file mode 100644 index 000000000..b73f5ea77 --- /dev/null +++ b/inc/geshi/rsplus.php @@ -0,0 +1,483 @@ +<?php +/************************************************************************************* + * rsplus.php + * ———– + * Author: Ron Fredericks (ronf@LectureMaker.com) + * Contributors: + * - Benilton Carvalho (beniltoncarvalho@gmail.com) + * Copyright: (c) 2009 Ron Fredericks (http://www.LectureMaker.com) + * Release Version: 1.0.8.8 + * Date Started: 2009/03/28 + * + * R language file for GeSHi. + * + * CHANGES + * ——- + * 2009/04/06 + * - Add references to Sekhon’s R Package docs + * 2009/03/29 (1.0.8.5) + * - First Release + * 2009/07/16 (1.0.8.6) + * - Added functions from base packages (Benilton Carvalho - carvalho@bclab.org) + * + * References + * ———- + * Some online R Package documentation: + * http://sekhon.berkeley.edu/library/index.html 2.4 docs + * http://astrostatistics.psu.edu/su07/R/html 2.5 docs + * + * Another R GeSHi with no meat? + * http://organicdesign.co.nz/GeSHi/R.php + * SourceForge R discussion: + * http://sourceforge.net/tracker/?func=detail&aid=2276025&group_id=114997&atid=670234 + * + * TODO (updated 2007/02/06) + * ------------------------- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'R / S+', + 'COMMENT_SINGLE' => array(1 => '#'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"', "'"), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( + 'else','global','in', 'otherwise','persistent', + ), + 2 => array( // base package + '$.package_version', '$<-', '$<-.data.frame', 'abbreviate', 'abs', 'acos', 'acosh', 'addNA', 'addTaskCallback', + 'agrep', 'alist', 'all', 'all.equal', 'all.equal.character', 'all.equal.default', 'all.equal.factor', + 'all.equal.formula', 'all.equal.language', 'all.equal.list', 'all.equal.numeric', 'all.equal.POSIXct', + 'all.equal.raw', 'all.names', 'all.vars', 'any', 'aperm', 'append', 'apply', 'Arg', 'args', 'array', 'as.array', + 'as.array.default', 'as.call', 'as.character', 'as.character.condition', 'as.character.Date', 'as.character.default', + 'as.character.error', 'as.character.factor', 'as.character.hexmode', 'as.character.numeric_version', 'as.character.octmode', + 'as.character.POSIXt', 'as.character.srcref', 'as.complex', 'as.data.frame', 'as.data.frame.array', 'as.data.frame.AsIs', + 'as.data.frame.character', 'as.data.frame.complex', 'as.data.frame.data.frame', 'as.data.frame.Date', 'as.data.frame.default', + 'as.data.frame.difftime', 'as.data.frame.factor', 'as.data.frame.integer', 'as.data.frame.list', 'as.data.frame.logical', + 'as.data.frame.matrix', 'as.data.frame.model.matrix', 'as.data.frame.numeric', 'as.data.frame.numeric_version', + 'as.data.frame.ordered', 'as.data.frame.POSIXct', 'as.data.frame.POSIXlt', 'as.data.frame.raw', 'as.data.frame.table', + 'as.data.frame.ts', 'as.data.frame.vector', 'as.Date', 'as.Date.character', 'as.Date.date', 'as.Date.dates', + 'as.Date.default', 'as.Date.factor', 'as.Date.numeric', 'as.Date.POSIXct', 'as.Date.POSIXlt', 'as.difftime', 'as.double', + 'as.double.difftime', 'as.double.POSIXlt', 'as.environment', 'as.expression', 'as.expression.default', 'as.factor', + 'as.function', 'as.function.default', 'as.hexmode', 'as.integer', 'as.list', 'as.list.data.frame', 'as.list.default', + 'as.list.environment', 'as.list.factor', 'as.list.function', 'as.list.numeric_version', 'as.logical', 'as.matrix', + 'as.matrix.data.frame', 'as.matrix.default', 'as.matrix.noquote', 'as.matrix.POSIXlt', 'as.name', 'as.null', 'as.null.default', + 'as.numeric', 'as.numeric_version', 'as.octmode', 'as.ordered', 'as.package_version', 'as.pairlist', 'as.POSIXct', + 'as.POSIXct.date', 'as.POSIXct.Date', 'as.POSIXct.dates', 'as.POSIXct.default', 'as.POSIXct.numeric', 'as.POSIXct.POSIXlt', + 'as.POSIXlt', 'as.POSIXlt.character', 'as.POSIXlt.date', 'as.POSIXlt.Date', 'as.POSIXlt.dates', 'as.POSIXlt.default', + 'as.POSIXlt.factor', 'as.POSIXlt.numeric', 'as.POSIXlt.POSIXct', 'as.qr', 'as.raw', 'as.real', 'as.single', + 'as.single.default', 'as.symbol', 'as.table', 'as.table.default', 'as.vector', 'as.vector.factor', 'asin', 'asinh', + 'asNamespace', 'asS4', 'assign', 'atan', 'atan2', 'atanh', 'attach', 'attachNamespace', 'attr', 'attr.all.equal', + 'attr<-', 'attributes', 'attributes<-', 'autoload', 'autoloader', 'backsolve', 'baseenv', 'basename', 'besselI', + 'besselJ', 'besselK', 'besselY', 'beta', 'bindingIsActive', 'bindingIsLocked', 'bindtextdomain', 'body', 'body<-', + 'bquote', 'break', 'browser', 'builtins', 'by', 'by.data.frame', 'by.default', 'bzfile', 'c', 'c.Date', 'c.noquote', + 'c.numeric_version', 'c.POSIXct', 'c.POSIXlt', 'call', 'callCC', 'capabilities', 'casefold', 'cat', 'category', + 'cbind', 'cbind.data.frame', 'ceiling', 'char.expand', 'character', 'charmatch', 'charToRaw', 'chartr', 'check_tzones', + 'chol', 'chol.default', 'chol2inv', 'choose', 'class', 'class<-', 'close', 'close.connection', 'close.srcfile', + 'closeAllConnections', 'codes', 'codes.factor', 'codes.ordered', 'codes<-', 'col', 'colMeans', 'colnames', + 'colnames<-', 'colSums', 'commandArgs', 'comment', 'comment<-', 'complex', 'computeRestarts', 'conditionCall', + 'conditionCall.condition', 'conditionMessage', 'conditionMessage.condition', 'conflicts', 'Conj', 'contributors', + 'cos', 'cosh', 'crossprod', 'Cstack_info', 'cummax', 'cummin', 'cumprod', 'cumsum', 'cut', 'cut.Date', 'cut.default', + 'cut.POSIXt', 'data.class', 'data.frame', 'data.matrix', 'date', 'debug', 'default.stringsAsFactors', 'delay', + 'delayedAssign', 'deparse', 'det', 'detach', 'determinant', 'determinant.matrix', 'dget', 'diag', 'diag<-', 'diff', + 'diff.Date', 'diff.default', 'diff.POSIXt', 'difftime', 'digamma', 'dim', 'dim.data.frame', 'dim<-', 'dimnames', + 'dimnames.data.frame', 'dimnames<-', 'dimnames<-.data.frame', 'dir', 'dir.create', 'dirname', 'do.call', 'double', + 'dput', 'dQuote', 'drop', 'dump', 'duplicated', 'duplicated.array', 'duplicated.data.frame', 'duplicated.default', + 'duplicated.matrix', 'duplicated.numeric_version', 'duplicated.POSIXlt', 'dyn.load', 'dyn.unload', 'eapply', 'eigen', + 'emptyenv', 'encodeString', 'Encoding', 'Encoding<-', 'env.profile', 'environment', 'environment<-', 'environmentIsLocked', + 'environmentName', 'eval', 'eval.parent', 'evalq', 'exists', 'exp', 'expand.grid', 'expm1', 'expression', 'F', 'factor', + 'factorial', 'fifo', 'file', 'file.access', 'file.append', 'file.choose', 'file.copy', 'file.create', 'file.exists', + 'file.info', 'file.path', 'file.remove', 'file.rename', 'file.show', 'file.symlink', 'Filter', 'Find', 'findInterval', + 'findPackageEnv', 'findRestart', 'floor', 'flush', 'flush.connection', 'for', 'force', 'formals', 'formals<-', + 'format', 'format.AsIs', 'format.char', 'format.data.frame', 'format.Date', 'format.default', 'format.difftime', + 'format.factor', 'format.hexmode', 'format.info', 'format.octmode', 'format.POSIXct', 'format.POSIXlt', + 'format.pval', 'formatC', 'formatDL', 'forwardsolve', 'function', 'gamma', 'gammaCody', 'gc', 'gc.time', + 'gcinfo', 'gctorture', 'get', 'getAllConnections', 'getCallingDLL', 'getCallingDLLe', 'getCConverterDescriptions', + 'getCConverterStatus', 'getConnection', 'getDLLRegisteredRoutines', 'getDLLRegisteredRoutines.character', + 'getDLLRegisteredRoutines.DLLInfo', 'getenv', 'geterrmessage', 'getExportedValue', 'getHook', 'getLoadedDLLs', + 'getNamespace', 'getNamespaceExports', 'getNamespaceImports', 'getNamespaceInfo', 'getNamespaceName', + 'getNamespaceUsers', 'getNamespaceVersion', 'getNativeSymbolInfo', 'getNumCConverters', 'getOption', 'getRversion', + 'getSrcLines', 'getTaskCallbackNames', 'gettext', 'gettextf', 'getwd', 'gl', 'globalenv', 'gregexpr', 'grep', + 'grepl', 'gsub', 'gzcon', 'gzfile', 'httpclient', 'I', 'iconv', 'iconvlist', 'icuSetCollate', 'identical', 'identity', + 'if', 'ifelse', 'Im', 'importIntoEnv', 'inherits', 'integer', 'interaction', 'interactive', 'intersect', 'intToBits', + 'intToUtf8', 'inverse.rle', 'invisible', 'invokeRestart', 'invokeRestartInteractively', 'is.array', 'is.atomic', + 'is.call', 'is.character', 'is.complex', 'is.data.frame', 'is.double', 'is.element', 'is.environment', + 'is.expression', 'is.factor', 'is.finite', 'is.function', 'is.infinite', 'is.integer', 'is.language', + 'is.list', 'is.loaded', 'is.logical', 'is.matrix', 'is.na', 'is.na.data.frame', 'is.na.POSIXlt', 'is.na<-', + 'is.na<-.default', 'is.na<-.factor', 'is.name', 'is.nan', 'is.null', 'is.numeric', 'is.numeric_version', + 'is.numeric.Date', 'is.numeric.POSIXt', 'is.object', 'is.ordered', 'is.package_version', 'is.pairlist', 'is.primitive', + 'is.qr', 'is.R', 'is.raw', 'is.real', 'is.recursive', 'is.single', 'is.symbol', 'is.table', 'is.unsorted', 'is.vector', + 'isBaseNamespace', 'isdebugged', 'isIncomplete', 'isNamespace', 'ISOdate', 'ISOdatetime', 'isOpen', 'isRestart', 'isS4', + 'isSeekable', 'isSymmetric', 'isSymmetric.matrix', 'isTRUE', 'jitter', 'julian', 'julian.Date', 'julian.POSIXt', 'kappa', + 'kappa.default', 'kappa.lm', 'kappa.qr', 'kappa.tri', 'kronecker', 'l10n_info', 'La.chol', 'La.chol2inv', 'La.eigen', + 'La.svd', 'labels', 'labels.default', 'lapply', 'lazyLoad', 'lazyLoadDBfetch', 'lbeta', 'lchoose', 'length', 'length<-', + 'length<-.factor', 'letters', 'LETTERS', 'levels', 'levels.default', 'levels<-', 'levels<-.factor', 'lfactorial', 'lgamma', + 'library', 'library.dynam', 'library.dynam.unload', 'licence', 'license', 'list', 'list.files', 'load', 'loadedNamespaces', + 'loadingNamespaceInfo', 'loadNamespace', 'loadURL', 'local', 'lockBinding', 'lockEnvironment', 'log', 'log10', 'log1p', 'log2', + 'logb', 'logical', 'lower.tri', 'ls', 'machine', 'Machine', 'make.names', 'make.unique', 'makeActiveBinding', 'manglePackageName', + 'Map', 'mapply', 'margin.table', 'mat.or.vec', 'match', 'match.arg', 'match.call', 'match.fun', 'Math.data.frame', 'Math.Date', + 'Math.difftime', 'Math.factor', 'Math.POSIXt', 'matrix', 'max', 'max.col', 'mean', 'mean.data.frame', 'mean.Date', 'mean.default', + 'mean.difftime', 'mean.POSIXct', 'mean.POSIXlt', 'mem.limits', 'memory.profile', 'merge', 'merge.data.frame', 'merge.default', + 'message', 'mget', 'min', 'missing', 'Mod', 'mode', 'mode<-', 'month.abb', 'month.name', 'months', 'months.Date', + 'months.POSIXt', 'mostattributes<-', 'names', 'names<-', 'namespaceExport', 'namespaceImport', 'namespaceImportClasses', + 'namespaceImportFrom', 'namespaceImportMethods', 'nargs', 'nchar', 'ncol', 'NCOL', 'Negate', 'new.env', 'next', 'NextMethod', + 'ngettext', 'nlevels', 'noquote', 'nrow', 'NROW', 'numeric', 'numeric_version', 'nzchar', 'objects', 'oldClass', + 'oldClass<-', 'on.exit', 'open', 'open.connection', 'open.srcfile', 'open.srcfilecopy', 'Ops.data.frame', 'Ops.Date', + 'Ops.difftime', 'Ops.factor', 'Ops.numeric_version', 'Ops.ordered', 'Ops.POSIXt', 'options', 'order', 'ordered', + 'outer', 'package_version', 'package.description', 'packageEvent', 'packageHasNamespace', 'packageStartupMessage', + 'packBits', 'pairlist', 'parent.env', 'parent.env<-', 'parent.frame', 'parse', 'parse.dcf', 'parseNamespaceFile', + 'paste', 'path.expand', 'pentagamma', 'pi', 'pipe', 'Platform', 'pmatch', 'pmax', 'pmax.int', 'pmin', 'pmin.int', + 'polyroot', 'pos.to.env', 'Position', 'pretty', 'prettyNum', 'print', 'print.AsIs', 'print.atomic', 'print.by', + 'print.condition', 'print.connection', 'print.data.frame', 'print.Date', 'print.default', 'print.difftime', + 'print.DLLInfo', 'print.DLLInfoList', 'print.DLLRegisteredRoutines', 'print.factor', 'print.hexmode', 'print.libraryIQR', + 'print.listof', 'print.NativeRoutineList', 'print.noquote', 'print.numeric_version', 'print.octmode', 'print.packageInfo', + 'print.POSIXct', 'print.POSIXlt', 'print.proc_time', 'print.restart', 'print.rle', 'print.simple.list', + 'print.srcfile', 'print.srcref', 'print.summary.table', 'print.table', 'print.warnings', 'printNoClass', + 'prmatrix', 'proc.time', 'prod', 'prop.table', 'provide', 'psigamma', 'pushBack', 'pushBackLength', 'q', 'qr', + 'qr.coef', 'qr.default', 'qr.fitted', 'qr.Q', 'qr.qty', 'qr.qy', 'qr.R', 'qr.resid', 'qr.solve', 'qr.X', 'quarters', + 'quarters.Date', 'quarters.POSIXt', 'quit', 'quote', 'R_system_version', 'R.home', 'R.version', 'R.Version', + 'R.version.string', 'range', 'range.default', 'rank', 'rapply', 'raw', 'rawConnection', 'rawConnectionValue', + 'rawShift', 'rawToBits', 'rawToChar', 'rbind', 'rbind.data.frame', 'rcond', 'Re', 'read.dcf', 'read.table.url', + 'readBin', 'readChar', 'readline', 'readLines', 'real', 'Recall', 'Reduce', 'reg.finalizer', 'regexpr', + 'registerS3method', 'registerS3methods', 'remove', 'removeCConverter', 'removeTaskCallback', 'rep', 'rep.Date', + 'rep.factor', 'rep.int', 'rep.numeric_version', 'rep.POSIXct', 'rep.POSIXlt', 'repeat', 'replace', 'replicate', + 'require', 'restart', 'restartDescription', 'restartFormals', 'retracemem', 'return', 'rev', 'rev.default', 'rle', + 'rm', 'RNGkind', 'RNGversion', 'round', 'round.Date', 'round.difftime', 'round.POSIXt', 'row', 'row.names', + 'row.names.data.frame', 'row.names.default', 'row.names<-', 'row.names<-.data.frame', 'row.names<-.default', + 'rowMeans', 'rownames', 'rownames<-', 'rowsum', 'rowsum.data.frame', 'rowsum.default', 'rowSums', 'sample', + 'sample.int', 'sapply', 'save', 'save.image', 'saveNamespaceImage', 'scale', 'scale.default', 'scan', 'scan.url', + 'search', 'searchpaths', 'seek', 'seek.connection', 'seq', 'seq_along', 'seq_len', 'seq.Date', 'seq.default', + 'seq.int', 'seq.POSIXt', 'sequence', 'serialize', 'set.seed', 'setCConverterStatus', 'setdiff', 'setequal', + 'setHook', 'setNamespaceInfo', 'setSessionTimeLimit', 'setTimeLimit', 'setwd', 'showConnections', 'shQuote', + 'sign', 'signalCondition', 'signif', 'simpleCondition', 'simpleError', 'simpleMessage', 'simpleWarning', 'sin', + 'single', 'sinh', 'sink', 'sink.number', 'slice.index', 'socketConnection', 'socketSelect', 'solve', 'solve.default', + 'solve.qr', 'sort', 'sort.default', 'sort.int', 'sort.list', 'sort.POSIXlt', 'source', 'source.url', 'split', + 'split.data.frame', 'split.Date', 'split.default', 'split.POSIXct', 'split<-', 'split<-.data.frame', 'split<-.default', + 'sprintf', 'sqrt', 'sQuote', 'srcfile', 'srcfilecopy', 'srcref', 'standardGeneric', 'stderr', 'stdin', 'stdout', + 'stop', 'stopifnot', 'storage.mode', 'storage.mode<-', 'strftime', 'strptime', 'strsplit', 'strtrim', 'structure', + 'strwrap', 'sub', 'subset', 'subset.data.frame', 'subset.default', 'subset.matrix', 'substitute', 'substr', + 'substr<-', 'substring', 'substring<-', 'sum', 'summary', 'summary.connection', 'summary.data.frame', + 'Summary.data.frame', 'summary.Date', 'Summary.Date', 'summary.default', 'Summary.difftime', + 'summary.factor', 'Summary.factor', 'summary.matrix', 'Summary.numeric_version', 'summary.POSIXct', + 'Summary.POSIXct', 'summary.POSIXlt', 'Summary.POSIXlt', 'summary.table', 'suppressMessages', + 'suppressPackageStartupMessages', 'suppressWarnings', 'svd', 'sweep', 'switch', 'symbol.C', + 'symbol.For', 'sys.call', 'sys.calls', 'Sys.chmod', 'Sys.Date', 'sys.frame', 'sys.frames', + 'sys.function', 'Sys.getenv', 'Sys.getlocale', 'Sys.getpid', 'Sys.glob', 'Sys.info', 'sys.load.image', + 'Sys.localeconv', 'sys.nframe', 'sys.on.exit', 'sys.parent', 'sys.parents', 'Sys.putenv', + 'sys.save.image', 'Sys.setenv', 'Sys.setlocale', 'Sys.sleep', 'sys.source', 'sys.status', + 'Sys.time', 'Sys.timezone', 'Sys.umask', 'Sys.unsetenv', 'Sys.which', 'system', 'system.file', + 'system.time', 't', 'T', 't.data.frame', 't.default', 'table', 'tabulate', 'tan', 'tanh', 'tapply', + 'taskCallbackManager', 'tcrossprod', 'tempdir', 'tempfile', 'testPlatformEquivalence', 'tetragamma', + 'textConnection', 'textConnectionValue', 'tolower', 'topenv', 'toString', 'toString.default', 'toupper', + 'trace', 'traceback', 'tracemem', 'tracingState', 'transform', 'transform.data.frame', 'transform.default', + 'trigamma', 'trunc', 'trunc.Date', 'trunc.POSIXt', 'truncate', 'truncate.connection', 'try', 'tryCatch', + 'typeof', 'unclass', 'undebug', 'union', 'unique', 'unique.array', 'unique.data.frame', 'unique.default', + 'unique.matrix', 'unique.numeric_version', 'unique.POSIXlt', 'units', 'units.difftime', 'units<-', + 'units<-.difftime', 'unix', 'unix.time', 'unlink', 'unlist', 'unloadNamespace', 'unlockBinding', + 'unname', 'unserialize', 'unsplit', 'untrace', 'untracemem', 'unz', 'upper.tri', 'url', 'UseMethod', + 'utf8ToInt', 'vector', 'Vectorize', 'version', 'Version', 'warning', 'warnings', 'weekdays', + 'weekdays.Date', 'weekdays.POSIXt', 'which', 'which.max', 'which.min', 'while', 'with', + 'with.default', 'withCallingHandlers', 'within', 'within.data.frame', 'within.list', 'withRestarts', + 'withVisible', 'write', 'write.dcf', 'write.table0', 'writeBin', 'writeChar', 'writeLines', 'xor', + 'xpdrows.data.frame', 'xtfrm', 'xtfrm.Date', 'xtfrm.default', 'xtfrm.factor', 'xtfrm.numeric_version', + 'xtfrm.POSIXct', 'xtfrm.POSIXlt', 'xtfrm.Surv', 'zapsmall', + ), + 3 => array( // Datasets + 'ability.cov', 'airmiles', 'AirPassengers', 'airquality', + 'anscombe', 'attenu', 'attitude', 'austres', 'beaver1', + 'beaver2', 'BJsales', 'BJsales.lead', 'BOD', 'cars', + 'ChickWeight', 'chickwts', 'co2', 'crimtab', + 'discoveries', 'DNase', 'esoph', 'euro', 'euro.cross', + 'eurodist', 'EuStockMarkets', 'faithful', 'fdeaths', + 'Formaldehyde', 'freeny', 'freeny.x', 'freeny.y', + 'HairEyeColor', 'Harman23.cor', 'Harman74.cor', 'Indometh', + 'infert', 'InsectSprays', 'iris', 'iris3', 'islands', + 'JohnsonJohnson', 'LakeHuron', 'ldeaths', 'lh', 'LifeCycleSavings', + 'Loblolly', 'longley', 'lynx', 'mdeaths', 'morley', 'mtcars', + 'nhtemp', 'Nile', 'nottem', 'occupationalStatus', 'Orange', + 'OrchardSprays', 'PlantGrowth', 'precip', 'presidents', + 'pressure', 'Puromycin', 'quakes', 'randu', 'rivers', 'rock', + 'Seatbelts', 'sleep', 'stack.loss', 'stack.x', 'stackloss', + 'state.abb', 'state.area', 'state.center', 'state.division', + 'state.name', 'state.region', 'state.x77', 'sunspot.month', + 'sunspot.year', 'sunspots', 'swiss', 'Theoph', 'Titanic', 'ToothGrowth', + 'treering', 'trees', 'UCBAdmissions', 'UKDriverDeaths', 'UKgas', + 'USAccDeaths', 'USArrests', 'USJudgeRatings', 'USPersonalExpenditure', + 'uspop', 'VADeaths', 'volcano', 'warpbreaks', 'women', 'WorldPhones', + 'WWWusage', + ), + 4 => array( // graphics package + 'abline', 'arrows', 'assocplot', 'axis', 'Axis', 'axis.Date', 'axis.POSIXct', + 'axTicks', 'barplot', 'barplot.default', 'box', 'boxplot', 'boxplot.default', + 'boxplot.matrix', 'bxp', 'cdplot', 'clip', 'close.screen', 'co.intervals', + 'contour', 'contour.default', 'coplot', 'curve', 'dotchart', 'erase.screen', + 'filled.contour', 'fourfoldplot', 'frame', 'grconvertX', 'grconvertY', 'grid', + 'hist', 'hist.default', 'identify', 'image', 'image.default', 'layout', + 'layout.show', 'lcm', 'legend', 'lines', 'lines.default', 'locator', 'matlines', + 'matplot', 'matpoints', 'mosaicplot', 'mtext', 'pairs', 'pairs.default', + 'panel.smooth', 'par', 'persp', 'pie', 'piechart', 'plot', 'plot.default', + 'plot.design', 'plot.new', 'plot.window', 'plot.xy', 'points', 'points.default', + 'polygon', 'rect', 'rug', 'screen', 'segments', 'smoothScatter', 'spineplot', + 'split.screen', 'stars', 'stem', 'strheight', 'stripchart', 'strwidth', 'sunflowerplot', + 'symbols', 'text', 'text.default', 'title', 'xinch', 'xspline', 'xyinch', 'yinch', + ), + 5 => array( // grDevices pkg + 'as.graphicsAnnot', 'bitmap', 'blues9', 'bmp', 'boxplot.stats', 'cairo_pdf', 'cairo_ps', 'check.options', + 'chull', 'CIDFont', 'cm', 'cm.colors', 'col2rgb', 'colorConverter', 'colorRamp', 'colorRampPalette', + 'colors', 'colorspaces', 'colours', 'contourLines', 'convertColor', 'densCols', 'dev.control', 'dev.copy', + 'dev.copy2eps', 'dev.copy2pdf', 'dev.cur', 'dev.interactive', 'dev.list', 'dev.new', 'dev.next', 'dev.off', + 'dev.prev', 'dev.print', 'dev.set', 'dev.size', 'dev2bitmap', 'devAskNewPage', 'deviceIsInteractive', + 'embedFonts', 'extendrange', 'getGraphicsEvent', 'graphics.off', 'gray', 'gray.colors', 'grey', 'grey.colors', + 'hcl', 'heat.colors', 'Hershey', 'hsv', 'jpeg', 'make.rgb', 'n2mfrow', 'nclass.FD', 'nclass.scott', + 'nclass.Sturges', 'palette', 'pdf', 'pdf.options', 'pdfFonts', 'pictex', 'png', 'postscript', 'postscriptFont', + 'postscriptFonts', 'ps.options', 'quartz', 'quartz.options', 'quartzFont', 'quartzFonts', 'rainbow', + 'recordGraphics', 'recordPlot', 'replayPlot', 'rgb', 'rgb2hsv', 'savePlot', 'setEPS', 'setPS', 'svg', + 'terrain.colors', 'tiff', 'topo.colors', 'trans3d', 'Type1Font', 'x11', 'X11', 'X11.options', 'X11Font', + 'X11Fonts', 'xfig', 'xy.coords', 'xyTable', 'xyz.coords', + ), + 6 => array( // methods package + 'addNextMethod', 'allGenerics', 'allNames', 'Arith', 'as', 'as<-', + 'asMethodDefinition', 'assignClassDef', 'assignMethodsMetaData', 'balanceMethodsList', + 'cacheGenericsMetaData', 'cacheMetaData', 'cacheMethod', 'callGeneric', + 'callNextMethod', 'canCoerce', 'cbind2', 'checkSlotAssignment', 'classesToAM', + 'classMetaName', 'coerce', 'coerce<-', 'Compare', 'completeClassDefinition', + 'completeExtends', 'completeSubclasses', 'Complex', 'conformMethod', 'defaultDumpName', + 'defaultPrototype', 'doPrimitiveMethod', 'dumpMethod', 'dumpMethods', 'el', 'el<-', + 'elNamed', 'elNamed<-', 'empty.dump', 'emptyMethodsList', 'existsFunction', 'existsMethod', + 'extends', 'finalDefaultMethod', 'findClass', 'findFunction', 'findMethod', 'findMethods', + 'findMethodSignatures', 'findUnique', 'fixPre1.8', 'formalArgs', 'functionBody', + 'functionBody<-', 'generic.skeleton', 'getAccess', 'getAllMethods', 'getAllSuperClasses', + 'getClass', 'getClassDef', 'getClasses', 'getClassName', 'getClassPackage', 'getDataPart', + 'getExtends', 'getFunction', 'getGeneric', 'getGenerics', 'getGroup', 'getGroupMembers', + 'getMethod', 'getMethods', 'getMethodsForDispatch', 'getMethodsMetaData', 'getPackageName', + 'getProperties', 'getPrototype', 'getSlots', 'getSubclasses', 'getValidity', 'getVirtual', + 'hasArg', 'hasMethod', 'hasMethods', 'implicitGeneric', 'initialize', 'insertMethod', 'is', + 'isClass', 'isClassDef', 'isClassUnion', 'isGeneric', 'isGrammarSymbol', 'isGroup', + 'isSealedClass', 'isSealedMethod', 'isVirtualClass', 'isXS3Class', 'languageEl', 'languageEl<-', + 'linearizeMlist', 'listFromMethods', 'listFromMlist', 'loadMethod', 'Logic', + 'makeClassRepresentation', 'makeExtends', 'makeGeneric', 'makeMethodsList', + 'makePrototypeFromClassDef', 'makeStandardGeneric', 'matchSignature', 'Math', 'Math2', 'mergeMethods', + 'metaNameUndo', 'method.skeleton', 'MethodAddCoerce', 'methodSignatureMatrix', 'MethodsList', + 'MethodsListSelect', 'methodsPackageMetaName', 'missingArg', 'mlistMetaName', 'new', 'newBasic', + 'newClassRepresentation', 'newEmptyObject', 'Ops', 'packageSlot', 'packageSlot<-', 'possibleExtends', + 'prohibitGeneric', 'promptClass', 'promptMethods', 'prototype', 'Quote', 'rbind2', + 'reconcilePropertiesAndPrototype', 'registerImplicitGenerics', 'rematchDefinition', + 'removeClass', 'removeGeneric', 'removeMethod', 'removeMethods', 'removeMethodsObject', 'representation', + 'requireMethods', 'resetClass', 'resetGeneric', 'S3Class', 'S3Class<-', 'S3Part', 'S3Part<-', 'sealClass', + 'seemsS4Object', 'selectMethod', 'selectSuperClasses', 'sessionData', 'setAs', 'setClass', 'setClassUnion', + 'setDataPart', 'setGeneric', 'setGenericImplicit', 'setGroupGeneric', 'setIs', 'setMethod', 'setOldClass', + 'setPackageName', 'setPrimitiveMethods', 'setReplaceMethod', 'setValidity', 'show', 'showClass', 'showDefault', + 'showExtends', 'showMethods', 'showMlist', 'signature', 'SignatureMethod', 'sigToEnv', 'slot', 'slot<-', + 'slotNames', 'slotsFromS3', 'substituteDirect', 'substituteFunctionArgs', 'Summary', 'superClassDepth', + 'testInheritedMethods', 'testVirtual', 'traceOff', 'traceOn', 'tryNew', 'trySilent', 'unRematchDefinition', + 'validObject', 'validSlotNames', + ), + 7 => array( // stats pkg + 'acf', 'acf2AR', 'add.scope', 'add1', 'addmargins', 'aggregate', + 'aggregate.data.frame', 'aggregate.default', 'aggregate.ts', 'AIC', + 'alias', 'anova', 'anova.glm', 'anova.glmlist', 'anova.lm', 'anova.lmlist', + 'anova.mlm', 'anovalist.lm', 'ansari.test', 'aov', 'approx', 'approxfun', + 'ar', 'ar.burg', 'ar.mle', 'ar.ols', 'ar.yw', 'arima', 'arima.sim', + 'arima0', 'arima0.diag', 'ARMAacf', 'ARMAtoMA', 'as.dendrogram', 'as.dist', + 'as.formula', 'as.hclust', 'as.stepfun', 'as.ts', 'asOneSidedFormula', 'ave', + 'bandwidth.kernel', 'bartlett.test', 'binom.test', 'binomial', 'biplot', + 'Box.test', 'bw.bcv', 'bw.nrd', 'bw.nrd0', 'bw.SJ', 'bw.ucv', 'C', 'cancor', + 'case.names', 'ccf', 'chisq.test', 'clearNames', 'cmdscale', 'coef', 'coefficients', + 'complete.cases', 'confint', 'confint.default', 'constrOptim', 'contr.helmert', + 'contr.poly', 'contr.SAS', 'contr.sum', 'contr.treatment', 'contrasts', 'contrasts<-', + 'convolve', 'cooks.distance', 'cophenetic', 'cor', 'cor.test', 'cov', 'cov.wt', + 'cov2cor', 'covratio', 'cpgram', 'cutree', 'cycle', 'D', 'dbeta', 'dbinom', 'dcauchy', + 'dchisq', 'decompose', 'delete.response', 'deltat', 'dendrapply', 'density', 'density.default', + 'deriv', 'deriv.default', 'deriv.formula', 'deriv3', 'deriv3.default', 'deriv3.formula', + 'deviance', 'dexp', 'df', 'df.kernel', 'df.residual', 'dfbeta', 'dfbetas', 'dffits', + 'dgamma', 'dgeom', 'dhyper', 'diff.ts', 'diffinv', 'dist', 'dlnorm', 'dlogis', + 'dmultinom', 'dnbinom', 'dnorm', 'dpois', 'drop.scope', 'drop.terms', 'drop1', + 'dsignrank', 'dt', 'dummy.coef', 'dunif', 'dweibull', 'dwilcox', 'ecdf', 'eff.aovlist', + 'effects', 'embed', 'end', 'estVar', 'expand.model.frame', 'extractAIC', 'factanal', + 'factor.scope', 'family', 'fft', 'filter', 'fisher.test', 'fitted', 'fitted.values', + 'fivenum', 'fligner.test', 'formula', 'frequency', 'friedman.test', 'ftable', 'Gamma', + 'gaussian', 'get_all_vars', 'getInitial', 'glm', 'glm.control', 'glm.fit', 'glm.fit.null', + 'hasTsp', 'hat', 'hatvalues', 'hatvalues.lm', 'hclust', 'heatmap', 'HoltWinters', 'influence', + 'influence.measures', 'integrate', 'interaction.plot', 'inverse.gaussian', 'IQR', + 'is.empty.model', 'is.leaf', 'is.mts', 'is.stepfun', 'is.ts', 'is.tskernel', 'isoreg', + 'KalmanForecast', 'KalmanLike', 'KalmanRun', 'KalmanSmooth', 'kernapply', 'kernel', 'kmeans', + 'knots', 'kruskal.test', 'ks.test', 'ksmooth', 'lag', 'lag.plot', 'line', 'lines.ts', 'lm', + 'lm.fit', 'lm.fit.null', 'lm.influence', 'lm.wfit', 'lm.wfit.null', 'loadings', 'loess', + 'loess.control', 'loess.smooth', 'logLik', 'loglin', 'lowess', 'ls.diag', 'ls.print', 'lsfit', + 'mad', 'mahalanobis', 'make.link', 'makeARIMA', 'makepredictcall', 'manova', 'mantelhaen.test', + 'mauchley.test', 'mauchly.test', 'mcnemar.test', 'median', 'median.default', 'medpolish', + 'model.extract', 'model.frame', 'model.frame.aovlist', 'model.frame.default', 'model.frame.glm', + 'model.frame.lm', 'model.matrix', 'model.matrix.default', 'model.matrix.lm', 'model.offset', + 'model.response', 'model.tables', 'model.weights', 'monthplot', 'mood.test', 'mvfft', 'na.action', + 'na.contiguous', 'na.exclude', 'na.fail', 'na.omit', 'na.pass', 'napredict', 'naprint', 'naresid', + 'nextn', 'nlm', 'nlminb', 'nls', 'nls.control', 'NLSstAsymptotic', 'NLSstClosestX', 'NLSstLfAsymptote', + 'NLSstRtAsymptote', 'numericDeriv', 'offset', 'oneway.test', 'optim', 'optimise', 'optimize', + 'order.dendrogram', 'p.adjust', 'p.adjust.methods', 'pacf', 'pairwise.prop.test', 'pairwise.t.test', + 'pairwise.table', 'pairwise.wilcox.test', 'pbeta', 'pbinom', 'pbirthday', 'pcauchy', 'pchisq', 'pexp', + 'pf', 'pgamma', 'pgeom', 'phyper', 'plclust', 'plnorm', 'plogis', 'plot.density', 'plot.ecdf', 'plot.lm', + 'plot.mlm', 'plot.spec', 'plot.spec.coherency', 'plot.spec.phase', 'plot.stepfun', 'plot.ts', 'plot.TukeyHSD', + 'pnbinom', 'pnorm', 'poisson', 'poisson.test', 'poly', 'polym', 'power', 'power.anova.test', 'power.prop.test', + 'power.t.test', 'PP.test', 'ppoints', 'ppois', 'ppr', 'prcomp', 'predict', 'predict.glm', 'predict.lm', + 'predict.mlm', 'predict.poly', 'preplot', 'princomp', 'print.anova', 'print.coefmat', 'print.density', + 'print.family', 'print.formula', 'print.ftable', 'print.glm', 'print.infl', 'print.integrate', 'print.lm', + 'print.logLik', 'print.terms', 'print.ts', 'printCoefmat', 'profile', 'proj', 'promax', 'prop.test', + 'prop.trend.test', 'psignrank', 'pt', 'ptukey', 'punif', 'pweibull', 'pwilcox', 'qbeta', 'qbinom', + 'qbirthday', 'qcauchy', 'qchisq', 'qexp', 'qf', 'qgamma', 'qgeom', 'qhyper', 'qlnorm', 'qlogis', + 'qnbinom', 'qnorm', 'qpois', 'qqline', 'qqnorm', 'qqnorm.default', 'qqplot', 'qsignrank', 'qt', + 'qtukey', 'quade.test', 'quantile', 'quantile.default', 'quasi', 'quasibinomial', 'quasipoisson', + 'qunif', 'qweibull', 'qwilcox', 'r2dtable', 'rbeta', 'rbinom', 'rcauchy', 'rchisq', 'read.ftable', + 'rect.hclust', 'reformulate', 'relevel', 'reorder', 'replications', 'reshape', 'reshapeLong', 'reshapeWide', + 'resid', 'residuals', 'residuals.default', 'residuals.glm', 'residuals.lm', 'rexp', 'rf', 'rgamma', 'rgeom', + 'rhyper', 'rlnorm', 'rlogis', 'rmultinom', 'rnbinom', 'rnorm', 'rpois', 'rsignrank', 'rstandard', 'rstandard.glm', + 'rstandard.lm', 'rstudent', 'rstudent.glm', 'rstudent.lm', 'rt', 'runif', 'runmed', 'rweibull', 'rwilcox', + 'scatter.smooth', 'screeplot', 'sd', 'se.contrast', 'selfStart', 'setNames', 'shapiro.test', 'simulate', + 'smooth', 'smooth.spline', 'smoothEnds', 'sortedXyData', 'spec.ar', 'spec.pgram', 'spec.taper', 'spectrum', + 'spline', 'splinefun', 'splinefunH', 'SSasymp', 'SSasympOff', 'SSasympOrig', 'SSbiexp', 'SSD', 'SSfol', + 'SSfpl', 'SSgompertz', 'SSlogis', 'SSmicmen', 'SSweibull', 'start', 'stat.anova', 'step', 'stepfun', 'stl', + 'StructTS', 'summary.aov', 'summary.aovlist', 'summary.glm', 'summary.infl', 'summary.lm', 'summary.manova', + 'summary.mlm', 'summary.stepfun', 'supsmu', 'symnum', 't.test', 'termplot', 'terms', 'terms.aovlist', + 'terms.default', 'terms.formula', 'terms.terms', 'time', 'toeplitz', 'ts', 'ts.intersect', 'ts.plot', + 'ts.union', 'tsdiag', 'tsp', 'tsp<-', 'tsSmooth', 'TukeyHSD', 'TukeyHSD.aov', 'uniroot', 'update', + 'update.default', 'update.formula', 'var', 'var.test', 'variable.names', 'varimax', 'vcov', 'weighted.mean', + 'weighted.residuals', 'weights', 'wilcox.test', 'window', 'window<-', 'write.ftable', 'xtabs', + ), + 8 => array( // utils pkg + 'alarm', 'apropos', 'argsAnywhere', 'as.person', 'as.personList', 'as.relistable', 'as.roman', + 'assignInNamespace', 'available.packages', 'browseEnv', 'browseURL', 'browseVignettes', 'bug.report', + 'capture.output', 'checkCRAN', 'chooseCRANmirror', 'citation', 'citEntry', 'citFooter', 'citHeader', + 'close.socket', 'combn', 'compareVersion', 'contrib.url', 'count.fields', 'CRAN.packages', 'data', + 'data.entry', 'dataentry', 'de', 'de.ncols', 'de.restore', 'de.setup', 'debugger', 'demo', 'download.file', + 'download.packages', 'dump.frames', 'edit', 'emacs', 'example', 'file_test', 'file.edit', 'find', 'fix', + 'fixInNamespace', 'flush.console', 'formatOL', 'formatUL', 'getAnywhere', 'getCRANmirrors', 'getFromNamespace', + 'getS3method', 'getTxtProgressBar', 'glob2rx', 'head', 'head.matrix', 'help', 'help.request', 'help.search', + 'help.start', 'history', 'index.search', 'install.packages', 'installed.packages', 'is.relistable', + 'limitedLabels', 'loadhistory', 'localeToCharset', 'ls.str', 'lsf.str', 'make.packages.html', 'make.socket', + 'makeRweaveLatexCodeRunner', 'memory.limit', 'memory.size', 'menu', 'methods', 'mirror2html', 'modifyList', + 'new.packages', 'normalizePath', 'nsl', 'object.size', 'old.packages', 'package.contents', 'package.skeleton', + 'packageDescription', 'packageStatus', 'page', 'person', 'personList', 'pico', 'prompt', 'promptData', + 'promptPackage', 'rc.getOption', 'rc.options', 'rc.settings', 'rc.status', 'read.csv', 'read.csv2', 'read.delim', + 'read.delim2', 'read.DIF', 'read.fortran', 'read.fwf', 'read.socket', 'read.table', 'readCitationFile', 'recover', + 'relist', 'remove.packages', 'Rprof', 'Rprofmem', 'RShowDoc', 'RSiteSearch', 'rtags', 'Rtangle', 'RtangleSetup', + 'RtangleWritedoc', 'RweaveChunkPrefix', 'RweaveEvalWithOpt', 'RweaveLatex', 'RweaveLatexFinish', 'RweaveLatexOptions', + 'RweaveLatexSetup', 'RweaveLatexWritedoc', 'RweaveTryStop', 'savehistory', 'select.list', 'sessionInfo', + 'setRepositories', 'setTxtProgressBar', 'stack', 'Stangle', 'str', 'strOptions', 'summaryRprof', 'Sweave', + 'SweaveHooks', 'SweaveSyntaxLatex', 'SweaveSyntaxNoweb', 'SweaveSyntConv', 'tail', 'tail.matrix', 'timestamp', + 'toBibtex', 'toLatex', 'txtProgressBar', 'type.convert', 'unstack', 'unzip', 'update.packages', 'update.packageStatus', + 'upgrade', 'url.show', 'URLdecode', 'URLencode', 'vi', 'View', 'vignette', 'write.csv', 'write.csv2', 'write.socket', + 'write.table', 'wsbrowser', 'xedit', 'xemacs', 'zip.file.extract', + ), + ), + 'SYMBOLS' => array( + '(', ')', '{', '}', '[', ']', '!', '%', '^', '&', '/','+','-','*','=','<','>',';','|','<-','->', + '^', '-', ':', '::', ':::', '!', '!=', '*', '?', + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => true, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + 5 => true, + 6 => true, + 7 => true, + 8 => true, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #0000FF; font-weight: bold;', + 2 => 'color: #0000FF; font-weight: bold;', + 3 => 'color: #CC9900; font-weight: bold;', + 4 => 'color: #0000FF; font-weight: bold;', + 5 => 'color: #0000FF; font-weight: bold;', + 6 => 'color: #0000FF; font-weight: bold;', + 7 => 'color: #0000FF; font-weight: bold;', + 8 => 'color: #0000FF; font-weight: bold;' + ), + 'COMMENTS' => array( + 1 => 'color: #228B22;', + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;', + ), + 'BRACKETS' => array( + 0 => 'color: #080;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #ff0000;' + ), + 'METHODS' => array( + 1 => '', + 2 => '' + ), + 'SYMBOLS' => array( + 0 => 'color: #080;' + ), + 'REGEXPS' => array( + 0 => 'color:#A020F0;' + ), + 'SCRIPT' => array( + 0 => '' + ) + ), + 'URLS' => array( + 1 => '', + 2 => 'http://astrostatistics.psu.edu/su07/R/html/graphics/html/{FNAME}.html', // http://sekhon.berkeley.edu/library/graphics/html/{FNAME}.html + 3 => 'http://astrostatistics.psu.edu/su07/R/html/stats/html/Normal.html', // http://sekhon.berkeley.edu/library/stats/html/Normal.html + 4 => 'http://astrostatistics.psu.edu/su07/R/html/stats/html/{FNAME}.html', // http://sekhon.berkeley.edu/library/stats/html/{FNAME}.html + 5 => 'http://astrostatistics.psu.edu/su07/R/html/stats/html/summary.lm.html', // http://sekhon.berkeley.edu/library/stats/html/summary.lm.html + 6 => 'http://astrostatistics.psu.edu/su07/R/html/base/html/Log.html', // http://sekhon.berkeley.edu/library/base/html/Log.html + 7 => '', + 8 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.', + 2 => '::' + ), + 'REGEXPS' => array( + 0 => array( + GESHI_SEARCH => "([^\w])'([^\\n\\r']*)'", + GESHI_REPLACE => '\\2', + GESHI_MODIFIERS => '', + GESHI_BEFORE => "\\1'", + GESHI_AFTER => "'" + ) + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\|\#;>|^&\\.])(?<!\/html\/)", + 'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_\|%\\-&;\\.])" + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/ruby.php b/inc/geshi/ruby.php index 8c2b7d829..47ecbb2e2 100644 --- a/inc/geshi/ruby.php +++ b/inc/geshi/ruby.php @@ -4,7 +4,7 @@ * -------- * Author: Moises Deniz * Copyright: (c) 2007 Moises Deniz - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2007/03/21 * * Ruby language file for GeSHi. @@ -40,6 +40,10 @@ $language_data = array ( 'LANG_NAME' => 'Ruby', 'COMMENT_SINGLE' => array(1 => "#"), 'COMMENT_MULTI' => array("=begin" => "=end"), + 'COMMENT_REGEXP' => array( + //Heredoc + 4 => '/<<\s*?(\w+)\\n.*?\\n\\1(?![a-zA-Z0-9])/si', + ), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array('"', '`','\''), 'ESCAPE_CHAR' => '\\', @@ -50,7 +54,7 @@ $language_data = array ( 'ensure', 'for', 'if', 'in', 'module', 'while', 'next', 'not', 'or', 'redo', 'rescue', 'yield', 'retry', 'super', 'then', 'undef', 'unless', - 'until', 'when', 'BEGIN', 'END', 'include' + 'until', 'when', 'include' ), 2 => array( '__FILE__', '__LINE__', 'false', 'nil', 'self', 'true', @@ -145,6 +149,7 @@ $language_data = array ( ), 'COMMENTS' => array( 1 => 'color:#008000; font-style:italic;', + 4 => 'color: #cc0000; font-style: italic;', 'MULTI' => 'color:#000080; font-style:italic;' ), 'ESCAPE_CHAR' => array( @@ -223,4 +228,4 @@ $language_data = array ( 'TAB_WIDTH' => 2 ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/sas.php b/inc/geshi/sas.php index bc6899716..c4d426fa0 100644 --- a/inc/geshi/sas.php +++ b/inc/geshi/sas.php @@ -4,7 +4,7 @@ * ------- * Author: Galen Johnson (solitaryr@gmail.com) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2005/12/27 * * SAS language file for GeSHi. Based on the sas vim file. diff --git a/inc/geshi/scala.php b/inc/geshi/scala.php index 0eae52d92..202c06c83 100644 --- a/inc/geshi/scala.php +++ b/inc/geshi/scala.php @@ -4,7 +4,7 @@ * ---------- * Author: Franco Lombardo (franco@francolombardo.net) * Copyright: (c) 2008 Franco Lombardo, Benny Baumann - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/02/08 * * Scala language file for GeSHi. diff --git a/inc/geshi/scheme.php b/inc/geshi/scheme.php index 1fffcb248..2e2430bff 100644 --- a/inc/geshi/scheme.php +++ b/inc/geshi/scheme.php @@ -4,7 +4,7 @@ * ---------- * Author: Jon Raphaelson (jonraphaelson@gmail.com) * Copyright: (c) 2005 Jon Raphaelson, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/08/30 * * Scheme language file for GeSHi. diff --git a/inc/geshi/scilab.php b/inc/geshi/scilab.php index 3d66d810a..d1ff6fc16 100644 --- a/inc/geshi/scilab.php +++ b/inc/geshi/scilab.php @@ -4,7 +4,7 @@ * -------- * Author: Christophe David (geshi@christophedavid.org) * Copyright: (c) 2008 Christophe David (geshi@christophedavid.org) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/08/04 * * SciLab language file for GeSHi. diff --git a/inc/geshi/sdlbasic.php b/inc/geshi/sdlbasic.php index b756df514..876dc09a6 100644 --- a/inc/geshi/sdlbasic.php +++ b/inc/geshi/sdlbasic.php @@ -4,7 +4,7 @@ * ------------ * Author: Roberto Rossi * Copyright: (c) 2005 Roberto Rossi (http://rsoftware.altervista.org) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2005/08/19 * * sdlBasic (http://sdlbasic.sf.net) language file for GeSHi. diff --git a/inc/geshi/smalltalk.php b/inc/geshi/smalltalk.php index b4d67cc71..b475ad711 100644 --- a/inc/geshi/smalltalk.php +++ b/inc/geshi/smalltalk.php @@ -4,7 +4,7 @@ * -------- * Author: Bananeweizen (Bananeweizen@gmx.de) * Copyright: (c) 2005 Bananeweizen (www.bananeweizen.de) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2005/03/27 * * Smalltalk language file for GeSHi. @@ -46,7 +46,9 @@ $language_data = array ( 'QUOTEMARKS' => array("'"), 'ESCAPE_CHAR' => '', 'KEYWORDS' => array( - 1 => array('self','super','true','false','nil') + 1 => array( + 'self','super','true','false','nil' + ) ), 'SYMBOLS' => array( '[', ']', '=' , ':=', '(', ')', '#' @@ -85,7 +87,6 @@ $language_data = array ( 1 => 'color: #7f0000;', 2 => 'color: #7f0000;', 3 => 'color: #00007f;', - 4 => 'color: #7f007f;', 5 => 'color: #00007f;', 6 => 'color: #00007f;' ), @@ -128,15 +129,8 @@ $language_data = array ( GESHI_BEFORE => '|', GESHI_AFTER => '|' ), - 4 => array( - GESHI_SEARCH => '(self|super|true|false|nil)', //keywords again (to avoid matching in next regexp) - GESHI_REPLACE => '\\1', - GESHI_MODIFIERS => '', - GESHI_BEFORE => '', - GESHI_AFTER => '' - ), 5 => array( - GESHI_SEARCH => '([:(,=[.*\/+-]\s*)([a-zA-Z0-9_]+)', //message parameters, message receivers + GESHI_SEARCH => '([:(,=[.*\/+-]\s*(?!\d+\/))([a-zA-Z0-9_]+)', //message parameters, message receivers GESHI_REPLACE => '\\2', GESHI_MODIFIERS => 's', GESHI_BEFORE => '\\1', @@ -157,4 +151,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/smarty.php b/inc/geshi/smarty.php index dcc11f61d..7f4489289 100644 --- a/inc/geshi/smarty.php +++ b/inc/geshi/smarty.php @@ -4,7 +4,7 @@ * ---------- * Author: Alan Juden (alan@judenware.org) * Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/07/10 * * Smarty template language file for GeSHi. diff --git a/inc/geshi/sql.php b/inc/geshi/sql.php index ba91191d1..9e45e850d 100644 --- a/inc/geshi/sql.php +++ b/inc/geshi/sql.php @@ -4,7 +4,7 @@ * ------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/06/04 * * SQL language file for GeSHi. @@ -51,7 +51,7 @@ $language_data = array ( 'LANG_NAME' => 'SQL', - 'COMMENT_SINGLE' => array(1 =>'--', 2 => '#'), + 'COMMENT_SINGLE' => array(1 =>'--'), 'COMMENT_MULTI' => array('/*' => '*/'), 'CASE_KEYWORDS' => 1, 'QUOTEMARKS' => array("'", '"', '`'), @@ -97,7 +97,7 @@ $language_data = array ( ), 'COMMENTS' => array( 1 => 'color: #808080; font-style: italic;', - 2 => 'color: #808080; font-style: italic;', + //2 => 'color: #808080; font-style: italic;', 'MULTI' => 'color: #808080; font-style: italic;' ), 'ESCAPE_CHAR' => array( @@ -137,4 +137,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/systemverilog.php b/inc/geshi/systemverilog.php new file mode 100644 index 000000000..19405c097 --- /dev/null +++ b/inc/geshi/systemverilog.php @@ -0,0 +1,317 @@ +<?php +/************************************************************************************ + * systemverilog.php + * ------- + * Author: Sean O'Boyle + * Copyright: (C) 2008 IntelligentDV + * Release Version: 1.0.8.8 + * Date Started: 2008/06/25 + * + * SystemVerilog IEEE 1800-2009(draft8) language file for GeSHi. + * + * CHANGES + * ------- + * 2008/06/25 (1.0.0) + * - First Release + * + * TODO (updated 2008/06/25) + * ------------------------- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + ************************************************************************ + * Title: SystemVerilog Language Keywords File for GeSHi + * Description: This file contains the SV keywords defined in the + * IEEE1800-2009 Draft Standard in the format expected by + * GeSHi. + * + * Original Author: Sean O'Boyle + * Contact: seanoboyle@intelligentdv.com + * Company: Intelligent Design Verification + * Company URL: http://intelligentdv.com + * + * Download the most recent version here: + * http://intelligentdv.com/downloads + * + * File Bugs Here: http://bugs.intelligentdv.com + * Project: SyntaxFiles + * + * File: systemverilog.php + * $LastChangedBy: seanoboyle $ + * $LastChangedDate: 2009-07-22 22:20:25 -0700 (Wed, 22 Jul 2009) $ + * $LastChangedRevision: 17 $ + * + ************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'SystemVerilog', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'COMMENT_REGEXP' => array(1 => '/\/\/(?:\\\\\\\\|\\\\\\n|.)*$/m'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + // system tasks + 1 => array( + 'acos','acosh','asin','asinh','assertfailoff','assertfailon', + 'assertkill','assertnonvacuouson','assertoff','asserton', + 'assertpassoff','assertpasson','assertvacuousoff','async$and$array', + 'async$and$plane','async$nand$array','async$nand$plane', + 'async$nor$array','async$nor$plane','async$or$array', + 'async$or$plane','atan','atan2','atanh','bits','bitstoreal', + 'bitstoshortreal','cast','ceil','changed','changed_gclk', + 'changing_gclk','clog2','cos','cosh','countones','coverage_control', + 'coverage_get','coverage_get_max','coverage_merge','coverage_save', + 'dimensions','display','displayb','displayh','displayo', + 'dist_chi_square','dist_erlang','dist_exponential','dist_normal', + 'dist_poisson','dist_t','dist_uniform','dumpall','dumpfile', + 'dumpflush','dumplimit','dumpoff','dumpon','dumpports', + 'dumpportsall','dumpportsflush','dumpportslimit','dumpportsoff', + 'dumpportson','dumpvars','error','exit','exp','falling_gclk', + 'fclose','fdisplay','fdisplayb','fdisplayh','fdisplayo','fell', + 'fell_gclk','feof','ferror','fflush','fgetc','fgets','finish', + 'floor','fmonitor','fmonitorb','fmonitorh','fmonitoro','fopen', + 'fread','fscanf','fseek','fstrobe','fstrobeb','fstrobeh','fstrobeo', + 'ftell','future_gclk','fwrite','fwriteb','fwriteh','fwriteo', + 'get_coverage','high','hypot','increment','info','isunbounded', + 'isunknown','itor','left','ln','load_coverage_db','log10','low', + 'monitor','monitorb','monitorh','monitoro','monitoroff','monitoron', + 'onehot','onehot0','past','past_gclk','pow','printtimescale', + 'q_add','q_exam','q_full','q_initialize','q_remove','random', + 'readmemb','readmemh','realtime','realtobits','rewind','right', + 'rising_gclk','rose','rose_gclk','rtoi','sampled', + 'set_coverage_db_name','sformat','sformatf','shortrealtobits', + 'signed','sin','sinh','size','sqrt','sscanf','stable','stable_gclk', + 'steady_gclk','stime','stop','strobe','strobeb','strobeh','strobeo', + 'swrite','swriteb','swriteh','swriteo','sync$and$array', + 'sync$and$plane','sync$nand$array','sync$nand$plane', + 'sync$nor$array','sync$nor$plane','sync$or$array','sync$or$plane', + 'system','tan','tanh','test$plusargs','time','timeformat', + 'typename','ungetc','unpacked_dimensions','unsigned', + 'value$plusargs','warning','write','writeb','writeh','writememb', + 'writememh','writeo', + ), + // compiler directives + 2 => array( + '`__FILE__', '`__LINE__', '`begin_keywords', '`case', '`celldefine', + '`endcelldefine', '`default_nettype', '`define', '`default', '`else', + '`elsif', '`end_keywords', '`endfor', '`endif', + '`endprotect', '`endswitch', '`endwhile', '`for', '`format', + '`if', '`ifdef', '`ifndef', '`include', '`let', + '`line', '`nounconnected_drive', '`pragma', '`protect', '`resetall', + '`switch', '`timescale', '`unconnected_drive', '`undef', '`undefineall', + '`while' + ), + // keywords + 3 => array( + 'assert', 'assume', 'cover', 'expect', 'disable', + 'iff', 'binsof', 'intersect', 'first_match', 'throughout', + 'within', 'coverpoint', 'cross', 'wildcard', 'bins', + 'ignore_bins', 'illegal_bins', 'genvar', 'if', 'else', + 'unique', 'priority', 'matches', 'default', 'forever', + 'repeat', 'while', 'for', 'do', 'foreach', + 'break', 'continue', 'return', 'pulsestyle_onevent', 'pulsestyle_ondetect', + 'noshowcancelled', 'showcancelled', 'ifnone', 'posedge', 'negedge', + 'edge', 'wait', 'wait_order', 'timeunit', 'timeprecision', + 's', 'ms', 'us', 'ns', + 'ps', 'fs', 'step', 'new', 'extends', + 'this', 'super', 'protected', 'local', 'rand', + 'randc', 'bind', 'constraint', 'solve', 'before', + 'dist', 'inside', 'with', 'virtual', 'extern', + 'pure', 'forkjoin', 'design', 'instance', 'cell', + 'liblist', 'use', 'library', 'incdir', 'include', + 'modport', 'sync_accept_on', 'reject_on', 'accept_on', + 'sync_reject_on', 'restrict', 'let', 'until', 'until_with', + 'unique0', 'eventually', 's_until', 's_always', 's_eventually', + 's_nexttime', 's_until_with', 'global', 'untyped', 'implies', + 'weak', 'strong', 'nexttime' + ), + // block keywords + 4 => array( + 'begin', 'end', 'package', 'endpackage', 'macromodule', + 'module', 'endmodule', 'generate', 'endgenerate', 'program', + 'endprogram', 'class', 'endclass', 'function', 'endfunction', + 'case', 'casex', 'casez', 'randcase', 'endcase', + 'interface', 'endinterface', 'clocking', 'endclocking', 'task', + 'endtask', 'primitive', 'endprimitive', 'fork', 'join', + 'join_any', 'join_none', 'covergroup', 'endgroup', 'checker', + 'endchecker', 'property', 'endproperty', 'randsequence', 'sequence', + 'endsequence', 'specify', 'endspecify', 'config', 'endconfig', + 'table', 'endtable', 'initial', 'final', 'always', + 'always_comb', 'always_ff', 'always_latch', 'alias', 'assign', + 'force', 'release' + ), + + // types + 5 => array( + 'parameter', 'localparam', 'specparam', 'input', 'output', + 'inout', 'ref', 'byte', 'shortint', 'int', + 'integer', 'longint', 'time', 'bit', 'logic', + 'reg', 'supply0', 'supply1', 'tri', 'triand', + 'trior', 'trireg', 'tri0', 'tri1', 'wire', + 'uwire', 'wand', 'wor', 'signed', 'unsigned', + 'shortreal', 'real', 'realtime', 'type', 'void', + 'struct', 'union', 'tagged', 'const', 'var', + 'automatic', 'static', 'packed', 'vectored', 'scalared', + 'typedef', 'enum', 'string', 'chandle', 'event', + 'null', 'pullup', 'pulldown', 'cmos', 'rcmos', + 'nmos', 'pmos', 'rnmos', 'rpmos', 'and', + 'nand', 'or', 'nor', 'xor', 'xnor', + 'not', 'buf', 'tran', 'rtran', 'tranif0', + 'tranif1', 'rtranif0', 'rtranif1', 'bufif0', 'bufif1', + 'notif0', 'notif1', 'strong0', 'strong1', 'pull0', + 'pull1', 'weak0', 'weak1', 'highz0', 'highz1', + 'small', 'medium', 'large' + ), + + // DPI + 6 => array( + 'DPI', 'DPI-C', 'import', 'export', 'context' + ), + + // stdlib + 7 => array( + 'randomize', 'mailbox', 'semaphore', 'put', 'get', + 'try_put', 'try_get', 'peek', 'try_peek', 'process', + 'state', 'self', 'status', 'kill', 'await', + 'suspend', 'resume', 'size', 'delete', 'insert', + 'num', 'first', 'last', 'next', 'prev', + 'pop_front', 'pop_back', 'push_front', 'push_back', 'find', + 'find_index', 'find_first', 'find_last', 'find_last_index', 'min', + 'max', 'unique_index', 'reverse', 'sort', 'rsort', + 'shuffle', 'sum', 'product', 'List', 'List_Iterator', + 'neq', 'eq', 'data', 'empty', 'front', + 'back', 'start', 'finish', 'insert_range', 'erase', + 'erase_range', 'set', 'swap', 'clear', 'purge' + ), + + // key_deprecated + 8 => array( + 'defparam', 'deassign', 'TODO' + ), + + ), + 'SYMBOLS' => array( + '(', ')', '{', '}', '[', ']', '=', '+', '-', '*', '/', '!', '%', + '^', '&', '|', '~', + '?', ':', + '#', '<<', '<<<', + '>', '<', '>=', '<=', + '@', ';', ',' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + 5 => true, + 6 => true, + 7 => true, + 8 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #996666; font-weight: bold;', + 2 => 'color: #336600; font-weight: bold;', + 3 => 'color: #996600; font-weight: bold;', + 4 => 'color: #000033; font-weight: bold;', + 5 => 'color: #330033; font-weight: bold;', + 6 => 'color: #996600; font-weight: bold;', + 7 => 'color: #CC9900; font-weight: bold;', + 8 => 'color: #990000; font-weight: bold;' + ), + 'COMMENTS' => array( + 1 => 'color: #00008B; font-style: italic;', + 'MULTI' => 'color: #00008B; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #9F79EE' + ), + 'BRACKETS' => array( + 0 => 'color: #9F79EE;' + ), + 'STRINGS' => array( + 0 => 'color: #FF00FF;' + ), + 'NUMBERS' => array( + 0 => 'color: #ff0055;' + ), + 'METHODS' => array( + 1 => 'color: #202020;', + 2 => 'color: #202020;' + ), + 'SYMBOLS' => array( + 0 => 'color: #5D478B;' + ), + 'REGEXPS' => array( + 0 => 'color: #ff0055;', + 1 => 'color: #ff0055;', + 2 => 'color: #ff0055;', + 3 => 'color: #ff0055;' + ), + 'SCRIPT' => array( + 0 => '', + 1 => '', + 2 => '', + 3 => '' + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + 1 => '' + ), + 'REGEXPS' => array( + // integer + 0 => "\d'[bdh][0-9_a-fA-FxXzZ]+", + // realtime + 1 => "\d*\.\d+[munpf]?s", + // time s, ms, us, ns, ps, of fs + 2 => "\d+[munpf]?s", + // real + 3 => "\d*\.\d+" + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + 0 => '' + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + 0 => true + ), + 'TAB_WIDTH' => 3, + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 1 => array( + 'DISALLOWED_BEFORE' => '(?<=$)' + ) + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/tcl.php b/inc/geshi/tcl.php index 25cb31d5b..2a07ccd46 100644 --- a/inc/geshi/tcl.php +++ b/inc/geshi/tcl.php @@ -4,7 +4,7 @@ * --------------------------------- * Author: Reid van Melle (rvanmelle@gmail.com) * Copyright: (c) 2004 Reid van Melle (sorry@nowhere) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2006/05/05 * * TCL/iTCL language file for GeSHi. @@ -54,7 +54,7 @@ $language_data = array ( 'COMMENT_MULTI' => array(), 'COMMENT_REGEXP' => array( 1 => '/(?<!\\\\)#(?:\\\\\\\\|\\\\\\n|.)*$/m', - 2 => '/{[^}\n]+}/' + //2 => '/{[^}\n]+}/' ), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array('"', "'"), @@ -138,7 +138,7 @@ $language_data = array ( ), 'COMMENTS' => array( 1 => 'color: #808080; font-style: italic;', - 2 => 'color: #483d8b;', +// 2 => 'color: #483d8b;', 'MULTI' => 'color: #808080; font-style: italic;' ), 'ESCAPE_CHAR' => array( @@ -191,4 +191,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/teraterm.php b/inc/geshi/teraterm.php index 5ac9f8743..443bf7b4c 100644 --- a/inc/geshi/teraterm.php +++ b/inc/geshi/teraterm.php @@ -4,7 +4,7 @@ * -------- * Author: Boris Maisuradze (boris at logmett.com) * Copyright: (c) 2008 Boris Maisuradze (http://logmett.com) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/09/26 * * Tera Term Macro language file for GeSHi. diff --git a/inc/geshi/text.php b/inc/geshi/text.php index 9183895c2..66f459293 100644 --- a/inc/geshi/text.php +++ b/inc/geshi/text.php @@ -4,7 +4,7 @@ * -------- * Author: Sean Hanna (smokingrope@gmail.com) * Copyright: (c) 2006 Sean Hanna - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 04/23/2006 * * Standard Text File (No Syntax Highlighting). diff --git a/inc/geshi/thinbasic.php b/inc/geshi/thinbasic.php index b9c9742c7..693c698d6 100644 --- a/inc/geshi/thinbasic.php +++ b/inc/geshi/thinbasic.php @@ -4,7 +4,7 @@ * ------ * Author: Eros Olmi (eros.olmi@thinbasic.com) * Copyright: (c) 2006 Eros Olmi (http://www.thinbasic.com), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2006/05/12 * * thinBasic language file for GeSHi. diff --git a/inc/geshi/tsql.php b/inc/geshi/tsql.php index fca874954..b915b087d 100644 --- a/inc/geshi/tsql.php +++ b/inc/geshi/tsql.php @@ -4,7 +4,7 @@ * -------- * Author: Duncan Lock (dunc@dflock.co.uk) * Copyright: (c) 2006 Duncan Lock (http://dflock.co.uk/), Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2005/11/22 * * T-SQL language file for GeSHi. @@ -41,16 +41,16 @@ $language_data = array ( 'LANG_NAME' => 'T-SQL', 'COMMENT_SINGLE' => array(1 => '--'), 'COMMENT_MULTI' => array('/*' => '*/'), - 'CASE_KEYWORDS' => GESHI_CAPS_UPPER, + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, 'QUOTEMARKS' => array("'", '"'), - 'ESCAPE_CHAR' => '\\', + 'ESCAPE_CHAR' => '', 'KEYWORDS' => array( 1 => array( // Datatypes - 'bigint', 'int', 'smallint', 'tinyint', 'bit', 'decimal', 'numeric', 'money', - 'smallmoney', 'float', 'real', 'datetime', 'smalldatetime', 'char', 'varchar', - 'text', 'nchar', 'nvarchar', 'ntext', 'binary', 'varbinary', 'image', 'cursor', - 'sql_variant', 'table', 'timestamp', 'uniqueidentifier', + 'bigint', 'tinyint', 'money', + 'smallmoney', 'datetime', 'smalldatetime', + 'text', 'nvarchar', 'ntext', 'varbinary', 'image', + 'sql_variant', 'uniqueidentifier', // Keywords 'ABSOLUTE', 'ACTION', 'ADD', 'ADMIN', 'AFTER', 'AGGREGATE', 'ALIAS', 'ALLOCATE', 'ALTER', 'ARE', 'ARRAY', 'AS', diff --git a/inc/geshi/typoscript.php b/inc/geshi/typoscript.php index 1e8243c2e..525271428 100644 --- a/inc/geshi/typoscript.php +++ b/inc/geshi/typoscript.php @@ -4,7 +4,7 @@ * -------- * Author: Jan-Philipp Halle (typo3@jphalle.de) * Copyright: (c) 2005 Jan-Philipp Halle (http://www.jphalle.de/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2005/07/29 * * TypoScript language file for GeSHi. diff --git a/inc/geshi/unicon.php b/inc/geshi/unicon.php new file mode 100644 index 000000000..edad62df3 --- /dev/null +++ b/inc/geshi/unicon.php @@ -0,0 +1,210 @@ +<?php +/************************************************************************************* + * unicon.php + * -------- + * Author: Matt Oates (mattoates@gmail.com) + * Copyright: (c) 2010 Matt Oates (http://mattoates.co.uk) + * Release Version: 1.0.8.8 + * Date Started: 2010/04/20 + * + * Unicon the Unified Extended Dialect of Icon language file for GeSHi. + * + * CHANGES + * ------- + * 2010/04/24 (0.0.0.2) + * - Validated with Geshi langcheck.php FAILED due to preprocessor keywords looking like symbols + * - Hard wrapped to improve readability + * 2010/04/20 (0.0.0.1) + * - First Release + * + * TODO (updated 2010/04/20) + * ------------------------- + * - Do the & need replacing with &? + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array( + 'LANG_NAME' => 'Unicon (Unified Extended Dialect of Icon)', + 'COMMENT_SINGLE' => array(1 => '#'), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"', '\''), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( + 'break', 'case', 'class', 'continue', 'create', 'default', 'do', + 'else', 'end', 'every', 'fail', 'for', 'if', 'import', 'initial', 'initially', + 'invocable', 'link', 'method', 'next', 'not', 'of', 'package', 'procedure', 'record', + 'repeat', 'return', 'switch', 'suspend', 'then', 'to', 'until', 'while' + ), + 2 => array( + 'global', 'local', 'static' + ), + 3 => array( + 'allocated', 'ascii', 'clock', 'collections', + 'column', 'cset', 'current', 'date', 'dateline', 'digits', + 'dump', 'e', 'error', 'errornumber', 'errortext', + 'errorvalue', 'errout', 'eventcode', 'eventsource', 'eventvalue', + 'fail', 'features', 'file', 'host', 'input', 'lcase', + 'letters', 'level', 'line', 'main', 'now', 'null', + 'output', 'phi', 'pi', 'pos', 'progname', 'random', + 'regions', 'source', 'storage', 'subject', 'syserr', 'time', + 'trace', 'ucase', 'version', 'col', 'control', 'interval', + 'ldrag', 'lpress', 'lrelease', 'mdrag', 'meta', 'mpress', + 'mrelease', 'rdrag', 'resize', 'row', 'rpress', 'rrelease', + 'shift', 'window', 'x', 'y' + ), + 4 => array( + 'abs', 'acos', 'any', 'args', 'asin', 'atan', 'bal', 'center', 'char', + 'chmod', 'close', 'cofail', 'collect', 'copy', 'cos', 'cset', 'ctime', 'dbcolumns', + 'dbdriver', 'dbkeys', 'dblimits', 'dbproduction', 'dbtables', 'delay', 'delete', 'detab', + 'display', 'dtor', 'entab', 'errorclear', 'event', 'eventmask', 'EvGet', 'exit', 'exp', + 'fetch', 'fieldnames', 'find', 'flock', 'flush', 'function', 'get', 'getch', 'getche', + 'getenv', 'gettimeofday', 'globalnames', 'gtime', 'iand', 'icom', 'image', 'insert', + 'integer', 'ior', 'ishift', 'ixor', 'key', 'left', 'list', 'load', 'loadfunc', + 'localnames', 'log', 'many', 'map', 'match', 'member', 'mkdir', 'move', 'name', 'numeric', + 'open', 'opmask', 'ord', 'paramnames', 'parent', 'pipe', 'pop', 'pos', 'proc', 'pull', + 'push', 'put', 'read', 'reads', 'real', 'receive', 'remove', 'rename', 'repl', 'reverse', + 'right', 'rmdir', 'rtod', 'runerr', 'seek', 'select', 'send', 'seq', 'serial', 'set', + 'setenv', 'sort', 'sortf', 'sql', 'sqrt', 'stat', 'staticnames', 'stop', 'string', 'system', 'tab', + 'table', 'tan', 'trap', 'trim', 'truncate', 'type', 'upto', 'utime', 'variable', 'where', + 'write', 'writes' + ), + 5 => array( + 'Active', 'Alert', 'Bg', 'Clip', 'Clone', 'Color', 'ColorValue', + 'CopyArea', 'Couple', 'DrawArc', 'DrawCircle', 'DrawCurve', 'DrawCylinder', 'DrawDisk', + 'DrawImage', 'DrawLine', 'DrawPoint', 'DrawPolygon', 'DrawRectangle', 'DrawSegment', + 'DrawSphere', 'DrawString', 'DrawTorus', 'EraseArea', 'Event', 'Fg', 'FillArc', + 'FillCircle', 'FillPolygon', 'FillRectangle', 'Font', 'FreeColor', 'GotoRC', 'GotoXY', + 'IdentifyMatrix', 'Lower', 'MatrixMode', 'NewColor', 'PaletteChars', 'PaletteColor', + 'PaletteKey', 'Pattern', 'Pending', 'Pixel', 'PopMatrix', 'PushMatrix', 'PushRotate', + 'PushScale', 'PushTranslate', 'QueryPointer', 'Raise', 'ReadImage', 'Refresh', 'Rotate', + 'Scale', 'Texcoord', 'TextWidth', 'Texture', 'Translate', 'Uncouple', 'WAttrib', + 'WDefault', 'WFlush', 'WindowContents', 'WriteImage', 'WSync' + ), + 6 => array( + 'define', 'include', 'ifdef', 'ifndef', 'else', 'endif', 'error', + 'line', 'undef' + ), + 7 => array( + '_V9', '_AMIGA', '_ACORN', '_CMS', '_MACINTOSH', '_MSDOS_386', + '_MS_WINDOWS_NT', '_MSDOS', '_MVS', '_OS2', '_POR', 'T', '_UNIX', '_POSIX', '_DBM', + '_VMS', '_ASCII', '_EBCDIC', '_CO_EXPRESSIONS', '_CONSOLE_WINDOW', '_DYNAMIC_LOADING', + '_EVENT_MONITOR', '_EXTERNAL_FUNCTIONS', '_KEYBOARD_FUNCTIONS', '_LARGE_INTEGERS', + '_MULTITASKING', '_PIPES', '_RECORD_IO', '_SYSTEM_FUNCTION', '_MESSAGING', '_GRAPHICS', + '_X_WINDOW_SYSTEM', '_MS_WINDOWS', '_WIN32', '_PRESENTATION_MGR', '_ARM_FUNCTIONS', + '_DOS_FUNCTIONS' + ), + 8 => array( + 'line') + ), + 'SYMBOLS' => array( + 1 => array( + '(', ')', '{', '}', '[', ']', '+', '-', '*', '/', '\\', '%', '=', '<', '>', '!', '^', + '&', '|', '?', ':', ';', ',', '.', '~', '@' + ), + 2 => array( + '$(', '$)', '$<', '$>' + ) + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + 5 => true, + 6 => true, + 7 => true, + 8 => true + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #b1b100;', + 2 => 'color: #b1b100;', + 3 => 'color: #b1b100;', + 4 => 'color: #b1b100;', + 5 => 'color: #b1b100;', + 6 => 'color: #b1b100;', + 7 => 'color: #b1b100;', + 8 => 'color: #b1b100;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 'MULTI' => 'color: #666666; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => 'color: #0000ff;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;', + ), + 'METHODS' => array( + 0 => 'color: #004000;' + ), + 'SYMBOLS' => array( + 1 => 'color: #339933;' + ), + 'REGEXPS' => array(), + 'SCRIPT' => array() + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '', + 7 => '', + 8 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array(1 => '.'), + 'REGEXPS' => array(), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array(), + 'HIGHLIGHT_STRICT_BLOCK' => array(), + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 3 => array( + 'DISALLOWED_BEFORE' => '(?<=&)' + ), + 4 => array( + 'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9_\"\'])", + 'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_\"\'])" + ), + 6 => array( + 'DISALLOWED_BEFORE' => '(?<=\$)' + ), + 8 => array( + 'DISALLOWED_BEFORE' => '(?<=#)' + ) + ) + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/vala.php b/inc/geshi/vala.php new file mode 100644 index 000000000..334398a87 --- /dev/null +++ b/inc/geshi/vala.php @@ -0,0 +1,151 @@ +<?php +/************************************************************************************* + * vala.php + * ---------- + * Author: Nicolas Joseph (nicolas.joseph@valaide.org) + * Copyright: (c) 2009 Nicolas Joseph + * Release Version: 1.0.8.8 + * Date Started: 2009/04/29 + * + * Vala language file for GeSHi. + * + * CHANGES + * ------- + * + * TODO + * ---- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'Vala', + 'COMMENT_SINGLE' => array(1 => '//'), + 'COMMENT_MULTI' => array('/*' => '*/'), + 'COMMENT_REGEXP' => array( + //Using and Namespace directives (basic support) + //Please note that the alias syntax for using is not supported + 3 => '/(?:(?<=using[\\n\\s])|(?<=namespace[\\n\\s]))[\\n\\s]*([a-zA-Z0-9_]+\\.)*[a-zA-Z0-9_]+[\n\s]*(?=[;=])/i'), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array("'", '"'), + 'HARDQUOTE' => array('"""'), + 'HARDESCAPE' => array('"'), + 'ESCAPE_CHAR' => '\\', + 'KEYWORDS' => array( + 1 => array( + 'as', 'abstract', 'base', 'break', 'case', 'catch', 'const', + 'construct', 'continue', 'default', 'delete', 'dynamic', 'do', + 'else', 'ensures', 'extern', 'false', 'finally', 'for', 'foreach', + 'get', 'if', 'in', 'inline', 'internal', 'lock', 'namespace', + 'null', 'out', 'override', 'private', 'protected', 'public', 'ref', + 'requires', 'return', 'set', 'static', 'switch', 'this', 'throw', + 'throws', 'true', 'try', 'using', 'value', 'var', 'virtual', + 'volatile', 'void', 'yield', 'yields', 'while' + ), + 2 => array( + '#elif', '#endif', '#else', '#if' + ), + 3 => array( + 'is', 'new', 'owned', 'sizeof', 'typeof', 'unchecked', 'unowned', 'weak' + ), + 4 => array( + 'bool', 'char', 'class', 'delegate', 'double', 'enum', + 'errordomain', 'float', 'int', 'int8', 'int16', 'int32', 'int64', + 'interface', 'long', 'short', 'signal', 'size_t', 'ssize_t', + 'string', 'struct', 'uchar', 'uint', 'uint8', 'uint16', 'uint32', + 'ulong', 'unichar', 'ushort' + ) + ), + 'SYMBOLS' => array( + '+', '-', '*', '?', '=', '/', '%', '&', '>', '<', '^', '!', ':', ';', + '(', ')', '{', '}', '[', ']', '|' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => true, + 2 => true, + 3 => true, + 4 => true, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #0600FF;', + 2 => 'color: #FF8000; font-weight: bold;', + 3 => 'color: #008000;', + 4 => 'color: #FF0000;' + ), + 'COMMENTS' => array( + 1 => 'color: #008080; font-style: italic;', + 3 => 'color: #008080;', + 'MULTI' => 'color: #008080; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #008080; font-weight: bold;', + 'HARD' => 'color: #008080; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #000000;' + ), + 'STRINGS' => array( + 0 => 'color: #666666;', + 'HARD' => 'color: #666666;' + ), + 'NUMBERS' => array( + 0 => 'color: #FF0000;' + ), + 'METHODS' => array( + 1 => 'color: #0000FF;', + 2 => 'color: #0000FF;' + ), + 'SYMBOLS' => array( + 0 => 'color: #008000;' + ), + 'REGEXPS' => array( + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => '', + 4 => '' + ), + 'OOLANG' => true, + 'OBJECT_SPLITTERS' => array( + 1 => '.' + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4, + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 'DISALLOWED_BEFORE' => "(?<![a-zA-Z0-9\$_\|\#>|^])", + 'DISALLOWED_AFTER' => "(?![a-zA-Z0-9_<\|%\\-])" + ) + ) +); + +?> diff --git a/inc/geshi/vb.php b/inc/geshi/vb.php index bc43ca4a8..f24d86505 100644 --- a/inc/geshi/vb.php +++ b/inc/geshi/vb.php @@ -5,7 +5,7 @@ * Author: Roberto Rossi (rsoftware@altervista.org) * Copyright: (c) 2004 Roberto Rossi (http://rsoftware.altervista.org), * Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/08/30 * * Visual Basic language file for GeSHi. @@ -57,34 +57,53 @@ $language_data = array ( 'ESCAPE_CHAR' => '', 'KEYWORDS' => array( 1 => array( - 'AddressOf', 'Alias', 'And', 'Append', 'As', 'BF', 'Binary', - 'Boolean', 'ByRef', 'Byte', 'ByVal', 'Call', 'Case', 'CBool', - 'CByte', 'CCur', 'CDate', 'CDbl', 'CDec', 'CInt', 'CLng', - 'Close', 'Collection', 'Const', 'Control', 'CSng', 'CStr', - 'Currency', 'CVar', 'Date', 'Declare', 'Dim', 'Do', 'Double', - 'Each', 'Else', 'ElseIf', 'End', 'Enum', 'Erase', 'Error', - 'Event', 'Exit', 'Explicit', 'False', 'For', 'Friend', - 'Function', 'Get', 'GoSub', 'Goto', 'If', 'Implements', 'In', - 'Input', 'Integer', 'Is', 'LBound', 'Let', 'Lib', 'Like', - 'Line', 'Long', 'Loop', 'Mod', 'New', 'Next', 'Not', - 'Nothing', 'Object', 'On', 'Open', 'Option', 'Optional', - 'Or', 'Output', 'ParamArray', 'Preserve', 'Print', 'Private', - 'Property', 'Public', 'RaiseEvent', 'Random', 'ReDim', - 'Resume', 'Select', 'Set', 'Single', 'Static', 'Step', - 'Stop', 'String', 'Sub', 'Then', 'To', 'True', 'Type', - 'TypeOf', 'UBound', 'Until', 'Variant', 'While', 'With', - 'WithEvents', 'Xor' - ) + 'Binary', 'Boolean', 'Byte', 'Currency', 'Date', 'Decimal', 'Double', + 'String', 'Enum', 'Integer', 'Long', 'Object', 'Single', 'Variant' + ), + 2 => array( + 'CreateObject', 'GetObject', 'New', 'Option', 'Function', + 'Call', 'Private', 'Public', 'Sub', 'Explicit', 'Compare', 'Exit' + ), + 3 => array( + 'And', 'Case', 'Do', 'Each', 'Else', 'ElseIf', 'For', + 'Goto', 'If', 'Is', 'Loop', 'Next', 'Not', 'Or', 'Select', 'Step', + 'Then', 'To', 'Until', 'While', 'With', 'Xor', 'WithEvents', + 'DoEvents', 'Close', 'Like', 'In', 'End' + ), + 4 => array( + 'As', 'Dim', 'Get', 'Set', 'ReDim', 'Error', + 'Resume', 'Declare', 'Let', 'ByRef', 'ByVal', + 'Optional', 'Property', 'Control', 'UBound', 'Mod', + 'GoSub', 'Implements', 'Input', 'LBound', 'Static', 'Stop', + 'Type', 'TypeOf', 'On', 'Open', 'Output', 'ParamArray', + 'Preserve', 'Print', 'RaiseEvent', 'Random', 'Line' + ), + 5 => array( + 'Nothing', 'False', 'True', 'Null', 'Empty' + ), + 6 => array( + 'ErrorHandler','ExitProc', 'PublishReport' + ), ), 'SYMBOLS' => array( ), 'CASE_SENSITIVE' => array( GESHI_COMMENTS => false, - 1 => false + 1 => false, + 2 => false, + 3 => false, + 4 => false, + 5 => false, + 6 => false ), 'STYLES' => array( 'KEYWORDS' => array( - 1 => 'color: #000080;' + 1 => 'color: #F660AB; font-weight: bold;', + 2 => 'color: #E56717; font-weight: bold;', + 3 => 'color: #8D38C9; font-weight: bold;', + 4 => 'color: #151B8D; font-weight: bold;', + 5 => 'color: #00C2FF; font-weight: bold;', + 6 => 'color: #3EA99F; font-weight: bold;' ), 'COMMENTS' => array( 1 => 'color: #008000;' @@ -109,7 +128,12 @@ $language_data = array ( ) ), 'URLS' => array( - 1 => '' + 1 => '', + 2 => '', + 3 => '', + 4 => '', + 5 => '', + 6 => '' ), 'OOLANG' => false, 'OBJECT_SPLITTERS' => array( diff --git a/inc/geshi/vbnet.php b/inc/geshi/vbnet.php index e9f7c3e43..f74775214 100644 --- a/inc/geshi/vbnet.php +++ b/inc/geshi/vbnet.php @@ -4,7 +4,7 @@ * --------- * Author: Alan Juden (alan@judenware.org) * Copyright: (c) 2004 Alan Juden, Nigel McNie (http://qbnz.com/highlighter) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/06/04 * * VB.NET language file for GeSHi. @@ -67,9 +67,9 @@ $language_data = array ( 2 => array( 'AndAlso', 'As', 'ADDHANDLER', 'ASSEMBLY', 'AUTO', 'Binary', 'ByRef', 'ByVal', 'BEGINEPILOGUE', 'Else', 'ElseIf', 'Empty', 'Error', 'ENDPROLOGUE', 'EXTERNALSOURCE', 'ENVIRON', 'For', - 'Friend', 'GET', 'HANDLES', 'Input', 'Is', 'IsNot', 'Len', 'Lock', 'Me', 'Mid', 'MUSTINHERIT', 'MustOverride', + 'Friend', 'Func', 'GET', 'HANDLES', 'Input', 'Is', 'IsNot', 'Len', 'Lock', 'Me', 'Mid', 'MUSTINHERIT', 'MustOverride', 'MYBASE', 'MYCLASS', 'New', 'Next', 'Nothing', 'Null', 'NOTINHERITABLE', - 'NOTOVERRIDABLE', 'OFF', 'On', 'Option', 'Optional', 'Overloads', 'OVERRIDABLE', 'Overrides', 'ParamArray', + 'NOTOVERRIDABLE', 'Of', 'OFF', 'On', 'Option', 'Optional', 'Overloads', 'OVERRIDABLE', 'Overrides', 'ParamArray', 'Predicate', 'Print', 'Private', 'Property', 'Public', 'Resume', 'Return', 'Seek', 'Static', 'Step', 'String', 'SHELL', 'SENDKEYS', 'SET', 'Shared', 'Then', 'Time', 'To', 'THROW', 'WithEvents' ), @@ -198,4 +198,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/verilog.php b/inc/geshi/verilog.php index ba1766c2d..14c1d7172 100644 --- a/inc/geshi/verilog.php +++ b/inc/geshi/verilog.php @@ -4,7 +4,7 @@ * ----------- * Author: G�nter Dannoritzer <dannoritzer@web.de> * Copyright: (C) 2008 Guenter Dannoritzer - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/05/28 * * Verilog language file for GeSHi. diff --git a/inc/geshi/vhdl.php b/inc/geshi/vhdl.php index 14072c9d7..6856933c7 100644 --- a/inc/geshi/vhdl.php +++ b/inc/geshi/vhdl.php @@ -4,7 +4,7 @@ * -------- * Author: Alexander 'E-Razor' Krause (admin@erazor-zone.de) * Copyright: (c) 2005 Alexander Krause - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2005/06/15 * * VHDL (VHSICADL, very high speed integrated circuit HDL) language file for GeSHi. diff --git a/inc/geshi/vim.php b/inc/geshi/vim.php index 3946c4f96..f4f93ad2e 100644 --- a/inc/geshi/vim.php +++ b/inc/geshi/vim.php @@ -1,11 +1,12 @@ <?php - /************************************************************************************* * vim.php * ---------------- * Author: Swaroop C H (swaroop@swaroopch.com) + * Contributors: + * - Laurent Peuch (psycojoker@gmail.com) * Copyright: (c) 2008 Swaroop C H (http://www.swaroopch.com) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/10/19 * * Vim scripting language file for GeSHi. @@ -18,10 +19,16 @@ * ------- * 2008/10/19 (1.0.8.2) * - Started. + * 2009/07/05 + * - Fill out list of zillion commands (maybe somes still miss). + * - fix a part of the regex, now works for comment that have white space before the " * - * TODO (updated 2008/10/19) + * TODO (updated 2009/07/05) * ------------------------- - * - Fill out list of zillion commands + * - Make this damn string with "" work correctly. I've just remove it for my wiki. + * - Make the comment regex able to find comment after some code. + * (i.e: let rocks " unworking comment) + * - Make <F1> <F2> ... <Esc> <CR> ... works event if they aren't surround by space. * ************************************************************************************* * @@ -47,7 +54,9 @@ $language_data = array( 'LANG_NAME' => 'Vim Script', 'COMMENT_SINGLE' => array(), 'COMMENT_REGEXP' => array( - 1 => "/^\".*$/m" + 1 => "/\s*\"[^\"]*?$/m", + //Regular expressions (Ported from perl.php) +// 2 => "/(?<=[\\s^])(s|tr|y)\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/(?:\\\\.|(?!\n)[^\\/\\\\])*\\/[msixpogcde]*(?=[\\s$\\.\\;])|(?<=[\\s^(=])(m|q[qrwx]?)?\\/(?:\\\\.|(?!\n)[^\\/\\\\])+\\/[msixpogc]*(?=[\\s$\\.\\,\\;\\)])/iU", ), 'COMMENT_MULTI' => array(), 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, @@ -55,75 +64,300 @@ $language_data = array( 'ESCAPE_CHAR' => '\\', 'KEYWORDS' => array( 1 => array( - 'brea', 'break', 'call', 'cat', 'catc', - 'catch', 'con', 'cont', 'conti', - 'contin', 'continu', 'continue', 'ec', 'echo', - 'echoe', 'echoer', 'echoerr', 'echoh', - 'echohl', 'echom', 'echoms', 'echomsg', 'echon', - 'el', 'els', 'else', 'elsei', 'elseif', - 'en', 'end', 'endi', 'endif', 'endfo', - 'endfor', 'endt', 'endtr', 'endtry', 'endw', - 'endwh', 'endwhi', 'endwhil', 'endwhile', 'exe', 'exec', 'execu', - 'execut', 'execute', 'fina', 'final', 'finall', 'finally', 'for', - 'fun', 'func', 'funct', 'functi', 'functio', 'function', 'if', 'in', - 'let', 'lockv', 'lockva', 'lockvar', 'retu', 'retur', 'return', 'th', - 'thr', 'thro', 'throw', 'try', 'unl', 'unle', 'unlet', 'unlo', 'unloc', - 'unlock', 'unlockv', 'unlockva', 'unlockvar', 'wh', 'whi', 'whil', - 'while' + 'au', 'augroup', 'autocmd', 'brea', 'break', 'bufadd', + 'bufcreate', 'bufdelete', 'bufenter', 'buffilepost', + 'buffilepre', 'bufleave', 'bufnew', 'bufnewfile', + 'bufread', 'bufreadcmd', 'bufreadpost', 'bufreadpre', + 'bufunload', 'bufwinenter', 'bufwinleave', 'bufwipeout', + 'bufwrite', 'bufwritecmd', 'bufwritepost', 'bufwritepre', + 'call', 'cat', 'catc', 'catch', 'cmd-event', 'cmdwinenter', + 'cmdwinleave', 'colorscheme', 'con', 'confirm', 'cont', 'conti', + 'contin', 'continu', 'continue', 'cursorhold', 'cursorholdi', + 'cursormoved', 'cursormovedi', 'ec', 'echo', 'echoe', + 'echoer', 'echoerr', 'echoh', 'echohl', 'echom', 'echoms', + 'echomsg', 'echon', 'el', 'els', 'else', 'elsei', 'elseif', + 'en', 'encodingchanged', 'end', 'endfo', 'endfor', 'endi', + 'endif', 'endt', 'endtr', 'endtry', 'endw', 'endwh', 'endwhi', + 'endwhil', 'endwhile', 'exe', 'exec', 'execu', 'execut', + 'execute', 'fileappendcmd', 'fileappendpost', 'fileappendpre', + 'filechangedro', 'filechangedshell', 'filechangedshellpost', + 'filereadcmd', 'filereadpost', 'filereadpre', + 'filetype', 'filewritecmd', 'filewritepost', 'filewritepre', + 'filterreadpost', 'filterreadpre', 'filterwritepost', + 'filterwritepre', 'fina', 'final', 'finall', 'finally', + 'finish', 'focusgained', 'focuslost', 'for', 'fun', 'func', + 'funct', 'functi', 'functio', 'function', 'funcundefined', + 'guienter', 'guifailed', 'hi', 'highlight', 'if', 'in', + 'insertchange', 'insertenter', 'insertleave', 'let', 'lockv', + 'lockva', 'lockvar', 'map', 'match', 'menupopup', 'nnoremap', + 'quickfixcmdpost', 'quickfixcmdpre', 'remotereply', 'retu', + 'retur', 'return', 'sessionloadpost', 'set', 'setlocal', + 'shellcmdpost', 'shellfilterpost', 'sourcecmd', 'sourcepre', + 'spellfilemissing', 'stdinreadpost', 'stdinreadpre', + 'swapexists', 'syntax', 'tabenter', 'tableave', 'termchanged', + 'termresponse', 'th', 'thr', 'thro', 'throw', 'tr', 'try', 'unl', + 'unle', 'unlet', 'unlo', 'unloc', 'unlock', 'unlockv', + 'unlockva', 'unlockvar', 'user', 'usergettingbored', + 'vimenter', 'vimleave', 'vimleavepre', 'vimresized', 'wh', + 'whi', 'whil', 'while', 'winenter', 'winleave' ), 2 => array( - 'autocmd', 'com', 'comm', 'comma', 'comman', 'command', 'comc', - 'comcl', 'comcle', 'comclea', 'comclear', 'delc', 'delco', - 'delcom', 'delcomm', 'delcomma', 'delcomman', 'delcommand', - '-nargs' # TODO There are zillions of commands to be added here from http://vimdoc.sourceforge.net/htmldoc/usr_toc.html + '<CR>', '<Esc>', '<F1>', '<F10>', + '<F11>', '<F12>', '<F2>', '<F3>', + '<F4>', '<F5>', '<F6>', '<F7>', + '<F8>', '<F9>', '<cr>', '<silent>', + '-nargs', 'acd', 'ai', 'akm', 'al', 'aleph', + 'allowrevins', 'altkeymap', 'ambiwidth', 'ambw', + 'anti', 'antialias', 'ar', 'arab', 'arabic', + 'arabicshape', 'ari', 'arshape', 'autochdir', + 'autoindent', 'autoread', 'autowrite', 'autowriteall', + 'aw', 'awa', 'background', 'backspace', 'backup', + 'backupcopy', 'backupdir', 'backupext', + 'backupskip', 'balloondelay', 'ballooneval', 'balloonexpr', + 'bdir', 'bdlay', 'beval', 'bex', 'bexpr', 'bg', + 'bh', 'bin', 'binary', 'biosk', 'bioskey', + 'bk', 'bkc', 'bl', 'bomb', 'breakat', 'brk', + 'bs', 'bsdir', 'bsk', 'bt', 'bufhidden', + 'buftype', 'casemap', 'cb', + 'ccv', 'cd', 'cdpath', 'cedit', 'cf', 'cfu', 'ch', + 'charconvert', 'ci', 'cin', 'cink', + 'cinkeys', 'cino', 'cinoptions', 'cinw', 'cinwords', + 'clipboard', 'cmdheight', 'cmdwinheight', + 'cmp', 'cms', 'co', 'columns', 'com', + 'comc', 'comcl', 'comcle', 'comclea', 'comclear', 'comm', + 'comma', 'comman', 'command', 'comments', 'commentstring', + 'compatible', 'completefunc', 'completeopt', + 'consk', 'conskey', 'copyindent', + 'cot', 'cp', 'cpo', 'cpoptions', 'cpt', + 'cscopepathcomp', 'cscopeprg', 'cscopequickfix', 'cscopetag', + 'cscopetagorder', 'cscopeverbose', + 'cspc', 'csprg', 'csqf', 'cst', 'csto', 'csverb', 'cuc', + 'cul', 'cursorcolumn', 'cursorline', 'cwh', 'debug', + 'deco', 'def', 'define', 'delc', 'delco', 'delcom', + 'delcombine', 'delcomm', 'delcomman', 'delcommand', 'dex', + 'dg', 'dict', 'dictionary', 'diff', 'diffexpr', + 'diffopt', 'digraph', 'dip', 'dir', 'directory', 'display', + 'dlcomma', 'dy', 'ea', 'ead', 'eadirection', + 'eb', 'ed', 'edcompatible', 'ef', 'efm', + 'ei', 'ek', 'enc', 'encoding', 'endfun', 'endofline', + 'eol', 'ep', 'equalalways', 'equalprg', 'errorbells', + 'errorfile', 'errorformat', 'esckeys', 'et', + 'eventignore', 'ex', 'expandtab', 'exrc', 'fcl', + 'fcs', 'fdc', 'fde', 'fdi', 'fdl', 'fdls', 'fdm', + 'fdn', 'fdo', 'fdt', 'fen', 'fenc', 'fencs', 'fex', + 'ff', 'ffs', 'fileencoding', 'fileencodings', 'fileformat', + 'fileformats', /*'filetype',*/ 'fillchars', 'fk', + 'fkmap', 'flp', 'fml', 'fmr', 'fo', 'foldclose', + 'foldcolumn', 'foldenable', 'foldexpr', 'foldignore', + 'foldlevelstart', 'foldmarker', 'foldmethod', 'foldminlines', + 'foldnestmax', 'foldopen', 'formatexpr', 'formatlistpat', + 'formatoptions', 'formatprg', 'fp', 'fs', 'fsync', 'ft', + 'gcr', 'gd', 'gdefault', 'gfm', 'gfn', 'gfs', 'gfw', + 'ghr', 'go', 'gp', 'grepformat', 'grepprg', 'gtl', + 'gtt', 'guicursor', 'guifont', 'guifontset', + 'guifontwide', 'guiheadroom', 'guioptions', 'guipty', + 'guitablabel', 'guitabtooltip', 'helpfile', + 'helpheight', 'helplang', 'hf', 'hh', 'hid', 'hidden', + 'history', 'hk', 'hkmap', 'hkmapp', 'hkp', 'hl', + 'hlg', 'hls', 'hlsearch', 'ic', 'icon', 'iconstring', + 'ignorecase', 'im', 'imactivatekey', 'imak', 'imc', + 'imcmdline', 'imd', 'imdisable', 'imi', 'iminsert', 'ims', + 'imsearch', 'inc', 'include', 'includeexpr', + 'incsearch', 'inde', 'indentexpr', 'indentkeys', + 'indk', 'inex', 'inf', 'infercase', 'insertmode', 'is', 'isf', + 'isfname', 'isi', 'isident', 'isk', 'iskeyword', + 'isp', 'isprint', 'joinspaces', 'js', 'key', + 'keymap', 'keymodel', 'keywordprg', 'km', 'kmp', 'kp', + 'langmap', 'langmenu', 'laststatus', 'lazyredraw', 'lbr', + 'lcs', 'linebreak', 'lines', 'linespace', 'lisp', + 'lispwords', 'list', 'listchars', 'lm', 'lmap', + 'loadplugins', 'lpl', 'ls', 'lsp', 'lw', 'lz', 'ma', + 'macatsui', 'magic', 'makeef', 'makeprg', 'mat', + 'matchpairs', 'matchtime', 'maxcombine', 'maxfuncdepth', + 'maxmapdepth', 'maxmem', 'maxmempattern', + 'maxmemtot', 'mco', 'mef', 'menuitems', 'mfd', 'mh', + 'mis', 'mkspellmem', 'ml', 'mls', 'mm', 'mmd', 'mmp', + 'mmt', 'mod', 'modeline', 'modelines', 'modifiable', + 'modified', 'more', 'mouse', 'mousef', 'mousefocus', + 'mousehide', 'mousem', 'mousemodel', 'mouses', + 'mouseshape', 'mouset', 'mousetime', 'mp', 'mps', 'msm', + 'mzq', 'mzquantum', 'nf', 'noacd', 'noai', 'noakm', + 'noallowrevins', 'noaltkeymap', 'noanti', 'noantialias', + 'noar', 'noarab', 'noarabic', 'noarabicshape', 'noari', + 'noarshape', 'noautochdir', 'noautoindent', 'noautoread', + 'noautowrite', 'noautowriteall', 'noaw', 'noawa', 'nobackup', + 'noballooneval', 'nobeval', 'nobin', 'nobinary', 'nobiosk', + 'nobioskey', 'nobk', 'nobl', 'nobomb', 'nobuflisted', 'nocf', + 'noci', 'nocin', 'nocindent', 'nocompatible', 'noconfirm', + 'noconsk', 'noconskey', 'nocopyindent', 'nocp', 'nocscopetag', + 'nocscopeverbose', 'nocst', 'nocsverb', 'nocuc', 'nocul', + 'nocursorcolumn', 'nocursorline', 'nodeco', 'nodelcombine', + 'nodg', 'nodiff', 'nodigraph', 'nodisable', 'noea', 'noeb', + 'noed', 'noedcompatible', 'noek', 'noendofline', 'noeol', + 'noequalalways', 'noerrorbells', 'noesckeys', 'noet', + 'noex', 'noexpandtab', 'noexrc', 'nofen', 'nofk', 'nofkmap', + 'nofoldenable', 'nogd', 'nogdefault', 'noguipty', 'nohid', + 'nohidden', 'nohk', 'nohkmap', 'nohkmapp', 'nohkp', 'nohls', + 'nohlsearch', 'noic', 'noicon', 'noignorecase', 'noim', + 'noimc', 'noimcmdline', 'noimd', 'noincsearch', 'noinf', + 'noinfercase', 'noinsertmode', 'nois', 'nojoinspaces', + 'nojs', 'nolazyredraw', 'nolbr', 'nolinebreak', 'nolisp', + 'nolist', 'noloadplugins', 'nolpl', 'nolz', 'noma', + 'nomacatsui', 'nomagic', 'nomh', 'noml', 'nomod', + 'nomodeline', 'nomodifiable', 'nomodified', 'nomore', + 'nomousef', 'nomousefocus', 'nomousehide', 'nonu', + 'nonumber', 'noodev', 'noopendevice', 'nopaste', 'nopi', + 'nopreserveindent', 'nopreviewwindow', 'noprompt', 'nopvw', + 'noreadonly', 'noremap', 'norestorescreen', 'norevins', + 'nori', 'norightleft', 'norightleftcmd', 'norl', 'norlc', + 'noro', 'nors', 'noru', 'noruler', 'nosb', 'nosc', 'noscb', + 'noscrollbind', 'noscs', 'nosecure', 'nosft', 'noshellslash', + 'noshelltemp', 'noshiftround', 'noshortname', 'noshowcmd', + 'noshowfulltag', 'noshowmatch', 'noshowmode', 'nosi', 'nosm', + 'nosmartcase', 'nosmartindent', 'nosmarttab', 'nosmd', + 'nosn', 'nosol', 'nospell', 'nosplitbelow', 'nosplitright', + 'nospr', 'nosr', 'nossl', 'nosta', 'nostartofline', + 'nostmp', 'noswapfile', 'noswf', 'nota', 'notagbsearch', + 'notagrelative', 'notagstack', 'notbi', 'notbidi', 'notbs', + 'notermbidi', 'noterse', 'notextauto', 'notextmode', + 'notf', 'notgst', 'notildeop', 'notimeout', 'notitle', + 'noto', 'notop', 'notr', 'nottimeout', 'nottybuiltin', + 'nottyfast', 'notx', 'novb', 'novisualbell', 'nowa', + 'nowarn', 'nowb', 'noweirdinvert', 'nowfh', 'nowfw', + 'nowildmenu', 'nowinfixheight', 'nowinfixwidth', 'nowiv', + 'nowmnu', 'nowrap', 'nowrapscan', 'nowrite', 'nowriteany', + 'nowritebackup', 'nows', 'nrformats', 'nu', 'number', + 'numberwidth', 'nuw', 'odev', 'oft', 'ofu', + 'omnifunc', 'opendevice', 'operatorfunc', 'opfunc', + 'osfiletype', 'pa', 'para', 'paragraphs', + 'paste', 'pastetoggle', 'patchexpr', + 'patchmode', 'path', 'pdev', 'penc', 'pex', 'pexpr', + 'pfn', 'ph', 'pheader', 'pi', 'pm', 'pmbcs', + 'pmbfn', 'popt', 'preserveindent', 'previewheight', + 'previewwindow', 'printdevice', 'printencoding', 'printexpr', + 'printfont', 'printheader', 'printmbcharset', + 'printmbfont', 'printoptions', 'prompt', 'pt', 'pumheight', + 'pvh', 'pvw', 'qe', 'quoteescape', 'rdt', + 'readonly', 'redrawtime', 'remap', 'report', + 'restorescreen', 'revins', 'ri', 'rightleft', 'rightleftcmd', + 'rl', 'rlc', 'ro', 'rs', 'rtp', 'ru', + 'ruf', 'ruler', 'rulerformat', 'runtimepath', 'sb', 'sbo', + 'sbr', 'sc', 'scb', 'scr', 'scroll', 'scrollbind', + 'scrolljump', 'scrolloff', 'scrollopt', + 'scs', 'sect', 'sections', 'secure', 'sel', + 'selection', 'selectmode', 'sessionoptions', 'sft', + 'sh', 'shcf', 'shell', 'shellcmdflag', 'shellpipe', + 'shellquote', 'shellredir', 'shellslash', + 'shelltemp', 'shelltype', 'shellxquote', 'shiftround', + 'shiftwidth', 'shm', 'shortmess', 'shortname', + 'showbreak', 'showcmd', 'showfulltag', 'showmatch', + 'showmode', 'showtabline', 'shq', 'si', 'sidescroll', + 'sidescrolloff', 'siso', 'sj', 'slm', 'sm', 'smartcase', + 'smartindent', 'smarttab', 'smc', 'smd', 'sn', + 'so', 'softtabstop', 'sol', 'sp', 'spc', 'spell', + 'spellcapcheck', 'spellfile', 'spelllang', + 'spf', 'spl', 'splitbelow', 'splitright', 'spr', + 'sps', 'sr', 'srr', 'ss', 'ssl', 'ssop', 'st', 'sta', + 'stal', 'startofline', 'statusline', 'stl', 'stmp', + 'sts', 'su', 'sua', 'suffixes', 'suffixesadd', 'sw', + 'swapfile', 'swapsync', 'swb', 'swf', 'switchbuf', + 'sws', 'sxq', 'syn', 'synmaxcol', 'ta', + 'tabline', 'tabpagemax', 'tabstop', 'tag', + 'tagbsearch', 'taglength', 'tagrelative', 'tags', 'tagstack', + 'tal', 'tb', 'tbi', 'tbidi', 'tbis', 'tbs', + 'tenc', 'term', 'termbidi', 'termencoding', 'terse', + 'textauto', 'textmode', 'textwidth', 'tf', 'tgst', + 'thesaurus', 'tildeop', 'timeout', 'timeoutlen', + 'title', 'titlelen', 'titleold', 'titlestring', + 'tl', 'tm', 'to', 'toolbar', 'toolbariconsize', 'top', + 'tpm', 'ts', 'tsl', 'tsr', 'ttimeout', + 'ttimeoutlen', 'ttm', 'tty', 'ttybuiltin', 'ttyfast', 'ttym', + 'ttymouse', 'ttyscroll', 'ttytype', 'tw', 'tx', 'uc', + 'ul', 'undolevels', 'updatecount', 'updatetime', 'ut', + 'vb', 'vbs', 'vdir', 've', 'verbose', 'verbosefile', + 'vfile', 'vi', 'viewdir', 'viewoptions', 'viminfo', + 'virtualedit', 'visualbell', 'vop', 'wa', 'wak', + 'warn', 'wb', 'wc', 'wcm', 'wd', 'weirdinvert', 'wfh', + 'wfw', /*'wh',*/ 'whichwrap', 'wi', 'wig', 'wildchar', + 'wildcharm', 'wildignore', 'wildmenu', + 'wildmode', 'wildoptions', 'wim', 'winaltkeys', 'window', + 'winfixheight', 'winfixwidth', 'winheight', + 'winminheight', 'winminwidth', 'winwidth', 'wiv', + 'wiw', 'wm', 'wmh', 'wmnu', 'wmw', 'wop', 'wrap', + 'wrapmargin', 'wrapscan', 'write', 'writeany', + 'writebackup', 'writedelay', 'ws', 'ww' ), 3 => array( - 'abs', 'add', 'append', 'argc', 'argidx', 'argv', 'atan', - 'browse', 'browsedir', 'bufexists', 'buflisted', 'bufloaded', - 'bufname', 'bufnr', 'bufwinnr', 'byte2line', 'byteidx', - 'ceil', 'changenr', 'char2nr', 'cindent', 'clearmatches', - 'col', 'complete', 'complete_add', 'complete_check', 'confirm', - 'copy', 'cos', 'count', 'cscope_connection', 'cursor', - 'deepcopy', 'delete', 'did_filetype', 'diff_filler', - 'diff_hlID', 'empty', 'escape', 'eval', 'eventhandler', - 'executable', 'exists', 'extend', 'expand', 'feedkeys', - 'filereadable', 'filewritable', 'filter', 'finddir', - 'findfile', 'float2nr', 'floor', 'fnameescape', 'fnamemodify', - 'foldclosed', 'foldclosedend', 'foldlevel', 'foldtext', - 'foldtextresult', 'foreground', 'garbagecollect', - 'get', 'getbufline', 'getbufvar', 'getchar', 'getcharmod', - 'getcmdline', 'getcmdpos', 'getcmdtype', 'getcwd', 'getfperm', - 'getfsize', 'getfontname', 'getftime', 'getftype', 'getline', + 'BufAdd', 'BufCreate', 'BufDelete', 'BufEnter', 'BufFilePost', + 'BufFilePre', 'BufHidden', 'BufLeave', 'BufNew', 'BufNewFile', + 'BufRead', 'BufReadCmd', 'BufReadPost', 'BufReadPre', + 'BufUnload', 'BufWinEnter', 'BufWinLeave', 'BufWipeout', + 'BufWrite', 'BufWriteCmd', 'BufWritePost', 'BufWritePre', + 'Cmd-event', 'CmdwinEnter', 'CmdwinLeave', 'ColorScheme', + 'CursorHold', 'CursorHoldI', 'CursorMoved', 'CursorMovedI', + 'EncodingChanged', 'FileAppendCmd', 'FileAppendPost', + 'FileAppendPre', 'FileChangedRO', 'FileChangedShell', + 'FileChangedShellPost', 'FileEncoding', 'FileReadCmd', + 'FileReadPost', 'FileReadPre', 'FileType', + 'FileWriteCmd', 'FileWritePost', 'FileWritePre', + 'FilterReadPost', 'FilterReadPre', 'FilterWritePost', + 'FilterWritePre', 'FocusGained', 'FocusLost', 'FuncUndefined', + 'GUIEnter', 'GUIFailed', 'InsertChange', 'InsertEnter', + 'InsertLeave', 'MenuPopup', 'QuickFixCmdPost', + 'QuickFixCmdPre', 'RemoteReply', 'SessionLoadPost', + 'ShellCmdPost', 'ShellFilterPost', 'SourceCmd', + 'SourcePre', 'SpellFileMissing', 'StdinReadPost', + 'StdinReadPre', 'SwapExists', 'Syntax', 'TabEnter', + 'TabLeave', 'TermChanged', 'TermResponse', 'User', + 'UserGettingBored', 'VimEnter', 'VimLeave', 'VimLeavePre', + 'VimResized', 'WinEnter', 'WinLeave', 'abs', 'add', 'append', + 'argc', 'argidx', 'argv', 'atan', 'browse', 'browsedir', + 'bufexists', 'buflisted', 'bufloaded', 'bufname', 'bufnr', + 'bufwinnr', 'byte2line', 'byteidx', 'ceil', 'changenr', + 'char2nr', 'cindent', 'clearmatches', 'col', 'complete', + 'complete_add', 'complete_check', 'copy', + 'cos', 'count', 'cscope_connection', 'cursor', 'deepcopy', + 'delete', 'did_filetype', 'diff_filler', 'diff_hlID', + 'empty', 'escape', 'eval', 'eventhandler', 'executable', + 'exists', 'expand', 'extend', 'feedkeys', 'filereadable', + 'filewritable', 'filter', 'finddir', 'findfile', 'float2nr', + 'floor', 'fnameescape', 'fnamemodify', 'foldclosed', + 'foldclosedend', 'foldlevel', 'foldtext', 'foldtextresult', + 'foreground', 'garbagecollect', 'get', 'getbufline', + 'getbufvar', 'getchar', 'getcharmod', 'getcmdline', + 'getcmdpos', 'getcmdtype', 'getcwd', 'getfontname', + 'getfperm', 'getfsize', 'getftime', 'getftype', 'getline', 'getloclist', 'getmatches', 'getpid', 'getpos', 'getqflist', 'getreg', 'getregtype', 'gettabwinvar', 'getwinposx', 'getwinposy', 'getwinvar', 'glob', 'globpath', 'has', 'has_key', 'haslocaldir', 'hasmapto', 'histadd', 'histdel', - 'histget', 'histnr', 'hlexists', 'hlID', 'hostname', 'iconv', + 'histget', 'histnr', 'hlID', 'hlexists', 'hostname', 'iconv', 'indent', 'index', 'input', 'inputdialog', 'inputlist', 'inputrestore', 'inputsave', 'inputsecret', 'insert', 'isdirectory', 'islocked', 'items', 'join', 'keys', 'len', 'libcall', 'libcallnr', 'line', 'line2byte', 'lispindent', - 'localtime', 'log10', 'map', 'maparg', 'mapcheck', 'match', - 'matchadd', 'matcharg', 'matchdelete', 'matchend', 'matchlist', + 'localtime', 'log10', 'maparg', 'mapcheck', 'matchadd', + 'matcharg', 'matchdelete', 'matchend', 'matchlist', 'matchstr', 'max', 'min', 'mkdir', 'mode', 'nextnonblank', - 'nr2char', 'pathshorten', 'pow', 'prevnonblank', 'printf', - 'pumvisible', 'range', 'readfile', 'reltime', 'reltimestr', - 'remote_expr', 'remote_foreground', 'remote_peek', - 'remote_read', 'remote_send', 'remove', 'rename', 'repeat', - 'resolve', 'reverse', 'round', 'search', 'searchdecl', - 'searchpair', 'searchpairpos', 'searchpos', 'server2client', - 'serverlist', 'setbufvar', 'setcmdpos', 'setline', - 'setloclist', 'setmatches', 'setpos', 'setqflist', 'setreg', - 'settabwinvar', 'setwinvar', 'shellescape', 'simplify', 'sin', - 'sort', 'soundfold', 'spellbadword', 'spellsuggest', 'split', - 'sqrt', 'str2float', 'str2nr', 'strftime', 'stridx', 'string', - 'strlen', 'strpart', 'strridx', 'strtrans', 'submatch', - 'substitute', 'synID', 'synIDattr', 'synIDtrans', 'synstack', - 'system', 'tabpagebuflist', 'tabpagenr', 'tabpagewinnr', - 'taglist', 'tagfiles', 'tempname', 'tolower', 'toupper', 'tr', - 'trunc', 'type', 'values', 'virtcol', 'visualmode', 'winbufnr', - 'wincol', 'winheight', 'winline', 'winnr', 'winrestcmd', - 'winrestview', 'winsaveview', 'winwidth', 'writefile' + 'nr2char', 'off', 'on', 'pathshorten', 'plugin', 'pow', + 'prevnonblank', 'printf', 'pumvisible', 'range', 'readfile', + 'reltime', 'reltimestr', 'remote_expr', 'remote_foreground', + 'remote_peek', 'remote_read', 'remote_send', 'remove', + 'rename', 'repeat', 'resolve', 'reverse', 'round', 'search', + 'searchdecl', 'searchpair', 'searchpairpos', 'searchpos', + 'server2client', 'serverlist', 'setbufvar', 'setcmdpos', + 'setline', 'setloclist', 'setmatches', 'setpos', 'setqflist', + 'setreg', 'settabwinvar', 'setwinvar', 'shellescape', + 'simplify', 'sin', 'sort', 'soundfold', 'spellbadword', + 'spellsuggest', 'split', 'sqrt', 'str2float', 'str2nr', + 'strftime', 'stridx', 'string', 'strlen', 'strpart', + 'strridx', 'strtrans', 'submatch', 'substitute', + 'synID', 'synIDattr', 'synIDtrans', 'synstack', 'system', + 'tabpagebuflist', 'tabpagenr', 'tabpagewinnr', 'tagfiles', + 'taglist', 'tempname', 'tolower', 'toupper', 'trunc', + 'type', 'values', 'virtcol', 'visualmode', 'winbufnr', + 'wincol', 'winline', 'winnr', 'winrestcmd', + 'winrestview', 'winsaveview', 'writefile' ) ), 'SYMBOLS' => array( @@ -141,7 +375,8 @@ $language_data = array( 0 => 'color: #000000;' ), 'COMMENTS' => array( - 1 => 'color: #adadad; font-style: italic;' + 1 => 'color: #adadad; font-style: italic;', +// 2 => 'color: #009966; font-style: italic;' ), 'ESCAPE_CHAR' => array( 0 => '' diff --git a/inc/geshi/visualfoxpro.php b/inc/geshi/visualfoxpro.php index 0cb73c2a0..7d804257f 100644 --- a/inc/geshi/visualfoxpro.php +++ b/inc/geshi/visualfoxpro.php @@ -4,7 +4,7 @@ * ---------------- * Author: Roberto Armellin (r.armellin@tin.it) * Copyright: (c) 2004 Roberto Armellin, Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/09/17 * * Visual FoxPro language file for GeSHi. @@ -69,7 +69,7 @@ $language_data = array ( 'At_c','Atan','Atc','Atcc','Atcline','Atline', 'Atn2','Aused','Autoform','Autoreport','Avcxclasses','Average', 'BarCount','BarPrompt','BatchMode','BatchUpdateCount','Begin','BellSound', - 'BinToC','Bintoc','Bitand','Bitclear','Bitlshift','Bitnot', + 'BinToC','Bitand','Bitclear','Bitlshift','Bitnot', 'Bitor','Bitrshift','Bitset','Bittest','Bitxor','Bof', 'Browse','BrowseRefresh','Buffering','BuilderLock','COMArray','COMReturnError', 'CToBin','Calculate','Call','Capslock','Cd','Cdow', @@ -81,7 +81,7 @@ $language_data = array ( 'Cot','Count','Coverage','Cpconvert','Cpcurrent','Cpdbf', 'Cpnotrans','Create','CreateBinary','Createobject','Createobjectex','Createoffline', 'CrsBuffering','CrsFetchMemo','CrsFetchSize','CrsMaxRows','CrsMethodUsed','CrsNumBatch', - 'CrsShareConnection','CrsUseMemoSize','CrsWhereClause','Ctobin','Ctod','Ctot', + 'CrsShareConnection','CrsUseMemoSize','CrsWhereClause','Ctod','Ctot', 'Curdate','Curdir','CurrLeft','CurrSymbol','CursorGetProp','CursorSetProp', 'Curtime','Curval','DBGetProp','DBSetProp','DB_BufLockRow','DB_BufLockTable', 'DB_BufOff','DB_BufOptRow','DB_BufOptTable','DB_Complette','DB_DeleteInsert','DB_KeyAndModified', @@ -93,7 +93,7 @@ $language_data = array ( 'Debugout','Declare','DefOLELCid','DefaultValue','Defaultext','Degrees', 'DeleteTrigger','Desc','Description','Difference','Dimension','Dir', 'Directory','Diskspace','DispLogin','DispWarnings','Display','Dll', - 'Dmy','DoDefault','DoEvents','Doc','Doevents','Dow', + 'Dmy','DoDefault','DoEvents','Doc','Dow', 'Drivetype','Drop','Dropoffline','Dtoc','Dtor','Dtos', 'Dtot','DynamicInputMask','Each','Edit','Eject','Elif', 'End','Eof','Erase','Evaluate','Event','Eventtracking', @@ -115,12 +115,12 @@ $language_data = array ( 'Indbc','Index','Indexseek','Inkey','Inlist','Input', 'Insert','InsertTrigger','Insmode','IsBlank','IsFLocked','IsLeadByte', 'IsMouse','IsNull','IsRLocked','Isalpha','Iscolor','Isdigit', - 'Isexclusive','Isflocked','Ishosted','Islower','Isreadonly','Isrlocked', - 'Isupper','Italian','Japan','Join','Justdrive','Justext', + 'IsExclusive','Ishosted','IsLower','IsReadOnly', + 'IsUpper','Italian','Japan','Join','Justdrive','Justext', 'Justfname','Justpath','Juststem','KeyField','KeyFieldList','Keyboard' ), 2 => array('Keymatch','LastProject','Lastkey','Lcase','Leftc','Len', - 'Lenc','Length','Likec','Lineno','LoadPicture','Loadpicture', + 'Lenc','Length','Likec','Lineno','LoadPicture', 'Locate','Locfile','Log','Log10','Logout','Lookup', 'Loop','Lower','Ltrim','Lupdate','Mail','MaxRecords', 'Mcol','Md','Mdown','Mdx','Mdy','Memlines', @@ -148,7 +148,7 @@ $language_data = array ( 'SQLBatchMode','SQLCancel','SQLColumns','SQLConnect','SQLConnectTimeOut','SQLDisconnect', 'SQLDispLogin','SQLDispWarnings','SQLExec','SQLGetProp','SQLIdleTimeOut','SQLMoreResults', 'SQLPrepare','SQLQueryTimeOut','SQLSetProp','SQLTables','SQLTransactions','SQLWaitTime', - 'Save','SavePicture','Savepicture','ScaleUnits','Scatter','Scols', + 'Save','SavePicture','ScaleUnits','Scatter','Scols', 'Scroll','Sec','Second','Seek','Select','SendUpdates', 'Set','SetDefault','Setfldstate','Setup','ShareConnection','ShowOLEControls', 'ShowOLEInsertable','ShowVCXs','Sign','Sin','Size','SizeBox', @@ -453,4 +453,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/visualprolog.php b/inc/geshi/visualprolog.php index 19eab2de6..5afd7de8d 100644 --- a/inc/geshi/visualprolog.php +++ b/inc/geshi/visualprolog.php @@ -4,7 +4,7 @@ * ---------- * Author: Thomas Linder Puls (puls@pdc.dk) * Copyright: (c) 2008 Thomas Linder Puls (puls@pdc.dk) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/11/20 * * Visual Prolog language file for GeSHi. diff --git a/inc/geshi/whitespace.php b/inc/geshi/whitespace.php index 59bbdb8e7..c47775d44 100644 --- a/inc/geshi/whitespace.php +++ b/inc/geshi/whitespace.php @@ -4,7 +4,7 @@ * ---------- * Author: Benny Baumann (BenBE@geshi.org) * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2009/10/31 * * Whitespace language file for GeSHi. diff --git a/inc/geshi/whois.php b/inc/geshi/whois.php new file mode 100644 index 000000000..9b4b24179 --- /dev/null +++ b/inc/geshi/whois.php @@ -0,0 +1,181 @@ +<?php +/************************************************************************************* + * whois.php + * -------- + * Author: Benny Baumann (BenBE@geshi.org) + * Copyright: (c) 2008 Benny Baumann (http://qbnz.com/highlighter/) + * Release Version: 1.0.8.8 + * Date Started: 2008/09/14 + * + * Whois response (RPSL format) language file for GeSHi. + * + * CHANGES + * ------- + * 2008/09/14 (1.0.0) + * - First Release + * + * TODO + * ---- + * + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'Whois (RPSL format)', + 'COMMENT_SINGLE' => array(1 => '% ', 2 => '%ERROR:'), + 'COMMENT_MULTI' => array(), + 'COMMENT_REGEXP' => array( + //Description + 3 => '/(?:(?<=^remarks:)|(?<=^descr:))(.|\n\s)*$/mi', + + //Contact Details + 4 => '/(?<=^address:)(.|\n\s)*$/mi', + 5 => '/\+\d+(?:(?:\s\(\d+(\s\d+)*\))?(?:\s\d+)+|-\d+-\d+)/', + 6 => '/\b(?!-|\.)[\w\-\.]+(?!-|\.)@((?!-)[\w\-]+\.)+\w+\b/', + + //IP, Networks and AS information\links + 7 => '/\b(?<!\.|\-)(?:[\da-f:]+(?!\.)|\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(?:\/1?\d\d?)?(?<!\.|\-)\b/', + 8 => '/\bAS\d+\b/' + ), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array(), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( //Object Types + 'as-block','as-set','aut-num','domain','filter-set','inet-rtr', + 'inet6num','inetnum','irt','key-cert','limerick','mntner', + 'organisation','peering-set','person','poem','role','route-set', + 'route','route6','rtr-set' + ), + 2 => array( //Field Types + 'abuse-mailbox','address','admin-c','aggr-bndry','aggr-mtd','alias', + 'as-block','as-name','as-set','aut-num','auth','author','certif', + 'changed','components','country','default','descr','dom-net', + 'domain','ds-rdata','e-mail','encryption','export','export-comps', + 'fax-no','filter','filter-set','fingerpr','form','holes','ifaddr', + 'import','inet-rtr','inet6num','inetnum','inject','interface','irt', + 'irt-nfy','key-cert','limerick','local-as','mbrs-by-ref', + 'member-of','members','method','mnt-by','mnt-domains','mnt-irt', + 'mnt-lower','mnt-nfy','mnt-ref','mnt-routes','mntner','mp-default', + 'mp-export','mp-filter','mp-import','mp-members','mp-peer', + 'mp-peering','netname','nic-hdl','notify','nserver','org', + 'org-name','org-type','organisation','origin','owner','peer', + 'peering','peering-set','person','phone','poem','ref-nfy','refer', + 'referral-by','remarks','rev-srv','role','route','route-set', + 'route6','rtr-set','signature','source','status','sub-dom','tech-c', + 'text','upd-to','zone-c' + ), + 3 => array( //RPSL reserved + 'accept','action','and','announce','any','as-any','at','atomic', + 'except','from','inbound','into','networks','not','or','outbound', + 'peeras','refine','rs-any','to' + ) + ), + 'SYMBOLS' => array( + ':' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #0000FF; font-weight: bold;', + 2 => 'color: #000080; font-weight: bold;', + 3 => 'color: #990000; font-weight: bold;' + ), + 'COMMENTS' => array( + 1 => 'color: #666666; font-style: italic;', + 2 => 'color: #666666; font-style: italic;', + 3 => 'color: #404080;', + 4 => 'color: #408040;', + 5 => 'color: #408040;', + 6 => 'color: #408040;', + 7 => 'color: #804040;', + 8 => 'color: #804040;', + 'MULTI' => 'color: #666666; font-style: italic;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099; font-weight: bold;', + 'HARD' => 'color: #000099; font-weight: bold;' + ), + 'BRACKETS' => array( + 0 => 'color: #009900;' + ), + 'STRINGS' => array( + 0 => '', + ), + 'NUMBERS' => array( + 0 => 'color: #000080;', + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #0000FF;' + ), + 'REGEXPS' => array( + 0 => 'color: #000088;' + ), + 'SCRIPT' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => 'http://www.irr.net/docs/rpsl.html' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + //Variables + 0 => "[\\$]{1,2}[a-zA-Z_][a-zA-Z0-9_]*" + ), + 'STRICT_MODE_APPLIES' => GESHI_MAYBE, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ), + 'TAB_WIDTH' => 4, + 'PARSER_CONTROL' => array( + 'KEYWORDS' => array( + 1 => array( + 'DISALLOWED_BEFORE' => '(?<=\A |\A \n(?m:^)|\n\n(?m:^))' + ), + 2 => array( + 'DISALLOWED_BEFORE' => '(?m:^)' + ) + ), + 'ENABLE_FLAGS' => array( + 'BRACKETS' => GESHI_NEVER, + 'SYMBOLS' => GESHI_NEVER, + 'BRACKETS' => GESHI_NEVER, + 'STRINGS' => GESHI_NEVER, + 'ESCAPE_CHAR' => GESHI_NEVER, + 'NUMBERS' => GESHI_NEVER, + 'METHODS' => GESHI_NEVER, + 'SCRIPT' => GESHI_NEVER + ) + ), +); + +?>
\ No newline at end of file diff --git a/inc/geshi/winbatch.php b/inc/geshi/winbatch.php index e86b03636..949e61c14 100644 --- a/inc/geshi/winbatch.php +++ b/inc/geshi/winbatch.php @@ -4,7 +4,7 @@ * ------------ * Author: Craig Storey (storey.craig@gmail.com) * Copyright: (c) 2004 Craig Storey (craig.xcottawa.ca) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2006/05/19 * * WinBatch language file for GeSHi. @@ -106,8 +106,8 @@ $language_data = array ( 'RegExistKey', 'RegEntryType', 'RegDelValue', 'RegDeleteKey', 'RegCreateKey', 'RegConnect', 'RegCloseKey', 'RegApp', 'Random', 'PtrPersistent', 'PtrGlobalDefine', 'PtrGlobal', 'Print', 'PlayWaveform', 'PlayMidi', 'PlayMedia', 'PipeServerWrite', 'PipeServerRead', 'PipeServerCreate', 'PipeServerClose', 'PipeInfo', 'PipeClientSendRecvData', 'PipeClientOpen', 'PipeClientClose', 'Pause', - 'ParseData', 'ObjectTypeGet', 'ObjectType', 'ObjectOpen', 'ObjectGet', 'ObjectEventRemove', 'objecteventremove', 'ObjectEventAdd', - 'objecteventadd', 'ObjectCreate', 'ObjectConstToArray', 'ObjectConstantsGet', 'ObjectCollectionOpen', 'ObjectCollectionNext', + 'ParseData', 'ObjectTypeGet', 'ObjectType', 'ObjectOpen', 'ObjectGet', 'ObjectEventRemove', 'ObjectEventAdd', + 'ObjectCreate', 'ObjectConstToArray', 'ObjectConstantsGet', 'ObjectCollectionOpen', 'ObjectCollectionNext', 'ObjectCollectionClose', 'ObjectClose', 'ObjectAccess', 'Num2Char', 'NetInfo', 'MsgTextGet', 'MousePlay', 'MouseMove', 'MouseInfo', 'MouseDrag', 'MouseCoords', 'MouseClickBtn', 'MouseClick', 'mod', 'Min', 'Message', 'Max', 'Loge', 'LogDisk', 'Log10', 'LastError', 'KeyToggleSet', 'KeyToggleGet', 'ItemSortNc', 'ItemSort', 'ItemSelect', 'ItemReplace', 'ItemRemove', 'ItemLocate', 'ItemInsert', @@ -366,4 +366,4 @@ $language_data = array ( ) ); -?> +?>
\ No newline at end of file diff --git a/inc/geshi/xbasic.php b/inc/geshi/xbasic.php new file mode 100644 index 000000000..a2d85a6df --- /dev/null +++ b/inc/geshi/xbasic.php @@ -0,0 +1,144 @@ +<?php +/************************************************************************************* + * xbasic.php + * ---------- + * Author: Jos Gabriel Moya Yangela (josemoya@gmail.com) + * Copyright: (c) 2005 Jos Gabriel Moya Yangela (http://aprenderadesaprender.6te.net) + * Release Version: 1.0.8.8 + * Date Started: 2005/11/23 + * Last Modified: $Date: 2010/01/30 00:42:00 $ + * + * XBasic language file for GeSHi. + * + * CHANGES + * ------- + * - Removed duplicate keywords + * - Tabs converted in spaces. + ************************************************************************************* + * + * This file is part of GeSHi. + * + * GeSHi is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * GeSHi is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GeSHi; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + ************************************************************************************/ + +$language_data = array ( + 'LANG_NAME' => 'XBasic', + 'COMMENT_SINGLE' => array(1 => "'"), + 'COMMENT_MULTI' => array(), + 'CASE_KEYWORDS' => GESHI_CAPS_NO_CHANGE, + 'QUOTEMARKS' => array('"'), + 'ESCAPE_CHAR' => '', + 'KEYWORDS' => array( + 1 => array( + 'WHILE', 'UNTIL', 'TRUE', 'TO', 'THEN', 'SUB', 'STOP', 'STEP', + 'SELECT', 'RETURN', 'PROGRAM', 'NEXT', 'LOOP', 'IFZ', + 'IFT', 'IFF', 'IF', 'GOTO', 'GOSUB', 'FOR', 'FALSE', 'EXIT', + 'ENDIF', 'END', 'ELSE', 'DO', 'CASE', 'ALL' + ), + 2 => array( + 'XMAKE', 'XLONGAT', 'XLONG', 'WRITE', 'VOID', 'VERSION$', 'VERSION', + 'USHORTAT', 'USHORT', 'UNION', 'ULONGAT', 'ULONG', 'UCASE$', + 'UBYTEAT', 'UBYTE', 'UBOUND', 'TYPE','TRIM$', 'TAB', 'SWAP', + 'SUBADDRESS', 'SUBADDR', 'STUFF$', 'STRING', 'STRING$', 'STR$', + 'STATIC', 'SSHORTAT', 'SSHORT', 'SPACE$', 'SMAKE', 'SLONGAT', 'SLONG', + 'SIZE', 'SINGLEAT', 'SINGLE', 'SIGNED$', 'SIGN', 'SHELL', 'SHARED', + 'SGN', 'SFUNCTION', 'SET', 'SEEK', 'SCOMPLEX', 'SBYTEAT', 'SBYTE', + 'RTRIM$', 'ROTATER', 'ROTATEL', 'RJUST$', 'RINSTRI', 'RINSTR', + 'RINCHRI', 'RINCHR', 'RIGHT$', 'REDIM', 'READ', 'RCLIP$', 'QUIT', + 'PROGRAM$', 'PRINT', 'POF', 'OPEN', 'OCTO$', 'OCT$', 'NULL$', 'MIN', + 'MID$', 'MAX', 'MAKE', 'LTRIM$', 'LOF', 'LJUST$', 'LIBRARY', 'LEN', + 'LEFT$', 'LCLIP$', 'LCASE$', 'INTERNAL', 'INT', 'INSTRI', 'INSTR', + 'INLINE$', 'INFILE$', 'INCHRI', 'INCHR', 'INC', 'IMPORT', 'HIGH1', + 'HIGH0', 'HEXX$', 'HEX$', 'GOADDRESS', 'GOADDR', 'GMAKE', 'GLOW', + 'GIANTAT', 'GIANT', 'GHIGH', 'FUNCTION', 'FUNCADDRESS', 'FUNCADDR', + 'FORMAT$', 'FIX', 'EXTU', 'EXTS', 'EXTERNAL', 'ERROR', 'ERROR$', + 'EOF', 'DOUBLEAT', 'DOUBLE', 'DMAKE', 'DLOW', 'DIM', 'DHIGH', + 'DECLARE', 'DEC', 'DCOMPLEX', 'CSTRING$', 'CSIZE', 'CSIZE$', 'CLR', + 'CLOSE', 'CLEAR', 'CJUST$', 'CHR$', 'CFUNCTION', 'BITFIELD', 'BINB$', + 'BIN$', 'AUTOX', 'AUTOS', 'AUTO', 'ATTACH', 'ASC', 'ABS' + ), + 3 => array( + 'XOR', 'OR', 'NOT', 'MOD', 'AND' + ), + 4 => array( + 'TANH', 'TAN', 'SQRT', 'SINH', 'SIN', 'SECH', 'SEC', 'POWER', + 'LOG10', 'LOG', 'EXP10', 'EXP', 'CSCH', 'CSC', 'COTH', 'COT', 'COSH', + 'COS', 'ATANH', 'ATAN', 'ASINH', 'ASIN', 'ASECH', 'ASEC', 'ACSCH', + 'ACSC', 'ACOSH', 'ACOS' + ) + ), + 'SYMBOLS' => array( + '(', ')', '[', ']', '!', '@', '%', '&', '*', '|', '/', '<', '>', + '=','+','-' + ), + 'CASE_SENSITIVE' => array( + GESHI_COMMENTS => false, + 1 => false, + 2 => false, + 3 => false, + 4 => false + ), + 'STYLES' => array( + 'KEYWORDS' => array( + 1 => 'color: #00a1a1;font-weight: bold', + 2 => 'color: #000066;font-weight: bold', + 3 => 'color: #00a166;font-weight: bold', + 4 => 'color: #0066a1;font-weight: bold' + ), + 'COMMENTS' => array( + 1 => 'color: #808080;' + ), + 'BRACKETS' => array( + 0 => 'color: #66cc66;' + ), + 'STRINGS' => array( + 0 => 'color: #ff0000;' + ), + 'NUMBERS' => array( + 0 => 'color: #cc66cc;' + ), + 'METHODS' => array( + ), + 'SYMBOLS' => array( + 0 => 'color: #66cc66;' + ), + 'ESCAPE_CHAR' => array( + 0 => 'color: #000099;' + ), + 'SCRIPT' => array( + ), + 'REGEXPS' => array( + ) + ), + 'URLS' => array( + 1 => '', + 2 => '', + 3 => 'http://www.xbasic.org', + 4 => 'http://www.xbasic.org' + ), + 'OOLANG' => false, + 'OBJECT_SPLITTERS' => array( + ), + 'REGEXPS' => array( + ), + 'STRICT_MODE_APPLIES' => GESHI_NEVER, + 'SCRIPT_DELIMITERS' => array( + ), + 'HIGHLIGHT_STRICT_BLOCK' => array( + ) +); + +?>
\ No newline at end of file diff --git a/inc/geshi/xml.php b/inc/geshi/xml.php index 1222e9fb9..efd3e6c33 100644 --- a/inc/geshi/xml.php +++ b/inc/geshi/xml.php @@ -4,7 +4,7 @@ * ------- * Author: Nigel McNie (nigel@geshi.org) * Copyright: (c) 2004 Nigel McNie (http://qbnz.com/highlighter/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2004/09/01 * * XML language file for GeSHi. Based on the idea/file by Christian Weiske diff --git a/inc/geshi/xorg_conf.php b/inc/geshi/xorg_conf.php index c32c460b3..5cde8e171 100644 --- a/inc/geshi/xorg_conf.php +++ b/inc/geshi/xorg_conf.php @@ -4,7 +4,7 @@ * ---------- * Author: Milian Wolff (mail@milianw.de) * Copyright: (c) 2008 Milian Wolff (http://milianw.de) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2008/06/18 * * xorg.conf language file for GeSHi. diff --git a/inc/geshi/xpp.php b/inc/geshi/xpp.php index db0019dd0..216c46eaf 100644 --- a/inc/geshi/xpp.php +++ b/inc/geshi/xpp.php @@ -4,7 +4,7 @@ * ------- * Author: Simon Butcher (simon@butcher.name) * Copyright: (c) 2007 Simon Butcher (http://simon.butcher.name/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2007/02/27 * * Axapta/Dynamics Ax X++ language file for GeSHi. diff --git a/inc/geshi/z80.php b/inc/geshi/z80.php index 2a9b14886..f28593cd2 100644 --- a/inc/geshi/z80.php +++ b/inc/geshi/z80.php @@ -4,7 +4,7 @@ * ------- * Author: Benny Baumann (BenBE@omorphia.de) * Copyright: (c) 2007-2008 Benny Baumann (http://www.omorphia.de/) - * Release Version: 1.0.8.4 + * Release Version: 1.0.8.8 * Date Started: 2007/02/06 * * ZiLOG Z80 Assembler language file for GeSHi. @@ -129,7 +129,7 @@ $language_data = array ( //Hex numbers 0 => '0[0-9a-fA-F]{1,32}[hH]', //Binary numbers - 1 => '\%[01]{1,64}|[01]{1,64}[bB]?', + 1 => '\%[01]{1,64}|[01]{1,64}[bB]?(?![^<]*>)', //Labels 2 => '^[_a-zA-Z][_a-zA-Z0-9]?\:' ), @@ -141,4 +141,4 @@ $language_data = array ( 'TAB_WIDTH' => 8 ); -?> +?>
\ No newline at end of file diff --git a/inc/html.php b/inc/html.php index 29dddbe74..b475e2b7a 100644 --- a/inc/html.php +++ b/inc/html.php @@ -8,8 +8,6 @@ if(!defined('DOKU_INC')) die('meh.'); if(!defined('NL')) define('NL',"\n"); -require_once(DOKU_INC.'inc/parserutils.php'); -require_once(DOKU_INC.'inc/form.php'); /** * Convenience function to quickly build a wikilink @@ -47,7 +45,6 @@ function html_login(){ global $lang; global $conf; global $ID; - global $auth; print p_locale_xhtml('login'); print '<div class="centeralign">'.NL; @@ -63,14 +60,14 @@ function html_login(){ $form->addElement(form_makeButton('submit', '', $lang['btn_login'])); $form->endFieldset(); - if($auth && $auth->canDo('addUser') && actionOK('register')){ + if(actionOK('register')){ $form->addElement('<p>' . $lang['reghere'] . ': <a href="'.wl($ID,'do=register').'" rel="nofollow" class="wikilink1">'.$lang['register'].'</a>' . '</p>'); } - if ($auth && $auth->canDo('modPass') && actionOK('resendpwd')) { + if (actionOK('resendpwd')) { $form->addElement('<p>' . $lang['pwdforget'] . ': <a href="'.wl($ID,'do=resendpwd').'" rel="nofollow" class="wikilink1">'.$lang['btn_resendpwd'].'</a>' @@ -82,45 +79,67 @@ function html_login(){ } /** - * prints a section editing button - * used as a callback in html_secedit + * inserts section edit buttons if wanted or removes the markers * * @author Andreas Gohr <andi@splitbrain.org> */ -function html_secedit_button($matches){ - global $ID; +function html_secedit($text,$show=true){ global $INFO; - $section = $matches[2]; - $name = $matches[1]; - - $secedit = ''; - $secedit .= '<div class="secedit">'; - $secedit .= html_btn('secedit',$ID,'', - array('do' => 'edit', - 'lines' => "$section", - 'rev' => $INFO['lastmod']), - 'post', $name); - $secedit .= '</div>'; - return $secedit; + $regexp = '#<!-- EDIT(\d+) ([A-Z_]+) (?:"([^"]*)" )?\[(\d+-\d*)\] -->#'; + + if(!$INFO['writable'] || !$show || $INFO['rev']){ + return preg_replace($regexp,'',$text); + } + + return preg_replace_callback($regexp, + 'html_secedit_button', $text); } /** - * inserts section edit buttons if wanted or removes the markers + * prepares section edit button data for event triggering + * used as a callback in html_secedit * + * @triggers HTML_SECEDIT_BUTTON * @author Andreas Gohr <andi@splitbrain.org> */ -function html_secedit($text,$show=true){ +function html_secedit_button($matches){ + $data = array('secid' => $matches[1], + 'target' => strtolower($matches[2]), + 'range' => $matches[count($matches) - 1]); + if (count($matches) === 5) { + $data['name'] = $matches[3]; + } + + return trigger_event('HTML_SECEDIT_BUTTON', $data, + 'html_secedit_get_button'); +} + +/** + * prints a section editing button + * used as default action form HTML_SECEDIT_BUTTON + * + * @author Adrian Lang <lang@cosmocode.de> + */ +function html_secedit_get_button($data) { + global $ID; global $INFO; - if($INFO['writable'] && $show && !$INFO['rev']){ - $text = preg_replace_callback('#<!-- SECTION "(.*?)" \[(\d+-\d*)\] -->#', - 'html_secedit_button', $text); - }else{ - $text = preg_replace('#<!-- SECTION "(.*?)" \[(\d+-\d*)\] -->#','',$text); - } + if (!isset($data['name']) || $data['name'] === '') return; + + $name = $data['name']; + unset($data['name']); - return $text; + $secid = $data['secid']; + unset($data['secid']); + + return "<div class='secedit editbutton_" . $data['target'] . + " editbutton_" . $secid . "'>" . + html_btn('secedit', $ID, '', + array_merge(array('do' => 'edit', + 'rev' => $INFO['lastmod'], + 'summary' => '['.$name.'] '), $data), + 'post', $name) . '</div>'; } /** @@ -181,7 +200,7 @@ function html_btn($name,$id,$akey,$params,$method='get',$tooltip=''){ $tip = htmlspecialchars($label); } - $ret .= '<input type="submit" value="'.htmlspecialchars($label).'" class="button" '; + $ret .= '<input type="submit" value="'.hsc($label).'" class="button" '; if($akey){ $tip .= ' ['.strtoupper($akey).']'; $ret .= 'accesskey="'.$akey.'" '; @@ -198,7 +217,7 @@ function html_btn($name,$id,$akey,$params,$method='get',$tooltip=''){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function html_show($txt=''){ +function html_show($txt=null){ global $ID; global $REV; global $HIGH; @@ -210,7 +229,7 @@ function html_show($txt=''){ $secedit = true; } - if ($txt){ + if (!is_null($txt)){ //PreviewHeader echo '<br id="scroll__here" />'; echo p_locale_xhtml('preview'); @@ -292,8 +311,6 @@ function html_hilight_callback($m) { * @author Andreas Gohr <andi@splitbrain.org> */ function html_search(){ - require_once(DOKU_INC.'inc/search.php'); - require_once(DOKU_INC.'inc/fulltext.php'); global $conf; global $QUERY; global $ID; @@ -320,18 +337,22 @@ function html_search(){ //do quick pagesearch $data = array(); - if($id) $data = ft_pageLookup($id); + if($id) $data = ft_pageLookup($id,true,useHeading('navigation')); if(count($data)){ print '<div class="search_quickresult">'; print '<h3>'.$lang['quickhits'].':</h3>'; print '<ul class="search_quickhits">'; - foreach($data as $id){ + foreach($data as $id => $title){ print '<li> '; - $ns = getNS($id); - if($ns){ - $name = shorten(noNS($id), ' ('.$ns.')',30); + if (useHeading('navigation')) { + $name = $title; }else{ - $name = $id; + $ns = getNS($id); + if($ns){ + $name = shorten(noNS($id), ' ('.$ns.')',30); + }else{ + $name = $id; + } } print html_wikilink(':'.$id,$name); print '</li> '; @@ -352,7 +373,7 @@ function html_search(){ print html_wikilink(':'.$id,useHeading('navigation')?null:$id,$regex); if($cnt !== 0){ print ': <span class="search_cnt">'.$cnt.' '.$lang['hits'].'</span><br />'; - if($num < 15){ // create snippets for the first number of matches only #FIXME add to conf ? + if($num < FT_SNIPPET_NUMBER){ // create snippets for the first number of matches only print '<div class="search_snippet">'.ft_snippet($id,$regex).'</div>'; } $num++; @@ -686,7 +707,6 @@ function html_recent($first=0){ * @author Andreas Gohr <andi@splitbrain.org> */ function html_index($ns){ - require_once(DOKU_INC.'inc/search.php'); global $conf; global $ID; $dir = $conf['datadir']; @@ -824,7 +844,6 @@ function html_buildlist($data,$class,$func,$lifunc='html_li_default'){ * @author Michael Klier <chi@chimeric.de> */ function html_backlinks(){ - require_once(DOKU_INC.'inc/fulltext.php'); global $ID; global $conf; global $lang; @@ -852,7 +871,6 @@ function html_backlinks(){ * @author Andreas Gohr <andi@splitbrain.org> */ function html_diff($text='',$intro=true){ - require_once(DOKU_INC.'inc/DifferenceEngine.php'); global $ID; global $REV; global $lang; @@ -973,6 +991,13 @@ function html_diff($text='',$intro=true){ $tdf = new TableDiffFormatter(); if($intro) print p_locale_xhtml('diff'); + + if (!$text) { + $diffurl = wl($ID, array('do'=>'diff', 'rev2[0]'=>$l_rev, 'rev2[1]'=>$r_rev)); + ptln('<p class="difflink">'); + ptln(' <a class="wikilink1" href="'.$diffurl.'">'.$lang['difflink'].'</a>'); + ptln('</p>'); + } ?> <table class="diff"> <tr> @@ -1104,131 +1129,139 @@ function html_updateprofile(){ } /** - * This displays the edit form (lots of logic included) + * Preprocess edit form data * - * @fixme this is a huge lump of code and should be modularized - * @triggers HTML_PAGE_FROMTEMPLATE - * @triggers HTML_EDITFORM_INJECTION * @author Andreas Gohr <andi@splitbrain.org> + * + * @triggers HTML_EDITFORM_OUTPUT */ -function html_edit($text=null,$include='edit'){ //FIXME: include needed? +function html_edit(){ global $ID; global $REV; global $DATE; - global $RANGE; global $PRE; global $SUF; global $INFO; global $SUM; global $lang; global $conf; - global $license; - - //set summary default - if(!$SUM){ - if($REV){ - $SUM = $lang['restored']; - }elseif(!$INFO['exists']){ - $SUM = $lang['created']; - } - } + global $TEXT; + global $RANGE; - //no text? Load it! - if(!isset($text)){ - $pr = false; //no preview mode - if($INFO['exists']){ - if($RANGE){ - list($PRE,$text,$SUF) = rawWikiSlices($RANGE,$ID,$REV); - }else{ - $text = rawWiki($ID,$REV); - } - $check = md5($text); - $mod = false; - }else{ - //try to load a pagetemplate - $data = array($ID); - $text = trigger_event('HTML_PAGE_FROMTEMPLATE',$data,'pageTemplate',true); - $check = md5(''); - $mod = $text!==''; - } - }else{ - $pr = true; //preview mode - if (isset($_REQUEST['changecheck'])) { - $check = $_REQUEST['changecheck']; - $mod = md5($text)!==$check; - } else { - // Why? Assume default text is unmodified. - $check = md5($text); - $mod = false; - } + if (isset($_REQUEST['changecheck'])) { + $check = $_REQUEST['changecheck']; + } elseif(!$INFO['exists']){ + // $TEXT has been loaded from page template + $check = md5(''); + } else { + $check = md5($TEXT); } + $mod = md5($TEXT) !== $check; $wr = $INFO['writable'] && !$INFO['locked']; + $include = 'edit'; if($wr){ - if ($REV) print p_locale_xhtml('editrev'); - print p_locale_xhtml($include); + if ($REV) $include = 'editrev'; }else{ // check pseudo action 'source' if(!actionOK('source')){ msg('Command disabled: source',-1); return; } - print p_locale_xhtml('read'); + $include = 'read'; } - if(!$DATE) $DATE = $INFO['lastmod']; - ?> - <div style="width:99%;"> - - <div class="toolbar"> - <div id="draft__status"><?php if(!empty($INFO['draft'])) echo $lang['draftdate'].' '.dformat();?></div> - <div id="tool__bar"><?php if($wr){?><a href="<?php echo DOKU_BASE?>lib/exe/mediamanager.php?ns=<?php echo $INFO['namespace']?>" - target="_blank"><?php echo $lang['mediaselect'] ?></a><?php }?></div> - - <?php if($wr){?> - <script type="text/javascript" charset="utf-8"><!--//--><![CDATA[//><!-- - <?php /* sets changed to true when previewed */?> - textChanged = <?php ($mod) ? print 'true' : print 'false' ?>; - //--><!]]></script> - <?php } ?> - </div> - <?php - $form = new Doku_Form(array('id' => 'dw__editform')); - $form->addHidden('id', $ID); - $form->addHidden('rev', $REV); - $form->addHidden('date', $DATE); - $form->addHidden('prefix', $PRE); - $form->addHidden('suffix', $SUF); - $form->addHidden('changecheck', $check); - $attr = array('tabindex'=>'1'); - if (!$wr) $attr['readonly'] = 'readonly'; - $form->addElement(form_makeWikiText($text, $attr)); - $form->addElement(form_makeOpenTag('div', array('id'=>'wiki__editbar'))); - $form->addElement(form_makeOpenTag('div', array('id'=>'size__ctl'))); + + global $license; + + $form = new Doku_Form(array('id' => 'dw__editform')); + $form->addHidden('id', $ID); + $form->addHidden('rev', $REV); + $form->addHidden('date', $DATE); + $form->addHidden('prefix', $PRE); + $form->addHidden('suffix', $SUF); + $form->addHidden('changecheck', $check); + + $data = array('form' => $form, + 'wr' => $wr, + 'media_manager' => true, + 'target' => (isset($_REQUEST['target']) && $wr && + $RANGE !== '') ? $_REQUEST['target'] : 'section', + 'intro_locale' => $include); + + if ($data['target'] !== 'section') { + // Only emit event if page is writable, section edit data is valid and + // edit target is not section. + trigger_event('HTML_EDIT_FORMSELECTION', $data, 'html_edit_form', true); + } else { + html_edit_form($data); + } + if (isset($data['intro_locale'])) { + echo p_locale_xhtml($data['intro_locale']); + } + + $form->addHidden('target', $data['target']); + $form->addElement(form_makeOpenTag('div', array('id'=>'wiki__editbar'))); + $form->addElement(form_makeOpenTag('div', array('id'=>'size__ctl'))); + $form->addElement(form_makeCloseTag('div')); + if ($wr) { + $form->addElement(form_makeOpenTag('div', array('class'=>'editButtons'))); + $form->addElement(form_makeButton('submit', 'save', $lang['btn_save'], array('id'=>'edbtn__save', 'accesskey'=>'s', 'tabindex'=>'4'))); + $form->addElement(form_makeButton('submit', 'preview', $lang['btn_preview'], array('id'=>'edbtn__preview', 'accesskey'=>'p', 'tabindex'=>'5'))); + $form->addElement(form_makeButton('submit', 'draftdel', $lang['btn_cancel'], array('tabindex'=>'6'))); $form->addElement(form_makeCloseTag('div')); - if ($wr) { - $form->addElement(form_makeOpenTag('div', array('class'=>'editButtons'))); - $form->addElement(form_makeButton('submit', 'save', $lang['btn_save'], array('id'=>'edbtn__save', 'accesskey'=>'s', 'tabindex'=>'4'))); - $form->addElement(form_makeButton('submit', 'preview', $lang['btn_preview'], array('id'=>'edbtn__preview', 'accesskey'=>'p', 'tabindex'=>'5'))); - $form->addElement(form_makeButton('submit', 'draftdel', $lang['btn_cancel'], array('tabindex'=>'6'))); - $form->addElement(form_makeCloseTag('div')); - $form->addElement(form_makeOpenTag('div', array('class'=>'summary'))); - $form->addElement(form_makeTextField('summary', $SUM, $lang['summary'], 'edit__summary', 'nowrap', array('size'=>'50', 'tabindex'=>'2'))); - $elem = html_minoredit(); - if ($elem) $form->addElement($elem); - $form->addElement(form_makeCloseTag('div')); - } + $form->addElement(form_makeOpenTag('div', array('class'=>'summary'))); + $form->addElement(form_makeTextField('summary', $SUM, $lang['summary'], 'edit__summary', 'nowrap', array('size'=>'50', 'tabindex'=>'2'))); + $elem = html_minoredit(); + if ($elem) $form->addElement($elem); $form->addElement(form_makeCloseTag('div')); - if($wr && $conf['license']){ - $form->addElement(form_makeOpenTag('div', array('class'=>'license'))); - $out = $lang['licenseok']; - $out .= '<a href="'.$license[$conf['license']]['url'].'" rel="license" class="urlextern"'; - if(isset($conf['target']['external'])) $out .= ' target="'.$conf['target']['external'].'"'; - $out .= '> '.$license[$conf['license']]['name'].'</a>'; - $form->addElement($out); - $form->addElement(form_makeCloseTag('div')); - } - html_form('edit', $form); - print '</div>'.NL; + } + $form->addElement(form_makeCloseTag('div')); + if($wr && $conf['license']){ + $form->addElement(form_makeOpenTag('div', array('class'=>'license'))); + $out = $lang['licenseok']; + $out .= '<a href="'.$license[$conf['license']]['url'].'" rel="license" class="urlextern"'; + if(isset($conf['target']['extern'])) $out .= ' target="'.$conf['target']['extern'].'"'; + $out .= '> '.$license[$conf['license']]['name'].'</a>'; + $form->addElement($out); + $form->addElement(form_makeCloseTag('div')); + } + + if ($wr) { + // sets changed to true when previewed + echo '<script type="text/javascript" charset="utf-8"><!--//--><![CDATA[//><!--'. NL; + echo 'textChanged = ' . ($mod ? 'true' : 'false'); + echo '//--><!]]></script>' . NL; + } ?> + <div style="width:99%;"> + + <div class="toolbar"> + <div id="draft__status"><?php if(!empty($INFO['draft'])) echo $lang['draftdate'].' '.dformat();?></div> + <div id="tool__bar"><?php if ($wr && $data['media_manager']){?><a href="<?php echo DOKU_BASE?>lib/exe/mediamanager.php?ns=<?php echo $INFO['namespace']?>" + target="_blank"><?php echo $lang['mediaselect'] ?></a><?php }?></div> + + </div> + <?php + + html_form('edit', $form); + print '</div>'.NL; +} + +/** + * Display the default edit form + * + * Is the default action for HTML_EDIT_FORMSELECTION. + */ +function html_edit_form($param) { + global $TEXT; + + if ($param['target'] !== 'section') { + msg('No editor for edit target ' . $param['target'] . ' found.', -1); + } + + $attr = array('tabindex'=>'1'); + if (!$param['wr']) $attr['readonly'] = 'readonly'; + + $param['form']->addElement(form_makeWikiText($TEXT, $attr)); } /** diff --git a/inc/indexer.php b/inc/indexer.php index 14af579bb..01ba76b08 100644 --- a/inc/indexer.php +++ b/inc/indexer.php @@ -1,15 +1,12 @@ <?php /** - * Common DokuWiki functions + * Functions to create the fulltext search index * * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * @author Andreas Gohr <andi@splitbrain.org> */ if(!defined('DOKU_INC')) die('meh.'); -require_once(DOKU_INC.'inc/io.php'); -require_once(DOKU_INC.'inc/utf8.php'); -require_once(DOKU_INC.'inc/parserutils.php'); // set the minimum token length to use in the index (note, this doesn't apply to numeric tokens) if (!defined('IDX_MINWORDLENGTH')) define('IDX_MINWORDLENGTH',2); @@ -308,6 +305,8 @@ function idx_addPage($page){ } unset($page_idx); // free memory + idx_saveIndexLine('title', '', $pid, p_get_first_heading($page, false)); + $pagewords = array(); // get word usage in page $words = idx_getPageWords($page); @@ -414,40 +413,85 @@ function idx_updateIndexLine($line,$pid,$count){ } /** + * Get the list of lenghts indexed in the wiki + * + * Read the index directory or a cache file and returns + * a sorted array of lengths of the words used in the wiki. + * + * @author YoBoY <yoboy.leguesh@gmail.com> + */ +function idx_listIndexLengths() { + global $conf; + // testing what we have to do, create a cache file or not. + if ($conf['readdircache'] == 0) { + $docache = false; + } else { + clearstatcache(); + if (@file_exists($conf['indexdir'].'/lengths.idx') and (time() < @filemtime($conf['indexdir'].'/lengths.idx') + $conf['readdircache'])) { + if (($lengths = @file($conf['indexdir'].'/lengths.idx', FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) ) !== false) { + $idx = array(); + foreach ( $lengths as $length) { + $idx[] = (int)$length; + } + return $idx; + } + } + $docache = true; + } + + if ($conf['readdircache'] == 0 or $docache ) { + $dir = @opendir($conf['indexdir']); + if($dir===false) + return array(); + $idx[] = array(); + while (($f = readdir($dir)) !== false) { + if (substr($f,0,1) == 'i' && substr($f,-4) == '.idx'){ + $i = substr($f,1,-4); + if (is_numeric($i)) + $idx[] = (int)$i; + } + } + closedir($dir); + sort($idx); + // we save this in a file. + if ($docache === true) { + $handle = @fopen($conf['indexdir'].'/lengths.idx','w'); + @fwrite($handle, implode("\n",$idx)); + @fclose($handle); + } + return $idx; + } + + return array(); +} + +/** * Get the word lengths that have been indexed. * * Reads the index directory and returns an array of lengths * that there are indices for. * - * @author Tom N Harris <tnharris@whoopdedo.org> + * @author YoBoY <yoboy.leguesh@gmail.com> */ function idx_indexLengths(&$filter){ global $conf; - $dir = @opendir($conf['indexdir']); - if($dir===false) - return array(); $idx = array(); - if(is_array($filter)){ - while (($f = readdir($dir)) !== false) { - if (substr($f,0,1) == 'i' && substr($f,-4) == '.idx'){ - $i = substr($f,1,-4); - if (is_numeric($i) && isset($filter[(int)$i])) - $idx[] = (int)$i; + if (is_array($filter)){ + // testing if index files exists only + foreach ($filter as $key => $value) { + if (@file_exists($conf['indexdir']."/i$key.idx")) { + $idx[] = $key; } } - }else{ - // Exact match first. - if(@file_exists($conf['indexdir']."/i$filter.idx")) - $idx[] = $filter; - while (($f = readdir($dir)) !== false) { - if (substr($f,0,1) == 'i' && substr($f,-4) == '.idx'){ - $i = substr($f,1,-4); - if (is_numeric($i) && $i > $filter) - $idx[] = (int)$i; + } else { + $lengths = idx_listIndexLengths(); + foreach ( $lengths as $key => $length) { + // we keep all the values equal or superior + if ((int)$length >= (int)$filter) { + $idx[] = $length; } } } - closedir($dir); return $idx; } diff --git a/inc/infoutils.php b/inc/infoutils.php index b43dd40be..ac6a0a84c 100644 --- a/inc/infoutils.php +++ b/inc/infoutils.php @@ -7,7 +7,6 @@ */ if(!defined('DOKU_INC')) die('meh.'); if(!defined('DOKU_MESSAGEURL')) define('DOKU_MESSAGEURL','http://update.dokuwiki.org/check/'); -require_once(DOKU_INC.'inc/HTTPClient.php'); /** * Check for new messages from upstream @@ -17,6 +16,7 @@ require_once(DOKU_INC.'inc/HTTPClient.php'); function checkUpdateMessages(){ global $conf; global $INFO; + global $updateVersion; if(!$conf['updatecheck']) return; if($conf['useacl'] && !$INFO['ismanager']) return; @@ -24,12 +24,10 @@ function checkUpdateMessages(){ $lm = @filemtime($cf); // check if new messages needs to be fetched - if($lm < time()-(60*60*24) || $lm < @filemtime(DOKU_CONF.'msg')){ - $num = @file(DOKU_CONF.'msg'); - $num = is_array($num) ? (int) $num[0] : 0; + if($lm < time()-(60*60*24) || $lm < @filemtime(DOKU_INC.'doku.php')){ $http = new DokuHTTPClient(); $http->timeout = 8; - $data = $http->get(DOKU_MESSAGEURL.$num); + $data = $http->get(DOKU_MESSAGEURL.$updateVersion); io_saveFile($cf,$data); }else{ $data = io_readFile($cf); @@ -55,36 +53,31 @@ function getVersionData(){ //official release $version['date'] = trim(io_readfile(DOKU_INC.'VERSION')); $version['type'] = 'Release'; - return $version; - }elseif(is_dir(DOKU_INC.'_darcs')){ - if(is_file(DOKU_INC.'_darcs/inventory')){ - $inventory = DOKU_INC.'_darcs/inventory'; - }elseif(is_file(DOKU_INC.'_darcs/hashed_inventory')){ - $inventory = DOKU_INC.'_darcs/hashed_inventory'; - }else{ - $version['date'] = 'unknown'; - $version['type'] = 'Darcs'; - return $version; - } - - //darcs checkout - read last 2000 bytes of inventory - $sz = filesize($inventory); - $seek = max(0,$sz-2000); - $fh = fopen($inventory,'rb'); - fseek($fh,$seek); - $chunk = fread($fh,2000); - fclose($fh); + }elseif(is_dir(DOKU_INC.'.git')){ + $version['type'] = 'Git'; + $version['date'] = 'unknown'; - preg_match_all('#\*\*(\d{4})(\d{2})(\d{2})\d{6}(?:\]|$)#m', $chunk, $matches, - PREG_SET_ORDER); - $version['date'] = implode('-', array_slice(array_pop($matches), 1)); - $version['type'] = 'Darcs'; - return $version; + $inventory = DOKU_INC.'.git/logs/HEAD'; + if(is_file($inventory)){ + $sz = filesize($inventory); + $seek = max(0,$sz-2000); // read from back of the file + $fh = fopen($inventory,'rb'); + fseek($fh,$seek); + $chunk = fread($fh,2000); + fclose($fh); + $chunk = trim($chunk); + $chunk = array_pop(explode("\n",$chunk)); //last log line + $chunk = array_shift(explode("\t",$chunk)); //strip commit msg + $chunk = explode(" ",$chunk); + array_pop($chunk); //strip timezone + $date = date('Y-m-d',array_pop($chunk)); + if($date) $version['date'] = $date; + } }else{ $version['date'] = 'unknown'; $version['type'] = 'snapshot?'; - return $version; } + return $version; } /** @@ -106,7 +99,9 @@ function check(){ global $conf; global $INFO; - msg('DokuWiki version: '.getVersion(),1); + if ($INFO['isadmin'] || $INFO['ismanager']){ + msg('DokuWiki version: '.getVersion(),1); + } if(version_compare(phpversion(),'5.1.2','<')){ msg('Your PHP version is too old ('.phpversion().' vs. 5.1.2+ needed)',-1); @@ -228,7 +223,6 @@ function check(){ msg('The current page is not writable by you',0); } - require_once(DOKU_INC.'inc/HTTPClient.php'); $check = wl('','',true).'data/_dummy'; $http = new DokuHTTPClient(); $http->timeout = 6; @@ -272,17 +266,15 @@ function msg($message,$lvl=0,$line='',$file=''){ if($line || $file) $message.=' ['.basename($file).':'.$line.']'; - if(!headers_sent()){ - if(!isset($MSG)) $MSG = array(); - $MSG[]=array('lvl' => $errors[$lvl], 'msg' => $message); - }else{ - $MSG = array(); - $MSG[]=array('lvl' => $errors[$lvl], 'msg' => $message); + if(!isset($MSG)) $MSG = array(); + $MSG[]=array('lvl' => $errors[$lvl], 'msg' => $message); + if(headers_sent()){ if(function_exists('html_msgarea')){ html_msgarea(); }else{ print "ERROR($lvl) $message"; } + unset($GLOBALS['MSG']); } } @@ -294,9 +286,15 @@ function msg($message,$lvl=0,$line='',$file=''){ * @author Andreas Gohr <andi@splitbrain.org> */ function dbg($msg,$hidden=false){ - (!$hidden) ? print '<pre class="dbg">' : print "<!--\n"; - print_r($msg); - (!$hidden) ? print '</pre>' : print "\n-->"; + if($hidden){ + echo "<!--\n"; + print_r($msg); + echo "\n-->"; + }else{ + echo '<pre class="dbg">'; + echo hsc(print_r($msg,true)); + echo '</pre>'; + } } /** diff --git a/inc/init.php b/inc/init.php index 6fb9559ce..b53167e3c 100644 --- a/inc/init.php +++ b/inc/init.php @@ -20,6 +20,9 @@ if (@file_exists($preload)) include($preload); // define the include path if(!defined('DOKU_INC')) define('DOKU_INC',fullpath(dirname(__FILE__).'/../').'/'); +// define Plugin dir +if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); + // define config path (packagers may want to change this to /etc/dokuwiki/) if(!defined('DOKU_CONF')) define('DOKU_CONF',DOKU_INC.'conf/'); @@ -51,49 +54,7 @@ global $cache_metadata; //set the configuration cascade - but only if its not already been set in preload.php if (empty($config_cascade)) { - $config_cascade = array( - 'main' => array( - 'default' => array(DOKU_CONF.'dokuwiki.php'), - 'local' => array(DOKU_CONF.'local.php'), - 'protected' => array(DOKU_CONF.'local.protected.php'), - ), - 'acronyms' => array( - 'default' => array(DOKU_CONF.'acronyms.conf'), - 'local' => array(DOKU_CONF.'acronyms.local.conf'), - ), - 'entities' => array( - 'default' => array(DOKU_CONF.'entities.conf'), - 'local' => array(DOKU_CONF.'entities.local.conf'), - ), - 'interwiki' => array( - 'default' => array(DOKU_CONF.'interwiki.conf'), - 'local' => array(DOKU_CONF.'interwiki.local.conf'), - ), - 'license' => array( - 'default' => array(DOKU_CONF.'license.php'), - 'local' => array(DOKU_CONF.'license.local.php'), - ), - 'mediameta' => array( - 'default' => array(DOKU_CONF.'mediameta.php'), - 'local' => array(DOKU_CONF.'mediameta.local.php'), - ), - 'mime' => array( - 'default' => array(DOKU_CONF.'mime.conf'), - 'local' => array(DOKU_CONF.'mime.local.conf'), - ), - 'scheme' => array( - 'default' => array(DOKU_CONF.'scheme.conf'), - 'local' => array(DOKU_CONF.'scheme.local.conf'), - ), - 'smileys' => array( - 'default' => array(DOKU_CONF.'smileys.conf'), - 'local' => array(DOKU_CONF.'smileys.local.conf'), - ), - 'wordblock' => array( - 'default' => array(DOKU_CONF.'wordblock.conf'), - 'local' => array(DOKU_CONF.'wordblock.local.conf'), - ), - ); + include(DOKU_INC.'inc/config_cascade.php'); } //prepare config array() @@ -155,8 +116,6 @@ if(!defined('DOKU_TAB')) define ('DOKU_TAB',"\t"); // define cookie and session id, append server port when securecookie is configured FS#1664 if (!defined('DOKU_COOKIE')) define('DOKU_COOKIE', 'DW'.md5(DOKU_REL.(($conf['securecookie'])?$_SERVER['SERVER_PORT']:''))); -// define Plugin dir -if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); // define main script if(!defined('DOKU_SCRIPT')) define('DOKU_SCRIPT','doku.php'); @@ -245,6 +204,25 @@ init_files(); scriptify(DOKU_CONF.'users.auth'); scriptify(DOKU_CONF.'acl.auth'); +// setup plugin controller class (can be overwritten in preload.php) +$plugin_types = array('admin','syntax','action','renderer', 'helper'); +global $plugin_controller_class, $plugin_controller; +if (empty($plugin_controller_class)) $plugin_controller_class = 'Doku_Plugin_Controller'; + +// load libraries +require_once(DOKU_INC.'inc/load.php'); + +// initialize plugin controller +$plugin_controller = new $plugin_controller_class(); + +// initialize the event handler +global $EVENT_HANDLER; +$EVENT_HANDLER = new Doku_Event_Handler(); + +// setup authentication system +if (!defined('NOSESSION')) { + auth_setup(); +} /** * Checks paths from config file @@ -284,7 +262,7 @@ function init_paths(){ function init_files(){ global $conf; - $files = array( $conf['indexdir'].'/page.idx'); + $files = array($conf['indexdir'].'/page.idx'); foreach($files as $file){ if(!@file_exists($file)){ @@ -297,6 +275,22 @@ function init_files(){ } } } + + # create title index (needs to have same length as page.idx) + $file = $conf['indexdir'].'/title.idx'; + if(!@file_exists($file)){ + $pages = file($conf['indexdir'].'/page.idx'); + $pages = count($pages); + $fh = @fopen($file,'a'); + if($fh){ + for($i=0; $i<$pages; $i++){ + fwrite($fh,"\n"); + } + fclose($fh); + }else{ + nice_die("$file is not writable. Check your permissions settings!"); + } + } } /** @@ -526,7 +520,6 @@ EOT; exit; } - /** * A realpath() replacement * @@ -588,5 +581,3 @@ function fullpath($path,$exists=false){ return $finalpath; } - - diff --git a/inc/io.php b/inc/io.php index 32a6f7b8e..1d69dabc9 100644 --- a/inc/io.php +++ b/inc/io.php @@ -7,10 +7,6 @@ */ if(!defined('DOKU_INC')) die('meh.'); -require_once(DOKU_INC.'inc/common.php'); -require_once(DOKU_INC.'inc/HTTPClient.php'); -require_once(DOKU_INC.'inc/events.php'); -require_once(DOKU_INC.'inc/utf8.php'); /** * Removes empty directories diff --git a/inc/lang/ar/adminplugins.txt b/inc/lang/ar/adminplugins.txt new file mode 100644 index 000000000..44790a04b --- /dev/null +++ b/inc/lang/ar/adminplugins.txt @@ -0,0 +1 @@ +===== إضافات إضافية =====
\ No newline at end of file diff --git a/inc/lang/ar/install.html b/inc/lang/ar/install.html new file mode 100644 index 000000000..1daf507c5 --- /dev/null +++ b/inc/lang/ar/install.html @@ -0,0 +1,12 @@ +<p>تساعد هذه الصفحة في التثبيت والإعداد الأوليين ل <a href="http://dokuwiki.org">دوكو ويكي</a>. مزيد من المعلومات عن هذا المثبت في +<a href="http://dokuwiki.org/installer">صفحة التوثيق</a> الخاصة به.</p> + +<p>دوكو ويكي تستخدم ملفات عادية لتخزين الصفحات و المعلومات المرتبطة بها (مثل. الصور , وفهارس البحث, والنسخ القديمة, إلخ). لكي تعمل بنجاح دوكو ويكي <strong>يجب</strong> ان يكون لديها اذن بالكتابة على المجلدات التي تحوي هذه الملفات. هذا المثبت غير قادر على اعداد اذونات المجلدات. عادة يجب عمل هذا مباشرة باستخدام أمر في محث الاوامر أو إن كنت تستخدم استضافة، عن طريقة FTP في لوحة تحكم الاستضافة (مثل. cPanel).</p> + +<p>سيُعد هذا المثبت اعدادات دوكو ويكي ل +<acronym title="قائمة التحكم بالوصول">ACL</acronym>, الذي سيسمح للمدير بالولوج و الوصول لقائمة إدارة دوكو ويكي لتثبيت الإضافات، وإدارة المستخدمين، و التحكم بالوصول لصفحات الويكي، وتعديل الاعدادات. +ليس مطلوبا لأجل عمل دوكو ويكي, لكنه سيجعل دوكو ويكي أسهل على المدير.</p> + +<p>المستخدمين الخبراء و المستخدمين مع متطلبات خاصة عليهم استخدام هذا الرابط لتفاصيل تتعلق ب +<a href="http://dokuwiki.org/install">توجيهات التثبيت</a> +و <a href="http://dokuwiki.org/config">ضبط الإعدادات</a>.</p>
\ No newline at end of file diff --git a/inc/lang/ar/lang.php b/inc/lang/ar/lang.php index 2ba1f7e9f..30095347e 100644 --- a/inc/lang/ar/lang.php +++ b/inc/lang/ar/lang.php @@ -5,6 +5,7 @@ * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * @author Mostafa Hussein <mostafa@gmail.com> * @author Yaman Hokan <always.smile.yh@hotmail.com> + * @author Usama Akkad <uahello@gmail.com> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'rtl'; @@ -13,82 +14,115 @@ $lang['doublequoteclosing'] = '”'; $lang['singlequoteopening'] = '‘'; $lang['singlequoteclosing'] = '’'; $lang['apostrophe'] = '؛'; -$lang['btn_edit'] = 'تحرير هذه الصفحة'; -$lang['btn_source'] = 'عرض مصدر الصفحة'; -$lang['btn_show'] = 'عرض الصفحة'; -$lang['btn_create'] = 'إنشاء هذه الصفحة'; -$lang['btn_search'] = 'بحث'; -$lang['btn_save'] = 'حفظ'; -$lang['btn_preview'] = 'استعراض'; -$lang['btn_top'] = 'لأعلى'; +$lang['btn_edit'] = 'حرر هذه الصفحة'; +$lang['btn_source'] = 'اعرض مصدر الصفحة'; +$lang['btn_show'] = 'اعرض الصفحة'; +$lang['btn_create'] = 'أنشئ هذه الصفحة'; +$lang['btn_search'] = 'ابحث'; +$lang['btn_save'] = 'احفظ'; +$lang['btn_preview'] = 'عاين'; +$lang['btn_top'] = 'ارجع للأعلى'; $lang['btn_newer'] = '<< أحدث'; $lang['btn_older'] = 'أقدم >>'; $lang['btn_revs'] = 'نسخ قديمة'; -$lang['btn_recent'] = 'أحدث التعديلات'; -$lang['btn_upload'] = 'تحميل'; -$lang['btn_cancel'] = 'إلغاء'; +$lang['btn_recent'] = 'أحدث التغييرات'; +$lang['btn_upload'] = 'ارفع'; +$lang['btn_cancel'] = 'ألغ'; $lang['btn_index'] = 'فهرس'; -$lang['btn_secedit'] = 'تحرير'; -$lang['btn_login'] = 'دخول'; -$lang['btn_logout'] = 'خروج'; +$lang['btn_secedit'] = 'حرر'; +$lang['btn_login'] = 'لج'; +$lang['btn_logout'] = 'اخرج'; $lang['btn_admin'] = 'المدير'; -$lang['btn_update'] = 'تحديث'; -$lang['btn_delete'] = 'حذف'; -$lang['btn_back'] = 'رجوع'; +$lang['btn_update'] = 'حدّث'; +$lang['btn_delete'] = 'احذف'; +$lang['btn_back'] = 'ارجع'; $lang['btn_backlink'] = 'ارتباطات'; -$lang['btn_backtomedia'] = 'رجوع إلى اختيار ملف الوسائط'; -$lang['btn_subscribe'] = 'اشترك في التعديلات'; -$lang['btn_unsubscribe'] = 'إلغاء الاشتراك في التعديلات'; -$lang['btn_profile'] = 'تحديث الملف الشخصي'; -$lang['btn_reset'] = 'تفريغ'; -$lang['btn_resendpwd'] = 'إرسال كلمة مرور جديدة'; -$lang['btn_draft'] = 'تحرير المسوّدة'; -$lang['btn_recover'] = 'استعادة المسوّدة'; -$lang['btn_draftdel'] = 'حذف المسوّدة'; -$lang['btn_revert'] = 'إعادة'; -$lang['loggedinas'] = 'دخول باسم'; -$lang['user'] = 'اسم المشترك'; -$lang['pass'] = 'كلمة المرور'; -$lang['newpass'] = 'كلمة مرور جديدة'; -$lang['oldpass'] = 'تأكيد كلمة المرور الحالية'; +$lang['btn_backtomedia'] = 'ارجع إلى اختيار ملف الوسائط'; +$lang['btn_subscribe'] = 'ادر الاشتراكات'; +$lang['btn_profile'] = 'حدث الملف الشخصي'; +$lang['btn_reset'] = 'صفّر'; +$lang['btn_resendpwd'] = 'ارسل كلمة سر جديدة'; +$lang['btn_draft'] = 'حرر المسودة'; +$lang['btn_recover'] = 'استرجع المسودة'; +$lang['btn_draftdel'] = 'احذف المسوّدة'; +$lang['btn_revert'] = 'استعد +'; +$lang['loggedinas'] = 'داخل باسم'; +$lang['user'] = 'اسم المستخدم'; +$lang['pass'] = 'كلمة السر'; +$lang['newpass'] = 'كلمة سر جديدة'; +$lang['oldpass'] = 'أكد كلمة السر الحالية'; $lang['passchk'] = 'مرة أخرى'; $lang['remember'] = 'تذكرني'; $lang['fullname'] = 'الاسم الكامل'; $lang['email'] = 'البريد الإلكتروني'; -$lang['register'] = 'تسجيل'; +$lang['register'] = 'سجّل'; $lang['profile'] = 'الملف الشخصي'; -$lang['badlogin'] = 'عذرا، اسم المشترك أو كلمة المرور غير صحيحة'; +$lang['badlogin'] = 'عذرا، اسم المشترك أو كلمة السر غير صحيحة'; $lang['minoredit'] = 'تعديلات طفيفة'; -$lang['draftdate'] = 'تشغيل حفظ المسوّدة آلياً'; -$lang['regmissing'] = 'عذرا، يجب ملء جميع الخانات'; -$lang['reguexists'] = 'عذرا، يوجد مشترك بنفس الاسم'; -$lang['regsuccess'] = 'تم تسجيل المشترك و أرسلت كلمة المرور عبر البريد الإلكتروني'; -$lang['regsuccess2'] = 'تم إنشاء المشترك'; -$lang['regmailfail'] = 'حدث خطأ فى إرسال رسالة كلمة المرور. يرجى مراسلة المدير'; -$lang['regbadmail'] = 'البريد الإلكتروني المعطى غير صحيح، إن كنت تظن الخطأ من الموقع راسل المدير'; -$lang['regbadpass'] = 'كلمتى المرور غير متطابقتين، حاول مرة أخرى'; -$lang['regpwmail'] = 'كلمة مرورك إلى دوكي ويكي'; -$lang['reghere'] = 'لست مشتركاً؟ تفضل اشترك'; +$lang['draftdate'] = 'حفظ المسودات تلقائيا مشغل'; +$lang['nosecedit'] = 'غُيرت الصفحة في هذه الأثناء، معلومات الفقرة اصبحت قديمة. حُمُلت كل الصفحة بدلا.'; +$lang['regmissing'] = 'عذرا، يجب ملء جميع الحقول'; +$lang['reguexists'] = 'عذرا، يوجد مشترك بنفس الاسم.'; +$lang['regsuccess'] = 'أنشئ المستخدم و ارسلت كلمة السر بالبريد.'; +$lang['regsuccess2'] = 'أنشئ المستخدم.'; +$lang['regmailfail'] = 'حدث خطأ فى إرسال رسالة كلمة اسرر. يرجى مراسلة المدير'; +$lang['regbadmail'] = 'يبدو البريد الإلكتروني المعطى غير صحيح، إن كنت تظن أن هذا خطأ، راسل المدير'; +$lang['regbadpass'] = 'كلمتى المرور غير متطابقتين، حاول مرة أخرى.'; +$lang['regpwmail'] = 'كلمة مرورك إلى دوكو ويكي'; +$lang['reghere'] = 'ليس لديك حساب بعد؟ احصل على واحد'; $lang['profna'] = 'هذه الويكي لا تدعم تعديل الملف الشخصي'; -$lang['profnochange'] = 'لا تغييرات، لا شيء مطلوب عمله'; -$lang['profnoempty'] = 'ليس مسموحاً ترك الاسم أو البريد الإلكتروني فارغاً'; -$lang['profchanged'] = 'تم تحديث الملف الشخصي بنجاح'; -$lang['pwdforget'] = 'نسيت كلمة المرور؟ احصل على واحدة جديدة'; -$lang['resendna'] = 'هذه الويكي لا تدعم إعادة إرسال كلمة المرور'; -$lang['resendpwd'] = 'إرسال كلمة المرور إلى'; -$lang['resendpwdmissing'] = 'عذراّ، يجب أن تملأ جميع الخانات'; -$lang['resendpwdnouser'] = 'عذراً، لدينا هذا المشترك في قاعدة بياناتنا'; -$lang['resendpwdbadauth'] = 'عذراً، رمز التفعيل هذا غير صحيح. نأكد أنك استخدمت كامل وصلة التأكيد'; -$lang['resendpwdconfirm'] = 'تم إرسال وصلة تأكيد إلى بريدك الإلكتروني'; -$lang['resendpwdsuccess'] = 'كلمة مرورك الجديدة تم إرسالها عبر البريد الإلكتروني'; -$lang['searchmedia'] = 'البحث عن اسم الملف : '; -$lang['txt_upload'] = 'اختر ملفاً للتحميل'; -$lang['txt_filename'] = 'تحميل باسم - اختياري'; -$lang['txt_overwrt'] = 'الكتابة على ملف موجود بنفس الاسم مسموحة'; -$lang['lockedby'] = 'حالياً مقفول بواسطة'; -$lang['lockexpire'] = 'سينتهي القفل في'; -$lang['willexpire'] = 'سينتهي قفل تحرير هذه الصفحه خلال دقيقة. لتجنب التعارض استخدم زر استعراض لبدأ القفل من جديد'; -$lang['notsavedyet'] = 'التعديلات التي لم تحفظ ستفقد. أموافق ؟'; +$lang['profnochange'] = 'لا تغييرات، لا شيء ليُعمل.'; +$lang['profnoempty'] = 'غير مسموح باسم مستخدم أو بريد فارغ.'; +$lang['profchanged'] = 'حُدث الملف الشخصي للمستخدم بنجاح.'; +$lang['pwdforget'] = 'أنسيت كلمة السر؟ احصل على واحدة جديدة'; +$lang['resendna'] = 'هذه الويكي لا تدعم إعادة إرسال كلمة المرور.'; +$lang['resendpwd'] = 'إرسال كلمة مرور'; +$lang['resendpwdmissing'] = 'عذراّ، يجب أن تملأ كل الحقول.'; +$lang['resendpwdnouser'] = 'عذراً، لم نجد المستخدم هذا في قاعدة بياناتنا.'; +$lang['resendpwdbadauth'] = 'عذراً، رمز التفعيل هذا غير صحيح. نأكد من استخدامك كامل وصلة التأكيد.'; +$lang['resendpwdconfirm'] = 'أرسل رابط التأكيد بواسطة البريد.'; +$lang['resendpwdsuccess'] = 'كلمة السرالجديدة إرسلت عبر البريد.'; +$lang['license'] = 'مالم يشر لخلاف ذلك، فإن المحتوى على هذه الويكي مرخص وفق الرخصة التالية:'; +$lang['licenseok'] = 'لاحظ: بتحرير هذه الصفحة أنت توافق على ترخيص محتواها تحت الرخصة التالية:'; +$lang['searchmedia'] = 'ابحث في اسماء الملفات:'; +$lang['searchmedia_in'] = 'ابحث في %s'; +$lang['txt_upload'] = 'اختر ملفاً للرفع'; +$lang['txt_filename'] = 'رفع كـ (اختياري)'; +$lang['txt_overwrt'] = 'اكتب على ملف موجود'; +$lang['lockedby'] = 'حالياً مقفل بواسطة'; +$lang['lockexpire'] = 'ينتهي القفل في'; +$lang['willexpire'] = 'سينتهي قفل تحرير هذه الصفحه خلال دقيقة.\nلتجنب التعارض استخدم زر المعاينة لتصفير مؤقت القفل.'; +$lang['js']['notsavedyet'] = 'التعديلات غير المحفوظة ستفقد. اكمل فعلا؟'; +$lang['js']['searchmedia'] = 'ابحث عن ملفات'; +$lang['js']['keepopen'] = 'أبقي النافذة مفتوحة أثناء الاختيار'; +$lang['js']['hidedetails'] = 'أخف التفاصيل'; +$lang['js']['mediatitle'] = 'اعدادات الرابط'; +$lang['js']['mediadisplay'] = 'نوع الرابط'; +$lang['js']['mediaalign'] = 'المحاذاة'; +$lang['js']['mediasize'] = 'حجم الصورة'; +$lang['js']['mediatarget'] = 'هدف الرابط'; +$lang['js']['mediaclose'] = 'اغلق'; +$lang['js']['mediainsert'] = 'أدرج'; +$lang['js']['mediadisplayimg'] = 'اظهر الصورة.'; +$lang['js']['mediadisplaylnk'] = 'اظهر الرابط فقط.'; +$lang['js']['mediasmall'] = 'نسخة مصغرة'; +$lang['js']['mediamedium'] = 'نسخة متوسطة'; +$lang['js']['medialarge'] = 'نسخة كبيرة'; +$lang['js']['mediaoriginal'] = 'نسخة أصلية'; +$lang['js']['medialnk'] = 'الرابط لصفحة التفاصيل'; +$lang['js']['mediadirect'] = 'رابط مباشر للأصل'; +$lang['js']['medianolnk'] = 'لا رابط'; +$lang['js']['medianolink'] = 'لا تربط الصورة'; +$lang['js']['medialeft'] = 'حاذي الصورة إلى اليسار.'; +$lang['js']['mediaright'] = 'حاذي الصورة إلى اليمين.'; +$lang['js']['mediacenter'] = 'حاذي الصورة إلى الوسط.'; +$lang['js']['medianoalign'] = 'لا تستعمل المحاذاة.'; +$lang['js']['nosmblinks'] = 'الروابط لمجلدات ويندوز المشاركة تعمل فقط مع متصفح مايكروسفت Internet Explorer. ما زال بإمكانك قص و لصق الرابط.'; +$lang['js']['linkwiz'] = 'مرشد الروابط'; +$lang['js']['linkto'] = 'الرابط إلى :'; +$lang['js']['del_confirm'] = 'هل حقاً تريد حذف البنود المختارة؟'; +$lang['js']['mu_btn'] = 'رفع عدة ملفات في وقت واحد'; $lang['rssfailed'] = 'خطأ ما حدث أثناء جلب ملف التغذية:'; $lang['nothingfound'] = 'لا يوجد شيء'; $lang['mediaselect'] = 'ملفات الوسائط المتعددة'; @@ -106,13 +140,6 @@ $lang['deletefail'] = 'لا يمكن حذف "%s"، تأكد من تر $lang['mediainuse'] = 'لم يحذف الملف "%s"، مازال موجوداً'; $lang['namespaces'] = 'فضاء التسمية'; $lang['mediafiles'] = 'ملفات موجودة في'; -$lang['js']['searchmedia'] = 'البحث عن الملفات'; -$lang['js']['keepopen'] = 'أبقي النافذة مفتوحة أثناء الاختيار'; -$lang['js']['hidedetails'] = 'إخفاء التفاصيل'; -$lang['js']['nosmblinks'] = 'الروابط لمجلدات ويندوز المشاركة تعمل فقط مع متصفح مايكروسفت Internet Explorer. ما زال بإمكانك قص و لصق الرابط.'; -$lang['js']['linkto'] = 'الرابط إلى :'; -$lang['js']['del_confirm'] = 'هل حقاً تريد حذف البنود المختارة؟'; -$lang['js']['mu_btn'] = 'رفع عدة ملفات في وقت واحد'; $lang['mediausage'] = 'استخدم هذه الصياغة للدلالة على هذا الملف:'; $lang['mediaview'] = 'عرض الملف الأصلي'; $lang['mediaroot'] = 'الجذر'; @@ -138,8 +165,11 @@ $lang['created'] = 'تم إنشاء'; $lang['restored'] = 'عودة لنسخة قديمة'; $lang['external_edit'] = 'تحرير خارجي'; $lang['summary'] = 'ملخص التحرير'; +$lang['noflash'] = 'تحتاج إلى<a href="http://www.adobe.com/products/flashplayer/">ملحق فلاش أدوبي</a> لعرض هذا المحتوى.'; +$lang['download'] = 'نزل Snippet'; $lang['mail_newpage'] = 'إضافة صفحة:'; $lang['mail_changed'] = 'تعديل صفحة:'; +$lang['mail_subscribe_list'] = 'صفحات غيرت في النظاق:'; $lang['mail_new_user'] = 'مشترك جديد'; $lang['mail_upload'] = 'تحميل ملف:'; $lang['qb_bold'] = 'نص عريض'; @@ -152,6 +182,11 @@ $lang['qb_h2'] = 'عنوان مستوى ثاني'; $lang['qb_h3'] = 'عنوان مستوى ثالث'; $lang['qb_h4'] = 'عنوان مستوى رابع'; $lang['qb_h5'] = 'عنوان مستوى خامس'; +$lang['qb_h'] = 'الترويسة'; +$lang['qb_hs'] = 'حدد الترويسة'; +$lang['qb_hplus'] = 'ترويسة أعلى'; +$lang['qb_hminus'] = 'ترويسة أخفض'; +$lang['qb_hequal'] = 'ترويسة بنفس المستوى'; $lang['qb_link'] = 'رابط داخلي'; $lang['qb_extlink'] = 'رابط خارجي'; $lang['qb_hr'] = 'سطر أفقي'; @@ -161,6 +196,7 @@ $lang['qb_media'] = 'إضافة صور و ملفات أخرى'; $lang['qb_sig'] = 'أضف توقيعك'; $lang['qb_smileys'] = 'الابتسامات'; $lang['qb_chars'] = 'محارف خاصة'; +$lang['upperns'] = 'انتقل للنطاق الأب'; $lang['admin_register'] = 'إضافة مشترك جديد'; $lang['metaedit'] = 'تحرير البيانات الشمولية '; $lang['metasaveerr'] = 'فشلت عملية كتابة البيانات الشمولية'; @@ -176,11 +212,22 @@ $lang['img_copyr'] = 'حقوق النسخ'; $lang['img_format'] = 'صيغ رسومية'; $lang['img_camera'] = 'آلة التصوير'; $lang['img_keywords'] = 'كلمات مفتاحية'; -$lang['subscribe_success'] = 'تم إضافة %s لقائمة الاشتراكات %s'; -$lang['subscribe_error'] = 'حدث خطأ فى إضافة %s لقائمة الاشتراكات %s'; -$lang['subscribe_noaddress'] = 'لا يوجد عنوان مرفق مع بيانات تسجيلك، لا يمكن إضافتك إلى قائمة الاشتراكات'; -$lang['unsubscribe_success'] = 'تم حذف%s من قائمة الاشتراكات %s'; -$lang['unsubscribe_error'] = 'حدث خطأ فى حذف %s من قائمة الاشتراكات %s'; +$lang['subscr_subscribe_success'] = 'اضيف %s لقائمة اشتراك %s'; +$lang['subscr_subscribe_error'] = 'خطأ في إضافة %s لقائمة اشتراك %s'; +$lang['subscr_subscribe_noaddress'] = 'ليس هناك عنوان مرتبط بدخولك، لا يمكن اضافتك لقائمة الاشتراك'; +$lang['subscr_unsubscribe_success'] = 'أزيل %s من قائمة اشتراك %s'; +$lang['subscr_unsubscribe_error'] = 'خطأ في إزالة %s من قائمة اشتراك %s'; +$lang['subscr_already_subscribed'] = '%s مشترك مسبقا في %s'; +$lang['subscr_not_subscribed'] = '%s ليس مشتركا في %s'; +$lang['subscr_m_not_subscribed'] = 'لست مشتركا حاليا بالصفحة او النطاق الحاليين'; +$lang['subscr_m_new_header'] = 'أضف اشتراكا'; +$lang['subscr_m_current_header'] = 'الاشتراكات الحالية'; +$lang['subscr_m_unsubscribe'] = 'ألغ الاشتراك'; +$lang['subscr_m_subscribe'] = 'اشترك'; +$lang['subscr_m_receive'] = 'استقبل'; +$lang['subscr_style_every'] = 'بريدا على كل تغيير'; +$lang['subscr_style_digest'] = 'بريد ملخص عن تغييرات كل صفحة'; +$lang['subscr_style_list'] = 'قائمة بالصفحات المتغيرة منذ آخر بريد'; $lang['authmodfailed'] = 'إعدادات تصريح فاسدة، يرجى مراسلة المدير.'; $lang['authtempfail'] = 'تصريح المشترك غير متوفر مؤقتاً، إن استمرت هذه الحالة يرجى مراسلة المدير'; $lang['i_chooselang'] = 'اختر لغتك'; @@ -213,11 +260,27 @@ $lang['i_pol0'] = 'ويكي مفتوحة؛ أي القراءة و $lang['i_pol1'] = 'ويكي عامة؛ أي القراءة للجميع ولكن الكتابة والتحميل للمشتركين المسجلين فقط'; $lang['i_pol2'] = 'ويكي مغلقة؛ أي القراءة والكتابة والتحميل للمشتركين المسجلين فقط'; $lang['i_retry'] = 'إعادة المحاولة'; +$lang['mu_intro'] = 'هنا يمكنك رفع ملفات متعددة في وقت واحد. انقر على زر استعرض لاضافتهم إلى الطابور. انقر ارفع عند الانتهاء.'; $lang['mu_gridname'] = 'اسم الملف'; $lang['mu_gridsize'] = 'الحجم'; $lang['mu_gridstat'] = 'الحالة'; +$lang['mu_namespace'] = 'نطاق'; +$lang['mu_browse'] = 'استعرض'; $lang['mu_toobig'] = 'كبير جدا'; $lang['mu_ready'] = 'جاهز للرفع'; $lang['mu_done'] = 'اكتمل'; $lang['mu_fail'] = 'فشل'; +$lang['mu_authfail'] = 'انتهت الجلسة'; +$lang['mu_progress'] = 'رُفع @PCT@% '; +$lang['mu_filetypes'] = 'انواع الملفات المسموحة'; $lang['mu_info'] = 'تم رفع الملفات'; +$lang['mu_lasterr'] = 'آخر خطأ:'; +$lang['recent_global'] = 'انت تراقب حاليا التغييرات داخل نطاق <b>%s</b>. يمكنك أيضا <a href="%s">عرض أحدث تغييرات الويكي كلها</a>.'; +$lang['years'] = '%d سنة مضت'; +$lang['months'] = '%d شهرا مضى'; +$lang['weeks'] = '%d اسبوعا مضى'; +$lang['days'] = '%d يوما مضى'; +$lang['hours'] = '%d ساعة مضت'; +$lang['minutes'] = '%d دقيقة مضت'; +$lang['seconds'] = '%d ثانية مضت'; +$lang['wordblock'] = 'لم تحفظ تغييراتك لاحتوائها على نص ممنوع )غثاء('; diff --git a/inc/lang/ar/pwconfirm.txt b/inc/lang/ar/pwconfirm.txt index 6b735e291..401053ea0 100644 --- a/inc/lang/ar/pwconfirm.txt +++ b/inc/lang/ar/pwconfirm.txt @@ -1,8 +1,8 @@ -مرحبا @ الاسم الكامل @ +مرحبا @FULLNAME@ -شخص ما طلب كلمة سر جديدة لـحسابك @ المعرف @ في @ DOKUWIURL @ +شخص ما طلب كلمة سر جديدة لـحسابك @TITLE@ في @DOKUWIKIURL@ إذا لم تكن قد طلبت كلمة سر جديدة رجاء قم بتجاهل هذه الرسالة . لتأكيد أنك أنت قمت بطلب كلمة السر الجديدة . نرجو منك الضغط على الرابط في الأسفل . -@ التأكيد @ +@CONFIRM@ -- -لقد تم عمل هذه الرسالة من قبل DokuWiki .. في @ DOKUWIKIURL @
\ No newline at end of file +لقد تم عمل هذه الرسالة من قبل DokuWiki .. في @DOKUWIKIURL@ diff --git a/inc/lang/ar/registermail.txt b/inc/lang/ar/registermail.txt new file mode 100644 index 000000000..f04801f20 --- /dev/null +++ b/inc/lang/ar/registermail.txt @@ -0,0 +1,14 @@ +سجل مستخدم جديد. هذه هي التفاصيل: + +اسم المستخدم : @NEWUSER@ +الاسم الكامل : @NEWNAME@ +البريد: @NEWEMAIL@ + +التاريخ : @DATE@ +المتصفح : @BROWSER@ +عنوان-IP: @IPADDRESS@ +اسم المضيف: @HOSTNAME@ + +-- +وُلد هذا البريد من دوكو ويكي في +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/ar/subscr_digest.txt b/inc/lang/ar/subscr_digest.txt new file mode 100644 index 000000000..8d6e731cf --- /dev/null +++ b/inc/lang/ar/subscr_digest.txt @@ -0,0 +1 @@ +مرحبا!
\ No newline at end of file diff --git a/inc/lang/ar/subscr_form.txt b/inc/lang/ar/subscr_form.txt new file mode 100644 index 000000000..919d256fb --- /dev/null +++ b/inc/lang/ar/subscr_form.txt @@ -0,0 +1,3 @@ +====== إدارة الإشتراكات ====== + +تمكنك هذه الصفحة من إدارة اشتراكاتك للصفحة و النطاق الحاليين.
\ No newline at end of file diff --git a/inc/lang/ar/subscr_list.txt b/inc/lang/ar/subscr_list.txt new file mode 100644 index 000000000..22773a8e4 --- /dev/null +++ b/inc/lang/ar/subscr_list.txt @@ -0,0 +1,17 @@ +مرحبا! + +صفحات في النطاق @PAGE@ في ويكي @TITLE@ غُيرت. +هذه هي الصفحات المتغيرة: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +لإلغاء إشعارات الصفحة, لُج الويكي في +@DOKUWIKIURL@ ثم زُر +@SUBSCRIBE@ +ثم ألغ اشتراك تغييرات الصفحة و/أو النطاق. + +-- +وُلد هذا البريد من دوكو ويكي في +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/ar/subscr_single.txt b/inc/lang/ar/subscr_single.txt new file mode 100644 index 000000000..5c62aeaeb --- /dev/null +++ b/inc/lang/ar/subscr_single.txt @@ -0,0 +1,23 @@ +مرحبا! + +الصفحة @PAGE@ في ويكي @TITLE@ تغيرت. +هذه هي التغييرات: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +التاريخ : @DATE@ +المستخدم : @USER@ +ملخص التحرير: @SUMMARY@ +الاصدار القديم: @OLDPAGE@ +الاصدار الحديث: @NEWPAGE@ + +لإلغاء إشعارات الصفحة,لُج الويكي في +@DOKUWIKIURL@ ثم زُر +@NEWPAGE@ +وألغ الاشتراك من تغييرات الصفحة و/أو النطاق. + +-- +ولد هذا البريد باستخدام دوكو ويكي في +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/ar/uploadmail.txt b/inc/lang/ar/uploadmail.txt new file mode 100644 index 000000000..e4f16c7a5 --- /dev/null +++ b/inc/lang/ar/uploadmail.txt @@ -0,0 +1,14 @@ +رُفع ملف إلى دوكو ويكي خاصتك. هذه هي التفاصيل: + +الملف : @MEDIA@ +التاريخ : @DATE@ +المستعرض : @BROWSER@ +عنوان-IP: @IPADDRESS@ +اسم المضيف: @HOSTNAME@ +الحجم : @SIZE@ +نوع MIME : @MIME@ +المستخدم: @USER@ + +-- +ولد هذا البريد من دوكو ويكي في +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/az/admin.txt b/inc/lang/az/admin.txt new file mode 100755 index 000000000..000caa06d --- /dev/null +++ b/inc/lang/az/admin.txt @@ -0,0 +1,4 @@ +====== İdarəetmə ====== + +Aşağıda Dokuwiki-də mümkün olan administrativ əməliyyatların siyahısı göstərilib. + diff --git a/inc/lang/az/adminplugins.txt b/inc/lang/az/adminplugins.txt new file mode 100755 index 000000000..62b1f8793 --- /dev/null +++ b/inc/lang/az/adminplugins.txt @@ -0,0 +1 @@ +===== Əlavə Plugin-lər ===== diff --git a/inc/lang/az/backlinks.txt b/inc/lang/az/backlinks.txt new file mode 100755 index 000000000..72a7c858d --- /dev/null +++ b/inc/lang/az/backlinks.txt @@ -0,0 +1,4 @@ +====== Əks linklər ====== + +Bu, bu səhifəyə link saxlayan səhifələrin siyahısıdır. + diff --git a/inc/lang/az/conflict.txt b/inc/lang/az/conflict.txt new file mode 100755 index 000000000..908be09f1 --- /dev/null +++ b/inc/lang/az/conflict.txt @@ -0,0 +1,5 @@ +====== Daha yeni versiya var ====== + +Düzəliş etdiyiniz sənədin daha yeni versiyası var. Siz və başqa istifadəçi eyni zamanda eyni sənədi düzəliş edən zaman belə vəziyyət yaranır. + +Aşağıda göstərilən fərqlər ilə tanış olun və lazım olan versiyanı təyin edin. Əgər ''Yadda Saxla'' düyməsini sıxsanız, onda sizin versiya seçilmiş olur. ''İmtina'' düyməsini sıxsanız isə onda hazırki versiya seçilmiş olur. diff --git a/inc/lang/az/denied.txt b/inc/lang/az/denied.txt new file mode 100755 index 000000000..a68b08c8c --- /dev/null +++ b/inc/lang/az/denied.txt @@ -0,0 +1,3 @@ +====== Müraciət qadağan edilmişdir ====== + +Sizin bu əməliyyat üçün kifayət qədər haqqınız yoxdur. Bəlkə, Siz sistemə oz istifadəçi adınız ilə girməyi unutmusunuz? diff --git a/inc/lang/az/diff.txt b/inc/lang/az/diff.txt new file mode 100755 index 000000000..a944f84f4 --- /dev/null +++ b/inc/lang/az/diff.txt @@ -0,0 +1,4 @@ +====== Fərqlər ====== + +Burada bu səhifənin seçilmiş və hazırki versiyaların arasında olan fərqlər göstərilib. + diff --git a/inc/lang/az/draft.txt b/inc/lang/az/draft.txt new file mode 100755 index 000000000..65c743de3 --- /dev/null +++ b/inc/lang/az/draft.txt @@ -0,0 +1,5 @@ +====== Qaralama tapılıb ====== + +Bu səhifənin son düzəlişi düzgün başa çatdırılmamışdir. Düzəliş zamanı qaralama avtomatik yadda saxlanılmışdır. İndi Siz onu açıb düzəlişi davam edə bilərsiniz. Qaralama versiyası aşağıda göstərilib. + +İtmiş versiyanı //qaytarmaq//, qaralamanı //silmək//, və ya düzəlişi //imtina// etmək istədiyinizi təyin edin. diff --git a/inc/lang/az/edit.txt b/inc/lang/az/edit.txt new file mode 100755 index 000000000..7ce66307e --- /dev/null +++ b/inc/lang/az/edit.txt @@ -0,0 +1 @@ +Səhifədə düzəliş edin və ''Yadda Saxla'' düyməsini sıxın. Sintaksis ilə tanış olmaq üçün [[wiki:syntax]] səhifəsini oxuyun. Ançaq səhifəni **daha yaxşı** etməki istədiyiniz halda düzəliş etməyinizi xahiş edirik. Əgər Siz nəyi isə ancaq test etmək istəyirsiniz sə, onda [[playground:playground]] xüsusi səhifədən istifadə edin. diff --git a/inc/lang/az/editrev.txt b/inc/lang/az/editrev.txt new file mode 100755 index 000000000..8e98d2ff3 --- /dev/null +++ b/inc/lang/az/editrev.txt @@ -0,0 +1,2 @@ +**Sənədin köhnə versiyasını açmısınız!** Bu versiyanı yadda saxlasanız, bu mətn ilə olan yeni hazırki versiya yaratmış olarsınız. +---- diff --git a/inc/lang/az/index.txt b/inc/lang/az/index.txt new file mode 100755 index 000000000..dc3ffa3b0 --- /dev/null +++ b/inc/lang/az/index.txt @@ -0,0 +1,4 @@ +====== Mündəricat ====== + +Burada mövcud olan səhifələr Namespace-lərə ([[doku>namespaces|namespaces]]) görə sıralanmış halda göstərilib. + diff --git a/inc/lang/az/install.html b/inc/lang/az/install.html new file mode 100755 index 000000000..d41511438 --- /dev/null +++ b/inc/lang/az/install.html @@ -0,0 +1,7 @@ +<p>Bu səhifə Sizə <a href="http://dokuwiki.org">DokuWiki</a>-ni quraşdırmaqa kömək etmək üçündür. Quraşdırma haqqına əlavə məlumatı onun <a href="http://dokuwiki.org/installer">dokumentasiya səhifəsində</a> var.</p> + +<p>Səhifələri və əlavə məlumatları (məsələn, şəkillər, axtarış indeksi, səhifələrin əvvəlki versiyaları, və sairə) saxlamaq üçün DokuWiki adi fayllardan istifadə edir. DokuWiki-nin uğurlu işləməsi üçün bu faylların yerləşən qovluqa yazı imkanı vacib <strong>lazımdır</strong>. Bu quraşdırma proqramı sistemin qovluqlarına olan haqları dəyişə bilmir. Çox vaxt bu birbaşa shell-dən, və ya, əgər Siz hostinq-dən istifadə edirsinizsə, FTP vasitəsi ya idarəetmə paneli vasitəsi (məsələn, cPanel) ilə edilir.</p> + +<p>Quraşdırma proqramı sizin DokuWiki-nizdə haqlar kontrolu siyahısını (<acronym title="access control list">ACL</acronym>) quracaq. Bu, sistemə girdikdən sonra, administratora xüsusi menü vasitəsi ilə plugin-ləri quraşdırmaq, istifadiçiləri və səhifələrə giriş haqlarını idarəetmək, və həmçinin sistemin konfiqurasiyasını quraşdırmağa imkan verəcək. Haqlar kontrolu siyahısı DokuWiki-yə mütləq lazım deyil, amma o Sizə DokuWiki-nin idarəetməsini asanlaşdırır.</p> + +<p>Təcrübəli istifadəçilər və xüsusi tələbləri olan istifadəçilərə əlavə məlumat üçün <a href="http://dokuwiki.org/install">quraşdırılma prosesi</a> və <a href="http://dokuwiki.org/config">konfiqurasiya parametrləri</a> link-lərinə muraciyət etməsk tövsiyyə olunur.</p> diff --git a/inc/lang/az/lang.php b/inc/lang/az/lang.php new file mode 100644 index 000000000..8d96f08cc --- /dev/null +++ b/inc/lang/az/lang.php @@ -0,0 +1,245 @@ +<?php +/** + * Azerbaijani language file + * + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + * @author Pasha L. Topchiyev <pasha@itopchiyev.com> + */ +$lang['encoding'] = ' utf-8'; +$lang['direction'] = 'ltr'; +$lang['doublequoteopening'] = '«'; +$lang['doublequoteclosing'] = '»'; +$lang['singlequoteopening'] = '„'; +$lang['singlequoteclosing'] = '“'; +$lang['apostrophe'] = '’'; +$lang['btn_edit'] = 'Səhifəyə düzəliş et'; +$lang['btn_source'] = 'Səhifənin ilkin mətnini göstər'; +$lang['btn_show'] = 'Səhifəni göstər'; +$lang['btn_create'] = 'Səhifəni yarat'; +$lang['btn_search'] = 'Axtarış'; +$lang['btn_save'] = 'Yadda saxla'; +$lang['btn_preview'] = 'Baxış'; +$lang['btn_top'] = 'Yuxarı'; +$lang['btn_newer'] = '<< daha təzələr'; +$lang['btn_older'] = 'daha köhnələr >>'; +$lang['btn_revs'] = 'Səhifənin tarixçəsi'; +$lang['btn_recent'] = 'Yaxın dəyişiklər'; +$lang['btn_upload'] = 'Serverə yükə'; +$lang['btn_cancel'] = 'İmtina'; +$lang['btn_index'] = 'Bütün səhifələr'; +$lang['btn_secedit'] = 'Düzəliş et'; +$lang['btn_login'] = 'Giriş'; +$lang['btn_logout'] = 'Cıxış'; +$lang['btn_admin'] = 'İdarəetmə'; +$lang['btn_update'] = 'Yenilə'; +$lang['btn_delete'] = 'Sil'; +$lang['btn_back'] = 'Geri'; +$lang['btn_backlink'] = 'Bura olan link-lər'; +$lang['btn_backtomedia'] = 'media-fayl seçiminə qayıt'; +$lang['btn_subscribe'] = 'Abunə ol (bütün dəyişiklər)'; +$lang['btn_unsubscribe'] = 'Abunəlikdən çıx (bütün dəyişiklər)'; +$lang['btn_subscribens'] = 'Abunə ol (bu bölümün dəyişikləri)'; +$lang['btn_unsubscribens'] = 'Abunəlikdən çıx (bu bölümün dəyişikləri)'; +$lang['btn_profile'] = 'Profil'; +$lang['btn_reset'] = 'Boşalt'; +$lang['btn_resendpwd'] = 'Yeni şifrəni göndər'; +$lang['btn_draft'] = 'Qaralamada düzəliş etmək'; +$lang['btn_recover'] = 'Qaralamanı qaytar'; +$lang['btn_draftdel'] = 'Qaralamanı sil'; +$lang['btn_revert'] = 'Qaytar'; +$lang['loggedinas'] = 'İstifadəcinin adı'; +$lang['user'] = 'istifadəci adı'; +$lang['pass'] = 'Şifrə'; +$lang['newpass'] = 'Yeni şifrə'; +$lang['oldpass'] = 'Hazırki şifrəni daxil edin'; +$lang['passchk'] = 'təkrarlayın'; +$lang['remember'] = 'Məni yadda saxla'; +$lang['fullname'] = 'Tam ad'; +$lang['email'] = 'E-Mail'; +$lang['register'] = 'Qeydiyyatdan keç'; +$lang['profile'] = 'İstifadəçi profili'; +$lang['badlogin'] = 'Təssüf ki istifadəçi adı və ya şifrə səhvdir.'; +$lang['minoredit'] = 'Az dəyişiklər'; +$lang['draftdate'] = 'Qaralama yadda saxlandı'; +$lang['nosecedit'] = 'Bu vaxt ərzində səhifə dəyişilmişdir, və bölmə haqqında məlumat köhnəlmişdir. Səhifənin tam versiyası yüklənmişdir.'; +$lang['regmissing'] = 'Təssüf ki Siz bütün xanələri doldurmalısınız.'; +$lang['reguexists'] = 'Təssüf ki bu ad ilə istifadəçi artıq mövcuddur.'; +$lang['regsuccess'] = 'İstivadəci yaradıldı və şifrə sizin e-maila göndərildi.'; +$lang['regsuccess2'] = 'İstifadəçi yaradıldı.'; +$lang['regmailfail'] = 'Deyəsən, xəta şifrə e-maila göndərildikdə baş verdi. Xaiş olunur, ki administrator ilə əlaqə saxlayasınız!'; +$lang['regbadmail'] = 'Deyəsən, daxil edilmiş e-mail ünvanı səhvdir. Əgər şübhəniz var isə administrator ilə əlaqə saxlayın.'; +$lang['regbadpass'] = 'Daxil edilmiş iki şifrə fərqlidir. Xaiş olunur ki, yenidən daxil edəsiniz.'; +$lang['regpwmail'] = 'Sizin DokuWiki sistemi üçün şifrəniz'; +$lang['reghere'] = 'Sizin hələ istifadəçi adınız yoxdur? Buyurun əldə edin'; +$lang['profna'] = 'Bu wiki profilin dəyişdirilməsini dəstəkləmir'; +$lang['profnochange'] = 'Dəyişiklər edilmədi, profil yenilənmədi.'; +$lang['profnoempty'] = 'istifadəci adı və e-mail ünvanı boş ola bilməz.'; +$lang['profchanged'] = 'İstifadəçi profili uğurla yeniləndi.'; +$lang['pwdforget'] = 'Şifrəni yaddan çıxartmısız? Buyurun yenisini əldə edin'; +$lang['resendna'] = 'Bu wiki şifrəni yenidən göndərməyi dəstəkləmir.'; +$lang['resendpwd'] = 'Yeni şifrəni göndər:'; +$lang['resendpwdmissing'] = 'Formanın bütün xanəlırini doldurun.'; +$lang['resendpwdnouser'] = 'Verilənlər bazasında bu ad ilə istifadəçi tapılmadı.'; +$lang['resendpwdbadauth'] = 'Ativləşdirmə kodu səhvdir. Link-i tam olaraq köçürdüyünüzü yoxlayın. '; +$lang['resendpwdconfirm'] = 'Şifrəni təstiqləmək üçün sizin e-maila link göndərilmişdir. '; +$lang['resendpwdsuccess'] = 'Yeni şifrəniz e-maila göndərildi.'; +$lang['license'] = 'Fərqli şey göstərilmiş hallardan başqa, bu wiki-nin mətni aşağıda göstərilmiş lisenziyanın şərtlərinə uyğun təqdim olunur:'; +$lang['licenseok'] = 'Qeyd: bu səhifəni düzəliş edərək, Siz elədiyiniz düzəlişi aşağıda göstərilmiş lisenziyanın şərtlərinə uyğun istifadəsinə razılıq verirsiniz:'; +$lang['searchmedia'] = 'Faylın adına görə axtarış:'; +$lang['searchmedia_in'] = '%s-ın içində axtarış'; +$lang['txt_upload'] = 'Serverə yükləmək üçün fayl seçin'; +$lang['txt_filename'] = 'Faylın wiki-də olan adını daxil edin (mütləq deyil)'; +$lang['txt_overwrt'] = 'Mövcud olan faylın üstündən yaz'; +$lang['lockedby'] = 'В данный момент заблокирован Bu an blokdadır'; +$lang['lockexpire'] = 'Blok bitir:'; +$lang['willexpire'] = 'Sizin bu səhifədə dəyişik etmək üçün blokunuz bir dəqiqə ərzində bitəcək.\nMünaqişələrdən yayınmaq və blokun taymerini sıfırlamaq üçün, baxış düyməsini sıxın.'; +$lang['notsavedyet'] = 'Yaddaşa yazılmamış dəyişiklər itəcəklər.\nSiz davam etmək istəyirsiz?'; +$lang['rssfailed'] = 'Aşağıda göstərilmiş xəbər lentini əldə edən zaman xəta baş verdi: '; +$lang['nothingfound'] = 'Heçnə tapılmadı.'; +$lang['mediaselect'] = 'Mediya-faylın seçilməsi'; +$lang['fileupload'] = 'Mediya-faylın serverə yüklənməsi'; +$lang['uploadsucc'] = 'Yüklənmə uğur ilə başa çatdı'; +$lang['uploadfail'] = 'Yüklənmə zamanı xəta baş veri. Bəlkə giriş haqları ilə problem var?'; +$lang['uploadwrong'] = 'Yuklənməyə qadağa qoyuldu. Belə növlu faylları serverə yükləmək olmaz. '; +$lang['uploadexist'] = 'Bu adlı fayl artıq serverdə var. Yükləmə alınmadı .'; +$lang['uploadbadcontent'] = 'Faylın tərkibi %s növünə uyğun gəlmir.'; +$lang['uploadspam'] = 'Yüklənmə spam-filtri tərəfindən dayandırıldı.'; +$lang['uploadxss'] = 'Yüklənmə təhlükəsizlik nəzərindən dayandırılmışdır.'; +$lang['uploadsize'] = 'Yüklənilmiş fayl çox boyükdür. (maks. %s)'; +$lang['deletesucc'] = '"%s" adlı fayl silindi.'; +$lang['deletefail'] = '"%s" adlı fayl silinmədi. Faylın giriş haqlarını yoxlayın.'; +$lang['mediainuse'] = '"%s" adlı fayl silinmədi. Fayl hələ istifadə olunur'; +$lang['namespaces'] = 'Namespace-lər'; +$lang['mediafiles'] = 'Mövcud olan fayllar'; +$lang['js']['searchmedia'] = 'Faylların axtarışı'; +$lang['js']['keepopen'] = 'Seçimdən sonra pəncərəni açıq saxlamaq'; +$lang['js']['hidedetails'] = 'Təfərruatı gizlət'; +$lang['js']['nosmblinks'] = 'Windows-un şəbəkə qovluqlarına link ancaq Internet Explorer-dən işləyir. \nAmma Siz linki köçürə bilərsiniz.'; +$lang['js']['linkwiz'] = 'Linklər köməkçisi'; +$lang['js']['linkto'] = 'Link göstərir:'; +$lang['js']['del_confirm'] = 'Siz əminsiz ki, seçilmişləri silmək istəyirsiniz?'; +$lang['js']['mu_btn'] = 'Bir neçə faylı birdən yükləmək'; +$lang['mediausage'] = 'Bu fayla link yaratmaq üçün aşağıdakı sintaksisdən istifadə edin:'; +$lang['mediaview'] = 'Bu faylın ilkinə bax'; +$lang['mediaroot'] = 'kök'; +$lang['mediaupload'] = 'Burda faylı hazırki qovluqa yükləmək olar ("namespace"). Alt qovluqlar yaratmaq üçün, onların adlarını faylın adının avvəlinə artırın ("Adla yükləmək"). Alt qovluqların adları çütnöqtə ilə ayrılır. '; +$lang['mediaextchange'] = 'Faylın nüvü .%s -dan .%s -ya dəyişdi!'; +$lang['reference'] = 'Linklər göstərir'; +$lang['ref_inuse'] = 'Bu fayl silinə bilməz, çünki o aşağıdaki səhifələr tərəfindən istifadə olunur:'; +$lang['ref_hidden'] = 'Bəzi link-lər sizin oxumaq haqqınız olmayan səhifələrdə yerləşir'; +$lang['hits'] = 'uyğunluqlar'; +$lang['quickhits'] = 'Səhifələrin adlarında uyğunluqlar'; +$lang['toc'] = 'Mündəricat'; +$lang['current'] = 'hazırki'; +$lang['yours'] = 'Sizin versiyanız'; +$lang['diff'] = 'hazırki versiyadan fərqləri göstər'; +$lang['diff2'] = 'Versiyaların arasındaki fərqləri göstər '; +$lang['line'] = 'Sətr'; +$lang['breadcrumb'] = 'Siz ziyarət etdiniz'; +$lang['youarehere'] = 'Siz burdasınız'; +$lang['lastmod'] = 'Son dəyişiklər'; +$lang['by'] = ' Kimdən'; +$lang['deleted'] = 'silinib'; +$lang['created'] = 'yaranıb'; +$lang['restored'] = 'köhnə versiya qaytarıldı'; +$lang['external_edit'] = 'bayırdan dəyişik'; +$lang['summary'] = 'Dəyişiklər xülasəsi'; +$lang['noflash'] = 'Bu məzmuna baxmaq üçün <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> tələb olunur.'; +$lang['download'] = 'Kodu yüklə'; +$lang['mail_newpage'] = 'səhifə əlavə olundu:'; +$lang['mail_changed'] = 'səhifəyə düzəliş edildi:'; +$lang['mail_new_user'] = 'yeni istifadəçi:'; +$lang['mail_upload'] = 'fayl yükləndi:'; +$lang['qb_bold'] = 'Qalın şrift'; +$lang['qb_italic'] = 'Maili şrift'; +$lang['qb_underl'] = 'Alt-xətt'; +$lang['qb_code'] = 'Kodun mətni'; +$lang['qb_strike'] = 'Pozulmuş şrift'; +$lang['qb_h1'] = '1 dərəcəli başlıq'; +$lang['qb_h2'] = '2 dərəcəli başlıq'; +$lang['qb_h3'] = '3 dərəcəli başlıq'; +$lang['qb_h4'] = '4 dərəcəli başlıq'; +$lang['qb_h5'] = '5 dərəcəli başlıq'; +$lang['qb_h'] = 'Başlıq'; +$lang['qb_hs'] = 'Başlıq seçimi'; +$lang['qb_hplus'] = 'Daha yüksək dərəcəli başlıq'; +$lang['qb_hminus'] = 'Daha aşağı dərəcəli başlıq (altbaşlıq)'; +$lang['qb_hequal'] = 'Hazırki dərəcəli başlıq'; +$lang['qb_link'] = 'İç link'; +$lang['qb_extlink'] = 'Bayır link'; +$lang['qb_hr'] = 'Bölücü'; +$lang['qb_ol'] = 'Nömrələnmiş siyahının element'; +$lang['qb_ul'] = 'Nömrələnməmiş siyahının element'; +$lang['qb_media'] = 'Şəkillər və başqa fayllar əlavə et'; +$lang['qb_sig'] = 'İmza at'; +$lang['qb_smileys'] = 'Smayllar'; +$lang['qb_chars'] = 'Xüsusi simvollar'; +$lang['upperns'] = 'Ana namespace-ə keç'; +$lang['admin_register'] = 'İstifadəçi əlavə et'; +$lang['metaedit'] = 'Meta-məlumatlarda düzəliş et'; +$lang['metasaveerr'] = 'Meta-məlumatları yazan zamanı xəta'; +$lang['metasaveok'] = 'Meta-məlumatlar yadda saxlandı'; +$lang['img_backto'] = 'Qayıd'; +$lang['img_title'] = 'Başlıq'; +$lang['img_caption'] = 'İmza'; +$lang['img_date'] = 'Tarix'; +$lang['img_fname'] = 'Faylın adı'; +$lang['img_fsize'] = 'Boy'; +$lang['img_artist'] = 'Şkilin müəllifi'; +$lang['img_copyr'] = 'Müəllif hüquqları'; +$lang['img_format'] = 'Format'; +$lang['img_camera'] = 'Model'; +$lang['img_keywords'] = 'Açar sözlər'; +$lang['subscribe_success'] = '%s adlı istifadəçi %s səhifənin paylanma siyahısına əlavə olundu'; +$lang['subscribe_error'] = '%s adlı istifadəçini %s səhifənin paylanma siyahısına əlavə etmə zamanı səhv baş verdi'; +$lang['subscribe_noaddress'] = 'Sizin profilinizdə e-mail göstərilməyib.Ona görə siz paylnma siyahılarına əlavə edilə bilməzsiniz.'; +$lang['unsubscribe_success'] = '%s adlı istifadəçi %s səhifənin paylanma siyahısından silinmişdir'; +$lang['unsubscribe_error'] = '%s adlı istifadəçini %s səhifənin paylanma siyahısından silən zaman xəta baş verdi.'; +$lang['authmodfailed'] = 'İstifadəçinin autentifikasiyasının konfiqurasiyası səhfdir. Xaiş olunur ki wiki-nin administratoru ilə əlaqə saxlayasınız.'; +$lang['authtempfail'] = 'İstifadəçilərin autentifikasiyası müvəqqəti dayandırılıb. Əgər bu problem uzun müddət davam edir sə, administrator ilə əlaqə saxlayın.'; +$lang['i_chooselang'] = 'Dili seçin/Language'; +$lang['i_installer'] = 'DokuWiki quraşdırılır'; +$lang['i_wikiname'] = 'wiki-nin adı'; +$lang['i_enableacl'] = 'Haqlar kontrolu siyahısının istifadəsinə icazə ver (tövsiyə edilir)'; +$lang['i_superuser'] = 'Super-istifadəci'; +$lang['i_problems'] = 'Quraşdırma proqramı aşağıdakı problemlər ilə üzləşdi. Davam etmək üçün onları həll etmək lazımdır. '; +$lang['i_modified'] = 'Təhlükəsizlik baxımından bu proqram ancaq yeni, dəyişməmiş halda olan DokuWiki üzərində işləyir. + Siz ya yüklənmiş quraşdırma paketini yenidən açmalısınız, ya da <a href="http://dokuwiki.org/install">DokuWiki-nin tam quraşdırma instruksiyasına</a> müraciyət etməlisiniz'; +$lang['i_funcna'] = 'PHP-nin <code>%s</code> funksiyası mövcud deyil. Bəlkə, o hansı sa səbəbdən sizin host-unuz tərəfindən blok edilib?'; +$lang['i_phpver'] = 'Sizin PHP-nin versiyası (<code>%s</code>) tələb olunan versiyadan aşagıdır (<code>%s</code>). Quraşdırılmış PHP-nin versiyasını yeniləyin.'; +$lang['i_permfail'] = '<code>%s</code> DokuWiki-yə yazı üçün bağlıdır. Bu qovluğun giriş haqlarını yoxlamaq lazımdır!'; +$lang['i_confexists'] = '<code>%s</code> artıq mövcuddur'; +$lang['i_writeerr'] = '<code>%s</code> yaradıla bilmədi. Faylın/qovluqların giriş haqlarını yaxlamaq lazımdır. Və faylı əl ilə yaradın. '; +$lang['i_badhash'] = 'dokuwiki.php tanıla bilmir və ya dəyişdirilmişdir (hash=<code>%s</code>)'; +$lang['i_badval'] = '<code>%s</code> - səhv ya boş qiymətdir'; +$lang['i_success'] = 'Konfiqurasiya uğurla başa çatdı. İndi siz install.php faylını silə bilərsiniz. + <a href="doku.php">Yeni DokuWiki-nizə</a> xoş gəlmişsiniz!'; +$lang['i_failure'] = 'Konfiqurasiya fayllarına məlumat yazan zaman səhvlər tapıldı. Yəgin ki, <a href="doku.php">yeni DokuWiki-nizi</a> istifadə etmədən öncə, Siz o xətaları əl ilə düzəltməli olacaqsınız.'; +$lang['i_policy'] = 'İlkin giriş haqları siyasəti'; +$lang['i_pol0'] = 'Tam açıq wiki (oxumaq, yazmaq, fayl yükləmək hamıya olar)'; +$lang['i_pol1'] = 'Acıq wiki (oxumaq hamıya olar, yazmaq və fayl yükləmək ancaq üzv olan istifadəçilərə olar)'; +$lang['i_pol2'] = 'Bağlı wiki (uxumaq, yazmaq və yükləmək ancaq üzv olan istifadəçilərə olar)'; +$lang['i_retry'] = 'Cəhdi təkrarla'; +$lang['mu_intro'] = 'Burda siz bir neçə faylı birdən yükləyə bilərsiniz. Fayl əlavə etmək üçün "fayl seç" düyməsini sıxın. Sonda "yüklə" düyməsini sıxın.'; +$lang['mu_gridname'] = 'Faylın adı'; +$lang['mu_gridsize'] = 'Həcmi'; +$lang['mu_gridstat'] = 'Status'; +$lang['mu_namespace'] = 'Namespace'; +$lang['mu_browse'] = 'Fayl seç'; +$lang['mu_toobig'] = 'çox böyükdür'; +$lang['mu_ready'] = 'yükləməyə hazırdı'; +$lang['mu_done'] = 'başa çatdı'; +$lang['mu_fail'] = 'xəta baş verdi'; +$lang['mu_authfail'] = 'sessiyanın vaxtı bitdi'; +$lang['mu_progress'] = '@PCT@% yükləndi'; +$lang['mu_filetypes'] = 'İçazə olan fayl növləri'; +$lang['mu_info'] = 'fayllar yükləndi.'; +$lang['mu_lasterr'] = 'Son xəta:'; +$lang['recent_global'] = '<b>%s</b> namespace-də baş vermiş dəyışıklərə baxırsınız. Siz həmçinin <a href="%s">wiki-də bu yaxında baş vermiş bütün dəyişiklərə</a> baxa bilərsiniz.'; +$lang['years'] = '%d il əvvəl'; +$lang['months'] = '%d ay əvvəl'; +$lang['weeks'] = '%d həftə əvvəl'; +$lang['days'] = '%d gün əvvəl'; +$lang['hours'] = '%d saat əvvəl'; +$lang['minutes'] = '%d dəqiqə əvvəl'; +$lang['seconds'] = '%d saniyə əvvəl'; diff --git a/inc/lang/az/locked.txt b/inc/lang/az/locked.txt new file mode 100755 index 000000000..8ab934443 --- /dev/null +++ b/inc/lang/az/locked.txt @@ -0,0 +1,3 @@ +====== Səhifə blok edilmişdir ====== + +Bu səhifə başqa istifadəçi tərəfindən dəyişdirilmə üçün blok edilmişdir. O istifadəçi dəyişdirməni başa çatdırınca ya blokun vaxtı bitincə, Siz gözləməlisiniz. diff --git a/inc/lang/az/login.txt b/inc/lang/az/login.txt new file mode 100755 index 000000000..e0a559bc1 --- /dev/null +++ b/inc/lang/az/login.txt @@ -0,0 +1,4 @@ +====== Avtorizasiya ====== + +Hazırda Siz sistemə daxil olmamısınız. Aşağıdakı formanı istifadə edib sistemə daxil olun. //Qeyd:// cookies qurlu olmalıdır. + diff --git a/inc/lang/az/mailtext.txt b/inc/lang/az/mailtext.txt new file mode 100755 index 000000000..439458658 --- /dev/null +++ b/inc/lang/az/mailtext.txt @@ -0,0 +1,18 @@ +Sizin DokuWiki-də səhifə yaradılıb ya dəyişdirilib. Ətraflı məlumat: + +Tarix : @DATE@ +Brauzer : @BROWSER@ +IP-adres : @IPADDRESS@ +Host : @HOSTNAME@ +Köhnə versiya : @OLDPAGE@ +Yeni versiya : @NEWPAGE@ +Dəyişiklərin xülasəsi : @SUMMARY@ +İstifadəçi : @USER@ + +@DIFF@ + + +-- +Bu məktub DokuWiki tərəfindən yaradıldı. +DokuWiki aşağıdakı adresdə yerləşir: +@DOKUWIKIURL@ diff --git a/inc/lang/az/newpage.txt b/inc/lang/az/newpage.txt new file mode 100755 index 000000000..c749f20af --- /dev/null +++ b/inc/lang/az/newpage.txt @@ -0,0 +1,3 @@ +====== Bu səhifə hələ mövcud deyil ====== + +Siz yaradılmamış səhifənin link-ini acmısınız. Əgər sizin giriş haqlarınız çatırsa, siz "Səhifəni yarat" düyməsini sixib, o səhifəni yarada bilərsiniz. diff --git a/inc/lang/az/norev.txt b/inc/lang/az/norev.txt new file mode 100755 index 000000000..453dad56b --- /dev/null +++ b/inc/lang/az/norev.txt @@ -0,0 +1,4 @@ +====== Belə versiya mövcud deyil ====== + +Bu səhifənin göstərilmiş versiyası mövcud deyil. Səhifənin bütün versiyalaraının siyahısını görmək üçün, ''Səhifənin tarixçəsi'' düyməsini sıxın. + diff --git a/inc/lang/az/password.txt b/inc/lang/az/password.txt new file mode 100755 index 000000000..31bf387da --- /dev/null +++ b/inc/lang/az/password.txt @@ -0,0 +1,11 @@ +Salam @FULLNAME@! + +Sizin @TITLE@ (@DOKUWIKIURL@) üçün olan məlumatlarınız + +İstifadəçi adı : @LOGIN@ +Şifrə : @PASSWORD@ + +-- +Bu məktub DokuWiki tərəfindən yaradıldı. +DokuWiki aşağıdakı adresdə yerləşir: +@DOKUWIKIURL@ diff --git a/inc/lang/az/preview.txt b/inc/lang/az/preview.txt new file mode 100755 index 000000000..dbeaa44f5 --- /dev/null +++ b/inc/lang/az/preview.txt @@ -0,0 +1,4 @@ +====== Baxış ====== + +Burda daxil elədiyiniz mətnin necə görünəcəyi göstərilir. Qeyd: mətn hələ **yadda saxlanılmayıb!** + diff --git a/inc/lang/az/pwconfirm.txt b/inc/lang/az/pwconfirm.txt new file mode 100755 index 000000000..177e5a1fa --- /dev/null +++ b/inc/lang/az/pwconfirm.txt @@ -0,0 +1,14 @@ +Salam @FULLNAME@! + +Kimsə @DOKUWIKIURL@ adresində yerləşən @TITLE@ adlı wiki-yə giriş üçün yeni şifrə tələb eləyib. + +Əgər o şəxs siz deyildinizsə, bu məktuba fikir verməyin. + +Tələbi təsdiq etmək üçün, aşağıdakı link-ə keçin. + +@CONFIRM@ + +-- +Bu məktub DokuWiki tərəfindən yaradıldı. +DokuWiki aşağıdakı adresdə yerləşir: +@DOKUWIKIURL@ diff --git a/inc/lang/az/read.txt b/inc/lang/az/read.txt new file mode 100755 index 000000000..39b31f108 --- /dev/null +++ b/inc/lang/az/read.txt @@ -0,0 +1,2 @@ +Bu səhifəni ancaq oxumaq olar. Siz səhifənin ilkin mətninə baxa bilərsiniz, amma dəyişə bilməzsiniz. Əgər bunun düzgün olmadığını fikirləşirsinizsə onda administrator ilə əlaqə saxlayın. + diff --git a/inc/lang/az/recent.txt b/inc/lang/az/recent.txt new file mode 100755 index 000000000..8766d9953 --- /dev/null +++ b/inc/lang/az/recent.txt @@ -0,0 +1,5 @@ +====== Son dəyişiklər ====== + +Bu səhifələr yaxında dəyismişdirlər. + + diff --git a/inc/lang/az/register.txt b/inc/lang/az/register.txt new file mode 100755 index 000000000..eb6386f72 --- /dev/null +++ b/inc/lang/az/register.txt @@ -0,0 +1,3 @@ +====== Регистрация нового пользователя ====== + +Qeydiyyat üçün bütün aşağıdaı xanalari doldurun. **e-mail adresinizin duz olduguna** fikir verin. Əgər şıfrəni əl ilə daxil etməyiniz xaiş olunmursa, onda şifrə e-mail adresinizə göndəriləcək. İstifadəçi adı [[doku>pagename|səhifənin identifikatorunun]] məhdudiyyətlərinə uyğun olmalıdır. diff --git a/inc/lang/az/registermail.txt b/inc/lang/az/registermail.txt new file mode 100755 index 000000000..51919756f --- /dev/null +++ b/inc/lang/az/registermail.txt @@ -0,0 +1,15 @@ +Yeni istifadəçi qeydiyyatdan keçdi. Ətraflı məlumat: + +İstifadəçi adı : @NEWUSER@ +Tam adı : @NEWNAME@ +E-mail : @NEWEMAIL@ + +Tarix : @DATE@ +Brauzer : @BROWSER@ +IP adres : @IPADDRESS@ +Host : @HOSTNAME@ + +-- +Bu məktub DokuWiki tərəfindən yaradıldı. +DokuWiki aşağıdakı adresdə yerləşir: +@DOKUWIKIURL@ diff --git a/inc/lang/az/resendpwd.txt b/inc/lang/az/resendpwd.txt new file mode 100755 index 000000000..cc286174a --- /dev/null +++ b/inc/lang/az/resendpwd.txt @@ -0,0 +1,3 @@ +====== Yeni şifrənin göndərilməsi ====== + +Yeni şifrə əldə etmək üçün aşağıda tələb olunan məlumatları daxil edin. Yeni şifrə sizin istifadəçi adınıza aid olan e-mail adresə göndəriləcək. Aşagıda daxil olunan ad - sizin bu wiki-də olan istifadəçi adınız olmalıdır. diff --git a/inc/lang/az/revisions.txt b/inc/lang/az/revisions.txt new file mode 100755 index 000000000..7164a9959 --- /dev/null +++ b/inc/lang/az/revisions.txt @@ -0,0 +1,3 @@ +====== Səhifənin tarixçəsi ====== + +Qarşınızda - hazırki sənədin dəyişiklər tarixçəsidir. Əvvəlki versiyaların birinə qayıtmaq üçün, lazım olan versiyanı seçin, ''Səhifəni düzəliş et'' düyməsini sıxın və yaddaşa yazın. diff --git a/inc/lang/az/searchpage.txt b/inc/lang/az/searchpage.txt new file mode 100755 index 000000000..4f8efe007 --- /dev/null +++ b/inc/lang/az/searchpage.txt @@ -0,0 +1,5 @@ +====== Axtarış ====== + +Qarşınızda - axtarışın nəticələridir. Əgər Siz axtardığınızı tapa bilmədinizsə, onda Siz adı axtarışınız ilə uyğun düşən yeni səhifə yarada bilərsiniz. Bunu eləmək üçün, sadəcə ''Səhifəni yarat'' düyməsini sıxın. + +===== Nəticələr ===== diff --git a/inc/lang/az/showrev.txt b/inc/lang/az/showrev.txt new file mode 100755 index 000000000..dd398704b --- /dev/null +++ b/inc/lang/az/showrev.txt @@ -0,0 +1,2 @@ +**Bu - sənədin köhnə versiyasıdır!** +---- diff --git a/inc/lang/az/stopwords.txt b/inc/lang/az/stopwords.txt new file mode 100755 index 000000000..04eb312eb --- /dev/null +++ b/inc/lang/az/stopwords.txt @@ -0,0 +1,64 @@ +# This is a list of words the indexer ignores, one word per line +# When you edit this file be sure to use UNIX line endings (single newline) +# No need to include words shorter than 3 chars - these are ignored anyway +amma +arada +arasında +başqa +başqalar +başqaların +başqanın +belə +birdən +bugün +bunu +burada +bəlkə +cəmi +dedi +dedilər +dedim +dediniz +demək +deyəsən +görə +hamını +hansı +hansılar +hansınız +həmçinin +həmişə +hərdən +hətta +həyat +indi +lazım +lazımdır +məncə +məni +niyə +nəyi +olacaq +olar +oldu +oldum +olmaq +olmaz +olub +onda +onlar +onları +onun +ozunun +qabaq +quya +sabağ +sizcə +sizi +sonra +sözsüz +şübhəsiz +səni +yaxşı +yenə +əgər diff --git a/inc/lang/az/subscribermail.txt b/inc/lang/az/subscribermail.txt new file mode 100755 index 000000000..a18525da6 --- /dev/null +++ b/inc/lang/az/subscribermail.txt @@ -0,0 +1,19 @@ +Salam! + +@TITLE@ adı wiki-də @PAGE@ adlı səhifə dəyişdirilmişdi. +Dəyişiklər aşağıda göstərilib: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Bu səhifənin dəyişiklərindən imtina etmək üçün, +@DOKUWIKIURL@ adresində yerləşən wiki-yə daxil +olun, @NEWPAGE@ səhifəsinə keçin +və 'Abunəlikdən çıx' düyməsini sıxın. + + +-- +Bu məktub DokuWiki tərəfindən yaradıldı. +DokuWiki aşağıdakı adresdə yerləşir: +@DOKUWIKIURL@ diff --git a/inc/lang/az/updateprofile.txt b/inc/lang/az/updateprofile.txt new file mode 100755 index 000000000..569e425d4 --- /dev/null +++ b/inc/lang/az/updateprofile.txt @@ -0,0 +1,5 @@ +====== Profili yenilə ====== + +İstədiyiniz xanaları dəyiştirin. İstifadəşi adı dəyiştirilə bilməz. + + diff --git a/inc/lang/az/uploadmail.txt b/inc/lang/az/uploadmail.txt new file mode 100755 index 000000000..d538f8258 --- /dev/null +++ b/inc/lang/az/uploadmail.txt @@ -0,0 +1,15 @@ +Sizin DokuWiki-yə fayl yuklənildi. Ətraflı məlumat: + +Fayl : @MEDIA@ +Tarix : @DATE@ +Brauzer : @BROWSER@ +IP Adres : @IPADDRESS@ +Host : @HOSTNAME@ +Həcm : @SIZE@ +MIME Növ : @MIME@ +İstifadəçi : @USER@ + +-- +Bu məktub DokuWiki tərəfindən yaradıldı. +DokuWiki aşağıdakı adresdə yerləşir: +@DOKUWIKIURL@ diff --git a/inc/lang/az/wordblock.txt b/inc/lang/az/wordblock.txt new file mode 100755 index 000000000..ec8b102af --- /dev/null +++ b/inc/lang/az/wordblock.txt @@ -0,0 +1,3 @@ +====== SPAM-ın qarşısı alındı ====== + +Sizin dəyişiklər **yaddaşa saxlanmadı**, çünki onların içində bir və ya daha çox içazəsiz sözlər var idi. Əgər siz wiki-yə spam əlavə etmək istəyirdinizsə, onda utanmırsız?! Əgər siz bunu səhv hesab edirsinizsə, onda administrator ilə əlaqə saxlayın. diff --git a/inc/lang/bg/lang.php b/inc/lang/bg/lang.php index 2c306095d..053a7f1ba 100644 --- a/inc/lang/bg/lang.php +++ b/inc/lang/bg/lang.php @@ -94,7 +94,7 @@ $lang['txt_overwrt'] = 'Запис върху съществуващ $lang['lockedby'] = 'В момента е заключено от'; $lang['lockexpire'] = 'Затварянето изтича в'; $lang['willexpire'] = 'Затварянето на страницата за редактиране изтича след минута.\nЗа да избегнете противоречия, използвайте бутона, за да рестартирате броячът за затваряне.'; -$lang['notsavedyet'] = 'Незапазените промени ще бъдат загубени.\nИскате ли да продължите?'; +$lang['js']['notsavedyet'] = "Незапазените промени ще бъдат загубени.\nИскате ли да продължите?"; $lang['rssfailed'] = 'Възникна грешка при вземането на този feed: '; $lang['nothingfound'] = 'Нищо не бе намерено.'; $lang['mediaselect'] = 'Медийни файлове'; diff --git a/inc/lang/bg/wordblock.txt b/inc/lang/bg/wordblock.txt deleted file mode 100644 index 1afbae21d..000000000 --- a/inc/lang/bg/wordblock.txt +++ /dev/null @@ -1,3 +0,0 @@ -====== Блокиран СПАМ ====== - -Промените ви **не** бяха запазени, защото съдържат една или повече забранени думи. Ако сте се опитали да пуснете спам в уикито и таз хубава! Ако смятате, че това е грешка, свържете се с администратора на това Wiki. diff --git a/inc/lang/ca-valencia/lang.php b/inc/lang/ca-valencia/lang.php index d85cc1c06..d49c900fa 100644 --- a/inc/lang/ca-valencia/lang.php +++ b/inc/lang/ca-valencia/lang.php @@ -95,7 +95,7 @@ $lang['txt_overwrt'] = 'Sobreescriure archius existents'; $lang['lockedby'] = 'Actualment bloquejat per'; $lang['lockexpire'] = 'El bloqueig venç a les'; $lang['willexpire'] = 'El seu bloqueig per a editar esta pàgina vencerà en un minut.\nPer a evitar conflictes utilise el botó de vista prèvia i reiniciarà el contador.'; -$lang['notsavedyet'] = 'Els canvis no guardats es perdran.\n¿Segur que vol continuar?'; +$lang['js']['notsavedyet'] = "Els canvis no guardats es perdran.\n¿Segur que vol continuar?"; $lang['rssfailed'] = 'Ha ocorregut un erro al solicitar este canal: '; $lang['nothingfound'] = 'No s\'ha trobat res.'; $lang['mediaselect'] = 'Archius de mijos'; diff --git a/inc/lang/ca-valencia/wordblock.txt b/inc/lang/ca-valencia/wordblock.txt deleted file mode 100644 index 718bfe883..000000000 --- a/inc/lang/ca-valencia/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== Bloqueig de SPAM ====== - -Els seus canvis *no* s'han guardat perque contenen una o més paraules prohibides. Si ha intentat posar spam en el wiki.. ¡malament! Si pensa que açò és un erro, contacte en l'administrador d'este wiki. - diff --git a/inc/lang/ca/lang.php b/inc/lang/ca/lang.php index 778123445..19fb7c556 100644 --- a/inc/lang/ca/lang.php +++ b/inc/lang/ca/lang.php @@ -96,7 +96,7 @@ $lang['txt_overwrt'] = 'Sobreescriu el fitxer actual'; $lang['lockedby'] = 'Actualment blocat per:'; $lang['lockexpire'] = 'Venciment del blocatge:'; $lang['willexpire'] = 'El blocatge per a editar aquesta pàgina venç d\'aquí a un minut.\nUtilitzeu la visualització prèvia per reiniciar el rellotge i evitar conflictes.'; -$lang['notsavedyet'] = 'Heu fet canvis que es perdran si no els deseu.\nVoleu continuar?'; +$lang['js']['notsavedyet'] = "Heu fet canvis que es perdran si no els deseu.\nVoleu continuar?"; $lang['rssfailed'] = 'S\'ha produït un error en recollir aquesta alimentació: '; $lang['nothingfound'] = 'No s\'ha trobat res.'; $lang['mediaselect'] = 'Selecció de fitxers'; diff --git a/inc/lang/ca/wordblock.txt b/inc/lang/ca/wordblock.txt deleted file mode 100644 index 1b5f5fb36..000000000 --- a/inc/lang/ca/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== Brossa blocada ====== - -Els canvis **no** s'han desat perquè contenen una o més paraules blocades. Volíeu inundar el wiki amb brossa? Molt mal fet! Si penseu que això és un error, contacteu amb l'administrador d'aquest Wiki. - diff --git a/inc/lang/cs/lang.php b/inc/lang/cs/lang.php index ffc2a05d7..33c6db01a 100644 --- a/inc/lang/cs/lang.php +++ b/inc/lang/cs/lang.php @@ -7,6 +7,8 @@ * @author Tomas Valenta <t.valenta@sh.cvut.cz> * @author Zbynek Krivka <zbynek.krivka@seznam.cz> * @author tomas@valenta.cz + * @author Marek Sacha <sachamar@fel.cvut.cz> + * @author Lefty <lefty@multihost.cz> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -39,10 +41,7 @@ $lang['btn_delete'] = 'Vymazat'; $lang['btn_back'] = 'Zpět'; $lang['btn_backlink'] = 'Zpětné odkazy'; $lang['btn_backtomedia'] = 'Zpět do Výběru dokumentu'; -$lang['btn_subscribe'] = 'Odebírat mailem změny stránky'; -$lang['btn_unsubscribe'] = 'Neodebírat mailem změny stránky'; -$lang['btn_subscribens'] = 'Odebírat mailem změny ve jmenném prostoru'; -$lang['btn_unsubscribens'] = 'Neodebírat mailem změny ve jmenném prostoru'; +$lang['btn_subscribe'] = 'Odebírat emailem změny stránky'; $lang['btn_profile'] = 'Upravit profil'; $lang['btn_reset'] = 'Reset'; $lang['btn_resendpwd'] = 'Zaslat nové heslo'; @@ -96,7 +95,38 @@ $lang['txt_overwrt'] = 'Přepsat existující soubor'; $lang['lockedby'] = 'Právě zamknuto:'; $lang['lockexpire'] = 'Zámek vyprší:'; $lang['willexpire'] = 'Váš zámek pro editaci za chvíli vyprší.\nAbyste předešli konfliktům, stiskněte tlačítko Náhled a zámek se prodlouží.'; -$lang['notsavedyet'] = 'Jsou tu neuložené změny, které budou ztraceny.\nChcete opravdu pokračovat?'; +$lang['js']['notsavedyet'] = 'Jsou tu neuložené změny, které budou ztraceny. +Chcete opravdu pokračovat?'; +$lang['js']['searchmedia'] = 'Hledat soubory'; +$lang['js']['keepopen'] = 'Po vybrání souboru nechat okno otevřené'; +$lang['js']['hidedetails'] = 'Skrýt detaily'; +$lang['js']['mediatitle'] = 'Nastavení odkazu'; +$lang['js']['mediadisplay'] = 'Typ odkazu'; +$lang['js']['mediaalign'] = 'Zarovnání'; +$lang['js']['mediasize'] = 'Velikost obrázku'; +$lang['js']['mediatarget'] = 'Cíl odkazu'; +$lang['js']['mediaclose'] = 'Zavřít'; +$lang['js']['mediainsert'] = 'Vložit'; +$lang['js']['mediadisplayimg'] = 'Ukázat obrázek'; +$lang['js']['mediadisplaylnk'] = 'Ukázat pouze odkaz'; +$lang['js']['mediasmall'] = 'Malá verze'; +$lang['js']['mediamedium'] = 'Střední verze'; +$lang['js']['medialarge'] = 'Velká verze'; +$lang['js']['mediaoriginal'] = 'Původní verze'; +$lang['js']['medialnk'] = 'Odkaz na stránku s detailem'; +$lang['js']['mediadirect'] = 'Přímý odkaz na originál'; +$lang['js']['medianolnk'] = 'Žádný odkaz'; +$lang['js']['medianolink'] = 'Neodkazovat na obrázek'; +$lang['js']['medialeft'] = 'Zarovnat obrázek doleva.'; +$lang['js']['mediaright'] = 'Zarovnat obrázek doprava.'; +$lang['js']['mediacenter'] = 'Zarovnat obrázek na střed.'; +$lang['js']['medianoalign'] = 'Nepoužívat zarovnání.'; +$lang['js']['nosmblinks'] = 'Odkazování na sdílené prostředky Windows funguje jen v Internet Exploreru. +Přesto tento odkaz můžete zkopírovat a vložit jinde.'; +$lang['js']['linkwiz'] = 'Průvodce odkazy'; +$lang['js']['linkto'] = 'Odkaz na:'; +$lang['js']['del_confirm'] = 'Vymazat tuto položku?'; +$lang['js']['mu_btn'] = 'Načíst více souborů najednou'; $lang['rssfailed'] = 'Nastala chyba při vytváření tohoto RSS: '; $lang['nothingfound'] = 'Nic nenalezeno.'; $lang['mediaselect'] = 'Výběr dokumentu'; @@ -114,15 +144,7 @@ $lang['deletefail'] = 'Soubor "%s" nelze vymazat - zkontrolujte oprá $lang['mediainuse'] = 'Soubor "%s" nebyl vymazán - stále se používá.'; $lang['namespaces'] = 'Jmenné prostory'; $lang['mediafiles'] = 'Dostupné soubory'; -$lang['js']['searchmedia'] = 'Hledat soubory'; -$lang['js']['keepopen'] = 'Po vybrání souboru nechat okno otevřené'; -$lang['js']['hidedetails'] = 'Skrýt detaily'; -$lang['js']['nosmblinks'] = 'Odkazování na sdílené prostředky Windows funguje jen v Internet Exploreru. -Přesto tento odkaz můžete zkopírovat a vložit jinde.'; -$lang['js']['linkwiz'] = 'Průvodce odkazy'; -$lang['js']['linkto'] = 'Odkaz na:'; -$lang['js']['del_confirm'] = 'Vymazat tuto položku?'; -$lang['js']['mu_btn'] = 'Načíst více souborů najednou'; +$lang['accessdenied'] = 'Nejste autorizován k přístupu na tuto stránku.'; $lang['mediausage'] = 'K odkázání se na tento soubor použijte následující syntax:'; $lang['mediaview'] = 'Zobrazit původní soubor'; $lang['mediaroot'] = 'root'; @@ -138,6 +160,7 @@ $lang['current'] = 'aktuální'; $lang['yours'] = 'Vaše verze'; $lang['diff'] = 'zobrazit rozdíly vůči aktuální verzi'; $lang['diff2'] = 'zobrazit rozdíly mezi vybranými verzemi'; +$lang['difflink'] = 'Odkaz na výstup diff'; $lang['line'] = 'Řádek'; $lang['breadcrumb'] = 'Historie'; $lang['youarehere'] = 'Umístění'; @@ -152,6 +175,7 @@ $lang['noflash'] = 'Pro přehrání obsahu potřebujete <a href="h $lang['download'] = 'Stáhnout snippet'; $lang['mail_newpage'] = 'nová stránka:'; $lang['mail_changed'] = 'změna stránky:'; +$lang['mail_subscribe_list'] = 'stránky změněné ve jmenném prostoru:'; $lang['mail_new_user'] = 'nový uživatel:'; $lang['mail_upload'] = 'načtený dokument:'; $lang['qb_bold'] = 'Tučně'; @@ -194,11 +218,22 @@ $lang['img_copyr'] = 'Copyright'; $lang['img_format'] = 'Formát'; $lang['img_camera'] = 'Typ fotoaparátu'; $lang['img_keywords'] = 'Klíčová slova'; -$lang['subscribe_success'] = 'Uživatel %s je nyní přihlášen k odběru změn ve stránce %s'; -$lang['subscribe_error'] = 'Chyba při zařazování uživatele %s do seznamu pro odběr změn ve stránce %s'; -$lang['subscribe_noaddress'] = 'K vašemu uživatelskému profilu chybí mailová adresa, takže vás nelze zařadit do seznamu pro odběr změn'; -$lang['unsubscribe_success'] = 'Uživatel %s byl odebrán ze seznamu pro odběr změn ve stránce %s'; -$lang['unsubscribe_error'] = 'Chyba při odstraňování uživatele %s ze seznamu pro odběru změn ve stránce %s'; +$lang['subscr_subscribe_success'] = '%s byl přihlášen do seznamu odběratelů %s'; +$lang['subscr_subscribe_error'] = 'Došlo k chybě při přihlašování %s do seznamu odběratelů %s'; +$lang['subscr_subscribe_noaddress'] = 'K Vašemu loginu neexistuje žádná adresa, nemohl jste být přihlášen do seznamu odběratelů.'; +$lang['subscr_unsubscribe_success'] = '%s byl odhlášen ze seznamu odběratelů %s'; +$lang['subscr_unsubscribe_error'] = 'Došlo k chybě při odhlašování %s ze seznamu odběratelů %s'; +$lang['subscr_already_subscribed'] = '%s již je přihlášen do seznamu odběratelů %s'; +$lang['subscr_not_subscribed'] = '%s není přihlášen do seznamu odběratelů %s'; +$lang['subscr_m_not_subscribed'] = 'V současné době neodebíráte změny na aktuální stránce nebo ve jmenném prostoru.'; +$lang['subscr_m_new_header'] = 'Přihlásit k odebírání změn emailem'; +$lang['subscr_m_current_header'] = 'Aktuální odběratelé změn'; +$lang['subscr_m_unsubscribe'] = 'Odhlásit z odběru změn emailem'; +$lang['subscr_m_subscribe'] = 'Přihlásit se k odběru změn emailem'; +$lang['subscr_m_receive'] = 'Přejete si dostávat'; +$lang['subscr_style_every'] = 'email pro každou změnu'; +$lang['subscr_style_digest'] = 'souhrnný email změn pro každou stránku'; +$lang['subscr_style_list'] = 'seznam změněných stránek od posledního emailu'; $lang['authmodfailed'] = 'Autentizace uživatelů je špatně nastavena. Informujte prosím správce této wiki.'; $lang['authtempfail'] = 'Autentizace uživatelů je dočasně nedostupná. Pokud tento problém přetrvává, informujte prosím správce této wiki.'; $lang['i_chooselang'] = 'Vyberte si jazyk'; @@ -222,6 +257,7 @@ $lang['i_pol0'] = 'Otevřená wiki (čtení, zápis a upload pro $lang['i_pol1'] = 'Veřejná wiki (čtení pro všechny, zápis a upload pro registrované uživatele)'; $lang['i_pol2'] = 'Uzavřená wiki (čtení, zápis a upload pouze pro registrované uživatele)'; $lang['i_retry'] = 'Zkusit znovu'; +$lang['i_license'] = 'Vyberte prosím licenci obsahu:'; $lang['mu_intro'] = 'Zde můžete načíst více souborů najednou. Pro přidání souborů do fronty stiskněte tlačítko "Procházet". Až budete hotovi, stiskněte "Načíst".'; $lang['mu_gridname'] = 'Název souboru'; $lang['mu_gridsize'] = 'Velikost'; @@ -245,3 +281,4 @@ $lang['days'] = 'před % dny'; $lang['hours'] = 'před % hodinami'; $lang['minutes'] = 'před % minutami'; $lang['seconds'] = 'před % sekundami'; +$lang['wordblock'] = 'Vaše změny nebyly uloženy, protože obsahují blokovaný text(spam).'; diff --git a/inc/lang/cs/mailtext.txt b/inc/lang/cs/mailtext.txt index 9fc68cdce..f235a299b 100644 --- a/inc/lang/cs/mailtext.txt +++ b/inc/lang/cs/mailtext.txt @@ -13,5 +13,5 @@ Uživatel : @USER@ -- -Tato zpráva byla vygenerována systémem DokuWiki +Tento email byl automaticky vygenerován systémem DokuWiki @DOKUWIKIURL@ diff --git a/inc/lang/cs/password.txt b/inc/lang/cs/password.txt index ed1efc992..18f21f1b1 100644 --- a/inc/lang/cs/password.txt +++ b/inc/lang/cs/password.txt @@ -7,5 +7,5 @@ Uživatelské jméno : @LOGIN@ Heslo : @PASSWORD@ -- -Tato zpráva byla vygenerována systémem DokuWiki +Tento email byl automaticky vygenerován systémem DokuWiki @DOKUWIKIURL@ diff --git a/inc/lang/cs/pwconfirm.txt b/inc/lang/cs/pwconfirm.txt index 1199150e2..aa37b3b84 100644 --- a/inc/lang/cs/pwconfirm.txt +++ b/inc/lang/cs/pwconfirm.txt @@ -2,12 +2,12 @@ Dobrý den, Někdo požádal o nové heslo k vašemu uživatelskému účtu na wiki @TITLE@ (@DOKUWIKIURL@) -Pokud jste o nové heslo nežádali, ignorujte prosím tento mail. +Pokud jste o nové heslo nežádali, ignorujte prosím tento email. Pro potvrzení, že jste tento požadavek poslali opravdu vy, prosím otevřete následující odkaz. @CONFIRM@ -- -Tento mail byl automaticky vygenerován systémem DokuWiki +Tento email byl automaticky vygenerován systémem DokuWiki @DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/cs/registermail.txt b/inc/lang/cs/registermail.txt index e51ee6bb2..7f5e4feb1 100644 --- a/inc/lang/cs/registermail.txt +++ b/inc/lang/cs/registermail.txt @@ -10,5 +10,5 @@ IP adresa : @IPADDRESS@ Hostitel : @HOSTNAME -- -Tato zpráva byla vygenerována systémem DokuWiki +Tento email byl automaticky vygenerován systémem DokuWiki @DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/cs/subscr_digest.txt b/inc/lang/cs/subscr_digest.txt new file mode 100644 index 000000000..57b7240c5 --- /dev/null +++ b/inc/lang/cs/subscr_digest.txt @@ -0,0 +1,22 @@ +Dobrý den! + +Byla změněna stránka @PAGE@ ve wiki @TITLE@. +Zde jsou změny: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Stará revize: @OLDPAGE@ +Nová revize: @NEWPAGE@ + +Pro odhlášení z odebírání změn na této webové stránce +se prosím příhlašte do wiki na adrese +@DOKUWIKIURL@,pak navštivte +@SUBSCRIBE@ +a odhlaště se z odebírání změn na stránce či +ve jmenném prostoru. + +-- +Tento email byl automaticky vygenerován systémem DokuWiki +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/cs/subscr_form.txt b/inc/lang/cs/subscr_form.txt new file mode 100644 index 000000000..b786ac137 --- /dev/null +++ b/inc/lang/cs/subscr_form.txt @@ -0,0 +1,3 @@ +====== Správa odběratelů změn ====== + +Tato stránka Vám umožnuje spravovat uživatele přihlášené k odběru změn aktuální stránky nebo jmenného prostoru.
\ No newline at end of file diff --git a/inc/lang/cs/subscr_list.txt b/inc/lang/cs/subscr_list.txt new file mode 100644 index 000000000..82683c57f --- /dev/null +++ b/inc/lang/cs/subscr_list.txt @@ -0,0 +1,19 @@ +Dobrý den! + +Byly změněny stránky ve jmenném prostoru @PAGE@ wiki @TITLE@. +Zde jsou: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Pro odhlášení z odebírání změn +se prosím příhlašte do wiki na adrese +@DOKUWIKIURL@,pak navštivte +@SUBSCRIBE@ +a odhlaště se z odebírání změn na stránce či +ve jmenném prostoru. + +-- +Tento email byl automaticky vygenerován systémem DokuWiki +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/cs/subscr_single.txt b/inc/lang/cs/subscr_single.txt new file mode 100644 index 000000000..c0089c1b7 --- /dev/null +++ b/inc/lang/cs/subscr_single.txt @@ -0,0 +1,25 @@ +Dobrý den! + +Byla změněna stránka @PAGE@ ve wiki @TITLE@. +Zde jsou změny: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Datum: @DATE@ +Uživatel: @USER@ +Souhrn editace: @SUMMARY@ +Stará revize: @OLDPAGE@ +Nová revize: @NEWPAGE@ + +Pro odhlášení z odebírání změn na této webové stránce +se prosím příhlašte do wiki na adrese +@DOKUWIKIURL@,pak navštivte +@SUBSCRIBE@ +a odhlaště se z odebírání změn na stránce či +ve jmenném prostoru. + +-- +Tento email byl automaticky vygenerován systémem DokuWiki +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/cs/uploadmail.txt b/inc/lang/cs/uploadmail.txt index 98f860138..b19b0bf7e 100644 --- a/inc/lang/cs/uploadmail.txt +++ b/inc/lang/cs/uploadmail.txt @@ -10,5 +10,5 @@ MIME typ : @MIME@ Uživatel : @USER@ -- -Tato zpráva byla vygenerována systémem DokuWiki -@DOKUWIKIUR
\ No newline at end of file +Tento email byl automaticky vygenerován systémem DokuWiki +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/cs/wordblock.txt b/inc/lang/cs/wordblock.txt deleted file mode 100644 index 75fe58e0c..000000000 --- a/inc/lang/cs/wordblock.txt +++ /dev/null @@ -1,3 +0,0 @@ -====== SPAM nebyl povolen ====== - -Vaše změny **nebyly uloženy**, protože obsahují jedno nebo více nepovolených slov. Wiki si nepotrpí na spam! Pokud se domníváte, že jde o omyl, kontaktujte správce. diff --git a/inc/lang/da/lang.php b/inc/lang/da/lang.php index 56239718b..574917082 100644 --- a/inc/lang/da/lang.php +++ b/inc/lang/da/lang.php @@ -11,18 +11,20 @@ * @author Harith <haj@berlingske.dk> * @author Daniel Ejsing-Duun <dokuwiki@zilvador.dk> * @author Erik Bjørn Pedersen <erik.pedersen@shaw.ca> + * @author rasmus@kinnerup.com + * @author Michael Pedersen subben@gmail.com */ -$lang['encoding'] = 'utf-8'; +$lang['encoding'] = 'ISO 8859-1 '; $lang['direction'] = 'ltr'; $lang['doublequoteopening'] = '„'; $lang['doublequoteclosing'] = '“'; $lang['singlequoteopening'] = '‚'; $lang['singlequoteclosing'] = '‘'; $lang['apostrophe'] = '’'; -$lang['btn_edit'] = 'Rediger dette dokument'; +$lang['btn_edit'] = 'Rediger denne side'; $lang['btn_source'] = 'Vis kildekode'; -$lang['btn_show'] = 'Vis dokument'; -$lang['btn_create'] = 'Opret dette dokument'; +$lang['btn_show'] = 'Vis side'; +$lang['btn_create'] = 'Opret denne side'; $lang['btn_search'] = 'Søg'; $lang['btn_save'] = 'Gem'; $lang['btn_preview'] = 'Forhåndsvisning'; @@ -31,39 +33,36 @@ $lang['btn_newer'] = '<< forrige side'; $lang['btn_older'] = 'næste side >>'; $lang['btn_revs'] = 'Gamle udgaver'; $lang['btn_recent'] = 'Nye ændringer'; -$lang['btn_upload'] = 'Overføre'; +$lang['btn_upload'] = 'Overfør'; $lang['btn_cancel'] = 'Fortryd'; $lang['btn_index'] = 'Indeks'; -$lang['btn_secedit'] = 'Rediger'; +$lang['btn_secedit'] = 'Redigér'; $lang['btn_login'] = 'Log ind'; $lang['btn_logout'] = 'Log ud'; $lang['btn_admin'] = 'Admin'; -$lang['btn_update'] = 'Opdater'; +$lang['btn_update'] = 'Opdatér'; $lang['btn_delete'] = 'Slet'; $lang['btn_back'] = 'Tilbage'; $lang['btn_backlink'] = 'Henvisninger bagud'; $lang['btn_backtomedia'] = 'Tilbage til valg af mediefil'; -$lang['btn_subscribe'] = 'Abonner på ændringer'; -$lang['btn_unsubscribe'] = 'Fjern abonnement på ændringer'; -$lang['btn_subscribens'] = 'Abonner på namespace ændringer'; -$lang['btn_unsubscribens'] = 'Fjern abonnement på namespace ændringer'; -$lang['btn_profile'] = 'Opdater profil'; +$lang['btn_subscribe'] = 'Abonnér på ændringer'; +$lang['btn_profile'] = 'Opdatér profil'; $lang['btn_reset'] = 'Nulstil'; -$lang['btn_resendpwd'] = 'Send nyt adgangskode'; -$lang['btn_draft'] = 'Rediger kladde'; +$lang['btn_resendpwd'] = 'Send ny adgangskode'; +$lang['btn_draft'] = 'Redigér kladde'; $lang['btn_recover'] = 'Gendan kladde'; $lang['btn_draftdel'] = 'Slet kladde'; -$lang['btn_revert'] = 'Reetablere'; -$lang['loggedinas'] = 'Logget på som'; +$lang['btn_revert'] = 'Reetablér'; +$lang['loggedinas'] = 'Logget ind som'; $lang['user'] = 'Brugernavn'; $lang['pass'] = 'Adgangskode'; -$lang['newpass'] = 'Nyt adgangskode'; -$lang['oldpass'] = 'Bekræft gammelt adgangskode'; -$lang['passchk'] = 'Gentag nyt adgangskode'; -$lang['remember'] = 'Log automatisk på'; -$lang['fullname'] = 'Navn'; +$lang['newpass'] = 'Ny adgangskode'; +$lang['oldpass'] = 'Bekræft gammel adgangskode'; +$lang['passchk'] = 'Gentag ny adgangskode'; +$lang['remember'] = 'Automatisk log ind'; +$lang['fullname'] = 'Fulde navn'; $lang['email'] = 'E-mail'; -$lang['register'] = 'Tilmeld'; +$lang['register'] = 'Registrér'; $lang['profile'] = 'Brugerprofil'; $lang['badlogin'] = 'Brugernavn eller adgangskode var forkert.'; $lang['minoredit'] = 'Mindre ændringer'; @@ -100,7 +99,36 @@ $lang['txt_overwrt'] = 'Overskriv eksisterende fil'; $lang['lockedby'] = 'Midlertidig låst af'; $lang['lockexpire'] = 'Lås udløber kl.'; $lang['willexpire'] = 'Din lås på dette dokument udløber om et minut.\nTryk på Forhåndsvisning-knappen for at undgå konflikter.'; -$lang['notsavedyet'] = 'Der er lavet ændringer i dokumentet. Hvis du fortsætter vil ændringerne gå tabt.\nØnsker du at fortsætte?'; +$lang['js']['notsavedyet'] = 'Ugemte ændringer vil blive mistet +Fortsæt alligevel?'; +$lang['js']['searchmedia'] = 'Søg efter filer'; +$lang['js']['keepopen'] = 'Hold vindue åbent ved valg'; +$lang['js']['hidedetails'] = 'Skjul detaljer'; +$lang['js']['mediatitle'] = 'Link indstillinger'; +$lang['js']['mediadisplay'] = 'Link type'; +$lang['js']['mediaalign'] = 'Juster'; +$lang['js']['mediasize'] = 'Billede størrelse'; +$lang['js']['mediaclose'] = 'Luk'; +$lang['js']['mediainsert'] = 'Indsæt'; +$lang['js']['mediadisplayimg'] = 'Vis billedet'; +$lang['js']['mediadisplaylnk'] = 'Vis kun linket'; +$lang['js']['mediasmall'] = 'Lille version'; +$lang['js']['mediamedium'] = 'Medium version'; +$lang['js']['medialarge'] = 'Stor version'; +$lang['js']['mediaoriginal'] = 'Original version'; +$lang['js']['mediadirect'] = 'Direkte link til originalen'; +$lang['js']['medianolnk'] = 'Intet link'; +$lang['js']['medianolink'] = 'Link ikke billedet'; +$lang['js']['medialeft'] = 'Juster billedet til venstre'; +$lang['js']['mediaright'] = 'Juster billedet til højre'; +$lang['js']['mediacenter'] = 'Centreret'; +$lang['js']['medianoalign'] = 'Brug ingen justering'; +$lang['js']['nosmblinks'] = 'Henvisninger til Windows shares virker kun i Microsoft Internet Explorer. +Du kan stadig kopiere og indsætte linket.'; +$lang['js']['linkwiz'] = 'guiden til henvisninger'; +$lang['js']['linkto'] = 'Henvise til:'; +$lang['js']['del_confirm'] = 'Slet valgte post(er)?'; +$lang['js']['mu_btn'] = 'Overføre flere filer på en gang'; $lang['rssfailed'] = 'Der opstod en fejl ved indhentning af: '; $lang['nothingfound'] = 'Søgningen gav intet resultat.'; $lang['mediaselect'] = 'Vælg mediefil'; @@ -118,15 +146,6 @@ $lang['deletefail'] = '"%s" kunne ikke slettes - check rettighederne. $lang['mediainuse'] = 'Filen "%s" er ikke slettet - den er stadig i brug.'; $lang['namespaces'] = 'Navnerum'; $lang['mediafiles'] = 'Tilgængelige filer i'; -$lang['js']['searchmedia'] = 'Søg for filer'; -$lang['js']['keepopen'] = 'Hold vindue åbent ved valg'; -$lang['js']['hidedetails'] = 'Skjul detaljer'; -$lang['js']['nosmblinks'] = 'Henvisninger til Windows shares virker kun i Microsoft Internet Explorer. -Du kan stadig kopiere og indsætte linket.'; -$lang['js']['linkwiz'] = 'guiden til henvisninger'; -$lang['js']['linkto'] = 'Henvise til:'; -$lang['js']['del_confirm'] = 'Slet valgte post(er)?'; -$lang['js']['mu_btn'] = 'Overføre flere filer på en gang'; $lang['mediausage'] = 'Brug den følgende syntaks til at henvise til denne fil:'; $lang['mediaview'] = 'Vis oprindelig fil'; $lang['mediaroot'] = 'rod'; @@ -135,7 +154,7 @@ $lang['mediaextchange'] = 'Filudvidelse ændret fra .%s til .%s!'; $lang['reference'] = 'Henvisning til'; $lang['ref_inuse'] = 'Filen kan ikke slettes, da den stadig er i brug på følgende sider:'; $lang['ref_hidden'] = 'Nogle henvisninger er i dokumenter du ikke har læserettigheder til'; -$lang['hits'] = 'Hits'; +$lang['hits'] = 'Besøg'; $lang['quickhits'] = 'Tilsvarende dokumentnavne'; $lang['toc'] = 'Indholdsfortegnelse'; $lang['current'] = 'nuværende'; @@ -156,6 +175,7 @@ $lang['noflash'] = 'Den <a href="http://www.adobe.com/products/fla $lang['download'] = 'Hente kodestykke'; $lang['mail_newpage'] = 'dokument tilføjet:'; $lang['mail_changed'] = 'dokument ændret:'; +$lang['mail_subscribe_list'] = 'sider ændret i navnerum'; $lang['mail_new_user'] = 'Ny bruger'; $lang['mail_upload'] = 'fil overføret:'; $lang['qb_bold'] = 'Fed'; @@ -198,11 +218,13 @@ $lang['img_copyr'] = 'Ophavsret'; $lang['img_format'] = 'Format'; $lang['img_camera'] = 'Kamera'; $lang['img_keywords'] = 'Emneord'; -$lang['subscribe_success'] = 'Tilføjet %s til abonnentliste for %s'; -$lang['subscribe_error'] = 'Fejl ved tilføjelse af %s til abonnentliste for %s'; -$lang['subscribe_noaddress'] = 'Ingen adresse knyttet til dit login, du kan ikke tilføjes til abonnentlisten'; -$lang['unsubscribe_success'] = 'Fjernet %s fra abonnentliste for %s'; -$lang['unsubscribe_error'] = 'Fejl ved fjernelse af %s fra abonnentliste for %s'; +$lang['subscr_subscribe_success'] = 'Tilføjede %s til abonnement listen for %s'; +$lang['subscr_subscribe_error'] = 'Fejl ved tilføjelse af %s til abonnement listen for %s'; +$lang['subscr_unsubscribe_success'] = 'Fjernede %s fra abonnement listen for %s'; +$lang['subscr_unsubscribe_error'] = 'Fejl ved fjernelse af %s fra abonnement listen for %s'; +$lang['subscr_m_receive'] = 'Modtag'; +$lang['subscr_style_every'] = 'email på hver ændring'; +$lang['subscr_style_list'] = 'list af ændrede sider siden sidste email (hver %.2f dage)'; $lang['authmodfailed'] = 'Fejl i brugervalideringens konfiguration. Kontakt venligst wikiens administrator.'; $lang['authtempfail'] = 'Brugervalidering er midlertidigt ude af drift. Hvis dette er vedvarende, kontakt venligst wikiens administrator.'; $lang['i_chooselang'] = 'Vælg dit sprog'; @@ -228,6 +250,7 @@ $lang['i_pol0'] = 'Åben Wiki (alle kan læse, skrive og uploade) $lang['i_pol1'] = 'Offentlig Wiki (alle kan læse, kun registrerede brugere kan skrive og overføre)'; $lang['i_pol2'] = 'Lukket Wiki (kun for registerede brugere kan læse, skrive og overføre)'; $lang['i_retry'] = 'Forsøg igen'; +$lang['i_license'] = 'Vælg venligst licensen du vil tilføje dit indhold under:'; $lang['mu_intro'] = 'Her kan du overføre flere filer af gangen. Klik på gennemse for at tilføje dem til køen. Tryk på overføre knappen når du er klar.'; $lang['mu_gridname'] = 'Filnavn'; $lang['mu_gridsize'] = 'Størrelse'; @@ -251,3 +274,4 @@ $lang['days'] = '%d dage siden'; $lang['hours'] = '%d timer siden'; $lang['minutes'] = '%d minutter siden'; $lang['seconds'] = '%d sekunder siden'; +$lang['wordblock'] = 'Din ændring blev ikke gemt da den indeholder blokeret tekst (spam).'; diff --git a/inc/lang/da/subscr_form.txt b/inc/lang/da/subscr_form.txt new file mode 100644 index 000000000..9de6565b1 --- /dev/null +++ b/inc/lang/da/subscr_form.txt @@ -0,0 +1,3 @@ +====== Abonnementadministration ====== + +Denne side gør det muligt for dig at administrere dine abonnementer for den nuværende side eller navnerum.
\ No newline at end of file diff --git a/inc/lang/da/wordblock.txt b/inc/lang/da/wordblock.txt deleted file mode 100644 index 5a1c0d754..000000000 --- a/inc/lang/da/wordblock.txt +++ /dev/null @@ -1,3 +0,0 @@ -====== SPAM blokeret ====== - -Dine ændringer blev **ikke** gemt da de indeholder et eller flere uønskede ord. Kontakt venligst admin, hvis du mener dette er en fejl. diff --git a/inc/lang/de-informal/conflict.txt b/inc/lang/de-informal/conflict.txt index a5ae425be..eec345061 100644 --- a/inc/lang/de-informal/conflict.txt +++ b/inc/lang/de-informal/conflict.txt @@ -1,6 +1,6 @@ ====== Eine neuere Version existiert ====== -Eine neuere Version des aktuell in Bearbeitung befindlichen Dokuments existiert. Das heißt, jemand hat parallel an der selben Seite gearbeitet und zuerst gespeichert. +Eine neuere Version des aktuell in Bearbeitung befindlichen Dokuments existiert. Das heißt, jemand hat gleichzeitig an der selben Seite gearbeitet und zuerst gespeichert. Die unten aufgeführten Unterschiede können bei der Entscheidung helfen, welchem Dokument Vorrang gewährt wird. Wähle **''[Speichern]''** zum Sichern deiner Version oder **''[Abbrechen]''**, um deine Version zu verwerfen und die zuerst gespeicherte Seite zu behalten. diff --git a/inc/lang/de-informal/edit.txt b/inc/lang/de-informal/edit.txt index 15e02c61a..28a764124 100644 --- a/inc/lang/de-informal/edit.txt +++ b/inc/lang/de-informal/edit.txt @@ -1,4 +1,4 @@ -Bitte nur editieren, falls das Dokument **verbessert** werden kann. +Bitte bearbeite dieses Dokument nur, wenn du es **verbessern** kannst. Nach dem Bearbeiten den **''[Speichern]''**-Knopf drücken. Siehe [[wiki:syntax]] zur Wiki-Syntax. Zum Testen bitte erst im [[playground:playground|Spielplatz]] üben. diff --git a/inc/lang/de-informal/lang.php b/inc/lang/de-informal/lang.php index 1747e3288..a42ecc0ab 100644 --- a/inc/lang/de-informal/lang.php +++ b/inc/lang/de-informal/lang.php @@ -15,6 +15,7 @@ * @author Arne Pelka <mail@arnepelka.de> * @author Alexander Fischer <tbanus@os-forge.net> * @author Juergen Schwarzer <jschwarzer@freenet.de> + * @author Marcel Metz <marcel_metz@gmx.de> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -104,7 +105,7 @@ $lang['txt_overwrt'] = 'Bestehende Datei überschreiben'; $lang['lockedby'] = 'Momentan gesperrt von'; $lang['lockexpire'] = 'Sperre läuft ab am'; $lang['willexpire'] = 'Die Sperre zur Bearbeitung dieser Seite läuft in einer Minute ab.\nUm Bearbeitungskonflikte zu vermeiden, solltest du sie durch einen Klick auf den Vorschau-Knopf verlängern.'; -$lang['notsavedyet'] = 'Nicht gespeicherte Änderungen gehen verloren!\nWeitermachen?'; +$lang['js']['notsavedyet'] = "Nicht gespeicherte Änderungen gehen verloren!"; $lang['rssfailed'] = 'Es ist ein Fehler beim Laden des Feeds aufgetreten: '; $lang['nothingfound'] = 'Nichts gefunden.'; $lang['mediaselect'] = 'Dateiauswahl'; @@ -156,7 +157,7 @@ $lang['created'] = 'angelegt'; $lang['restored'] = 'alte Version wieder hergestellt'; $lang['external_edit'] = 'Externe Bearbeitung'; $lang['summary'] = 'Zusammenfassung'; -$lang['noflash'] = 'Das <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> wird benötigt, um diesen Ihnalt anzuzeigen.'; +$lang['noflash'] = 'Das <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> wird benötigt, um diesen Inhalt anzuzeigen.'; $lang['download'] = 'Download-Teil'; $lang['mail_newpage'] = 'Neue Seite:'; $lang['mail_changed'] = 'Seite geaendert:'; @@ -197,7 +198,7 @@ $lang['img_caption'] = 'Bildunterschrift'; $lang['img_date'] = 'Datum'; $lang['img_fname'] = 'Dateiname'; $lang['img_fsize'] = 'Grösse'; -$lang['img_artist'] = 'FotografIn'; +$lang['img_artist'] = 'Fotograf'; $lang['img_copyr'] = 'Copyright'; $lang['img_format'] = 'Format'; $lang['img_camera'] = 'Kamera'; diff --git a/inc/lang/de-informal/mailtext.txt b/inc/lang/de-informal/mailtext.txt index 4fd41ad19..508c080f7 100644 --- a/inc/lang/de-informal/mailtext.txt +++ b/inc/lang/de-informal/mailtext.txt @@ -13,5 +13,6 @@ Benutzer : @USER@ -- -Diese Mail kommt vom DokuWiki auf +Diese Mail wurde vom DokuWiki auf @DOKUWIKIURL@ +erzeugt. diff --git a/inc/lang/de-informal/password.txt b/inc/lang/de-informal/password.txt index 9e1ecdb15..8ce252966 100644 --- a/inc/lang/de-informal/password.txt +++ b/inc/lang/de-informal/password.txt @@ -6,5 +6,6 @@ Benutzername: @LOGIN@ Passwort : @PASSWORD@ -- -Diese Mail kommt vom DokuWiki auf +Diese Mail wurde vom DokuWiki auf @DOKUWIKIURL@ +erzeugt.
\ No newline at end of file diff --git a/inc/lang/de-informal/pwconfirm.txt b/inc/lang/de-informal/pwconfirm.txt index 538597cfa..5e5572b28 100644 --- a/inc/lang/de-informal/pwconfirm.txt +++ b/inc/lang/de-informal/pwconfirm.txt @@ -12,5 +12,6 @@ Bestätigungslink. @CONFIRM@ -- -Diese Mail kommt vom DokuWiki auf +Diese Mail wurde vom DokuWiki auf @DOKUWIKIURL@ +erzeugt. diff --git a/inc/lang/de-informal/subscr_form.txt b/inc/lang/de-informal/subscr_form.txt new file mode 100644 index 000000000..7bf74f2cf --- /dev/null +++ b/inc/lang/de-informal/subscr_form.txt @@ -0,0 +1,3 @@ +====== Abonnementverwaltung ====== + +Hier kannst du deine Abonnements für die aktuelle Seite oder den aktuellen [[doku>Namespaces|Namespace]] verwalten. diff --git a/inc/lang/de-informal/uploadmail.txt b/inc/lang/de-informal/uploadmail.txt index 72e4a2a6e..7239cc10c 100644 --- a/inc/lang/de-informal/uploadmail.txt +++ b/inc/lang/de-informal/uploadmail.txt @@ -10,5 +10,6 @@ MIME-Typ : @MIME@ Benutzer : @USER@ -- -Diese Mail kommt vom DokuWiki auf +Diese Mail wurde vom DokuWiki auf @DOKUWIKIURL@ +erzeugt. diff --git a/inc/lang/de-informal/wordblock.txt b/inc/lang/de-informal/wordblock.txt deleted file mode 100644 index cb3e4c06a..000000000 --- a/inc/lang/de-informal/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== SPAM blockiert ====== - -Deine Änderungen wurden nicht gespeichert, da sie ein oder mehrere nicht erlaubte Wörter enthielten. Falls du versucht haben solltest, das Wiki zu Spammen -- Schande über ich! Wenn du glaubst, dass der Eintrag zu Unrecht blockiert wurde, kontaktiere bitte den Administrator des Wikis. - diff --git a/inc/lang/de/backlinks.txt b/inc/lang/de/backlinks.txt index aae4c5582..b797b0003 100644 --- a/inc/lang/de/backlinks.txt +++ b/inc/lang/de/backlinks.txt @@ -1,4 +1,4 @@ -====== Backlinks ====== +====== Links hierher ====== Dies ist eine Liste der Seiten, die zurück zur momentanen Seite linken. diff --git a/inc/lang/de/lang.php b/inc/lang/de/lang.php index d0c1f8b70..c5c65abca 100644 --- a/inc/lang/de/lang.php +++ b/inc/lang/de/lang.php @@ -16,6 +16,7 @@ * @author Dirk Einecke <dirk@dirkeinecke.de> * @author Blitzi94@gmx.de * @author Robert Bogenschneider <robog@GMX.de> + * @author Robert Bogenschneider <robog@gmx.de> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -49,9 +50,6 @@ $lang['btn_back'] = 'Zurück'; $lang['btn_backlink'] = 'Links hierher'; $lang['btn_backtomedia'] = 'Zurück zur Dateiauswahl'; $lang['btn_subscribe'] = 'Änderungen abonnieren'; -$lang['btn_unsubscribe'] = 'Änderungen abbestellen'; -$lang['btn_subscribens'] = 'Namensraumänderungen abonnieren'; -$lang['btn_unsubscribens'] = 'Namensraumänderungen abbestellen'; $lang['btn_profile'] = 'Benutzerprofil'; $lang['btn_reset'] = 'Zurücksetzen'; $lang['btn_resendpwd'] = 'Sende neues Passwort'; @@ -105,7 +103,37 @@ $lang['txt_overwrt'] = 'Bestehende Datei überschreiben'; $lang['lockedby'] = 'Momentan gesperrt von'; $lang['lockexpire'] = 'Sperre läuft ab am'; $lang['willexpire'] = 'Die Sperre zur Bearbeitung dieser Seite läuft in einer Minute ab.\nUm Bearbeitungskonflikte zu vermeiden, sollten Sie sie durch einen Klick auf den Vorschau-Knopf verlängern.'; -$lang['notsavedyet'] = 'Nicht gespeicherte Änderungen gehen verloren!\nWeitermachen?'; +$lang['js']['notsavedyet'] = 'Nicht gespeicherte Änderungen gehen verloren!'; +$lang['js']['searchmedia'] = 'Suche Dateien'; +$lang['js']['keepopen'] = 'Fenster nach Auswahl nicht schließen'; +$lang['js']['hidedetails'] = 'Details ausblenden'; +$lang['js']['mediatitle'] = 'Linkeinstellungen'; +$lang['js']['mediadisplay'] = 'Linktyp'; +$lang['js']['mediaalign'] = 'Anordnung'; +$lang['js']['mediasize'] = 'Bildgröße'; +$lang['js']['mediatarget'] = 'Linkziel'; +$lang['js']['mediaclose'] = 'Schliessen'; +$lang['js']['mediainsert'] = 'Einfügen'; +$lang['js']['mediadisplayimg'] = 'Bild anzeigen.'; +$lang['js']['mediadisplaylnk'] = 'Nur den Link anzeigen.'; +$lang['js']['mediasmall'] = 'Kleine Version'; +$lang['js']['mediamedium'] = 'Mittlere Version'; +$lang['js']['medialarge'] = 'Grosse Version'; +$lang['js']['mediaoriginal'] = 'Originalversion'; +$lang['js']['medialnk'] = 'Link zur Detailseite'; +$lang['js']['mediadirect'] = 'Direktlink zum Original'; +$lang['js']['medianolnk'] = 'Kein Link'; +$lang['js']['medianolink'] = 'Bild nicht verlinken'; +$lang['js']['medialeft'] = 'Das Bild links anordnen.'; +$lang['js']['mediaright'] = 'Das Bild rechts anordnen.'; +$lang['js']['mediacenter'] = 'Das Bild in der Mitte anordnen.'; +$lang['js']['medianoalign'] = 'Keine Anordnung benutzen.'; +$lang['js']['nosmblinks'] = 'Das Verlinken von Windows-Freigaben funktioniert nur im Microsoft Internet Explorer. +Der Link kann jedoch durch Kopieren und Einfügen verwendet werden.'; +$lang['js']['linkwiz'] = 'Link-Assistent'; +$lang['js']['linkto'] = 'Link nach:'; +$lang['js']['del_confirm'] = 'Eintrag wirklich löschen?'; +$lang['js']['mu_btn'] = 'Mehrere Dateien gleichzeitig hochladen'; $lang['rssfailed'] = 'Es ist ein Fehler beim Laden des Feeds aufgetreten: '; $lang['nothingfound'] = 'Nichts gefunden.'; $lang['mediaselect'] = 'Dateiauswahl'; @@ -123,15 +151,7 @@ $lang['deletefail'] = '"%s" konnte nicht gelöscht werden - prüfen S $lang['mediainuse'] = 'Die Datei "%s" wurde nicht gelöscht - sie wird noch verwendet.'; $lang['namespaces'] = 'Namensräume'; $lang['mediafiles'] = 'Vorhandene Dateien in'; -$lang['js']['searchmedia'] = 'Suche Dateien'; -$lang['js']['keepopen'] = 'Fenster nach Auswahl nicht schließen'; -$lang['js']['hidedetails'] = 'Details ausblenden'; -$lang['js']['nosmblinks'] = 'Das Verlinken von Windows-Freigaben funktioniert nur im Microsoft Internet Explorer. -Der Link kann jedoch durch Kopieren und Einfügen verwendet werden.'; -$lang['js']['linkwiz'] = 'Link-Assistent'; -$lang['js']['linkto'] = 'Link nach:'; -$lang['js']['del_confirm'] = 'Eintrag wirklich löschen?'; -$lang['js']['mu_btn'] = 'Mehrere Dateien gleichzeitig hochladen'; +$lang['accessdenied'] = 'Es ist Ihnen nicht gestattet, diese Seite zu sehen.'; $lang['mediausage'] = 'Syntax zum Verwenden dieser Datei:'; $lang['mediaview'] = 'Originaldatei öffnen'; $lang['mediaroot'] = 'Wurzel'; @@ -147,6 +167,7 @@ $lang['current'] = 'aktuell'; $lang['yours'] = 'Ihre Version'; $lang['diff'] = 'Zeige Unterschiede zu aktueller Version'; $lang['diff2'] = 'Zeige Unterschiede der ausgewählten Versionen'; +$lang['difflink'] = 'Link zu dieser Vergleichsansicht'; $lang['line'] = 'Zeile'; $lang['breadcrumb'] = 'Zuletzt angesehen'; $lang['youarehere'] = 'Sie befinden sich hier'; @@ -161,6 +182,7 @@ $lang['noflash'] = 'Das <a href="http://www.adobe.com/products/fla $lang['download'] = 'Schnipsel herunterladen'; $lang['mail_newpage'] = 'Neue Seite:'; $lang['mail_changed'] = 'Seite geaendert:'; +$lang['mail_subscribe_list'] = 'Geänderte Seiten im Namensraum:'; $lang['mail_new_user'] = 'Neuer Benutzer:'; $lang['mail_upload'] = 'Datei hochgeladen:'; $lang['qb_bold'] = 'Fetter Text'; @@ -197,17 +219,28 @@ $lang['img_title'] = 'Titel'; $lang['img_caption'] = 'Bildunterschrift'; $lang['img_date'] = 'Datum'; $lang['img_fname'] = 'Dateiname'; -$lang['img_fsize'] = 'Grösse'; +$lang['img_fsize'] = 'Größe'; $lang['img_artist'] = 'FotografIn'; $lang['img_copyr'] = 'Copyright'; $lang['img_format'] = 'Format'; $lang['img_camera'] = 'Kamera'; $lang['img_keywords'] = 'Schlagwörter'; -$lang['subscribe_success'] = '%s hat nun Änderungen der Seite %s abonniert'; -$lang['subscribe_error'] = '%s kann die Änderungen der Seite %s nicht abonnieren'; -$lang['subscribe_noaddress'] = 'Weil Ihre E-Mail-Adresse fehlt, können Sie das Thema nicht abonnieren'; -$lang['unsubscribe_success'] = 'Das Abonnement von %s für die Seite %s wurde aufgelöst'; -$lang['unsubscribe_error'] = 'Das Abonnement von %s für die Seite %s konnte nicht aufgelöst werden'; +$lang['subscr_subscribe_success'] = '%s hat nun Änderungen der Seite %s abonniert'; +$lang['subscr_subscribe_error'] = '%s kann die Änderungen der Seite %s nicht abonnieren'; +$lang['subscr_subscribe_noaddress'] = 'Weil Ihre E-Mail-Adresse fehlt, können Sie das Thema nicht abonnieren'; +$lang['subscr_unsubscribe_success'] = 'Das Abonnement von %s für die Seite %s wurde aufgelöst'; +$lang['subscr_unsubscribe_error'] = 'Das Abonnement von %s für die Seite %s konnte nicht aufgelöst werden'; +$lang['subscr_already_subscribed'] = '%s hat %s bereits abonniert'; +$lang['subscr_not_subscribed'] = '%s hat %s nicht abonniert'; +$lang['subscr_m_not_subscribed'] = 'Sie haben die aktuelle Seite und ihre Namensräume nicht abonniert.'; +$lang['subscr_m_new_header'] = 'Abonnement hinzufügen'; +$lang['subscr_m_current_header'] = 'Aktuelle Abonnements'; +$lang['subscr_m_unsubscribe'] = 'Löschen'; +$lang['subscr_m_subscribe'] = 'Abonnieren'; +$lang['subscr_m_receive'] = 'Benachrichtigung'; +$lang['subscr_style_every'] = 'Email bei jeder Bearbeitung'; +$lang['subscr_style_digest'] = 'Zusammenfassung der Änderungen für jede veränderte Seite (Alle %.2f Tage)'; +$lang['subscr_style_list'] = 'Liste der geänderten Seiten (Alle %.2f Tage)'; $lang['authmodfailed'] = 'Benutzerüberprüfung nicht möglich. Bitte wenden Sie sich an den Systembetreuer.'; $lang['authtempfail'] = 'Benutzerüberprüfung momentan nicht möglich. Falls das Problem andauert, wenden Sie sich an den Systembetreuer.'; $lang['i_chooselang'] = 'Wählen Sie Ihre Sprache'; @@ -231,6 +264,7 @@ $lang['i_pol0'] = 'Offenes Wiki (lesen, schreiben, hochladen für $lang['i_pol1'] = 'Öffentliches Wiki (lesen für alle, schreiben und hochladen für registrierte Nutzer)'; $lang['i_pol2'] = 'Geschlossenes Wiki (lesen, schreiben, hochladen nur für registrierte Nutzer)'; $lang['i_retry'] = 'Wiederholen'; +$lang['i_license'] = 'Bitte wählen Sie die Lizenz, unter die Sie Ihre Inhalte stellen möchten:'; $lang['mu_intro'] = 'In diesem Bereich können Sie mehrere Dateien gleichzeitig hochladen. Benutzen Sie die Schaltfläche "Durchsuchen" um sie der Warteschlange zuzufügen. Betätigen Sie die Schaltfläche "Hochladen" um die Übertragung zu starten.'; $lang['mu_gridname'] = 'Dateiname'; $lang['mu_gridsize'] = 'Größe'; @@ -247,11 +281,11 @@ $lang['mu_filetypes'] = 'Erlaubte Dateitypen'; $lang['mu_info'] = 'Dateien hochgeladen!'; $lang['mu_lasterr'] = 'Letzter Fehler:'; $lang['recent_global'] = 'Im Moment sehen Sie die Änderungen im Namensraum <b>%s</b>. Sie können auch <a href="%s">die Änderungen im gesamten Wiki sehen</a>.'; - -$lang['years'] = 'vor %d Jahren'; -$lang['months'] = 'vor %d Monaten'; -$lang['weeks'] = 'vor %d Wochen'; -$lang['days'] = 'vor %d Tagen'; -$lang['hours'] = 'vor %d Stunden'; -$lang['minutes'] = 'vor %d Minuten'; -$lang['seconds'] = 'vor %d Sekunden'; +$lang['years'] = 'vor %d Jahren'; +$lang['months'] = 'vor %d Monaten'; +$lang['weeks'] = 'vor %d Wochen'; +$lang['days'] = 'vor %d Tagen'; +$lang['hours'] = 'vor %d Stunden'; +$lang['minutes'] = 'vor %d Minuten'; +$lang['seconds'] = 'vor %d Sekunden'; +$lang['wordblock'] = 'Deine Bearbeitung wurde nicht gespeichert, da sie gesperrten Text enthielt (Spam).'; diff --git a/inc/lang/de/subscr_digest.txt b/inc/lang/de/subscr_digest.txt new file mode 100644 index 000000000..c8bf770ee --- /dev/null +++ b/inc/lang/de/subscr_digest.txt @@ -0,0 +1,21 @@ +Hallo! + +Die Seite @PAGE@ im @TITLE@ Wiki wurde bearbeitet. +Das sind die Änderungen: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Alte Revision: @OLDPAGE@ +Neue Revision: @NEWPAGE@ + +Um das Abonnement für diese Seite aufzulösen, melden Sie sich im Wiki an +@DOKUWIKIURL@, besuchen dann +@SUBSCRIBE@ +und klicken auf den Link 'Änderungen abbestellen'. + +-- +Diese Mail kommt vom DokuWiki auf +@DOKUWIKIURL@ + diff --git a/inc/lang/de/subscr_form.txt b/inc/lang/de/subscr_form.txt new file mode 100644 index 000000000..4ba6afb09 --- /dev/null +++ b/inc/lang/de/subscr_form.txt @@ -0,0 +1,3 @@ +====== Abonnementverwaltung ====== + +Hier können Sie Ihre Abonnements für die aktuelle Seite oder den aktuellen [[doku>Namespaces|Namespace]] verwalten. diff --git a/inc/lang/de/subscr_list.txt b/inc/lang/de/subscr_list.txt new file mode 100644 index 000000000..98ec4c2ab --- /dev/null +++ b/inc/lang/de/subscr_list.txt @@ -0,0 +1,18 @@ +Hallo! + +Seite im Namensraum @PAGE@ im @TITLE@ Wiki wurden bearbeitet. +Das sind die geänderten Seiten: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Um das Abonnement für diese Seite aufzulösen, melde Sie sich im Wiki an +@DOKUWIKIURL@, besuchen dann +@SUBSCRIBE@ +und klicken auf die Taste 'Änderungen abbestellen'. + +-- +Diese Mail kommt vom DokuWiki auf +@DOKUWIKIURL@ + diff --git a/inc/lang/de/subscribermail.txt b/inc/lang/de/subscr_single.txt index 0d90967a2..fb149e927 100644 --- a/inc/lang/de/subscribermail.txt +++ b/inc/lang/de/subscr_single.txt @@ -18,6 +18,7 @@ Um das Abonnement für diese Seite aufzulösen, melde Sie sich im Wiki an @NEWPAGE@ und klicken auf die Taste 'Änderungen abbestellen'. --- +-- Diese Mail kommt vom DokuWiki auf @DOKUWIKIURL@ + diff --git a/inc/lang/de/wordblock.txt b/inc/lang/de/wordblock.txt deleted file mode 100644 index 14622ebc2..000000000 --- a/inc/lang/de/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== SPAM blockiert ====== - -Ihre Änderungen wurden nicht gespeichert, da sie ein oder mehrere nicht erlaubte Wörter enthielten. Falls Sie versucht haben sollten, das Wiki zu Spammen -- Schande über Sie! Wenn Sie glauben, dass der Eintrag zu Unrecht blockiert wurde, kontaktieren Sie bitte den Administrator des Wikis. - diff --git a/inc/lang/el/lang.php b/inc/lang/el/lang.php index 7aee3161d..83a869df0 100644 --- a/inc/lang/el/lang.php +++ b/inc/lang/el/lang.php @@ -6,6 +6,7 @@ * @author Thanos Massias <tm@thriasio.gr> * @author Αθανάσιος Νταής <homunculus@wana.gr> * @author Konstantinos Koryllos <koryllos@gmail.com> + * @author George Petsagourakis <petsagouris@gmail.com> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -39,9 +40,6 @@ $lang['btn_back'] = 'Πίσω'; $lang['btn_backlink'] = 'Σύνδεσμοι προς την τρέχουσα σελίδα'; $lang['btn_backtomedia'] = 'Επιστροφή στην επιλογή αρχείων'; $lang['btn_subscribe'] = 'Εγγραφή σε λήψη ενημερώσεων σελίδας'; -$lang['btn_unsubscribe'] = 'Διαγραφή από λήψη ενημερώσεων σελίδας'; -$lang['btn_subscribens'] = 'Εγγραφή σε λήψη ενημερώσεων φακέλου'; -$lang['btn_unsubscribens'] = 'Διαγραφή από λήψη ενημερώσεων φακέλου'; $lang['btn_profile'] = 'Τροποποίηση προφίλ'; $lang['btn_reset'] = 'Ακύρωση'; $lang['btn_resendpwd'] = 'Αποστολή νέου κωδικού'; @@ -95,7 +93,38 @@ $lang['txt_overwrt'] = 'Αντικατάσταση υπάρχοντο $lang['lockedby'] = 'Προσωρινά κλειδωμένο από'; $lang['lockexpire'] = 'Το κλείδωμα λήγει στις'; $lang['willexpire'] = 'Το κλείδωμά σας για την επεξεργασία αυτής της σελίδας θα λήξει σε ένα λεπτό.\n Για να το ανανεώσετε χρησιμοποιήστε την επιλογή Προεπισκόπηση.'; -$lang['notsavedyet'] = 'Οι μη αποθηκευμένες αλλαγές θα χαθούν.\nΘέλετε να συνεχίσετε?'; +$lang['js']['notsavedyet'] = 'Οι μη αποθηκευμένες αλλαγές θα χαθούν. +Θέλετε να συνεχίσετε?'; +$lang['js']['searchmedia'] = 'Αναζήτηση για αρχεία'; +$lang['js']['keepopen'] = 'Το παράθυρο να μην κλείνει'; +$lang['js']['hidedetails'] = 'Απόκρυψη λεπτομερειών'; +$lang['js']['mediatitle'] = 'Ρυθμίσεις συνδέσμων'; +$lang['js']['mediadisplay'] = 'Τύπος συνδέσμου'; +$lang['js']['mediaalign'] = 'Στοίχηση'; +$lang['js']['mediasize'] = 'Μέγεθος εικόνας'; +$lang['js']['mediatarget'] = 'Προορισμός συνδέσμου'; +$lang['js']['mediaclose'] = 'Κλείσιμο'; +$lang['js']['mediainsert'] = 'Εισαγωγή'; +$lang['js']['mediadisplayimg'] = 'Προβολή εικόνας.'; +$lang['js']['mediadisplaylnk'] = 'Προβολή μόνο του συνδέσμου.'; +$lang['js']['mediasmall'] = 'Μικρή έκδοση'; +$lang['js']['mediamedium'] = 'Μεσαία έκδοση'; +$lang['js']['medialarge'] = 'Μεγάλη έκδοση'; +$lang['js']['mediaoriginal'] = 'Κανονική έκδοση'; +$lang['js']['medialnk'] = 'Σύνδεσμος στην σελίδα λεπτομερειών'; +$lang['js']['mediadirect'] = 'Απευθείας σύνδεσμος στο αυθεντικό'; +$lang['js']['medianolnk'] = 'Χωρίς σύνδεσμο'; +$lang['js']['medianolink'] = 'Να μην γίνει σύνδεσμος η εικόνα'; +$lang['js']['medialeft'] = 'Στοίχιση της εικόνας αριστερά.'; +$lang['js']['mediaright'] = 'Στοίχιση της εικόνας δεξιά.'; +$lang['js']['mediacenter'] = 'Στοίχιση της εικόνας στη μέση.'; +$lang['js']['medianoalign'] = 'Να μην γίνει στοίχιση.'; +$lang['js']['nosmblinks'] = 'Οι σύνδεσμοι προς Windows shares δουλεύουν μόνο στον Microsoft Internet Explorer. +Μπορείτε πάντα να κάνετε αντιγραφή και επικόλληση του συνδέσμου.'; +$lang['js']['linkwiz'] = 'Αυτόματος Οδηγός Συνδέσμων'; +$lang['js']['linkto'] = 'Σύνδεση σε:'; +$lang['js']['del_confirm'] = 'Να διαγραφεί?'; +$lang['js']['mu_btn'] = 'Ταυτόχρονη φόρτωση πολλαπλών φακέλων'; $lang['rssfailed'] = 'Εμφανίστηκε κάποιο σφάλμα κατά την ανάγνωση αυτού του feed: '; $lang['nothingfound'] = 'Δεν βρέθηκαν σχετικά αποτελέσματα.'; $lang['mediaselect'] = 'Επιλογή Αρχείων'; @@ -113,15 +142,7 @@ $lang['deletefail'] = 'Το αρχείο "%s" δεν διαγράφη $lang['mediainuse'] = 'Το αρχείο "%s" δεν διαγράφηκε - είναι ακόμα σε χρήση.'; $lang['namespaces'] = 'Φάκελοι'; $lang['mediafiles'] = 'Διαθέσιμα αρχεία σε'; -$lang['js']['searchmedia'] = 'Αναζήτηση για αρχεία'; -$lang['js']['keepopen'] = 'Το παράθυρο να μην κλείνει'; -$lang['js']['hidedetails'] = 'Απόκρυψη λεπτομερειών'; -$lang['js']['nosmblinks'] = 'Οι σύνδεσμοι προς Windows shares δουλεύουν μόνο στον Microsoft Internet Explorer. -Μπορείτε πάντα να κάνετε αντιγραφή και επικόλληση του συνδέσμου.'; -$lang['js']['linkwiz'] = 'Αυτόματος Οδηγός Συνδέσμων'; -$lang['js']['linkto'] = 'Σύνδεση σε:'; -$lang['js']['del_confirm'] = 'Να διαγραφεί?'; -$lang['js']['mu_btn'] = 'Ταυτόχρονη φόρτωση πολλαπλών φακέλων'; +$lang['accessdenied'] = 'Δεν σας επιτρέπεται να δείτε αυτήν την σελίδα.'; $lang['mediausage'] = 'Χρησιμοποιήστε την ακόλουθη σύνταξη για να παραθέσετε αυτό το αρχείο:'; $lang['mediaview'] = 'Κανονική προβολή αρχείου'; $lang['mediaroot'] = 'root'; @@ -137,6 +158,7 @@ $lang['current'] = 'τρέχουσα'; $lang['yours'] = 'Η έκδοσή σας'; $lang['diff'] = 'προβολή διαφορών με την τρέχουσα έκδοση'; $lang['diff2'] = 'Προβολή διαφορών μεταξύ των επιλεγμένων εκδόσεων'; +$lang['difflink'] = 'Σύνδεσμος σε αυτή την προβολή διαφορών.'; $lang['line'] = 'Γραμμή'; $lang['breadcrumb'] = 'Ιστορικό'; $lang['youarehere'] = 'Είστε εδώ'; @@ -151,6 +173,7 @@ $lang['noflash'] = 'Το <a href="http://www.adobe.com/products/fl $lang['download'] = 'Λήψη Κώδικα'; $lang['mail_newpage'] = 'σελίδα προστέθηκε:'; $lang['mail_changed'] = 'σελίδα τροποποιήθηκε:'; +$lang['mail_subscribe_list'] = 'σελίδες που άλλαξαν στον φάκελο:'; $lang['mail_new_user'] = 'νέος χρήστης:'; $lang['mail_upload'] = 'αρχείο φορτώθηκε:'; $lang['qb_bold'] = 'Έντονο Κείμενο'; @@ -165,6 +188,9 @@ $lang['qb_h4'] = 'Κεφαλίδα 4ου Επιπέδου'; $lang['qb_h5'] = 'Κεφαλίδα 5ου Επιπέδου'; $lang['qb_h'] = 'Κεφαλίδα'; $lang['qb_hs'] = 'Επιλογή Κεφαλίδας'; +$lang['qb_hplus'] = 'Μεγαλύτερη Κεφαλίδα'; +$lang['qb_hminus'] = 'Μικρότερη Κεφαλίδα'; +$lang['qb_hequal'] = 'Κεφαλίδα ίδιο μεγέθους'; $lang['qb_link'] = 'Εσωτερικός Σύνδεσμος'; $lang['qb_extlink'] = 'Εξωτερικός Σύνδεσμος'; $lang['qb_hr'] = 'Διαχωριστική Γραμμή'; @@ -174,6 +200,7 @@ $lang['qb_media'] = 'Προσθήκη Αρχείων'; $lang['qb_sig'] = 'Προσθήκη Υπογραφής'; $lang['qb_smileys'] = 'Smileys'; $lang['qb_chars'] = 'Ειδικοί Χαρακτήρες'; +$lang['upperns'] = 'πήγαινε στον μητρικό φάκελο'; $lang['admin_register'] = 'Προσθήκη νέου χρήστη'; $lang['metaedit'] = 'Τροποποίηση metadata'; $lang['metasaveerr'] = 'Η αποθήκευση των metadata απέτυχε'; @@ -189,11 +216,22 @@ $lang['img_copyr'] = 'Copyright'; $lang['img_format'] = 'Format'; $lang['img_camera'] = 'Camera'; $lang['img_keywords'] = 'Λέξεις-κλειδιά'; -$lang['subscribe_success'] = 'Προσθήκη %s στην λίστα συνδρομητών %s'; -$lang['subscribe_error'] = 'Αποτυχία προσθήκης %s στην λίστα συνδρομητών %s'; -$lang['subscribe_noaddress'] = 'Δεν έχετε δηλώσει e-mail διεύθυνση - δεν μπορείτε να γραφτείτε στην λίστα συνδρομητών.'; -$lang['unsubscribe_success'] = 'Διαγραφή %s από την λίστα συνδρομητών %s'; -$lang['unsubscribe_error'] = 'Αποτυχία διαγραφής %s από την λίστα συνδρομητών %s'; +$lang['subscr_subscribe_success'] = 'Ο/η %s προστέθηκε στην λίστα ειδοποιήσεων για το %s'; +$lang['subscr_subscribe_error'] = 'Σφάλμα κατά την προσθήκη του/της %s στην λίστα ειδοποιήσεων για το %s'; +$lang['subscr_subscribe_noaddress'] = 'Δεν υπάρχει διεύθυνση ταχυδρομείου, συσχετισμένη με το όνομα χρήστη σας, κατά συνέπεια δεν μπορείτε να προστεθείτε στην λίστα ειδοποιήσεων'; +$lang['subscr_unsubscribe_success'] = 'Ο/η %s, απομακρύνθηκε από την λίστα ειδοποιήσεων για το %s'; +$lang['subscr_unsubscribe_error'] = 'Σφάλμα κατά την απομάκρυνση του/της %s στην λίστα ειδοποιήσεων για το %s'; +$lang['subscr_already_subscribed'] = 'Ο/η %s είναι ήδη στην λίστα ειδοποίησης για το %s'; +$lang['subscr_not_subscribed'] = 'Ο/η %s δεν είναι στην λίστα ειδοποίησης για το %s'; +$lang['subscr_m_not_subscribed'] = 'Αυτήν την στιγμή, δεν είσαστε γραμμένος/η στην λίστα ειδοποίησης της τρέχουσας σελίδας ή φακέλου.'; +$lang['subscr_m_new_header'] = 'Προσθήκη στην λίστα ειδοποίησης'; +$lang['subscr_m_current_header'] = 'Τρέχουσες εγγραφές ειδοποιήσεων'; +$lang['subscr_m_unsubscribe'] = 'Διαγραφή'; +$lang['subscr_m_subscribe'] = 'Εγγραφή'; +$lang['subscr_m_receive'] = 'Λήψη'; +$lang['subscr_style_every'] = 'email σε κάθε αλλαγή'; +$lang['subscr_style_digest'] = 'συνοπτικό email αλλαγών της σελίδας (κάθε %.2f μέρες)'; +$lang['subscr_style_list'] = 'λίστα αλλαγμένων σελίδων μετά από το τελευταίο email (κάθε %.2f μέρες)'; $lang['authmodfailed'] = 'Κακή ρύθμιση λίστας χρηστών. Παρακαλούμε ενημερώστε τον διαχειριστή του wiki.'; $lang['authtempfail'] = 'Η είσοδος χρηστών δεν λειτουργεί αυτή την στιγμή. Εάν αυτό διαρκεί για πολύ χρόνο, παρακαλούμε ενημερώστε τον διαχειριστή του wiki.'; $lang['i_chooselang'] = 'Επιλογή γλώσσας'; @@ -218,6 +256,7 @@ $lang['i_pol0'] = 'Ανοιχτό Wiki (όλοι μπορούν $lang['i_pol1'] = 'Δημόσιο Wiki (όλοι μπορούν να διαβάσουν σελίδες αλλά μόνο οι εγγεγραμμένοι χρήστες μπορούν να δημιουργήσουν/τροποποιήσουν σελίδες και να μεταφορτώσουν αρχεία)'; $lang['i_pol2'] = 'Κλειστό Wiki (μόνο οι εγγεγραμμένοι χρήστες μπορούν να διαβάσουν ή να δημιουργήσουν/τροποποιήσουν σελίδες και να μεταφορτώσουν αρχεία)'; $lang['i_retry'] = 'Νέα προσπάθεια'; +$lang['i_license'] = 'Παρακαλώ επιλέξτε την άδεια που θα χρησιμοποιήσετε για την διάθεση του περιεχομένου σας:'; $lang['mu_intro'] = 'Εδώ μπορείτε να φορτώσετε ταυτόχρονα πολλαπλά αρχεία. Πατήστε στο κουμπί προεπισκόπησης για να τα προσθέσετε στη λίστα. Πατήστε στο κουμπί μεταφόρτωσης όταν έχετε τελειώσει.'; $lang['mu_gridname'] = 'Όνομα αρχείου'; $lang['mu_gridsize'] = 'Μέγεθος'; @@ -241,3 +280,4 @@ $lang['days'] = 'πριν από %d ημέρες'; $lang['hours'] = 'πριν από %d ώρες'; $lang['minutes'] = 'πριν από %d λεπτά'; $lang['seconds'] = 'πριν από %d δευτερόλεπτα'; +$lang['wordblock'] = 'Η αλλαγή σας δεν αποθηκεύτηκε γιατί περιείχε μπλοκαρισμένο κείμενο (spam).'; diff --git a/inc/lang/el/subscr_digest.txt b/inc/lang/el/subscr_digest.txt new file mode 100644 index 000000000..1a0f44d14 --- /dev/null +++ b/inc/lang/el/subscr_digest.txt @@ -0,0 +1,21 @@ +Χαίρετε! + +Η σελίδα @PAGE@ στο @TITLE@ άλλαξε. +Ορίστε οι αλλαγές: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Παλιά έκδοση: @OLDPAGE@ +Νέα έκδοση: @NEWPAGE@ + +Για να σταματήσουν αυτές οι ειδοποιήσεις συνδεθείτε +στο wiki στην διεύθυνση @DOKUWIKIURL@ και στην +συνέχεια επισκεφθείτε το @SUBSCRIBE@ και +διαγραφείτε από τις ειδοποιήσεις της σελίδας ή +φακέλου. + +-- +Αυτό το μήνυμα παράχθηκε απο το DokuWiki στην +διεύθυνση @DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/el/subscr_form.txt b/inc/lang/el/subscr_form.txt new file mode 100644 index 000000000..c21a29a9a --- /dev/null +++ b/inc/lang/el/subscr_form.txt @@ -0,0 +1,3 @@ +====== Διαχείριση Εγγραφών σε Ειδοποιήσεις ====== + +Εδώ μπορείτε να διαχειριστείτε τις εγγραφές σας στις ειδοποιήσεις για αλλαγές στην τρέχουσα σελίδα και φάκελο.
\ No newline at end of file diff --git a/inc/lang/el/subscr_list.txt b/inc/lang/el/subscr_list.txt new file mode 100644 index 000000000..f5cb8023d --- /dev/null +++ b/inc/lang/el/subscr_list.txt @@ -0,0 +1,21 @@ +Χαίρετε! + +Η σελίδα @PAGE@ στο @TITLE@ άλλαξε. + +Κάποιες σελίδες στον φάκελο @PAGE@ του wiki +@TITLE@ έχουν αλλάξει. +Ορίστε οι αλλαγμένες σελίδες: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Για να σταματήσουν αυτές οι ειδοποιήσεις συνδεθείτε +στο wiki στην διεύθυνση @DOKUWIKIURL@ και στην +συνέχεια επισκεφθείτε το @SUBSCRIBE@ και +διαγραφείτε από τις ειδοποιήσεις της σελίδας ή +φακέλου. + +-- +Αυτό το μήνυμα παράχθηκε απο το DokuWiki στην +διεύθυνση @DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/el/subscr_single.txt b/inc/lang/el/subscr_single.txt new file mode 100644 index 000000000..9815cc0bb --- /dev/null +++ b/inc/lang/el/subscr_single.txt @@ -0,0 +1,23 @@ +Χαίρετε! + +Η σελίδα @PAGE@ στο @TITLE@ άλλαξε. +Ορίστε οι αλλαγές: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- +Ημερομηνία : @DATE@ +Χρήστης : @USER@ +Περίληψη αλλαγών: @SUMMARY@ +Παλιά έκδοση: @OLDPAGE@ +Νέα έκδοση: @NEWPAGE@ + +Για να σταματήσουν αυτές οι ειδοποιήσεις συνδεθείτε +στο wiki στην διεύθυνση @DOKUWIKIURL@ και στην +συνέχεια επισκεφθείτε το @SUBSCRIBE@ και +διαγραφείτε από τις ειδοποιήσεις της σελίδας ή +φακέλου. + +-- +Αυτό το μήνυμα παράχθηκε απο το DokuWiki στην +διεύθυνση @DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/el/wordblock.txt b/inc/lang/el/wordblock.txt deleted file mode 100644 index b54e8ef77..000000000 --- a/inc/lang/el/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== Εντοπίστηκε SPAM ====== - -Οι αλλαγές σας **δεν** αποθηκεύτηκαν επειδή βρέθηκε τουλάχιστον μία μη αποδεκτή λέξη. Εάν προσπαθήσατε να προσθέσετε spam σε αυτό το wiki -- κακώς! Εάν πιστεύετε ότι αυτό δεν είναι σωστό, απευθυνθείτε στον διαχειριστή της εφαρμογής. - diff --git a/inc/lang/en/lang.php b/inc/lang/en/lang.php index cf5173d05..5414f7a88 100644 --- a/inc/lang/en/lang.php +++ b/inc/lang/en/lang.php @@ -39,10 +39,7 @@ $lang['btn_delete'] = 'Delete'; $lang['btn_back'] = 'Back'; $lang['btn_backlink'] = "Backlinks"; $lang['btn_backtomedia'] = 'Back to Mediafile Selection'; -$lang['btn_subscribe'] = 'Subscribe Page Changes'; -$lang['btn_unsubscribe'] = 'Unsubscribe Page Changes'; -$lang['btn_subscribens'] = 'Subscribe Namespace Changes'; -$lang['btn_unsubscribens'] = 'Unsubscribe Namespace Changes'; +$lang['btn_subscribe'] = 'Manage Subscriptions'; $lang['btn_profile'] = 'Update Profile'; $lang['btn_reset'] = 'Reset'; $lang['btn_resendpwd'] = 'Send new password'; @@ -103,7 +100,7 @@ $lang['lockedby'] = 'Currently locked by'; $lang['lockexpire'] = 'Lock expires at'; $lang['willexpire'] = 'Your lock for editing this page is about to expire in a minute.\nTo avoid conflicts use the preview button to reset the locktimer.'; -$lang['notsavedyet'] = 'Unsaved changes will be lost.\nReally continue?'; +$lang['js']['notsavedyet'] = "Unsaved changes will be lost."; $lang['rssfailed'] = 'An error occurred while fetching this feed: '; $lang['nothingfound']= 'Nothing was found.'; @@ -122,6 +119,7 @@ $lang['deletefail'] = '"%s" couldn\'t be deleted - check permissions.'; $lang['mediainuse'] = 'The file "%s" hasn\'t been deleted - it is still in use.'; $lang['namespaces'] = 'Namespaces'; $lang['mediafiles'] = 'Available files in'; +$lang['accessdenied'] = 'You are not allowed to view this page.'; $lang['js']['searchmedia'] = 'Search for files'; $lang['js']['keepopen'] = 'Keep window open on selection'; @@ -132,6 +130,28 @@ $lang['mediaroot'] = 'root'; $lang['mediaupload'] = 'Upload a file to the current namespace here. To create subnamespaces, prepend them to your "Upload as" filename separated by colons.'; $lang['mediaextchange'] = 'Filextension changed from .%s to .%s!'; +$lang['js']['mediatitle'] = 'Link settings'; +$lang['js']['mediadisplay'] = 'Link type'; +$lang['js']['mediaalign'] = 'Alignment'; +$lang['js']['mediasize'] = 'Image size'; +$lang['js']['mediatarget'] = 'Link target'; +$lang['js']['mediaclose'] = 'Close'; +$lang['js']['mediainsert'] = 'Insert'; +$lang['js']['mediadisplayimg'] = 'Show the image.'; +$lang['js']['mediadisplaylnk'] = 'Show only the link.'; +$lang['js']['mediasmall'] = 'Small version'; +$lang['js']['mediamedium'] = 'Medium version'; +$lang['js']['medialarge'] = 'Large version'; +$lang['js']['mediaoriginal'] = 'Original version'; +$lang['js']['medialnk'] = 'Link to detail page'; +$lang['js']['mediadirect'] = 'Direct link to original'; +$lang['js']['medianolnk'] = 'No link'; +$lang['js']['medianolink'] = 'Do not link the image'; +$lang['js']['medialeft'] = 'Align the image on the left.'; +$lang['js']['mediaright'] = 'Align the image on the right.'; +$lang['js']['mediacenter'] = 'Align the image in the middle.'; +$lang['js']['medianoalign'] = 'Use no align.'; + $lang['reference'] = 'References for'; $lang['ref_inuse'] = 'The file can\'t be deleted, because it\'s still used by the following pages:'; $lang['ref_hidden'] = 'Some references are on pages you don\'t have permission to read'; @@ -143,6 +163,7 @@ $lang['current'] = 'current'; $lang['yours'] = 'Your Version'; $lang['diff'] = 'Show differences to current revisions'; $lang['diff2'] = 'Show differences between selected revisions'; +$lang['difflink'] = 'Link to this comparison view'; $lang['line'] = 'Line'; $lang['breadcrumb'] = 'Trace'; $lang['youarehere'] = 'You are here'; @@ -158,6 +179,7 @@ $lang['download'] = 'Download Snippet'; $lang['mail_newpage'] = 'page added:'; $lang['mail_changed'] = 'page changed:'; +$lang['mail_subscribe_list'] = 'pages changed in namespace:'; $lang['mail_new_user'] = 'new user:'; $lang['mail_upload'] = 'file uploaded:'; @@ -212,11 +234,24 @@ $lang['img_format'] = 'Format'; $lang['img_camera'] = 'Camera'; $lang['img_keywords']= 'Keywords'; -$lang['subscribe_success'] = 'Added %s to subscription list for %s'; -$lang['subscribe_error'] = 'Error adding %s to subscription list for %s'; -$lang['subscribe_noaddress']= 'There is no address associated with your login, you cannot be added to the subscription list'; -$lang['unsubscribe_success']= 'Removed %s from subscription list for %s'; -$lang['unsubscribe_error'] = 'Error removing %s from subscription list for %s'; +$lang['subscr_subscribe_success'] = 'Added %s to subscription list for %s'; +$lang['subscr_subscribe_error'] = 'Error adding %s to subscription list for %s'; +$lang['subscr_subscribe_noaddress']= 'There is no address associated with your login, you cannot be added to the subscription list'; +$lang['subscr_unsubscribe_success']= 'Removed %s from subscription list for %s'; +$lang['subscr_unsubscribe_error'] = 'Error removing %s from subscription list for %s'; +$lang['subscr_already_subscribed'] = '%s is already subscribed to %s'; +$lang['subscr_not_subscribed'] = '%s is not subscribed to %s'; +// Manage page for subscriptions +$lang['subscr_m_not_subscribed'] = 'You are currently not subscribed to the current page or namespace.'; +$lang['subscr_m_new_header'] = 'Add subscription'; +$lang['subscr_m_current_header'] = 'Current subscriptions'; +$lang['subscr_m_unsubscribe'] = 'Unsubscribe'; +$lang['subscr_m_subscribe'] = 'Subscribe'; +$lang['subscr_m_receive'] = 'Receive'; +$lang['subscr_style_every'] = 'email on every change'; +$lang['subscr_style_digest'] = 'digest email of changes for each page (every %.2f days)'; +$lang['subscr_style_list'] = 'list of changed pages since last email (every %.2f days)'; + /* auth.class language support */ $lang['authmodfailed'] = 'Bad user authentication configuration. Please inform your Wiki Admin.'; @@ -249,6 +284,7 @@ $lang['i_pol1'] = 'Public Wiki (read for everyone, write and upload for re $lang['i_pol2'] = 'Closed Wiki (read, write, upload for registered users only)'; $lang['i_retry'] = 'Retry'; +$lang['i_license'] = 'Please choose the license you want to put your content under:'; $lang['mu_intro'] = 'Here you can upload multiple files at once. Click the browse button to add them to the queue. Press upload when done.'; $lang['js']['mu_btn'] = 'Upload multiple files at once'; @@ -277,4 +313,7 @@ $lang['hours'] = '%d hours ago'; $lang['minutes'] = '%d minutes ago'; $lang['seconds'] = '%d seconds ago'; +$lang['wordblock'] = 'Your change was not saved because it contains blocked text (spam).'; + + //Setup VIM: ex: et ts=2 enc=utf-8 : diff --git a/inc/lang/en/subscr_digest.txt b/inc/lang/en/subscr_digest.txt new file mode 100644 index 000000000..fac8564bd --- /dev/null +++ b/inc/lang/en/subscr_digest.txt @@ -0,0 +1,20 @@ +Hello! + +The page @PAGE@ in the @TITLE@ wiki changed. +Here are the changes: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Old Revision: @OLDPAGE@ +New Revision: @NEWPAGE@ + +To cancel the page notifications, log into the wiki at +@DOKUWIKIURL@ then visit +@SUBSCRIBE@ +and unsubscribe page and/or namespace changes. + +-- +This mail was generated by DokuWiki at +@DOKUWIKIURL@ diff --git a/inc/lang/en/subscr_form.txt b/inc/lang/en/subscr_form.txt new file mode 100644 index 000000000..d606508c6 --- /dev/null +++ b/inc/lang/en/subscr_form.txt @@ -0,0 +1,3 @@ +====== Subscription Management ====== + +This page allows you to manage your subscriptions for the current page and namespace. diff --git a/inc/lang/en/subscr_list.txt b/inc/lang/en/subscr_list.txt new file mode 100644 index 000000000..efe27d866 --- /dev/null +++ b/inc/lang/en/subscr_list.txt @@ -0,0 +1,17 @@ +Hello! + +Pages in the namespace @PAGE@ of the @TITLE@ wiki changed. +Here are the changed pages: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +To cancel the page notifications, log into the wiki at +@DOKUWIKIURL@ then visit +@SUBSCRIBE@ +and unsubscribe page and/or namespace changes. + +-- +This mail was generated by DokuWiki at +@DOKUWIKIURL@ diff --git a/inc/lang/en/subscribermail.txt b/inc/lang/en/subscr_single.txt index 673c4c32a..f2abe6d77 100644 --- a/inc/lang/en/subscribermail.txt +++ b/inc/lang/en/subscr_single.txt @@ -18,6 +18,6 @@ To cancel the page notifications, log into the wiki at @NEWPAGE@ and unsubscribe page and/or namespace changes. --- +-- This mail was generated by DokuWiki at @DOKUWIKIURL@ diff --git a/inc/lang/en/wordblock.txt b/inc/lang/en/wordblock.txt deleted file mode 100644 index f0f7d759d..000000000 --- a/inc/lang/en/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== SPAM blocked ====== - -Your changes were **not** saved because it contains one or more blocked words. If you tried to spam the Wiki -- Bad dog! If you think this is an error, contact the administrator of this Wiki. - diff --git a/inc/lang/eo/adminplugins.txt b/inc/lang/eo/adminplugins.txt index ed2949b10..769a8c538 100644 --- a/inc/lang/eo/adminplugins.txt +++ b/inc/lang/eo/adminplugins.txt @@ -1 +1 @@ -===== Ekstra kromaĵojn =====
\ No newline at end of file +===== Eksteraj kromaĵoj =====
\ No newline at end of file diff --git a/inc/lang/eo/lang.php b/inc/lang/eo/lang.php index e2c25ae43..1d60fee62 100644 --- a/inc/lang/eo/lang.php +++ b/inc/lang/eo/lang.php @@ -46,9 +46,6 @@ $lang['btn_back'] = 'Retroiri'; $lang['btn_backlink'] = 'Retroligoj'; $lang['btn_backtomedia'] = 'Retroiri al elekto de dosiero'; $lang['btn_subscribe'] = 'Aliĝi al paĝaj modifoj'; -$lang['btn_unsubscribe'] = 'Malaliĝi al paĝaj modifoj'; -$lang['btn_subscribens'] = 'Aliĝi al nomspacaj modifoj'; -$lang['btn_unsubscribens'] = 'Malaliĝi al nomspacaj modifoj'; $lang['btn_profile'] = 'Ĝisdatigi profilon'; $lang['btn_reset'] = 'Rekomenci'; $lang['btn_resendpwd'] = 'Sendi novan pasvorton'; @@ -65,7 +62,7 @@ $lang['passchk'] = 'plian fojon'; $lang['remember'] = 'Rememoru min'; $lang['fullname'] = 'Kompleta nomo'; $lang['email'] = 'Retpoŝto'; -$lang['register'] = 'Registro'; +$lang['register'] = 'Registriĝi'; $lang['profile'] = 'Uzanto-profilo'; $lang['badlogin'] = 'Pardonu, uzant-nomo aŭ pasvorto estis erara.'; $lang['minoredit'] = 'Etaj modifoj'; @@ -79,7 +76,7 @@ $lang['regmailfail'] = 'Ŝajne okazis eraro dum elsendo de la pasvorto $lang['regbadmail'] = 'Entajpita retpoŝta adreso ne ŝajnas valida. Se vi pensas, ke tio estas eraro, kontaktu la administranton.'; $lang['regbadpass'] = 'La du pasvortoj ne samas, bonvolu provi refoje.'; $lang['regpwmail'] = 'Via DokuWiki-pasvorto'; -$lang['reghere'] = 'Se vi ne havas konton, do vi povos akiri ĝin'; +$lang['reghere'] = 'Se vi ne havas konton, do vi povas akiri ĝin'; $lang['profna'] = 'Tiu ĉi vikio ne ebligas modifon en la profiloj.'; $lang['profnochange'] = 'Neniu ŝanĝo, nenio farinda.'; $lang['profnoempty'] = 'Malplena nomo aŭ retadreso ne estas permesataj.'; @@ -102,7 +99,7 @@ $lang['txt_overwrt'] = 'Anstataŭigi ekzistantan dosieron'; $lang['lockedby'] = 'Nune ŝlosita de'; $lang['lockexpire'] = 'Ŝlosado ĉesos en'; $lang['willexpire'] = 'Vi povos redakti ĉi tiun paĝon post unu minuto.\nSe vi volas nuligi tempkontrolon de la ŝlosado, do premu butonon "Antaŭrigardi".'; -$lang['notsavedyet'] = 'Ne konservitaj modifoj perdiĝos.\nĈu vi certe volas daŭrigi la procezon?'; +$lang['js']['notsavedyet'] = "Ne konservitaj modifoj perdiĝos.\nĈu vi certe volas daŭrigi la procezon?"; $lang['rssfailed'] = 'Okazis eraro dum ricevado de la novaĵ-fluo: '; $lang['nothingfound'] = 'Ankoraŭ nenio troviĝas tie ĉi.'; $lang['mediaselect'] = 'Elekto de aŭdvidaĵa dosiero'; @@ -123,6 +120,27 @@ $lang['mediafiles'] = 'Disponeblaj dosieroj'; $lang['js']['searchmedia'] = 'Serĉi dosierojn'; $lang['js']['keepopen'] = 'Tenu la fenestron malfermata dum elekto'; $lang['js']['hidedetails'] = 'Kaŝi detalojn'; +$lang['js']['mediatitle'] = 'Ligilaj agordoj'; +$lang['js']['mediadisplay'] = 'Ligila tipo'; +$lang['js']['mediaalign'] = 'Poziciigo'; +$lang['js']['mediasize'] = 'Bildgrandeco'; +$lang['js']['mediatarget'] = 'Ligila celo'; +$lang['js']['mediaclose'] = 'Fermi'; +$lang['js']['mediainsert'] = 'Enmeti'; +$lang['js']['mediadisplayimg'] = 'Montri la bildon.'; +$lang['js']['mediadisplaylnk'] = 'Montri nur la ligilon.'; +$lang['js']['mediasmall'] = 'Malgranda versio'; +$lang['js']['mediamedium'] = 'Meza versio'; +$lang['js']['medialarge'] = 'Granda versio'; +$lang['js']['mediaoriginal'] = 'Origina versio'; +$lang['js']['medialnk'] = 'Ligilo al detala paĝo'; +$lang['js']['mediadirect'] = 'Rekta ligilo al la origino'; +$lang['js']['medianolnk'] = 'Neniu ligilo'; +$lang['js']['medianolink'] = 'Ne ligi la bildon'; +$lang['js']['medialeft'] = 'Meti la bildon maldekstren.'; +$lang['js']['mediaright'] = 'Meti la bildon dekstren.'; +$lang['js']['mediacenter'] = 'Meti la bildon mezen.'; +$lang['js']['medianoalign'] = 'Ne uzi poziciigon.'; $lang['js']['nosmblinks'] = 'Tio ĉi nur funkcias en la Vindozaĉa "Microsoft Internet Explorer". Vi ankoraŭ povas kopii kaj almeti la ligilon.'; $lang['js']['linkwiz'] = 'Ligil-Asistanto'; @@ -158,6 +176,7 @@ $lang['noflash'] = 'La <a href="http://www.adobe.com/products/flas $lang['download'] = 'Elŝuti eltiraĵon'; $lang['mail_newpage'] = 'paĝo aldonita:'; $lang['mail_changed'] = 'paĝo modifita:'; +$lang['mail_subscribe_list'] = 'ŝanĝitaj paĝoj en nomspaco:'; $lang['mail_new_user'] = 'Nova uzanto:'; $lang['mail_upload'] = 'dosiero alŝutita:'; $lang['qb_bold'] = 'Dika teksto'; @@ -200,11 +219,22 @@ $lang['img_copyr'] = 'Kopirajtoj'; $lang['img_format'] = 'Formato'; $lang['img_camera'] = 'Kamerao'; $lang['img_keywords'] = 'Ŝlosilvortoj'; -$lang['subscribe_success'] = '%s estis aldonita al dissendolisto por %s'; -$lang['subscribe_error'] = 'Estas eraro je aldono de %s al dissendolisto por %s'; -$lang['subscribe_noaddress'] = 'Estas neniu retadreso asociita al via identiĝ-nomo, do vi ne povas esti aldonata al la dissendolisto.'; -$lang['unsubscribe_success'] = '%s estas forigita de la dissendolisto por %s'; -$lang['unsubscribe_error'] = 'Estas eraro je forigo de %s el dissendolisto por %s'; +$lang['subscr_subscribe_success'] = 'Aldonis %s al la abonlisto por %s'; +$lang['subscr_subscribe_error'] = 'Eraro dum aldono de %s al la abonlisto por %s'; +$lang['subscr_subscribe_noaddress'] = 'Ne estas adreso ligita al via ensaluto, ne eblas aldoni vin al la abonlisto'; +$lang['subscr_unsubscribe_success'] = 'Forigis %s de la abonlisto por %s'; +$lang['subscr_unsubscribe_error'] = 'Eraro dum forigo de %s de la abonlisto por %s'; +$lang['subscr_already_subscribed'] = '%s jam estas abonanta al %s'; +$lang['subscr_not_subscribed'] = '%s ne abonas al %s'; +$lang['subscr_m_not_subscribed'] = 'Momente vi ne abonas la aktualan paĝon aŭ nomspacon.'; +$lang['subscr_m_new_header'] = 'Aldoni abonon'; +$lang['subscr_m_current_header'] = 'Momentaj abonoj'; +$lang['subscr_m_unsubscribe'] = 'Malaboni'; +$lang['subscr_m_subscribe'] = 'Aboni'; +$lang['subscr_m_receive'] = 'Ricevi'; +$lang['subscr_style_every'] = 'retpoŝtaĵo pro ĉiu ŝanĝo'; +$lang['subscr_style_digest'] = 'kolekta retpoŝtaĵo de ŝanĝoj por ĉiu paĝo'; +$lang['subscr_style_list'] = 'listo de ŝanĝitaj paĝoj ekde la lasta retpoŝtaĵo'; $lang['authmodfailed'] = 'Malbona agordo por identigi la uzanton. Bonvolu informi la administranton de la vikio.'; $lang['authtempfail'] = 'La identigo de via uzantonomo estas intertempe maldisponebla. Se tiu ĉi situacio daŭros, bonvolu informi la adminstranton de la vikio.'; $lang['i_chooselang'] = 'Elektu vian lingvon'; @@ -252,3 +282,4 @@ $lang['days'] = 'antaŭ %d tagoj'; $lang['hours'] = 'antaŭ %d horoj'; $lang['minutes'] = 'antaŭ %d minutoj'; $lang['seconds'] = 'antaŭ %d sekundoj'; +$lang['wordblock'] = 'Via ŝanĝo ne estis savita, ĉar ĝi enhavas blokitan tekston (spamon).'; diff --git a/inc/lang/eo/mailtext.txt b/inc/lang/eo/mailtext.txt index 5e83b324b..b2cb3b49d 100644 --- a/inc/lang/eo/mailtext.txt +++ b/inc/lang/eo/mailtext.txt @@ -12,5 +12,5 @@ Uzulo: @USER@ @DIFF@ -- -Tiu ĉi mesaĝo estis kreata de DokuWiki, kiu lokiĝas tie: +Tiu ĉi mesaĝo estis kreita de DokuWiki, kiu lokiĝas tie: @DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/eo/norev.txt b/inc/lang/eo/norev.txt index 6dffbaa1c..f17d8df7c 100644 --- a/inc/lang/eo/norev.txt +++ b/inc/lang/eo/norev.txt @@ -1,3 +1,3 @@ -====== Tia revizio ne ekzistas ====== +====== Tiu revizio ne ekzistas ====== La elektita revizio ne ekzistas. Premu butonon ''Malnovaj revizioj'', por vidi liston de malnovaj revizioj de la dokumento.
\ No newline at end of file diff --git a/inc/lang/eo/password.txt b/inc/lang/eo/password.txt index f08e7426e..bb854a926 100644 --- a/inc/lang/eo/password.txt +++ b/inc/lang/eo/password.txt @@ -1,10 +1,10 @@ Saluton @FULLNAME@! -Jen via uzuldatenoj por @TITLE@ ĉe @DOKUWIKIURL@ +Jen via uzantodatenoj por @TITLE@ ĉe @DOKUWIKIURL@ Ensalutnomo : @LOGIN@ Pasvorto : @PASSWORD@ -- -Tiu ĉi mesaĝo estis kreata de DokuWiki ĉe +Tiu ĉi mesaĝo estis kreita de DokuWiki ĉe @DOKUWIKIURL@ diff --git a/inc/lang/eo/preview.txt b/inc/lang/eo/preview.txt index 784f693e6..ac2e75d00 100644 --- a/inc/lang/eo/preview.txt +++ b/inc/lang/eo/preview.txt @@ -1,3 +1,3 @@ ====== Antaŭrigardo ====== -Tiu ĉi estas antaŭrigardo pri kia estos via teksto. Memoru: ĝi ankoraŭ **ne estas konservita**!
\ No newline at end of file +Tiu ĉi estas antaŭrigardo de redaktita teksto. Memoru: ĝi ankoraŭ **ne estas konservita**!
\ No newline at end of file diff --git a/inc/lang/eo/recent.txt b/inc/lang/eo/recent.txt index e03144668..ffd9936e2 100644 --- a/inc/lang/eo/recent.txt +++ b/inc/lang/eo/recent.txt @@ -1,3 +1,3 @@ ====== Freŝaj Ŝanĝoj ====== -La jenaj paĝoj estis ŝanĝitaj antaŭ malmulta tempo.
\ No newline at end of file +La jenaj paĝoj estis ŝanĝitaj antaŭ nelonga tempo.
\ No newline at end of file diff --git a/inc/lang/eo/registermail.txt b/inc/lang/eo/registermail.txt index c832eca42..e5b1da902 100644 --- a/inc/lang/eo/registermail.txt +++ b/inc/lang/eo/registermail.txt @@ -10,5 +10,5 @@ IP-Adreso: @IPADDRESS@ Provizanto: @HOSTNAME@ -- -Tiu ĉi mesaĝo estis kreata de DokuWiki ĉe +Tiu ĉi mesaĝo estis kreita de DokuWiki ĉe @DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/eo/subscr_digest.txt b/inc/lang/eo/subscr_digest.txt new file mode 100644 index 000000000..d6bc69887 --- /dev/null +++ b/inc/lang/eo/subscr_digest.txt @@ -0,0 +1,20 @@ +Saluton! + +La paĝo @PAGE@ en la vikio @TITLE@ ŝanĝiĝis. +Jen sekvas la ŝanĝoj: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Malnova versio: @OLDPAGE@ +Nova versio: @NEWPAGE@ + +Por nuligi la paĝinformojn, ensalutu la vikion ĉe +@DOKUWIKIURL@, poste iru al +@SUBSCRIBE@ +kaj malabonu la paĝajn kaj/aŭ nomspacajn ŝanĝojn. + +-- +Tiu retpoŝtaĵo kreiĝis de DokuWiki ĉe +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/eo/subscr_form.txt b/inc/lang/eo/subscr_form.txt new file mode 100644 index 000000000..259b21045 --- /dev/null +++ b/inc/lang/eo/subscr_form.txt @@ -0,0 +1,3 @@ +====== Abona administrado ====== + +Tiu paĝo lasas vin administri viajn abonojn por la aktualaj paĝo kaj nomspaco.
\ No newline at end of file diff --git a/inc/lang/eo/subscr_list.txt b/inc/lang/eo/subscr_list.txt new file mode 100644 index 000000000..175e3f3d2 --- /dev/null +++ b/inc/lang/eo/subscr_list.txt @@ -0,0 +1,17 @@ +Saluton! + +Paĝoj en la nomspaco @PAGE@ en la vikio @TITLE@ ŝanĝiĝis. +Jen sekvas la ŝanĝitaj paĝoj: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Por nuligi la paĝinformojn, ensalutu la vikion ĉe +@DOKUWIKIURL@, poste iru al +@SUBSCRIBE@ +kaj malabonu la paĝajn kaj/aŭ nomspacajn ŝanĝojn. + +-- +Tiu retpoŝtaĵo kreiĝis de DokuWiki ĉe +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/eo/subscr_single.txt b/inc/lang/eo/subscr_single.txt new file mode 100644 index 000000000..a1f483570 --- /dev/null +++ b/inc/lang/eo/subscr_single.txt @@ -0,0 +1,23 @@ +Saluton! + +La paĝo @PAGE@ en la vikio @TITLE@ ŝanĝiĝis. +Jen sekvas la ŝanĝoj: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Dato : @DATE@ +Uzanto : @USER@ +Modifa resumo: @SUMMARY@ +Malnova versio: @OLDPAGE@ +Nova versio: @NEWPAGE@ + +Por nuligi la paĝinformojn, ensalutu la vikion ĉe +@DOKUWIKIURL@, poste iru al +@NEWPAGE@ +kaj malabonu la paĝajn kaj/aŭ nomspacajn ŝanĝojn. + +-- +Tiu retpoŝtaĵo kreiĝis de DokuWiki ĉe +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/eo/wordblock.txt b/inc/lang/eo/wordblock.txt deleted file mode 100644 index 64bb19e5c..000000000 --- a/inc/lang/eo/wordblock.txt +++ /dev/null @@ -1,3 +0,0 @@ -====== SPAMO estis blokita ====== - -Viaj redaktoj ne estas konservitaj, ĉar en la teksto estis trovitaj unu aŭ kelkaj malpermesindaj vortoj, ŝajnante spamo. Se vi pensas, ke tio estas eraro, bonvolu kontakti la administranton de la vikio.
\ No newline at end of file diff --git a/inc/lang/es/lang.php b/inc/lang/es/lang.php index 9d4995c52..28da1dfee 100644 --- a/inc/lang/es/lang.php +++ b/inc/lang/es/lang.php @@ -22,6 +22,8 @@ * @author Marvin Ortega <maty1206@maryanlinux.com> * @author Daniel Castro Alvarado <dancas2@gmail.com> * @author Fernando J. Gómez <fjgomez@gmail.com> + * @author Victor Castelan <victorcastelan@gmail.com> + * @author Mauro Javier Giamberardino <mgiamberardino@gmail.com> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -55,9 +57,6 @@ $lang['btn_back'] = 'Atrás'; $lang['btn_backlink'] = 'Enlaces anteriores'; $lang['btn_backtomedia'] = 'Volver a la selección de archivos multimedia'; $lang['btn_subscribe'] = 'Suscribirse a cambios de la página'; -$lang['btn_unsubscribe'] = 'Cancelar suscripción a cambios de la página'; -$lang['btn_subscribens'] = 'Suscribirse a cambios del espacio de nombres'; -$lang['btn_unsubscribens'] = 'Cancelar suscripción a cambios del espacio de nombres'; $lang['btn_profile'] = 'Actualizar perfil'; $lang['btn_reset'] = 'Restablecer'; $lang['btn_resendpwd'] = 'Enviar nueva contraseña'; @@ -111,7 +110,37 @@ $lang['txt_overwrt'] = 'Sobreescribir archivo existente'; $lang['lockedby'] = 'Actualmente bloqueado por'; $lang['lockexpire'] = 'El bloqueo expira en'; $lang['willexpire'] = 'Tu bloqueo para editar esta página expira en un minuto.\nPara evitar conflictos usa el botón previsualizar para reiniciar el contador de tiempo.'; -$lang['notsavedyet'] = 'Los cambios que no se han guardado se perderán.\n¿Realmente quieres continuar?'; +$lang['js']['notsavedyet'] = 'Los cambios que no se han guardado se perderán. +¿Realmente quieres continuar?'; +$lang['js']['searchmedia'] = 'Buscar archivos'; +$lang['js']['keepopen'] = 'Mantener la ventana abierta luego de seleccionar'; +$lang['js']['hidedetails'] = 'Ocultar detalles'; +$lang['js']['mediatitle'] = 'Configuración del vínculo'; +$lang['js']['mediadisplay'] = 'Tipo de vínculo'; +$lang['js']['mediaalign'] = 'Alineación'; +$lang['js']['mediasize'] = 'Tamaño de la imagen'; +$lang['js']['mediatarget'] = 'Destino del vínculo'; +$lang['js']['mediaclose'] = 'Cerrar'; +$lang['js']['mediainsert'] = 'Insertar'; +$lang['js']['mediadisplayimg'] = 'Mostrar la imagen.'; +$lang['js']['mediadisplaylnk'] = 'Mostrar solo el vínculo.'; +$lang['js']['mediasmall'] = 'Versión en tamaño pequeño'; +$lang['js']['mediamedium'] = 'Versión en tamaño medio'; +$lang['js']['medialarge'] = 'Versión en tamaño grande'; +$lang['js']['mediaoriginal'] = 'Versión original'; +$lang['js']['medialnk'] = 'Vínculo a la pagina de descripción'; +$lang['js']['mediadirect'] = 'Vínculo al original'; +$lang['js']['medianolnk'] = 'Sin vínculo'; +$lang['js']['medianolink'] = 'No vincular la imagen'; +$lang['js']['medialeft'] = 'Alinear imagen a la izquierda'; +$lang['js']['mediaright'] = 'Alinear imagen a la derecha.'; +$lang['js']['mediacenter'] = 'Alinear imagen en el centro.'; +$lang['js']['nosmblinks'] = 'El enlace a recursos compartidos de Windows sólo funciona en Microsoft Internet Explorer. +Lo que sí puedes hacer es copiar y pegar el enlace.'; +$lang['js']['linkwiz'] = 'Asistente de enlaces'; +$lang['js']['linkto'] = 'Enlazar a:'; +$lang['js']['del_confirm'] = '¿Quieres realmente borrar lo seleccionado?'; +$lang['js']['mu_btn'] = 'Subir varios archivos a la vez'; $lang['rssfailed'] = 'Se ha producido un error mientras se leían los datos de este feed: '; $lang['nothingfound'] = 'No se ha encontrado nada.'; $lang['mediaselect'] = 'Archivos Multimedia'; @@ -129,15 +158,6 @@ $lang['deletefail'] = '"%s" no pudo ser borrado; verifique los permis $lang['mediainuse'] = 'El fichero "%s" no ha sido borrado, aún está en uso.'; $lang['namespaces'] = 'Espacios de nombres'; $lang['mediafiles'] = 'Ficheros disponibles en'; -$lang['js']['searchmedia'] = 'Buscar archivos'; -$lang['js']['keepopen'] = 'Mantener la ventana abierta luego de seleccionar'; -$lang['js']['hidedetails'] = 'Ocultar detalles'; -$lang['js']['nosmblinks'] = 'El enlace a recursos compartidos de Windows sólo funciona en Microsoft Internet Explorer. -Lo que sí puedes hacer es copiar y pegar el enlace.'; -$lang['js']['linkwiz'] = 'Asistente de enlaces'; -$lang['js']['linkto'] = 'Enlazar a:'; -$lang['js']['del_confirm'] = '¿Quieres realmente borrar lo seleccionado?'; -$lang['js']['mu_btn'] = 'Subir varios archivos a la vez'; $lang['mediausage'] = 'Use la siguiente sintaxis para hacer referencia a este fichero:'; $lang['mediaview'] = 'Ver el fichero original'; $lang['mediaroot'] = 'root'; @@ -167,6 +187,7 @@ $lang['noflash'] = 'Para mostrar este contenido es necesario el <a $lang['download'] = 'Descargar trozo de código fuente'; $lang['mail_newpage'] = 'página añadida:'; $lang['mail_changed'] = 'página cambiada:'; +$lang['mail_subscribe_list'] = 'páginas cambiadas en el espacio de nombre:'; $lang['mail_new_user'] = 'nuevo usuario:'; $lang['mail_upload'] = 'archivo subido:'; $lang['qb_bold'] = 'Negrita'; @@ -209,11 +230,22 @@ $lang['img_copyr'] = 'Copyright'; $lang['img_format'] = 'Formato'; $lang['img_camera'] = 'Cámara'; $lang['img_keywords'] = 'Palabras claves'; -$lang['subscribe_success'] = '%s ha sido añadido a la lista de notificación de cambios de %s'; -$lang['subscribe_error'] = 'Ha habido un error al agregar %s a la lista de notificación de cambios de %s'; -$lang['subscribe_noaddress'] = 'No hay ninguna dirección de correo electrónico asociada con tu nombre de usuario, no puedes ser añadido a la lista de notificación de cambios'; -$lang['unsubscribe_success'] = '%s ha sido eliminado de la lista de notificación de cambios de %s'; -$lang['unsubscribe_error'] = 'Ha habido un error al eliminar %s de la lista de notificación de cambios de %s'; +$lang['subscr_subscribe_success'] = 'Se agregó %s a las listas de suscripción para %s'; +$lang['subscr_subscribe_error'] = 'Error al agregar %s a las listas de suscripción para %s'; +$lang['subscr_subscribe_noaddress'] = 'No hay dirección asociada con tu registro, no se puede agregarte a la lista de suscripción'; +$lang['subscr_unsubscribe_success'] = 'Removido %s de la lista de suscripción para %s'; +$lang['subscr_unsubscribe_error'] = 'Error al remover %s de la lista de suscripción para %s'; +$lang['subscr_already_subscribed'] = '%s ya está suscrito a %s'; +$lang['subscr_not_subscribed'] = '%s no está suscrito a %s'; +$lang['subscr_m_not_subscribed'] = 'Actualmente no te encuentras suscrito a esta página o espacio de nombres'; +$lang['subscr_m_new_header'] = 'Agregar suscripción'; +$lang['subscr_m_current_header'] = 'Suscripciones actuales'; +$lang['subscr_m_unsubscribe'] = 'Darse de baja'; +$lang['subscr_m_subscribe'] = 'Suscribirse'; +$lang['subscr_m_receive'] = 'Recibir'; +$lang['subscr_style_every'] = 'enviar correo en cada cambio'; +$lang['subscr_style_digest'] = 'recopilar correo de cambios por cada página'; +$lang['subscr_style_list'] = 'lista de páginas con cambios desde el último correo'; $lang['authmodfailed'] = 'Está mal configurada la autenticación de usuarios. Por favor, avisa al administrador del wiki.'; $lang['authtempfail'] = 'La autenticación de usuarios no está disponible temporalmente. Si esta situación persiste, por favor avisa al administrador del wiki.'; $lang['i_chooselang'] = 'Elija su idioma'; diff --git a/inc/lang/es/subscr_digest.txt b/inc/lang/es/subscr_digest.txt new file mode 100644 index 000000000..df03fcafc --- /dev/null +++ b/inc/lang/es/subscr_digest.txt @@ -0,0 +1,20 @@ +Hola! + +La página @PAGE@ en @TITLE@ wiki ha cambiado. +Estos son los cambios: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Revisión Anterior: @OLDPAGE@ +Revisión Nueva: @NEWPAGE@ + +Para cancelar la página de notificaciones, entra a la wiki en +@DOKUWIKIURL@ luego visita +@SUBSCRIBE@ +y date de baja en la página y/o cambios en el espacio de nombre. + +-- +Este correo ha sido generado por DokuWiki en +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/es/subscr_form.txt b/inc/lang/es/subscr_form.txt new file mode 100644 index 000000000..3a8143c39 --- /dev/null +++ b/inc/lang/es/subscr_form.txt @@ -0,0 +1,3 @@ +====== Administrador de Suscripciones ====== + +Esta página te permite administrar tus suscripciones para la página actual y espacio de nombres.
\ No newline at end of file diff --git a/inc/lang/es/subscr_list.txt b/inc/lang/es/subscr_list.txt new file mode 100644 index 000000000..80e8dc8a1 --- /dev/null +++ b/inc/lang/es/subscr_list.txt @@ -0,0 +1,17 @@ +Hola! + +Las páginas en el espacio de nombres @PAGE@ en @TITLE@ wiki ha cambiado. +Estos son los cambios: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Para cancelar la página de notificaciones, entra a la wiki en +@DOKUWIKIURL@ luego visita +@SUBSCRIBE@ +y date de baja en la página y/o cambios en el espacio de nombre. + +-- +Este correo ha sido generado por DokuWiki en +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/es/subscr_single.txt b/inc/lang/es/subscr_single.txt new file mode 100644 index 000000000..e2a54c79f --- /dev/null +++ b/inc/lang/es/subscr_single.txt @@ -0,0 +1,23 @@ +Hola! + +La página @PAGE@ en @TITLE@ wiki ha cambiado. +Estos son los cambioss: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Fecha : @DATE@ +Usuario : @USER@ +Resúmen de edición: @SUMMARY@ +Revisión Anterior: @OLDPAGE@ +Nueva Revisión: @NEWPAGE@ + +Para cancelar la página de notificaciones, entra a la wiki en +@DOKUWIKIURL@ luego visita +@SUBSCRIBE@ +y date de baja en la página y/o cambios en el espacio de nombre. + +-- +Este correo ha sido generado por DokuWiki en +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/es/wordblock.txt b/inc/lang/es/wordblock.txt deleted file mode 100644 index 739a1b76b..000000000 --- a/inc/lang/es/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== SPAM bloqueado ====== - -Tus cambios **no** se han guardado porque contienen una o más palabras prohibidas. Si has intentado spamear el Wiki: ¡Perro malo! Si crees que es un error contacta con el administrador de este Wiki. - diff --git a/inc/lang/et/lang.php b/inc/lang/et/lang.php index 4d3f10bdc..ef540bb3d 100644 --- a/inc/lang/et/lang.php +++ b/inc/lang/et/lang.php @@ -150,7 +150,7 @@ $lang['lockedby'] = 'Praegu on selle lukustanud'; $lang['lockexpire'] = 'Lukustus aegub'; $lang['willexpire'] = 'Teie lukustus selle lehe toimetamisele aegub umbes minuti pärast.\nIgasugu probleemide vältimiseks kasuta eelvaate nuppu, et lukustusarvesti taas tööle panna.'; -$lang['notsavedyet'] = 'Sul on seal salvestamata muudatusi, mis kohe kõige kaduva teed lähevad.\nKas Sa ikka tahad edasi liikuda?'; +$lang['js']['notsavedyet'] = "Sul on seal salvestamata muudatusi, mis kohe kõige kaduva teed lähevad.\nKas Sa ikka tahad edasi liikuda?"; $lang['rssfailed'] = 'Sinu soovitud info ammutamisel tekkis viga: '; $lang['nothingfound']= 'Oops, aga mitte muhvigi ei leitud.'; diff --git a/inc/lang/et/wordblock.txt b/inc/lang/et/wordblock.txt deleted file mode 100644 index 65d0d6ac3..000000000 --- a/inc/lang/et/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== SPÄMM blokeeritud ====== - -Sinu muutusi kahjuks **ei** salvestatud kuna tekst sisaldab ühte või rohkem blokeeritud sõna. Kas Sa üritad Wikile spämmi saata -- oh sa põrsas! Kui aga arvad, et tegemist on eksitusega, siis suhtle Wiki administraatoriga. - diff --git a/inc/lang/eu/lang.php b/inc/lang/eu/lang.php index 8324e2587..a5f786654 100644 --- a/inc/lang/eu/lang.php +++ b/inc/lang/eu/lang.php @@ -91,7 +91,7 @@ $lang['txt_overwrt'] = 'Oraingo fitxategiaren gainean idatzi'; $lang['lockedby'] = 'Momentu honetan blokeatzen:'; $lang['lockexpire'] = 'Blokeaketa iraungitzen da:'; $lang['willexpire'] = 'Zure blokeaketa orri hau aldatzeko minutu batean iraungitzen da.\nGatazkak saihesteko, aurreikusi botoia erabili blokeaketa denboragailua berrabiarazteko.'; -$lang['notsavedyet'] = 'Gorde gabeko aldaketak galdu egingo dira.\nBenetan jarraitu nahi duzu?'; +$lang['js']['notsavedyet'] = "Gorde gabeko aldaketak galdu egingo dira.\nBenetan jarraitu nahi duzu?"; $lang['rssfailed'] = 'Errorea gertatu da feed hau irakurtzean:'; $lang['nothingfound'] = 'Ez da ezer aurkitu.'; $lang['mediaselect'] = 'Aukeratu Multimedia fitxategia'; diff --git a/inc/lang/eu/wordblock.txt b/inc/lang/eu/wordblock.txt deleted file mode 100644 index 0af3fb26c..000000000 --- a/inc/lang/eu/wordblock.txt +++ /dev/null @@ -1,3 +0,0 @@ -====== SPAMaren aurkako babesa ====== - -Zure aldaketak **ez** dira gorde aurrez debekatutako hitzak erabili dituzulako. Wiki-a spammeatzen saitu bazara... -- Aiss osobuko! (VS). Hau akats bat dela uste baduzu jarri arremanetan Wiki-aren administratzailearekin. diff --git a/inc/lang/fa/lang.php b/inc/lang/fa/lang.php index 1123efe13..c5be8e1c0 100644 --- a/inc/lang/fa/lang.php +++ b/inc/lang/fa/lang.php @@ -46,9 +46,6 @@ $lang['btn_back'] = 'عقب'; $lang['btn_backlink'] = 'پیوندهای به این صفحه'; $lang['btn_backtomedia'] = 'بازگشت به انتخاب فایل'; $lang['btn_subscribe'] = 'عضویت در تغییرات صفحه'; -$lang['btn_unsubscribe'] = 'لغو عضویت در تغییرات صفحه'; -$lang['btn_subscribens'] = 'عضویت در تغییرات فضاینام'; -$lang['btn_unsubscribens'] = 'عضویت در تغییرات فضاینام'; $lang['btn_profile'] = 'به روز رسانی پروفایل'; $lang['btn_reset'] = 'بازنشاندن'; $lang['btn_resendpwd'] = 'یک گذرواژهی جدید برای شما فرستاده شود'; @@ -102,7 +99,38 @@ $lang['txt_overwrt'] = 'بر روی فایل موجود بنویس'; $lang['lockedby'] = 'در حال حاضر قفل شده است'; $lang['lockexpire'] = 'قفل منقضی شده است'; $lang['willexpire'] = 'حالت قفل شما مدتی است منقضی شده است \n برای جلوگیری از تداخل دکمهی پیشنمایش را برای صفر شدن ساعت قفل بزنید.'; -$lang['notsavedyet'] = 'تغییرات ذخیره شده از بین خواهد رفت. \n میخواهید ادامه دهید؟'; +$lang['js']['notsavedyet'] = 'تغییرات ذخیره شده از بین خواهد رفت. + میخواهید ادامه دهید؟'; +$lang['js']['searchmedia'] = 'جستجو برای فایل'; +$lang['js']['keepopen'] = 'پنجره را ر زمان انتخاب باز نگهدار'; +$lang['js']['hidedetails'] = 'پتهان کردن جزییات'; +$lang['js']['mediatitle'] = 'تنظیمات پیوند'; +$lang['js']['mediadisplay'] = 'نوع پیوند'; +$lang['js']['mediaalign'] = 'همترازی'; +$lang['js']['mediasize'] = 'اندازه تصویر'; +$lang['js']['mediatarget'] = 'هدف پیوند'; +$lang['js']['mediaclose'] = 'بستن'; +$lang['js']['mediainsert'] = 'درج کردن'; +$lang['js']['mediadisplayimg'] = 'نمایش تصویر'; +$lang['js']['mediadisplaylnk'] = 'فقط پیوند را نمایش بده.'; +$lang['js']['mediasmall'] = 'نگارش کوچک'; +$lang['js']['mediamedium'] = 'نگارش متوسط'; +$lang['js']['medialarge'] = 'نگارش بزرگ'; +$lang['js']['mediaoriginal'] = 'نگارش اصلی'; +$lang['js']['medialnk'] = 'پیوند به صفحهی جزییات'; +$lang['js']['mediadirect'] = 'پیوند مستقیم به اصلی'; +$lang['js']['medianolnk'] = 'بدون پیوند'; +$lang['js']['medianolink'] = 'تصویر را پیوند نکن'; +$lang['js']['medialeft'] = 'تصویر را با چپ همتراز کن.'; +$lang['js']['mediaright'] = 'تصویر را با راست همتراز کن.'; +$lang['js']['mediacenter'] = 'تصویر را با وسط همتراز کن.'; +$lang['js']['medianoalign'] = 'همتراز نکن.'; +$lang['js']['nosmblinks'] = 'پیوند به Windows share فقط در اینترنتاکسپلورر قابل استفاده است. +شما میتوانید پیوندها رو کپی کنید.'; +$lang['js']['linkwiz'] = 'ویزارد پیوند'; +$lang['js']['linkto'] = 'پیوند به:'; +$lang['js']['del_confirm'] = 'واقعن تصمیم به حذف این موارد دارید؟'; +$lang['js']['mu_btn'] = 'ارسال همزمان چندین فایل '; $lang['rssfailed'] = 'بروز خطا در هنگام واکشی'; $lang['nothingfound'] = 'چیزی پیدا نشد'; $lang['mediaselect'] = 'فایلها'; @@ -120,15 +148,7 @@ $lang['deletefail'] = '«%s» حذف نمیشود، دسترسی $lang['mediainuse'] = 'فایل «%s» حذف نمیشود، چون هنوز در حال استفاده است.'; $lang['namespaces'] = 'فضاینام'; $lang['mediafiles'] = 'فایلهای موجود در'; -$lang['js']['searchmedia'] = 'جستجو برای فایل'; -$lang['js']['keepopen'] = 'پنجره را ر زمان انتخاب باز نگهدار'; -$lang['js']['hidedetails'] = 'پتهان کردن جزییات'; -$lang['js']['nosmblinks'] = 'پیوند به Windows share فقط در اینترنتاکسپلورر قابل استفاده است. -شما میتوانید پیوندها رو کپی کنید.'; -$lang['js']['linkwiz'] = 'ویزارد پیوند'; -$lang['js']['linkto'] = 'پیوند به:'; -$lang['js']['del_confirm'] = 'واقعن تصمیم به حذف این موارد دارید؟'; -$lang['js']['mu_btn'] = 'ارسال همزمان چندین فایل '; +$lang['accessdenied'] = 'شما اجازهی مشاهدهی این صفحه را ندارید.'; $lang['mediausage'] = 'برای ارجاع دادن به فایل از نگارش زیر استفاده کنید.'; $lang['mediaview'] = 'مشاهدهی فایل اصلی'; $lang['mediaroot'] = 'ریشه'; @@ -144,6 +164,7 @@ $lang['current'] = 'فعلی'; $lang['yours'] = 'نسخهی شما'; $lang['diff'] = 'تفاوتها را با نگارش کنونی نمایش بده.'; $lang['diff2'] = 'تفاوتها را با نگارش انتخابی نمایش بده.'; +$lang['difflink'] = 'پیوند به صفحهی تفاوتها'; $lang['line'] = 'خط'; $lang['breadcrumb'] = 'ردپا'; $lang['youarehere'] = 'محل شما'; @@ -158,6 +179,7 @@ $lang['noflash'] = 'برای نمایش محتویات <a href="ht $lang['download'] = 'دیافت فایل منقطع گردید'; $lang['mail_newpage'] = 'صفحه اضافه شد:'; $lang['mail_changed'] = 'صفحه تغییر داده شد:'; +$lang['mail_subscribe_list'] = 'صفحات تغییر داده شده در فضاینام'; $lang['mail_new_user'] = 'کاربر جدید:'; $lang['mail_upload'] = 'فایل ارسال شده:'; $lang['qb_bold'] = 'متن پُررنگ'; @@ -200,11 +222,22 @@ $lang['img_copyr'] = 'دارندهی حق تکثیر'; $lang['img_format'] = 'فرمت'; $lang['img_camera'] = 'دوربین'; $lang['img_keywords'] = 'واژههای کلیدی'; -$lang['subscribe_success'] = '%s با موفقیت به عضویت %s درآمد'; -$lang['subscribe_error'] = 'عضویت %s در %s با مشکل مواجه شد'; -$lang['subscribe_noaddress'] = 'هیچ آدرس ایمیلی ثبت نکردهاید و نمیتوانید عضو شوید'; -$lang['unsubscribe_success'] = '%s با موفقیت از عضویت %s خارج شد'; -$lang['unsubscribe_error'] = 'خارج کردن %s از عضویت %s با مشکل مواجه شد.'; +$lang['subscr_subscribe_success'] = '%s به لیست آبونه %s افزوده شد'; +$lang['subscr_subscribe_error'] = 'اشکال در افزودن %s به لیست آبونه %s'; +$lang['subscr_subscribe_noaddress'] = 'هیچ آدرسی برای این عضویت اضافه نشده است، شما نمیتوانید به لیست آبونه اضافه شوید'; +$lang['subscr_unsubscribe_success'] = '%s از لیست آبونه %s پاک شد'; +$lang['subscr_unsubscribe_error'] = 'اشکال در پاک کردن %s از لیست آبونه %s'; +$lang['subscr_already_subscribed'] = '%s پیشتر در %s آبونه شده است'; +$lang['subscr_not_subscribed'] = '%s در %s آبونه نشده است'; +$lang['subscr_m_not_subscribed'] = 'شما در این صفحه یا فضاینام آبونه نشدهاید'; +$lang['subscr_m_new_header'] = 'افزودن آبونه'; +$lang['subscr_m_current_header'] = 'آبونههای کنونی'; +$lang['subscr_m_unsubscribe'] = 'لغو آبونه'; +$lang['subscr_m_subscribe'] = 'آبونه شدن'; +$lang['subscr_m_receive'] = 'دریافت کردن'; +$lang['subscr_style_every'] = 'ارسال راینامه در تمامی تغییرات'; +$lang['subscr_style_digest'] = 'ارسال ایمیلهای فشرده برای تغییرات هر صفحه'; +$lang['subscr_style_list'] = 'لیست صفحات تغییر داده شده از آخرین راینامه'; $lang['authmodfailed'] = 'اشکال در نوع معتبرسازی کاربران، مدیر ویکی را باخبر سازید.'; $lang['authtempfail'] = 'معتبرسازی کابران موقتن مسدود میباشد. اگر این حالت پایدار بود، مدیر ویکی را باخبر سازید.'; $lang['i_chooselang'] = 'انتخاب زبان'; @@ -228,6 +261,7 @@ $lang['i_pol0'] = 'ویکی باز (همه میتوانند ب $lang['i_pol1'] = 'ویکی عمومی (همه میتوانند بخوانند، کاربران ثبت شده میتوانند بنویسند و فایل ارسال کنند)'; $lang['i_pol2'] = 'ویکی بسته (فقط کاربران ثبت شده میتوانند بخوانند، بنویسند و فایل ارسال کنند)'; $lang['i_retry'] = 'تلاش مجدد'; +$lang['i_license'] = 'لطفن مجوز این محتوا را وارد کنید:'; $lang['mu_intro'] = 'شما میتوانید چندین فایل را با یک حرکت ارسال کنید. روی دکمهی «بچر» کلیک کنید و فایلها را به صف ارسال اضافه نمایید. سپس دکمهی «ارسال» را فشار دهید. '; $lang['mu_gridname'] = 'نام فایل'; $lang['mu_gridsize'] = 'اندازه'; @@ -251,3 +285,4 @@ $lang['days'] = '%d روز پیش'; $lang['hours'] = '%d ساعت پیش'; $lang['minutes'] = '%d دقیقهی پیش'; $lang['seconds'] = '%d ثانیهی پیش'; +$lang['wordblock'] = 'تغییرات شما به دلیل داشتن محتوای مشکوک (مثل اسپم) ذخیره نشد.'; diff --git a/inc/lang/fa/subscr_digest.txt b/inc/lang/fa/subscr_digest.txt new file mode 100644 index 000000000..0ba4c898d --- /dev/null +++ b/inc/lang/fa/subscr_digest.txt @@ -0,0 +1,16 @@ +سلام، + +صفحهی @PAGE@ با عنوان @TITLE@ در ویکی تغییر کرد. +تغییرات عبارت است از: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +نگارش پیشین: @OLDPAGE@ +نگارش نو: @NEWPAGE@ + +برای از بین بردن آگاهیهای این صفحه، از طریق آدرس @DOKUWIKIURL@ وارد ویکی شده و صفحهی @SUBSCRIBE@ را مرور کنید و عضویت خود را از صفحه یا فضاینام پاک کنید. + +-- +این راینامه با نرمافزار DokuWiki در آدرس @DOKUWIKIURL@ ساخته شده است.
\ No newline at end of file diff --git a/inc/lang/fa/subscr_form.txt b/inc/lang/fa/subscr_form.txt new file mode 100644 index 000000000..39764d0a2 --- /dev/null +++ b/inc/lang/fa/subscr_form.txt @@ -0,0 +1,3 @@ +====== مدیریت عضویتها ====== + +این صفحه به شما امکان مدیریت عضویتتان را برای این صفحه یا فضاینام میدهد.
\ No newline at end of file diff --git a/inc/lang/fa/subscr_list.txt b/inc/lang/fa/subscr_list.txt new file mode 100644 index 000000000..92ac92b74 --- /dev/null +++ b/inc/lang/fa/subscr_list.txt @@ -0,0 +1,16 @@ +سلام، + +صفحههای فضاینام @PAGE@ با عنوان @TITLE@ در ویکی تغییر کرد. +تغییرات عبارت است از: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +نگارش پیشین: @OLDPAGE@ +نگارش نو: @NEWPAGE@ + +برای از بین بردن آگاهیهای این صفحه، از طریق آدرس @DOKUWIKIURL@ وارد ویکی شده و صفحهی @SUBSCRIBE@ را مرور کنید و عضویت خود را از صفحه یا فضاینام پاک کنید. + +-- +این راینامه با نرمافزار DokuWiki در آدرس @DOKUWIKIURL@ ساخته شده است.
\ No newline at end of file diff --git a/inc/lang/fa/subscr_single.txt b/inc/lang/fa/subscr_single.txt new file mode 100644 index 000000000..a0d2a5d49 --- /dev/null +++ b/inc/lang/fa/subscr_single.txt @@ -0,0 +1,19 @@ +سلام، + +صفحهی @PAGE@ با عنوان @TITLE@ در ویکی تغییر کرد. +تغییرات عبارت است از: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +تاریخ : @DATE@ +نامکاربری: @USER@ +خلاصه ویرایش: @SUMMARY@ +نگارش پیشین: @OLDPAGE@ +نگارش نو: @NEWPAGE@ + +برای از بین بردن آگاهیهای این صفحه، از طریق آدرس @DOKUWIKIURL@ وارد ویکی شده و صفحهی @NEWPAGE@ را مرور کنید و عضویت خود را از صفحه یا فضاینام پاک کنید. + +-- +این راینامه با نرمافزار DokuWiki در آدرس @DOKUWIKIURL@ ساخته شده است.
\ No newline at end of file diff --git a/inc/lang/fa/wordblock.txt b/inc/lang/fa/wordblock.txt deleted file mode 100644 index a78c86f06..000000000 --- a/inc/lang/fa/wordblock.txt +++ /dev/null @@ -1,3 +0,0 @@ -====== اسپم مسدود شد ====== - -این تغییرات ذخیره **نمیشود**، چون چند کلمه از کلمههای مسدود شده در آن یافت شده است. اگر فکر میکنید که نباید این اتفاق میافتاد با مدیر سیستم تماس بگیرید.
\ No newline at end of file diff --git a/inc/lang/fi/lang.php b/inc/lang/fi/lang.php index 6ef19ee8e..e91a1d497 100644 --- a/inc/lang/fi/lang.php +++ b/inc/lang/fi/lang.php @@ -41,9 +41,6 @@ $lang['btn_back'] = 'Takaisin'; $lang['btn_backlink'] = 'Paluulinkit'; $lang['btn_backtomedia'] = 'Takaisin mediatiedostojen valintaan'; $lang['btn_subscribe'] = 'Tilaa muutokset'; -$lang['btn_unsubscribe'] = 'Lopeta muutosten tilaus'; -$lang['btn_subscribens'] = 'Tilaa nimiavaruuden muutokset'; -$lang['btn_unsubscribens'] = 'Lopeta nimiavaruuden muutosten tilaus'; $lang['btn_profile'] = 'Päivitä profiili'; $lang['btn_reset'] = 'Tyhjennä'; $lang['btn_resendpwd'] = 'Lähetä uusi salasana'; @@ -97,7 +94,38 @@ $lang['txt_overwrt'] = 'Ylikirjoita olemassa oleva'; $lang['lockedby'] = 'Tällä hetkellä tiedoston on lukinnut'; $lang['lockexpire'] = 'Lukitus päättyy'; $lang['willexpire'] = 'Lukituksesi tämän sivun muokkaukseen päättyy minuutin kuluttua.\nRistiriitojen välttämiseksi paina esikatselu-nappia nollataksesi lukitusajan.'; -$lang['notsavedyet'] = 'Dokumentissa on tallentamattomia muutoksia, jotka häviävät.\n Haluatko varmasti jatkaa?'; +$lang['js']['notsavedyet'] = 'Dokumentissa on tallentamattomia muutoksia, jotka häviävät. + Haluatko varmasti jatkaa?'; +$lang['js']['searchmedia'] = 'Etsi tiedostoja'; +$lang['js']['keepopen'] = 'Pidä valinnan ikkuna avoinna.'; +$lang['js']['hidedetails'] = 'Piilota yksityiskohdat'; +$lang['js']['mediatitle'] = 'Linkkien asetukset'; +$lang['js']['mediadisplay'] = 'Linkin tyyppi'; +$lang['js']['mediaalign'] = 'Tasaus'; +$lang['js']['mediasize'] = 'Kuvan koko'; +$lang['js']['mediatarget'] = 'Linkin kohde'; +$lang['js']['mediaclose'] = 'Sulje'; +$lang['js']['mediainsert'] = 'Liitä'; +$lang['js']['mediadisplayimg'] = 'Näytä kuva.'; +$lang['js']['mediadisplaylnk'] = 'Näytä vain linkki'; +$lang['js']['mediasmall'] = 'Pieni versio'; +$lang['js']['mediamedium'] = 'Keskikokoinen versio'; +$lang['js']['medialarge'] = 'Iso versio'; +$lang['js']['mediaoriginal'] = 'Alkuperäinen versio'; +$lang['js']['medialnk'] = 'Linkki tietosivuun'; +$lang['js']['mediadirect'] = 'Suora linkki alkuperäiseen'; +$lang['js']['medianolnk'] = 'Ei linkkiä'; +$lang['js']['medianolink'] = 'Älä linkitä kuvaa'; +$lang['js']['medialeft'] = 'Tasaa kuva vasemmalle.'; +$lang['js']['mediaright'] = 'Tasaa kuva oikealle.'; +$lang['js']['mediacenter'] = 'Tasaa kuva keskelle.'; +$lang['js']['medianoalign'] = 'Älä tasaa.'; +$lang['js']['nosmblinks'] = 'Linkit Windows-jakoihin toimivat vain Microsoft Internet Explorerilla. +Voit silti kopioida ja liittää linkin.'; +$lang['js']['linkwiz'] = 'Linkkivelho'; +$lang['js']['linkto'] = 'Linkki kohteeseen:'; +$lang['js']['del_confirm'] = 'Haluatko todella poistaa valitut kohteet?'; +$lang['js']['mu_btn'] = 'Lähetä useampia tiedostoja kerralla'; $lang['rssfailed'] = 'Virhe tapahtui noudettaessa tätä syötettä: '; $lang['nothingfound'] = 'Mitään ei löytynyt.'; $lang['mediaselect'] = 'Mediatiedoston valinta'; @@ -115,15 +143,7 @@ $lang['deletefail'] = 'Kohdetta "%s" poistaminen ei onnistunut - tark $lang['mediainuse'] = 'Tiedostoa "%s" ei ole poistettu - se on vielä käytössä.'; $lang['namespaces'] = 'Nimiavaruudet'; $lang['mediafiles'] = 'Tarjolla olevat tiedostot'; -$lang['js']['searchmedia'] = 'Etsi tiedostoja'; -$lang['js']['keepopen'] = 'Pidä valinnan ikkuna avoinna.'; -$lang['js']['hidedetails'] = 'Piilota yksityiskohdat'; -$lang['js']['nosmblinks'] = 'Linkit Windows-jakoihin toimivat vain Microsoft Internet Explorerilla. -Voit silti kopioida ja liittää linkin.'; -$lang['js']['linkwiz'] = 'Linkkivelho'; -$lang['js']['linkto'] = 'Linkki kohteeseen:'; -$lang['js']['del_confirm'] = 'Haluatko todella poistaa valitut kohteet?'; -$lang['js']['mu_btn'] = 'Lähetä useampia tiedostoja kerralla'; +$lang['accessdenied'] = 'Sinulla ei ole oikeuksia tämän sivun katsomiseen'; $lang['mediausage'] = 'Käytä seuraavaa merkintätapaa viittausta tehtäessä:'; $lang['mediaview'] = 'Katsele alkuperäistä tiedostoa'; $lang['mediaroot'] = 'root'; @@ -139,6 +159,7 @@ $lang['current'] = 'nykyinen'; $lang['yours'] = 'Sinun versiosi'; $lang['diff'] = 'Näytä eroavaisuudet nykyiseen versioon'; $lang['diff2'] = 'Näytä eroavaisuudet valittuun versioon'; +$lang['difflink'] = 'Linkki vertailunäkymään'; $lang['line'] = 'Rivi'; $lang['breadcrumb'] = 'Jäljet'; $lang['youarehere'] = 'Olet täällä'; @@ -153,6 +174,7 @@ $lang['noflash'] = 'Tarvitset <a href="http://www.adobe.com/produc $lang['download'] = 'Lataa palanen'; $lang['mail_newpage'] = 'sivu lisätty:'; $lang['mail_changed'] = 'sivu muutettu:'; +$lang['mail_subscribe_list'] = 'muuttuneet sivut nimiavaruudessa:'; $lang['mail_new_user'] = 'uusi käyttäjä:'; $lang['mail_upload'] = 'tiedosto lähetetty:'; $lang['qb_bold'] = 'Lihavoitu teksti'; @@ -195,11 +217,22 @@ $lang['img_copyr'] = 'Tekijänoikeus'; $lang['img_format'] = 'Formaatti'; $lang['img_camera'] = 'Kamera'; $lang['img_keywords'] = 'Avainsanat'; -$lang['subscribe_success'] = '%s lisättiin käyttäjän %s seurattavien listaan'; -$lang['subscribe_error'] = 'Lisättäessä %s käyttäjän %s seurattavien listaan tapahtui virhe'; -$lang['subscribe_noaddress'] = 'Käyttäjänimelle ei löydy osoitetta. Seurattavien listaan lisääminen ei onnistu.'; -$lang['unsubscribe_success'] = '%s poistettiin käyttäjän %s seurattavien listasta'; -$lang['unsubscribe_error'] = 'Poistettaessa %s käyttäjän %s seurattavien listasta tapahtui virhe'; +$lang['subscr_subscribe_success'] = '%s lisätty %s tilauslistalle'; +$lang['subscr_subscribe_error'] = 'Virhe lisättäessä %s tilauslistalle %s'; +$lang['subscr_subscribe_noaddress'] = 'Login tiedoissasi ei ole sähköpostiosoitetta. Sinua ei voi lisätä tilaukseen'; +$lang['subscr_unsubscribe_success'] = '% poistettu tilauslistalta %s'; +$lang['subscr_unsubscribe_error'] = 'Virhe tapahtui poistaessa %s tilauslistalta %s'; +$lang['subscr_already_subscribed'] = '%s on jo tilannut %s'; +$lang['subscr_not_subscribed'] = '%s ei ole tilannut %s'; +$lang['subscr_m_not_subscribed'] = 'Et ole tilannut sivua tai nimiavaruutta'; +$lang['subscr_m_new_header'] = 'Lisää tilaus'; +$lang['subscr_m_current_header'] = 'Voimassaolevat tilaukset'; +$lang['subscr_m_unsubscribe'] = 'Poista tilaus'; +$lang['subscr_m_subscribe'] = 'Tilaa'; +$lang['subscr_m_receive'] = 'Vastaanota'; +$lang['subscr_style_every'] = 'Sähköposti joka muutoksesta'; +$lang['subscr_style_digest'] = 'yhteenveto sähköposti joka sivusta'; +$lang['subscr_style_list'] = 'lista muuttuneista sivuista edellisen sähköpostin jälkeen'; $lang['authmodfailed'] = 'Käyttäjien autentikoinnin asetukset ovat virheelliset. Ilmoita asiasta wikin ylläpitäjälle.'; $lang['authtempfail'] = 'Käyttäjien autentikointi ei tällä hetkellä onnistu. Jos ongelma jatkuu, ota yhteyttä wikin ylläpitäjään.'; $lang['i_chooselang'] = 'Valitse kieli'; @@ -223,6 +256,7 @@ $lang['i_pol0'] = 'Avoin Wiki (luku, kirjoitus, tiedostojen lähe $lang['i_pol1'] = 'Julkinen Wiki (luku kaikilla, kirjoitus ja tiedostojen lähetys rekisteröidyillä käyttäjillä)'; $lang['i_pol2'] = 'Suljettu Wiki (luku, kirjoitus ja tiedostojen lähetys vain rekisteröityneillä käyttäjillä)'; $lang['i_retry'] = 'Yritä uudelleen'; +$lang['i_license'] = 'Valitse lisenssi, jonka alle haluat sisältösi laittaa:'; $lang['mu_intro'] = 'Täällä voit lähettää useampia tiedostoja kerralla. Klikkaa Selaa-nappia lisätäksesi ne jonoon. Paina lähetä, kun olet valmis.'; $lang['mu_gridname'] = 'Tiedoston nimi'; $lang['mu_gridsize'] = 'Koko'; @@ -246,3 +280,4 @@ $lang['days'] = '%d päivää sitten'; $lang['hours'] = '%d tuntia sitten'; $lang['minutes'] = '%d minuuttia sitten'; $lang['seconds'] = '% sekuntia sitten'; +$lang['wordblock'] = 'Muutostasi ei talletettu, koska se sisältää estettyä tekstiä (spam).'; diff --git a/inc/lang/fi/mailtext.txt b/inc/lang/fi/mailtext.txt index 0a953cb87..1808ebc38 100644 --- a/inc/lang/fi/mailtext.txt +++ b/inc/lang/fi/mailtext.txt @@ -13,5 +13,5 @@ Käyttäjä : @USER@ -- -Tämän postin generoi DokuWiki -@DOKUWIKIURL@ +Tämän postin loi DokuWiki osoitteessa +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/fi/password.txt b/inc/lang/fi/password.txt index 3c83d1efd..51e16046c 100644 --- a/inc/lang/fi/password.txt +++ b/inc/lang/fi/password.txt @@ -6,5 +6,5 @@ Käyttäjätunnus : @LOGIN@ Salasana : @PASSWORD@ -- -Tämän postin generoi DokuWiki -@DOKUWIKIURL@ +Tämän postin loi DokuWiki osoitteessa +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/fi/pwconfirm.txt b/inc/lang/fi/pwconfirm.txt index d134943f0..e552f5cdc 100644 --- a/inc/lang/fi/pwconfirm.txt +++ b/inc/lang/fi/pwconfirm.txt @@ -9,5 +9,5 @@ Käytä alla olevaa linkkiä vahvistaaksesi, että pyynnön lähettäjä todella @CONFIRM@ -- -Tämän postin generoi DokuWiki +Tämän postin loi DokuWiki @DOKUWIKIURL@ diff --git a/inc/lang/fi/registermail.txt b/inc/lang/fi/registermail.txt index 78d73f63d..c276873f0 100644 --- a/inc/lang/fi/registermail.txt +++ b/inc/lang/fi/registermail.txt @@ -10,5 +10,5 @@ IP-osoite : @IPADDRESS@ Hostname : @HOSTNAME@ -- -Tämän postin generoi DokuWiki osoitteessa +Tämän postin loi DokuWiki osoitteessa @DOKUWIKIURL@ diff --git a/inc/lang/fi/subscr_digest.txt b/inc/lang/fi/subscr_digest.txt new file mode 100644 index 000000000..466484486 --- /dev/null +++ b/inc/lang/fi/subscr_digest.txt @@ -0,0 +1,20 @@ +Hei! + +Sivu @PAGE@ wikissä @TITLE@ on muuttunut. +Tässä ovat muutokset: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Vanha versio: @OLDPAGE@ +Uusi versio: @NEWPAGE@ + +Peruttaaksesi sivuilmoitukset kirjaudu wikiin osoitteessa +@DOKUWIKIURL@ , jonka jälkeen katso +@SUBSCRIBE@ +ja peruuta tilauksesi sivun ja/tai nimiavaruuden muutoksista. + +-- +Tämän postin loi DokuWiki osoitteessa +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/fi/subscr_form.txt b/inc/lang/fi/subscr_form.txt new file mode 100644 index 000000000..70f2fdeb5 --- /dev/null +++ b/inc/lang/fi/subscr_form.txt @@ -0,0 +1,3 @@ +====== Tilausten hallinta ====== + +Tämä sivu avulla voit hallita silauksiasi nykyiseltä sivulta ja nimiavaruudelta.
\ No newline at end of file diff --git a/inc/lang/fi/subscr_list.txt b/inc/lang/fi/subscr_list.txt new file mode 100644 index 000000000..47ee1b155 --- /dev/null +++ b/inc/lang/fi/subscr_list.txt @@ -0,0 +1,18 @@ +Hei! + +Sivut nimiavaruudessa @PAGE@ wikissä @TITLE@ ovat muuttuneet. +Tässä ovat muuttuneet sivut: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Peruttaaksesi sivuilmoitukset kirjaudu wikiin osoitteessa +@DOKUWIKIURL@ , jonka jälkeen katso +@SUBSCRIBE@ +ja peruuta tilauksesi sivun ja/tai nimiavaruuden muutoksista. + + +-- +Tämän postin loi DokuWiki osoitteessa +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/fi/subscr_single.txt b/inc/lang/fi/subscr_single.txt new file mode 100644 index 000000000..0fd83e266 --- /dev/null +++ b/inc/lang/fi/subscr_single.txt @@ -0,0 +1,23 @@ +Hei! + +Sivu @PAGE@ wikissä @TITLE@ on muuttunut. +Tässä ovat muutokset: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Päivä : @DATE@ +Käyttäjä : @USER@ +Yhteenveto: @SUMMARY@ +Vanha versio: @OLDPAGE@ +Uusi versio: @NEWPAGE@ + +Peruttaaksesi sivuilmoitukset kirjaudu wikiin osoitteessa +@DOKUWIKIURL@ , jonka jälkeen katso +@SUBSCRIBE@ +ja peruuta tilauksesi sivun ja/tai nimiavaruuden muutoksista. + +-- +Tämän postin loi DokuWiki osoitteessa +@DOKUWIKIURL@ diff --git a/inc/lang/fi/uploadmail.txt b/inc/lang/fi/uploadmail.txt index 7a5ea49ed..0c116a78b 100644 --- a/inc/lang/fi/uploadmail.txt +++ b/inc/lang/fi/uploadmail.txt @@ -10,5 +10,5 @@ MIME Type : @MIME@ Käyttäjä : @USER@ -- -Tämän postin generoi DokuWiki osoitteessa +Tämän postin loi DokuWiki osoitteessa @DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/fi/wordblock.txt b/inc/lang/fi/wordblock.txt deleted file mode 100644 index 4e416c68c..000000000 --- a/inc/lang/fi/wordblock.txt +++ /dev/null @@ -1,3 +0,0 @@ -====== Roskaposti torjuttu ====== - -Muutoksiasi **ei** talletettu, koska ne pitivät sisällään yhden tai useampia epäkelpoja sanoja. Jos yritit spämmätä Wikiä, häpeä! Jos pidät tätä virheenä ota yhteyttä wikin ylläpitäjään. diff --git a/inc/lang/fo/lang.php b/inc/lang/fo/lang.php index a8c241fc1..74d7fff58 100644 --- a/inc/lang/fo/lang.php +++ b/inc/lang/fo/lang.php @@ -81,7 +81,7 @@ $lang['lockedby'] = 'Fyribils læst av'; $lang['lockexpire'] = 'Lásið ferð úr gildi kl.'; $lang['willexpire'] = 'Títt lás á hetta skjalið ferð úr gildi um ein minnutt.\nTrýst á '.$lang['btn_preview'].'-knappin fyri at sleppa undan trupulleikum.'; -$lang['notsavedyet'] = 'Tað eru gjørdar broytingar í skjalinum, um tú haldur fram vilja broytingar fara fyri skeytið.\nYnskir tú at halda fram?'; +$lang['js']['notsavedyet'] = "Tað eru gjørdar broytingar í skjalinum, um tú haldur fram vilja broytingar fara fyri skeytið.\nYnskir tú at halda fram?"; $lang['rssfailed'] = 'Eitt brek koma fyri tá roynt var at fáa: '; $lang['nothingfound']= 'Leiting gav onki úrslit.'; diff --git a/inc/lang/fo/wordblock.txt b/inc/lang/fo/wordblock.txt deleted file mode 100644 index f3a9b9dcd..000000000 --- a/inc/lang/fo/wordblock.txt +++ /dev/null @@ -1,3 +0,0 @@ -====== SPAM banning ====== - -Tínar broytingar vóru **ikki** goymdar av tí at tær innihalda eitt ella fleiri óynskt orð. Fá vinarliga samband við admin, um tú heldur at hetta er eitt brek. diff --git a/inc/lang/fr/conflict.txt b/inc/lang/fr/conflict.txt index 0cb0a67fb..8f527ee21 100644 --- a/inc/lang/fr/conflict.txt +++ b/inc/lang/fr/conflict.txt @@ -1,6 +1,6 @@ ====== Une version plus récente existe déjà ====== -Une version plus récente du document que vous avez édité existe déjà. Cela se produit lorsqu'un autre utilisateur enregistre le document pendant que vous l'éditez. +Une version plus récente du document que vous avez modifié existe déjà. Cela se produit lorsqu'un autre utilisateur enregistre le document pendant que vous le modifiez. -Examinez attentivement les différences ci-dessous, et décidez quelle version conserver. Si vous choisissez ''Enregistrer'', votre version sera enregistrée. Cliquez sur ''Annuler'' pour conserver la version actuelle. +Examinez attentivement les différences ci-dessous et décidez quelle version conserver. Si vous choisissez « Enregistrer », votre version sera enregistrée. Cliquez sur « Annuler » pour conserver la version actuelle. diff --git a/inc/lang/fr/draft.txt b/inc/lang/fr/draft.txt index fbc1609a8..a48554298 100644 --- a/inc/lang/fr/draft.txt +++ b/inc/lang/fr/draft.txt @@ -1,6 +1,6 @@ ====== Un fichier brouillon a été trouvé ====== -La dernière édition de cette page ne s'est pas terminée proprement. Dokuwiki a enregistré automatiquement un brouillon de votre travail que vous pouvez utiliser pour votre édition. Ci-dessous figurent les données enregistrées lors de votre dernière session. +La dernière modification de cette page ne s'est pas terminée proprement. Dokuwiki a enregistré automatiquement un brouillon de votre travail que vous pouvez utiliser pour votre modification. Ci-dessous figurent les données enregistrées lors de votre dernière session. -À vous de décider si vous souhaitez //récupérer// votre session d'édition passée, //supprimer// le brouillon enregistré automatiquement ou //annuler// le processus d'édition. +À vous de décider si vous souhaitez //récupérer// votre session de modification passée, //supprimer// le brouillon enregistré automatiquement ou //annuler// le processus d'édition. diff --git a/inc/lang/fr/edit.txt b/inc/lang/fr/edit.txt index 71b0a7c1b..e30f1b78b 100644 --- a/inc/lang/fr/edit.txt +++ b/inc/lang/fr/edit.txt @@ -1,2 +1,2 @@ -Modifiez cette page et cliquez sur ''Enregistrer''. Voyez le [[wiki:syntax|Guide de la mise en page]] pour une aide à propos du format. Veuillez ne modifier cette page que si vous pouvez l'**améliorer**. Si vous souhaitez faire des tests, faites vos premiers pas dans le [[playground:playground|bac à sable]]. +Modifiez cette page et cliquez sur « Enregistrer ». Voyez le [[:wiki:syntax|guide de la mise en page]] pour une aide à propos du formatage. Veuillez ne modifier cette page que si vous pouvez l'**améliorer**. Si vous souhaitez faire des tests, faites vos premiers pas dans le [[:playground:playground|bac à sable]]. diff --git a/inc/lang/fr/editrev.txt b/inc/lang/fr/editrev.txt index 1a7e0f434..d3fa36682 100644 --- a/inc/lang/fr/editrev.txt +++ b/inc/lang/fr/editrev.txt @@ -1,2 +1,2 @@ -**Vous affichez une ancienne révision du document !** Si vous l'enregistrez vous créerez une nouvelle version avec ce contenu. +**Vous affichez une ancienne révision du document !** Si vous l'enregistrez, vous créerez une nouvelle version avec ce contenu. ---- diff --git a/inc/lang/fr/install.html b/inc/lang/fr/install.html index a2c29d022..b057becfe 100644 --- a/inc/lang/fr/install.html +++ b/inc/lang/fr/install.html @@ -1,19 +1,13 @@ <p>Cette page vous assiste dans la première installation et la configuration de <a href="http://dokuwiki.org">DokuWiki</a>. -Pour plus d'information sur cet installeur reportez vous à sa +Pour plus d'information sur cet installeur, reportez-vous à sa <a href="http://dokuwiki.org/installer">page de documentation</a>.</p> -<p>DokuWiki utilise des fichiers ordinaires pour stocker les pages du +<p>DokuWiki utilise des fichiers textes ordinaires pour stocker les pages du wiki et les autres informations associées à ces pages -(tel que images, index de recherche, anciennes révisions, etc). Pour fonctionner correctement DokuWiki <strong>doit</strong> avoir accès en écriture aux différents répertoires qui contiennent ces fichiers. L'installeur n'est pas capable de modifier les permissions sur les répertoires. Ceci doit être effectué directement sur la ligne de commande de votre shell, ou, si vous êtes hébergé, via FTP ou votre panneau de contrôle (tel que cPanel).</p> +(tel que images, index de recherche, anciennes révisions, etc.). Pour fonctionner correctement, DokuWiki <strong>doit</strong> avoir accès en écriture aux différents répertoires qui contiennent ces fichiers. L'installeur n'est pas capable de modifier les permissions sur les répertoires. Ceci doit être effectué directement sur la ligne de commande de votre shell, ou, si vous êtes hébergé, <em>via</em> FTP ou votre panneau de contrôle (tel que cPanel).</p> -<p>Cet installeur va paramétrer votre configuration de DokuWiki pour des <acronym title="access control list">ACL</acronym>, qui permettront l'accès à un login administrateur et l'accès au menu d'administration de DokuWiki pour l'ajout de modules externes, la gestion d'utilisateurs, la gestion de l'accès aux pages du wiki et les changements de paramètres de configuration. Il n'est pas nécessaire au fonctionnement de DokuWiki, néanmoins il facilite l'administration de DokuWiki.</p> +<p>Cet installeur va paramétrer votre configuration de DokuWiki pour des <acronym title="Access Control List - Liste de contrôle d'accès">ACL</acronym>, qui permettront l'accès à un identifiant administrateur et l'accès au menu d'administration de DokuWiki pour l'ajout de modules externes (greffons), la gestion d'utilisateurs, la gestion de l'accès aux pages du wiki et les modifications des paramètres de configuration. Il n'est pas nécessaire au fonctionnement de DokuWiki, néanmoins il facilite l'administration de DokuWiki.</p> -<p>Les utilisateurs expérimentés ou ceux -nécessitant des paramétrages particuliers devraient se -reporter aux liens suivants pour les détails concernant les <a -href="http://dokuwiki.org/install">instructions -d'installation</a> et les <a -href="http://dokuwiki.org/config">paramètres de -configuration</a>.</p> +<p>Les utilisateurs expérimentés ou ceux nécessitant des paramétrages particuliers devraient se reporter aux liens suivants pour les détails concernant les <a href="http://dokuwiki.org/install">instructions d'installation</a> et les <a href="http://dokuwiki.org/config">paramètres de configuration</a>.</p> diff --git a/inc/lang/fr/lang.php b/inc/lang/fr/lang.php index 6a0f408b8..76e1271bd 100644 --- a/inc/lang/fr/lang.php +++ b/inc/lang/fr/lang.php @@ -18,6 +18,9 @@ * @author Erik Pedersen <erik.pedersen@shaw.ca> * @author olivier duperray <duperray.olivier@laposte.net> * @author Vincent Feltz <psycho@feltzv.fr> + * @author Philippe Bajoit <philippe.bajoit@gmail.com> + * @author Florian Gaub <floriang@floriang.net> + * @author Samuel Dorsaz samuel.dorsaz@novelion.net */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -25,8 +28,8 @@ $lang['doublequoteopening'] = '“'; $lang['doublequoteclosing'] = '”'; $lang['singlequoteopening'] = '‘'; $lang['singlequoteclosing'] = '’'; -$lang['apostrophe'] = '\''; -$lang['btn_edit'] = 'Éditer cette page'; +$lang['apostrophe'] = '’'; +$lang['btn_edit'] = 'Modifier cette page'; $lang['btn_source'] = 'Afficher le texte source'; $lang['btn_show'] = 'Afficher la page'; $lang['btn_create'] = 'Créer cette page'; @@ -34,32 +37,29 @@ $lang['btn_search'] = 'Rechercher'; $lang['btn_save'] = 'Enregistrer'; $lang['btn_preview'] = 'Aperçu'; $lang['btn_top'] = 'Haut de page'; -$lang['btn_newer'] = '<< plus récent'; -$lang['btn_older'] = 'moins récent >>'; +$lang['btn_newer'] = '<< Plus récent'; +$lang['btn_older'] = 'Moins récent >>'; $lang['btn_revs'] = 'Anciennes révisions'; $lang['btn_recent'] = 'Derniers changements'; $lang['btn_upload'] = 'Envoyer'; $lang['btn_cancel'] = 'Annuler'; $lang['btn_index'] = 'Index'; -$lang['btn_secedit'] = 'Éditer'; +$lang['btn_secedit'] = 'Modifier'; $lang['btn_login'] = 'Connexion'; $lang['btn_logout'] = 'Déconnexion'; -$lang['btn_admin'] = 'Admin'; -$lang['btn_update'] = 'Rafraîchir'; +$lang['btn_admin'] = 'Administrer'; +$lang['btn_update'] = 'Mettre à jour'; $lang['btn_delete'] = 'Effacer'; $lang['btn_back'] = 'Retour'; $lang['btn_backlink'] = 'Liens vers cette page'; $lang['btn_backtomedia'] = 'Retour à la sélection du fichier média'; $lang['btn_subscribe'] = 'S\'abonner à la page'; -$lang['btn_unsubscribe'] = 'Se désabonner de la page'; -$lang['btn_subscribens'] = 'S\'abonner à la catégorie'; -$lang['btn_unsubscribens'] = 'Se désabonner de la catégorie'; $lang['btn_profile'] = 'Mettre à jour le profil'; $lang['btn_reset'] = 'Réinitialiser'; $lang['btn_resendpwd'] = 'Envoyer le mot de passe'; -$lang['btn_draft'] = 'Éditer brouillon'; -$lang['btn_recover'] = 'Récupérer brouillon'; -$lang['btn_draftdel'] = 'Effacer brouillon'; +$lang['btn_draft'] = 'Modifier le brouillon'; +$lang['btn_recover'] = 'Récupérer le brouillon'; +$lang['btn_draftdel'] = 'Effacer le brouillon'; $lang['btn_revert'] = 'Restaurer'; $lang['loggedinas'] = 'Connecté en tant que '; $lang['user'] = 'Utilisateur'; @@ -73,16 +73,16 @@ $lang['email'] = 'Adresse de courriel'; $lang['register'] = 'S\'enregistrer'; $lang['profile'] = 'Profil utilisateur'; $lang['badlogin'] = 'L\'utilisateur ou le mot de passe est incorrect.'; -$lang['minoredit'] = 'Mineur'; +$lang['minoredit'] = 'Modification mineure'; $lang['draftdate'] = 'Brouillon auto-enregistré le'; $lang['nosecedit'] = 'La page a changé entre temps, les informations de la section sont obsolètes ; la page complète a été chargée à la place.'; $lang['regmissing'] = 'Désolé, vous devez remplir tous les champs.'; -$lang['reguexists'] = 'Désolé, ce nom d\'utilisateur est déjà pris'; +$lang['reguexists'] = 'Désolé, ce nom d\'utilisateur est déjà pris.'; $lang['regsuccess'] = 'L\'utilisateur a été créé. Le mot de passe a été expédié par courriel.'; $lang['regsuccess2'] = 'L\'utilisateur a été créé.'; $lang['regmailfail'] = 'Il semble y avoir un problème à l\'envoi du courriel. Contactez l\'administrateur.'; -$lang['regbadmail'] = 'L\'adresse de courriel semble incorrecte - si vous pensez que c\'est une erreur, contactez l\'administrateur.'; -$lang['regbadpass'] = 'Les deux mots de passe fournis sont différents, recommencez SVP.'; +$lang['regbadmail'] = 'L\'adresse de courriel semble incorrecte. Si vous pensez que c\'est une erreur, contactez l\'administrateur.'; +$lang['regbadpass'] = 'Les deux mots de passe fournis sont différents, veuillez recommencez.'; $lang['regpwmail'] = 'Votre mot de passe DokuWiki'; $lang['reghere'] = 'Vous n\'avez pas encore de compte ? Enregistrez-vous ici '; $lang['profna'] = 'Ce wiki ne permet pas de modifier les profils'; @@ -94,61 +94,85 @@ $lang['resendna'] = 'Ce wiki ne permet pas le renvoi de mot de pass $lang['resendpwd'] = 'Renvoyer le mot de passe de'; $lang['resendpwdmissing'] = 'Désolé, vous devez remplir tous les champs.'; $lang['resendpwdnouser'] = 'Désolé, cet utilisateur est introuvable dans notre base.'; -$lang['resendpwdbadauth'] = 'Désolé, ce code d\'authentification est invalide. Assurez vous d\'avoir utilisé le lien de confirmation.'; +$lang['resendpwdbadauth'] = 'Désolé, ce code d\'authentification est invalide. Assurez-vous d\'avoir utilisé le lien de confirmation.'; $lang['resendpwdconfirm'] = 'Un lien de confirmation vous a été envoyé par courriel.'; $lang['resendpwdsuccess'] = 'Votre nouveau mot de passe vous a été expédié par courriel.'; -$lang['license'] = 'Sauf mention contraire, le contenu de ce wiki est placé sous la licence suivante:'; -$lang['licenseok'] = 'Note : En éditant cette page vous acceptez que le contenu soit placé sous les termes de la licence suivante :'; -$lang['searchmedia'] = 'Chercher le nom de fichier :'; +$lang['license'] = 'Sauf mention contraire, le contenu de ce wiki est placé sous la licence suivante :'; +$lang['licenseok'] = 'Note : En modifiant cette page, vous acceptez que le contenu soit placé sous les termes de la licence suivante :'; +$lang['searchmedia'] = 'Chercher le nom de fichier :'; $lang['searchmedia_in'] = 'Chercher dans %s'; $lang['txt_upload'] = 'Sélectionnez un fichier à envoyer '; -$lang['txt_filename'] = 'Donnez un "wikiname" (optionnel) '; +$lang['txt_filename'] = 'Donnez un « wikiname » (optionnel) '; $lang['txt_overwrt'] = 'Écraser le fichier cible'; $lang['lockedby'] = 'Actuellement bloqué par'; $lang['lockexpire'] = 'Le blocage expire à'; -$lang['willexpire'] = 'Votre blocage pour modifier cette page expire dans une minute.\nPour éviter les conflits, utiliser le bouton Aperçu pour réinitialiser le minuteur.'; -$lang['notsavedyet'] = 'Les changements non enregistrés seront perdus.\nVoulez-vous vraiment continuer ?'; -$lang['rssfailed'] = 'Une erreur s\'est produite en récupérant ce flux : '; -$lang['nothingfound'] = 'Pas de réponse.'; -$lang['mediaselect'] = 'Sélection de fichier'; -$lang['fileupload'] = 'Envoi de fichier'; -$lang['uploadsucc'] = 'Envoi réussi'; -$lang['uploadfail'] = 'L\'envoi n\'a pas réussi. Les permissions sont-elles correctes ?'; -$lang['uploadwrong'] = 'Envoi refusé. Cette extension de fichier est interdite !'; -$lang['uploadexist'] = 'Le fichier existe. Envoi avorté.'; -$lang['uploadbadcontent'] = 'Le contenu envoyé ne correspond pas à l\'extension du fichier %s.'; -$lang['uploadspam'] = 'L\'envoi a été bloqué par la liste noire antispam.'; -$lang['uploadxss'] = 'L\'envoi a été bloqué car son contenu est peut-être malveillant.'; -$lang['uploadsize'] = 'Le fichier envoyé était trop gros. (max. %s)'; -$lang['deletesucc'] = 'Le fichier "%s" a été effacé.'; -$lang['deletefail'] = 'Le fichier "%s" n\'a pu être effacé - vérifier les permissions.'; -$lang['mediainuse'] = 'Le fichier "%s" n\'a pas été effacé - il est en cours d\'utilisation.'; -$lang['namespaces'] = 'Catégories'; -$lang['mediafiles'] = 'Fichiers disponibles dans'; +$lang['willexpire'] = 'Votre blocage pour modifier cette page expire dans une minute.\nPour éviter les conflits, utiliser le bouton « Aperçu » pour réinitialiser le minuteur.'; +$lang['js']['notsavedyet'] = 'Les modifications non enregistrées seront perdues. +Voulez-vous vraiment continuer ?'; $lang['js']['searchmedia'] = 'Chercher des fichiers'; $lang['js']['keepopen'] = 'Gardez la fenêtre ouverte pendant la sélection'; $lang['js']['hidedetails'] = 'Masquer détails'; +$lang['js']['mediatitle'] = 'Paramètres de lien'; +$lang['js']['mediadisplay'] = 'Type de lien'; +$lang['js']['mediaalign'] = 'Alignement'; +$lang['js']['mediasize'] = 'Taille d\'image'; +$lang['js']['mediatarget'] = 'Cible du lien'; +$lang['js']['mediaclose'] = 'Fermer'; +$lang['js']['mediainsert'] = 'Insérer'; +$lang['js']['mediadisplayimg'] = 'Afficher l\'image.'; +$lang['js']['mediadisplaylnk'] = 'N\'afficher que le lien.'; +$lang['js']['mediasmall'] = 'Petite version'; +$lang['js']['mediamedium'] = 'Version moyenne'; +$lang['js']['medialarge'] = 'Grande version'; +$lang['js']['mediaoriginal'] = 'Version originale'; +$lang['js']['medialnk'] = 'Lien vers la page de détail'; +$lang['js']['mediadirect'] = 'Lien direct vers l\'original'; +$lang['js']['medianolnk'] = 'Aucun lien'; +$lang['js']['medianolink'] = 'Ne pas lier l\'image'; +$lang['js']['medialeft'] = 'Aligner l\'image sur la gauche.'; +$lang['js']['mediaright'] = 'Aligner l\'image sur la droite.'; +$lang['js']['mediacenter'] = 'Centrer l\'image'; +$lang['js']['medianoalign'] = 'Ne pas aligner.'; $lang['js']['nosmblinks'] = 'Les liens vers les partages Windows ne fonctionnent qu\'avec Microsoft Internet Explorer. -Vous pouvez toujours faire un copier/coller du lien.'; +Vous pouvez toujours copier puis coller le lien.'; $lang['js']['linkwiz'] = 'Assistant Lien'; -$lang['js']['linkto'] = 'Lien vers:'; +$lang['js']['linkto'] = 'Lien vers :'; $lang['js']['del_confirm'] = 'Effacer cette entrée ?'; $lang['js']['mu_btn'] = 'Envoyer plusieurs fichiers en même temps'; +$lang['rssfailed'] = 'Une erreur s\'est produite en récupérant ce flux : '; +$lang['nothingfound'] = 'Pas de réponse.'; +$lang['mediaselect'] = 'Sélection de fichier'; +$lang['fileupload'] = 'Envoi de fichier'; +$lang['uploadsucc'] = 'Téléversement réussi'; +$lang['uploadfail'] = 'Le téléversement n\'a pas réussi. Les permissions sont-elles correctes ?'; +$lang['uploadwrong'] = 'Téléversement refusé. Cette extension de fichier est interdite !'; +$lang['uploadexist'] = 'Le fichier existe. Téléversement avorté.'; +$lang['uploadbadcontent'] = 'Le contenu envoyé ne correspond pas à l\'extension du fichier %s.'; +$lang['uploadspam'] = 'Le téléversement a été bloqué par la liste noire antispam.'; +$lang['uploadxss'] = 'Le téléversement a été bloqué car son contenu est peut-être malveillant.'; +$lang['uploadsize'] = 'Le fichier téléversé était trop gros. (max. %s)'; +$lang['deletesucc'] = 'Le fichier « %s » a été effacé.'; +$lang['deletefail'] = 'Le fichier « %s » n\'a pu être effacé, vérifier les permissions.'; +$lang['mediainuse'] = 'Le fichier « %s » n\'a pas été effacé, il est en cours d\'utilisation.'; +$lang['namespaces'] = 'Catégories'; +$lang['mediafiles'] = 'Fichiers disponibles dans'; +$lang['accessdenied'] = 'Vous n\'êtes pas autorisé à voir cette page.'; $lang['mediausage'] = 'Utilisez la syntaxe suivante pour faire référence à ce fichier :'; -$lang['mediaview'] = 'Voir fichier original'; -$lang['mediaroot'] = 'root'; -$lang['mediaupload'] = 'Envoyer un fichier dans la catégorie courante ici. Pour créer des sous-catégories, préfixez le nom du fichier par le nom de la sous-catégorie séparée par un double point.'; +$lang['mediaview'] = 'Afficher le fichier original'; +$lang['mediaroot'] = 'racine'; +$lang['mediaupload'] = 'Téléverser un fichier dans la catégorie actuelle. Pour créer des sous-catégories, préfixez le nom du fichier par le nom de la sous-catégorie séparée par un double-point.'; $lang['mediaextchange'] = 'Extension du fichier changée de .%s en .%s !'; $lang['reference'] = 'Références pour'; $lang['ref_inuse'] = 'Le fichier ne peut être effacé car il est utilisé par les pages suivantes :'; $lang['ref_hidden'] = 'Des références existent dans des pages que vous n\'avez pas la permission de lire'; -$lang['hits'] = 'occurrences trouvées'; +$lang['hits'] = 'Occurrences trouvées'; $lang['quickhits'] = 'Pages trouvées '; $lang['toc'] = 'Table des matières'; -$lang['current'] = 'version actuelle'; +$lang['current'] = 'Version actuelle'; $lang['yours'] = 'Votre version'; $lang['diff'] = 'Différences avec la version actuelle'; $lang['diff2'] = 'Différences entre les versions sélectionnées'; +$lang['difflink'] = 'Lien vers cette vue'; $lang['line'] = 'Ligne'; $lang['breadcrumb'] = 'Piste'; $lang['youarehere'] = 'Vous êtes ici'; @@ -157,42 +181,43 @@ $lang['by'] = 'par'; $lang['deleted'] = 'effacée'; $lang['created'] = 'créée'; $lang['restored'] = 'ancienne révision restaurée'; -$lang['external_edit'] = 'édition externe'; +$lang['external_edit'] = 'modification externe'; $lang['summary'] = 'Résumé'; -$lang['noflash'] = 'L"extension <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> est nécessaire pour afficher ce contenu.'; +$lang['noflash'] = 'Le greffon <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash</a> est nécessaire pour afficher ce contenu.'; $lang['download'] = 'Télécharger un extrait'; -$lang['mail_newpage'] = 'page ajoutée :'; -$lang['mail_changed'] = 'page changée :'; -$lang['mail_new_user'] = 'nouvel utilisateur :'; -$lang['mail_upload'] = 'fichier envoyé :'; -$lang['qb_bold'] = 'Gras'; -$lang['qb_italic'] = 'Italique'; +$lang['mail_newpage'] = 'page ajoutée :'; +$lang['mail_changed'] = 'page modifiée :'; +$lang['mail_subscribe_list'] = 'pages modifiées dans la catégorie :'; +$lang['mail_new_user'] = 'nouvel utilisateur :'; +$lang['mail_upload'] = 'fichier envoyé :'; +$lang['qb_bold'] = 'Emphase forte (gras)'; +$lang['qb_italic'] = 'Emphase (italique)'; $lang['qb_underl'] = 'Souligné'; -$lang['qb_code'] = 'Code'; +$lang['qb_code'] = 'Code « machine à écrire »'; $lang['qb_strike'] = 'Texte barré'; -$lang['qb_h1'] = 'En-tête 1'; -$lang['qb_h2'] = 'En-tête 2'; -$lang['qb_h3'] = 'En-tête 3'; -$lang['qb_h4'] = 'En-tête 4'; -$lang['qb_h5'] = 'En-tête 5'; +$lang['qb_h1'] = 'Titre de niveau 1'; +$lang['qb_h2'] = 'Titre de niveau 2'; +$lang['qb_h3'] = 'Titre de niveau 3'; +$lang['qb_h4'] = 'Titre de niveau 4'; +$lang['qb_h5'] = 'Titre de niveau 5'; $lang['qb_h'] = 'Titre'; $lang['qb_hs'] = 'Sélectionner la ligne de titre'; -$lang['qb_hplus'] = 'Titre supérieur'; -$lang['qb_hminus'] = 'Titre inférieur'; +$lang['qb_hplus'] = 'Titre de niveau supérieur'; +$lang['qb_hminus'] = 'Titre de niveau inférieur'; $lang['qb_hequal'] = 'Titre de même niveau'; $lang['qb_link'] = 'Lien interne'; $lang['qb_extlink'] = 'Lien externe'; $lang['qb_hr'] = 'Ligne horizontale'; $lang['qb_ol'] = 'Liste numérotée'; $lang['qb_ul'] = 'Liste à puce'; -$lang['qb_media'] = 'Ajouter des images et autres fichiers'; +$lang['qb_media'] = 'Ajouter des images ou d\'autres fichiers'; $lang['qb_sig'] = 'Insérer une signature'; -$lang['qb_smileys'] = 'Émoticons'; +$lang['qb_smileys'] = 'Émoticones'; $lang['qb_chars'] = 'Caractères spéciaux'; $lang['upperns'] = 'Aller à la catégorie parente'; $lang['admin_register'] = 'Ajouter un nouvel utilisateur'; -$lang['metaedit'] = 'Éditer les métadonnées'; -$lang['metasaveerr'] = 'Erreur à l\'écriture des métadonnées'; +$lang['metaedit'] = 'Modifier les métadonnées'; +$lang['metasaveerr'] = 'Erreur lors de l\'écriture des métadonnées'; $lang['metasaveok'] = 'Métadonnées enregistrées'; $lang['img_backto'] = 'Retour à'; $lang['img_title'] = 'Titre'; @@ -204,35 +229,47 @@ $lang['img_artist'] = 'Auteur'; $lang['img_copyr'] = 'Copyright'; $lang['img_format'] = 'Format'; $lang['img_camera'] = 'Appareil photo'; -$lang['img_keywords'] = 'Mots clef'; -$lang['subscribe_success'] = 'Ajout de %s à la liste d\'abonnés de %s'; -$lang['subscribe_error'] = 'Erreur à l\'ajout de %s à la liste d\'abonnés de %s'; -$lang['subscribe_noaddress'] = 'Aucune adresse associée à votre nom d\'utilisateur, impossible de vous ajouter à la liste d\'abonnés'; -$lang['unsubscribe_success'] = 'Suppression de %s de la liste d\'abonnés de %s'; -$lang['unsubscribe_error'] = 'Erreur à la suppression de %s de la liste d\'abonnés de %s'; +$lang['img_keywords'] = 'Mots-clés'; +$lang['subscr_subscribe_success'] = '%s a été ajouté à la liste de souscription de %s'; +$lang['subscr_subscribe_error'] = 'Erreur en ajoutant %s à la liste de souscription de %s'; +$lang['subscr_subscribe_noaddress'] = 'Il n\'y a pas d\'adresse associée à votre identifiant, vous ne pouvez pas être ajouté à la liste de souscription'; +$lang['subscr_unsubscribe_success'] = '%s a été retiré de la liste de souscription de %s'; +$lang['subscr_unsubscribe_error'] = 'Erreur en retirant %s de la liste de souscription de %s'; +$lang['subscr_already_subscribed'] = '%s est déjà souscrit à %s'; +$lang['subscr_not_subscribed'] = '%s n\'est pas souscrit à %s'; +$lang['subscr_m_not_subscribed'] = 'Vous n\'avez pas souscrit pour l\'instant à la page actuelle ou la catégorie'; +$lang['subscr_m_new_header'] = 'Ajouter une souscription'; +$lang['subscr_m_current_header'] = 'Souscriptions actives'; +$lang['subscr_m_unsubscribe'] = 'Annuler la souscription'; +$lang['subscr_m_subscribe'] = 'Souscrire'; +$lang['subscr_m_receive'] = 'Recevoir'; +$lang['subscr_style_every'] = 'Envoyer un courriel à chaque modification'; +$lang['subscr_style_digest'] = 'Courriel résumant les modifications de chaque page'; +$lang['subscr_style_list'] = 'Liste des pages modifiées depuis le dernier courriel'; $lang['authmodfailed'] = 'Mauvais paramétrage de l\'authentification. Merci d\'informer l\'administrateur du Wiki.'; $lang['authtempfail'] = 'L\'authentification est temporairement indisponible. Si cela perdure, merci d\'informer l\'administrateur du Wiki.'; $lang['i_chooselang'] = 'Choisissez votre langue'; $lang['i_installer'] = 'Installeur DokuWiki'; -$lang['i_wikiname'] = 'Nom du Wiki'; +$lang['i_wikiname'] = 'Nom du wiki'; $lang['i_enableacl'] = 'Activer les ACL (recommandé)'; $lang['i_superuser'] = 'Super-utilisateur'; $lang['i_problems'] = 'L\'installeur a détecté les problèmes indiqués ci-dessous. Vous ne pouvez poursuivre tant qu\'ils n\'auront pas été corrigés.'; $lang['i_modified'] = 'Pour des raisons de sécurité ce script ne fonctionne qu\'avec une installation neuve et non modifiée de DokuWiki. Vous devriez ré-extraire les fichiers depuis le paquet téléchargé ou consulter les <a href="http://dokuwiki.org/install">instructions d\'installation de DokuWiki</a>'; $lang['i_funcna'] = 'La fonction PHP <code>%s</code> n\'est pas disponible. Peut-être que votre hébergeur l\'a désactivée ?'; -$lang['i_phpver'] = 'Votre version de PHP (<code>%s</code>) est antérieure à la version requise (<code>%s</code>. Vous devez mettre à jour votre installation de PHP.'; +$lang['i_phpver'] = 'Votre version de PHP (%s) est antérieure à la version requise (%s). Vous devez mettre à jour votre installation de PHP.'; $lang['i_permfail'] = '<code>%s</code> n\'est pas accessible en écriture pour DokuWiki. Vous devez corriger les permissions de ce répertoire !'; $lang['i_confexists'] = '<code>%s</code> existe déjà'; $lang['i_writeerr'] = 'Impossible de créer <code>%s</code>. Vous devez vérifier les permissions des répertoires/fichiers et créer le fichier manuellement.'; $lang['i_badhash'] = 'dokuwiki.php non reconnu ou modifié (hash=<code>%s</code>)'; -$lang['i_badval'] = '<code>%s</code> - valeur illégale ou vide'; -$lang['i_success'] = 'L\'installation s\'est terminée avec succès. Vous pouvez maintenant supprimer le fichier install.php. Continuer avec <a href="doku.php">votre nouveau DokuWiki</a>.'; +$lang['i_badval'] = '<code>%s</code> - valeur interdite ou vide'; +$lang['i_success'] = 'L\'installation s\'est terminée avec succès. Vous pouvez maintenant supprimer le fichier « install.php ». Continuer avec <a href="doku.php">votre nouveau DokuWiki</a>.'; $lang['i_failure'] = 'Des erreurs sont survenues lors de l\'écriture des fichiers de configuration. Il vous faudra les corriger manuellement avant de pouvoir utiliser <a href="doku.php">votre nouveau DokuWiki</a>.'; $lang['i_policy'] = 'Politique d\'ACL initiale'; $lang['i_pol0'] = 'Wiki ouvert (lecture, écriture, envoi de fichiers pour tout le monde)'; $lang['i_pol1'] = 'Wiki public (lecture pour tout le monde, écriture et envoi de fichiers pour les utilisateurs enregistrés)'; $lang['i_pol2'] = 'Wiki fermé (lecture, écriture, envoi de fichiers pour les utilisateurs enregistrés uniquement)'; $lang['i_retry'] = 'Réessayer'; +$lang['i_license'] = 'Veuillez choisir la licence sous laquelle placer votre contenu :'; $lang['mu_intro'] = 'Ici vous pouvez envoyer plusieurs fichiers en même temps. Cliquez sur le bouton parcourir pour les ajouter. Cliquez sur envoyer lorsque c\'est prêt. '; $lang['mu_gridname'] = 'Nom du fichier'; $lang['mu_gridsize'] = 'Taille'; @@ -248,7 +285,7 @@ $lang['mu_progress'] = '@PCT@% envoyé'; $lang['mu_filetypes'] = 'Types de fichiers acceptés'; $lang['mu_info'] = 'fichiers envoyés.'; $lang['mu_lasterr'] = 'Dernière erreur : '; -$lang['recent_global'] = 'Vous êtes actuellement en train de regarder les modifications au sein du namespace <b>%s</b>. Vous pouvez aussi <a href="%s">voir les récentes modifications sur tout le wiki</a>.'; +$lang['recent_global'] = 'Vous êtes actuellement en train de regarder les modifications au sein de la catégorie <strong>%s</strong>. Vous pouvez aussi <a href="%s">voir les récentes modifications sur tout le wiki</a>.'; $lang['years'] = 'il y a %d ans'; $lang['months'] = 'il y a %d mois'; $lang['weeks'] = 'il y a %d semaines'; @@ -256,3 +293,4 @@ $lang['days'] = 'il y a %d jours'; $lang['hours'] = 'il y a %d heures'; $lang['minutes'] = 'il y a %d minutes'; $lang['seconds'] = 'il y a %d secondes'; +$lang['wordblock'] = 'Vos modifications n\'ont pas été sauvegardées parce qu\'elles contiennent des textes non autorisé (spam).'; diff --git a/inc/lang/fr/locked.txt b/inc/lang/fr/locked.txt index ac8eb4c4b..82cdd7373 100644 --- a/inc/lang/fr/locked.txt +++ b/inc/lang/fr/locked.txt @@ -1,3 +1,3 @@ ====== Page bloquée ====== -Cette page est actuellement bloquée pour édition par un autre utilisateur. Vous devez attendre que l'autre utilisateur ait terminé ou que le blocage de la page expire. +Cette page est actuellement bloquée pour modification par un autre utilisateur. Vous devez attendre que l'autre utilisateur ait terminé ou que le blocage de la page expire. diff --git a/inc/lang/fr/mailtext.txt b/inc/lang/fr/mailtext.txt index 0b87616b1..add3b2779 100644 --- a/inc/lang/fr/mailtext.txt +++ b/inc/lang/fr/mailtext.txt @@ -1,4 +1,4 @@ -Une page dans votre Wiki a été ajoutée ou modifiée. Voici les +Une page dans votre wiki a été ajoutée ou modifiée. Voici les détails : Date : @DATE@ @@ -7,6 +7,7 @@ Adresse IP : @IPADDRESS@ Nom d'hôte : @HOSTNAME@ Ancienne révision : @OLDPAGE@ Nouvelle révision : @NEWPAGE@ +Différences : @OLDPAGE@&do=diff Résumé : @SUMMARY@ Utilisateur : @USER@ @@ -14,5 +15,5 @@ Utilisateur : @USER@ -- -Ce message a été généré par DokuWiki +Ce courriel a été généré par DokuWiki @DOKUWIKIURL@ diff --git a/inc/lang/fr/newpage.txt b/inc/lang/fr/newpage.txt index 3d834ffd0..0ed2b25af 100644 --- a/inc/lang/fr/newpage.txt +++ b/inc/lang/fr/newpage.txt @@ -1,4 +1,4 @@ ====== Cette page n'existe pas encore ====== -Vous avez suivi un lien vers une page qui n'existe pas encore. Si vos droits sont suffisants, vous pouvez utiliser le bouton ''Créer cette page''. +Vous avez suivi un lien vers une page qui n'existe pas encore. Si vos droits sont suffisants, vous pouvez utiliser le bouton ou le lien « Créer cette page ». diff --git a/inc/lang/fr/norev.txt b/inc/lang/fr/norev.txt index 65984ef9c..3f96b6aff 100644 --- a/inc/lang/fr/norev.txt +++ b/inc/lang/fr/norev.txt @@ -1,4 +1,4 @@ ====== Révision non trouvée ====== -La révision demandée n'existe pas. Utilisez le bouton 'Anciennes révisions' pour une liste des révisions de ce document. +La révision demandée n'existe pas. Utilisez le bouton ou le lien « Anciennes révisions » pour une liste des révisions de ce document. diff --git a/inc/lang/fr/password.txt b/inc/lang/fr/password.txt index 6c4f5309f..f4500fc85 100644 --- a/inc/lang/fr/password.txt +++ b/inc/lang/fr/password.txt @@ -6,5 +6,5 @@ Utilisateur : @LOGIN@ Mot de passe : @PASSWORD@ -- -Ce mail a été envoyé par DokuWiki de +Ce courriel a été envoyé par DokuWiki de @DOKUWIKIURL@ diff --git a/inc/lang/fr/pwconfirm.txt b/inc/lang/fr/pwconfirm.txt index 432b5f102..af84833df 100644 --- a/inc/lang/fr/pwconfirm.txt +++ b/inc/lang/fr/pwconfirm.txt @@ -1,6 +1,6 @@ Bonjour @FULLNAME@ ! -Quelqu'un a demandé un nouveau mot de passe pour votre login +Quelqu'un a demandé un nouveau mot de passe pour votre identifiant @TITLE@ sur @DOKUWIKIURL@ Si vous n'êtes pas à l'origine de cette requête d'un nouveau mot de @@ -11,5 +11,5 @@ Pour confirmer que cette requête émane bien de vous, merci de suivre le lien c @CONFIRM@ -- -Ce message a été généré par DokuWiki +Ce courriel a été généré par DokuWiki @DOKUWIKIURL@ diff --git a/inc/lang/fr/registermail.txt b/inc/lang/fr/registermail.txt index 960aedf2d..1beae8522 100644 --- a/inc/lang/fr/registermail.txt +++ b/inc/lang/fr/registermail.txt @@ -10,5 +10,5 @@ Adresse IP : @IPADDRESS@ Nom d'hôte : @HOSTNAME@ -- -Ce message a été généré par DokuWiki +Ce courriel a été généré par DokuWiki @DOKUWIKIURL@ diff --git a/inc/lang/fr/resendpwd.txt b/inc/lang/fr/resendpwd.txt index 2cfbed617..44fbeef03 100644 --- a/inc/lang/fr/resendpwd.txt +++ b/inc/lang/fr/resendpwd.txt @@ -1,4 +1,4 @@ ====== Envoyer un nouveau mot de passe ====== -Veuillez compléter les champs ci dessous pour obtenir un nouveau mot de passe pour votre compte dans ce wiki. Un lien de confirmation vous sera envoyé à l'adresse de courriel utilisée lors de votre enregistrement. +Veuillez compléter les champs ci-dessous pour obtenir un nouveau mot de passe pour votre compte dans ce wiki. Un lien de confirmation vous sera envoyé à l'adresse de courriel utilisée lors de votre enregistrement. diff --git a/inc/lang/fr/revisions.txt b/inc/lang/fr/revisions.txt index c9149ef9b..29c17137f 100644 --- a/inc/lang/fr/revisions.txt +++ b/inc/lang/fr/revisions.txt @@ -1,4 +1,4 @@ ====== Anciennes révisions ====== -Voici les anciennes révisions de la page en cours. Pour revenir à une ancienne révision, sélectionnez-la ci-dessous, cliquez sur le bouton ''Éditer cette page'' et enregistrez-la. +Voici les anciennes révisions de la page en cours. Pour revenir à une ancienne révision, sélectionnez-la ci-dessous, cliquez sur le bouton « Modifier cette page » et enregistrez-la. diff --git a/inc/lang/fr/searchpage.txt b/inc/lang/fr/searchpage.txt index 8355a2f9d..a9bd91608 100644 --- a/inc/lang/fr/searchpage.txt +++ b/inc/lang/fr/searchpage.txt @@ -1,5 +1,5 @@ ====== Recherche ====== -Voici les résultats de votre recherche. Si vous n'avez pas trouvé ce que vous cherchiez, vous pouvez créer ou éditer la page correspondante à votre requête en cliquant sur le bouton approprié. +Voici les résultats de votre recherche. Si vous n'avez pas trouvé ce que vous cherchiez, vous pouvez créer ou modifier la page correspondante à votre requête en cliquant sur le bouton approprié. ===== Résultats ===== diff --git a/inc/lang/fr/subscr_digest.txt b/inc/lang/fr/subscr_digest.txt new file mode 100644 index 000000000..1803407fa --- /dev/null +++ b/inc/lang/fr/subscr_digest.txt @@ -0,0 +1,19 @@ +Bonjour, + +La page « @PAGE@ » dans le wiki « @TITLE@ » a été modifiée. Voici ces modifications : + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Révision précédente : @OLDPAGE@ +Nouvelle révision : @NEWPAGE@ + +Pour annuler les notifications de page, connectez-vous au wiki à l'adresse +@DOKUWIKIURL@ puis visitez +@SUBSCRIBE@ +et désabonnez-vous de la page ou de la catégorie. + +-- +Ce courriel a été généré par Dokuwiki : +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/fr/subscr_form.txt b/inc/lang/fr/subscr_form.txt new file mode 100644 index 000000000..528f77475 --- /dev/null +++ b/inc/lang/fr/subscr_form.txt @@ -0,0 +1,3 @@ +====== Gestion de l'abonnement ====== + +Cette page vous permet de gérer vos abonnements à la page ou à la catégorie courantes
\ No newline at end of file diff --git a/inc/lang/fr/subscr_list.txt b/inc/lang/fr/subscr_list.txt new file mode 100644 index 000000000..3387b11ee --- /dev/null +++ b/inc/lang/fr/subscr_list.txt @@ -0,0 +1,16 @@ +Bonjour, + +Des pages dans la catégorie « @PAGE@ » du wiki « @TITLE@ » ont été modifiées. Voici ces modifications : + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Pour annuler les notifications de page, connectez-vous au wiki à l'adresse +@DOKUWIKIURL@ puis visitez +@SUBSCRIBE@ +et désabonnez-vous de la page ou de la catégorie. + +-- +Ce courriel a été généré par Dokuwiki : +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/fr/subscr_single.txt b/inc/lang/fr/subscr_single.txt new file mode 100644 index 000000000..1b9d5e1b5 --- /dev/null +++ b/inc/lang/fr/subscr_single.txt @@ -0,0 +1,22 @@ +Bonjour, + +La page « @PAGE@ » dans le wiki « @TITLE@ » a été modifiée. Voici ces modifications : + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Date : @DATE@ +Utilisateur : @USER@ +Résumé : @SUMMARY@ +Révision précédente : @OLDPAGE@ +Nouvelle révision : @NEWPAGE@ + +Pour annuler les notifications de page, connectez-vous au wiki à l'adresse +@DOKUWIKIURL@ puis visitez +@SUBSCRIBE@ +et désabonnez-vous de la page ou de la catégorie. + +-- +Ce courriel a été généré par Dokuwiki : +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/fr/uploadmail.txt b/inc/lang/fr/uploadmail.txt index 3a186b554..05b3205d7 100644 --- a/inc/lang/fr/uploadmail.txt +++ b/inc/lang/fr/uploadmail.txt @@ -1,4 +1,4 @@ -Un fichier a été envoyé dans votre DokuWiki. En voici les détails : +Un fichier a été téléversé dans votre wiki. En voici les détails : Fichier : @MEDIA@ Date : @DATE@ diff --git a/inc/lang/fr/wordblock.txt b/inc/lang/fr/wordblock.txt deleted file mode 100644 index ae5962a80..000000000 --- a/inc/lang/fr/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== Changement bloqué ====== - -Vos changements n'ont **pas été enregistrés** car ils contiennent un ou plusieurs mots bloqués. Si vous avez essayé de spammer le Wiki -- mauvaise idée ! Si vous pensez que c'est une erreur, contactez l'administrateur de ce Wiki. - diff --git a/inc/lang/gl/admin.txt b/inc/lang/gl/admin.txt index a5bb1753d..eeaed992a 100644 --- a/inc/lang/gl/admin.txt +++ b/inc/lang/gl/admin.txt @@ -1,4 +1,4 @@ ====== Administración ====== -A continuación pode encontrar unha lista de tarefas administrativas dispoñíbeis no DokuWiki. +De seguido podes atopar unha lista de tarefas administrativas dispoñíbeis no DokuWiki. diff --git a/inc/lang/gl/adminplugins.txt b/inc/lang/gl/adminplugins.txt index e791265e6..e52172ebc 100644 --- a/inc/lang/gl/adminplugins.txt +++ b/inc/lang/gl/adminplugins.txt @@ -1 +1 @@ -===== Plugins adicionais =====
\ No newline at end of file +===== Extensións adicionais =====
\ No newline at end of file diff --git a/inc/lang/gl/backlinks.txt b/inc/lang/gl/backlinks.txt index 90066d032..f77b74bbd 100644 --- a/inc/lang/gl/backlinks.txt +++ b/inc/lang/gl/backlinks.txt @@ -1,4 +1,4 @@ ====== Ligazóns entrantes ====== -Isto é unha listaxe de páxinas que parecen estar vinculadas á páxina actual. +Isto é unha listaxe de páxinas que semellan ligar coa páxina actual. diff --git a/inc/lang/gl/conflict.txt b/inc/lang/gl/conflict.txt index e63e5b216..dcd87c7a5 100644 --- a/inc/lang/gl/conflict.txt +++ b/inc/lang/gl/conflict.txt @@ -1,6 +1,6 @@ ====== Hai unha versión máis nova ====== -Hai unha versión máis nova do documento que editou. Isto sucede cando outra persoa usuaria alterou o documento mentres vostede o estaba a editar. +Hai unha versión máis nova do documento que editaches. Isto sucede cando outro usuario mudou o documento mentres ti estabas a editalo. -Examine as diferenzas que se mostran abaixo detalladamente e despois decida a versión que quere manter. Se selecciona ''Gardar'', gardarase a súa versión. Prema en ''Cancelar'' para manter a versión actual. +Examina as diferenzas amosadas embaixo polo miúdo, e logo decide que versión queres manter. Se escolleres ''Gardar'', gardarase a túa versión. Preme en ''Cancelar'' para manteres a versión actual. diff --git a/inc/lang/gl/denied.txt b/inc/lang/gl/denied.txt index 8d388a8bb..69408a4f3 100644 --- a/inc/lang/gl/denied.txt +++ b/inc/lang/gl/denied.txt @@ -1,4 +1,4 @@ -====== Permiso denegado ====== +====== Permiso Denegado ====== -Sentímolo, mais non ten os permisos suficientes para continuar. É posíbel que esquecese iniciar unha sesión. +Sentímolo, mais non tes permisos de abondo para continuares. Pode que esqueceses iniciar a sesión? diff --git a/inc/lang/gl/diff.txt b/inc/lang/gl/diff.txt index 5660e4025..df87707f0 100644 --- a/inc/lang/gl/diff.txt +++ b/inc/lang/gl/diff.txt @@ -1,4 +1,4 @@ ====== Diferenzas ====== -Isto mostra as diferenzas entre a revisión seleccionada e a versión actual da páxina. +Isto amosa as diferenzas entre a revisión seleccionada e a versión actual da páxina. diff --git a/inc/lang/gl/draft.txt b/inc/lang/gl/draft.txt index 8e2aa19f2..ac36dc01a 100644 --- a/inc/lang/gl/draft.txt +++ b/inc/lang/gl/draft.txt @@ -1,6 +1,6 @@ -====== Encontrouse un ficheiro de borrador ====== +====== Arquivo de rascuño atopado ====== -A súa última sesión de edición desta páxina non terminou de modo correcto. O DokuWiki gardou automaticamente un borrador durante o seu traballo que agora pode usar para continuar coa edición. A continuación pode ver os datos que foron gardados durante a súa última sesión. +A túa última sesión de edición desta páxina non foi completada de xeito correcto. O DokuWiki gravou automaticamente un rascuño durante o teu traballo que agora podes usar para continuares coa edición. De seguido podes ver os datos que foron gardados da túa última sesión. -Por favor, escolla entre se se quere //Recuperar// a súa sesión de edición perdida, //Eliminar// o borrador gardado automaticamente ou //Cancelar// o proceso de edición. +Por favor, escolle se queres //Recuperar// a túa sesión de edición perdida, //Eliminar// o borrador autogardado ou //Cancelar// o proceso de edición. diff --git a/inc/lang/gl/edit.txt b/inc/lang/gl/edit.txt index 9e2061b51..1cc124300 100644 --- a/inc/lang/gl/edit.txt +++ b/inc/lang/gl/edit.txt @@ -1,2 +1,2 @@ -Edite a páxina e prema en ''Gardar''. Vexa a páxina [[wiki:syntax|sintaxe]] para aprender a sintaxe da Wiki. Edite a páxina só se pode **mellorala**. Se quere facer probas, aprenda como efectuar os seus primeiros pasos no [[playground:playground|campo de xogo]]. +Edita a páxina e preme en ''Gardar''. Bótalle un ollo á [[wiki:syntax|sintaxe]] para veres a sintaxe do Wiki. Por favor, edita a páxina só se podes **mellorala**. Se quixeres facer probas, aprende como levar a cabo os teus primeiros pasos na [[playground:playground|eira]]. diff --git a/inc/lang/gl/editrev.txt b/inc/lang/gl/editrev.txt index c582fc3d0..d6a0490a3 100644 --- a/inc/lang/gl/editrev.txt +++ b/inc/lang/gl/editrev.txt @@ -1,2 +1,2 @@ -**Cargou unha revisión antiga do documento!** Se o garda, creará unha versión nova con eses datos. +**Cargaches unha revisión antiga do documento!** Se o gardares, crearás unha nova versión con estes datos. ---- diff --git a/inc/lang/gl/install.html b/inc/lang/gl/install.html index 017abad8f..ca26f7961 100644 --- a/inc/lang/gl/install.html +++ b/inc/lang/gl/install.html @@ -1,25 +1,25 @@ -<p>Esta páxina é unha axuda para a primeira instalación e configuración do -<a href="http://dokuwiki.org">Dokuwiki</a>. Se quere máis información -sobre este instalador, está dispoñíbel na súa propia +<p>Esta páxina é unha axuda na primeira vez que se instala e configura o +<a href="http://dokuwiki.org">Dokuwiki</a>. Se queres máis información +verbo deste instalador está dispoñible na súa propia <a href="http://dokuwiki.org/installer">páxina de documentación</a>.</p> -<p>O DokuWiki usa ficheiros normais para o almacenamento das páxinas do wiki -e outra información asociada ás mesmas (por ex. imaxes, índices de procura, -revisións antigas etc.). Por iso, para poder operar correctamente, o DokuWiki -<strong>precisa</strong> ter acceso de escritura nos directorios que conteñen -eses ficheiros. Este instalador non é quen de configurar os permisos dos directorios. -Isto debe facerse normalmente de xeito directo na liña de comandos ou, se está a -usar unha hospedaxe, a través do FTP ou do panel de control da súa hospedaxe (por ex. +<p>O DokuWiki emprega arquivos normais para a almacenaxe das páxinas do wiki +e outra información asociada coas mesmas (p.e. imaxes, índices de procura, +revisións antigas, etc). Por iso, para poder operar correctamente, o DokuWiki +<strong>precisa</strong> ter acceso de escritura aos directorios que conteñen +eses arquivos. Este instalador non é quen de configurar os permisos dos directorios. +Isto debe facerse normalmente de xeito directo na liña de comandos ou, se estás a +usar unha hospedaxe, a través do FTP ou do panel de control da túa hospedaxe (p.e. o cPanel).</p> -<p>Este instalador configurará o seu DokuWiki para o uso da -<acronym title="access control list">ACL</acronym>, o cal lle permitirá á persoa administradora -iniciar unha sesión e acceder ao menú de administración do DokuWiki para instalar plugins, -xestionar as persoas usuarias e os accesos ás páxinas do wiki; ademais de modificar a configuración. -Non é imprescindíbel para o funcionamento do DokuWiki, mais fai moito máis doada a +<p>Este instalador configurará o teu DokuWiki para o uso da +<acronym title="access control list">ACL</acronym>, o cal permitirá ao administrador +iniciar sesión e acceder ao menú de administración do DokuWiki para instalar extensións, +xestionar usuarios e accesos ás páxinas do wiki, ademais de modificar a configuración. +Non é imprescindíbel para o funcionamento do DokuWiki, porén, fai moito máis doada a administración do mesmo.</p> -<p>As persoas usuarias expertas ou con requisitos especiais de configuración poden visitar -as seguintes ligazóns para obter os pormenores relativos ás +<p>Os usuarios expertos ou con requisitos especiais de configuración poden visitar +as seguintes ligazóns para obter pormenores relativos ás <a href="http://dokuwiki.org/install">instruccións de instalación</a> e á <a href="http://dokuwiki.org/config">configuración</a>.</p> diff --git a/inc/lang/gl/lang.php b/inc/lang/gl/lang.php index 2f34a02a0..9f1b48173 100644 --- a/inc/lang/gl/lang.php +++ b/inc/lang/gl/lang.php @@ -3,9 +3,7 @@ * galician language file * * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) - * @author CiberIrmandade da Fala <infoxeral@ciberirmandade.org> - * @author Tagen Ata <localizacion@tagenata> - * @author Leandro Regueiro <leandro.regueiro@gmail.com> + * @author Medúlio <medulio@ciberirmandade.org> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -15,8 +13,8 @@ $lang['singlequoteopening'] = '‘'; $lang['singlequoteclosing'] = '’'; $lang['apostrophe'] = '’'; $lang['btn_edit'] = 'Editar esta páxina'; -$lang['btn_source'] = 'Mostrar o código da páxina'; -$lang['btn_show'] = 'Mostrar a páxina'; +$lang['btn_source'] = 'Amosar a fonte da páxina'; +$lang['btn_show'] = 'Amosar páxina'; $lang['btn_create'] = 'Crear esta páxina'; $lang['btn_search'] = 'Procurar'; $lang['btn_save'] = 'Gardar'; @@ -25,215 +23,252 @@ $lang['btn_top'] = 'Comezo da páxina'; $lang['btn_newer'] = '<< máis recente'; $lang['btn_older'] = 'menos recente >>'; $lang['btn_revs'] = 'Revisións antigas'; -$lang['btn_recent'] = 'Cambios recentes'; +$lang['btn_recent'] = 'Trocos recentes'; $lang['btn_upload'] = 'Subir'; $lang['btn_cancel'] = 'Cancelar'; $lang['btn_index'] = 'Índice'; $lang['btn_secedit'] = 'Editar'; -$lang['btn_login'] = 'Iniciar unha sesión'; -$lang['btn_logout'] = 'Terminar a sesión'; +$lang['btn_login'] = 'Iniciar sesión'; +$lang['btn_logout'] = 'Rematar sesión'; $lang['btn_admin'] = 'Administración'; $lang['btn_update'] = 'Actualizar'; $lang['btn_delete'] = 'Borrar'; $lang['btn_back'] = 'Atrás'; -$lang['btn_backlink'] = 'Ligazón entrante'; -$lang['btn_backtomedia'] = 'Volver á Selección de Ficheiros multimedia'; -$lang['btn_subscribe'] = 'Avisar dos cambios na páxina'; -$lang['btn_unsubscribe'] = 'Non avisar dos cambios na páxina'; -$lang['btn_subscribens'] = 'Avísar dos cambios nos Nomes de espazo'; -$lang['btn_unsubscribens'] = 'Non avisar dos cambios nos Nomes de espazo'; -$lang['btn_profile'] = 'Actualizar o perfil'; +$lang['btn_backlink'] = 'Ligazóns con isto'; +$lang['btn_backtomedia'] = 'Volver á Selección de Arquivos-Media'; +$lang['btn_subscribe'] = 'Avísame dos trocos na páxina'; +$lang['btn_profile'] = 'Actualizar Perfil'; $lang['btn_reset'] = 'Reiniciar'; -$lang['btn_resendpwd'] = 'Enviar un contrasinal novo'; -$lang['btn_draft'] = 'Editar o borrador'; -$lang['btn_recover'] = 'Recuperar o borrador'; -$lang['btn_draftdel'] = 'Eliminar o borrador'; +$lang['btn_resendpwd'] = 'Envíame un novo contrasinal'; +$lang['btn_draft'] = 'Editar borrador'; +$lang['btn_recover'] = 'Recuperar borrador'; +$lang['btn_draftdel'] = 'Eliminar borrador'; $lang['btn_revert'] = 'Restaurar'; -$lang['loggedinas'] = 'Iniciou unha sesión como'; -$lang['user'] = 'Nome de persoa usuaria'; +$lang['loggedinas'] = 'Iniciaches sesión como'; +$lang['user'] = 'Nome de Usuario'; $lang['pass'] = 'Contrasinal'; -$lang['newpass'] = 'Contrasinal novo'; -$lang['oldpass'] = 'Confirmar o contrasinal actual'; +$lang['newpass'] = 'Novo Contrasinal'; +$lang['oldpass'] = 'Confirmar contrasinal actual'; $lang['passchk'] = 'de novo'; $lang['remember'] = 'Lémbrame'; -$lang['fullname'] = 'Nome completo'; -$lang['email'] = 'Correo'; +$lang['fullname'] = 'Nome Completo'; +$lang['email'] = 'Correo-e'; $lang['register'] = 'Rexístrate'; -$lang['profile'] = 'Perfil de persoa usuaria'; -$lang['badlogin'] = 'Sentímolo, mais o nome de persoa usuaria ou o contrasinal non son correctos.'; -$lang['minoredit'] = 'Cambios menores'; -$lang['draftdate'] = 'O borrador gardouse automaticamente en'; -$lang['nosecedit'] = 'A páxina cambiou, no entanto, a información da sección estaba desactualizada, polo que se cargou a páxina completa en seu lugar.'; -$lang['regmissing'] = 'Sentímolo, mais ten que encher todos os campos.'; -$lang['reguexists'] = 'Sentímolo, mais xa existe unha persoa usuaria con ese nome.'; -$lang['regsuccess'] = 'A persoa usuaria foi creada e o contrasinal enviado por correo electrónico.'; -$lang['regsuccess2'] = 'A persoa usuaria foi creada.'; -$lang['regmailfail'] = 'Semella que houbo un erro ao tentar enviar o correo co contrasinal. Contacte coa persoa administradora!'; -$lang['regbadmail'] = 'O enderezo de correo proporcionado semella incorrecto - se considera que isto é un erro, contacte coa persoa administradora'; -$lang['regbadpass'] = 'Os dous contrasinais introducidos non coinciden: Ténteo de novo.'; -$lang['regpwmail'] = 'O seu contrasinal do DokuWiki'; -$lang['reghere'] = 'Aínda non ten unha conta? Cree unha'; -$lang['profna'] = 'Esta wiki non permite modificacións dos perfís'; -$lang['profnochange'] = 'Non hai cambios, non hai nada para facer.'; -$lang['profnoempty'] = 'Non se permite un nome ou un enderezo de correo baleiros.'; -$lang['profchanged'] = 'O perfil de persoa usuaria foi actualizado correctamente.'; -$lang['pwdforget'] = 'Esqueceu o seu contrasinal? Obteña un novo'; -$lang['resendna'] = 'Esta wiki non permite o reenvío de contrasinais.'; -$lang['resendpwd'] = 'Enviar un contrasinal novo a'; -$lang['resendpwdmissing'] = 'Sentímolo, ten que encher todos os campos.'; -$lang['resendpwdnouser'] = 'Sentímolo, non encontramos esta persoa usuaria na nosa base de datos.'; -$lang['resendpwdbadauth'] = 'Sentímolo, mais este código de autorización non é válido. Asegúrese de que usou a ligazón completa de confirmación.'; -$lang['resendpwdconfirm'] = 'Enviouse unha ligazón de confirmación por correo.'; -$lang['resendpwdsuccess'] = 'O seu novo contrasinal foi enviado por correo.'; -$lang['license'] = 'O contido deste wiki, agás onde se indique o contrario, ofrécese baixo a seguinte licenza:'; -$lang['licenseok'] = 'Nota: Ao editar esta páxina estás a aceptar o licenciamento do contido baixo a seguinte licenza:'; -$lang['searchmedia'] = 'Buscar nome de ficheiro:'; -$lang['searchmedia_in'] = 'Buscar en %s'; -$lang['txt_upload'] = 'Selecciona o arquivo para subir'; +$lang['profile'] = 'Perfil de Usuario'; +$lang['badlogin'] = 'Sentímolo, mais o nome de usuario ou o contrasinal non son correctos.'; +$lang['minoredit'] = 'Trocos Menores'; +$lang['draftdate'] = 'Borrador gardado automaticamente en'; +$lang['nosecedit'] = 'A páxina mudou entrementres, a información da sección estaba desfasada polo que se cargou a páxina completa no seu lugar.'; +$lang['regmissing'] = 'Sentímolo, mais tes que cubrir todos os campos.'; +$lang['reguexists'] = 'Sentímolo, mais xa existe un usuario con ese nome.'; +$lang['regsuccess'] = 'O usuario foi creado e o contrasinal enviado por correo-e.'; +$lang['regsuccess2'] = 'O usuario foi creado.'; +$lang['regmailfail'] = 'Semella que houbo un erro ao tentar enviar o correo-e co contrasinal. Por favor, contacta co administrador!'; +$lang['regbadmail'] = 'O enderezo de correo-e proporcionado semella incorrecto - se consideras que isto é un erro, contacta co administrador'; +$lang['regbadpass'] = 'Os dous contrasinais inseridos non coinciden, por favor téntao de novo.'; +$lang['regpwmail'] = 'O teu contrasinal do DokuWiki'; +$lang['reghere'] = 'Aínda non tes unha conta? Crea a túa'; +$lang['profna'] = 'Este wiki non permite modificacións dos perfís'; +$lang['profnochange'] = 'Non hai trocos, nada que facer.'; +$lang['profnoempty'] = 'Non se permite un nome ou un enderezo de correo-e baleiros.'; +$lang['profchanged'] = 'Perfil de usuario actualizado correctamente.'; +$lang['pwdforget'] = 'Esqueceches o teu contrasinal? Consegue un novo'; +$lang['resendna'] = 'Este wiki non permite o reenvío de contrasinais.'; +$lang['resendpwd'] = 'Enviar novo contrasinal para'; +$lang['resendpwdmissing'] = 'Sentímolo, tes que cubrir todos os campos.'; +$lang['resendpwdnouser'] = 'Sentímolo, non atopamos este usuario no noso banco de datos.'; +$lang['resendpwdbadauth'] = 'Sentímolo, mais este código de autorización non é válido. Asegúrate de que usaches a ligazón completa de confirmación.'; +$lang['resendpwdconfirm'] = 'Enviouse unha ligazón de confirmación por correo-e.'; +$lang['resendpwdsuccess'] = 'O teu novo contrasinal foi enviado por correo-e.'; +$lang['license'] = 'O contido deste wiki, agás onde se indique o contrario, ofrécese baixo da seguinte licenza:'; +$lang['licenseok'] = 'Nota: Ao editares esta páxina estás a aceptar o licenciamento do contido baixo da seguinte licenza:'; +$lang['searchmedia'] = 'Procurar nome de arquivo:'; +$lang['searchmedia_in'] = 'Procurar en %s'; +$lang['txt_upload'] = 'Escolle o arquivo para subir'; $lang['txt_filename'] = 'Subir como (opcional)'; -$lang['txt_overwrt'] = 'Sobrescribir o arquivo existente'; +$lang['txt_overwrt'] = 'Sobrescribir arquivo existente'; $lang['lockedby'] = 'Bloqueado actualmente por'; -$lang['lockexpire'] = 'O bloqueo termina o'; -$lang['willexpire'] = 'O seu bloqueo para editar esta páxina vai caducar nun minuto.\nPara de evitar conflitos, use o botón de previsualización para reiniciar o contador do tempo de bloqueo.'; -$lang['notsavedyet'] = 'Perderanse os cambios non gardados.\nEstá segura/o de que quere continuar?'; -$lang['rssfailed'] = 'Houbo un erro ao tentar obter este fío RSS: '; -$lang['nothingfound'] = 'Non se encontrou nada.'; -$lang['mediaselect'] = 'Ficheiros multimedia'; -$lang['fileupload'] = 'Subir ficheiros multimedia'; -$lang['uploadsucc'] = 'Subiuse correctamente'; -$lang['uploadfail'] = 'Fallou ao subir. É posíbel que sexa un problema de permisos?'; -$lang['uploadwrong'] = 'Subida denegada. Esta extensión de ficheiro non está permitida!'; -$lang['uploadexist'] = 'Xa existe o ficheiro. Non se fixo nada.'; -$lang['uploadbadcontent'] = 'O contido subido non concorda coa extensión de ficheiro %s.'; -$lang['uploadspam'] = 'A subida foi bloqueada pola lista negra de correo lixo.'; +$lang['lockexpire'] = 'O bloqueo remata o'; +$lang['willexpire'] = 'O teu bloqueo para editares esta páxina vai caducar nun minuto.\nPara de evitar conflitos, emprega o botón de previsualización para reiniciares o contador do tempo de bloqueo.'; +$lang['js']['notsavedyet'] = "Perderanse os trocos non gardados.\nEstá certo de quereres continuar?"; +$lang['rssfailed'] = 'Houbo un erro ao tentar obter esta corrente RSS: '; +$lang['nothingfound'] = 'Non se atopou nada.'; +$lang['mediaselect'] = 'Arquivos-Media'; +$lang['fileupload'] = 'Subida de Arquivos-Media'; +$lang['uploadsucc'] = 'Subida correcta'; +$lang['uploadfail'] = 'Erra na subida. Pode que sexa un problema de permisos?'; +$lang['uploadwrong'] = 'Subida denegada. Esta extensión de arquivo non está permitida!'; +$lang['uploadexist'] = 'Xa existe o arquivo. Non se fixo nada.'; +$lang['uploadbadcontent'] = 'O contido subido non concorda coa extensión do arquivo %s.'; +$lang['uploadspam'] = 'A subida foi bloqueada pola lista negra de correo-lixo.'; $lang['uploadxss'] = 'A subida foi bloqueada por un posíbel contido malicioso.'; -$lang['uploadsize'] = 'O ficheiro subido é grande de máis. (máx. %s)'; -$lang['deletesucc'] = 'O ficheiro "%s" foi eliminado.'; -$lang['deletefail'] = '"%s" non puido ser eliminado - comprobe os permisos.'; -$lang['mediainuse'] = 'O ficheiro "%s" non foi eliminado - aínda está en uso.'; +$lang['uploadsize'] = 'O arquivo subido é grande de máis. (máx. %s)'; +$lang['deletesucc'] = 'O arquivo "%s" foi eliminado.'; +$lang['deletefail'] = '"%s" non puido ser eliminado - comproba os permisos.'; +$lang['mediainuse'] = 'O arquivo "%s" non foi eliminado - aínda está en uso.'; $lang['namespaces'] = 'Nomes de espazos'; -$lang['mediafiles'] = 'Ficheiro dispoñíbeis en'; -$lang['js']['searchmedia'] = 'Buscar ficheiros'; -$lang['js']['keepopen'] = 'Manter a xanela aberta na selección'; -$lang['js']['hidedetails'] = 'Ocultar os detalles'; -$lang['js']['nosmblinks'] = 'A ligazón aos compartidos do Windows só funciona co Microsoft Internet Explorer. +$lang['mediafiles'] = 'Arquivos dispoñíbeis en'; +$lang['js']['searchmedia'] = 'Procurar ficheiros'; +$lang['js']['keepopen'] = 'Manter a fiestra aberta na selección'; +$lang['js']['hidedetails'] = 'Agochar Pormenores'; +$lang['js']['mediatitle'] = 'Configuración de ligazón'; +$lang['js']['mediadisplay'] = 'Tipo de ligazón'; +$lang['js']['mediaalign'] = 'Aliñamento'; +$lang['js']['mediasize'] = 'Tamaño de imaxe'; +$lang['js']['mediatarget'] = 'Albo da ligazón'; +$lang['js']['mediaclose'] = 'Fechar'; +$lang['js']['mediainsert'] = 'Inserir'; +$lang['js']['mediadisplayimg'] = 'Amosar a imaxe'; +$lang['js']['mediadisplaylnk'] = 'Amosar só a ligazón'; +$lang['js']['mediasmall'] = 'Versión reducida'; +$lang['js']['mediamedium'] = 'Versión media'; +$lang['js']['medialarge'] = 'Versión grande'; +$lang['js']['mediaoriginal'] = 'Versión orixinal'; +$lang['js']['medialnk'] = 'Ligazón para a páxina de pormenores'; +$lang['js']['mediadirect'] = 'Ligazón directa para o orixinal'; +$lang['js']['medianolnk'] = 'Sen ligazón'; +$lang['js']['medianolink'] = 'Non ligar a imaxe'; +$lang['js']['medialeft'] = 'Aliñar a imaxe á esquerda'; +$lang['js']['mediaright'] = 'Aliñar a imaxe á dereita'; +$lang['js']['mediacenter'] = 'Aliñar a iamxe ao medio'; +$lang['js']['medianoalign'] = 'Non empregar aliñamento'; +$lang['js']['nosmblinks'] = 'A ligazón aos compartidos do Windows só funciona no Microsoft Internet Explorer. Sempre podes copiar e colar a ligazón.'; $lang['js']['linkwiz'] = 'Asistente de ligazóns'; -$lang['js']['linkto'] = 'Ligazón a:'; -$lang['js']['del_confirm'] = 'Quere eliminar os elementos seleccionados?'; -$lang['js']['mu_btn'] = 'Subir varios ficheiros dunha vez'; -$lang['mediausage'] = 'Utilice a seguinte sintaxe para referenciar este ficheiro:'; -$lang['mediaview'] = 'Ver o ficheiro orixinal'; -$lang['mediaroot'] = 'raíz'; -$lang['mediaupload'] = 'Suba aquí un ficheiro ao nome de espazo actual. Para crear subnomes de espazos deberá engadilos ao principio do seu nome de ficheiro en "Subir como", separados por dous puntos.'; -$lang['mediaextchange'] = 'A extensión de ficheiro foi alterada de .%s a .%s!'; +$lang['js']['linkto'] = 'Ligazón para:'; +$lang['js']['del_confirm'] = 'Estás certo de quereres eliminar os elementos seleccionados?'; +$lang['js']['mu_btn'] = 'Subir varios arquivos de vez'; +$lang['mediausage'] = 'Emprega a seguinte sintaxe para inserires unha referencia a este arquivo:'; +$lang['mediaview'] = 'Ver arquivo orixinal'; +$lang['mediaroot'] = 'raigaña'; +$lang['mediaupload'] = 'Sube aquí un arquivo ao nome de espazo actual. Para creares sub-nomes de espazos deberás antepoñelos ao nome indicado en "Subir como" separados por dous puntos.'; +$lang['mediaextchange'] = 'Extensión de arquivo mudada de .%s a .%s!'; $lang['reference'] = 'Referencias para'; -$lang['ref_inuse'] = 'O ficheiro non pode ser eliminado, xa que aínda está a ser usado polas seguintes páxinas:'; -$lang['ref_hidden'] = 'Algunhas referencias están en páxinas para as cales non ten permisos de lectura'; -$lang['hits'] = 'Visualizacións'; +$lang['ref_inuse'] = 'O arquivo non pode ser eliminado, xa que aínda está a ser usado polas seguintes páxinas:'; +$lang['ref_hidden'] = 'Algunhas referencias están en páxinas para as cales non tes permisos de lectura'; +$lang['hits'] = 'Vistas'; $lang['quickhits'] = 'Nomes de páxinas coincidentes'; -$lang['toc'] = 'Táboa de contidos'; +$lang['toc'] = 'Táboa de Contidos'; $lang['current'] = 'actual'; -$lang['yours'] = 'A súa versión'; -$lang['diff'] = 'Mostrar as diferenzas coa versión actual'; -$lang['diff2'] = 'Mostrar as diferenzas entre as revisións seleccionadas'; +$lang['yours'] = 'A túa Versión'; +$lang['diff'] = 'Amosar diferenzas coa versión actual'; +$lang['diff2'] = 'Amosar diferenzas entre as revisións seleccionadas'; $lang['line'] = 'Liña'; $lang['breadcrumb'] = 'Trazado'; -$lang['youarehere'] = 'Vostede está aquí'; +$lang['youarehere'] = 'Estás aquí'; $lang['lastmod'] = 'Última modificación'; $lang['by'] = 'por'; $lang['deleted'] = 'eliminado'; $lang['created'] = 'creado'; -$lang['restored'] = 'a revisión antiga foi restaurada'; +$lang['restored'] = 'revisión antiga restaurada'; $lang['external_edit'] = 'edición externa'; $lang['summary'] = 'Resumo da edición'; -$lang['noflash'] = 'Precísase o <a href="http://www.adobe.com/products/flashplayer/">Plugin Adobe Flash</a> para mostrar este contido.'; +$lang['noflash'] = 'Precísase o <a href="http://www.adobe.com/products/flashplayer/">Extensión Adobe Flash</a> para amosar este contido.'; +$lang['download'] = 'Descargar Retallo (Snippet)'; $lang['mail_newpage'] = 'páxina engadida:'; -$lang['mail_changed'] = 'páxina alterada:'; -$lang['mail_new_user'] = 'Persoa usuaria nova:'; -$lang['mail_upload'] = 'ficheiro subido:'; -$lang['qb_bold'] = 'Texto en negra'; -$lang['qb_italic'] = 'Texto en cursiva'; -$lang['qb_underl'] = 'Texto subliñado'; -$lang['qb_code'] = 'Texto de código'; -$lang['qb_strike'] = 'Texto riscado'; -$lang['qb_h1'] = 'Título de nivel 1'; -$lang['qb_h2'] = 'Título de nivel 2'; -$lang['qb_h3'] = 'Título de nivel 3'; -$lang['qb_h4'] = 'Título de nivel 4'; -$lang['qb_h5'] = 'Título de nivel 5'; -$lang['qb_link'] = 'Ligazón interna'; -$lang['qb_extlink'] = 'Ligazón externa'; -$lang['qb_hr'] = 'Liña horizontal'; -$lang['qb_ol'] = 'Elemento de lista ordenada'; -$lang['qb_ul'] = 'Elemento de lista desordenada'; -$lang['qb_media'] = 'Engadir imaxes e outros ficheiros'; -$lang['qb_sig'] = 'Inserir unha sinatura'; -$lang['qb_smileys'] = 'Emoticonas'; -$lang['qb_chars'] = 'Caracteres especiais'; -$lang['admin_register'] = 'Engadir unha persoa usuaria nova'; -$lang['metaedit'] = 'Editar os metadatos'; +$lang['mail_changed'] = 'páxina mudada:'; +$lang['mail_subscribe_list'] = 'páxinas mudadas en nome de espazo:'; +$lang['mail_new_user'] = 'Novo usuario:'; +$lang['mail_upload'] = 'arquivo subido:'; +$lang['qb_bold'] = 'Texto Resaltado'; +$lang['qb_italic'] = 'Texto en Cursiva'; +$lang['qb_underl'] = 'Texto Subliñado'; +$lang['qb_code'] = 'Texto de Código'; +$lang['qb_strike'] = 'Texto Riscado'; +$lang['qb_h1'] = 'Liña de Cabeceira de Nivel 1'; +$lang['qb_h2'] = 'Liña de Cabeceira de Nivel 2'; +$lang['qb_h3'] = 'Liña de Cabeceira de Nivel 3'; +$lang['qb_h4'] = 'Liña de Cabeceira de Nivel 4'; +$lang['qb_h5'] = 'Liña de Cabeceira de Nivel 5'; +$lang['qb_h'] = 'Liña de Cabeceira'; +$lang['qb_hs'] = 'Escoller Liña de Cabeceira'; +$lang['qb_hplus'] = 'Liña de Cabeceira Máis Alta'; +$lang['qb_hminus'] = 'Liña de Cabeceira Máis Baixa'; +$lang['qb_hequal'] = 'Liña de Cabeceira ao Mesmo Nivel'; +$lang['qb_link'] = 'Ligazón Interna'; +$lang['qb_extlink'] = 'Ligazón Externa'; +$lang['qb_hr'] = 'Liña Horizontal'; +$lang['qb_ol'] = 'Elemento de Lista Ordenada'; +$lang['qb_ul'] = 'Elemento de Lista Desordenada'; +$lang['qb_media'] = 'Engadir Imaxes e Outros Arquivos'; +$lang['qb_sig'] = 'Inserir Sinatura'; +$lang['qb_smileys'] = 'Risoños'; +$lang['qb_chars'] = 'Caracteres Especiais'; +$lang['upperns'] = 'choutar ao nome de espazo pai'; +$lang['admin_register'] = 'Engadir novo usuario'; +$lang['metaedit'] = 'Editar Metadatos'; $lang['metasaveerr'] = 'Non se puideron escribir os metadatos'; -$lang['metasaveok'] = 'Os metadatos foron gardados'; +$lang['metasaveok'] = 'Metadatos gardados'; $lang['img_backto'] = 'Volver a'; $lang['img_title'] = 'Título'; $lang['img_caption'] = 'Lenda'; $lang['img_date'] = 'Data'; -$lang['img_fname'] = 'Nome do ficheiro'; +$lang['img_fname'] = 'Nome de arquivo'; $lang['img_fsize'] = 'Tamaño'; -$lang['img_artist'] = 'Fotógrafa/o'; +$lang['img_artist'] = 'Fotógrafo'; $lang['img_copyr'] = 'Copyright'; $lang['img_format'] = 'Formato'; $lang['img_camera'] = 'Cámara'; -$lang['img_keywords'] = 'Palabras chave'; -$lang['subscribe_success'] = '%s foi engadido á lista de subscrición de cambios de %s'; -$lang['subscribe_error'] = 'Erro ao tentar engadir %s á lista de subscrición de cambios de %s'; -$lang['subscribe_noaddress'] = 'Non hai ningún enderezo asociado ao seu nome de persoa usuaria: non pode ser engadida/o á lista de subscrición'; -$lang['unsubscribe_success'] = 'Eliminouse %s da lista de subscrición de cambios de %s'; -$lang['unsubscribe_error'] = 'Erro ao tentar eliminar %s da lista de subscrición de cambios de %s'; -$lang['authmodfailed'] = 'A configuración de autenticación de persoa usuaria é incorrecta. Informe á persoa administradora do seu Wiki.'; -$lang['authtempfail'] = 'A autenticación de persoa usuaria non está dispoñíbel de modo temporal. Se esta situación persiste informe á persoa administradora do seu Wiki.'; -$lang['i_chooselang'] = 'Seleccione o seu idioma'; +$lang['img_keywords'] = 'Verbas chave'; +$lang['subscr_subscribe_success'] = 'Engadido %s á lista de subscrición para %s'; +$lang['subscr_subscribe_error'] = 'Erro ao tentar engadir %s á lista de subscrición para %s'; +$lang['subscr_subscribe_noaddress'] = 'Non hai enderezos asociados co teu inicio de sesión, non é posíbel engadirte á lista de subscrición'; +$lang['subscr_unsubscribe_success'] = 'Eliminado %s da lista de subscrición para %s'; +$lang['subscr_unsubscribe_error'] = 'Erro ao tentar eliminar %s da lista de subscrición para %s'; +$lang['subscr_already_subscribed'] = '%s xa está subscrito a %s'; +$lang['subscr_not_subscribed'] = '%s non está subscrito a %s'; +$lang['subscr_m_not_subscribed'] = 'Agora mesmo non estás subscrito á páxina ou nome de espazo actual'; +$lang['subscr_m_new_header'] = 'Engadir subscrición'; +$lang['subscr_m_current_header'] = 'Subscricións actuais'; +$lang['subscr_m_unsubscribe'] = 'Desubscribir'; +$lang['subscr_m_subscribe'] = 'Subscribir'; +$lang['subscr_m_receive'] = 'Recibir'; +$lang['subscr_style_every'] = 'correo-e en cada troco'; +$lang['subscr_style_digest'] = 'correo-e con resumo de trocos para cada páxina'; +$lang['subscr_style_list'] = 'lista de páxinas mudadas dende o último correo-e'; +$lang['authmodfailed'] = 'Configuración de autenticación de usuario incorrecta. Por favor, informa ao Administrador do teu Wiki.'; +$lang['authtempfail'] = 'A autenticación de usuario non está dispoñible de xeito temporal. De persistir esta situación, por favor, informa ao Administrador do teu Wiki.'; +$lang['i_chooselang'] = 'Escolle o teu idioma'; $lang['i_installer'] = 'Instalador do DokuWiki'; $lang['i_wikiname'] = 'Nome do Wiki'; -$lang['i_enableacl'] = 'Activar o lista de control de acceso (ACL) (recomendado)'; -$lang['i_superuser'] = 'Superusuaria/o'; -$lang['i_problems'] = 'O instalador encontrou algúns problemas que se mostran a continuación. Non poderá continuar até que os solucione.'; +$lang['i_enableacl'] = 'Activar ACL (recomendado)'; +$lang['i_superuser'] = 'Super-usuario'; +$lang['i_problems'] = 'O instalador atopou algúns problemas, que se amosan de seguido. Non poderás continuar até que os soluciones.'; $lang['i_modified'] = 'Por razóns de seguridade este script só funcionará cunha instalación nova e sen modificar do Dokuwiki. - Pode ou ben extraer de novo os ficheiros desde o paquete descargado ou consultar as + Podes ou ben extraer de novo os arquivos dende o paquete descargado ou consultar as <a href="http://dokuwiki.org/install">instruccións completas de instalación do Dokuwiki</a>'; -$lang['i_funcna'] = 'A función <code>%s</code> de PHP non está dispoñíbel. Pode que o seu provedor de hospedaxe a desactivase por algún motivo.'; -$lang['i_phpver'] = 'A súa versión <code>%s</code> de PHP é inferior á <code>%s</code> precisa. Debe actualizar a súa instalación de PHP.'; -$lang['i_permfail'] = '<code>%s</code> non é escribíbel polo DokuWiki. Debe corrixir a configuración de permisos deste directorio!'; +$lang['i_funcna'] = 'A función <code>%s</code> do PHP non está dispoñíbel. Pode que o teu provedor de hospedaxe a desactivase por algún motivo?'; +$lang['i_phpver'] = 'A túa versión <code>%s</code> do PHP é inferior á <code>%s</code> precisa. Debes actualizar a túa instalación do PHP.'; +$lang['i_permfail'] = '<code>%s</code> non é escribíbel polo DokuWiki. Debes corrixir a configuración de permisos deste directorio!'; $lang['i_confexists'] = '<code>%s</code> xa existe'; -$lang['i_writeerr'] = 'Non se puido crear <code>%s</code>. Terá que comprobar os permisos do directorio/ficheiro e crear o ficheiro de modo manual.'; -$lang['i_badhash'] = 'dokuwiki.php é irrecoñecíbel ou foi modificado (hash=<code>%s</code>)'; +$lang['i_writeerr'] = 'Non se puido crear <code>%s</code>. Terás de comprobar os permisos do directorio/arquivo e crear o ficheiro de xeito manual.'; +$lang['i_badhash'] = 'dokuwiki.php irrecoñecíbel ou modificado (hash=<code>%s</code>)'; $lang['i_badval'] = '<code>%s</code> - ilegal ou valor baleiro'; -$lang['i_success'] = 'A configuración terminou correctamente. Agora pode borrar o ficheiro install.php. Continúe até o - <a href="doku.php">seu novo DokuWiki</a>.'; -$lang['i_failure'] = 'Houbo algúns erros ao tentar escribir os ficheiros de configuración. Pode que precise solucionalos de mod manual antes - de que poder usar <a href="doku.php">o seu novo DokuWiki</a>.'; +$lang['i_success'] = 'A configuración rematou correctamente. Agora podes eliminar o arquivo install.php. Continúa deica o + <a href="doku.php">teu novo DokuWiki</a>.'; +$lang['i_failure'] = 'Houbo algúns erros ao tentar escribir os arquivos de configuración. Pode que precises solucionalos de xeito manual antes + de poderes empregar <a href="doku.php">o teu novo DokuWiki</a>.'; $lang['i_policy'] = 'Regras iniciais da ACL'; -$lang['i_pol0'] = 'Wiki aberto (lectura, escritura, subida de arquivos para todas as persoas)'; -$lang['i_pol1'] = 'Wiki público (lectura para todas as persoas, escritura e subida de ficheiros para as persoas usuarias rexistradas)'; -$lang['i_pol2'] = 'Wiki pechado (lectura, escritura, subida de arquivos só para as persoas usuarias rexistradas)'; +$lang['i_pol0'] = 'Wiki Aberto (lectura, escritura, subida de arquivos para todas as persoas)'; +$lang['i_pol1'] = 'Wiki Público (lectura para todas as persoas, escritura e subida de arquivos para usuarios rexistrados)'; +$lang['i_pol2'] = 'Wiki Fechado (lectura, escritura, subida de arquivos só para usuarios rexistrados)'; $lang['i_retry'] = 'Tentar de novo'; -$lang['mu_intro'] = 'Aquí podes subir varios ficheiros dunha vez. Preme o botón Examinar para engadilos á fila. Preme en Subir cando remates.'; -$lang['mu_gridname'] = 'Nome do ficheiro'; +$lang['mu_intro'] = 'Aquí podes subir varios arquivos de vez. Preme o botón Navegar para engadilos á cola. Preme en Subir cando remates.'; +$lang['mu_gridname'] = 'Nome de Arquivo'; $lang['mu_gridsize'] = 'Tamaño'; $lang['mu_gridstat'] = 'Estado'; -$lang['mu_namespace'] = 'Nome de espazo'; -$lang['mu_browse'] = 'Examinar'; -$lang['mu_toobig'] = 'demasiado grande'; -$lang['mu_ready'] = 'listo para subir'; +$lang['mu_namespace'] = 'Nome de Espazo'; +$lang['mu_browse'] = 'Navegar'; +$lang['mu_toobig'] = 'grande de máis'; +$lang['mu_ready'] = 'disposto para subir'; $lang['mu_done'] = 'feito'; $lang['mu_fail'] = 'fallou'; -$lang['mu_authfail'] = 'a sesión caducou'; +$lang['mu_authfail'] = 'sesión expirada'; $lang['mu_progress'] = '@PCT@% subido'; -$lang['mu_filetypes'] = 'Tipos de ficheiro permitidos'; -$lang['mu_info'] = 'ficheiros subidos.'; +$lang['mu_filetypes'] = 'Tipos de arquivo Permitidos'; +$lang['mu_info'] = 'arquivos subidos.'; $lang['mu_lasterr'] = 'Último erro:'; -$lang['recent_global'] = 'Agora mesmo está a ver os cambios no nome de espazo <b>%s</b>. Tamén pode <a href="%s">ver os cambios recentes en todo o Wiki</a>.'; +$lang['recent_global'] = 'Agora mesmo estás a ver os trocos no nome de espazo <b>%s</b>. Tamén podes <a href="%s">ver os trocos recentes no Wiki enteiro</a>.'; $lang['years'] = 'hai %d anos'; $lang['months'] = 'hai %d meses'; $lang['weeks'] = 'hai %d semanas'; diff --git a/inc/lang/gl/locked.txt b/inc/lang/gl/locked.txt index 14240335e..90f9ab082 100644 --- a/inc/lang/gl/locked.txt +++ b/inc/lang/gl/locked.txt @@ -1,3 +1,3 @@ ====== Páxina bloqueada ====== -Esta páxina está actualmente bloqueada para a edición por outra persoa usuaria. Terá que agardar até que esa persoa usuaria termine de editar a páxina ou a que expire o bloqueo. +Esta páxina está actualmente bloqueada para a edición por outro usuario. Terás que agardar até que este usuario remate coa edición ou a que expire o bloqueo. diff --git a/inc/lang/gl/login.txt b/inc/lang/gl/login.txt index 11719de50..506b30c6a 100644 --- a/inc/lang/gl/login.txt +++ b/inc/lang/gl/login.txt @@ -1,4 +1,4 @@ -====== Inicio de sesión ====== +====== Inicio de Sesión ====== -Actualmente non ten unha sesión iniciada! Insira as súas credenciais de autenticación para iniciar a sesión. Debe ter as cookies activadas para poder iniciar unha sesión. +Actualmente non iniciaches sesión ningunha! Insire as túas credenciais de identificación para iniciares a sesión. Debes ter as cookies activadas para poderes iniciar unha sesión. diff --git a/inc/lang/gl/mailtext.txt b/inc/lang/gl/mailtext.txt index f7c06bc83..a6799d697 100644 --- a/inc/lang/gl/mailtext.txt +++ b/inc/lang/gl/mailtext.txt @@ -1,13 +1,13 @@ -Engadiuse ou modificouse unha páxina do seu DokuWiki. Aquí van os detalles: +Engadiuse ou mudouse unha páxina no teu DokuWiki. Aquí van os pormenores: Data : @DATE@ Navegador : @BROWSER@ Enderezo IP : @IPADDRESS@ -Nome do host : @HOSTNAME@ -Revisión antiga : @OLDPAGE@ -Revision nova : @NEWPAGE@ -Resumo da edición : @SUMMARY@ -Usuaria/o : @USER@ +Nome do Host : @HOSTNAME@ +Revisión Antiga : @OLDPAGE@ +Revision Nova : @NEWPAGE@ +Resumo da Edición : @SUMMARY@ +Usuario : @USER@ @DIFF@ diff --git a/inc/lang/gl/newpage.txt b/inc/lang/gl/newpage.txt index c79ef6a41..c073f1194 100644 --- a/inc/lang/gl/newpage.txt +++ b/inc/lang/gl/newpage.txt @@ -1,4 +1,4 @@ ====== Este tema aínda non existe ====== -Seguiu unha ligazón até un tema que aínda non existe. Se ten os permisos adecuados, pode creala vostede premendo no botón ''Crear esta páxina''. +Seguiches unha ligazón deica un tema que aínda non existe. Se tes permisos axeitados, podes crealo ti premendo no botón ''Crear esta páxina''. diff --git a/inc/lang/gl/norev.txt b/inc/lang/gl/norev.txt index dd6027165..af7383da8 100644 --- a/inc/lang/gl/norev.txt +++ b/inc/lang/gl/norev.txt @@ -1,4 +1,4 @@ -====== Non existe esa revisión ====== +======Non hai tal revisión====== -A revisión especificada non existe. Utilice o botón ''Revisións antigas'' para obter un listado das revisións antigas deste documento. +A revisión especificada non existe. Utiliza o botón de ''Revisións Antigas'' para obteres unha listaxe das revisións antigas deste documento. diff --git a/inc/lang/gl/password.txt b/inc/lang/gl/password.txt index 3e69b6cca..652a55828 100644 --- a/inc/lang/gl/password.txt +++ b/inc/lang/gl/password.txt @@ -1,9 +1,9 @@ -Benvida/o @FULLNAME@! +Ola @FULLNAME@! -Aquí ten os seus datos de persoa usuaria para @TITLE@ en @DOKUWIKIURL@ +Aquí tes os teus datos de usuario para @TITLE@ en @DOKUWIKIURL@ -Nome de usuaria/o: @LOGIN@ -Contrasinal: @PASSWORD@ +Usuario : @LOGIN@ +Contrasinal : @PASSWORD@ -- Este correo foi xerado polo DokuWiki en diff --git a/inc/lang/gl/preview.txt b/inc/lang/gl/preview.txt index 01cc41dcc..e0f749ff0 100644 --- a/inc/lang/gl/preview.txt +++ b/inc/lang/gl/preview.txt @@ -1,4 +1,4 @@ ====== Previsualización ====== -Isto é unha previsualización de como aparecerá o seu texto. Lembre: **Aínda non está gardado!** +Isto é unha previsualización de como aparecerá o teu texto. Lembra: **Non está gardado** aínda! diff --git a/inc/lang/gl/pwconfirm.txt b/inc/lang/gl/pwconfirm.txt index e020790d3..ef20212ff 100644 --- a/inc/lang/gl/pwconfirm.txt +++ b/inc/lang/gl/pwconfirm.txt @@ -1,15 +1,15 @@ Ola @FULLNAME@! -Alguén solicitou un contrasinal novo para o seu inicio de sesión no +Alguén solicitou un novo contrasinal para o teu inicio de sesión @TITLE@ en @DOKUWIKIURL@ -Se non foi vostede quen o solicitou pode ignorar este correo. +Se non fuches ti quen o fixo podes ignorar este correo-e. -Para confirmar que esta solicitude foi realmente enviada por vostede -por favor, visite a seguinte ligazón. +Para confirmares que esta solicitude foi realmente enviada por ti, +por favor, visita a seguinte ligazón. @CONFIRM@ --- -Este correo foi xerador polo DokuWiki de +-- +Este correo-e foi xerado polo DokuWiki de @DOKUWIKIURL@ diff --git a/inc/lang/gl/read.txt b/inc/lang/gl/read.txt index 912864c31..28f3e1a95 100644 --- a/inc/lang/gl/read.txt +++ b/inc/lang/gl/read.txt @@ -1,2 +1,2 @@ -Esta páxina é só de lectura. Podes ver o código fonte, mais non pode alterala. Coméntello á persoa administradora se considera que é un erro. +Esta páxina é só de lectura. Podes ver o código fonte, mais non podes mudala. Coméntallo ao teu administrador se consideras que é un erro. diff --git a/inc/lang/gl/recent.txt b/inc/lang/gl/recent.txt index 93f8632dd..622e4d938 100644 --- a/inc/lang/gl/recent.txt +++ b/inc/lang/gl/recent.txt @@ -1,5 +1,5 @@ -====== Cambios recentes ====== +====== Trocos Recentes ====== -As seguintes páxinas foron cambiadas recentemente. +As seguintes páxinas foron mudadas recentemente. diff --git a/inc/lang/gl/register.txt b/inc/lang/gl/register.txt index 17d9e0ff4..4f51f3878 100644 --- a/inc/lang/gl/register.txt +++ b/inc/lang/gl/register.txt @@ -1,4 +1,4 @@ -====== Rexistro como persoa usuaria nova ====== +====== Rexistro como novo usuario ====== -Encha toda a información requirida a continuación para crear unha conta nova neste wiki. Asegúrese de proporcionar un **enderezo de correo electrónico válido** - se non se lle solicita aquí que insira un contrasinal, recibirá un contrasinal novo nese enderezo. O nome de persoa usuaria deberá ser un [[doku>pagename|nome de páxina]] válido. +Cubre toda a información requirida a continuación para creares unha nova conta neste wiki. Asegúrate de forneceres un **enderezo de correo-e válido** - se non se che pide aquí que insiras un contrasinal, recibirás un novo nese enderezo. O nome de usuario deberá ser un [[doku>pagename|nome de páxina]] válido. diff --git a/inc/lang/gl/registermail.txt b/inc/lang/gl/registermail.txt index e02fe1a1c..7d4017481 100644 --- a/inc/lang/gl/registermail.txt +++ b/inc/lang/gl/registermail.txt @@ -1,14 +1,14 @@ -Rexistrouse unha persoa usuaria nova. Estes son os detalles: +Rexistrouse un novo usuario. Aquí van os pormenores: -Nome de usuaria/o : @NEWUSER@ -Nome completo : @NEWNAME@ -Correo : @NEWEMAIL@ +Nome de usuario : @NEWUSER@ +Nome completo : @NEWNAME@ +Correo-e : @NEWEMAIL@ -Data : @DATE@ -Navegador : @BROWSER@ -Enderezo IP : @IPADDRESS@ -Nome do host : @HOSTNAME@ +Data : @DATE@ +Navegador : @BROWSER@ +Enderezo IP : @IPADDRESS@ +Nome do Host : @HOSTNAME@ -- -Este correo foi xerado polo DokuWiki de +Este correo-e foi xerado polo DokuWiki de @DOKUWIKIURL@ diff --git a/inc/lang/gl/resendpwd.txt b/inc/lang/gl/resendpwd.txt index eb8cf4835..0ee2d6cb4 100644 --- a/inc/lang/gl/resendpwd.txt +++ b/inc/lang/gl/resendpwd.txt @@ -1,3 +1,3 @@ -====== Enviar un contrasinal novo ====== +====== Enviar novo contrasinal ====== -Insira o seu nome de persoa usuaria no seguinte formulario para obter un contrasinal novo para a súa conta neste wiki. Enviarase unha ligazón de confirmación ao seu enderezo de correo rexistrado. +Insire o teu nome de usuario no seguinte formulario para obteres un novo contrasinal da túa conta neste wiki. Enviarase unha ligazón de confirmación ao teu enderezo rexistrado de correo-e. diff --git a/inc/lang/gl/revisions.txt b/inc/lang/gl/revisions.txt index a08b54685..3d5cccd7f 100644 --- a/inc/lang/gl/revisions.txt +++ b/inc/lang/gl/revisions.txt @@ -1,4 +1,4 @@ -====== Revisións antigas ====== +======Revisións Antigas====== -Estas son as revisións antigas do documento actual. Para retomar unha revisión antiga: selecciónea na seguinte lista, prema en ''Editar esta páxina'' e gárdea. +Estas son as revisións antigas do documento actual. Para retomar unha revisión antiga selecciónaa na seguinte lista, preme en ''Editar esta páxina'' e gárdaa. diff --git a/inc/lang/gl/searchpage.txt b/inc/lang/gl/searchpage.txt index 7157cdcbf..227ca5dbc 100644 --- a/inc/lang/gl/searchpage.txt +++ b/inc/lang/gl/searchpage.txt @@ -1,5 +1,5 @@ -====== Procurar ====== +====== Procura ====== -Podes encontrar os resultados da súa procura a continuación. Se non encontrou o que estaba a procurar, pode crear ou editar a páxina co nome relacionado coa súa procura co botón axeitado. +Podes atopar os resultados da túa procura a continuación. Se non atopaches o que estabas a procurar, podes crear ou editar a páxina co nome relacionado coa túa procura empregando o botón axeitado. ===== Resultados ===== diff --git a/inc/lang/gl/stopwords.txt b/inc/lang/gl/stopwords.txt index c262147f8..5520cd275 100644 --- a/inc/lang/gl/stopwords.txt +++ b/inc/lang/gl/stopwords.txt @@ -1,246 +1,692 @@ -# Isto é unha listaxe das palabras que o indexador ignora (stopwords); unha por liña -# Cando edite este ficheiro asegúrese de usar os fins de liña UNIX (nova liña única) -# Non precisa incluír palabras de menos de 3 caracteres - estas son ignoradas de todas as formas -# Esta listaxe está baseada nas encontradas en http://www.ranks.nl/stopwords/ (aínda en proceso) -# Actualizouse a listaxe a partir as stopwords dispoñibilizadas por Paulo Malvar en: -# http://d108.dinaserver.com/hosting/paulomalvar.com/Paulo_Malvar_personal_webpage/Resources_files/Galician_single_and_multiword_stopwords_Verbal_Periphrases_and_Abbreviations.tgz -# e tamén as listaxes de palabras gramaticais na Galipedia: http://gl.wikipedia.org/wiki/Categoría_gramatical -abaixo -acerca +# Isto é unha lista das verbas que o indexador ignora, unha por liña +# Cando edites este arquivo asegúrate de usar remates de liña UNIX (nova liña única) +# Non precisas incluír verbas de menos de 3 caracteres - estas son ignoradas de todas formas +# Esta lista está baseada nas atopadas en http://www.ranks.nl/stopwords/ (en proceso aínda) +aberto +abonda +abrir +acabo +acceder +acceso +acordo +actitude +actividade +actividades +actual +actualización +actualizar +actualmente ademais +ademáis +adiante +agardar +agora agás +ainda aínda -alén -algún +aiquí +algo +alguen +algun algunha algunhas +alguén +algún algúns -amais +alta +amigos +ando +anima +anos ante +anterior +anteriores antes -após -aquel -aquela -aquelas -aqueles -aquén -aquilo -arredor -bardante -beira -canda +aparece +aparecen +apartado +aperta +apertas +apoio +aqui +aquí +arquivo +arquivos +artigo +artigos +asunto +atención +atopar +atopei +axuda +axudar +baixo +banda +base +bastante +benvido +boas +botar +buscador +buscar +cabo +cada +cadra +caixa +cales +calidade +calquer +calquera +cambio +camiño +campanha +campaña +campañas +campo cando +cantidade canto -carón -causa -cerca +cantos +cara +carallo +cartos +casa +case +caso +casos +catro +centro +certo +chea +chega +chegar +chisco +cidade +civil +claro +coas +coido +colaboración +colaborar +coma +comentar +comentario +comentarios +comezar como +comunicación +comunidade +común +concreto +condicións conforme -consonte +conseguir +conta +contactar +contacto +contas +contido +contidos contra +contrario +control +copia +correcto +correio +correo +correoe +correos +correspondente +cousa +cousas +coñecemento +coñezo +crear +creo +cuestión +cuestións +cunha +curioso +dabondo +dacordo +dados +darlle +data +datos +debate +debe +debemos +deben +deberiamos +debería +decidir +decisión +defecto +defensa deica -dela -delas +deixa +deixar +deixo deles +demais +demasiado +demáis dende -derredor -derriba +dentro +dereitos desde +dese +deseño despois +desta +deste +destes +diante +dias +dicir +diferentes +difícil +digo +dirección +directamente +directorio +discusión +discutir +distintas +distintos +distribución +dixen +dixo +doado +dous +duas +dunha durante -elas +días +dúas +dúbida +efectivamente +eiqui +eiquí eles +eliminar +email +empregar +emprego +empresa +empresas +enderezo +enderezos +engadir +enlace +enquisa +enriba +entendo +entidades +entrada +entrar entre -erades -eramos +entón +enviar +envio eran -eras +erro +erros esas +escribir eses +especial +especialmente +espero esta -está estaba -estabades -estabamos -estaban estades +estado estamos -están +estan +estar +estaría estas este estea -esteades -esteamos -estean -esteas estes -estivemos +estilo estiven -estiver -estivera -estiveramos -estiveran -estiverdes -estiveren -estivermos -estivese -estivesemos -estivesen -estivo +esto estou -excepto -fomos +está +están +estás +evidentemente +evitar +exactamente +exemplo +existe +facelo +facemos +facendo +facer +faga +fagan +fago +fala +falamos +falando +falar +falla +falo +falta +favor +fazer +feita +feito +ferreira +final +finalmente +fios +fixen +fixo +fondo fora -foramos -foran -fordes -foren -formos +forma +formas +foro +foron +foros fose -fosedes -fosemos -fosen -habemos +fotos +funciona +funcionamento +futuro +fóra +gracias +gran +grande +grandes +grazas +grupo +grupos +gusta +haber haberá -haberán -haberedes -haberei -haberemos habería -haberíades -haberíamos +había haxa -haxades -haxamos -haxan -haxas -houbemos -houben -houber -houbera -houberades -houberamos -houberan -houberemos -houberen -houberían -houbermos +historia +home +hora +horas houbese -houbesedes -houbesemos -houbesen houbo +hoxe +idea +ideas +ideia +igual +imos +importancia +importante +importantes +inda +info +información +informar +informe +inicial +iniciativa +inicio +intención +interesa +interesante +interese +iste isto +lado +lembro +letras +leva +levamos +levar +libre +libro +lista +listas +liña +liñas lles +local logo +longo +lugar +lugo +maior +maiores +maioría mais -máis -malia +mandar +maneira +manter +marcha +material +mañá +media mediante +medida +medio +mellor +membros menos +mensaxe +mensaxes +mentres +menú +mesa +meses +mesma mesmo +mesmos +meter meus +milhor +millor +minha +mirar miña -miñas +modificar +moita +moitas moito +moitos +momento +mudar +mundo +máis +mínimo +nada +nbsp +necesario +necesidade +nese +nesta +neste +nestes +ningunha +ninguén +ningún +noite +nome +normal nosa nosas noso nosos +nota +nova +novas +novo +novos +nunca nunha -onda +número +ofrece +ofrecer +ollo +onde +onte +oops +opción +opcións +opinión +orixinal outra +outras outro +outros +paga +palabras para -perante +parabens +parece +pareceme +parte +partes +participación +participar +partido +paréceme +pasa +pasado +pasar +paso +pedir +pena +pendente +pendentes +pensades +pensando +pensar +penso +pequena +pequeno +perfectamente +perfecto +permite pero +persoa +persoal +persoas +pode +podedes +podemos +poden +poder +poderiamos +podería +poderíamos +podes +podo +poida +poidan pois pola polas polo polos por -porén porque +porén +posibel +posibilidade +posibilidades +posible +posta +posto +pouco +poucos +poñer +precisamente +preciso +pregos +pregunta +presente +primeira +primeiro +principal +principio +proba +probar +probas +problema +problemas +proceso prol +propia +propio +proposta +propostas +propoño +propoñovos +proxecto +proxectos +publicar +punto +pódese +queda +quedar +quedou +queira quen -redor -rente +quere +queredes +queremos +queren +queres +quero +quizáis +quot +razón +real +realidade +realmente +recibir +referencia +relación +rematar +remate respecto -sacado -sacando -salvante -salvo +resposta +respostar +respostas +resto +resulta +resultado +revisar +revisión +riba +sabe +sabedes +saber +sacar +saúdo +saúdos +segue +seguinte +seguintes +seguir +segunda +segundo +seguramente +seguro +seica +semana +semanas +semella +semellante +sempre +sendo +senon +sentido senón +seria +serie será serán -serás -seredes -serei -seremos sería -seríamos -serían seus sexa -sexades -sexamos sexan -sexas +similar +simplemente +sitio +sitios +situación +soamente sobre -sodes +solución somos +suas +superior +suponho +suposto +supoño +sábado súas +tamen +tampouco tamén +tanto +tarde tedes temos +tempo +tempos +tendo +tenho +tentar +tería teña -teñades teñamos teñan -teñas +teñen teño -terá -terán -terás -teredes -terei -teremos -tería -teriades -teriamos -terían -terías -teus -tiña -tiñades -tiñamos -tiñan -tiñas -tiveches -tivemos +timos +tipo tiven -tiver -tivera -tiverades -tiveramos -tiveran -tiveras -tiverdes -tiveren -tivermos -tivese -tivesedes -tivesemos -tivesen -tiveses -tivestes -tivo +tiña +toda +todas todo +todos +tomar +total +totalmente +trabalho +traballando +traballar +traballo +traballos tras +trata través -túas +tres +troco +trocos +troques +tódalas +tódolos +última +último +últimos unha unhas -vostede -vostedes +única +únicamente +únicousar +usuario +usuarios +utilizar +vaia +vale +vamos +varias +varios +veces +verdade +vexo +veño +vida +vindeiro +visitantes +visitas +vista +visto +volta +vosa +wink +xeito +xeitos +xente +xerais +xeral +xunto +zona diff --git a/inc/lang/gl/subscr_digest.txt b/inc/lang/gl/subscr_digest.txt new file mode 100644 index 000000000..4ebd14dd9 --- /dev/null +++ b/inc/lang/gl/subscr_digest.txt @@ -0,0 +1,20 @@ +Ola. + +Houbo mudanzas na páxina @PAGE@ do wiki @TITLE@. +Estes son os trocos: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Revisión Antiga: @OLDPAGE@ +Revisión Nova: @NEWPAGE@ + +Para cancelares as notificacións da páxina inicia sesión no wiki en +@DOKUWIKIURL@ e logo visita +@SUBSCRIBE@ +e desubscríbete do seguimento dos trocos da páxina e/ou nome de espazo. + +-- +Este correo-e foi xerado polo DokuWiki de +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/gl/subscr_form.txt b/inc/lang/gl/subscr_form.txt new file mode 100644 index 000000000..e8a6fe6cf --- /dev/null +++ b/inc/lang/gl/subscr_form.txt @@ -0,0 +1,3 @@ +====== Xestión de Subscrición ====== + +Esta páxina permíteche xestionar as túas subscricións para a páxina e nome de espazo actuais.
\ No newline at end of file diff --git a/inc/lang/gl/subscr_list.txt b/inc/lang/gl/subscr_list.txt new file mode 100644 index 000000000..b62aae35d --- /dev/null +++ b/inc/lang/gl/subscr_list.txt @@ -0,0 +1,17 @@ +Ola. + +Houbo trocos en páxinas do nome de espazo @PAGE@ do wiki @TITLE@. +Estas son as páxinas que mudaron: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Para cancelares as notificacións da páxina inicia sesión no wiki en +@DOKUWIKIURL@ e logo visita +@SUBSCRIBE@ +e desubscríbete do seguimento dos trocos da páxina e/ou nome de espazo. + +-- +Este correo-e foi xerado polo DokuWiki de +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/gl/subscr_single.txt b/inc/lang/gl/subscr_single.txt new file mode 100644 index 000000000..77102d470 --- /dev/null +++ b/inc/lang/gl/subscr_single.txt @@ -0,0 +1,23 @@ +Ola. + +Houbo trocos na páxina @PAGE@ do wiki @TITLE@. +Estes son os trocos: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Data : @DATE@ +Usuario : @USER@ +Resumo do Edición: @SUMMARY@ +Revisión Antiga: @OLDPAGE@ +Revisión Nova: @NEWPAGE@ + +Para cancelares as notificacións da páxina inicia sesión no wiki en +@DOKUWIKIURL@ e logo visita +@SUBSCRIBE@ +e desubscríbete do seguimento dos trocos da páxina e/ou nome de espazo. + +-- +Este correo-e foi xerado polo DokuWiki de +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/gl/updateprofile.txt b/inc/lang/gl/updateprofile.txt index bfd598117..8620dea12 100644 --- a/inc/lang/gl/updateprofile.txt +++ b/inc/lang/gl/updateprofile.txt @@ -1,5 +1,5 @@ -====== Actualizar o perfil da súa conta ====== +====== Actualizar o perfil da túa conta ====== -Só precisa cubrir os campos que desexe cambiar. Non pode cambiar o seu nome de persoa usuaria. +Só precisas cubrir os campos que desexes mudar. Non podes mudar o teu nome de usuario. diff --git a/inc/lang/gl/uploadmail.txt b/inc/lang/gl/uploadmail.txt index 914c3644c..2a7c24762 100644 --- a/inc/lang/gl/uploadmail.txt +++ b/inc/lang/gl/uploadmail.txt @@ -1,14 +1,14 @@ -Subiuse un ficheiro ao seu DokuWiki. Aquí van os detalles: +Subiuse un arquivo ao teu DokuWiki. Aquí van os pormenores: -Ficheiro : @MEDIA@ -Data : @DATE@ -Navegador : @BROWSER@ -Enderezo IP : @IPADDRESS@ -Nome do host : @HOSTNAME@ -Tamaño : @SIZE@ -Tipo MIME : @MIME@ -Usuaria/o : @USER@ +Arquivo : @MEDIA@ +Data : @DATE@ +Navegador : @BROWSER@ +Enderezo IP : @IPADDRESS@ +Nome do Host : @HOSTNAME@ +Tamaño : @SIZE@ +Tipo MIME : @MIME@ +Usuario : @USER@ --- +-- Este correo foi xerado polo DokuWiki en -@DOKUWIKIURL@ +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/gl/wordblock.txt b/inc/lang/gl/wordblock.txt index f219f8436..ec8d67aff 100644 --- a/inc/lang/gl/wordblock.txt +++ b/inc/lang/gl/wordblock.txt @@ -1,4 +1,4 @@ -====== Bloqueo por SPAM ====== +====== Bloqueo por Correo-lixo ====== -Os seus cambios **non** foron gardados porque conteñen unha ou varias palabras bloqueadas. Se tentou introducir spam no wiki -- Nen@ mal@! Se considera que é un erro, contacte coa persoa administradora deste Wiki. +Os teus trocos **non** foron gardados porque conteñen unha ou varias verbas bloqueadas. Se tentaches deixar correo-lixo no wiki -- Estívoche ben! Se consideras que é un erro, contacta co administrador deste Wiki. diff --git a/inc/lang/he/adminplugins.txt b/inc/lang/he/adminplugins.txt new file mode 100644 index 000000000..a7a6471f0 --- /dev/null +++ b/inc/lang/he/adminplugins.txt @@ -0,0 +1 @@ +===== תוספים נוספים =====
\ No newline at end of file diff --git a/inc/lang/he/lang.php b/inc/lang/he/lang.php index 8545d1542..a411764d2 100644 --- a/inc/lang/he/lang.php +++ b/inc/lang/he/lang.php @@ -9,6 +9,7 @@ * @author DoK <kamberd@yahoo.com> * @author Dotan Kamber <kamberd@yahoo.com> * @author Moshe Kaplan <mokplan@gmail.com> + * @author Yaron Yogev <yaronyogev@gmail.com> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'rtl'; @@ -51,6 +52,7 @@ $lang['btn_resendpwd'] = 'שלח סיסמה חדשה'; $lang['btn_draft'] = 'עריכת טיוטה'; $lang['btn_recover'] = 'שחזור טיוטה'; $lang['btn_draftdel'] = 'מחיקת טיוטה'; +$lang['btn_revert'] = 'שחזר'; $lang['loggedinas'] = 'רשום כ-'; $lang['user'] = 'שם משתמש'; $lang['pass'] = 'סיסמה'; @@ -65,6 +67,7 @@ $lang['profile'] = 'פרופיל'; $lang['badlogin'] = 'סליחה, שם המשתמש או הסיסמה שגויים'; $lang['minoredit'] = 'שינוים מינוריים'; $lang['draftdate'] = 'טיוטה נשמרה ב-'; +$lang['nosecedit'] = 'הדף השתנה בינתיים, הקטע שערכת אינו מעודכן - העמוד כולו נטען במקום זאת.'; $lang['regmissing'] = 'סליחה, עליך למלא את כל השדות'; $lang['reguexists'] = 'סליחה, משתמש בשם זה כבר נרשם'; $lang['regsuccess'] = 'הרשמה הצליחה, המשתמש נרשם והודעה נשלחה בדואר'; @@ -86,13 +89,16 @@ $lang['resendpwdnouser'] = 'סליחה, משתמש בשם זה לא נמצ $lang['resendpwdbadauth'] = 'סליחה, קוד אימות זה אינו תקף. יש לודא כי נעשה שימוש במלוא קישור האימות.'; $lang['resendpwdconfirm'] = 'קישור אימות נשלח בדוא"ל.'; $lang['resendpwdsuccess'] = 'סיסמה חדשה נשלחה בדואר'; +$lang['license'] = 'למעט מקרים בהם צוין אחרת, התוכן בוויקי זה זמין לפי הרשיון הבא:'; +$lang['licenseok'] = 'שים לב: עריכת דף זה מהווה הסכמה מצידך להצגת התוכן שהוספת לפי הרשיון הבא:'; +$lang['searchmedia'] = 'חפש שם קובץ:'; $lang['txt_upload'] = 'בחר קובץ להעלות'; $lang['txt_filename'] = 'הכנס שם לוויקי (בחירה)'; $lang['txt_overwrt'] = 'לכתוב במקום קובץ קיים'; $lang['lockedby'] = 'נעול על ידי'; $lang['lockexpire'] = 'נעילה פגה'; $lang['willexpire'] = 'נעילה תחלוף עוד זמן קצר. \nלמניעת התנגשויות יש להשתמש בכפתור הרענון מטה כדי לאתחל את הנעילה שנית'; -$lang['notsavedyet'] = 'קיימים שינויים שטרם נשמרו ואשר יאבדו \n האם להמשיך?'; +$lang['js']['notsavedyet'] = "קיימים שינויים שטרם נשמרו ואשר יאבדו \n האם להמשיך?"; $lang['rssfailed'] = 'כשל ב-RSS'; $lang['nothingfound'] = 'לא נמצאו תוצאות'; $lang['mediaselect'] = 'בחירת קובץ מדיה'; @@ -104,6 +110,7 @@ $lang['uploadexist'] = 'הקובץ כבר קיים. פעולה בוט $lang['uploadbadcontent'] = 'התוכן שהועלה לא תאם את הסיומת %s של הקובץ.'; $lang['uploadspam'] = 'ההעלאה נחסמה על ידי הרשימה השחורה של הספאם.'; $lang['uploadxss'] = 'ההעלאה נחסמה בשל חשד לתוכן זדוני.'; +$lang['uploadsize'] = 'הקובץ שהועלה היה גדול מדי. (מקסימום %s)'; $lang['deletesucc'] = 'קובץ %s נמחק'; $lang['deletefail'] = 'לא יכולתי למחוק "%s" -- בדקו הרשאות'; $lang['mediainuse'] = 'קובץ "%s" לא נמחק - הוא עדיין בשימוש'; @@ -114,6 +121,8 @@ $lang['js']['keepopen'] = 'השאר חלון פתוח בבחירה'; $lang['js']['hidedetails'] = 'הסתר פרטים'; $lang['js']['nosmblinks'] = ':( קישור למערכת קבצים של חלונות פועל רק בדפדפן אינטרנט אקספלורר. זה בסדר, אין צורך לעבור. אפשר להעתיק ולהדביק את הקישור'; +$lang['js']['linkwiz'] = 'אשף הקישורים'; +$lang['js']['linkto'] = 'קשר אל:'; $lang['js']['del_confirm'] = 'באמת למחוק?'; $lang['js']['mu_btn'] = 'העלאת קבצים מרובים'; $lang['mediausage'] = 'השתמש בתחביר הבא להתיחסות אל קובץ זה:'; @@ -122,7 +131,7 @@ $lang['mediaroot'] = 'root'; $lang['mediaupload'] = 'כאן ניתן להעלות קובץ למרחב השמות הנוכחי. ליצירת תתי-מרחבי שמות צרפם ב-"העלה" לתחילת שם הקובץ מופרדים בפסיקים'; $lang['mediaextchange'] = 'סיומת הקובץ השתנתה מ-.%s ל-.%s!'; $lang['reference'] = 'קישורים ל'; -$lang['ref_inuse'] = 'לא יכולתי למחוק קובץ, הדפים הבאים עדיין משתמשים בו:'; +$lang['ref_inuse'] = 'לא ניתן למחוק קובץ זה, כיוון שהדפים הבאים עדיין משתמשים בו:'; $lang['ref_hidden'] = 'יש קישורים לדפים ללא הרשאת קריאה'; $lang['hits'] = 'פגיעות'; $lang['quickhits'] = 'דפים שנמצאו'; @@ -133,7 +142,7 @@ $lang['diff'] = 'הצג שינוים מגרסה זו ועד ה $lang['diff2'] = 'הצגת הבדלים בין הגרסאות שנבחרו'; $lang['line'] = 'שורה'; $lang['breadcrumb'] = 'ביקורים אחרונים'; -$lang['youarehere'] = 'אתה נמצה כאן'; +$lang['youarehere'] = 'אתה נמצא כאן'; $lang['lastmod'] = 'שונה לאחרונה ב'; $lang['by'] = 'על ידי'; $lang['deleted'] = 'נמחק'; @@ -141,6 +150,8 @@ $lang['created'] = 'נוצר'; $lang['restored'] = 'שוחזר'; $lang['external_edit'] = 'עריכה חיצונית'; $lang['summary'] = 'תקציר העריכה'; +$lang['noflash'] = '<a href="http://www.adobe.com/products/flashplayer/">תוסף פלאש לדפדפן</a> נדרש כדי להציג תוכן זה.'; +$lang['download'] = 'הורד מקטע'; $lang['mail_newpage'] = 'דף נוסף:'; $lang['mail_changed'] = 'דף שונה:'; $lang['mail_new_user'] = 'משתמש חדש:'; @@ -157,6 +168,9 @@ $lang['qb_h4'] = 'כותרת רמה 4'; $lang['qb_h5'] = 'כותרת רמה 5'; $lang['qb_h'] = 'כותרת'; $lang['qb_hs'] = 'בחירת כותרת'; +$lang['qb_hplus'] = 'כותרת ברמה גבוהה יותר'; +$lang['qb_hminus'] = 'כותרת ברמה נמוכה יותר'; +$lang['qb_hequal'] = 'כותרת באותה רמה'; $lang['qb_link'] = 'קישור פנימי'; $lang['qb_extlink'] = 'קישור חיצוני'; $lang['qb_hr'] = 'קו אופקי'; @@ -166,6 +180,7 @@ $lang['qb_media'] = 'תמונות או קובץ אחר'; $lang['qb_sig'] = 'הזנת חתימה'; $lang['qb_smileys'] = 'פרצופונים'; $lang['qb_chars'] = 'סימנים מיוחדים'; +$lang['upperns'] = 'עבור למרחב השם שברמה שמעל הנוכחית'; $lang['admin_register'] = 'להוסיף משתמש חדש'; $lang['metaedit'] = 'ערוך נתונים'; $lang['metasaveerr'] = 'כשל בשמירת נתונים'; @@ -215,10 +230,22 @@ $lang['mu_intro'] = 'כאן תוכל להעלות קבצים מרו $lang['mu_gridname'] = 'שם קובץ'; $lang['mu_gridsize'] = 'גודל'; $lang['mu_gridstat'] = 'סטאטןס'; +$lang['mu_namespace'] = 'מרחב שם'; $lang['mu_browse'] = 'חיפוש'; $lang['mu_toobig'] = 'גדול מדי'; $lang['mu_ready'] = 'מוכן להעלאה'; $lang['mu_done'] = 'סיים'; $lang['mu_fail'] = 'נכשל'; +$lang['mu_authfail'] = 'תקוף נעילת עריכה פג'; +$lang['mu_progress'] = '@PCT@% הועלה'; +$lang['mu_filetypes'] = 'סוגי קבצים מורשים'; $lang['mu_info'] = 'הקבצים הועלו'; $lang['mu_lasterr'] = 'שגיאה אחרונה:'; +$lang['recent_global'] = 'אתה צופה כעת בשינויים בתוך מרחב השם <b>%s</b>. אתה יכול גם <a href="%s">לצפות בשינויים האחרונים של כל הוויקי </a>.'; +$lang['years'] = 'לפני %d שנים'; +$lang['months'] = 'לפני %d חודשים'; +$lang['weeks'] = 'לפני %d שבועות'; +$lang['days'] = 'לפני %d ימים'; +$lang['hours'] = 'לפני %d שעות'; +$lang['minutes'] = 'לפני %d דקות'; +$lang['seconds'] = 'לפני %d שניות'; diff --git a/inc/lang/he/wordblock.txt b/inc/lang/he/wordblock.txt deleted file mode 100644 index b7c3f0a7c..000000000 --- a/inc/lang/he/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== הצפה נחסמה ====== - -השנויים שלך **לא** נשמרו מפני שהם מכילים מילה חסומה או יותר. אם באמת ניסית להציף את הויקי -- כלב רע! אם נראה לך כי זו טעות,ניתן ליצור קשר עם מנהל הויקי (מפני שאנחנו לא רוצים לקרוא לאנשים כלבים לחינם, זה פוגע בכלבים). - diff --git a/inc/lang/hr/lang.php b/inc/lang/hr/lang.php index 05a20c25e..545498dee 100644 --- a/inc/lang/hr/lang.php +++ b/inc/lang/hr/lang.php @@ -92,7 +92,7 @@ $lang['txt_overwrt'] = 'Prepiši postojeću datoteku'; $lang['lockedby'] = 'Zaključao'; $lang['lockexpire'] = 'Zaključano do'; $lang['willexpire'] = 'Dokument kojeg mijenjate će biti zaključan još 1 minutu.\n Ukoliko želite i dalje raditi izmjene na dokumentu - kliknite na "Pregled".'; -$lang['notsavedyet'] = 'Vaše izmjene će se izgubiti.\nŽelite li nastaviti?'; +$lang['js']['notsavedyet'] = "Vaše izmjene će se izgubiti.\nŽelite li nastaviti?"; $lang['rssfailed'] = 'Došlo je do greške prilikom preuzimanja feed-a: '; $lang['nothingfound'] = 'Traženi dokumetni nisu pronađeni.'; $lang['mediaselect'] = 'Mediafile datoteke'; diff --git a/inc/lang/hr/wordblock.txt b/inc/lang/hr/wordblock.txt deleted file mode 100644 index 7faf03c19..000000000 --- a/inc/lang/hr/wordblock.txt +++ /dev/null @@ -1,3 +0,0 @@ -====== SPAM blokiranje ====== - -Vaše izmjene **nisu** snimljene jer sadrže jednu ili više blokiranih/zabranjenih riječi. Ukoliko mislite da je to greška - molimo Vas da kontaktirate administratora. diff --git a/inc/lang/hu/lang.php b/inc/lang/hu/lang.php index b9218f897..b3cd87c29 100644 --- a/inc/lang/hu/lang.php +++ b/inc/lang/hu/lang.php @@ -8,6 +8,8 @@ * @author Siaynoq Siaynoq <siaynoqmage@gmail.com> * @author Siaynoq Mage <siaynoqmage@gmail.com> * @author schilling.janos@gmail.com + * @author Szabó Dávid (szabo.david@gyumolcstarhely.hu) + * @author Szabó Dávid <szabo.david@gyumolcstarhely.hu> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -41,9 +43,6 @@ $lang['btn_back'] = 'Vissza'; $lang['btn_backlink'] = 'Hivatkozások'; $lang['btn_backtomedia'] = 'Vissza a médiafájlok kezeléséhez'; $lang['btn_subscribe'] = 'Oldalváltozások-hírlevél feliratkozás'; -$lang['btn_unsubscribe'] = 'Oldalváltozások-hírlevél leiratkozás'; -$lang['btn_subscribens'] = 'Névtér-változás hírlevél feliratkozás'; -$lang['btn_unsubscribens'] = 'Névtér-változás hírlevél leiratkozás'; $lang['btn_profile'] = 'Személyes beállítások'; $lang['btn_reset'] = 'Alaphelyzet'; $lang['btn_resendpwd'] = 'Új jelszó küldése'; @@ -97,7 +96,38 @@ $lang['txt_overwrt'] = 'Létező fájl felülírása'; $lang['lockedby'] = 'Jelenleg zárolta:'; $lang['lockexpire'] = 'A zárolás lejár:'; $lang['willexpire'] = 'Az oldalszerkesztési zárolásod körülbelül egy percen belül lejár.\nAz ütközések elkerülése végett használd az előnézet gombot a zárolási időzítés frissítéséhez.'; -$lang['notsavedyet'] = 'Elmentetlen változások vannak, amelyek el fognak veszni.\nTényleg ezt akarod?'; +$lang['js']['notsavedyet'] = 'Elmentetlen változások vannak, amelyek el fognak veszni. +Tényleg ezt akarod?'; +$lang['js']['searchmedia'] = 'Fájlok keresése'; +$lang['js']['keepopen'] = 'Tartsd nyitva ezt az ablakot a kijelöléshez!'; +$lang['js']['hidedetails'] = 'Részletek elrejtése'; +$lang['js']['mediatitle'] = 'Link beállítások'; +$lang['js']['mediadisplay'] = 'Link típusa'; +$lang['js']['mediaalign'] = 'Igazítás'; +$lang['js']['mediasize'] = 'Képméret'; +$lang['js']['mediatarget'] = 'Link'; +$lang['js']['mediaclose'] = 'Bezárás'; +$lang['js']['mediainsert'] = 'Beillesztés'; +$lang['js']['mediadisplayimg'] = 'Kép megtekintése.'; +$lang['js']['mediadisplaylnk'] = 'Link megtekintése.'; +$lang['js']['mediasmall'] = 'Kisebb méret'; +$lang['js']['mediamedium'] = 'Közepes méret'; +$lang['js']['medialarge'] = 'Nagyobb méret'; +$lang['js']['mediaoriginal'] = 'Eredeti'; +$lang['js']['medialnk'] = 'Link a részletekre'; +$lang['js']['mediadirect'] = 'Közvetlen link az eredetire'; +$lang['js']['medianolnk'] = 'Nincsen link'; +$lang['js']['medianolink'] = 'Ne linkelje a képet'; +$lang['js']['medialeft'] = 'Kép igazítása balra.'; +$lang['js']['mediaright'] = 'Kép igazítása jobbra.'; +$lang['js']['mediacenter'] = 'Kép igazítása középre.'; +$lang['js']['medianoalign'] = 'Nem legyen igazítás.'; +$lang['js']['nosmblinks'] = 'A Windows megosztott könyvtárak kereszthivatkozása csak Microsoft Internet Explorerben működik közvetlenül. +A hivatkozást másolni és beszúrni ettől fügetlenül mndig tudod.'; +$lang['js']['linkwiz'] = 'Hivatkozás varázsló'; +$lang['js']['linkto'] = 'Hivatkozás erre:'; +$lang['js']['del_confirm'] = 'Valóban törölni akarod a kiválasztott elem(ek)et?'; +$lang['js']['mu_btn'] = 'Több fájl feltöltése egyszerre'; $lang['rssfailed'] = 'Hiba történt ennek a betöltésekor: '; $lang['nothingfound'] = 'Semmit sem találtam.'; $lang['mediaselect'] = 'Médiafájl kiválasztása'; @@ -115,15 +145,7 @@ $lang['deletefail'] = 'A "%s" fájl nem törölhető. - Ellenőrizd a $lang['mediainuse'] = 'A "%s" fájl nem törlődött - még használat alatt van.'; $lang['namespaces'] = 'Névtér'; $lang['mediafiles'] = 'Elérhető fájlok itt:'; -$lang['js']['searchmedia'] = 'Fájlok keresése'; -$lang['js']['keepopen'] = 'Tartsd nyitva ezt az ablakot a kijelöléshez!'; -$lang['js']['hidedetails'] = 'Részletek elrejtése'; -$lang['js']['nosmblinks'] = 'A Windows megosztott könyvtárak kereszthivatkozása csak Microsoft Internet Explorerben működik közvetlenül. -A hivatkozást másolni és beszúrni ettől fügetlenül mndig tudod.'; -$lang['js']['linkwiz'] = 'Hivatkozás varázsló'; -$lang['js']['linkto'] = 'Hivatkozás erre:'; -$lang['js']['del_confirm'] = 'Valóban törölni akarod a kiválasztott elem(ek)et?'; -$lang['js']['mu_btn'] = 'Több fájl feltöltése egyszerre'; +$lang['accessdenied'] = 'Nincsen jogod az oldal megtekintésére.'; $lang['mediausage'] = 'A következő formában hivatkozhatsz erre az állományra:'; $lang['mediaview'] = 'Eredeti állomány megtekintése'; $lang['mediaroot'] = 'kiindulási hely'; @@ -139,6 +161,7 @@ $lang['current'] = 'aktuális'; $lang['yours'] = 'A te változatod'; $lang['diff'] = 'a különbségeket mutatja az aktuális változathoz képest'; $lang['diff2'] = 'a különbségeket mutatja a kiválasztott változatok között'; +$lang['difflink'] = 'Összehasonlító nézet linkje'; $lang['line'] = 'sorszám'; $lang['breadcrumb'] = 'Nyomvonal'; $lang['youarehere'] = 'Itt vagy'; @@ -153,6 +176,7 @@ $lang['noflash'] = 'Ennek a tartalomnak a megtekintéséhez <a hre $lang['download'] = 'Kódrészlet letöltése'; $lang['mail_newpage'] = 'új oldal jött létre:'; $lang['mail_changed'] = 'oldal megváltozott:'; +$lang['mail_subscribe_list'] = 'oldalak megváltoztak ebben a névtérben:'; $lang['mail_new_user'] = 'Új felhasználó:'; $lang['mail_upload'] = 'állományt töltöttek fel:'; $lang['qb_bold'] = 'Félkövér szöveg'; @@ -195,11 +219,22 @@ $lang['img_copyr'] = 'Copyright'; $lang['img_format'] = 'Formátum'; $lang['img_camera'] = 'Fényképező típusa'; $lang['img_keywords'] = 'Kulcsszavak'; -$lang['subscribe_success'] = '%s feliratkozott a(z) %s oldal változás-követő hírlevelére'; -$lang['subscribe_error'] = 'Hiba történt, miközben %s feliratkozni próbált a(z) %s oldal változás-követő hírlevelére'; -$lang['subscribe_noaddress'] = 'Nincs beállítva az e-mail címed, így nem tudsz feliratkozni az oldal változás-követő hírlevelére'; -$lang['unsubscribe_success'] = '%s leiratkozott az oldal változás-követő hírleveléről'; -$lang['unsubscribe_error'] = 'Hiba történt, miközben %s leiratkozni próbált az oldal változás-követő hírleveléről'; +$lang['subscr_subscribe_success'] = '%s hozzáadva az értesítési listához: %s'; +$lang['subscr_subscribe_error'] = 'Hiba történt %s hozzáadásakor az értesítési listához: %s'; +$lang['subscr_subscribe_noaddress'] = 'Nincsen e-mail cím megadva az adataidnál, így a rendszer nem tudott hozzáadni az értesítési listához'; +$lang['subscr_unsubscribe_success'] = '%s eltávolítva az értesítési listából: %s'; +$lang['subscr_unsubscribe_error'] = 'Hiba történt %s eltávolításakor az értesítési listából: %s'; +$lang['subscr_already_subscribed'] = '%s már feliratkozott erre: %s'; +$lang['subscr_not_subscribed'] = '%s nincsen feliratkozva erre: %s'; +$lang['subscr_m_not_subscribed'] = 'Jelenleg nem vagy feliratkozva erre az oldalra vagy névtérre'; +$lang['subscr_m_new_header'] = 'Feliratkozás hozzáadása'; +$lang['subscr_m_current_header'] = 'Feliratkozások'; +$lang['subscr_m_unsubscribe'] = 'Leiratkozás'; +$lang['subscr_m_subscribe'] = 'Feliratkozás'; +$lang['subscr_m_receive'] = 'Küldj'; +$lang['subscr_style_every'] = 'e-mailt minden változásról'; +$lang['subscr_style_digest'] = 'összefoglaló e-mailt oldalanként (minden %.2f nap)'; +$lang['subscr_style_list'] = 'egy listát a módosított oldalakról a legutóbbi e-mail óta (minden %.2f nap)'; $lang['authmodfailed'] = 'Hibás felhasználó-aznosítási módszer van beállítva. Légy szíves értesítsd a Wiki-gazdát!'; $lang['authtempfail'] = 'A felhasználó azonosítás átmenetileg nem működik. Ha sokáig így lenne, légy szíves értesítsd a Wiki-gazdát!'; $lang['i_chooselang'] = 'Válassz nyelvet'; @@ -224,6 +259,7 @@ $lang['i_pol0'] = 'Nyitott Wiki (mindenki olvashatja, írhatja, $lang['i_pol1'] = 'Publikus Wiki (mindenki olvashatja, de csak regisztrált felhasználók írhatják, és tölthetnek fel fájlokat)'; $lang['i_pol2'] = 'Zárt Wiki (csak regisztrált felhasználók olvashatják, írhatják és tölthetnek fel fájlokat)'; $lang['i_retry'] = 'Újra'; +$lang['i_license'] = 'Kérlek válassz licenszt a feltöltött tartalomhoz:'; $lang['mu_intro'] = 'Itt több fájlt is fel tudsz tölteni egyszerre. Kattints a "Kiválaszt" gombra és add hozzá a listához. Nyomd meg a Feltöltés gombot, amikor elkészültél.'; $lang['mu_gridname'] = 'Fájlnév'; $lang['mu_gridsize'] = 'Méret'; @@ -247,3 +283,4 @@ $lang['days'] = '%d nappal ezelőtt'; $lang['hours'] = '%d órával ezelőtt'; $lang['minutes'] = '%d perccel ezelőtt'; $lang['seconds'] = '%d másodperccel ezelőtt'; +$lang['wordblock'] = 'A változásokat nem sikerült menteni, mert tiltott tartalom van benne (spam)'; diff --git a/inc/lang/hu/subscr_digest.txt b/inc/lang/hu/subscr_digest.txt new file mode 100644 index 000000000..62e777faf --- /dev/null +++ b/inc/lang/hu/subscr_digest.txt @@ -0,0 +1,17 @@ +Szia, + +A @PAGE@ oldal a @TITLE wikiben megváltozott. +Itt vannak az eltérések: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Régi verzió: @OLDPAGE@ +Új verzió: @NEWPAGE@ + +Ha nem szeretnél értesítéseket kapni, jelentkezz be a wiki-be itt: @DOKUWIKIURL@, majd ezen az oldalon tudsz leiratkozni: @SUBSCRIBE@. + +-- +Ezt a levelet a DokuWiki generálta +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/hu/subscr_form.txt b/inc/lang/hu/subscr_form.txt new file mode 100644 index 000000000..22fa94015 --- /dev/null +++ b/inc/lang/hu/subscr_form.txt @@ -0,0 +1,3 @@ +====== Feliratkozás kezelés ====== + +Ezen az oldalon van lehetőséged kezelni a feliratkozásaidat az adott oldalra vagy névtérre.
\ No newline at end of file diff --git a/inc/lang/hu/subscr_list.txt b/inc/lang/hu/subscr_list.txt new file mode 100644 index 000000000..f68e6fc0a --- /dev/null +++ b/inc/lang/hu/subscr_list.txt @@ -0,0 +1,14 @@ +Szia, + +A @PAGE@ névtérhez tartozó oldalak megváltoztak a @TITLE wikiben. +Itt vannak a módosított oldalak: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Ha nem szeretnél értesítéseket kapni, jelentkezz be a wiki-be itt: @DOKUWIKIURL@, majd ezen az oldalon tudsz leiratkozni: @SUBSCRIBE@. + +-- +Ezt a levelet a DokuWiki generálta +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/hu/subscr_single.txt b/inc/lang/hu/subscr_single.txt new file mode 100644 index 000000000..a17a98cfd --- /dev/null +++ b/inc/lang/hu/subscr_single.txt @@ -0,0 +1,20 @@ +Szia, + +A @PAGE@ oldal a @TITLE wikiben megváltozott. +Itt vannak az eltérések: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Dátum: @DATE@ +Felhasználó: @USER@ +Összefoglaló: @SUMMARY@ +Régi verzió: @OLDPAGE@ +Új verzió: @NEWPAGE@ + +Ha nem szeretnél értesítéseket kapni, jelentkezz be a wiki-be itt: @DOKUWIKIURL@, majd ezen az oldalon tudsz leiratkozni: @NEWPAGE@. + +-- +Ezt a levelet a DokuWiki generálta +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/hu/wordblock.txt b/inc/lang/hu/wordblock.txt deleted file mode 100644 index 2fe2efa9b..000000000 --- a/inc/lang/hu/wordblock.txt +++ /dev/null @@ -1,6 +0,0 @@ -====== SPAM szűrés ====== - -A változtatásaid **nem** mentettük, mert egy vagy több tiltott szót tartalmaz. Ha kéretlen reklám anyagot ("SPAM") próbáltál erre a Wikire rakni, akkor szégyelld magad. - -Ha azt gondolod, hogy valami hibáról, vagy félreértésről van szó, akkor lépj kapcsolatba a Wiki-gazdával. - diff --git a/inc/lang/ia/admin.txt b/inc/lang/ia/admin.txt new file mode 100644 index 000000000..f81ff3170 --- /dev/null +++ b/inc/lang/ia/admin.txt @@ -0,0 +1,3 @@ +====== Administration ====== + +Hic infra se trova un lista de cargas administrative disponibile in DokuWiki. diff --git a/inc/lang/ia/adminplugins.txt b/inc/lang/ia/adminplugins.txt new file mode 100644 index 000000000..ad8f794b0 --- /dev/null +++ b/inc/lang/ia/adminplugins.txt @@ -0,0 +1 @@ +===== Plug-ins additional =====
\ No newline at end of file diff --git a/inc/lang/ia/backlinks.txt b/inc/lang/ia/backlinks.txt new file mode 100644 index 000000000..de5d2ac56 --- /dev/null +++ b/inc/lang/ia/backlinks.txt @@ -0,0 +1,3 @@ +====== Retroligamines ====== + +Isto es un lista de paginas que contine ligamines de retorno al pagina actual.
\ No newline at end of file diff --git a/inc/lang/ia/conflict.txt b/inc/lang/ia/conflict.txt new file mode 100644 index 000000000..576cb7e3f --- /dev/null +++ b/inc/lang/ia/conflict.txt @@ -0,0 +1,5 @@ +====== Un version plus nove existe ====== + +Existe un version plus nove del documento que tu ha modificate. Isto occurre si un altere usator cambia le documento durante que tu lo modifica. + +Examina minutiosemente le differentias monstrate hic infra, postea decide qual version debe esser conservate. Si tu selige ''salveguardar'', tu version essera salveguardate. Preme ''cancellar'' pro conservar le version actual. diff --git a/inc/lang/ia/denied.txt b/inc/lang/ia/denied.txt new file mode 100644 index 000000000..044e1532d --- /dev/null +++ b/inc/lang/ia/denied.txt @@ -0,0 +1,3 @@ +====== Permission refusate ====== + +Pardono, tu non ha le derectos requisite pro continuar. Pote esser que tu ha oblidate de aperir un session.
\ No newline at end of file diff --git a/inc/lang/ia/diff.txt b/inc/lang/ia/diff.txt new file mode 100644 index 000000000..dbfa70f13 --- /dev/null +++ b/inc/lang/ia/diff.txt @@ -0,0 +1,3 @@ +====== Differentias ====== + +Isto te monstra le differentias inter duo versiones del pagina.
\ No newline at end of file diff --git a/inc/lang/ia/draft.txt b/inc/lang/ia/draft.txt new file mode 100644 index 000000000..ae8de13f4 --- /dev/null +++ b/inc/lang/ia/draft.txt @@ -0,0 +1,5 @@ +====== Version provisori trovate ====== + +Tu ultime session de modification in iste pagina non ha essite concludite correctemente. DokuWiki ha automaticamente salveguardate un version provisori durante tu labor. Ora tu pote usar iste version provisori pro continuar le modification. Hic infra tu vide le datos salveguardate de tu ultime session. + +Per favor decide si tu vole //recuperar// le session de modification perdite, //deler// le version provisori o //cancellar// le processo de modification.
\ No newline at end of file diff --git a/inc/lang/ia/edit.txt b/inc/lang/ia/edit.txt new file mode 100644 index 000000000..5bc58362a --- /dev/null +++ b/inc/lang/ia/edit.txt @@ -0,0 +1 @@ +Modifica le pagina e preme "Salveguardar". Vide [[wiki:syntax]] pro le syntaxe wiki. Per favor modifica le paginas solmente si tu pote **meliorar** lo. Si tu vole testar alcun cosas, apprende facer tu prime passos in le [[playground:playground|parco de jocos]].
\ No newline at end of file diff --git a/inc/lang/ia/editrev.txt b/inc/lang/ia/editrev.txt new file mode 100644 index 000000000..192381f8c --- /dev/null +++ b/inc/lang/ia/editrev.txt @@ -0,0 +1,2 @@ +**Tu ha cargate un version ancian del documento!** Si tu lo salveguarda, tu crea un nove version con iste datos. +----
\ No newline at end of file diff --git a/inc/lang/ia/index.txt b/inc/lang/ia/index.txt new file mode 100644 index 000000000..5957cc2ab --- /dev/null +++ b/inc/lang/ia/index.txt @@ -0,0 +1,3 @@ +====== Indice ====== + +Isto es un indice super tote le paginas disponibile, ordinate per [[doku>namespaces|spatio de nomines]]. diff --git a/inc/lang/ia/install.html b/inc/lang/ia/install.html new file mode 100644 index 000000000..01b6f43b5 --- /dev/null +++ b/inc/lang/ia/install.html @@ -0,0 +1,13 @@ +<p>Iste pagina te assiste in le prime installation e configuration de +<a href="http://dokuwiki.org">Dokuwiki</a>. Ulterior informationes super iste installator es disponibile in le +<a href="http://dokuwiki.org/installer">pagina de documentation</a> de illo.</p> + +<p>DokuWiki usa files ordinari pro le immagazinage de paginas wiki e altere informationes associate con iste paginas (p.ex. imagines, indices de recerca, versiones ancian, etc). Pro poter functionar, DokuWiki +<strong>debe</strong> haber accesso de scriptura al directorios que contine iste files. Iste installator non es capabile de configurar le permissiones de directorios. Isto normalmente debe esser facite directemente con le linea de commandos, o si tu usa un albergo web, via FTP o via le pannello de controlo de tu albergo (p.ex. cPanel).</p> + +<p>Iste installator configurara tu installation de DokuWiki pro +<acronym title="listas de controlo de accesso">ACL</acronym>, lo que permitte crear contos administrator, e forni accesso al menu administrative de DokuWiki pro installar plug-ins, gerer usatores, gerer accesso a paginas wiki e alterar configurationes. Isto non es necessari pro le functionamento de DokuWiki, nonobstante, illo rendera DokuWiki plus facile de administrar.</p> + +<p>Le usatores experte o con exigentias special pro le installation deberea usar iste ligamines pro detalios concernente le +<a href="http://dokuwiki.org/install">instructiones de installation</a> +e <a href="http://dokuwiki.org/config">configurationes</a>.</p> diff --git a/inc/lang/ia/lang.php b/inc/lang/ia/lang.php new file mode 100644 index 000000000..f68467543 --- /dev/null +++ b/inc/lang/ia/lang.php @@ -0,0 +1,283 @@ +<?php +/** + * ia language file + * + * This file was initially built by fetching translations from other + * Wiki projects. See the @url lines below. Additional translations + * and fixes where done for DokuWiki by the people mentioned in the + * lines starting with @author + * + * @url http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/languages/messages/MessagesIa.php?view=co + * @author robocap <robocap1@gmail.com> + * @author Martijn Dekker <martijn@inlv.org> + */ +$lang['encoding'] = 'utf-8'; +$lang['direction'] = 'ltr'; +$lang['doublequoteopening'] = '“'; +$lang['doublequoteclosing'] = '”'; +$lang['singlequoteopening'] = '‘'; +$lang['singlequoteclosing'] = '’'; +$lang['apostrophe'] = '’'; +$lang['btn_edit'] = 'Modificar iste pagina'; +$lang['btn_source'] = 'Monstrar codice-fonte'; +$lang['btn_show'] = 'Monstrar pagina'; +$lang['btn_create'] = 'Crear iste pagina'; +$lang['btn_search'] = 'Cercar'; +$lang['btn_save'] = 'Salveguardar'; +$lang['btn_preview'] = 'Previsualisar'; +$lang['btn_top'] = 'Retornar al initio'; +$lang['btn_newer'] = '<< plus recente'; +$lang['btn_older'] = 'minus recente >>'; +$lang['btn_revs'] = 'Versiones ancian'; +$lang['btn_recent'] = 'Modificationes recente'; +$lang['btn_upload'] = 'Incargar'; +$lang['btn_cancel'] = 'Cancellar'; +$lang['btn_index'] = 'Indice'; +$lang['btn_secedit'] = 'Modificar'; +$lang['btn_login'] = 'Aperir session'; +$lang['btn_logout'] = 'Clauder session'; +$lang['btn_admin'] = 'Admin'; +$lang['btn_update'] = 'Actualisar'; +$lang['btn_delete'] = 'Deler'; +$lang['btn_back'] = 'Retornar'; +$lang['btn_backlink'] = 'Retroligamines'; +$lang['btn_backtomedia'] = 'Retornar al selection de files multimedia'; +$lang['btn_subscribe'] = 'Gerer subscriptiones'; +$lang['btn_profile'] = 'Actualisar profilo'; +$lang['btn_reset'] = 'Reinitialisar'; +$lang['btn_resendpwd'] = 'Inviar nove contrasigno'; +$lang['btn_draft'] = 'Modificar version provisori'; +$lang['btn_recover'] = 'Recuperar version provisori'; +$lang['btn_draftdel'] = 'Deler version provisori'; +$lang['btn_revert'] = 'Restaurar'; +$lang['loggedinas'] = 'Session aperite como'; +$lang['user'] = 'Nomine de usator'; +$lang['pass'] = 'Contrasigno'; +$lang['newpass'] = 'Nove contrasigno'; +$lang['oldpass'] = 'Confirmar contrasigno actual'; +$lang['passchk'] = 'un altere vice'; +$lang['remember'] = 'Memorar me'; +$lang['fullname'] = 'Nomine real'; +$lang['email'] = 'E-mail'; +$lang['register'] = 'Crear conto'; +$lang['profile'] = 'Profilo de usator'; +$lang['badlogin'] = 'Le nomine de usator o le contrasigno es incorrecte.'; +$lang['minoredit'] = 'Modificationes minor'; +$lang['draftdate'] = 'Version provisori automaticamente salveguardate le'; +$lang['nosecedit'] = 'Le pagina ha essite modificate intertanto. Le informationes del section es ora obsolete, dunque le pagina complete ha essite cargate in su loco.'; +$lang['regmissing'] = 'Es necessari completar tote le campos.'; +$lang['reguexists'] = 'Regrettabilemente, un usator con iste nomine ja existe.'; +$lang['regsuccess'] = 'Le conto ha essite create e le contrasigno ha essite inviate per e-mail.'; +$lang['regsuccess2'] = 'Le conto ha essite create.'; +$lang['regmailfail'] = 'Il pare que un error occurreva durante le invio del message con le contrasigno. Per favor contacta le administrator!'; +$lang['regbadmail'] = 'Le adresse de e-mail date pare esser invalide. Si tu pensa que isto es un error, contacta le administrator.'; +$lang['regbadpass'] = 'Le duo contrasignos date non es identic. Per favor reproba.'; +$lang['regpwmail'] = 'Tu contrasigno de DokuWiki'; +$lang['reghere'] = 'Tu non ha ancora un conto? Crea un, simplemente.'; +$lang['profna'] = 'Iste wiki non supporta le modification de profilos.'; +$lang['profnochange'] = 'Nulle modification, nihil a facer.'; +$lang['profnoempty'] = 'Un nomine o adresse de e-mail vacue non es permittite.'; +$lang['profchanged'] = 'Actualisation del profilo de usator succedite.'; +$lang['pwdforget'] = 'Contrasigno oblidate? Obtene un altere'; +$lang['resendna'] = 'Iste wiki non supporta le invio de un nove contrasigno.'; +$lang['resendpwd'] = 'Inviar nove contrasigno pro'; +$lang['resendpwdmissing'] = 'Es necessari completar tote le campos.'; +$lang['resendpwdnouser'] = 'Iste usator non ha essite trovate in le base de datos.'; +$lang['resendpwdbadauth'] = 'Iste codice de authentication non es valide. Assecura te que tu ha usate le ligamine de confirmation complete.'; +$lang['resendpwdconfirm'] = 'Un ligamine de confirmation ha essite inviate per e-mail.'; +$lang['resendpwdsuccess'] = 'Tu nove contrasigno ha essite inviate per e-mail.'; +$lang['license'] = 'Excepte ubi indicate alteremente, le contento in iste wiki es disponibile sub le licentia sequente:'; +$lang['licenseok'] = 'Nota ben! Per modificar iste pagina tu accepta que tu contento essera publicate sub le conditiones del licentia sequente:'; +$lang['searchmedia'] = 'Cercar file con nomine:'; +$lang['searchmedia_in'] = 'Cercar in %s'; +$lang['txt_upload'] = 'Selige le file a incargar'; +$lang['txt_filename'] = 'Incargar como (optional)'; +$lang['txt_overwrt'] = 'Reimplaciar le file existente'; +$lang['lockedby'] = 'Actualmente serrate per'; +$lang['lockexpire'] = 'Serratura expira le'; +$lang['willexpire'] = 'Tu serratura super le modification de iste pagina expirara post un minuta.\nPro evitar conflictos, usa le button Previsualisar pro reinitialisar le timer del serratura.'; +$lang['js']['notsavedyet'] = "Le modificationes non salveguardate essera perdite.\nRealmente continuar?"; +$lang['rssfailed'] = 'Un error occurreva durante le obtention de iste syndication:'; +$lang['nothingfound'] = 'Nihil ha essite trovate.'; +$lang['mediaselect'] = 'Files multimedia'; +$lang['fileupload'] = 'Incargar file multimedia'; +$lang['uploadsucc'] = 'Incargamento succedite'; +$lang['uploadfail'] = 'Incargamento fallite. Pote esser que le permissiones es incorrecte.'; +$lang['uploadwrong'] = 'Incargamento refusate. Iste typo de file es prohibite!'; +$lang['uploadexist'] = 'File ja existe. Nihil facite.'; +$lang['uploadbadcontent'] = 'Le typo del contento incargate non corresponde al extension del nomine de file "%s".'; +$lang['uploadspam'] = 'Le incargamento ha essite blocate per le lista nigre anti-spam.'; +$lang['uploadxss'] = 'Le incargamento ha essite blocate a causa de contento possibilemente malitiose.'; +$lang['uploadsize'] = 'Le file incargate es troppo grande. (Max. %s)'; +$lang['deletesucc'] = 'Le file "%s" ha essite delite.'; +$lang['deletefail'] = '"%s" non poteva esser delite. Verifica le permissiones.'; +$lang['mediainuse'] = 'Le file "%s" non ha essite delite proque illo es ancora in uso.'; +$lang['namespaces'] = 'Spatios de nomines'; +$lang['mediafiles'] = 'Files disponibile in'; +$lang['js']['searchmedia'] = 'Cercar files'; +$lang['js']['keepopen'] = 'Mantener fenestra aperte post selection'; +$lang['js']['hidedetails'] = 'Celar detalios'; +$lang['js']['mediatitle'] = 'Configuration del ligamine'; +$lang['js']['mediadisplay'] = 'Typo de ligamine'; +$lang['js']['mediaalign'] = 'Alineamento'; +$lang['js']['mediasize'] = 'Dimension del imagine'; +$lang['js']['mediatarget'] = 'Destination del ligamine'; +$lang['js']['mediaclose'] = 'Clauder'; +$lang['js']['mediainsert'] = 'Inserer'; +$lang['js']['mediadisplayimg'] = 'Monstrar le imagine.'; +$lang['js']['mediadisplaylnk'] = 'Monstrar solmente le imagine.'; +$lang['js']['mediasmall'] = 'Version parve'; +$lang['js']['mediamedium'] = 'Version medie'; +$lang['js']['medialarge'] = 'Version grande'; +$lang['js']['mediaoriginal'] = 'Version original'; +$lang['js']['medialnk'] = 'Ligamine al pagina de detalios'; +$lang['js']['mediadirect'] = 'Ligamine directe verso le original'; +$lang['js']['medianolnk'] = 'Nulle ligamine'; +$lang['js']['medianolink'] = 'Non ligar verso le imagine'; +$lang['js']['medialeft'] = 'Alinear le imagine verso le sinistra.'; +$lang['js']['mediaright'] = 'Alinear le imagine verso le dextra.'; +$lang['js']['mediacenter'] = 'Alinear le imagine in le medio.'; +$lang['js']['medianoalign'] = 'Non alinear.'; +$lang['js']['nosmblinks'] = 'Le ligamines a ressources de Windows functiona solmente in Microsoft Internet Explorer. +Tu pote nonobstante copiar e collar le ligamine.'; +$lang['js']['linkwiz'] = 'Assistente pro ligamines'; +$lang['js']['linkto'] = 'Ligar verso:'; +$lang['js']['del_confirm'] = 'Realmente deler le entrata(s) seligite?'; +$lang['js']['mu_btn'] = 'Incargar plure files simultaneemente'; +$lang['mediausage'] = 'Usa le syntaxe sequente pro referer a iste file:'; +$lang['mediaview'] = 'Vider file original'; +$lang['mediaroot'] = 'radice'; +$lang['mediaupload'] = 'Incarga hic un file in le spatio de nomines actual. Pro crear subspatios de nomines, antepone los al nomine de file "Incargar como", separate per signos de duo punctos (":").'; +$lang['mediaextchange'] = 'Extension del file cambiate de .%s a .%s!'; +$lang['reference'] = 'Referentias pro'; +$lang['ref_inuse'] = 'Le file non pote esser delite proque illo es ancora in uso per le sequente paginas:'; +$lang['ref_hidden'] = 'Alcun referentias es in paginas pro le quales tu non ha le permission de lectura'; +$lang['hits'] = 'Resultatos'; +$lang['quickhits'] = 'Nomines de pagina correspondente'; +$lang['toc'] = 'Tabula de contento'; +$lang['current'] = 'actual'; +$lang['yours'] = 'Tu version'; +$lang['diff'] = 'Monstrar differentias con versiones actual'; +$lang['diff2'] = 'Monstrar differentias inter le versiones seligite'; +$lang['line'] = 'Linea'; +$lang['breadcrumb'] = 'Tracia'; +$lang['youarehere'] = 'Tu es hic'; +$lang['lastmod'] = 'Ultime modification'; +$lang['by'] = 'per'; +$lang['deleted'] = 'removite'; +$lang['created'] = 'create'; +$lang['restored'] = 'ancian version restaurate'; +$lang['external_edit'] = 'modification externe'; +$lang['summary'] = 'Modificar summario'; +$lang['noflash'] = 'Le <a href="http://www.adobe.com/products/flashplayer/">plug-in Flash de Adobe</a> es necessari pro monstrar iste contento.'; +$lang['download'] = 'Discargar fragmento'; +$lang['mail_newpage'] = 'pagina addite:'; +$lang['mail_changed'] = 'pagina modificate:'; +$lang['mail_subscribe_list'] = 'paginas modificate in spatio de nomines:'; +$lang['mail_new_user'] = 'nove usator:'; +$lang['mail_upload'] = 'file incargate:'; +$lang['qb_bold'] = 'Texto grasse'; +$lang['qb_italic'] = 'Texto italic'; +$lang['qb_underl'] = 'Texto sublineate'; +$lang['qb_code'] = 'Texto de codice'; +$lang['qb_strike'] = 'Texto cancellate'; +$lang['qb_h1'] = 'Titulo a nivello 1'; +$lang['qb_h2'] = 'Titulo a nivello 2'; +$lang['qb_h3'] = 'Titulo a nivello 3'; +$lang['qb_h4'] = 'Titulo a nivello 4'; +$lang['qb_h5'] = 'Titulo a nivello 5'; +$lang['qb_h'] = 'Titulo'; +$lang['qb_hs'] = 'Seliger titulo'; +$lang['qb_hplus'] = 'Titulo superior'; +$lang['qb_hminus'] = 'Titulo inferior'; +$lang['qb_hequal'] = 'Titulo al mesme nivello'; +$lang['qb_link'] = 'Ligamine interne'; +$lang['qb_extlink'] = 'Ligamine externe'; +$lang['qb_hr'] = 'Linea horizontal'; +$lang['qb_ol'] = 'Elemento de lista ordinate'; +$lang['qb_ul'] = 'Elemento de lista non ordinate'; +$lang['qb_media'] = 'Adder imagines e altere files'; +$lang['qb_sig'] = 'Inserer signatura'; +$lang['qb_smileys'] = 'Emoticones '; +$lang['qb_chars'] = 'Characteres special'; +$lang['upperns'] = 'Saltar al spatio de nomines superior'; +$lang['admin_register'] = 'Adder nove usator'; +$lang['metaedit'] = 'Modificar metadatos'; +$lang['metasaveerr'] = 'Scriptura de metadatos fallite'; +$lang['metasaveok'] = 'Metadatos salveguardate'; +$lang['img_backto'] = 'Retornar a'; +$lang['img_title'] = 'Titulo'; +$lang['img_caption'] = 'Legenda'; +$lang['img_date'] = 'Data'; +$lang['img_fname'] = 'Nomine de file'; +$lang['img_fsize'] = 'Dimension'; +$lang['img_artist'] = 'Photographo'; +$lang['img_copyr'] = 'Copyright'; +$lang['img_format'] = 'Formato'; +$lang['img_camera'] = 'Camera'; +$lang['img_keywords'] = 'Parolas-clave'; +$lang['subscr_subscribe_success'] = '%s addite al lista de subscription de %s'; +$lang['subscr_subscribe_error'] = 'Error durante le addition de %s al lista de subscription de %s'; +$lang['subscr_subscribe_noaddress'] = 'Il non ha un adresse associate con tu conto. Tu non pote esser addite al lista de subscription.'; +$lang['subscr_unsubscribe_success'] = '%s removite del lista de subscription de %s'; +$lang['subscr_unsubscribe_error'] = 'Error durante le remotion de %s del lista de subscription de %s'; +$lang['subscr_already_subscribed'] = '%s es ja subscribite a %s'; +$lang['subscr_not_subscribed'] = '%s non es subscribite a %s'; +$lang['subscr_m_not_subscribed'] = 'Tu non es actualmente subscribite al pagina o spatio de nomines actual.'; +$lang['subscr_m_new_header'] = 'Adder subscription'; +$lang['subscr_m_current_header'] = 'Subscriptiones actual'; +$lang['subscr_m_unsubscribe'] = 'Cancellar subscription'; +$lang['subscr_m_subscribe'] = 'Subscriber'; +$lang['subscr_m_receive'] = 'Reciper'; +$lang['subscr_style_every'] = 'un message pro cata modification'; +$lang['subscr_style_digest'] = 'un digesto de modificationes pro cata pagina'; +$lang['subscr_style_list'] = 'lista de paginas modificate depost le ultime e-mail'; +$lang['authmodfailed'] = 'Configuration incorrecte de authentication de usator. Per favor informa le administrator de tu wiki.'; +$lang['authtempfail'] = 'Le authentication de usator temporarimente non es disponibile. Si iste situation persiste, per favor informa le administrator de tu wiki.'; +$lang['i_chooselang'] = 'Selige tu lingua'; +$lang['i_installer'] = 'Installator de DokuWiki'; +$lang['i_wikiname'] = 'Nomine del wiki'; +$lang['i_enableacl'] = 'Activar ACL (recommendate)'; +$lang['i_superuser'] = 'Superusator'; +$lang['i_problems'] = 'Le installator ha trovate alcun problemas, indicate hic infra. Tu debe resolver iste problemas pro poter continuar.'; +$lang['i_modified'] = 'Pro motivos de securitate, iste script functiona solmente con un installation de DokuWiki nove e non modificate. +Tu debe re-extraher le files del pacchetto discargate, o consultar le <a href="http://dokuwiki.org/install">instructiones de installation</a> complete pro altere optiones.'; +$lang['i_funcna'] = 'Le function PHP <code>%s</code> non es disponibile. Pote esser que tu albergo web lo ha disactivate pro un ration o altere.'; +$lang['i_phpver'] = 'Le version de PHP <code>%s</code> es plus ancian que le version requisite <code>%s</code>. Es necessari actualisar le installation de PHP.'; +$lang['i_permfail'] = '<code>%s</code> non permitte le accesso de scriptura a DokuWiki. Tu debe reparar le permissiones de iste directorio!'; +$lang['i_confexists'] = '<code>%s</code> ja existe'; +$lang['i_writeerr'] = 'Impossibile crear <code>%s</code>. Tu debe verificar le permissiones de directorios/files e crear iste file manualmente.'; +$lang['i_badhash'] = 'dokuwiki.php non recognoscite o modificate (hash=<code>%s</code>)'; +$lang['i_badval'] = '<code>%s</code> - valor vacue o invalide'; +$lang['i_success'] = 'Le configuration ha succedite. Tu pote ora deler le file install.php. Continua a +<a href="doku.php">tu nove DokuWiki</a>.'; +$lang['i_failure'] = 'Alcun errores occurreva durante le scriptura del files de configuration. Es possibile que tu debe remediar iste errores manualmente ante que +tu pote usar <a href="doku.php">tu nove DokuWiki</a>.'; +$lang['i_policy'] = 'Politica de ACL interne'; +$lang['i_pol0'] = 'Wiki aperte (lectura, scriptura, incargamento pro omnes)'; +$lang['i_pol1'] = 'Wiki public (lectura pro omnes, scriptura e incargamento pro usatores registrate)'; +$lang['i_pol2'] = 'Wiki claudite (lectura, scriptura e incargamento solmente pro usatores registrate)'; +$lang['i_retry'] = 'Reprobar'; +$lang['mu_intro'] = 'Hic tu pote incargar plure files insimul. Clicca super le button Navigar pro adder los al cauda. Preme Incargar quando tu ha finite.'; +$lang['mu_gridname'] = 'Nomine de file'; +$lang['mu_gridsize'] = 'Dimension'; +$lang['mu_gridstat'] = 'Stato'; +$lang['mu_namespace'] = 'Spatio de nomines'; +$lang['mu_browse'] = 'Navigar'; +$lang['mu_toobig'] = 'troppo grande'; +$lang['mu_ready'] = 'preste pro incargamento'; +$lang['mu_done'] = 'complete'; +$lang['mu_fail'] = 'fallite'; +$lang['mu_authfail'] = 'session expirate'; +$lang['mu_progress'] = '@PCT@% incargate'; +$lang['mu_filetypes'] = 'Typos de file permittite'; +$lang['mu_info'] = 'files incargate.'; +$lang['mu_lasterr'] = 'Ultime error:'; +$lang['recent_global'] = 'Tu observa actualmente le modificationes intra le spatio de nomines <b>%s</b>. Tu pote etiam <a href="%s">vider le modificationes recente de tote le wiki</a>.'; +$lang['years'] = '%d annos retro'; +$lang['months'] = '%d menses retro'; +$lang['weeks'] = '%d septimanas retro'; +$lang['days'] = '%d dies retro'; +$lang['hours'] = '%d horas retro'; +$lang['minutes'] = '%d minutas retro'; +$lang['seconds'] = '%d secundas retro'; diff --git a/inc/lang/ia/locked.txt b/inc/lang/ia/locked.txt new file mode 100644 index 000000000..726aabb34 --- /dev/null +++ b/inc/lang/ia/locked.txt @@ -0,0 +1,3 @@ +====== Pagina serrate ====== + +Iste pagina es actualmente serrate proque un altere usator lo modifica in iste momento. Tu debe attender usque iste usator fini le modification o usque al expiration del serratura.
\ No newline at end of file diff --git a/inc/lang/ia/login.txt b/inc/lang/ia/login.txt new file mode 100644 index 000000000..4c428f358 --- /dev/null +++ b/inc/lang/ia/login.txt @@ -0,0 +1,3 @@ +====== Aperir session ====== + +Tu non es identificate! Entra tu credentiales de authentication pro aperir un session. Tu debe haber activate le cookies pro aperir un session.
\ No newline at end of file diff --git a/inc/lang/ia/mailtext.txt b/inc/lang/ia/mailtext.txt new file mode 100644 index 000000000..14c1a3a60 --- /dev/null +++ b/inc/lang/ia/mailtext.txt @@ -0,0 +1,17 @@ +Un pagina in tu DokuWiki ha essite addite o modificate. Ecce le detalios: + +Data : @DATE@ +Navigator : @BROWSER@ +Adresse IP : @IPADDRESS@ +Nomine host : @HOSTNAME@ +Version ancian: @OLDPAGE@ +Version nove: @NEWPAGE@ +Summario: @SUMMARY@ +Usator : @USER@ + +@DIFF@ + + +-- +Iste e-mail ha essite generate per DokuWiki a +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/ia/newpage.txt b/inc/lang/ia/newpage.txt new file mode 100644 index 000000000..8db7aa797 --- /dev/null +++ b/inc/lang/ia/newpage.txt @@ -0,0 +1,3 @@ +====== Iste topico non existe ancora ====== + +Tu ha sequite un ligamine verso un topico que non existe ancora. Si tu ha le permission requisite, tu pote crear lo con le button "Crear iste pagina".
\ No newline at end of file diff --git a/inc/lang/ia/norev.txt b/inc/lang/ia/norev.txt new file mode 100644 index 000000000..75e44b969 --- /dev/null +++ b/inc/lang/ia/norev.txt @@ -0,0 +1,3 @@ +====== Version non existe ====== + +Le version specificate non existe. Usa le button "Versiones ancian" pro un lista de versiones ancian de iste documento.
\ No newline at end of file diff --git a/inc/lang/ia/password.txt b/inc/lang/ia/password.txt new file mode 100644 index 000000000..9ad93d6ed --- /dev/null +++ b/inc/lang/ia/password.txt @@ -0,0 +1,10 @@ +Salute @FULLNAME@! + +Ecce tu datos de usator pro @TITLE@ a @DOKUWIKIURL@ + +Nomine de usator : @LOGIN@ +Contrasigno : @PASSWORD@ + +-- +Iste message ha essite generate per DokuWiki a +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/ia/preview.txt b/inc/lang/ia/preview.txt new file mode 100644 index 000000000..22b958baf --- /dev/null +++ b/inc/lang/ia/preview.txt @@ -0,0 +1,3 @@ +====== Previsualisation ====== + +Isto es un previsualisation de tu texto. Memora: le pagina **non** ha ancora essite salveguardate!
\ No newline at end of file diff --git a/inc/lang/ia/pwconfirm.txt b/inc/lang/ia/pwconfirm.txt new file mode 100644 index 000000000..a490f7929 --- /dev/null +++ b/inc/lang/ia/pwconfirm.txt @@ -0,0 +1,14 @@ +Salute @FULLNAME@! + +Alcuno ha requestate un nove contrasigno pro tu conto de @TITLE@ +a @DOKUWIKIURL@ + +Si tu non ha requestate un nove contrasigno, alora simplemente ignora iste message. + +Pro confirmar que le requesta realmente ha essite inviate per te, per favor usa le ligamine sequente. + +@CONFIRM@ + +-- +Iste message ha essite generate per DokuWiki a +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/ia/read.txt b/inc/lang/ia/read.txt new file mode 100644 index 000000000..e7e80dbfc --- /dev/null +++ b/inc/lang/ia/read.txt @@ -0,0 +1 @@ +Iste pagina es pro lectura solmente. Tu pote vider le codice-fonte, ma non modificar lo. Contacta tu administrator si tu pensa que isto es errate.
\ No newline at end of file diff --git a/inc/lang/ia/recent.txt b/inc/lang/ia/recent.txt new file mode 100644 index 000000000..ba39c3ff5 --- /dev/null +++ b/inc/lang/ia/recent.txt @@ -0,0 +1,3 @@ +====== Modificationes recente ====== + +Le sequente paginas ha essite modificate recentemente.
\ No newline at end of file diff --git a/inc/lang/ia/register.txt b/inc/lang/ia/register.txt new file mode 100644 index 000000000..22c4e4ada --- /dev/null +++ b/inc/lang/ia/register.txt @@ -0,0 +1,3 @@ +====== Crear un nove conto de usator ====== + +Completa tote le informationes hic infra pro crear un nove conto in iste wiki. Assecura te de fornir un **adresse de e-mail valide!** Si le systema non te demanda de entrar un contrasigno hic, un nove contrasigno essera inviate a iste adresse. Le nomine de usator debe esser un [[doku>pagename|nomine de pagina]] valide. diff --git a/inc/lang/ia/registermail.txt b/inc/lang/ia/registermail.txt new file mode 100644 index 000000000..c4e9d56bc --- /dev/null +++ b/inc/lang/ia/registermail.txt @@ -0,0 +1,14 @@ +Un nove conto de usator ha essite create. Ecce le detalios: + +Nomine de usator : @NEWUSER@ +Nomine complete : @NEWNAME@ +E-mail : @NEWEMAIL@ + +Data : @DATE@ +Navigator : @BROWSER@ +Adresse IP : @IPADDRESS@ +Nomine host : @HOSTNAME@ + +-- +Iste message ha essite generate per DokuWiki a +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/ia/resendpwd.txt b/inc/lang/ia/resendpwd.txt new file mode 100644 index 000000000..97bcac02a --- /dev/null +++ b/inc/lang/ia/resendpwd.txt @@ -0,0 +1,3 @@ +====== Inviar nove contrasigno ====== + +Per favor entra tu nomine de usator in le formulario hic infra pro requestar un nove contrasigno pro tu conto in iste wiki. Un ligamine de confirmation essera inviate a tu adresse de e-mail registrate.
\ No newline at end of file diff --git a/inc/lang/ia/revisions.txt b/inc/lang/ia/revisions.txt new file mode 100644 index 000000000..e914edb61 --- /dev/null +++ b/inc/lang/ia/revisions.txt @@ -0,0 +1,3 @@ +====== Versiones ancian ====== + +Ecce le versiones ancian del documento presente. Pro reverter lo a un version ancian, selige un version del lista in basso, clicca "Modificar iste pagina" e salveguarda lo.
\ No newline at end of file diff --git a/inc/lang/ia/searchpage.txt b/inc/lang/ia/searchpage.txt new file mode 100644 index 000000000..c53683371 --- /dev/null +++ b/inc/lang/ia/searchpage.txt @@ -0,0 +1,5 @@ +====== Recerca ====== + +Le resultatos de tu recerca se trova hic infra. Si tu non ha trovate lo que tu cerca, tu pote crear o modificar le pagina nominate secundo tu consulta con le button appropriate. + +===== Resultatos =====
\ No newline at end of file diff --git a/inc/lang/ia/showrev.txt b/inc/lang/ia/showrev.txt new file mode 100644 index 000000000..60ee2a7f6 --- /dev/null +++ b/inc/lang/ia/showrev.txt @@ -0,0 +1,2 @@ +**Isto es un version ancian del documento!** +----
\ No newline at end of file diff --git a/inc/lang/ia/stopwords.txt b/inc/lang/ia/stopwords.txt new file mode 100644 index 000000000..e3e513509 --- /dev/null +++ b/inc/lang/ia/stopwords.txt @@ -0,0 +1,38 @@ +# Isto es un lista de parolas que le generator de indices ignora, un parola per linea. +# Si tu modifica iste file, assecura te de usar le fines de linea UNIX (newline singule). +# Non es necessari includer parolas plus curte que 3 characteres - istes es ignorate in omne caso. +a +ab +circa +com +como +como +con +de +e +es +essera +esserea +esseva +essite +ex +illo +in +iste +istes +le +le +les +lo +lor +o +pro +quando +que +qui +super +sur +tu +ubi +un +www diff --git a/inc/lang/ia/subscr_digest.txt b/inc/lang/ia/subscr_digest.txt new file mode 100644 index 000000000..ba7b92d8b --- /dev/null +++ b/inc/lang/ia/subscr_digest.txt @@ -0,0 +1,20 @@ +Salute! + +Le pagina @PAGE@ in le wiki @TITLE@ ha cambiate. +Ecce le modificationes: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Version ancian: @OLDPAGE@ +Version nove: @NEWPAGE@ + +Pro cancellar le notificationes de paginas, aperi un session al wiki a +@DOKUWIKIURL@ postea visita +@SUBSCRIBE@ +e cancella tu subscription al modificationes in paginas e/o spatios de nomines. + +-- +Iste message ha essite generate per DokuWiki a +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/ia/subscr_form.txt b/inc/lang/ia/subscr_form.txt new file mode 100644 index 000000000..f63a30d4c --- /dev/null +++ b/inc/lang/ia/subscr_form.txt @@ -0,0 +1,4 @@ +====== Gestion de subscriptiones ====== + +Iste pagina permitte gerer tu subscriptiones pro le pagina e spatio de nomines actual. +
\ No newline at end of file diff --git a/inc/lang/ia/subscr_list.txt b/inc/lang/ia/subscr_list.txt new file mode 100644 index 000000000..9f93db252 --- /dev/null +++ b/inc/lang/ia/subscr_list.txt @@ -0,0 +1,17 @@ +Salute! + +Alcun paginas in le spatio de nomines @PAGE@ del wiki @TITLE@ ha cambiate. +Ecce le paginas con modiicationes: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Pro cancellar le notificationes de paginas, aperi un session al wiki a +@DOKUWIKIURL@ postea visita +@SUBSCRIBE@ +e cancella tu subscription al modificationes in paginas e/o spatios de nomines. + +-- +Iste message ha essite generate per DokuWiki a +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/ia/subscr_single.txt b/inc/lang/ia/subscr_single.txt new file mode 100644 index 000000000..3d6ef7103 --- /dev/null +++ b/inc/lang/ia/subscr_single.txt @@ -0,0 +1,26 @@ +Salute! + +Le pagina @PAGE@ in le wiki @TITLE@ ha cambiate. +Ecce le modificationes: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Data : @DATE@ +Usator : @USER@ +Summario: @SUMMARY@ +Version ancian: @OLDPAGE@ +Version nove: @NEWPAGE@ + +Pro cancellar le notificationes de paginas, aperi un session al wiki a +@DOKUWIKIURL@ postea visita +@NEWPAGE@ +e cancella tu subscription al modificationes in paginas e/o spatios de nomines. + +-- +Iste message ha essite generate per DokuWiki a +@DOKUWIKIURL@ +-- +This mail was generated by DokuWiki at +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/ia/updateprofile.txt b/inc/lang/ia/updateprofile.txt new file mode 100644 index 000000000..3968d3cde --- /dev/null +++ b/inc/lang/ia/updateprofile.txt @@ -0,0 +1,3 @@ +====== Actualisa le profilo de tu conto ====== + +Solmente es necessari completar le campos que tu vole cambiar. Non es possibile cambiar tu nomine de usator.
\ No newline at end of file diff --git a/inc/lang/ia/uploadmail.txt b/inc/lang/ia/uploadmail.txt new file mode 100644 index 000000000..8f120f25b --- /dev/null +++ b/inc/lang/ia/uploadmail.txt @@ -0,0 +1,14 @@ +Un file ha essite incargate in tu DokuWiki. Ecce le detalios: + +File : @MEDIA@ +Data : @DATE@ +Navigator : @BROWSER@ +Adresse IP : @IPADDRESS@ +Nomine host: @HOSTNAME@ +Dimension : @SIZE@ +Typo MIME : @MIME@ +Usator : @USER@ + +-- +Iste message ha essite generate per DokuWiki a +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/id-ni/lang.php b/inc/lang/id-ni/lang.php index 2fc631373..4e26677e0 100644 --- a/inc/lang/id-ni/lang.php +++ b/inc/lang/id-ni/lang.php @@ -75,5 +75,5 @@ $lang['resendpwdnouser'] = 'Bologö dödöu, lö masöndra zangoguna da\'a $lang['resendpwdconfirm'] = 'No tefaohe\'ö link famaduhu\'ö ba imele.'; $lang['resendpwdsuccess'] = 'No tefa\'ohe\'ö kode sibohou ba imele.'; $lang['txt_upload'] = 'Fili file ni fa\'ohe\'ö'; -$lang['notsavedyet'] = 'Famawu\'a si lö mu\'irö\'ö taya. \nSinduhu ötohugö?'; +$lang['js']['notsavedyet'] = "Famawu\'a si lö mu\'irö\'ö taya. \nSinduhu ötohugö?"; $lang['mediaselect'] = 'Media file'; diff --git a/inc/lang/id/lang.php b/inc/lang/id/lang.php index 447abaf1a..3ea1b394a 100644 --- a/inc/lang/id/lang.php +++ b/inc/lang/id/lang.php @@ -86,7 +86,7 @@ $lang['txt_overwrt'] = 'File yang telah ada akan ditindih'; $lang['lockedby'] = 'Sedang dikunci oleh'; $lang['lockexpire'] = 'Penguncian artikel sampai dengan'; $lang['willexpire'] = 'Halaman yang sedang Anda kunci akan berakhir dalam waktu kurang lebih satu menit.\nUntuk menghindari konflik, gunakan tombol Preview untuk me-reset timer pengunci.'; -$lang['notsavedyet'] = 'Perubahan yang belum disimpan akan hilang.\nYakin akan dilanjutkan?'; +$lang['js']['notsavedyet'] = "Perubahan yang belum disimpan akan hilang.\nYakin akan dilanjutkan?"; $lang['rssfailed'] = 'Error terjadi saat mengambil feed: '; $lang['nothingfound'] = 'Tidak menemukan samasekali.'; $lang['mediaselect'] = 'Pilihan Mediafile'; diff --git a/inc/lang/id/wordblock.txt b/inc/lang/id/wordblock.txt deleted file mode 100644 index 1e40ce381..000000000 --- a/inc/lang/id/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== SPAM blocked ====== - -Maaf, tulisan Anda **tidak disimpan** karena terdapat satu atau lebih kata-kata yang **tabu**. Jika Anda mencoba melakukan SPAM wiki ini -- Bangsat lu! Tetapi, jika Anda pikir ini adalah kesalahan sistem, harap hubungi administrator wiki ini. - diff --git a/inc/lang/it/adminplugins.txt b/inc/lang/it/adminplugins.txt index 6a5a30573..4f17d6da4 100644 --- a/inc/lang/it/adminplugins.txt +++ b/inc/lang/it/adminplugins.txt @@ -1 +1 @@ -===== Plugin addizionali =====
\ No newline at end of file +===== Plugin aggiuntivi =====
\ No newline at end of file diff --git a/inc/lang/it/backlinks.txt b/inc/lang/it/backlinks.txt index 452019db5..ad5a9c23b 100644 --- a/inc/lang/it/backlinks.txt +++ b/inc/lang/it/backlinks.txt @@ -1,4 +1,4 @@ ====== Puntano qui ====== -Questa è una lista delle pagine che sembrano avere un collegamento alla pagina corrente. +Questa è una lista delle pagine che sembrano avere un collegamento alla pagina attuale. diff --git a/inc/lang/it/conflict.txt b/inc/lang/it/conflict.txt index 44789a365..bcb90d28d 100644 --- a/inc/lang/it/conflict.txt +++ b/inc/lang/it/conflict.txt @@ -2,5 +2,5 @@ Esiste una versione più recente del documento che hai modificato. Questo può accadere quando un altro utente ha già modificato il documento durante le tue modifiche. -Esamina le differenze mostrate di seguito, quindi decidi quale versione mantenere. Se scegli ''salva'', la tua versione verrà salvata. Clicca su ''annulla'' per mantenere la versione corrente. +Esamina le differenze mostrate di seguito, quindi decidi quale versione mantenere. Se scegli ''Salva'', la tua versione verrà salvata. Clicca su ''Annulla'' per mantenere la versione attuale. diff --git a/inc/lang/it/denied.txt b/inc/lang/it/denied.txt index e87eeeada..c6ba610c4 100644 --- a/inc/lang/it/denied.txt +++ b/inc/lang/it/denied.txt @@ -1,5 +1,5 @@ ====== Accesso negato ====== -Non hai i diritti per continuare. Hai forse dimenticato di effettuare il login? +Non hai i diritti per continuare. Hai forse dimenticato di effettuare l'accesso? diff --git a/inc/lang/it/diff.txt b/inc/lang/it/diff.txt index 6b48ed44e..5a41eaaec 100644 --- a/inc/lang/it/diff.txt +++ b/inc/lang/it/diff.txt @@ -1,4 +1,4 @@ ====== Differenze ====== -Queste sono le differenze tra la revisione selezionata e la versione corrente della pagina. +Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina. diff --git a/inc/lang/it/draft.txt b/inc/lang/it/draft.txt index 9932786ba..479d0fafc 100644 --- a/inc/lang/it/draft.txt +++ b/inc/lang/it/draft.txt @@ -2,5 +2,5 @@ La tua ultima sessione di modifica su questa pagina non è stata completata correttamente. DokuWiki ha salvato in automatico una bozza durante il tuo lavoro, che puoi ora utilizzare per continuare le tue modifiche. Di seguito puoi trovare i dati che sono stati salvati dalla tua ultima sessione. -Decidi se vuoi //recuperare// la sessione di modifica, //cancellare// la bozza salavata in automatico oppure //annullare// le modifiche. +Decidi se vuoi //recuperare// la sessione di modifica, //eliminare// la bozza salavata in automatico oppure //annullare// le modifiche. diff --git a/inc/lang/it/edit.txt b/inc/lang/it/edit.txt index fdfaf463e..8f2ba973a 100644 --- a/inc/lang/it/edit.txt +++ b/inc/lang/it/edit.txt @@ -1,2 +1,2 @@ -Modifica la pagina e clicca su ''Salva''. Vedi [[wiki:syntax]] per la sintassi riconosciuta da Wiki. Modifica questa pagina solo se puoi **apportare dei miglioramenti**. Se vuoi solo fare degli esperimenti ed imparare come fare i primi passi usa [[playground:playground]]. +Modifica la pagina e clicca su ''Salva''. Vedi [[wiki:syntax]] per la sintassi riconosciuta dal Wiki. Modifica questa pagina solo se puoi **apportare dei miglioramenti**. Se vuoi solo fare degli esperimenti ed imparare come fare i primi passi usa [[playground:playground]]. diff --git a/inc/lang/it/editrev.txt b/inc/lang/it/editrev.txt index 0a309fa24..502320083 100644 --- a/inc/lang/it/editrev.txt +++ b/inc/lang/it/editrev.txt @@ -1,2 +1,2 @@ -**Hai caricato una precedente revisione del documento!** Se salvi questa pagina creerai una nuova versione con questi dati. +**Hai caricato una revisione precedente del documento!** Se salvi questa pagina creerai una nuova versione con questi dati. ----
\ No newline at end of file diff --git a/inc/lang/it/index.txt b/inc/lang/it/index.txt index 8d5f00409..52c6fbc5d 100644 --- a/inc/lang/it/index.txt +++ b/inc/lang/it/index.txt @@ -1,4 +1,4 @@ ====== Indice ====== -Questo è un indice di tutte le pagine disponibili ordinate per [[doku>namespaces|categoria]]. +Questo è un indice di tutte le pagine disponibili ordinate per [[doku>namespaces|categorie]]. diff --git a/inc/lang/it/install.html b/inc/lang/it/install.html index 5bc4b0dc2..471734412 100644 --- a/inc/lang/it/install.html +++ b/inc/lang/it/install.html @@ -21,4 +21,4 @@ da amministrare.</p> <p>Gli utenti esperti o con particolari esigenze di installazione dovrebbero far riferimento ai seguenti link per i dettagli riguardanti <a href="http://dokuwiki.org/install">istruzioni per l'installazione</a> -and <a href="http://dokuwiki.org/config">parametri di configurazione</a>.</p> +e i <a href="http://dokuwiki.org/config">parametri di configurazione</a>.</p> diff --git a/inc/lang/it/lang.php b/inc/lang/it/lang.php index 827967d0f..4bfafb060 100644 --- a/inc/lang/it/lang.php +++ b/inc/lang/it/lang.php @@ -12,6 +12,8 @@ * @author Lorenzo Breda <lbreda@gmail.com> * @author snarchio@alice.it * @author robocap <robocap1@gmail.com> + * @author Matteo Carnevali <rekstorm@gmail.com> + * @author Osman Tekin osman.tekin93@hotmail.it */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -40,29 +42,27 @@ $lang['btn_login'] = 'Entra'; $lang['btn_logout'] = 'Esci'; $lang['btn_admin'] = 'Amministrazione'; $lang['btn_update'] = 'Aggiorna'; -$lang['btn_delete'] = 'Cancella'; +$lang['btn_delete'] = 'Elimina'; $lang['btn_back'] = 'Indietro'; $lang['btn_backlink'] = 'Backlinks'; $lang['btn_backtomedia'] = 'Torna alla selezione file'; $lang['btn_subscribe'] = 'Sottoscrivi modifiche'; -$lang['btn_unsubscribe'] = 'Cancella sottoscrizione'; -$lang['btn_subscribens'] = 'Sottoscrivi modifiche della categoria'; -$lang['btn_unsubscribens'] = 'Cancella sottoscrizione modifiche della categoria'; $lang['btn_profile'] = 'Aggiorna profilo'; $lang['btn_reset'] = 'Annulla'; $lang['btn_resendpwd'] = 'Invia nuova password'; $lang['btn_draft'] = 'Modifica bozza'; $lang['btn_recover'] = 'Ripristina bozza'; -$lang['btn_draftdel'] = 'Cancella bozza'; +$lang['btn_draftdel'] = 'Elimina bozza'; +$lang['btn_revert'] = 'Ripristina'; $lang['loggedinas'] = 'Collegato come'; $lang['user'] = 'Nome utente'; $lang['pass'] = 'Password'; $lang['newpass'] = 'Nuova password'; -$lang['oldpass'] = 'Conferma password corrente'; +$lang['oldpass'] = 'Conferma password attuale'; $lang['passchk'] = 'Ripeti password'; $lang['remember'] = 'Ricorda automaticamente'; $lang['fullname'] = 'Nome completo'; -$lang['email'] = 'E-Mail'; +$lang['email'] = 'Email'; $lang['register'] = 'Registrazione'; $lang['profile'] = 'Profilo utente'; $lang['badlogin'] = 'Il nome utente o la password non sono validi.'; @@ -70,11 +70,11 @@ $lang['minoredit'] = 'Modifiche minori'; $lang['draftdate'] = 'Bozza salvata in automatico il'; $lang['nosecedit'] = 'La pagina nel frattempo è cambiata, la sezione info è scaduta, caricata invece la pagina intera.'; $lang['regmissing'] = 'Devi riempire tutti i campi.'; -$lang['reguexists'] = 'Il nome utente inserito esiste già .'; -$lang['regsuccess'] = 'L\'utente è stato creato. La password è stata spedita via e-mail.'; +$lang['reguexists'] = 'Il nome utente inserito esiste già.'; +$lang['regsuccess'] = 'L\'utente è stato creato. La password è stata spedita via email.'; $lang['regsuccess2'] = 'L\'utente è stato creato.'; -$lang['regmailfail'] = 'Sembra che ci sia stato un errore nell\'invio della e-mail. Per favore contatta il tuo amministratore!'; -$lang['regbadmail'] = 'L\'indirizzo e-mail fornito sembra essere non valido - se pensi che ci sia un errore contatta il tuo amministratore'; +$lang['regmailfail'] = 'Sembra che ci sia stato un errore nell\'invio della email. Contatta il tuo amministratore!'; +$lang['regbadmail'] = 'L\'indirizzo email fornito sembra essere non valido - se pensi che ci sia un errore contatta il tuo amministratore'; $lang['regbadpass'] = 'Le due password inserite non coincidono, prova di nuovo.'; $lang['regpwmail'] = 'La tua password DokuWiki'; $lang['reghere'] = 'Non hai ancora un accesso? Registrati qui.'; @@ -87,18 +87,50 @@ $lang['resendna'] = 'Questo wiki non supporta l\'invio di nuove pas $lang['resendpwd'] = 'Invia nuova password per'; $lang['resendpwdmissing'] = 'Devi riempire tutti i campi.'; $lang['resendpwdnouser'] = 'Impossibile trovare questo utente nel database.'; -$lang['resendpwdbadauth'] = 'Spiacente, questo codice di autorizzazione non è valido. Assicurati di aver usato il link completo di conferma.'; +$lang['resendpwdbadauth'] = 'Spiacenti, questo codice di autorizzazione non è valido. Assicurati di aver usato il link completo di conferma.'; $lang['resendpwdconfirm'] = 'Un link di conferma è stato spedito via email.'; $lang['resendpwdsuccess'] = 'La nuova password è stata spedita via email.'; $lang['license'] = 'Ad eccezione da dove è diversamente indicato, il contenuto di questo wiki è sotto la seguente licenza:'; $lang['licenseok'] = 'Nota: modificando questa pagina accetti di rilasciare il contenuto sotto la seguente licenza:'; +$lang['searchmedia'] = 'Cerca nome file:'; +$lang['searchmedia_in'] = 'Cerca in &s'; $lang['txt_upload'] = 'Seleziona un file da caricare'; -$lang['txt_filename'] = 'Inserisci un "wikiname" (opzionale)'; +$lang['txt_filename'] = 'Carica come (opzionale)'; $lang['txt_overwrt'] = 'Sovrascrivi file esistente'; $lang['lockedby'] = 'Attualmente bloccato da'; $lang['lockexpire'] = 'Il blocco scade alle'; $lang['willexpire'] = 'Il tuo blocco su questa pagina scadrà tra circa un minuto.\nPer evitare incongruenze usa il pulsante di anteprima per prolungare il periodo di blocco.'; -$lang['notsavedyet'] = 'Le modifiche non salvate andranno perse.\nContinuare?'; +$lang['js']['notsavedyet'] = 'Le modifiche non salvate andranno perse.'; +$lang['js']['searchmedia'] = 'Cerca file'; +$lang['js']['keepopen'] = 'Tieni la finestra aperta durante la selezione'; +$lang['js']['hidedetails'] = 'Nascondi Dettagli'; +$lang['js']['mediatitle'] = 'Impostazioni link'; +$lang['js']['mediadisplay'] = 'Tipo link'; +$lang['js']['mediaalign'] = 'Allineamento'; +$lang['js']['mediasize'] = 'Dimensioni immagine'; +$lang['js']['mediatarget'] = 'Target del link'; +$lang['js']['mediaclose'] = 'Chiudi'; +$lang['js']['mediainsert'] = 'Inserisci'; +$lang['js']['mediadisplayimg'] = 'Mostra l\'immagine.'; +$lang['js']['mediadisplaylnk'] = 'Mostra solo il link.'; +$lang['js']['mediasmall'] = 'Versione piccola'; +$lang['js']['mediamedium'] = 'Versione media'; +$lang['js']['medialarge'] = 'Versione grande'; +$lang['js']['mediaoriginal'] = 'Versione originale'; +$lang['js']['medialnk'] = 'Link alla pagina dei dettagli'; +$lang['js']['mediadirect'] = 'Link all\'originale'; +$lang['js']['medianolnk'] = 'No link'; +$lang['js']['medianolink'] = 'Non linkare l\'immagine.'; +$lang['js']['medialeft'] = 'Allinea l\'immagine a sinistra.'; +$lang['js']['mediaright'] = 'Allinea l\'immagine a destra.'; +$lang['js']['mediacenter'] = 'Allinea l\'immagine al centro.'; +$lang['js']['medianoalign'] = 'Non allineare.'; +$lang['js']['nosmblinks'] = 'I collegamenti con le risorse condivise di Windows funzionano solo con Microsoft Internet Explorer. +Puoi fare un copia/incolla di questo collegamento.'; +$lang['js']['linkwiz'] = 'Collegamento guidato'; +$lang['js']['linkto'] = 'Collega a:'; +$lang['js']['del_confirm'] = 'Eliminare veramente questa voce?'; +$lang['js']['mu_btn'] = 'Carica più di un file alla volta'; $lang['rssfailed'] = 'Si è verificato un errore cercando questo feed: '; $lang['nothingfound'] = 'Nessun risultato trovato.'; $lang['mediaselect'] = 'Selezione dei file'; @@ -111,37 +143,34 @@ $lang['uploadbadcontent'] = 'Il contenuto caricato non corrisponde all\'est $lang['uploadspam'] = 'Il caricamento è stato bloccato dalla lista nera di spam.'; $lang['uploadxss'] = 'Il caricamento è stato bloccato perchè il contenuto potrebbe essere malizioso.'; $lang['uploadsize'] = 'Il file caricato è troppo grande. (massimo %s)'; -$lang['deletesucc'] = 'Il file "%s" è stato cancellato.'; -$lang['deletefail'] = '"%s" non può essere cancellato - verifica i permessi.'; -$lang['mediainuse'] = 'Il file "%s" non è stato cancellato - è ancora in uso.'; +$lang['deletesucc'] = 'Il file "%s" è stato eliminato.'; +$lang['deletefail'] = '"%s" non può essere eliminato - verifica i permessi.'; +$lang['mediainuse'] = 'Il file "%s" non è stato eliminato - è ancora in uso.'; $lang['namespaces'] = 'Categorie'; $lang['mediafiles'] = 'File disponibili in'; -$lang['js']['keepopen'] = 'Tieni la finestra aperta durante la selezione'; -$lang['js']['hidedetails'] = 'Nascondi Dettagli'; -$lang['js']['nosmblinks'] = 'I collegamenti con le risorse condivise di Windows funzionano solo con Microsoft Internet Explorer. -Puoi fare un copia/incolla di questo collegamento.'; -$lang['js']['mu_btn'] = 'Carica più di un file alla volta'; +$lang['accessdenied'] = 'Non sei autorizzato a vedere questa pagina.'; $lang['mediausage'] = 'Usa la seguente sintassi per riferirti a questo file:'; $lang['mediaview'] = 'Mostra file originale'; $lang['mediaroot'] = 'directory principale'; -$lang['mediaupload'] = 'Carica un file nella categoria corrente. Per creare sottocategorie, falle precedere al nome del file nella casella "Carica come", separandole da due punti (:).'; +$lang['mediaupload'] = 'Carica un file nella categoria attuale. Per creare sottocategorie, falle precedere dal nome del file nella casella "Carica come", separandole da due punti (:).'; $lang['mediaextchange'] = 'Estensione del file modificata da .%s a .%s!'; $lang['reference'] = 'Riferimenti a'; -$lang['ref_inuse'] = 'Il file non può essere cancellato in quanto è ancora utilizzato dalle seguenti pagine:'; +$lang['ref_inuse'] = 'Il file non può essere eliminato in quanto è ancora utilizzato dalle seguenti pagine:'; $lang['ref_hidden'] = 'Sono presenti alcuni riferimenti a pagine per le quali non hai i permessi di lettura'; $lang['hits'] = 'Occorrenze trovate'; $lang['quickhits'] = 'Pagine trovate'; $lang['toc'] = 'Indice'; -$lang['current'] = 'versione corrente'; +$lang['current'] = 'versione attuale'; $lang['yours'] = 'la tua versione'; $lang['diff'] = 'differenze con la versione attuale'; $lang['diff2'] = 'differenze tra le versioni selezionate'; +$lang['difflink'] = 'Link all visualizzazione della comparazione'; $lang['line'] = 'Linea'; $lang['breadcrumb'] = 'Traccia'; $lang['youarehere'] = 'Ti trovi qui'; $lang['lastmod'] = 'Ultima modifica'; $lang['by'] = 'da'; -$lang['deleted'] = 'cancellata'; +$lang['deleted'] = 'eliminata'; $lang['created'] = 'creata'; $lang['restored'] = 'versione precedente ripristinata'; $lang['external_edit'] = 'modifica esterna'; @@ -150,7 +179,8 @@ $lang['noflash'] = 'E\' necessario <a href="http://www.adobe.com/p $lang['download'] = 'Scarica lo "snippet"'; $lang['mail_newpage'] = 'pagina aggiunta:'; $lang['mail_changed'] = 'pagina modificata:'; -$lang['mail_new_user'] = 'Nuovo utente:'; +$lang['mail_subscribe_list'] = 'pagine modificate nella categoria:'; +$lang['mail_new_user'] = 'nuovo utente:'; $lang['mail_upload'] = 'file caricato:'; $lang['qb_bold'] = 'Grassetto'; $lang['qb_italic'] = 'Corsivo'; @@ -176,7 +206,7 @@ $lang['qb_media'] = 'Inserisci immagini o altri file'; $lang['qb_sig'] = 'Inserisci la firma'; $lang['qb_smileys'] = 'Smiley'; $lang['qb_chars'] = 'Caratteri speciali'; -$lang['js']['del_confirm'] = 'Cancellare questa voce?'; +$lang['upperns'] = 'vai alla categoria principale'; $lang['admin_register'] = 'Aggiungi un nuovo utente'; $lang['metaedit'] = 'Modifica metadati'; $lang['metasaveerr'] = 'Scrittura metadati fallita'; @@ -192,13 +222,24 @@ $lang['img_copyr'] = 'Copyright'; $lang['img_format'] = 'Formato'; $lang['img_camera'] = 'Camera'; $lang['img_keywords'] = 'Parole chiave'; -$lang['subscribe_success'] = '%s è stato aggiunto alla lista di sottoscrizione per la pagina %s'; -$lang['subscribe_error'] = 'Si è verificato un errore durante l\'aggiunta di %s alla lista di sottoscrizione per la pagina %s'; -$lang['subscribe_noaddress'] = 'Non c\'è alcun indirizzo associato con il tuo profilo, non puoi sottoscriverti ad alcuna lista'; -$lang['unsubscribe_success'] = '%s è stato rimosso dalla lista di sottoscrizione per la pagina %s'; -$lang['unsubscribe_error'] = 'Si è verificato un errore durante la rimozione di %s dalla lista di sottoscrizione per la pagina %s'; -$lang['authmodfailed'] = 'La configurazione dell\'autenticazione non è corretta. Per favore informa l\'amministratore di questo Wiki.'; -$lang['authtempfail'] = 'L\'autenticazione è temporaneamente non disponibile. Se questa situazione persiste, per favore informa l\'amministratore di questo Wiki.'; +$lang['subscr_subscribe_success'] = 'Aggiunto %s alla lista di sottoscrizione %s'; +$lang['subscr_subscribe_error'] = 'Impossibile aggiungere %s alla lista di sottoscrizione %s'; +$lang['subscr_subscribe_noaddress'] = 'Non esiste alcun indirizzo associato al tuo account, non puoi essere aggiunto alla lista di sottoscrizione'; +$lang['subscr_unsubscribe_success'] = 'Rimosso %s dalla lista di sottoscrizione %s'; +$lang['subscr_unsubscribe_error'] = 'Impossibile rimuovere %s dalla lista di sottoscrizione %s'; +$lang['subscr_already_subscribed'] = '% è già iscritto a %s'; +$lang['subscr_not_subscribed'] = '% non è iscritto a %s'; +$lang['subscr_m_not_subscribed'] = 'Attualmente non sei iscritto alla pagina o categoria corrente'; +$lang['subscr_m_new_header'] = 'Aggiungi sottoscrizione'; +$lang['subscr_m_current_header'] = 'Sottoscrizioni attuali'; +$lang['subscr_m_unsubscribe'] = 'Rimuovi sottoscrizione'; +$lang['subscr_m_subscribe'] = 'Sottoscrivi'; +$lang['subscr_m_receive'] = 'Ricevi'; +$lang['subscr_style_every'] = 'email per ogni modifica'; +$lang['subscr_style_digest'] = 'email riassuntiva delle modifiche di ogni pagina'; +$lang['subscr_style_list'] = 'elenco delle pagine modificate dall\'ultima email'; +$lang['authmodfailed'] = 'La configurazione dell\'autenticazione non è corretta. Informa l\'amministratore di questo Wiki.'; +$lang['authtempfail'] = 'L\'autenticazione è temporaneamente non disponibile. Se questa situazione persiste, informa l\'amministratore di questo Wiki.'; $lang['i_chooselang'] = 'Scegli la lingua'; $lang['i_installer'] = 'Installazione DokuWiki'; $lang['i_wikiname'] = 'Nome Wiki'; @@ -206,35 +247,45 @@ $lang['i_enableacl'] = 'Abilita ACL (consigliato)'; $lang['i_superuser'] = 'Amministratore'; $lang['i_problems'] = 'Si sono verificati problemi durante l\'installazione, indicati di seguito. Non è possibile continuare finché non saranno risolti.'; $lang['i_modified'] = 'Per motivi di sicurezza questa procedura funziona solamente con un\'installazione Dokuwiki nuova e non modificata. - Dovresti ri-estrarre i file dal pacchetto scaricato oppure consultare tutte le - <a href="http://dokuwiki.org/install">istruzioni per l\'installazione di Dokuwiki</a>'; -$lang['i_funcna'] = 'La funzione PHP <code>%s</code> non è disponibile. Forse il tuo provider l\'ha disabilitata per qualche motivo?'; +Dovresti ri-estrarre i file dal pacchetto scaricato oppure consultare tutte le +<a href="http://dokuwiki.org/install">istruzioni per l\'installazione di Dokuwiki</a>'; +$lang['i_funcna'] = 'La funzione PHP <code>%s</code> non è disponibile. Forse è stata disabilitata dal tuo provider per qualche motivo?'; $lang['i_phpver'] = 'La versione di PHP <code>%s</code> è inferiore a quella richiesta <code>%s</code>. Devi aggiornare l\'installazione di PHP.'; $lang['i_permfail'] = 'DokuWiki non può scrivere <code>%s</code>. E\' necessario correggere i permessi per questa directory!'; $lang['i_confexists'] = '<code>%s</code> esiste già'; $lang['i_writeerr'] = 'Impossibile creare <code>%s</code>. E\' necessario verificare i permessi della directory/file e creare il file manualmente.'; $lang['i_badhash'] = 'dokuwiki.php (hash=<code>%s</code>) non riconosciuto o modificato'; $lang['i_badval'] = '<code>%s</code> - valore vuoto o non valido'; -$lang['i_success'] = 'La configurazione è stata completata correttamente. E\' ora possibile cancellare il file install.php. Continuare con - <a href="doku.php">il nuovo DokuWiki</a>.'; +$lang['i_success'] = 'La configurazione è stata completata correttamente. Ora è possibile eliminare il file install.php. Continuare con +<a href="doku.php">il nuovo DokuWiki</a>.'; $lang['i_failure'] = 'Si sono verificati errori durante la scrittura dei file di configurazione. Potrebbe essere necessario correggerli manualmente prima di poter utilizzare <a href="doku.php">il nuovo DokuWiki</a>.'; -$lang['i_policy'] = 'Policy di accesso iniziali'; +$lang['i_policy'] = 'Regole di accesso iniziali'; $lang['i_pol0'] = 'Wiki Aperto (lettura, scrittura, caricamento file per tutti)'; $lang['i_pol1'] = 'Wiki Pubblico (lettura per tutti, scrittura e caricamento file per gli utenti registrati)'; $lang['i_pol2'] = 'Wiki Chiuso (lettura, scrittura, caricamento file solamente per gli utenti registrati)'; $lang['i_retry'] = 'Riprova'; -$lang['mu_intro'] = 'Qui si possono caricare più di un file alla volta. Cliccare su "Sfoglia..." per aggiungere i file in coda. Cliccare "Carica" quando si è pronti.'; -$lang['mu_gridname'] = 'Nome del file'; +$lang['i_license'] = 'Perfavore scegli la licenza in cui vuoi inserire il tuo contenuto:'; +$lang['mu_intro'] = 'Qui si possono caricare più di un file alla volta. Cliccare su "Sfoglia..." per aggiungere i file in coda. Fai click su "Invia file" quando si è pronti.'; +$lang['mu_gridname'] = 'Nome file'; $lang['mu_gridsize'] = 'Dimensione'; $lang['mu_gridstat'] = 'Stato'; -$lang['mu_namespace'] = 'Namespace'; -$lang['mu_browse'] = 'Sfoglia...'; +$lang['mu_namespace'] = 'Categoria'; +$lang['mu_browse'] = 'Sfoglia'; $lang['mu_toobig'] = 'troppo grande'; -$lang['mu_ready'] = 'pronto per l\'upload'; +$lang['mu_ready'] = 'pronto per caricare'; $lang['mu_done'] = 'completo'; $lang['mu_fail'] = 'fallito'; $lang['mu_authfail'] = 'sessione scaduta'; $lang['mu_progress'] = '@PCT@% caricato'; $lang['mu_filetypes'] = 'Tipi di file permessi'; $lang['mu_info'] = 'file caricati.'; +$lang['mu_lasterr'] = 'Ultimo errore:'; $lang['recent_global'] = 'Stai attualmente vedendo le modifiche dentro l\'area <b>%s</b>. Puoi anche <a href="%s">vedere le modifiche recenti dell\'intero wiki</a>.'; +$lang['years'] = '%d anni fa'; +$lang['months'] = '%d mesi fa'; +$lang['weeks'] = '%d settimane fa'; +$lang['days'] = '%d giorni fa'; +$lang['hours'] = '%d ore fa'; +$lang['minutes'] = '%d minuti fa'; +$lang['seconds'] = '%d secondi fa'; +$lang['wordblock'] = 'La modifica non è stata salvata perché contiene testo bloccato (spam).'; diff --git a/inc/lang/it/login.txt b/inc/lang/it/login.txt index 6487c8537..c6fd97b6f 100644 --- a/inc/lang/it/login.txt +++ b/inc/lang/it/login.txt @@ -1,4 +1,4 @@ -====== Login ====== +====== Accesso ====== Non sei ancora collegato! Inserisci il tuo nome utente e la tua password per autenticarti. E' necessario che il tuo browser abbia i cookie abilitati. diff --git a/inc/lang/it/mailtext.txt b/inc/lang/it/mailtext.txt index ee6e958b9..a4506e951 100644 --- a/inc/lang/it/mailtext.txt +++ b/inc/lang/it/mailtext.txt @@ -12,5 +12,5 @@ Oggetto della modifica : @SUMMARY@ -- -Questa e-mail è stata generata da DokuWiki su +Questa email è stata generata dal DokuWiki di @DOKUWIKIURL@ diff --git a/inc/lang/it/password.txt b/inc/lang/it/password.txt index a14ce6078..d57c78913 100644 --- a/inc/lang/it/password.txt +++ b/inc/lang/it/password.txt @@ -1,4 +1,4 @@ -Ciao, @FULLNAME@! +Ciao @FULLNAME@! Questi sono i tuoi dati di accesso per @TITLE@ su @DOKUWIKIURL@ @@ -6,5 +6,5 @@ Nome utente : @LOGIN@ Password : @PASSWORD@ -- -Questa e-mail è stata generata da DokuWiki su +Questa email è stata generata dal DokuWiki di @DOKUWIKIURL@ diff --git a/inc/lang/it/pwconfirm.txt b/inc/lang/it/pwconfirm.txt index 5437d077c..dfcd8a346 100644 --- a/inc/lang/it/pwconfirm.txt +++ b/inc/lang/it/pwconfirm.txt @@ -1,15 +1,15 @@ Ciao @FULLNAME@! -Qualcuno ha richiesto una nuova password per il tuo @TITLE@ -login su @DOKUWIKIURL@ +Qualcuno ha richiesto una nuova password per il tuo accesso +@TITLE@ a @DOKUWIKIURL@ Se non hai richiesto tu la nuova password ignora questa email. -Per confermare che la richiesta è stata realmente inviata da te per favore usa il -seguente link. +Per confermare che la richiesta è stata realmente inviata da te usa il +seguente collegamento. @CONFIRM@ -- -Questa mail è stata generata da DokuWiki su +Questa email è stata generata dal DokuWiki di @DOKUWIKIURL@ diff --git a/inc/lang/it/register.txt b/inc/lang/it/register.txt index 973aead78..74f57094d 100644 --- a/inc/lang/it/register.txt +++ b/inc/lang/it/register.txt @@ -1,4 +1,4 @@ ====== Registrazione nuovo utente ====== -Riempi tutte le informazioni seguenti per creare un nuovo account in questo wiki. Assicurati di inserire un **indirizzo e-mail valido** - la tua nuova password ti sarà inviata con un messaggio di posta elettronica. La login dovrebbe essere un [[doku>pagename|nome di pagina]] valido. +Riempi tutte le informazioni seguenti per creare un nuovo account in questo wiki. Assicurati di inserire un **indirizzo email valido** - la tua nuova password ti sarà inviata con un messaggio di posta elettronica. L'account dovrebbe essere un [[doku>pagename|nome di pagina]] valido. diff --git a/inc/lang/it/registermail.txt b/inc/lang/it/registermail.txt index 5a9f89344..e8af0d323 100644 --- a/inc/lang/it/registermail.txt +++ b/inc/lang/it/registermail.txt @@ -2,7 +2,7 @@ Un nuovo utente è stato registrato. Ecco i dettagli: Nome utente : @NEWUSER@ Nome completo : @NEWNAME@ -E-Mail : @NEWEMAIL@ +EMail : @NEWEMAIL@ Data : @DATE@ Browser : @BROWSER@ @@ -10,5 +10,5 @@ Indirizzo IP : @IPADDRESS@ Nome macchina : @HOSTNAME@ -- -Questa mail è stata generata da DokuWiki su +Questa email è stata generata dal DokuWiki di @DOKUWIKIURL@ diff --git a/inc/lang/it/revisions.txt b/inc/lang/it/revisions.txt index 984b4a068..19c501b07 100644 --- a/inc/lang/it/revisions.txt +++ b/inc/lang/it/revisions.txt @@ -1,3 +1,3 @@ ====== Versione precedente ====== -Queste sono le precedenti versioni del documento corrente. Per ripristinare una versione precedente, seleziona la versione, modificala usando il pulsante ''Modifica questa pagina'' e salvala. +Queste sono le versioni precedenti del documento attuale. Per ripristinare una versione precedente, seleziona la versione, modificala usando il pulsante ''Modifica questa pagina'' e salvala. diff --git a/inc/lang/it/stopwords.txt b/inc/lang/it/stopwords.txt index a6aa1cfc6..e91aa3b55 100644 --- a/inc/lang/it/stopwords.txt +++ b/inc/lang/it/stopwords.txt @@ -1,7 +1,7 @@ -# This is a list of words the indexer ignores, one word per line -# When you edit this file be sure to use UNIX line endings (single newline) -# No need to include words shorter than 3 chars - these are ignored anyway -# This list is based upon the ones found at http://www.ranks.nl/stopwords/ +# Questo è un elenco di parole che l'indicizzatore ignora, una parola per riga +# Quando modifichi questo file fai attenzione ad usare la chiusura della riga in stile UNIX (nuova linea singola) +# Non è necessario includere parole più brevi di 3 caratteri - queste vengono in ogni caso ignorate +# Questo elenco è basato su quello trovato in http://www.ranks.nl/stopwords/ adesso alla allo diff --git a/inc/lang/it/subscr_digest.txt b/inc/lang/it/subscr_digest.txt new file mode 100644 index 000000000..8656f8536 --- /dev/null +++ b/inc/lang/it/subscr_digest.txt @@ -0,0 +1,20 @@ +Ciao! + +La pagina @PAGE@ nel wiki @TITLE@ è cambiata. +Queste sono le modifiche: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Vecchia revisione: @OLDPAGE@ +Nuova revisione: @NEWPAGE@ + +Per annullare la pagina delle notifiche collegati al +wiki @DOKUWIKIURL@ e poi visita @SUBSCRIBE@ +e rimuovi la sottoscrizione alle modifiche delle +pagine e/o categorie. + +-- +Questa email è stata generata dal DokuWiki di +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/it/subscr_form.txt b/inc/lang/it/subscr_form.txt new file mode 100644 index 000000000..54f66e44a --- /dev/null +++ b/inc/lang/it/subscr_form.txt @@ -0,0 +1,3 @@ +====== Gestione iscrizioni ====== + +Questa pagina permette di gestire le tue iscrizioni alla pagina e catogoria attuale.
\ No newline at end of file diff --git a/inc/lang/it/subscr_list.txt b/inc/lang/it/subscr_list.txt new file mode 100644 index 000000000..e42f7d1ad --- /dev/null +++ b/inc/lang/it/subscr_list.txt @@ -0,0 +1,18 @@ +Ciao! + +Le pagine nella categoria @PAGE@ del wiki @TITLE@ sono +cambiate. +Queste sono le pagine modificate: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Per annullare la pagina delle notifiche collegati al +wiki @DOKUWIKIURL@ e poi visita @SUBSCRIBE@ +e rimuovi la sottoscrizione alle modifiche delle +pagine e/o categorie. + +-- +Questa email è stata generata dal DokuWiki di +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/it/subscr_single.txt b/inc/lang/it/subscr_single.txt new file mode 100644 index 000000000..2c4d5cbb8 --- /dev/null +++ b/inc/lang/it/subscr_single.txt @@ -0,0 +1,23 @@ +Ciao! + +La pagina @PAGE@ nel wiki @TITLE@ è cambiata. +Queste sono le modifiche: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Data : @DATE@ +Utente : @USER@ +Sommario modifica: @SUMMARY@ +Vecchia revisione: @OLDPAGE@ +Nuova revisione: @NEWPAGE@ + +Per annullare la pagina delle notifiche collegati al +wiki @DOKUWIKIURL@ e poi visita @SUBSCRIBE@ +e rimuovi la sottoscrizione alle modifiche delle +pagine e/o categorie. + +-- +Questa email è stata generata dal DokuWiki di +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/it/uploadmail.txt b/inc/lang/it/uploadmail.txt index 56cebc6b1..d8d17a378 100644 --- a/inc/lang/it/uploadmail.txt +++ b/inc/lang/it/uploadmail.txt @@ -6,7 +6,7 @@ Browser : @BROWSER@ Indirizzo IP : @IPADDRESS@ Hostname : @HOSTNAME@ Dimensione : @SIZE@ -MIME Type : @MIME@ +Tipo MIME : @MIME@ Utente : @USER@ -- diff --git a/inc/lang/it/wordblock.txt b/inc/lang/it/wordblock.txt deleted file mode 100644 index 510d6521d..000000000 --- a/inc/lang/it/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== Modifica bloccata ====== - -Le tue modifiche **non sono state salvate** perché contengono una o più parole vietate. Se hai cercato di spammare il Wiki -- bambino cattivo! Se pensi che sia un errore contatta l'amministratore di questo Wiki. - diff --git a/inc/lang/ja/lang.php b/inc/lang/ja/lang.php index 1f6681af1..ad76e5bf0 100644 --- a/inc/lang/ja/lang.php +++ b/inc/lang/ja/lang.php @@ -96,7 +96,7 @@ $lang['txt_overwrt'] = '既存のファイルを上書き'; $lang['lockedby'] = 'この文書は次のユーザによってロックされています'; $lang['lockexpire'] = 'ロック期限:'; $lang['willexpire'] = '編集中の文書はロック期限を過ぎようとしています。このままロックする場合は、一度文書の確認を行って期限をリセットしてください。'; -$lang['notsavedyet'] = '変更は保存されません。このまま処理を続けてよろしいですか?'; +$lang['js']['notsavedyet'] = "変更は保存されません。このまま処理を続けてよろしいですか?"; $lang['rssfailed'] = 'RSSの取り出しに失敗しました:'; $lang['nothingfound'] = '該当文書はありませんでした。'; $lang['mediaselect'] = 'メディアファイルを選択'; diff --git a/inc/lang/ja/wordblock.txt b/inc/lang/ja/wordblock.txt deleted file mode 100644 index d7edd8765..000000000 --- a/inc/lang/ja/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== スパム ブロック ====== - -除外する単語が含まれているため、変更は**保存されませんでした**。 もし意図したスパム行為でないのであれば、管理者に連絡してください。 - diff --git a/inc/lang/km/lang.php b/inc/lang/km/lang.php index a8257255f..19847674d 100644 --- a/inc/lang/km/lang.php +++ b/inc/lang/km/lang.php @@ -93,7 +93,7 @@ $lang['lockedby'] = 'ឥឡូវនេះចកជាប់'; $lang['lockexpire'] = 'សោជាប់ផុតកំណត់ម៉ោង'; $lang['willexpire'] = 'សោអ្នកចំពោះកែតម្រូវទំព័រនេះ ហួសពែលក្នុងមួយនាទី។\nកុំឲ្យមានជម្លោះ ប្រើ «បង្ហាញ» ទៅកំណត់ឡើងវិញ។'; -$lang['notsavedyet'] = 'កម្រែមិនទានរុក្សាទកត្រូវបោះបង់។\nបន្តទៅទាឬទេ?'; +$lang['js']['notsavedyet'] = "កម្រែមិនទានរុក្សាទកត្រូវបោះបង់។\nបន្តទៅទាឬទេ?"; $lang['rssfailed'] = 'មានកំហុសពេលទៅប្រមូលយកមតិព័ត៌មាន៖ '; $lang['nothingfound']= 'រកមិនឃើញអ្វីទេ។'; diff --git a/inc/lang/ko/lang.php b/inc/lang/ko/lang.php index f11ec95fd..83014c151 100644 --- a/inc/lang/ko/lang.php +++ b/inc/lang/ko/lang.php @@ -94,7 +94,7 @@ $lang['txt_overwrt'] = '새로운 파일로 이전 파일을 교체합 $lang['lockedby'] = '현재 잠금 사용자'; $lang['lockexpire'] = '잠금 해제 시간'; $lang['willexpire'] = '잠시 후 편집 잠금이 해제됩니다.\n편집 충돌을 피하려면 미리보기를 눌러 잠금 시간을 다시 설정하기 바랍니다.'; -$lang['notsavedyet'] = '저장하지 않은 변경은 지워집니다.\n계속하시겠습니까?'; +$lang['js']['notsavedyet'] = "저장하지 않은 변경은 지워집니다.\n계속하시겠습니까?"; $lang['rssfailed'] = 'feed 가져오기 실패: '; $lang['nothingfound'] = '아무 것도 없습니다.'; $lang['mediaselect'] = '미디어 파일 선택'; diff --git a/inc/lang/ko/wordblock.txt b/inc/lang/ko/wordblock.txt deleted file mode 100644 index 35e251187..000000000 --- a/inc/lang/ko/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== 스팸 차단 ====== - -하나 혹은 그 이상의 차단된 단어가 포함되어 있으므로 변경 내용이 저장되지 **않았습니다.** 나쁜 로봇 같으니! 스팸이나 추가하려 하고! 만일 로봇이 아니라 사람이고, 오류라고 생각하신다면, 관리자에게 문의하십시오. - diff --git a/inc/lang/ku/lang.php b/inc/lang/ku/lang.php index 946954b98..cb8dd0865 100644 --- a/inc/lang/ku/lang.php +++ b/inc/lang/ku/lang.php @@ -62,7 +62,7 @@ $lang['lockedby'] = 'Currently locked by'; $lang['lockexpire'] = 'Lock expires at'; $lang['willexpire'] = 'Your lock for editing this page is about to expire in a minute.\nTo avoid conflicts use the preview button to reset the locktimer.'; -$lang['notsavedyet'] = 'Unsaved changes will be lost.\nReally continue?'; +$lang['js']['notsavedyet'] = "Unsaved changes will be lost.\nReally continue?"; $lang['rssfailed'] = 'An error occured while fetching this feed: '; $lang['nothingfound']= 'Tiştek nehat dîtin.'; diff --git a/inc/lang/ku/wordblock.txt b/inc/lang/ku/wordblock.txt deleted file mode 100644 index f0f7d759d..000000000 --- a/inc/lang/ku/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== SPAM blocked ====== - -Your changes were **not** saved because it contains one or more blocked words. If you tried to spam the Wiki -- Bad dog! If you think this is an error, contact the administrator of this Wiki. - diff --git a/inc/lang/lb/admin.txt b/inc/lang/lb/admin.txt new file mode 100644 index 000000000..08f8b2fec --- /dev/null +++ b/inc/lang/lb/admin.txt @@ -0,0 +1,3 @@ +====== Administratioun ====== + +Hei ënnendrënner fënns de eng Lëscht mat administrativen Aufgaben déi am Dokuwiki zuer Verfügung stinn. diff --git a/inc/lang/lb/adminplugins.txt b/inc/lang/lb/adminplugins.txt new file mode 100644 index 000000000..95814007d --- /dev/null +++ b/inc/lang/lb/adminplugins.txt @@ -0,0 +1 @@ +===== Zousätzlech Pluginen =====
\ No newline at end of file diff --git a/inc/lang/lb/backlinks.txt b/inc/lang/lb/backlinks.txt new file mode 100644 index 000000000..8b8fbd4ec --- /dev/null +++ b/inc/lang/lb/backlinks.txt @@ -0,0 +1,3 @@ +====== Linken zeréck ====== + +Dëst ass eng Lëscht mat Säiten déi schéngen op déi aktuell Säit zeréck ze verlinken. diff --git a/inc/lang/lb/conflict.txt b/inc/lang/lb/conflict.txt new file mode 100644 index 000000000..3a84e722f --- /dev/null +++ b/inc/lang/lb/conflict.txt @@ -0,0 +1,5 @@ +====== Et gëtt méi eng nei Versioun ====== + +Et gëtt méi eng nei Versioun vum Dokument wats de g'ännert hues. Dat geschitt wann en anere Benotzer dat selwecht Dokument ännert wärenddeems du et änners. + +Ënnersich d'Ënnerscheeder déi hei ënnendrënner ugewise gi grëndlech. Wanns de ''Späicheren'' auswiels, da gëtt deng Version gespäicher. Dréck op ''Ofbriechen'' fir déi aktuell Versioun ze halen. diff --git a/inc/lang/lb/denied.txt b/inc/lang/lb/denied.txt new file mode 100644 index 000000000..487bf2198 --- /dev/null +++ b/inc/lang/lb/denied.txt @@ -0,0 +1,3 @@ +======Erlaabnis verweigert====== + +Et deet mer leed, du hues net genuch Rechter fir weiderzefueren. Hues de vläicht vergiess dech anzeloggen? diff --git a/inc/lang/lb/diff.txt b/inc/lang/lb/diff.txt new file mode 100644 index 000000000..7838b9808 --- /dev/null +++ b/inc/lang/lb/diff.txt @@ -0,0 +1,3 @@ +====== Ënnerscheeder ====== + +Hei sinn d'Ënnerscheeder zwëscht 2 Versiounen vun der Säit. diff --git a/inc/lang/lb/draft.txt b/inc/lang/lb/draft.txt new file mode 100644 index 000000000..2e2fc9daa --- /dev/null +++ b/inc/lang/lb/draft.txt @@ -0,0 +1,5 @@ +====== Entworf fond ====== + +Deng lescht Ännersessioun op dëser Säit gouf net richteg ofgeschloss. DokuWiki huet automatesch en Entworf wärend denger Aarbecht gespäichert deens de elo kanns benotzen fir mat dengen Ännerunge weiderzefueren. Hei ënnendrënner gesäiss de wat vun denger leschter Sessioun gespäichert gouf. + +Decidéier w.e.g. obs de deng verlueren Ännerungssessioun //zeréckhuelen//, den Entworf //läschen// oder d'Änneren //ofbrieche// wëlls. diff --git a/inc/lang/lb/edit.txt b/inc/lang/lb/edit.txt new file mode 100644 index 000000000..ca039d16f --- /dev/null +++ b/inc/lang/lb/edit.txt @@ -0,0 +1 @@ +Änner d'Säit an dréck ''Späicheren''. Kuck [[wiki:syntax]] fir d'Wiki-Syntax. Änner d'Säit w.e.g. nëmme wanns de se **verbessere** kanns. Wanns de Saache probéiere wëlls, da léier deng éischt Schréck an der [[playground:playground|Sandkaul]]. diff --git a/inc/lang/lb/editrev.txt b/inc/lang/lb/editrev.txt new file mode 100644 index 000000000..6d7a12929 --- /dev/null +++ b/inc/lang/lb/editrev.txt @@ -0,0 +1,2 @@ +**Du hues eng al Versioun vum Dokument gelueden!** Wanns de se änners, mëss de eng nei Versioun mat dësen Daten. +----
\ No newline at end of file diff --git a/inc/lang/lb/index.txt b/inc/lang/lb/index.txt new file mode 100644 index 000000000..183e07a0f --- /dev/null +++ b/inc/lang/lb/index.txt @@ -0,0 +1,3 @@ +====== Index ====== + +Dëst ass em Index vun all de Säiten gesënnert no [[doku>namespaces|namespaces]]. diff --git a/inc/lang/lb/lang.php b/inc/lang/lb/lang.php new file mode 100644 index 000000000..7152b65b1 --- /dev/null +++ b/inc/lang/lb/lang.php @@ -0,0 +1,214 @@ +<?php +/** + * lb language file + * + * @author joel@schintgen.net + */ +$lang['encoding'] = 'utf-8'; +$lang['direction'] = 'ltr'; +$lang['doublequoteopening'] = '“'; +$lang['doublequoteclosing'] = '”'; +$lang['singlequoteopening'] = '‘'; +$lang['singlequoteclosing'] = '’'; +$lang['apostrophe'] = '\''; +$lang['btn_edit'] = 'Dës Säit änneren'; +$lang['btn_source'] = 'Säitequell weisen'; +$lang['btn_show'] = 'Säit weisen'; +$lang['btn_create'] = 'Dës Säit uleeën'; +$lang['btn_search'] = 'Sichen'; +$lang['btn_save'] = 'Späicheren'; +$lang['btn_preview'] = 'Kucken ouni ofzespäicheren'; +$lang['btn_top'] = 'Zréck no uewen'; +$lang['btn_newer'] = '<< méi rezent'; +$lang['btn_older'] = 'manner rezent >>'; +$lang['btn_revs'] = 'Al Versiounen'; +$lang['btn_recent'] = 'Kierzlech Ännerungen'; +$lang['btn_upload'] = 'Eroplueden'; +$lang['btn_cancel'] = 'Ofbriechen'; +$lang['btn_index'] = 'Index'; +$lang['btn_secedit'] = 'Änneren'; +$lang['btn_login'] = 'Login'; +$lang['btn_logout'] = 'Logout'; +$lang['btn_admin'] = 'Admin'; +$lang['btn_update'] = 'Update'; +$lang['btn_delete'] = 'Läschen'; +$lang['btn_back'] = 'Zeréck'; +$lang['btn_backlink'] = 'Linker zeréck'; +$lang['btn_backtomedia'] = 'Zeréck bei d\'Auswiel vun de Mediadateien'; +$lang['btn_profile'] = 'Profil aktualiséieren'; +$lang['btn_reset'] = 'Zerécksetzen'; +$lang['btn_resendpwd'] = 'Nei Passwuert schécken'; +$lang['btn_draft'] = 'Entworf änneren'; +$lang['btn_recover'] = 'Entworf zeréckhuelen'; +$lang['btn_draftdel'] = 'Entworf läschen'; +$lang['loggedinas'] = 'Ageloggt als'; +$lang['user'] = 'Benotzernumm'; +$lang['pass'] = 'Passwuert'; +$lang['newpass'] = 'Nei Passwuert'; +$lang['oldpass'] = 'Aktuell Passwuert confirméieren'; +$lang['passchk'] = 'nach eng Kéier'; +$lang['remember'] = 'Verhal mech'; +$lang['fullname'] = 'Richtegen Numm'; +$lang['email'] = 'E-Mail'; +$lang['register'] = 'Registréieren'; +$lang['profile'] = 'Benotzerprofil'; +$lang['badlogin'] = 'Entschëllegt, de Benotzernumm oder d\'Passwuert war falsch'; +$lang['minoredit'] = 'Kleng Ännerungen'; +$lang['draftdate'] = 'Entworf automatesch gespäichert den'; +$lang['nosecedit'] = 'D\'Säit gouf an Zwëschenzäit g\'ännert, Sektiounsinfo veralt. Ganz Säit gouf aplaz gelueden.'; +$lang['regmissing'] = 'Du muss all d\'Felder ausfëllen.'; +$lang['reguexists'] = 'Et get schonn e Benotzer mat deem Numm.'; +$lang['regsuccess'] = 'De Benotzer gouf erstallt an d\'Passwuert via Email geschéckt.'; +$lang['regsuccess2'] = 'De Benotzer gouf erstallt.'; +$lang['regmailfail'] = 'Et gesäit aus wéi wann e Feeler beim schécke vun der Passwuertmail virkomm wier. Kontaktéier den Admin w.e.g.!'; +$lang['regbadmail'] = 'Déi Emailadress gesäit ongëlteg aus - wanns de mengs dat wier e Feeler, da kontaktéier den Admin w.e.g.'; +$lang['regbadpass'] = 'Déi 2 Passwieder si net t\'selwecht. Probéier nach eng Kéier w.e.g.'; +$lang['regpwmail'] = 'Däin DokuWiki Passwuert'; +$lang['reghere'] = 'Hues du nach keen Account? Da maach der een'; +$lang['profna'] = 'Dëse Wiki ënnestëtzt keng Ännerunge vum Profil'; +$lang['profnochange'] = 'Keng Ännerungen. Näischt ze man.'; +$lang['profnoempty'] = 'En eidele Numm oder Emailadress ass net erlaabt.'; +$lang['profchanged'] = 'Benotzerprofil erfollegräicht aktualiséiert.'; +$lang['pwdforget'] = 'Passwuert vergiess? Fro der e Neit'; +$lang['resendna'] = 'Dëse Wiki ënnerstëtzt net d\'Neiverschécke vu Passwieder.'; +$lang['resendpwd'] = 'Nei Passwuert schécke fir'; +$lang['resendpwdmissing'] = 'Du muss all Felder ausfëllen.'; +$lang['resendpwdnouser'] = 'Kann dëse Benotzer net an der Datebank fannen.'; +$lang['resendpwdbadauth'] = 'Den "Auth"-Code ass ongëlteg. Kuck no obs de dee ganze Konfirmationslink benotzt hues.'; +$lang['resendpwdconfirm'] = 'De Konfirmatiounslink gouf iwwer Email geschéckt.'; +$lang['resendpwdsuccess'] = 'Däi nei Passwuert gouf iwwer Email geschéckt.'; +$lang['license'] = 'Wann näischt anescht do steet, ass den Inhalt vun dësem Wiki ënner folgender Lizenz:'; +$lang['licenseok'] = 'Pass op: Wanns de dës Säit änners, bass de dermat averstan dass den Inhalt ënner folgender Lizenz lizenzéiert gëtt:'; +$lang['txt_upload'] = 'Wiel eng Datei fir eropzelueden'; +$lang['txt_filename'] = 'Eroplueden als (optional)'; +$lang['txt_overwrt'] = 'Bestehend Datei iwwerschreiwen'; +$lang['lockedby'] = 'Am Moment gespaart vun'; +$lang['lockexpire'] = 'D\'Spär leeft of ëm'; +$lang['willexpire'] = 'Deng Spär fir d\'Säit ze änneren leeft an enger Minutt of.\nFir Konflikter ze verhënneren, dréck op Kucken ouni ofzespäicheren.'; +$lang['js']['notsavedyet'] = "Net gespäicher Ännerunge gi verluer.\nWierklech weiderfueren?"; +$lang['rssfailed'] = 'Et ass e Feeler virkomm beim erofluede vun dësem Feed: '; +$lang['nothingfound'] = 'Näischt fond.'; +$lang['mediaselect'] = 'Mediadateien'; +$lang['fileupload'] = 'Mediadateien eroplueden'; +$lang['uploadsucc'] = 'Upload erfollegräich'; +$lang['uploadfail'] = 'Feeler beim Upload. Vläicht falsch Rechter?'; +$lang['uploadwrong'] = 'Eroplueden net erlaabt. Dës Dateiendung ass verbueden!'; +$lang['uploadexist'] = 'Datei gët et schonn. Näischt gemaach.'; +$lang['uploadbadcontent'] = 'Den eropgeluedenen Inhalt stëmmt net mat der Dateiendung %s iwwereneen.'; +$lang['uploadspam'] = 'D\'Eropluede gouf duerch d\'Schwaarz Spamlëscht blockéiert.'; +$lang['uploadxss'] = 'D\'Eropluede gouf wéinst méiglechem béisaartegem Inhalt blockéiert.'; +$lang['uploadsize'] = 'Déi eropgelueden Datei war ze grouss. (max. %s)'; +$lang['deletesucc'] = 'D\'Datei "%s" gouf geläscht.'; +$lang['deletefail'] = '"%s" konnt net geläscht ginn. Kontroléier d\'Rechter.'; +$lang['mediainuse'] = 'D\'Datei "%s" gouf net geläscht - se ass nach am Gebrauch.'; +$lang['namespaces'] = 'Namespaces'; +$lang['mediafiles'] = 'Verfügbar Dateien am'; +$lang['js']['keepopen'] = 'Fënster beim Auswielen oploossen'; +$lang['js']['hidedetails'] = 'Deteiler verstoppen'; +$lang['mediausage'] = 'Benotz folgend Syntax fir dës Datei ze referenzéieren:'; +$lang['mediaview'] = 'Originaldatei weisen'; +$lang['mediaroot'] = 'root'; +$lang['mediaextchange'] = 'Dateiendung vun .%s op .%s g\'ännert!'; +$lang['reference'] = 'Referenzen fir'; +$lang['ref_inuse'] = 'D\'Datei ka net geläscht ginn wëll se nach ëmmer vu folgende Säite gebraucht gëtt:'; +$lang['ref_hidden'] = 'Verschidde Referenze sinn op Säiten wous de keng Rechter hues fir se ze kucken'; +$lang['hits'] = 'Treffer'; +$lang['quickhits'] = 'Säitenimm déi iwwereneestëmmen'; +$lang['toc'] = 'Inhaltsverzeechnes'; +$lang['current'] = 'aktuell'; +$lang['yours'] = 'Deng Versioun'; +$lang['diff'] = 'Weis d\'Ënnerscheeder zuer aktueller Versioun'; +$lang['diff2'] = 'Weis d\'Ënnerscheeder zwescht den ausgewielte Versiounen'; +$lang['line'] = 'Linn'; +$lang['breadcrumb'] = 'Spuer'; +$lang['youarehere'] = 'Du bass hei'; +$lang['lastmod'] = 'Fir d\'lescht g\'ännert'; +$lang['by'] = 'vun'; +$lang['deleted'] = 'geläscht'; +$lang['created'] = 'erstallt'; +$lang['restored'] = 'al Versioun zeréckgeholl'; +$lang['external_edit'] = 'extern Ännerung'; +$lang['summary'] = 'Resumé vun den Ännerungen'; +$lang['noflash'] = 'Den <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> get gebraucht fir dësen Inhalt unzeweisen.'; +$lang['mail_newpage'] = 'Säit bäigesat:'; +$lang['mail_changed'] = 'Säit geännert:'; +$lang['mail_subscribe_list'] = 'g\'ännert Säiten am Namespace:'; +$lang['mail_new_user'] = 'Neie Benotzer:'; +$lang['mail_upload'] = 'Datei eropgelueden:'; +$lang['qb_bold'] = 'Fetten Text'; +$lang['qb_italic'] = 'Schiefen Text'; +$lang['qb_underl'] = 'Ënnerstrachenen Text'; +$lang['qb_code'] = 'Code Text'; +$lang['qb_strike'] = 'Duerchgestrachenen Text'; +$lang['qb_h1'] = 'Iwwerschrëft vum 1. Niveau'; +$lang['qb_h2'] = 'Iwwerschrëft vum 2. Niveau'; +$lang['qb_h3'] = 'Iwwerschrëft vum 3. Niveau'; +$lang['qb_h4'] = 'Iwwerschrëft vum 4. Niveau'; +$lang['qb_h5'] = 'Iwwerschrëft vum 5. Niveau'; +$lang['qb_h'] = 'Iwwerschrëft'; +$lang['qb_hs'] = 'Iwwerschrëft auswielen'; +$lang['qb_hplus'] = 'Méi grouss Iwwerschrëft'; +$lang['qb_hminus'] = 'Méi kleng Iwwerschrëft'; +$lang['qb_hequal'] = 'Iwwerschrëft vum selwechte Niveau'; +$lang['qb_link'] = 'Interne Link'; +$lang['qb_extlink'] = 'Externe Link'; +$lang['qb_hr'] = 'Horizontale Stréch'; +$lang['qb_ol'] = 'Nummeréiert Lëscht'; +$lang['qb_ul'] = 'Onnummeréiert Lëscht'; +$lang['qb_media'] = 'Biller an aner Dateie bäisetzen'; +$lang['qb_sig'] = 'Ënnerschrëft afügen'; +$lang['qb_smileys'] = 'Smilien'; +$lang['qb_chars'] = 'Spezialzeechen'; +$lang['upperns'] = 'An de Namespace uewendriwwer sprangen'; +$lang['admin_register'] = 'Neie Benotzer bäisetzen'; +$lang['metaedit'] = 'Metadaten änneren'; +$lang['metasaveerr'] = 'Feeler beim Schreiwe vun de Metadaten'; +$lang['metasaveok'] = 'Metadate gespäichert'; +$lang['img_backto'] = 'Zeréck op'; +$lang['img_title'] = 'Titel'; +$lang['img_caption'] = 'Beschreiwung'; +$lang['img_date'] = 'Datum'; +$lang['img_fname'] = 'Dateinumm'; +$lang['img_fsize'] = 'Gréisst'; +$lang['img_artist'] = 'Fotograf'; +$lang['img_copyr'] = 'Copyright'; +$lang['img_format'] = 'Format'; +$lang['img_camera'] = 'Kamera'; +$lang['img_keywords'] = 'Schlësselwieder'; +$lang['authmodfailed'] = 'Falsch Konfiguratioun vun der Benotzerautentifikatioun. Informéier w.e.g. de Wiki Admin.'; +$lang['authtempfail'] = 'D\'Benotzerautentifikatioun ass de Moment net verfügbar. Wann dës Situatioun unhält, dann informéier w.e.g. de Wiki Admin.'; +$lang['i_chooselang'] = 'Wiel deng Sprooch'; +$lang['i_installer'] = 'DokuWiki Installer'; +$lang['i_wikiname'] = 'Numm vum Wiki'; +$lang['i_enableacl'] = 'ACL uschalten (rekommandéiert)'; +$lang['i_problems'] = 'Den Installer huet Problemer fond. Se stinn hei ënnendrënner. Du kanns net weiderfueren bis de se behuewen hues.'; +$lang['i_modified'] = 'Aus Sécherheetsgrënn funktionnéiert dëse Script nëmme mat enger neier an onverännerter Dokuwiki Installatioun. Entweder muss de d\'Dateie frësch extrahéieren oder kuck d\'komplett <a href="http://dokuwiki.org/install">Dokuwiki Installatiounsinstruktiounen</a>'; +$lang['i_funcna'] = 'PHP-Funktioun <code>%s</code> ass net verfügbar. Vläicht huet däi Provider se aus iergend engem Grond ausgeschalt.'; +$lang['i_phpver'] = 'Deng PHP-Versioun <code>%s</code> ass méi kleng wéi déi gebrauchte Versioun <code>%s</code>. Du muss deng PHP-Installatioun aktualiséieren. '; +$lang['i_pol0'] = 'Oppene Wiki (liese, schreiwen an eroplueden fir jidfereen)'; +$lang['i_pol1'] = 'Ëffentleche Wiki (liesen fir jidfereen, schreiwen an eroplueden fir registréiert Benotzer)'; +$lang['i_pol2'] = 'Zouene Wiki (liesen, schreiwen, eroplueden nëmme fir registréiert Benotzer)'; +$lang['i_retry'] = 'Nach eng Kéier probéieren'; +$lang['mu_intro'] = 'Hei kanns de méi Dateie mateneen eroplueden. Klick op den Duerchsiche-Knäppchen fir se an d\'Schlaang ze setzen. Dréck op Eroplueden wanns de fäerdeg bass.'; +$lang['mu_gridname'] = 'Dateinumm'; +$lang['mu_gridsize'] = 'Gréisst'; +$lang['mu_gridstat'] = 'Status'; +$lang['mu_namespace'] = 'Namespace'; +$lang['mu_browse'] = 'Duerchsichen'; +$lang['mu_toobig'] = 'ze grouss'; +$lang['mu_ready'] = 'prett fir eropzelueden'; +$lang['mu_done'] = 'fäerdeg'; +$lang['mu_fail'] = 'feelgeschloen'; +$lang['mu_authfail'] = 'Sessioun ofgelaf'; +$lang['mu_progress'] = '@PCT@% eropgelueden'; +$lang['mu_filetypes'] = 'Erlaabten Dateitypen'; +$lang['mu_info'] = 'Dateien eropgelueden.'; +$lang['mu_lasterr'] = 'Leschte Feeler:'; +$lang['recent_global'] = 'Du kucks am Moment d\'Ännerungen innerhalb vum <b>%s</b> Namespace. Du kanns och <a href="%s">d\'Kierzilech Ännerungen vum ganze Wiki kucken</a>.'; +$lang['years'] = 'virun %d Joer'; +$lang['months'] = 'virun % Méint'; +$lang['weeks'] = 'virun %d Wochen'; +$lang['days'] = 'virun %d Deeg'; +$lang['hours'] = 'virun %d Stonnen'; +$lang['minutes'] = 'virun %d Minutten'; +$lang['seconds'] = 'virun %d Sekonnen'; diff --git a/inc/lang/lb/locked.txt b/inc/lang/lb/locked.txt new file mode 100644 index 000000000..944efb251 --- /dev/null +++ b/inc/lang/lb/locked.txt @@ -0,0 +1,3 @@ +====== Säit gespaart ====== + +Dës Säit ass am Moment duerch en anere Benotzer fir Ännerunge gespart. Du muss waarde bis e mat sengen Ännerunge fäerdeg ass oder d'Spär ofleeft.
\ No newline at end of file diff --git a/inc/lang/lb/login.txt b/inc/lang/lb/login.txt new file mode 100644 index 000000000..7d0548ee7 --- /dev/null +++ b/inc/lang/lb/login.txt @@ -0,0 +1,3 @@ +====== Aloggen ====== + +Du bass am Moment net ageloggt! Gëff deng Autoriséierungsinformatiounen hei ënnendrënner an. Du muss d'Cookien erlaabt hunn fir dech kënnen anzeloggen. diff --git a/inc/lang/lb/mailtext.txt b/inc/lang/lb/mailtext.txt new file mode 100644 index 000000000..520cd8483 --- /dev/null +++ b/inc/lang/lb/mailtext.txt @@ -0,0 +1,17 @@ +Et gouf eng Säit an dengem DokuWiki g'ännert oder nei erstallt. Hei sinn d'Detailer: + +Datum : @DATE@ +Browser : @BROWSER@ +IP-Address : @IPADDRESS@ +Hostname : @HOSTNAME@ +Al Versioun : @OLDPAGE@ +Nei Versioun : @NEWPAGE@ +Zesummefaassung: @SUMMARY@ +Benotzer : @USER@ + +@DIFF@ + + +-- +Dës Mail gouf generéiert vum DokuWiki op +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/lb/newpage.txt b/inc/lang/lb/newpage.txt new file mode 100644 index 000000000..93917614d --- /dev/null +++ b/inc/lang/lb/newpage.txt @@ -0,0 +1,4 @@ +======Dësen Thema gëtt et nach net====== + +Du hues op e Link vun enger Säit geklickt, déi et nach net gëtt. Wanns de déi néideg Rechter hues, da kanns de dës Säit uleeën andeems de op ''Dës Säit uleeën'' klicks. + diff --git a/inc/lang/lb/norev.txt b/inc/lang/lb/norev.txt new file mode 100644 index 000000000..45a36ee91 --- /dev/null +++ b/inc/lang/lb/norev.txt @@ -0,0 +1,3 @@ +====== Keng sou Versioun ====== + +Déi Versioun gëtt et net. Benotz de Kneppchen ''Al Versiounen'' fir eng Lëscht vun ale Versiounen vun dësem Dokument. diff --git a/inc/lang/lb/password.txt b/inc/lang/lb/password.txt new file mode 100644 index 000000000..bd8062e42 --- /dev/null +++ b/inc/lang/lb/password.txt @@ -0,0 +1,10 @@ +Moien @FULLNAME@! + +Hei sinn deng Benotzerdaten fir @TITLE@ op @DOKUWIKIURL@ + +Benotzernumm : @LOGIN@ +Passwuert : @PASSWORD@ + +-- +Dës Mail gouf generéiert vun DokuWiki op +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/lb/preview.txt b/inc/lang/lb/preview.txt new file mode 100644 index 000000000..f131cdad8 --- /dev/null +++ b/inc/lang/lb/preview.txt @@ -0,0 +1,3 @@ +======Net gespäichert Versioun====== + +Dëst ass nëmmen eng net gespäichert Versioun; d'Ännerunge sinn nach **net** gespäichert! diff --git a/inc/lang/lb/pwconfirm.txt b/inc/lang/lb/pwconfirm.txt new file mode 100644 index 000000000..11246572b --- /dev/null +++ b/inc/lang/lb/pwconfirm.txt @@ -0,0 +1,15 @@ +Moien @FULLNAME@! + +Iergendeen huet e neit Passwuert fir däin @TITLE@ +login op @DOKUWIKIURL@ gefrot + +Wanns de kee nei Passwuert gefrot hues, dann ignoréier dës Mail. + +Fir ze konfirméieren dass du wierklech en neit Passwuert gefrot hues, +klick op folgende Link. + +@CONFIRM@ + +-- +Des Mail gouf generéiert vun DokuWiki op +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/lb/read.txt b/inc/lang/lb/read.txt new file mode 100644 index 000000000..3f52bd679 --- /dev/null +++ b/inc/lang/lb/read.txt @@ -0,0 +1 @@ +Dës Säit ass nëmme fir ze kucken. Du kanns d'Quell kucken, mee net änneren. Fro däin Administrator wanns de mengs dat wier falsch. diff --git a/inc/lang/lb/recent.txt b/inc/lang/lb/recent.txt new file mode 100644 index 000000000..c7359e202 --- /dev/null +++ b/inc/lang/lb/recent.txt @@ -0,0 +1,4 @@ +====== Rezent Ännerungen ====== + +Folgend Säite goufen an der lescht g'ännert. + diff --git a/inc/lang/lb/register.txt b/inc/lang/lb/register.txt new file mode 100644 index 000000000..1e017e997 --- /dev/null +++ b/inc/lang/lb/register.txt @@ -0,0 +1,4 @@ +====== Als neie Benotzer registréieren ====== + +Fëll alles hei ënnendrënner aus fir en neie Kont op dësem Wiki unzeleeën. Pass op dass de eng **gëlteg Emailadress** ugëss - wanns de net gefrot gëss hei e Passwuert anzeginn, da kriss de e neit op déi Adress geschéckt. De Benotzernumm soll e gëltege [[doku>pagename|Säitenumm]] sinn. + diff --git a/inc/lang/lb/registermail.txt b/inc/lang/lb/registermail.txt new file mode 100644 index 000000000..0f4fee8ec --- /dev/null +++ b/inc/lang/lb/registermail.txt @@ -0,0 +1,14 @@ +Et huet sech e neie Benotzer registréiert. Hei sinn d'Deteiler: + +Benotzernumm: @NEWUSER@ +Ganze Numm : @NEWNAME@ +Email : @NEWEMAIL@ + +Datum : @DATE@ +Browser : @BROWSER@ +IP-Adress : @IPADDRESS@ +Hostnumm : @HOSTNAME@ + +-- +Des Mail gouf generéiert vun DokuWiki op +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/lb/resendpwd.txt b/inc/lang/lb/resendpwd.txt new file mode 100644 index 000000000..6ca4518dc --- /dev/null +++ b/inc/lang/lb/resendpwd.txt @@ -0,0 +1,3 @@ +====== Nei Passwuert schécken ====== + +Gëff w.e.g. däi Benotzernumm an de Formulär hei ënnendrënner an fir e neit Passwuert fir dëse Wiki unzefroen. E Konfirmatiounslink gëtt dann op deng registréiert Emailadress geschéckt. diff --git a/inc/lang/lb/revisions.txt b/inc/lang/lb/revisions.txt new file mode 100644 index 000000000..7dec32759 --- /dev/null +++ b/inc/lang/lb/revisions.txt @@ -0,0 +1,3 @@ +====== Al Versiounen ====== + +Hei sinn déi al Versiounen vun dësem Dokument. Fir op eng al Versioun zeréckzegoen, wiel se hei ënnendrënner eraus, klick ''Dës Säit änneren'' a späicher se. diff --git a/inc/lang/lb/searchpage.txt b/inc/lang/lb/searchpage.txt new file mode 100644 index 000000000..5e15a2c60 --- /dev/null +++ b/inc/lang/lb/searchpage.txt @@ -0,0 +1,5 @@ +======Sich====== + +Hei ënnendrënner sinn d'Resultater vun der Sich. Wanns de net fënns wats de gesicht hues kanns de eng nei Säit mam Numm vun denger Sich uleeën. + +=====Resultater=====
\ No newline at end of file diff --git a/inc/lang/lb/showrev.txt b/inc/lang/lb/showrev.txt new file mode 100644 index 000000000..f6e2deee8 --- /dev/null +++ b/inc/lang/lb/showrev.txt @@ -0,0 +1,2 @@ +**Dat hei ass eng al Versioun vum Document!** +----
\ No newline at end of file diff --git a/inc/lang/lb/updateprofile.txt b/inc/lang/lb/updateprofile.txt new file mode 100644 index 000000000..326d62217 --- /dev/null +++ b/inc/lang/lb/updateprofile.txt @@ -0,0 +1,4 @@ +====== Profil aktualiséieren ====== + +Du brauchs just d'Felder auszefëllen déis de wëlls änneren. Du kanns däi Benotzernumm net änneren. + diff --git a/inc/lang/lb/uploadmail.txt b/inc/lang/lb/uploadmail.txt new file mode 100644 index 000000000..3c2587cb4 --- /dev/null +++ b/inc/lang/lb/uploadmail.txt @@ -0,0 +1,14 @@ +Eng Datei gouf op däin DokuWiki eropgelueden. Hei sinn d'Deteiler: + +Datei : @MEDIA@ +Datum : @DATE@ +Browser : @BROWSER@ +IP-Adress : @IPADDRESS@ +Hostnumm : @HOSTNAME@ +Gréisst : @SIZE@ +MIME Typ : @MIME@ +Benotzer : @USER@ + +-- +Dës Mail gouf generéiert vun DokuWiki op +@DOKUWIKIURL@ diff --git a/inc/lang/lt/lang.php b/inc/lang/lt/lang.php index 151964e03..639ad4749 100644 --- a/inc/lang/lt/lang.php +++ b/inc/lang/lt/lang.php @@ -94,7 +94,7 @@ $lang['txt_overwrt'] = 'Perrašyti egzistuojančią bylą'; $lang['lockedby'] = 'Užrakintas vartotojo'; $lang['lockexpire'] = 'Užraktas bus nuimtas'; $lang['willexpire'] = 'Šio puslapio redagavimo užrakto galiojimo laikas baigsis po minutės.\nNorėdami išvengti nesklandumų naudokite peržiūros mygtuką ir užraktas atsinaujins.'; -$lang['notsavedyet'] = 'Pakeitimai nebus išsaugoti.\nTikrai tęsti?'; +$lang['js']['notsavedyet'] = "Pakeitimai nebus išsaugoti.\nTikrai tęsti?"; $lang['rssfailed'] = 'Siunčiant šį feed\'ą įvyko klaida: '; $lang['nothingfound'] = 'Paieškos rezultatų nėra.'; $lang['mediaselect'] = 'Mediabylos išsirinkimas'; diff --git a/inc/lang/lt/wordblock.txt b/inc/lang/lt/wordblock.txt deleted file mode 100644 index 43ac79bbf..000000000 --- a/inc/lang/lt/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== NESPAM'INK! ====== - -Jūsų pakeitimai **nebuvo išsaugoti**, nes juose rasta vienas ar daugiau užblokuotų žodžių. Jeigu manote, kad tai klaida, susisiekite su administracija. Jeigu sugalvojote čia spam'inti - pyzdink nachui iš čia, byby bled! - diff --git a/inc/lang/lv/lang.php b/inc/lang/lv/lang.php index 5de7a0cc6..1ebd86edf 100644 --- a/inc/lang/lv/lang.php +++ b/inc/lang/lv/lang.php @@ -37,9 +37,6 @@ $lang['btn_back'] = 'Atpakaļ'; $lang['btn_backlink'] = 'Norādes uz lapu'; $lang['btn_backtomedia'] = 'Atpakaļ uz mēdiju failu izvēli'; $lang['btn_subscribe'] = 'Abonēt izmaiņu paziņojumus'; -$lang['btn_unsubscribe'] = 'Atteikties no izmaiņu paziņojumiem'; -$lang['btn_subscribens'] = 'Abonēt nodaļas izmaiņu paziņojumus'; -$lang['btn_unsubscribens'] = 'Atteikties no nodaļas izmaiņu paziņojumiem'; $lang['btn_profile'] = 'Labot savu profilu'; $lang['btn_reset'] = 'Atsaukt izmaiņas'; $lang['btn_resendpwd'] = 'Nosūtīt jaunu paroli'; @@ -93,7 +90,7 @@ $lang['txt_overwrt'] = 'Aizstāt esošo failu'; $lang['lockedby'] = 'Patlaban bloķējis '; $lang['lockexpire'] = 'Bloķējums beigsies '; $lang['willexpire'] = 'Tavs bloķējums uz šo lapu pēc minūtes beigsies.\nLai izvairītos no konflikta, nospied Iepriekšapskata pogu\n un bloķējuma laiku sāks skaitīt no jauna.'; -$lang['notsavedyet'] = 'Veiktas bet nav saglabātas izmaiņas.\nVai tiešām tās nevajag?'; +$lang['js']['notsavedyet'] = "Veiktas bet nav saglabātas izmaiņas.\nVai tiešām tās nevajag?"; $lang['rssfailed'] = 'Kļūda saņemot saturu no '; $lang['nothingfound'] = 'Nekas nav atrasts.'; $lang['mediaselect'] = 'Mēdiju faila izvēle'; @@ -114,6 +111,27 @@ $lang['mediafiles'] = 'Pieejamie faili'; $lang['js']['searchmedia'] = 'Meklēt failus'; $lang['js']['keepopen'] = 'Pēc faila izvēles logu paturēt atvērtu'; $lang['js']['hidedetails'] = 'Slēpt detaļas'; +$lang['js']['mediatitle'] = 'Saites īpašības'; +$lang['js']['mediadisplay'] = 'Saites tips'; +$lang['js']['mediaalign'] = 'Slēgums'; +$lang['js']['mediasize'] = 'Attēla izmērs'; +$lang['js']['mediatarget'] = 'Saite ved uz '; +$lang['js']['mediaclose'] = 'Aizvērt'; +$lang['js']['mediainsert'] = 'Ievietot'; +$lang['js']['mediadisplayimg'] = 'Rādīt attēlu'; +$lang['js']['mediadisplaylnk'] = 'Rādīt tikai saiti'; +$lang['js']['mediasmall'] = 'Mazs'; +$lang['js']['mediamedium'] = 'Vidējs'; +$lang['js']['medialarge'] = 'Liels'; +$lang['js']['mediaoriginal'] = 'Oriģināls'; +$lang['js']['medialnk'] = 'Saite uz detaļām'; +$lang['js']['mediadirect'] = 'Tieša saite uz oriģinālu'; +$lang['js']['medianolnk'] = 'Bez saites'; +$lang['js']['medianolink'] = 'Bez saites uz attēlu'; +$lang['js']['medialeft'] = 'kreisais'; +$lang['js']['mediaright'] = 'labais'; +$lang['js']['mediacenter'] = 'centra'; +$lang['js']['medianoalign'] = 'neizlīdzināt'; $lang['js']['nosmblinks'] = 'Saites uz Windows resursiem darbojas tikai Microsoft Internet Explorer. Protams, ka vari saiti kopēt un iespraust citā programmā.'; $lang['js']['linkwiz'] = 'Saišu vednis'; @@ -148,6 +166,7 @@ $lang['summary'] = 'Anotācija'; $lang['noflash'] = 'Lai attēlotu lapas saturu, vajag <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>.'; $lang['mail_newpage'] = 'lapa pievienota:'; $lang['mail_changed'] = 'lapa mainīta:'; +$lang['mail_subscribe_list'] = 'Nodaļā mainītās lapas:'; $lang['mail_new_user'] = 'Jauns lietotājs:'; $lang['mail_upload'] = 'augšupielādētais fails:'; $lang['qb_bold'] = 'Trekninājums'; @@ -190,11 +209,22 @@ $lang['img_copyr'] = 'Autortiesības'; $lang['img_format'] = 'Formāts'; $lang['img_camera'] = 'Fotoaparāts'; $lang['img_keywords'] = 'Atslēgvārdi'; -$lang['subscribe_success'] = '%s pievienots %s abonentu sarakstam'; -$lang['subscribe_error'] = 'Kļūme pievienojot %s %s abonentu sarakstam'; -$lang['subscribe_noaddress'] = 'Nav zināma adrese, ko pievienot abonentu sarakstam'; -$lang['unsubscribe_success'] = ' %s svītrots no %s abonentu saraksta'; -$lang['unsubscribe_error'] = 'Kļūme svītrojot %s no %s abonentu saraksta'; +$lang['subscr_subscribe_success'] = '%s pievienots %s abonēšanas sarakstam'; +$lang['subscr_subscribe_error'] = 'Kļūme pievienojot %s %s abonēšanas sarakstam.'; +$lang['subscr_subscribe_noaddress'] = 'Nav zināma jūsu e-pasta adrese, tāpēc nevarat abonēt.'; +$lang['subscr_unsubscribe_success'] = '%s abonements uz %s atsaukts'; +$lang['subscr_unsubscribe_error'] = 'Kļūme svītrojot %s no %s abonēšanas saraksta'; +$lang['subscr_already_subscribed'] = '%s jau abonē %s'; +$lang['subscr_not_subscribed'] = '%s neabonē %s'; +$lang['subscr_m_not_subscribed'] = 'Šī lapa vai nodaļa nav abonēta'; +$lang['subscr_m_new_header'] = 'Pievienot abonementu'; +$lang['subscr_m_current_header'] = 'Patlaban ir abonēts'; +$lang['subscr_m_unsubscribe'] = 'Atteikties no abonēšanas'; +$lang['subscr_m_subscribe'] = 'Abonēt'; +$lang['subscr_m_receive'] = 'Saņemt'; +$lang['subscr_style_every'] = 'vēstuli par katru izmaiņu'; +$lang['subscr_style_digest'] = 'kopsavilkumu par katru lapu'; +$lang['subscr_style_list'] = 'kopš pēdējās vēstules notikušo labojumu sarakstu'; $lang['authmodfailed'] = 'Aplami konfigurēta lietotāju autentifikācija. Lūdzo ziņo Wiki administratoram.'; $lang['authtempfail'] = 'Lietotāju autentifikācija pašlaik nedarbojas. Ja tas turpinās ilgstoši, lūduz ziņo Wiki administratoram.'; $lang['i_chooselang'] = 'Izvēlies valodu'; diff --git a/inc/lang/lv/subscr_digest.txt b/inc/lang/lv/subscr_digest.txt new file mode 100644 index 000000000..98784050c --- /dev/null +++ b/inc/lang/lv/subscr_digest.txt @@ -0,0 +1,19 @@ +Labdien! + +@TITLE@ viki nodaļā @PAGE@ ir mainījušās šadas lapas: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Vecā versija: @OLDPAGE@ +Jaunā versija: @NEWPAGE@ + +Lai atceltu izmaiņu paziņošanu, ielogojieties +@DOKUWIKIURL@, apmeklējiet +@SUBSCRIBE@ +un atsakieties no lapas vai nodaļas izmaiņu paziņojumiem . + +-- +Šo vēstuli izveidoja DokuWiki no +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/lv/subscr_form.txt b/inc/lang/lv/subscr_form.txt new file mode 100644 index 000000000..9e3145f8e --- /dev/null +++ b/inc/lang/lv/subscr_form.txt @@ -0,0 +1,3 @@ +====== Abonementu pārvaldnieks ====== + +Te varat mainīt savu lapas vai nodaļas abonementu.
\ No newline at end of file diff --git a/inc/lang/lv/subscr_list.txt b/inc/lang/lv/subscr_list.txt new file mode 100644 index 000000000..986b3786a --- /dev/null +++ b/inc/lang/lv/subscr_list.txt @@ -0,0 +1,16 @@ +Labdien! + +@TITLE@ viki nodaļā @PAGE@ ir mainījušās šadas lapas: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Lai atceltu izmaiņu paziņošanu, ielogojieties +@DOKUWIKIURL@, apmeklējiet +@SUBSCRIBE@ +un atsakieties no lapas vai nodaļas izmaiņu paziņojumiem . + +-- +Šo vēstuli izveidoja DokuWiki no +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/lv/subscr_single.txt b/inc/lang/lv/subscr_single.txt new file mode 100644 index 000000000..ca6177809 --- /dev/null +++ b/inc/lang/lv/subscr_single.txt @@ -0,0 +1,23 @@ +Labdien! + +@TITLE@ viki nodaļā @PAGE@ ir mainījušās šadas lapas: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Datums : @DATE@ +Lietotājs : @USER@ +Izmaiņu anotācija: @SUMMARY@ +Vecā versija: @OLDPAGE@ +Jaunā versija: @NEWPAGE@ + + +Lai atceltu izmaiņu paziņošanu, ielogojieties +@DOKUWIKIURL@, apmeklējiet +@SUBSCRIBE@ +un atsakieties no lapas vai nodaļas izmaiņu paziņojumiem . + +-- +Šo vēstuli izveidoja DokuWiki no +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/lv/wordblock.txt b/inc/lang/lv/wordblock.txt deleted file mode 100644 index aa7051c8d..000000000 --- a/inc/lang/lv/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== SPAMs bloķēts ====== - -Tavas izmaiņas **nav** saglabātas, jo satur vienu vai vairākus aizliegtos vārdus. Ja uzskati, ka tā ir kļūda, sazinies ar administratoru. - diff --git a/inc/lang/mg/lang.php b/inc/lang/mg/lang.php index bae292363..2ecbcdcff 100644 --- a/inc/lang/mg/lang.php +++ b/inc/lang/mg/lang.php @@ -56,7 +56,7 @@ $lang['lockedby'] = 'Mbola voahidin\'i'; $lang['lockexpire'] = 'Afaka ny hidy amin\'ny'; $lang['willexpire'] = 'Efa ho lany fotoana afaka iray minitra ny hidy ahafahanao manova ny pejy.\nMba hialana amin\'ny conflit dia ampiasao ny bokotra topi-maso hamerenana ny timer-n\'ny hidy.'; -$lang['notsavedyet'] = 'Misy fiovana tsy voarakitra, ho very izany ireo.\nAzo antoka fa hotohizana?'; +$lang['js']['notsavedyet'] = "Misy fiovana tsy voarakitra, ho very izany ireo.\nAzo antoka fa hotohizana?"; $lang['rssfailed'] = 'An error occured while fetching this feed: '; $lang['nothingfound']= 'Tsy nahitana n\'inon\'inona.'; diff --git a/inc/lang/mg/wordblock.txt b/inc/lang/mg/wordblock.txt deleted file mode 100644 index 581d67d16..000000000 --- a/inc/lang/mg/wordblock.txt +++ /dev/null @@ -1,5 +0,0 @@ -====== SPAM Voasakana ====== - -Tsy voarakitra ny fanovana nataonao satria misy teny voarara ao. Raha nanandrana nandefa spam ny wiki ianao dia -- Alika maty! Raha heverinao fa error dia ilazao ny Admin. - - diff --git a/inc/lang/mk/adminplugins.txt b/inc/lang/mk/adminplugins.txt new file mode 100644 index 000000000..28e2cc1d3 --- /dev/null +++ b/inc/lang/mk/adminplugins.txt @@ -0,0 +1 @@ +===== Додатни приклучоци =====
\ No newline at end of file diff --git a/inc/lang/mk/lang.php b/inc/lang/mk/lang.php new file mode 100644 index 000000000..ddd734e22 --- /dev/null +++ b/inc/lang/mk/lang.php @@ -0,0 +1,247 @@ +<?php +/** + * mk language file + * + * This file was initially built by fetching translations from other + * Wiki projects. See the @url lines below. Additional translations + * and fixes where done for DokuWiki by the people mentioned in the + * lines starting with @author + * + * @url http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/languages/messages/MessagesMk.php?view=co + * @author Dimitar Talevski <dimi3.14@gmail.com> + */ +$lang['encoding'] = 'utf-8'; +$lang['direction'] = 'ltr'; +$lang['doublequoteopening'] = '„'; +$lang['doublequoteclosing'] = '“'; +$lang['apostrophe'] = '\''; +$lang['btn_edit'] = 'Уреди ја страницата'; +$lang['btn_source'] = 'Прикажи ја изворната страница'; +$lang['btn_show'] = 'Прикажи страница'; +$lang['btn_create'] = 'Креирај ја оваа страница'; +$lang['btn_search'] = 'Барај'; +$lang['btn_save'] = 'Зачувај'; +$lang['btn_preview'] = 'Преглед'; +$lang['btn_top'] = 'Назад до врв'; +$lang['btn_newer'] = '<< понови'; +$lang['btn_older'] = 'постари >>'; +$lang['btn_revs'] = 'Стари ревизии'; +$lang['btn_recent'] = 'Скорешни промени'; +$lang['btn_upload'] = 'Крени'; +$lang['btn_cancel'] = 'Откажи'; +$lang['btn_index'] = 'Индекс'; +$lang['btn_secedit'] = 'Уреди'; +$lang['btn_login'] = 'Најава'; +$lang['btn_logout'] = 'Одјава'; +$lang['btn_admin'] = 'Админ'; +$lang['btn_update'] = 'Ажурирај'; +$lang['btn_delete'] = 'Избриши'; +$lang['btn_back'] = 'Назад'; +$lang['btn_backlink'] = 'Повратни врски'; +$lang['btn_backtomedia'] = 'Назад до изборот за медиа-датотека'; +$lang['btn_subscribe'] = 'Менаџирај претплати'; +$lang['btn_profile'] = 'Ажурирај профил'; +$lang['btn_reset'] = 'Ресет'; +$lang['btn_resendpwd'] = 'Испрати нов пасворд'; +$lang['btn_draft'] = 'Уреди скица'; +$lang['btn_recover'] = 'Поврати скица'; +$lang['btn_draftdel'] = 'Избриши скица'; +$lang['btn_revert'] = 'Обнови'; +$lang['loggedinas'] = 'Најавен/а како'; +$lang['user'] = 'Корисничко име'; +$lang['pass'] = 'Лозинка'; +$lang['newpass'] = 'Нова лозинка'; +$lang['oldpass'] = 'Потврдете ја сегашната лозинка'; +$lang['passchk'] = 'уште еднаш'; +$lang['remember'] = 'Запомни ме'; +$lang['fullname'] = 'Вистинско име'; +$lang['email'] = 'Е-пошта'; +$lang['register'] = 'Регистрирај се'; +$lang['profile'] = 'Кориснички профил'; +$lang['badlogin'] = 'Жалам, корисничкото име или лозинката се погрешни.'; +$lang['minoredit'] = 'Мали измени'; +$lang['draftdate'] = 'Скицата е само-снимена на'; +$lang['nosecedit'] = 'Во меѓувреме страницата беше променета, информацискиот дел е со истечен период затоа се вчита целата страница.'; +$lang['regmissing'] = 'Жалам, мора да ги пополнеш сите полиња.'; +$lang['reguexists'] = 'Жалам, корисник со ова корисничко име веќе постои.'; +$lang['regsuccess'] = 'Корисникот е креиран и лозинката е испратена по е-пошта.'; +$lang['regsuccess2'] = 'Корисникот е креиран.'; +$lang['regmailfail'] = 'Изгледа дека се појави грешка при испраќањето на е-пошта со лозинката. Ве молам контактирајте го администраторот!'; +$lang['regbadmail'] = 'Дадената адреса за е-пошта изгледа невалидна - ако мислите дека ова е грешка, контактирајте го администраторот'; +$lang['regbadpass'] = 'Двете наведени лозинки не се исти, ве молам пробајте повторно.'; +$lang['regpwmail'] = 'Вашата DokuWiki лозинка'; +$lang['reghere'] = 'Се уште немаш сметка? Направи веќе една'; +$lang['profna'] = 'Ова вики не поддржува измена на профилот'; +$lang['profnochange'] = 'Нема промени, ништо за правење.'; +$lang['profnoempty'] = 'Празно име или адреса за е-пошта не е дозволено.'; +$lang['profchanged'] = 'Корисничкиот профил е успешно ажуриран.'; +$lang['pwdforget'] = 'Ја заборавивте лозинката? Добијте нова'; +$lang['resendna'] = 'Ова вики не поддржува повторно испраќање на лозинка.'; +$lang['resendpwd'] = 'Испрати нова лозинка за'; +$lang['resendpwdmissing'] = 'Жалам, морате да ги пополните сите полиња.'; +$lang['resendpwdnouser'] = 'Жалам, таков корисник не постои во нашата база со податоци.'; +$lang['resendpwdbadauth'] = 'Жалам, овај код за валидација не е валиден. Проверете повторно дали ја искористивте целосната врска за потврда.'; +$lang['resendpwdconfirm'] = 'Врска за потврда е испратена по е-пошта.'; +$lang['resendpwdsuccess'] = 'Вашата нова лозинка е испратена по е-пошта.'; +$lang['license'] = 'Освен каде што е наведено поинаку, содржината на ова вики е лиценцирано по следнава лиценца:'; +$lang['licenseok'] = 'Забелешка: со уредување на оваа страница се согласувате да ја лиценцирате вашата содржина под следнава лиценца:'; +$lang['searchmedia'] = 'Барај име на датотека:'; +$lang['searchmedia_in'] = 'Барај во %s'; +$lang['txt_upload'] = 'Избери датотека за качување'; +$lang['txt_filename'] = 'Качи како (неморално)'; +$lang['txt_overwrt'] = 'Пребриши ја веќе постоечката датотека'; +$lang['lockedby'] = 'Моментално заклучена од'; +$lang['lockexpire'] = 'Клучот истекува на'; +$lang['willexpire'] = 'Вашиот клуч за уредување на оваа страница ќе истече за една минута.\nЗа да избегнете конфликти и да го ресетирате бројачот за време, искористете го копчето за преглед.'; +$lang['js']['notsavedyet'] = "Незачуваните промени ќе бидат изгубени.\nСакате да продолжите?"; +$lang['rssfailed'] = 'Се појави грешка при повлекувањето на овој канал:'; +$lang['nothingfound'] = 'Ништо не е пронајдено.'; +$lang['mediaselect'] = 'Медиа датотеки'; +$lang['fileupload'] = 'Качување на медиа датотеки'; +$lang['uploadsucc'] = 'Качувањето е успешно'; +$lang['uploadfail'] = 'Качувањето не е успешно. Можеби има погрешни пермисии?'; +$lang['uploadwrong'] = 'Качувањето е одбиено. Наставката на датотеката е забранета!'; +$lang['uploadexist'] = 'Датотеката веќе постои. Ништо не е направено.'; +$lang['uploadbadcontent'] = 'Качената содржина не се совпаѓа со наставката %s на датотеката.'; +$lang['uploadspam'] = 'Качувањето беше блокирано од црната листа за спам.'; +$lang['uploadxss'] = 'Качувањето беше блокирано за можна злонамерна содржина.'; +$lang['uploadsize'] = 'Датотеката за качување е премногу голема. (макс. %s)'; +$lang['deletesucc'] = 'Датотеката „%s“ е избришана.'; +$lang['deletefail'] = '„%s“ не може да се избрише - проверете пермисии.'; +$lang['mediainuse'] = 'Датотеката „%s“ не е избришана - се уште е во употреба.'; +$lang['mediafiles'] = 'Достапни датотеки во'; +$lang['js']['searchmedia'] = 'Барај датотеки'; +$lang['js']['keepopen'] = 'Задржи го прозорецот отворен на означеното место'; +$lang['js']['hidedetails'] = 'Скриј детали'; +$lang['js']['nosmblinks'] = 'Поврзувањето со Windows Shares работи само со Microsoft Internet Explorer. Сепак можете да ја копирате и вметнете врската.'; +$lang['js']['linkwiz'] = 'Волшебник за врски'; +$lang['js']['linkto'] = 'Врска до:'; +$lang['js']['del_confirm'] = 'Дали навистина да ги избришам избраните датотеки?'; +$lang['js']['mu_btn'] = 'Качете повеќе датотеки наеднаш'; +$lang['mediausage'] = 'Користете ја следнава синтакса за референцирање кон оваа датотека:'; +$lang['mediaview'] = 'Види ја оригиналната датотека'; +$lang['mediaroot'] = 'root'; +$lang['mediaextchange'] = 'Наставката на датотеката е сменета од .%s во .%s!'; +$lang['reference'] = 'Референци за'; +$lang['ref_inuse'] = 'Датотеката не може да биде избришана бидејќи се уште се користи од следниве страници:'; +$lang['ref_hidden'] = 'Некои референци се на страници на кои немате пермисии за читање'; +$lang['hits'] = 'Прегледи'; +$lang['quickhits'] = 'Совпаѓачки имиња на страници'; +$lang['toc'] = 'Содржина'; +$lang['current'] = 'сегашно'; +$lang['yours'] = 'Вашата верзија'; +$lang['diff'] = 'Прикажи разлики со сегашната верзија'; +$lang['diff2'] = 'Прикажи разлики помеѓу избраните ревизии'; +$lang['line'] = 'Линија'; +$lang['breadcrumb'] = 'Следи'; +$lang['youarehere'] = 'Вие сте тука'; +$lang['lastmod'] = 'Последно изменета'; +$lang['by'] = 'од'; +$lang['deleted'] = 'отстранета'; +$lang['created'] = 'креирана'; +$lang['restored'] = 'обновена е стара ревизија'; +$lang['external_edit'] = 'надворешно уредување'; +$lang['summary'] = 'Уреди го изводот'; +$lang['noflash'] = '<a href="http://www.adobe.com/products/flashplayer/">Adobe Flash приклучокот</a> е потребен за да се прикаже оваа содржина.'; +$lang['download'] = 'Симни Snippe'; +$lang['mail_newpage'] = 'додадена е страницата:'; +$lang['mail_changed'] = 'променета е страницата:'; +$lang['mail_new_user'] = 'нов корисник:'; +$lang['mail_upload'] = 'качена е датотеката:'; +$lang['qb_bold'] = 'Задебелен текст'; +$lang['qb_italic'] = 'Накосен текст'; +$lang['qb_underl'] = 'Подвлечен текст'; +$lang['qb_code'] = 'Текст за код'; +$lang['qb_strike'] = 'Прецртан текст'; +$lang['qb_h1'] = 'Заглавие од 1-во ниво'; +$lang['qb_h2'] = 'Заглавие од 2-ро ниво'; +$lang['qb_h3'] = 'Заглавие од 3-то ниво'; +$lang['qb_h4'] = 'Заглавие од 4-то ниво'; +$lang['qb_h5'] = 'Заглавие од 5-то ниво'; +$lang['qb_h'] = 'Заглавие'; +$lang['qb_hs'] = 'Избери заглавие'; +$lang['qb_hplus'] = 'Зголеми заглавие'; +$lang['qb_hminus'] = 'Намали заглавие'; +$lang['qb_hequal'] = 'Заглавие од исто ниво'; +$lang['qb_link'] = 'Внатрешна врска'; +$lang['qb_extlink'] = 'Надворешна врска'; +$lang['qb_hr'] = 'Хоризонтален линијар'; +$lang['qb_media'] = 'Додај слики и други датотеки'; +$lang['qb_sig'] = 'Внеси потпис'; +$lang['qb_smileys'] = 'Смајлиња'; +$lang['qb_chars'] = 'Специјални знаци'; +$lang['admin_register'] = 'Додај нов корисник'; +$lang['metaedit'] = 'Уреди мета-податоци'; +$lang['metasaveerr'] = 'Запишување на мета-податоците не успеа'; +$lang['metasaveok'] = 'Мета-податоците се зачувани'; +$lang['img_backto'] = 'Назад до'; +$lang['img_title'] = 'Насловна линија'; +$lang['img_caption'] = 'Наслов'; +$lang['img_date'] = 'Датум'; +$lang['img_fname'] = 'Име на датотека'; +$lang['img_fsize'] = 'Големина'; +$lang['img_artist'] = 'Фотограф'; +$lang['img_copyr'] = 'Авторско право'; +$lang['img_format'] = 'Формат'; +$lang['img_camera'] = 'Камера'; +$lang['img_keywords'] = 'Клучни зборови'; +$lang['subscr_subscribe_success'] = 'Додаден/а е %s во претплатничката листа за %s'; +$lang['subscr_subscribe_error'] = 'Грешка при додавањето на %s во претплатничката листа за %s'; +$lang['subscr_subscribe_noaddress'] = 'Нема адреса за е-пошта поврзана со Вашата најава, не може да бидете додадени на претплатничката листа'; +$lang['subscr_unsubscribe_success'] = 'Отстранет/а е %s од претплатничката листа за %s'; +$lang['subscr_unsubscribe_error'] = 'Грешка при отстранувањето на %s од претплатничката листа за %s'; +$lang['subscr_already_subscribed'] = '%s е веќе претплатен/а на %s'; +$lang['subscr_not_subscribed'] = '%s е не претплатен/а на %s'; +$lang['subscr_m_not_subscribed'] = 'Моментално не сте пријавени на сегашната страница или '; +$lang['subscr_m_new_header'] = 'Додај претплата'; +$lang['subscr_m_current_header'] = 'Моментални претплати'; +$lang['subscr_m_unsubscribe'] = 'Отплатување'; +$lang['subscr_m_subscribe'] = 'Претплата'; +$lang['subscr_m_receive'] = 'Прими'; +$lang['subscr_style_every'] = 'е-пошта за секоја промена'; +$lang['subscr_style_digest'] = 'е-пошта со преглед од промените за секоја страница'; +$lang['subscr_style_list'] = 'листа на променети страници од последната е-пошта'; +$lang['authmodfailed'] = 'Лоша конфигурација за автентикација на корисник. Ве молам информирајте го вики администратор.'; +$lang['authtempfail'] = 'Автентикација на корисник е привремено недостапна. Ако оваа ситуација истрајува, ве молам известете го вики администратор.'; +$lang['i_chooselang'] = 'Избере јазик'; +$lang['i_installer'] = 'Инсталер за DokuWiki'; +$lang['i_wikiname'] = 'вики име'; +$lang['i_enableacl'] = 'Овозможи ACL (препорачано)'; +$lang['i_superuser'] = 'Супер корисник'; +$lang['i_problems'] = 'Инсталерот пронајде неколку проблеми кои се прикажани подолу. Не можете да продолжите понатаму се додека не ги поправите.'; +$lang['i_modified'] = 'За безбедносни причини оваа скрипта ќе работи само со нова и неизменета инсталација од DokuWiki. Или извадете ги повторно датотеките од симнатиот пакет или консултирајте се со комплетните <a href="http://dokuwiki.org/install">Dokuwiki инструкции за инсталација</a>'; +$lang['i_funcna'] = 'PHP функцијата <code>%s</code> не е достапна. Можеби вашиот хостинг провајдер ја оневозможил со причина?'; +$lang['i_phpver'] = 'Вашата верзија на PHP <code>%s</code> е пониска од потребната <code>%s</code>. Треба да ја надградите вашата PHP инсталација.'; +$lang['i_permfail'] = '<code>%s</code> не е запишлива од DokuWiki. Треба да ги поправите подесувањата за пермисии на овој директориум!'; +$lang['i_confexists'] = '<code>%s</code> веќе постои'; +$lang['i_writeerr'] = 'Не може да се креира <code>%s</code>. Треба да ги проверите пермисиите на директориумот/датотеката и рачно да ја креирате датотеката.'; +$lang['i_badhash'] = 'непозната или изменете dokuwiki.php (hash=<code>%s</code>)'; +$lang['i_badval'] = '<code>%s</code> - нелегална или празна вредност'; +$lang['i_success'] = 'Конфигурацијата успешно заврши. Сега можете да ја избришете датотеката install.php. Продолжете до <a href="doku.php">вашето ново DokuWiki</a>.'; +$lang['i_failure'] = 'Се појавија некои грешки при запишувањето на конфигурациските датотеки. Можеби треба да ги поравите рачно пред да можете да го користите <a href="doku.php">вашето ново DokuWiki</a>.'; +$lang['i_policy'] = 'Почетна ACL политика'; +$lang['i_pol0'] = 'Отвори вики (читај, запиши, качи за сите)'; +$lang['i_pol1'] = 'Јавно вики (читај за сите, запиши и качи за регистрирани корисници)'; +$lang['i_pol2'] = 'Затворено вики (читај, запиши, качи само за регистрирани корисници)'; +$lang['i_retry'] = 'Пробај повторно'; +$lang['mu_intro'] = 'Овде можете да прикачите повеќе датотеки од еднаш. Кликнете на копчето за пребарување за да ги додадете во редица. Притиснете на качи кога е готово.'; +$lang['mu_gridname'] = 'Име на датотека'; +$lang['mu_gridsize'] = 'Големина'; +$lang['mu_gridstat'] = 'Состојба'; +$lang['mu_browse'] = 'Пребарај'; +$lang['mu_toobig'] = 'премногу голема'; +$lang['mu_ready'] = 'спремна за качување'; +$lang['mu_done'] = 'комплетно'; +$lang['mu_fail'] = 'неуспешно'; +$lang['mu_authfail'] = 'сесијата истече'; +$lang['mu_progress'] = '@PCT@% качено'; +$lang['mu_filetypes'] = 'Дозволено типови на датотеки'; +$lang['mu_info'] = 'качени датотеки.'; +$lang['mu_lasterr'] = 'Последна грешка: '; +$lang['years'] = 'пред %d години'; +$lang['months'] = 'пред %d месеци'; +$lang['weeks'] = 'пред %d недели'; +$lang['days'] = 'пред %d денови'; +$lang['hours'] = 'пред %d часа'; +$lang['minutes'] = 'пред %d минути'; +$lang['seconds'] = 'пред %d секунди'; diff --git a/inc/lang/mk/read.txt b/inc/lang/mk/read.txt new file mode 100644 index 000000000..8c8726eea --- /dev/null +++ b/inc/lang/mk/read.txt @@ -0,0 +1 @@ +Оваа страница е само за читање. Можете да го гледате изворот, но не можете да ја менувате. Ако мислите дека ова е погрешно, контактирајте го администраторот.
\ No newline at end of file diff --git a/inc/lang/mk/recent.txt b/inc/lang/mk/recent.txt new file mode 100644 index 000000000..cfbba4aa2 --- /dev/null +++ b/inc/lang/mk/recent.txt @@ -0,0 +1,3 @@ +====== Скорешни промени ====== + +Следниве страници беа скорешно променети.
\ No newline at end of file diff --git a/inc/lang/mk/showrev.txt b/inc/lang/mk/showrev.txt new file mode 100644 index 000000000..a0ca7353e --- /dev/null +++ b/inc/lang/mk/showrev.txt @@ -0,0 +1,2 @@ +**Ова е стара ревизија од документото!** +----
\ No newline at end of file diff --git a/inc/lang/mr/lang.php b/inc/lang/mr/lang.php index 715d51119..99561f064 100644 --- a/inc/lang/mr/lang.php +++ b/inc/lang/mr/lang.php @@ -98,7 +98,7 @@ $lang['txt_overwrt'] = 'अस्तित्वात असलेल $lang['lockedby'] = 'सध्या लॉक करणारा :'; $lang['lockexpire'] = 'सध्या लॉक करणारा :'; $lang['willexpire'] = 'हे पृष्ठ संपादित करण्यासाठी मिळालेले लॉक एखाद्या मिनिटात संपणार आहे.\n चुका होऊ नयेत म्हणुन कृपया प्रीव्यू बटन दाबुन लॉक ची वेळ पुन्हा चालू करा.'; -$lang['notsavedyet'] = 'सुरक्षित न केलेले बदल नष्ट होतील. नक्की करू का ?'; +$lang['js']['notsavedyet'] = "सुरक्षित न केलेले बदल नष्ट होतील. नक्की करू का ?"; $lang['rssfailed'] = 'ही पुरवणी आणण्यात काही चूक झाली:'; $lang['nothingfound'] = 'काही सापडला नाही.'; $lang['mediaselect'] = 'दृकश्राव्य फाइल'; diff --git a/inc/lang/mr/wordblock.txt b/inc/lang/mr/wordblock.txt deleted file mode 100644 index e885cbed9..000000000 --- a/inc/lang/mr/wordblock.txt +++ /dev/null @@ -1,3 +0,0 @@ -====== भंकस रोखली ====== - -तुमचे बदल सुरक्षित केलेले ** नाहीत ** कारण त्यामधे एक किंवा अधिक निषिद्ध शब्द आहेत. जर तुम्ही मुद्दामच विकिवर भंकस करण्याचा प्रयत्न केला असेल तर असले चाळे बंद करा ! आणि समजा तुम्हाला असा वाटत असेल की हा मजकूर निषिद्ध समजण्याचे काही कारण नाही तर तुमच्या विकी व्यवस्थापकाशी संपर्क साधा.
\ No newline at end of file diff --git a/inc/lang/ne/lang.php b/inc/lang/ne/lang.php index ce9310ee5..6c00610ea 100644 --- a/inc/lang/ne/lang.php +++ b/inc/lang/ne/lang.php @@ -91,7 +91,7 @@ $lang['txt_overwrt'] = 'रहेको उहि नामको फ $lang['lockedby'] = 'अहिले ताल्चा लगाइएको'; $lang['lockexpire'] = 'ताल्चा अवधि सकिने :'; $lang['willexpire'] = 'तपाईलले यो पृष्ठ सम्पादन गर्न लगाउनु भएको ताल्चाको अवधि एक मिनेट भित्र सकिदै छ। \n द्वन्द हुन नदिन पूर्वरुप वा ताल्चा समय परिवर्तन गर्नुहोस् ।'; -$lang['notsavedyet'] = 'तपाईले वचन गर्नु नभएको परिवर्रन हराउने छ। \n साच्चै जारी गर्नुहुन्छ ।'; +$lang['js']['notsavedyet'] = "तपाईले वचन गर्नु नभएको परिवर्रन हराउने छ। \n साच्चै जारी गर्नुहुन्छ ।"; $lang['rssfailed'] = 'यो फिड लिइ आउदा गल्ति भयो ।'; $lang['nothingfound'] = 'केहि पनि भेटिएन ।'; $lang['mediaselect'] = 'मिडिया फाइलहरू '; diff --git a/inc/lang/nl/lang.php b/inc/lang/nl/lang.php index 782a76758..9d81d0ff4 100644 --- a/inc/lang/nl/lang.php +++ b/inc/lang/nl/lang.php @@ -13,6 +13,8 @@ * @author Danny Rotsaert <danny.rotsaert@edpnet.be> * @author Marijn Hofstra hofstra.m@gmail.com * @author Matthias Carchon webmaster@c-mattic.be + * @author Marijn Hofstra <hofstra.m@gmail.com> + * @author Timon Van Overveldt <timonvo@gmail.com> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -46,9 +48,6 @@ $lang['btn_back'] = 'Terug'; $lang['btn_backlink'] = 'Referenties'; $lang['btn_backtomedia'] = 'Terug naar Bestandsselectie'; $lang['btn_subscribe'] = 'Inschrijven wijzigingen'; -$lang['btn_unsubscribe'] = 'Opzeggen wijzigingen'; -$lang['btn_subscribens'] = 'Inschrijven namespace-wijzigingen'; -$lang['btn_unsubscribens'] = 'Opzeggen namespace-wijzigingen'; $lang['btn_profile'] = 'Profiel aanpassen'; $lang['btn_reset'] = 'Wissen'; $lang['btn_resendpwd'] = 'Stuur een nieuw wachtwoord'; @@ -102,7 +101,38 @@ $lang['txt_overwrt'] = 'Overschrijf bestaand bestand'; $lang['lockedby'] = 'Momenteel in gebruik door'; $lang['lockexpire'] = 'Exclusief gebruiksrecht vervalt op'; $lang['willexpire'] = 'Je exclusieve gebruiksrecht voor het aanpassen van deze pagina verloopt over een minuut.\nKlik op de Voorbeeld-knop om het exclusieve gebruiksrecht te verlengen.'; -$lang['notsavedyet'] = 'Nog niet bewaarde wijzigingen zullen verloren gaan.\nWeet je zeker dat je wilt doorgaan?'; +$lang['js']['notsavedyet'] = 'Nog niet bewaarde wijzigingen zullen verloren gaan. +Weet je zeker dat je wilt doorgaan?'; +$lang['js']['searchmedia'] = 'Zoek naar bestanden'; +$lang['js']['keepopen'] = 'Houd scherm open bij selectie'; +$lang['js']['hidedetails'] = 'Verberg details'; +$lang['js']['mediatitle'] = 'Linkinstellingen'; +$lang['js']['mediadisplay'] = 'Linktype'; +$lang['js']['mediaalign'] = 'Uitlijning'; +$lang['js']['mediasize'] = 'Afbeeldingsomvang'; +$lang['js']['mediatarget'] = 'Linkdoel'; +$lang['js']['mediaclose'] = 'Sluiten'; +$lang['js']['mediainsert'] = 'Invoegen'; +$lang['js']['mediadisplayimg'] = 'De afbeelding weergeven'; +$lang['js']['mediadisplaylnk'] = 'Alleen de link weergeven'; +$lang['js']['mediasmall'] = 'Kleine versie'; +$lang['js']['mediamedium'] = 'Middelgrote versie'; +$lang['js']['medialarge'] = 'Grote versie'; +$lang['js']['mediaoriginal'] = 'Originele versie'; +$lang['js']['medialnk'] = 'Link naar detailpagina'; +$lang['js']['mediadirect'] = 'Directe link naar origineel'; +$lang['js']['medianolnk'] = 'Geen link'; +$lang['js']['medianolink'] = 'Link niet naar de afbeelding'; +$lang['js']['medialeft'] = 'Afbeelding links uitlijnen'; +$lang['js']['mediaright'] = 'Afbeelding rechts uitlijnen'; +$lang['js']['mediacenter'] = 'Afbeelding centreren'; +$lang['js']['medianoalign'] = 'Geen uitlijning gebruiken'; +$lang['js']['nosmblinks'] = 'Linken naar Windows shares werkt alleen in Microsoft Internet Explorer. +Je kan de link wel kopiëren en plakken.'; +$lang['js']['linkwiz'] = 'Linkwizard'; +$lang['js']['linkto'] = 'Link naar:'; +$lang['js']['del_confirm'] = 'Item(s) verwijderen?'; +$lang['js']['mu_btn'] = 'Meerdere files tegelijk uploaden'; $lang['rssfailed'] = 'Er is een fout opgetreden bij het ophalen van de feed: '; $lang['nothingfound'] = 'Er werd niets gevonden.'; $lang['mediaselect'] = 'Bestandsselectie'; @@ -120,15 +150,7 @@ $lang['deletefail'] = '"%s" kan niet worden verwijderd - controleer p $lang['mediainuse'] = 'Het bestand "%s" is niet verwijderd - het is nog in gebruik.'; $lang['namespaces'] = 'Namespaces'; $lang['mediafiles'] = 'Beschikbare bestanden in'; -$lang['js']['searchmedia'] = 'Zoek naar bestanden'; -$lang['js']['keepopen'] = 'Houd scherm open bij selectie'; -$lang['js']['hidedetails'] = 'Verberg details'; -$lang['js']['nosmblinks'] = 'Linken naar Windows shares werkt alleen in Microsoft Internet Explorer. -Je kan de link wel kopiëren en plakken.'; -$lang['js']['linkwiz'] = 'Linkwizard'; -$lang['js']['linkto'] = 'Link naar:'; -$lang['js']['del_confirm'] = 'Item(s) verwijderen?'; -$lang['js']['mu_btn'] = 'Meerdere files tegelijk uploaden'; +$lang['accessdenied'] = 'U heeft geen toegang tot deze pagina.'; $lang['mediausage'] = 'Gebruik de volgende syntax om aan het bestand te refereren:'; $lang['mediaview'] = 'Bekijk het orginele bestand'; $lang['mediaroot'] = 'root'; @@ -144,6 +166,7 @@ $lang['current'] = 'huidige'; $lang['yours'] = 'Jouw versie'; $lang['diff'] = 'Toon verschillen met huidige revisie'; $lang['diff2'] = 'Toon verschillen tussen geselecteerde revisies'; +$lang['difflink'] = 'Link naar deze vergelijking'; $lang['line'] = 'Regel'; $lang['breadcrumb'] = 'Spoor'; $lang['youarehere'] = 'Je bent hier'; @@ -158,6 +181,7 @@ $lang['noflash'] = 'De <a href="http://www.adobe.com/products/flas $lang['download'] = 'Download fragment'; $lang['mail_newpage'] = 'pagina toegevoegd:'; $lang['mail_changed'] = 'pagina aangepast:'; +$lang['mail_subscribe_list'] = 'Pagina\'s veranderd in namespace:'; $lang['mail_new_user'] = 'nieuwe gebruiker:'; $lang['mail_upload'] = 'bestand geüpload:'; $lang['qb_bold'] = 'Vette tekst'; @@ -200,11 +224,22 @@ $lang['img_copyr'] = 'Copyright'; $lang['img_format'] = 'Formaat'; $lang['img_camera'] = 'Camera'; $lang['img_keywords'] = 'Trefwoorden'; -$lang['subscribe_success'] = '%s toegevoegd aan de lijst voor %s'; -$lang['subscribe_error'] = 'Fout bij toevoegen van %s aan de lijst voor %s'; -$lang['subscribe_noaddress'] = 'Er is geen adres dat overeenkomt met je login, je kan niet toegevoegd worden aan de lijst'; -$lang['unsubscribe_success'] = '%s verwijderd van de lijst voor %s'; -$lang['unsubscribe_error'] = 'Fout bij verwijderen van %s van de lijst voor %s'; +$lang['subscr_subscribe_success'] = '%s is ingeschreven voor %s'; +$lang['subscr_subscribe_error'] = 'Fout bij inschrijven van %s voor %s'; +$lang['subscr_subscribe_noaddress'] = 'Er is geen emailadres geassocieerd met uw account, u kunt daardoor niet worden ingeschreven.'; +$lang['subscr_unsubscribe_success'] = '%s is nu uitgeschreven bij %s.'; +$lang['subscr_unsubscribe_error'] = 'Fout bij uitschrijven van %s bij %s.'; +$lang['subscr_already_subscribed'] = '%s is reeds ingeschreven bij %s.'; +$lang['subscr_not_subscribed'] = '%s is niet ingeschreven bij %s.'; +$lang['subscr_m_not_subscribed'] = 'Je bent momenteel niet ingeschreven bij de huidige pagina of namespace.'; +$lang['subscr_m_new_header'] = 'Inschrijving toevoegen'; +$lang['subscr_m_current_header'] = 'Huidige inschrijvingen'; +$lang['subscr_m_unsubscribe'] = 'Uitschrijven'; +$lang['subscr_m_subscribe'] = 'Inschrijven'; +$lang['subscr_m_receive'] = 'Ontvang'; +$lang['subscr_style_every'] = 'Email bij iedere wijziging'; +$lang['subscr_style_digest'] = 'Samenvattings-email met wijzigingen per pagina (elke %.2f dagen)'; +$lang['subscr_style_list'] = 'Lijst van veranderde pagina\'s sinds laatste email (elke %.2f dagen)'; $lang['authmodfailed'] = 'Ongeldige gebruikersauthenticatie-configuratie. Informeer de wikibeheerder.'; $lang['authtempfail'] = 'Gebruikersauthenticatie is tijdelijk niet beschikbaar. Als deze situatie zich blijft voordoen, informeer dan de wikibeheerder.'; $lang['i_chooselang'] = 'Kies je taal'; @@ -228,6 +263,7 @@ $lang['i_pol0'] = 'Open wiki (lezen, schrijven, uploaden voor ied $lang['i_pol1'] = 'Publieke wiki (lezen voor iedereen, schrijven en uploaden voor geregistreerde gebruikers)'; $lang['i_pol2'] = 'Besloten wiki (lezen, schrijven en uploaden alleen voor geregistreerde gebruikers)'; $lang['i_retry'] = 'Opnieuw'; +$lang['i_license'] = 'Kies a.u.b. een licentie die u voor uw inhoud wilt gebruiken:'; $lang['mu_intro'] = 'Hiier kun je meerdere bestanden tegelijk uploaden. Klik de blader-knop om ze aan de lijst toe te voegen. Klik Upload als je klaar bent.'; $lang['mu_gridname'] = 'Bestandsnaam'; $lang['mu_gridsize'] = 'Grootte'; @@ -251,3 +287,4 @@ $lang['days'] = '%d dagen geleden'; $lang['hours'] = '%d uren geleden'; $lang['minutes'] = '%d minuten geleden'; $lang['seconds'] = '%d seconden geleden'; +$lang['wordblock'] = 'Uw wijziging is niet opgeslagen omdat deze niet-toegestane tekst bevat (spam).'; diff --git a/inc/lang/nl/subscr_digest.txt b/inc/lang/nl/subscr_digest.txt new file mode 100644 index 000000000..0e6c2c5ba --- /dev/null +++ b/inc/lang/nl/subscr_digest.txt @@ -0,0 +1,15 @@ +Halllo! + +De pagina @PAGE@ in de @TITLE@ wiki is veranderd. Hier zijn de wijzigingen: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Vorige revisie: @OLDPAGE@ +Nieuwe revisie: @NEWPAGE@ + +Om het verzenden van deze wijzigingsberichtente te stoppen, logt u in op het wiki op @DOKUWIKIURL@ en navigeert u naar @SUBSCRIBE@. Vervolgens kunt u zich voor elke gewenste pagina of namespace uitschrijven. + +-- +Deze email is gegenereerd door DokuWiki op @DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/nl/subscr_form.txt b/inc/lang/nl/subscr_form.txt new file mode 100644 index 000000000..a554f843e --- /dev/null +++ b/inc/lang/nl/subscr_form.txt @@ -0,0 +1,3 @@ +====== Beheer inschrijvingen ====== + +Deze pagina stelt u in staat uw inschrijven voor de huidige pagina en namespace te configureren.
\ No newline at end of file diff --git a/inc/lang/nl/subscr_list.txt b/inc/lang/nl/subscr_list.txt new file mode 100644 index 000000000..5e1a62144 --- /dev/null +++ b/inc/lang/nl/subscr_list.txt @@ -0,0 +1,12 @@ +Halllo! + +Pagina's in de namespace @PAGE@ van de @TITLE@ wiki zijn veranderd. Hier zijn de veranderde pagina's: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Om het verzenden van deze wijzigingsberichtente te stoppen, logt u in op het wiki op @DOKUWIKIURL@ en navigeert u naar @SUBSCRIBE@. Vervolgens kunt u zich voor elke gewenste pagina of namespace uitschrijven. + +-- +Deze email is gegenereerd door DokuWiki op @DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/nl/subscr_single.txt b/inc/lang/nl/subscr_single.txt new file mode 100644 index 000000000..3e74bce17 --- /dev/null +++ b/inc/lang/nl/subscr_single.txt @@ -0,0 +1,18 @@ +Halllo! + +De pagina @PAGE@ in de @TITLE@ wiki is veranderd. Hier zijn de wijzigingen: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Datum: @DATE@ +Gebruiker: @USER@ +Wijzigingssamenvatting: @SUMMARY@ +Vorige revisie: @OLDPAGE@ +Nieuwe revisie: @NEWPAGE@ + +Om het verzenden van deze wijzigingsberichtente te stoppen, logt u in op het wiki op @DOKUWIKIURL@ en navigeert u naar @SUBSCRIBE@. Vervolgens kunt u zich voor elke gewenste pagina of namespace uitschrijven. + +-- +Deze email is gegenereerd door DokuWiki op @DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/nl/wordblock.txt b/inc/lang/nl/wordblock.txt deleted file mode 100644 index d887d7318..000000000 --- a/inc/lang/nl/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== SPAM geblokkeerd ====== - -Je wijzigingen zijn **niet** opgeslagen omdat ze een of meer geblokkeerde woorden bevatten. Als je probeerde de Wiki te spammen -- Foei stouterd! Als je denkt dat dit een fout is neem dan contact op met de beheerder van deze Wiki. - diff --git a/inc/lang/no/lang.php b/inc/lang/no/lang.php index 2dc2c8339..ca63c0094 100644 --- a/inc/lang/no/lang.php +++ b/inc/lang/no/lang.php @@ -105,7 +105,7 @@ $lang['txt_overwrt'] = 'Overskriv eksisterende fil'; $lang['lockedby'] = 'Stengt av'; $lang['lockexpire'] = 'Avstengningen opphører'; $lang['willexpire'] = 'Din redigeringslås for dette dokumentet kommer snart til å opphøre.\nFor å unngå versjonskonflikter bør du forhåndsvise dokumentet ditt for å forlenge redigeringslåsen.'; -$lang['notsavedyet'] = 'Ulagrede endringer vil gå tapt.\nVil du fortsette?'; +$lang['js']['notsavedyet'] = "Ulagrede endringer vil gå tapt.\nVil du fortsette?"; $lang['rssfailed'] = 'En feil oppstod da denne kilden skulle hentes:'; $lang['nothingfound'] = 'Ingen data funnet.'; $lang['mediaselect'] = 'Valg av mediafil'; diff --git a/inc/lang/no/wordblock.txt b/inc/lang/no/wordblock.txt deleted file mode 100644 index 30c4c31ce..000000000 --- a/inc/lang/no/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== Ordsperre ====== - -Dine endringer har **ikke** blitt lagret på grunn av at de inneholder ett eller flere ord som er sperret. Hvis du har forsøkt å lagre søppel, eller såkalt ''spam'' -- Fy deg! Hvis du anser denne beskjeden som feilaktig kan du kontakte administratoren til denne wikien. - diff --git a/inc/lang/pl/lang.php b/inc/lang/pl/lang.php index 882806577..0fac281f8 100644 --- a/inc/lang/pl/lang.php +++ b/inc/lang/pl/lang.php @@ -7,6 +7,10 @@ * @author Mariusz Kujawski <marinespl@gmail.com> * @author Maciej Kurczewski <pipijajko@gmail.com> * @author Sławomir Boczek <slawkens@gmail.com> + * @author sleshek@wp.pl + * @author Leszek Stachowski <shazarre@gmail.com> + * @author maros <dobrimaros@yahoo.pl> + * @author Grzegorz Widła <dzesdzes@gmail.com> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -40,9 +44,6 @@ $lang['btn_back'] = 'Wstecz'; $lang['btn_backlink'] = 'Odnośniki'; $lang['btn_backtomedia'] = 'Powrót do wyboru pliku'; $lang['btn_subscribe'] = 'Subskrybuj zmiany'; -$lang['btn_unsubscribe'] = 'Zaprzestań subskrypcji zmian'; -$lang['btn_subscribens'] = 'Subskrybuj zmiany w katalogu'; -$lang['btn_unsubscribens'] = 'Zaprzestań subskrypcji zmian w katalogu'; $lang['btn_profile'] = 'Aktualizuj profil'; $lang['btn_reset'] = 'Resetuj'; $lang['btn_resendpwd'] = 'Prześlij nowe hasło'; @@ -96,7 +97,38 @@ $lang['txt_overwrt'] = 'Nadpisać istniejący plik?'; $lang['lockedby'] = 'Aktualnie zablokowane przez'; $lang['lockexpire'] = 'Blokada wygasa'; $lang['willexpire'] = 'Za minutę Twoja blokada tej strony wygaśnie.\nW celu uniknięcia konfliktów wyświetl podgląd aby odnowić blokadę.'; -$lang['notsavedyet'] = 'Nie zapisane zmiany zostaną utracone.\nCzy na pewno kontynuować?'; +$lang['js']['notsavedyet'] = 'Nie zapisane zmiany zostaną utracone. +Czy na pewno kontynuować?'; +$lang['js']['searchmedia'] = 'Szukaj plików'; +$lang['js']['keepopen'] = 'Nie zamykaj okna po wyborze'; +$lang['js']['hidedetails'] = 'Ukryj szczegóły'; +$lang['js']['mediatitle'] = 'Ustawienia odnośników'; +$lang['js']['mediadisplay'] = 'Typ odnośnika'; +$lang['js']['mediaalign'] = 'Położenie'; +$lang['js']['mediasize'] = 'Rozmiar grafiki'; +$lang['js']['mediatarget'] = 'Cel odnośnika'; +$lang['js']['mediaclose'] = 'Zamknij'; +$lang['js']['mediainsert'] = 'Wstaw'; +$lang['js']['mediadisplayimg'] = 'Pokaż grafikę'; +$lang['js']['mediadisplaylnk'] = 'Pokaż tylko odnośnik.'; +$lang['js']['mediasmall'] = 'Mały rozmiar'; +$lang['js']['mediamedium'] = 'Średni rozmiar'; +$lang['js']['medialarge'] = 'Duży rozmiar'; +$lang['js']['mediaoriginal'] = 'Wersja oryginalna'; +$lang['js']['medialnk'] = 'Odnośnik do strony ze szczegółami'; +$lang['js']['mediadirect'] = 'Bezpośredni odnośnik do oryginału'; +$lang['js']['medianolnk'] = 'Bez odnośnika'; +$lang['js']['medianolink'] = 'Nie ustawiaj odnośnika do grafiki'; +$lang['js']['medialeft'] = 'Ustaw położenie po lewej stronie.'; +$lang['js']['mediaright'] = 'Ustaw położenie po prawej stronie.'; +$lang['js']['mediacenter'] = 'Ustaw położenie po środku.'; +$lang['js']['medianoalign'] = 'Nie ustawiaj położenia.'; +$lang['js']['nosmblinks'] = 'Odnośniki do zasobów sieci Windows działają tylko w przeglądarce Internet Explorer. +Możesz skopiować odnośnik.'; +$lang['js']['linkwiz'] = 'Tworzenie odnośników'; +$lang['js']['linkto'] = 'Link do'; +$lang['js']['del_confirm'] = 'Czy na pewno usunąć?'; +$lang['js']['mu_btn'] = 'Wyślij wiele plików na raz'; $lang['rssfailed'] = 'Wystąpił błąd przy pobieraniu tych danych: '; $lang['nothingfound'] = 'Nic nie znaleziono.'; $lang['mediaselect'] = 'Wysyłanie pliku'; @@ -114,15 +146,6 @@ $lang['deletefail'] = 'Plik "%s" nie został usunięty, sprawdź upra $lang['mediainuse'] = 'Plik "%s" nie został usunięty, ponieważ jest używany.'; $lang['namespaces'] = 'Katalogi'; $lang['mediafiles'] = 'Dostępne pliki'; -$lang['js']['searchmedia'] = 'Szukaj plików'; -$lang['js']['keepopen'] = 'Nie zamykaj okna po wyborze'; -$lang['js']['hidedetails'] = 'Ukryj szczegóły'; -$lang['js']['nosmblinks'] = 'Odnośniki do zasobów sieci Windows działają tylko w przeglądarce Internet Explorer. -Możesz skopiować odnośnik.'; -$lang['js']['linkwiz'] = 'Tworzenie odnośników'; -$lang['js']['linkto'] = 'Link do'; -$lang['js']['del_confirm'] = 'Czy na pewno usunąć?'; -$lang['js']['mu_btn'] = 'Wyślij wiele plików na raz'; $lang['mediausage'] = 'Użyj następującej składni w odnośniku do tego pliku:'; $lang['mediaview'] = 'Pokaż oryginalny plik'; $lang['mediaroot'] = 'główny'; @@ -152,6 +175,7 @@ $lang['noflash'] = 'Plugin <a href="http://www.adobe.com/products/ $lang['download'] = 'Pobierz zrzut'; $lang['mail_newpage'] = 'Strona dodana:'; $lang['mail_changed'] = 'Strona zmieniona:'; +$lang['mail_subscribe_list'] = 'Zmienione strony w katalogu:'; $lang['mail_new_user'] = 'Nowy użytkownik:'; $lang['mail_upload'] = 'Umieszczono plik:'; $lang['qb_bold'] = 'Pogrubienie'; @@ -194,11 +218,22 @@ $lang['img_copyr'] = 'Prawa autorskie'; $lang['img_format'] = 'Format'; $lang['img_camera'] = 'Aparat'; $lang['img_keywords'] = 'Słowa kluczowe'; -$lang['subscribe_success'] = 'Dodano %s do listy subskrypcji strony %s'; -$lang['subscribe_error'] = 'Błąd przy dodawaniu %s do listy subskrypcji strony %s'; -$lang['subscribe_noaddress'] = 'Nie podałeś adresu e-mail przy rejestracji, nie możesz zostać dodany do listy subskrypcji.'; -$lang['unsubscribe_success'] = 'Usunięto %s z listy subskrypcji strony %s'; -$lang['unsubscribe_error'] = 'Błąd przy usuwaniu %s z listy subskrypcji strony %s'; +$lang['subscr_subscribe_success'] = 'Dodano %s do listy subskrypcji %s'; +$lang['subscr_subscribe_error'] = 'Błąd podczas dodawania %s do listy subskrypcji %s'; +$lang['subscr_subscribe_noaddress'] = 'Brak adresu skojarzonego z twoim loginem, nie możesz zostać dodany(a) do listy subskrypcji'; +$lang['subscr_unsubscribe_success'] = 'Usunięto %s z listy subskrypcji %s'; +$lang['subscr_unsubscribe_error'] = 'Błąd podczas usuwania %s z listy subskrypcji %s'; +$lang['subscr_already_subscribed'] = '%s jest już subskrybowany(a) przez %s'; +$lang['subscr_not_subscribed'] = '%s nie jest subskrybowany(a) przez %s'; +$lang['subscr_m_not_subscribed'] = 'Obecnie nie subskrybujesz bieżącej strony lub katalogu.'; +$lang['subscr_m_new_header'] = 'Dodaj subskrypcję'; +$lang['subscr_m_current_header'] = 'Aktualne subskrypcje'; +$lang['subscr_m_unsubscribe'] = 'Zrezygnuj z subskrypcji'; +$lang['subscr_m_subscribe'] = 'Subskrybuj'; +$lang['subscr_m_receive'] = 'Otrzymuj'; +$lang['subscr_style_every'] = 'email przy każdej zmianie'; +$lang['subscr_style_digest'] = 'email ze streszczeniem zmian dla każdej ze stron'; +$lang['subscr_style_list'] = 'lista zmienionych stron od czasu ostatniego emaila'; $lang['authmodfailed'] = 'Błąd uwierzytelnienia. Powiadom administratora tego wiki.'; $lang['authtempfail'] = 'Uwierzytelnienie użytkownika jest w tej chwili niemożliwe. Jeśli ta sytuacja się powtórzy, powiadom administratora tego wiki.'; $lang['i_chooselang'] = 'Wybierz język'; @@ -246,3 +281,4 @@ $lang['days'] = '%d dni temu'; $lang['hours'] = '%d godzin temu'; $lang['minutes'] = '%d minut temu'; $lang['seconds'] = '%d sekund temu'; +$lang['wordblock'] = 'Twoje ustawienia nie zostały zapisane ponieważ zawierają niedozwoloną treść (spam).'; diff --git a/inc/lang/pl/subscr_digest.txt b/inc/lang/pl/subscr_digest.txt new file mode 100644 index 000000000..2b1f63c1b --- /dev/null +++ b/inc/lang/pl/subscr_digest.txt @@ -0,0 +1,21 @@ +Witaj! + +Treść strony @PAGE@ na wiki @TITLE@ uległa +następującym zmianom: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Stara wersja: @OLDPAGE@ +Nowa wersja: @NEWPAGE@ + +Aby zrezygnować z powiadomień o zmianach zaloguj się do wiki na +@DOKUWIKIURL@, a następnie odwiedź +@SUBSCRIBE@ +i anuluj otrzymywanie powiadomień o zmianach na stronach i/lub +katalogach. + +-- +Ta wiadomość została wygenerowana przez DokuWiki na +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/pl/subscr_form.txt b/inc/lang/pl/subscr_form.txt new file mode 100644 index 000000000..59fdbdb89 --- /dev/null +++ b/inc/lang/pl/subscr_form.txt @@ -0,0 +1,3 @@ +====== Zarządzanie Subskrypcją ====== + +Ta strona pozwala Tobie na zarządzanie Twoimi subskrypcjami dla obecnej strony i katalogu.
\ No newline at end of file diff --git a/inc/lang/pl/subscr_list.txt b/inc/lang/pl/subscr_list.txt new file mode 100644 index 000000000..9a74d757b --- /dev/null +++ b/inc/lang/pl/subscr_list.txt @@ -0,0 +1,18 @@ +Witaj! + +Strony w katalogu @PAGE@ na wiki @TITLE@ uległy +następującym zmianom: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Aby zrezygnować z powiadomień o zmianach zaloguj się do wiki na +@DOKUWIKIURL@, a następnie odwiedź +@SUBSCRIBE@ +i anuluj otrzymywanie powiadomień o zmianach na stronach i/lub +katalogach. + +-- +Ta wiadomość została wygenerowana przez DokuWiki na +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/pl/subscr_single.txt b/inc/lang/pl/subscr_single.txt new file mode 100644 index 000000000..3f4bc7314 --- /dev/null +++ b/inc/lang/pl/subscr_single.txt @@ -0,0 +1,24 @@ +Witaj! + +Treść strony @PAGE@ na wiki @TITLE@ uległa +następującym zmianom: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Data: @DATE@ +Użytkownik: @USER@ +Podsumowanie zmian: @SUMMARY@ +Stara wersja: @OLDPAGE@ +Nowa wersja: @NEWPAGE@ + +Aby zrezygnować z powiadomień o zmianach zaloguj się do wiki na +@DOKUWIKIURL@, a następnie odwiedź +@SUBSCRIBE@ +i anuluj otrzymywanie powiadomień o zmianach na stronach i/lub +katalogach. + +-- +Ta wiadomość została wygenerowana przez DokuWiki na +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/pl/wordblock.txt b/inc/lang/pl/wordblock.txt deleted file mode 100644 index 09edb25dd..000000000 --- a/inc/lang/pl/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== Blokowanie niedozwolonych treści i spamu ====== - -Twoje zmiany **nie** zostały zapisane, ponieważ zawierają niedozwolone słowa. Jeśli próbowałeś(aś) umieścić niedozwolone treści to wstydź się! - diff --git a/inc/lang/pt-br/lang.php b/inc/lang/pt-br/lang.php index ed7224c14..135d20d97 100644 --- a/inc/lang/pt-br/lang.php +++ b/inc/lang/pt-br/lang.php @@ -16,6 +16,7 @@ * @author Frederico Guimarães <frederico@teia.bio.br> * @author Jair Henrique <jair.henrique@gmail.com> * @author Luis Dantas <luisdantas@gmail.com> + * @author Sergio Motta sergio@cisne.com.br */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -49,9 +50,6 @@ $lang['btn_back'] = 'Voltar'; $lang['btn_backlink'] = 'Links reversos'; $lang['btn_backtomedia'] = 'Voltar à seleção do arquivo de mídia'; $lang['btn_subscribe'] = 'Monitorar alterações na página'; -$lang['btn_unsubscribe'] = 'Cancelar monitoramento da página'; -$lang['btn_subscribens'] = 'Monitorar alterações no espaço de nomes'; -$lang['btn_unsubscribens'] = 'Cancelar monitoramento do espaço de nomes'; $lang['btn_profile'] = 'Atualizar o perfil'; $lang['btn_reset'] = 'Limpar'; $lang['btn_resendpwd'] = 'Enviar uma nova senha'; @@ -97,13 +95,46 @@ $lang['resendpwdconfirm'] = 'Um link de confirmação foi enviado por e-mai $lang['resendpwdsuccess'] = 'Sua nova senha foi enviada por e-mail.'; $lang['license'] = 'Exceto onde for informado ao contrário, o conteúdo neste wiki está sob a seguinte licença:'; $lang['licenseok'] = 'Observe: editando esta página você aceita disponibilizar o seu conteúdo sob a seguinte licença:'; +$lang['searchmedia'] = 'Buscar arquivo:'; +$lang['searchmedia_in'] = 'Buscar em %s'; $lang['txt_upload'] = 'Selecione o arquivo a ser enviado'; $lang['txt_filename'] = 'Enviar como (opcional)'; $lang['txt_overwrt'] = 'Substituir o arquivo existente'; $lang['lockedby'] = 'Atualmente bloqueada por'; $lang['lockexpire'] = 'O bloqueio expira em'; $lang['willexpire'] = 'O seu bloqueio de edição deste página irá expirar em um minuto.\nPara evitar conflitos de edição, clique no botão de visualização para reiniciar o temporizador de bloqueio.'; -$lang['notsavedyet'] = 'As alterações não salvas serão perdidas.\nDeseja realmente continuar?'; +$lang['js']['notsavedyet'] = 'As alterações não salvas serão perdidas. +Deseja realmente continuar?'; +$lang['js']['searchmedia'] = 'Buscar por arquivos'; +$lang['js']['keepopen'] = 'Manter a janela aberta na seleção'; +$lang['js']['hidedetails'] = 'Esconder detalhes'; +$lang['js']['mediatitle'] = 'Configurações do Link'; +$lang['js']['mediadisplay'] = 'Tipo de Link'; +$lang['js']['mediaalign'] = 'Alinhamento'; +$lang['js']['mediasize'] = 'Tamanho da Imagem'; +$lang['js']['mediatarget'] = 'Alvo do Link'; +$lang['js']['mediaclose'] = 'Fechar'; +$lang['js']['mediainsert'] = 'Inserir'; +$lang['js']['mediadisplayimg'] = 'Mostrar Imagem.'; +$lang['js']['mediadisplaylnk'] = 'Mostrar apenas Link.'; +$lang['js']['mediasmall'] = 'Versão Pequena'; +$lang['js']['mediamedium'] = 'Versão Média'; +$lang['js']['medialarge'] = 'Versão Grande'; +$lang['js']['mediaoriginal'] = 'Versão Original'; +$lang['js']['medialnk'] = 'Link para pagina de detalhes'; +$lang['js']['mediadirect'] = 'Link direto para original'; +$lang['js']['medianolnk'] = 'Sem Link'; +$lang['js']['medianolink'] = 'Sem link na imagem'; +$lang['js']['medialeft'] = 'Alinhamento de imagem a esquerda'; +$lang['js']['mediaright'] = 'Alinhamento de imagem a direita'; +$lang['js']['mediacenter'] = 'Alinhamento de imagem ao centro'; +$lang['js']['medianoalign'] = 'Sem alinhamento'; +$lang['js']['nosmblinks'] = 'Atalhos para pastas compartilhadas do Windows funcionam apenas no Microsoft Internet Explorer. +Entretanto, você ainda pode copiar e colar o atalho.'; +$lang['js']['linkwiz'] = 'Link Wizard'; +$lang['js']['linkto'] = 'Link para:'; +$lang['js']['del_confirm'] = 'Deseja realmente excluir o(s) item(ns) selecionado(s)?'; +$lang['js']['mu_btn'] = 'Enviar vários arquivos de uma vez'; $lang['rssfailed'] = 'Ocorreu um erro durante a atualização dessa fonte: '; $lang['nothingfound'] = 'Não foi encontrado nada.'; $lang['mediaselect'] = 'Arquivos de mídia'; @@ -121,13 +152,6 @@ $lang['deletefail'] = 'Não foi possível excluir "%s" - verifique as $lang['mediainuse'] = 'O arquivo "%s" não foi excluído - ele ainda está em uso.'; $lang['namespaces'] = 'Espaços de nome'; $lang['mediafiles'] = 'Arquivos disponíveis em'; -$lang['js']['keepopen'] = 'Manter a janela aberta na seleção'; -$lang['js']['hidedetails'] = 'Esconder detalhes'; -$lang['js']['nosmblinks'] = 'Atalhos para pastas compartilhadas do Windows funcionam apenas no Microsoft Internet Explorer. -Entretanto, você ainda pode copiar e colar o atalho.'; -$lang['js']['linkto'] = 'Link para:'; -$lang['js']['del_confirm'] = 'Deseja realmente excluir o(s) item(ns) selecionado(s)?'; -$lang['js']['mu_btn'] = 'Enviar vários arquivos de uma vez'; $lang['mediausage'] = 'Use a seguinte sintaxe para referenciar esse arquivo:'; $lang['mediaview'] = 'Ver o arquivo original'; $lang['mediaroot'] = 'raiz'; @@ -154,8 +178,10 @@ $lang['restored'] = 'revisão anterior restaurada'; $lang['external_edit'] = 'edição externa'; $lang['summary'] = 'Resumo da edição'; $lang['noflash'] = 'O <a href="http://www.adobe.com/products/flashplayer/">plug-in Adobe Flash</a> é necessário para exibir este conteúdo.'; +$lang['download'] = 'Download Snippet'; $lang['mail_newpage'] = 'página adicionada:'; $lang['mail_changed'] = 'página modificada:'; +$lang['mail_subscribe_list'] = 'páginas alteradas no namespace:'; $lang['mail_new_user'] = 'novo usuário:'; $lang['mail_upload'] = 'arquivo enviado:'; $lang['qb_bold'] = 'Texto em negrito'; @@ -169,6 +195,10 @@ $lang['qb_h3'] = 'Cabeçalho de nível 3'; $lang['qb_h4'] = 'Cabeçalho de nível 4'; $lang['qb_h5'] = 'Cabeçalho de nível 5'; $lang['qb_h'] = 'Cabeçalho'; +$lang['qb_hs'] = 'Escolha o cabeçalho'; +$lang['qb_hplus'] = 'Cabeçalho de nível mais alto'; +$lang['qb_hminus'] = 'Cabeçalho de nível mais baixo'; +$lang['qb_hequal'] = 'Cabeçalho de mesmo nível'; $lang['qb_link'] = 'Link interno'; $lang['qb_extlink'] = 'Link externo'; $lang['qb_hr'] = 'Linha horizontal'; @@ -178,6 +208,7 @@ $lang['qb_media'] = 'Adicionar imagens e/ou outros arquivos'; $lang['qb_sig'] = 'Inserir assinatura'; $lang['qb_smileys'] = 'Carinhas'; $lang['qb_chars'] = 'Caracteres especiais'; +$lang['upperns'] = 'Pular para namespace acima'; $lang['admin_register'] = 'Adicionar novo usuário'; $lang['metaedit'] = 'Editar metadados'; $lang['metasaveerr'] = 'Não foi possível escrever os metadados'; @@ -193,11 +224,22 @@ $lang['img_copyr'] = 'Direitos autorais'; $lang['img_format'] = 'Formato'; $lang['img_camera'] = 'Câmera'; $lang['img_keywords'] = 'Palavras-chave'; -$lang['subscribe_success'] = '%s foi adicionado à lista de monitoramento de %s'; -$lang['subscribe_error'] = 'Ocorreu um erro ao tentar adicionar %s à lista de monitoramento de %s'; -$lang['subscribe_noaddress'] = 'Não existe nenhum endereço de e-mail associado ao seu usuário, você não pode ser adicionado à lista de monitoramento.'; -$lang['unsubscribe_success'] = '%s foi removido da lista de monitoramento de %s'; -$lang['unsubscribe_error'] = 'Ocorreu um erro ao tentar remover %s da lista de monitoramento de %s'; +$lang['subscr_subscribe_success'] = 'Adicionado %s para a lista de inscrição para %s'; +$lang['subscr_subscribe_error'] = 'Erro adicionando %s para a lista de inscrição para %s'; +$lang['subscr_subscribe_noaddress'] = 'Não há endereço associado com seu login, você não pode ser adicionado à lista de inscrição'; +$lang['subscr_unsubscribe_success'] = 'Removido %s da lista de inscrição para %s'; +$lang['subscr_unsubscribe_error'] = 'Erro removendo %s da lista de inscrição para %s'; +$lang['subscr_already_subscribed'] = '%s já está inscrito para s%'; +$lang['subscr_not_subscribed'] = 's% não está inscrito para s%'; +$lang['subscr_m_not_subscribed'] = 'Voce não está inscrito na pagina ou namespace corrent'; +$lang['subscr_m_new_header'] = 'Adicionar inscrição'; +$lang['subscr_m_current_header'] = 'Inscrições correntes'; +$lang['subscr_m_unsubscribe'] = 'cancelar inscrição'; +$lang['subscr_m_subscribe'] = 'Inscrição'; +$lang['subscr_m_receive'] = 'Receber'; +$lang['subscr_style_every'] = 'email em cada modificação'; +$lang['subscr_style_digest'] = 'digerir emails de mudanças para cada página (A cada %.2f dias)'; +$lang['subscr_style_list'] = 'Lista de mudanças desde o último email (A cada %.2f dias)'; $lang['authmodfailed'] = 'A configuração da autenticação de usuário está com problemas. Por favor, informe ao administrador do wiki.'; $lang['authtempfail'] = 'A autenticação de usuários está temporariamente desabilitada. Se essa situação persistir, por favor, informe ao administrador do Wiki.'; $lang['i_chooselang'] = 'Selecione o seu idioma'; @@ -222,6 +264,7 @@ $lang['i_pol0'] = 'Wiki aberto (leitura, escrita e envio de arqui $lang['i_pol1'] = 'Wiki público (leitura por todos, escrita e envio de arquivos por usuários registrados)'; $lang['i_pol2'] = 'Wiki fechado (leitura, escrita e envio de arquivos somente por usuários registrados)'; $lang['i_retry'] = 'Tentar novamente'; +$lang['i_license'] = 'Por favor escolha a licença que voce deseja utilizar para seu conteúdo:'; $lang['mu_intro'] = 'Aqui você pode enviar vários arquivos de uma só vez. Clique no botão de navegação e adicione-os à fila. Pressione Enviar quando estiver pronto.'; $lang['mu_gridname'] = 'Nome do arquivo'; $lang['mu_gridsize'] = 'Tamanho'; @@ -245,3 +288,4 @@ $lang['days'] = '%d dias atrás'; $lang['hours'] = '%d horas atrás'; $lang['minutes'] = '%d minutos atrás'; $lang['seconds'] = '%d segundos atrás'; +$lang['wordblock'] = 'Suas mudanças não foram salvas pois contem texto bloqueados (spam)'; diff --git a/inc/lang/pt-br/subscr_digest.txt b/inc/lang/pt-br/subscr_digest.txt new file mode 100644 index 000000000..6632b1f57 --- /dev/null +++ b/inc/lang/pt-br/subscr_digest.txt @@ -0,0 +1,17 @@ +Olá! + +A página @PAGE@ na wiki @TITLE@ mudou. +Estas foram as mudanças: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Revisão antiga:@OLDPAGE@ +Nova Revisão:@NEWPAGE@ + +Para cancelar a página de notificações, entre na wiki @DOKUWIKIURL@ +e então visite a página de @SUBSCRIBE@ e cancele a inscrição de edição da página ou namespace. +-- +Este e-mail foi gerado pelo DokuWiki em +@DOKUWIKIURL@ diff --git a/inc/lang/pt-br/subscr_form.txt b/inc/lang/pt-br/subscr_form.txt new file mode 100644 index 000000000..1611ea95d --- /dev/null +++ b/inc/lang/pt-br/subscr_form.txt @@ -0,0 +1,3 @@ +====== Gerenciamento de inscrição ====== + +Esta página permite voce gerencias as inscrições para a página e namespace corrente. diff --git a/inc/lang/pt-br/subscr_list.txt b/inc/lang/pt-br/subscr_list.txt new file mode 100644 index 000000000..8f4a66d1a --- /dev/null +++ b/inc/lang/pt-br/subscr_list.txt @@ -0,0 +1,17 @@ +Olá! + +Páginas no namespace @PAGE@ na wiki @TITLE@ mudaram. +Estas foram as mudanças: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Para cancelar a página de notificações, entre na wiki @DOKUWIKIURL@ +e então visite a página de @SUBSCRIBE@ e cancele a inscrição de edição da página ou namespace. +-- +Este e-mail foi gerado pelo DokuWiki em +@DOKUWIKIURL@ + + +preview.txt ====== Preview ====== diff --git a/inc/lang/pt-br/subscr_single.txt b/inc/lang/pt-br/subscr_single.txt new file mode 100644 index 000000000..1a103558c --- /dev/null +++ b/inc/lang/pt-br/subscr_single.txt @@ -0,0 +1,20 @@ +Olá! + +A página @PAGE@ na wiki @TITLE@ mudou. +Estas foram as mudanças: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Data : @DATE@ +Usuário : @USER@ +Sumário : @SUMMARY@ +Revisão antiga:@OLDPAGE@ +Nova Revisão:@NEWPAGE@ + +Para cancelar a página de notificações, entre na wiki @DOKUWIKIURL@ visite @NEWPAGE@ +e cancele a inscrição de edição da página ou namespace. +-- +Este e-mail foi gerado pelo DokuWiki em +@DOKUWIKIURL@ diff --git a/inc/lang/pt-br/wordblock.txt b/inc/lang/pt-br/wordblock.txt deleted file mode 100644 index c2c9cbdb0..000000000 --- a/inc/lang/pt-br/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== Bloqueio de SPAM ====== - -Suas modificações **não** foram salvas porque elas contém uma ou mais palavras bloqueadas. Se você tentou enviar //spam// para o //wiki//, isso é feio, muito feio! Agora, se você acha que esse bloqueio foi indevido, por favor entre em contato com o administrador desse wiki. - diff --git a/inc/lang/pt/lang.php b/inc/lang/pt/lang.php index ef4c70785..d0861f3ef 100644 --- a/inc/lang/pt/lang.php +++ b/inc/lang/pt/lang.php @@ -94,7 +94,7 @@ $lang['txt_overwrt'] = 'Escrever por cima do ficheiro já existente'; $lang['lockedby'] = 'Bloqueado por'; $lang['lockexpire'] = 'Expira em'; $lang['willexpire'] = 'O bloqueio de edição para este documento irá expirar num minuto.\nPara evitar conflitos de edição, clique no botão <Prever> para re-iniciar o temporizador de bloqueio.'; -$lang['notsavedyet'] = 'Existem alterações não gravadas, que serão perdidas se continuar.\nDeseja realmente continuar?'; +$lang['js']['notsavedyet'] = "Existem alterações não gravadas, que serão perdidas se continuar.\nDeseja realmente continuar?"; $lang['rssfailed'] = 'Ocorreu um erro neste canal RSS: '; $lang['nothingfound'] = 'Nada foi encontrado.'; $lang['mediaselect'] = 'Selecção de ficheiros'; diff --git a/inc/lang/pt/wordblock.txt b/inc/lang/pt/wordblock.txt deleted file mode 100644 index a88063c9b..000000000 --- a/inc/lang/pt/wordblock.txt +++ /dev/null @@ -1,7 +0,0 @@ -====== Bloquear SPAM ====== - -As suas alterações foram **bloqueadas**, porque contêm uma ou mais palavras consideradas abusivas (SPAM). - -Se pensa que isto não está correcto, por favor contacte o administrador deste site Wiki. - ----- diff --git a/inc/lang/ro/lang.php b/inc/lang/ro/lang.php index 87ee6ae0f..d21249d91 100644 --- a/inc/lang/ro/lang.php +++ b/inc/lang/ro/lang.php @@ -43,9 +43,6 @@ $lang['btn_back'] = 'Înapoi'; $lang['btn_backlink'] = 'Legătură anterioară'; $lang['btn_backtomedia'] = 'Înapoi la Selecţia Mediafile'; $lang['btn_subscribe'] = 'Subscrie Modificarea Paginii'; -$lang['btn_unsubscribe'] = 'Anulează Subscrierea Modificării Paginii'; -$lang['btn_subscribens'] = 'Subscrie Modificarea Spaţiului de Nume'; -$lang['btn_unsubscribens'] = 'Anulează Subscrierea Modificării Spaţiului de Nume'; $lang['btn_profile'] = 'Actualizează Profil'; $lang['btn_reset'] = 'Resetează'; $lang['btn_resendpwd'] = 'Trimite parola nouă'; @@ -99,7 +96,38 @@ $lang['txt_overwrt'] = 'Suprascrie fişierul existent'; $lang['lockedby'] = 'Momentan blocat de'; $lang['lockexpire'] = 'Blocarea expiră la'; $lang['willexpire'] = 'Blocarea pentru editarea paginii expiră intr-un minut.\nPentru a preveni conflictele foloseşte butonul de previzualizare pentru resetarea blocării.'; -$lang['notsavedyet'] = 'Există modificări nesalvate, care se vor pierde.\nDoreşti să continui?'; +$lang['js']['notsavedyet'] = 'Există modificări nesalvate, care se vor pierde. +Doreşti să continui?'; +$lang['js']['searchmedia'] = 'Caută fişiere'; +$lang['js']['keepopen'] = 'Menţine fereastra deschisă la selecţie'; +$lang['js']['hidedetails'] = 'Ascunde Detalii'; +$lang['js']['mediatitle'] = 'Setări link'; +$lang['js']['mediadisplay'] = 'Tip link'; +$lang['js']['mediaalign'] = 'Aliniere'; +$lang['js']['mediasize'] = 'Mărime imagine'; +$lang['js']['mediatarget'] = 'Ţintă link'; +$lang['js']['mediaclose'] = 'Închide'; +$lang['js']['mediainsert'] = 'Inserează'; +$lang['js']['mediadisplayimg'] = 'Afişează imaginea.'; +$lang['js']['mediadisplaylnk'] = 'Afişează doar linkul.'; +$lang['js']['mediasmall'] = 'Versiune mică'; +$lang['js']['mediamedium'] = 'Versiune medie'; +$lang['js']['medialarge'] = 'Versiune mare'; +$lang['js']['mediaoriginal'] = 'Versiune originală'; +$lang['js']['medialnk'] = 'Link către pagina detaliilor'; +$lang['js']['mediadirect'] = 'Link direct către original'; +$lang['js']['medianolnk'] = 'Fără link'; +$lang['js']['medianolink'] = 'Nu crea link către imagine'; +$lang['js']['medialeft'] = 'Aliniază imaginea la stânga.'; +$lang['js']['mediaright'] = 'Aliniază imaginea la dreapta.'; +$lang['js']['mediacenter'] = 'Aliniază imaginea la centru.'; +$lang['js']['medianoalign'] = 'Nu utiliza aliniere.'; +$lang['js']['nosmblinks'] = 'Legăturile către sharing-uri Windows funcţioneaza numai in Microsoft Internet Explorer. +Puteţi însă copia şi insera legătura.'; +$lang['js']['linkwiz'] = 'Asistent legătură'; +$lang['js']['linkto'] = 'Legătură la:'; +$lang['js']['del_confirm'] = 'Doriţi într-adevăr ştergerea elementelor selectate?'; +$lang['js']['mu_btn'] = 'Încarcă mai multe fişiere simultan'; $lang['rssfailed'] = 'A apărut o eroare in timpul descărcării acestui cîmp: '; $lang['nothingfound'] = 'Nu am găsit nimic.'; $lang['mediaselect'] = 'Selectare fişiere media'; @@ -117,15 +145,7 @@ $lang['deletefail'] = '"%s" nu a putut fi şters - verificaţi dreptu $lang['mediainuse'] = 'Fişierul "%s" nu a fost şters - este încă în uz.'; $lang['namespaces'] = 'Spaţii de nume'; $lang['mediafiles'] = 'Fişiere disponibile în'; -$lang['js']['searchmedia'] = 'Caută fişiere'; -$lang['js']['keepopen'] = 'Menţine fereastra deschisă la selecţie'; -$lang['js']['hidedetails'] = 'Ascunde Detalii'; -$lang['js']['nosmblinks'] = 'Legăturile către sharing-uri Windows funcţioneaza numai in Microsoft Internet Explorer. -Puteţi însă copia şi insera legătura.'; -$lang['js']['linkwiz'] = 'Asistent legătură'; -$lang['js']['linkto'] = 'Legătură la:'; -$lang['js']['del_confirm'] = 'Doriţi într-adevăr ştergerea elementelor selectate?'; -$lang['js']['mu_btn'] = 'Încarcă mai multe fişiere simultan'; +$lang['accessdenied'] = 'Nu vă este permis să vizualizaţi această pagină.'; $lang['mediausage'] = 'Folosiţi următoarea sintaxă pentru a face referinţă la acest fişier:'; $lang['mediaview'] = 'Vizualizează fişierul original'; $lang['mediaroot'] = 'root'; @@ -141,6 +161,7 @@ $lang['current'] = 'curent'; $lang['yours'] = 'Versiunea ta'; $lang['diff'] = 'arată diferenţele faţă de versiunea curentă'; $lang['diff2'] = 'Arată diferenţele dintre versiunile selectate'; +$lang['difflink'] = 'Link către această vizualizare comparativă'; $lang['line'] = 'Linia'; $lang['breadcrumb'] = 'Traseu'; $lang['youarehere'] = 'Sunteţi aici'; @@ -155,6 +176,7 @@ $lang['noflash'] = 'Plugin-ul <a href="http://www.adobe.com/produc $lang['download'] = 'Bloc descărcări'; $lang['mail_newpage'] = 'pagina adăugată:'; $lang['mail_changed'] = 'page schimbată:'; +$lang['mail_subscribe_list'] = 'pagini modificate în spaţiul de nume:'; $lang['mail_new_user'] = 'utilizator nou'; $lang['mail_upload'] = 'fişier încărcat:'; $lang['qb_bold'] = 'Text Îngroşat'; @@ -197,11 +219,22 @@ $lang['img_copyr'] = 'Copyright'; $lang['img_format'] = 'Format'; $lang['img_camera'] = 'Camera'; $lang['img_keywords'] = 'Cuvinte cheie'; -$lang['subscribe_success'] = 'A fost adăugat %s la lista de subscriere pentru %s'; -$lang['subscribe_error'] = 'Eroare la adăugarea %s la lista de subscriere pentru %s'; -$lang['subscribe_noaddress'] = 'Nu este nici o adresă de mail asociată cu utilizatorul dvs. Nu puteţi fi adăugat la lista de subscriere'; -$lang['unsubscribe_success'] = '%s a fost eliminat din lista de subscriere pentru %s'; -$lang['unsubscribe_error'] = 'Eroare la eliminarea %s din lista de subscriere pentru %s'; +$lang['subscr_subscribe_success'] = 'Adăugat %s la lista de abonare pentru %s'; +$lang['subscr_subscribe_error'] = 'Eroare la adăugarea %s la lista de abonare pentru %s'; +$lang['subscr_subscribe_noaddress'] = 'Nu există adresa asociată cu logarea dvs., nu puteţi fi adăugat la lista de abonare'; +$lang['subscr_unsubscribe_success'] = 'Şters %s din lista de abonare pentru %s'; +$lang['subscr_unsubscribe_error'] = 'Eroare la ştergerea %s din lista de abonare pentru %s'; +$lang['subscr_already_subscribed'] = '%s este deja abonat la %s'; +$lang['subscr_not_subscribed'] = '%s nu este abonat la %s'; +$lang['subscr_m_not_subscribed'] = 'Momentan nu sunteţi abonat la pagina curentă sau la numele de spaţiu.'; +$lang['subscr_m_new_header'] = 'Adaugă abonare'; +$lang['subscr_m_current_header'] = 'Abonări curente'; +$lang['subscr_m_unsubscribe'] = 'Dezabonaţi-vă'; +$lang['subscr_m_subscribe'] = 'Abonaţi-vă'; +$lang['subscr_m_receive'] = 'Primiţi'; +$lang['subscr_style_every'] = 'email la ficare schimbare'; +$lang['subscr_style_digest'] = 'digerează email la schimbări pentru fiecare pagină (la fiecare %.2f zile)'; +$lang['subscr_style_list'] = 'lista paginilor schimbate de la ultimul email (la fiecare %.2f zile)'; $lang['authmodfailed'] = 'Configuraţia autentificării utilizatorului este eronată. Anunţaţi Wiki Admin-ul.'; $lang['authtempfail'] = 'Autentificarea utilizatorului este temporar indisponibilă. Anunţaţi Wiki Admin-ul.'; $lang['i_chooselang'] = 'Alegeţi limba'; @@ -226,6 +259,7 @@ $lang['i_pol0'] = 'Wiki Deschisă (citeşte, scrie şi încarcă $lang['i_pol1'] = 'Wiki Deschisă (citeste oricine, scrie şi încarcă doar utilizatorul înregistrat)'; $lang['i_pol2'] = 'Wiki Închisă (citeşte, scrie şi încarcă doar utilizatorul înregistrat)'; $lang['i_retry'] = 'Încearcă din nou'; +$lang['i_license'] = 'Vă rugăm alegeţi licenţa sub care doriţi să vă licenţiaţi materialul:'; $lang['mu_intro'] = 'Aici poţi încărca mai multe fişiere simultan. Apasă butonul Răsfoieşte pentru a le adăuga. Apasă Încarcă când ai terminat.'; $lang['mu_gridname'] = 'Numele fişierului'; $lang['mu_gridsize'] = 'Mărime'; @@ -249,3 +283,4 @@ $lang['days'] = 'acum %d zile'; $lang['hours'] = 'acum %d ore'; $lang['minutes'] = 'acum %d minute'; $lang['seconds'] = 'acum %d secunde'; +$lang['wordblock'] = 'Modificarea dvs. nu au fost salvate deoarece conţine text blocat (spam).'; diff --git a/inc/lang/ro/subscr_digest.txt b/inc/lang/ro/subscr_digest.txt new file mode 100644 index 000000000..b2f7c4ecb --- /dev/null +++ b/inc/lang/ro/subscr_digest.txt @@ -0,0 +1,20 @@ +Buna ziua! + +Pagina @PAGE@ în @TITLE@ wiki s-a modificat. +Acestea sunt modificările: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Vechea revizie: @OLDPAGE@ +Noua revizie: @NEWPAGE@ + +Pentru a anula notificarea paginii, logaţi-vă pe wiki la +@DOKUWIKIURL@ apoi navigaţi la +@SUBSCRIBE@ +şi dezabonaţi-vă de la pagină şi/sau modificările numelui de spaţiu. + +-- +Acest mail a fost generat de DokuWiki la +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/ro/subscr_form.txt b/inc/lang/ro/subscr_form.txt new file mode 100644 index 000000000..8ce7f09b8 --- /dev/null +++ b/inc/lang/ro/subscr_form.txt @@ -0,0 +1,3 @@ +====== Administrarea abonărilor ====== + +Această pagină vă permite să vă administraţi abonările pentru pagina curentă şi numele de spaţiu.
\ No newline at end of file diff --git a/inc/lang/ro/subscr_list.txt b/inc/lang/ro/subscr_list.txt new file mode 100644 index 000000000..84a5e1a3e --- /dev/null +++ b/inc/lang/ro/subscr_list.txt @@ -0,0 +1,17 @@ +Bună ziua! + +Paginile din numele de spaţiu @PAGE@ al @TITLE@ wiki s-au modificat. +Acestea sunt modificările: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Pentru a anula notificarea paginii, logaţi-vă pe wiki la +@DOKUWIKIURL@ apoi navigaţi la +@SUBSCRIBE@ +şi dezabonaţi-vă de la pagină şi/sau modificările numelui de spaţiu. + +-- +Acest mail a fost generat de DokuWiki la +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/ro/subscr_single.txt b/inc/lang/ro/subscr_single.txt new file mode 100644 index 000000000..aa6497b75 --- /dev/null +++ b/inc/lang/ro/subscr_single.txt @@ -0,0 +1,23 @@ +Bună ziua! + +Pagina @PAGE@ în @TITLE@ wiki s-a modificat. +Acestea sunt modificările: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Data: @DATE@ +Utilizator: @USER@ +Sumarul editării: @SUMMARY@ +Vechea revizie: @OLDPAGE@ +Noua revizie: @NEWPAGE@ + +Pentru a anula notificarea paginii, logaţi-vă pe wiki la +@DOKUWIKIURL@ apoi navigaţi la +@SUBSCRIBE@ +şi dezabonaţi-vă de la pagină şi/sau modificările numelui de spaţiu. + +-- +Acest mail a fost generat de DokuWiki la +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/ro/wordblock.txt b/inc/lang/ro/wordblock.txt deleted file mode 100644 index 1fa7bd6cd..000000000 --- a/inc/lang/ro/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== SPAM blocat ====== - -Modificările **nu** au fost salvate deoarece conţin unul sau mai multe cuvinte nepermise. Daca ai încercat să spamezi Wiki-ul -- Eşti un om rău! Dacă crezi că asta e o eroare, contactează administratorul acestui Wiki. - diff --git a/inc/lang/ru/denied.txt b/inc/lang/ru/denied.txt index eee59efe6..2cc33cff7 100644 --- a/inc/lang/ru/denied.txt +++ b/inc/lang/ru/denied.txt @@ -1,3 +1,3 @@ -====== Доступ запрещен ====== +====== Доступ запрещён ====== -Извините, у вас не хватает прав для этого действия. Может быть, Вы забыли войти в вики под своим именем? +Извините, у вас не хватает прав для этого действия. Может быть, вы забыли войти в вики под своим логином? diff --git a/inc/lang/ru/edit.txt b/inc/lang/ru/edit.txt index 2237f082e..6398e8e83 100644 --- a/inc/lang/ru/edit.txt +++ b/inc/lang/ru/edit.txt @@ -1,2 +1,2 @@ -Отредактируйте страницу и нажмите ''Сохранить''. Прочтите [[wiki:syntax]] для ознакомления с синтаксисом вики. Пожалуйста, редактируйте только в том случае, если планируете **улучшить** содержимое. Если Вы просто хотите потестировать что-либо, воспользуйтесь специальной страницей: [[playground:playground]]. +Отредактируйте страницу и нажмите ''Сохранить''. Прочтите [[wiki:syntax]] для ознакомления с синтаксисом вики. Пожалуйста, редактируйте только в том случае, если планируете **улучшить** содержимое. Если вы просто хотите потестировать что-либо, воспользуйтесь специальной страницей: [[playground:playground]]. diff --git a/inc/lang/ru/index.txt b/inc/lang/ru/index.txt index 376d58947..fc42f87ff 100644 --- a/inc/lang/ru/index.txt +++ b/inc/lang/ru/index.txt @@ -1,4 +1,4 @@ ====== Содержание ====== -Перед Вами список доступных страниц, упорядоченный по пространствам имён ([[doku>namespaces|namespaces]]). +Перед вами список доступных страниц, упорядоченный по ([[doku>namespaces|пространствам имён]]). diff --git a/inc/lang/ru/lang.php b/inc/lang/ru/lang.php index f6cec8170..ebd2a10a1 100644 --- a/inc/lang/ru/lang.php +++ b/inc/lang/ru/lang.php @@ -15,6 +15,8 @@ * @author Alexander Sorkin <kibizoid@gmail.com> * @author Kirill Krasnov <krasnovforum@gmail.com> * @author Vlad Tsybenko <vlad.development@gmail.com> + * @author Aleksey Osadchiy <rfc@nm.ru> + * @author Aleksandr Selivanov <alexgearbox@gmail.com> */ $lang['encoding'] = ' utf-8'; $lang['direction'] = 'ltr'; @@ -35,7 +37,7 @@ $lang['btn_newer'] = '<< более новые'; $lang['btn_older'] = 'более старые >>'; $lang['btn_revs'] = 'История страницы'; $lang['btn_recent'] = 'Недавние изменения'; -$lang['btn_upload'] = 'Закачать'; +$lang['btn_upload'] = 'Загрузить'; $lang['btn_cancel'] = 'Отменить'; $lang['btn_index'] = 'Все страницы'; $lang['btn_secedit'] = 'Править'; @@ -48,12 +50,9 @@ $lang['btn_back'] = 'Назад'; $lang['btn_backlink'] = 'Ссылки сюда'; $lang['btn_backtomedia'] = 'Вернуться к выбору медиа-файла'; $lang['btn_subscribe'] = 'Подписаться (все правки)'; -$lang['btn_unsubscribe'] = 'Отписаться (все правки)'; -$lang['btn_subscribens'] = 'Подписаться (правки этого раздела)'; -$lang['btn_unsubscribens'] = 'Отписаться (правки этого раздела)'; $lang['btn_profile'] = 'Профиль'; $lang['btn_reset'] = 'Сброс'; -$lang['btn_resendpwd'] = 'Послать новый пароль'; +$lang['btn_resendpwd'] = 'Выслать новый пароль'; $lang['btn_draft'] = 'Править черновик'; $lang['btn_recover'] = 'Восстановить черновик'; $lang['btn_draftdel'] = 'Удалить черновик'; @@ -66,75 +65,98 @@ $lang['oldpass'] = 'Введите текущий пароль'; $lang['passchk'] = 'повторите'; $lang['remember'] = 'Запомнить меня'; $lang['fullname'] = 'Полное имя'; -$lang['email'] = 'E-Mail'; +$lang['email'] = 'Эл. адрес'; $lang['register'] = 'Зарегистрироваться'; $lang['profile'] = 'Профиль пользователя'; $lang['badlogin'] = 'Извините, неверное имя пользователя или пароль.'; $lang['minoredit'] = 'Небольшие изменения'; $lang['draftdate'] = 'Черновик сохранён'; -$lang['nosecedit'] = 'За это время страница была изменена, и информация о секции устарела. Загружена полная версия страницы.'; +$lang['nosecedit'] = 'За это время страница была изменена и информация о секции устарела. Загружена полная версия страницы.'; $lang['regmissing'] = 'Извините, вам следует заполнить все поля.'; $lang['reguexists'] = 'Извините, пользователь с таким логином уже существует.'; -$lang['regsuccess'] = 'Пользователь создан, пароль выслан на e-mail.'; +$lang['regsuccess'] = 'Пользователь создан, пароль выслан на адрес электронной почты.'; $lang['regsuccess2'] = 'Пользователь создан.'; -$lang['regmailfail'] = 'Похоже, проблема с посылкой пароля по почте. Пожалуйста, сообщите администратору!'; -$lang['regbadmail'] = 'Данный Вами адрес e-mail выглядит неправильным. Если вы считаете это ошибкой, сообщите админу.'; +$lang['regmailfail'] = 'Похоже, проблема с отправкой пароля по почте. Пожалуйста, сообщите администратору.'; +$lang['regbadmail'] = 'Данный вами адрес электронной почты выглядит неправильным. Если вы считаете это ошибкой, сообщите админу.'; $lang['regbadpass'] = 'Два введённых пароля не идентичны. Пожалуйста, попробуйте ещё раз.'; $lang['regpwmail'] = 'Ваш пароль для системы DokuWiki'; -$lang['reghere'] = 'У вас ещё нет аккаунта? Извольте получить'; +$lang['reghere'] = 'У вас ещё нет аккаунта? Зарегистрируйтесь'; $lang['profna'] = 'Данная вики не поддерживает изменение профиля'; $lang['profnochange'] = 'Изменений не было внесено, профиль не обновлён.'; -$lang['profnoempty'] = 'Логин и адрес e-mail не могут быть пустыми.'; +$lang['profnoempty'] = 'Логин и адрес электронной почты не могут быть пустыми.'; $lang['profchanged'] = 'Профиль пользователя успешно обновлён.'; $lang['pwdforget'] = 'Забыли пароль? Получите новый'; $lang['resendna'] = 'Данная вики не поддерживает повторную отправку пароля.'; $lang['resendpwd'] = 'Выслать пароль для'; $lang['resendpwdmissing'] = 'Вы должны заполнить все поля формы.'; $lang['resendpwdnouser'] = 'Пользователь с таким логином не обнаружен в нашей базе данных.'; -$lang['resendpwdbadauth'] = 'Извините, неверный код авторизации. Убедитесь, что Вы полностью скопировали ссылку. '; -$lang['resendpwdconfirm'] = 'Ссылка для подтверждения пароля была выслана по e-mail. '; -$lang['resendpwdsuccess'] = 'Ваш новый пароль был выслан по e-mail.'; +$lang['resendpwdbadauth'] = 'Извините, неверный код авторизации. Убедитесь, что вы полностью скопировали ссылку. '; +$lang['resendpwdconfirm'] = 'Ссылка для подтверждения пароля была выслана по электронной почте. '; +$lang['resendpwdsuccess'] = 'Ваш новый пароль был выслан по электронной почте.'; $lang['license'] = 'За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:'; -$lang['licenseok'] = 'Примечание: редактируя эту страницу, Вы соглашаетесь на использование вашего вклада на условиях следующей лицензии:'; +$lang['licenseok'] = 'Примечание: редактируя эту страницу, вы соглашаетесь на использование вашего вклада на условиях следующей лицензии:'; $lang['searchmedia'] = 'Поиск по имени файла:'; $lang['searchmedia_in'] = 'Поиск в %s'; -$lang['txt_upload'] = 'Выберите файл для закачки'; +$lang['txt_upload'] = 'Выберите файл для загрузки'; $lang['txt_filename'] = 'Введите имя файла в вики (необязательно)'; $lang['txt_overwrt'] = 'Перезаписать существующий файл'; $lang['lockedby'] = 'В данный момент заблокирован'; $lang['lockexpire'] = 'Блокировка истекает в'; $lang['willexpire'] = 'Ваша блокировка редактирования этой страницы истекает в течение минуты.\nЧтобы избежать конфликтов и сбросить таймер блокировки, нажмите кнопку просмотра.'; -$lang['notsavedyet'] = 'Несохранённые изменения будут потеряны.\nВы действительно хотите продолжить?'; +$lang['js']['notsavedyet'] = 'Несохранённые изменения будут потеряны. +Вы действительно хотите продолжить?'; +$lang['js']['searchmedia'] = 'Поиск файлов'; +$lang['js']['keepopen'] = 'Не закрывать окно после выбора'; +$lang['js']['hidedetails'] = 'Скрыть детали'; +$lang['js']['mediatitle'] = 'Настройки ссылок'; +$lang['js']['mediadisplay'] = 'Тип ссылки'; +$lang['js']['mediaalign'] = 'Выравнивание'; +$lang['js']['mediasize'] = 'Размер изображения'; +$lang['js']['mediatarget'] = 'target ссылки'; +$lang['js']['mediaclose'] = 'Закрыть'; +$lang['js']['mediainsert'] = 'Вставить'; +$lang['js']['mediadisplayimg'] = 'Показывать изображение.'; +$lang['js']['mediadisplaylnk'] = 'Показывать только ссылку.'; +$lang['js']['mediasmall'] = 'Малая версия'; +$lang['js']['mediamedium'] = 'Средняя версия'; +$lang['js']['medialarge'] = 'Крупная версия'; +$lang['js']['mediaoriginal'] = 'Исходная версия'; +$lang['js']['medialnk'] = 'Ссылка на подробности'; +$lang['js']['mediadirect'] = 'Прямая ссылка на оригинал'; +$lang['js']['medianolnk'] = 'Без ссылки'; +$lang['js']['medianolink'] = 'Не давать ссылку на изображение'; +$lang['js']['medialeft'] = 'Выровнять изображение по левому краю.'; +$lang['js']['mediaright'] = 'Выровнять изображение по правому краю.'; +$lang['js']['mediacenter'] = 'Выровнять изображение по центру.'; +$lang['js']['medianoalign'] = 'Не выравнивать.'; +$lang['js']['nosmblinks'] = 'Ссылка на сетевые каталоги Windows работает только из Интернет Эксплорера +Но вы можете скопировать ссылку.'; +$lang['js']['linkwiz'] = 'Мастер ссылок'; +$lang['js']['linkto'] = 'Ссылка на:'; +$lang['js']['del_confirm'] = 'Вы на самом деле желаете удалить выбранное?'; +$lang['js']['mu_btn'] = 'Загрузить несколько файлов одновременно'; $lang['rssfailed'] = 'Произошла ошибка при получении следующей новостной ленты: '; $lang['nothingfound'] = 'Ничего не найдено.'; $lang['mediaselect'] = 'Выбор медиа-файла'; -$lang['fileupload'] = 'Закачка медиа-файла'; -$lang['uploadsucc'] = 'Закачка произведена успешно'; -$lang['uploadfail'] = 'Закачка не удалась. Возможно, проблемы с правами доступа?'; -$lang['uploadwrong'] = 'В закачке отказано. Файлы с таким расширением запрещены. '; +$lang['fileupload'] = 'Загрузка медиа-файла'; +$lang['uploadsucc'] = 'Загрузка произведена успешно'; +$lang['uploadfail'] = 'Загрузка не удалась. Возможно, проблемы с правами доступа?'; +$lang['uploadwrong'] = 'В загрузке отказано. Файлы с таким расширением запрещены. '; $lang['uploadexist'] = 'Файл с таким именем существует. Загрузка не произведена.'; $lang['uploadbadcontent'] = 'Содержание файла не соответствует расширению %s.'; -$lang['uploadspam'] = 'Закачка заблокирована спам-фильтром.'; -$lang['uploadxss'] = 'Закачка заблокирована по соображениям безопасности.'; +$lang['uploadspam'] = 'Загрузка заблокирована спам-фильтром.'; +$lang['uploadxss'] = 'Загрузка заблокирована по соображениям безопасности.'; $lang['uploadsize'] = 'Загруженный файл был слишком большой. (макс. %s)'; $lang['deletesucc'] = 'Файл "%s" был удалён.'; $lang['deletefail'] = 'Невозможно удалить файл "%s". Проверьте права доступа к файлу.'; $lang['mediainuse'] = 'Файл "%s" не был удалён - файл всё ещё используется.'; $lang['namespaces'] = 'Пространства имён'; $lang['mediafiles'] = 'Доступные файлы'; -$lang['js']['searchmedia'] = 'Поиск файлов'; -$lang['js']['keepopen'] = 'Не закрывать окно после выбора'; -$lang['js']['hidedetails'] = 'Скрыть детали'; -$lang['js']['nosmblinks'] = 'Ссылка на сетевые каталоги Windows работает только из Интернет Эксплорера -Но Вы можете скопировать ссылку.'; -$lang['js']['linkwiz'] = 'Мастер ссылок'; -$lang['js']['linkto'] = 'Ссылка на:'; -$lang['js']['del_confirm'] = 'Вы на самом деле желаете удалить выбранное?'; -$lang['js']['mu_btn'] = 'Загрузить несколько файлов одновременно'; +$lang['accessdenied'] = 'Вы не можете просмотреть эту страницу.'; $lang['mediausage'] = 'Для ссылки на этот файл используйте следующий синтаксис:'; $lang['mediaview'] = 'Посмотреть исходный файл'; $lang['mediaroot'] = 'корень'; -$lang['mediaupload'] = 'Здесь можно загрузить файл в текущий каталог ("пространство имен"). Чтобы создать подкаталоги, добавьте их к началу имени файла ("Загрузить как"). Имена подкаталогов разделяются двоеточиями. '; +$lang['mediaupload'] = 'Здесь можно загрузить файл в текущий каталог («пространство имен»). Чтобы создать подкаталоги, добавьте их к началу имени файла («Загрузить как»). Имена подкаталогов разделяются двоеточиями. '; $lang['mediaextchange'] = 'Расширение изменилось: с .%s на .%s!'; $lang['reference'] = 'Ссылки для'; $lang['ref_inuse'] = 'Этот файл не может быть удалён, так как он используется следующими страницами:'; @@ -146,11 +168,12 @@ $lang['current'] = 'текущий'; $lang['yours'] = 'Ваша версия'; $lang['diff'] = 'показать отличия от текущей версии'; $lang['diff2'] = 'Показать различия между ревизиями '; +$lang['difflink'] = 'Ссылка на это сравнение'; $lang['line'] = 'Строка'; $lang['breadcrumb'] = 'Вы посетили'; $lang['youarehere'] = 'Вы находитесь здесь'; $lang['lastmod'] = 'Последние изменения'; -$lang['by'] = ' От'; +$lang['by'] = ' от'; $lang['deleted'] = 'удалено'; $lang['created'] = 'создано'; $lang['restored'] = 'старая ревизия восстановлена'; @@ -160,13 +183,14 @@ $lang['noflash'] = 'Для просмотра этого соде $lang['download'] = 'Скачать код'; $lang['mail_newpage'] = 'страница добавлена:'; $lang['mail_changed'] = 'страница изменена:'; +$lang['mail_subscribe_list'] = 'изменились страницы в пространстве имен:'; $lang['mail_new_user'] = 'новый пользователь:'; $lang['mail_upload'] = 'файл закачан:'; -$lang['qb_bold'] = 'Полужирный шрифт'; -$lang['qb_italic'] = 'Курсивный шрифт'; -$lang['qb_underl'] = 'Подчеркивание'; +$lang['qb_bold'] = 'Полужирный'; +$lang['qb_italic'] = 'Курсив'; +$lang['qb_underl'] = 'Подчёркнутый'; $lang['qb_code'] = 'Текст кода'; -$lang['qb_strike'] = 'Зачёркнутый шрифт'; +$lang['qb_strike'] = 'Зачёркнутый'; $lang['qb_h1'] = 'Заголовок уровня 1'; $lang['qb_h2'] = 'Заголовок уровня 2'; $lang['qb_h3'] = 'Заголовок уровня 3'; @@ -182,7 +206,7 @@ $lang['qb_extlink'] = 'Внешняя ссылка'; $lang['qb_hr'] = 'Разделитель'; $lang['qb_ol'] = 'Элемент нумерованного списка'; $lang['qb_ul'] = 'Элемент ненумерованного списка'; -$lang['qb_media'] = 'Добавить картинки и другие файлы'; +$lang['qb_media'] = 'Добавить изображения или другие файлы'; $lang['qb_sig'] = 'Вставить подпись'; $lang['qb_smileys'] = 'Смайлики'; $lang['qb_chars'] = 'Специальные символы'; @@ -202,38 +226,50 @@ $lang['img_copyr'] = 'Авторские права'; $lang['img_format'] = 'Формат'; $lang['img_camera'] = 'Модель'; $lang['img_keywords'] = 'Ключевые слова'; -$lang['subscribe_success'] = '%s добавлен(а) в список рассылки для страницы %s'; -$lang['subscribe_error'] = 'Ошибка добавления пользователя %s в список рассылки для страницы %s'; -$lang['subscribe_noaddress'] = 'В вашем профиле не указан адрес электронной почты. Ввиду этого вы не можете подписываться на рассылки.'; -$lang['unsubscribe_success'] = '%s удален(а) из списка рассылки для страницы %s'; -$lang['unsubscribe_error'] = 'Ошибка удаления %s из списка рассылки для страницы %s'; +$lang['subscr_subscribe_success'] = 'Добавлен %s в подписку на %s'; +$lang['subscr_subscribe_error'] = 'Невозможно добавить %s в подписку на %s'; +$lang['subscr_subscribe_noaddress'] = 'Нет адреса электронной почты, сопоставленного с вашей учётной записью. Вы не можете подписаться на рассылку'; +$lang['subscr_unsubscribe_success'] = 'Удален %s из подписки на %s'; +$lang['subscr_unsubscribe_error'] = 'Ошибка удаления %s из подписки на %s'; +$lang['subscr_already_subscribed'] = '%s уже подписан на %s'; +$lang['subscr_not_subscribed'] = '%s не подписан на %s'; +$lang['subscr_m_not_subscribed'] = 'Вы не подписаны на текущую страницу или пространство имен.'; +$lang['subscr_m_new_header'] = 'Добавить подписку'; +$lang['subscr_m_current_header'] = 'Текущие подписки'; +$lang['subscr_m_unsubscribe'] = 'Отменить подписку'; +$lang['subscr_m_subscribe'] = 'Подписаться'; +$lang['subscr_m_receive'] = 'Получить'; +$lang['subscr_style_every'] = 'уведомлять о каждом изменении'; +$lang['subscr_style_digest'] = 'сводка изменений по каждой странице'; +$lang['subscr_style_list'] = 'перечислять изменившиеся страницы с прошлого уведомления'; $lang['authmodfailed'] = 'Неправильная конфигурация аутентификации пользователя. Пожалуйста, сообщите об этом вашему администратору вики.'; $lang['authtempfail'] = 'Аутентификация пользователей временно недоступна. Если проблема продолжается какое-то время, пожалуйста, сообщите об этом вашему администратору вики.'; -$lang['i_chooselang'] = 'Выберите Ваш язык/Language'; +$lang['i_chooselang'] = 'Выберите свой язык/Choose your language'; $lang['i_installer'] = 'Установка DokuWiki'; $lang['i_wikiname'] = 'Название вики'; $lang['i_enableacl'] = 'Разрешить ограничение прав доступа (рекомендуется)'; -$lang['i_superuser'] = 'Суперюзер'; +$lang['i_superuser'] = 'Суперпользователь'; $lang['i_problems'] = 'Программа установки столкнулась с проблемами, перечисленными ниже. Чтобы продолжить, вам необходимо их устранить. '; $lang['i_modified'] = 'Из соображений безопасности эта программа запускается только на новой, неизменённой установке DokuWiki. - Вам нужно либо заново распаковать скачанный пакет установки, либо обратиться к полной - <a href="http://dokuwiki.org/install">инструкции по установке DokuWiki</a>'; -$lang['i_funcna'] = 'Функция PHP <code>%s</code> недоступна. Может быть, она по какой-то причине заблокирована Вашим хостингом?'; +Вам нужно либо заново распаковать скачанный пакет установки, либо обратиться к полной +<a href="http://dokuwiki.org/install">инструкции по установке DokuWiki</a>'; +$lang['i_funcna'] = 'Функция PHP <code>%s</code> недоступна. Может быть, она по какой-то причине заблокирована вашим хостером?'; $lang['i_phpver'] = 'Ваша версия PHP (<code>%s</code>) ниже требуемой (<code>%s</code>). Вам необходимо обновить установленную версию PHP.'; $lang['i_permfail'] = '<code>%s</code> недоступна для записи DokuWiki. Вам необходимо исправить системные права доступа для этой директории!'; $lang['i_confexists'] = '<code>%s</code> уже существует'; $lang['i_writeerr'] = 'Не удалось создать <code>%s</code>. Вам необходимо проверить системные права доступа к файлу/директориям и создать файл вручную. '; $lang['i_badhash'] = 'dokuwiki.php не распознана или изменена (хэш=<code>%s</code>)'; -$lang['i_badval'] = '<code>%s</code> - недопустимое или пустое значение'; +$lang['i_badval'] = '<code>%s</code> — недопустимое или пустое значение'; $lang['i_success'] = 'Конфигурация прошла успешно. Теперь вы можете удалить файл install.php. Переходите к <a href="doku.php">вашей новой DokuWiki</a>.'; -$lang['i_failure'] = 'При записи в файлы конфигурации были обнаружены ошибки. Возможно, вам придется исправить их вручную, прежде чем вы сможете использовать <a href="doku.php">Вашу новую DokuWiki</a>.'; +$lang['i_failure'] = 'При записи в файлы конфигурации были обнаружены ошибки. Возможно, вам придется исправить их вручную, прежде чем вы сможете использовать <a href="doku.php">вашу новую DokuWiki</a>.'; $lang['i_policy'] = 'Исходная политика прав доступа'; $lang['i_pol0'] = 'Открытая вики (чтение, запись, закачка файлов для всех)'; $lang['i_pol1'] = 'Общедоступная вики (чтение для всех, запись и загрузка файлов для зарегистрированных пользователей)'; $lang['i_pol2'] = 'Закрытая вики (чтение, запись и загрузка файлов только для зарегистрированных пользователей)'; $lang['i_retry'] = 'Повторить попытку'; -$lang['mu_intro'] = 'Здесь Вы можете загрузить несколько файлов сразу. Кликните на "обзор", чтобы добавить их в список. Нажмите "загрузить" когда будете готовы.'; +$lang['i_license'] = 'Пожалуйста, выберите тип лицензии для вашей вики:'; +$lang['mu_intro'] = 'Здесь вы можете загрузить несколько файлов сразу. Кликните на «обзор», чтобы добавить их в список. Нажмите «загрузить» когда будете готовы.'; $lang['mu_gridname'] = 'Имя файла'; $lang['mu_gridsize'] = 'Размер'; $lang['mu_gridstat'] = 'Статус'; @@ -256,3 +292,4 @@ $lang['days'] = '%d дней назад'; $lang['hours'] = '%d час(ов) назад'; $lang['minutes'] = '%d минут назад'; $lang['seconds'] = '%d секунд назад'; +$lang['wordblock'] = 'Ваши изменения не сохранены, поскольку они содержат блокируемые слова (спам).'; diff --git a/inc/lang/ru/login.txt b/inc/lang/ru/login.txt index 967131874..22d4dafcc 100644 --- a/inc/lang/ru/login.txt +++ b/inc/lang/ru/login.txt @@ -1,4 +1,4 @@ ====== Авторизация ====== -В данный момент Вы не в системе. Авторизируйтесь при помощи следующей формы. //Замечание:// для работы у вас должны быть включены cookies. +В данный момент вы не в системе. Авторизируйтесь при помощи следующей формы. //Замечание:// для работы у вас должны быть включены cookies. diff --git a/inc/lang/ru/mailtext.txt b/inc/lang/ru/mailtext.txt index 596fd8275..f7b9d4462 100644 --- a/inc/lang/ru/mailtext.txt +++ b/inc/lang/ru/mailtext.txt @@ -1,13 +1,13 @@ -В вашей DokuWiki была добавлена или изменена страница. Подробности: +В вашей вики была добавлена или изменена страница. Подробности: Дата : @DATE@ Браузер : @BROWSER@ IP-адрес : @IPADDRESS@ Хост : @HOSTNAME@ -Старая версия : @OLDPAGE@ -Новая версия : @NEWPAGE@ +Старая версия : @OLDPAGE@ +Новая версия : @NEWPAGE@ Сводка изменений : @SUMMARY@ -Пользователь : @USER@ +Пользователь : @USER@ @DIFF@ diff --git a/inc/lang/ru/newpage.txt b/inc/lang/ru/newpage.txt index 042941310..ea8e35bf5 100644 --- a/inc/lang/ru/newpage.txt +++ b/inc/lang/ru/newpage.txt @@ -1,3 +1,3 @@ ====== Эта страница ещё не существует ====== -Вы перешли по ссылке на тему, для которой ещё не создана страница. Если позволяют Ваши права доступа, Вы можете создать её, нажав на кнопку "Создать страницу". +Вы перешли по ссылке на тему, для которой ещё не создана страница. Если позволяют ваши права доступа, вы можете создать её, нажав на кнопку «Создать страницу». diff --git a/inc/lang/ru/preview.txt b/inc/lang/ru/preview.txt index a3f37843d..2bc383eb2 100644 --- a/inc/lang/ru/preview.txt +++ b/inc/lang/ru/preview.txt @@ -1,4 +1,4 @@ ====== Просмотр ====== -Здесь показано, как Ваш текст будет выглядеть. Внимание: текст ещё **не сохранён!** +Здесь показано, как ваш текст будет выглядеть. Внимание: текст ещё **не сохранён!** diff --git a/inc/lang/ru/pwconfirm.txt b/inc/lang/ru/pwconfirm.txt index 89c84791e..ecf416210 100644 --- a/inc/lang/ru/pwconfirm.txt +++ b/inc/lang/ru/pwconfirm.txt @@ -2,9 +2,9 @@ Кто-то запросил новый пароль для входа в @TITLE@ по адресу @DOKUWIKIURL@ -Если Вы не запрашивали новый пароль, просто проигнорируйте этот e-mail. +Если вы не запрашивали новый пароль, просто проигнорируйте это письмо. -Для подтверждения, что запрос был действительно сделан Вами, пожалуйста, перейдите по следующей ссылке. +Для подтверждения, что запрос был действительно сделан вами, пожалуйста, перейдите по следующей ссылке. @CONFIRM@ diff --git a/inc/lang/ru/read.txt b/inc/lang/ru/read.txt index ed2754ac7..fd52d1a52 100644 --- a/inc/lang/ru/read.txt +++ b/inc/lang/ru/read.txt @@ -1,2 +1,2 @@ -Эта страница — только для чтения. Вы можете посмотреть исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. +Эта страница только для чтения. Вы можете посмотреть исходный текст, но не можете его изменить. Сообщите администратору, если считаете, что это неправильно. diff --git a/inc/lang/ru/register.txt b/inc/lang/ru/register.txt index 23ed33656..2d5d9878e 100644 --- a/inc/lang/ru/register.txt +++ b/inc/lang/ru/register.txt @@ -1,3 +1,3 @@ ====== Регистрация нового пользователя ====== -Для регистрации в вики заполните все поля ниже. Обратите внимание на **правильность адреса е-мэйл** - туда будет выслан пароль в том случае, если Вас не просят самостоятельно ввести его здесь. Логин должен удовлетворять ограничениям для [[doku>pagename|идентификатора страницы]]. +Для регистрации в вики заполните все поля ниже. Обратите внимание на **правильность адреса электронной почты** — туда будет выслан пароль в том случае, если вас не просят самостоятельно ввести его здесь. Логин должен удовлетворять ограничениям для [[doku>pagename|идентификатора страницы]]. diff --git a/inc/lang/ru/registermail.txt b/inc/lang/ru/registermail.txt index 615cff543..496db229e 100644 --- a/inc/lang/ru/registermail.txt +++ b/inc/lang/ru/registermail.txt @@ -2,7 +2,7 @@ Логин : @NEWUSER@ Полное имя : @NEWNAME@ -E-mail : @NEWEMAIL@ +Эл. адрес : @NEWEMAIL@ Дата : @DATE@ Браузер : @BROWSER@ diff --git a/inc/lang/ru/resendpwd.txt b/inc/lang/ru/resendpwd.txt index 9bcd98dea..3cd05049a 100644 --- a/inc/lang/ru/resendpwd.txt +++ b/inc/lang/ru/resendpwd.txt @@ -1,3 +1,3 @@ -====== Послать новый пароль ====== +====== Выслать новый пароль ====== -Для получения нового пароля введите требуемые данные ниже. Ваш новый пароль будет послан по адресу е-мэйл, зарегистрированному на Ваше имя. Указанное ниже имя должно быть Вашим логином в этой вики. +Для получения нового пароля введите требуемые данные ниже. Ваш новый пароль будет послан по адресу электронной почты, зарегистрированному на ваше имя. Указанное ниже имя должно быть вашим логином в этой вики. diff --git a/inc/lang/ru/revisions.txt b/inc/lang/ru/revisions.txt index 4341969a3..06022323f 100644 --- a/inc/lang/ru/revisions.txt +++ b/inc/lang/ru/revisions.txt @@ -1,3 +1,3 @@ ====== История страницы ====== -Перед Вами — история правок текущего документа. Чтобы вернуться к одной из предыдущих версий, выберите нужную, нажмите ''Править страницу'' и сохраните. +Перед вами — история правок текущего документа. Чтобы вернуться к одной из предыдущих версий, выберите нужную, нажмите ''Править страницу'' и сохраните. diff --git a/inc/lang/ru/searchpage.txt b/inc/lang/ru/searchpage.txt index 33cac358a..608220495 100644 --- a/inc/lang/ru/searchpage.txt +++ b/inc/lang/ru/searchpage.txt @@ -1,5 +1,5 @@ ====== Поиск ====== -Перед Вами — результаты поиска. Если Вы не нашли то, что искали, Вы можете создать новую страницу с именем, совпадающим с запросом. Чтобы сделать это, просто нажмите на кнопку ''Создать страницу''. +Перед вами результаты поиска. Если вы не нашли то, что искали, вы можете создать новую страницу с именем, совпадающим с запросом. Чтобы сделать это, просто нажмите на кнопку ''Создать страницу''. ===== Результаты =====
\ No newline at end of file diff --git a/inc/lang/ru/showrev.txt b/inc/lang/ru/showrev.txt index acb814e17..b3f3852eb 100644 --- a/inc/lang/ru/showrev.txt +++ b/inc/lang/ru/showrev.txt @@ -1,2 +1,2 @@ -**Это — старая версия документа!** +**Это старая версия документа!** ---- diff --git a/inc/lang/ru/subscr_digest.txt b/inc/lang/ru/subscr_digest.txt new file mode 100644 index 000000000..0e1ce5dce --- /dev/null +++ b/inc/lang/ru/subscr_digest.txt @@ -0,0 +1,20 @@ +Привет! + +Страница @PAGE@ в вики @TITLE@ изменилась. +Список изменений: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Старая версия: @OLDPAGE@ +Новая версия: @NEWPAGE@ + +Чтобы отписаться от уведомлений об изменениях, войдите в вики +@DOKUWIKIURL@ в раздел +@SUBSCRIBE@ +и отмените подписку на страницу и/или пространство имен. + +-- +Это письмо создано DokuWiki с сайта +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/ru/subscr_form.txt b/inc/lang/ru/subscr_form.txt new file mode 100644 index 000000000..67643cdb8 --- /dev/null +++ b/inc/lang/ru/subscr_form.txt @@ -0,0 +1,3 @@ +====== Управление подписками ====== + +Здесь вы можете управлять подписками для текущей страницы и пространства имен.
\ No newline at end of file diff --git a/inc/lang/ru/subscr_list.txt b/inc/lang/ru/subscr_list.txt new file mode 100644 index 000000000..b543f8da9 --- /dev/null +++ b/inc/lang/ru/subscr_list.txt @@ -0,0 +1,17 @@ +Привет! + +Страницы в пространстве имен @PAGE@ в вики @TITLE@ были изменены. +Список изменившихся страниц: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Чтобы отписаться от уведомлений об изменениях, войдите в вики +@DOKUWIKIURL@ в раздел +@SUBSCRIBE@ +и отмените подписку на страницу и/или пространство имен. + +-- +Это письмо создано DokuWiki с сайта +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/ru/subscr_single.txt b/inc/lang/ru/subscr_single.txt new file mode 100644 index 000000000..22277f0c8 --- /dev/null +++ b/inc/lang/ru/subscr_single.txt @@ -0,0 +1,23 @@ +Привет! + +Страница @PAGE@ в вики @TITLE@ изменилась. +Список изменений: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Дата : @DATE@ +Автор : @USER@ +Примечание: @SUMMARY@ +Старая версия: @OLDPAGE@ +Новая версия: @NEWPAGE@ + +Чтобы отписаться от уведомлений об изменениях, войдите в вики +@DOKUWIKIURL@ в раздел +@SUBSCRIBE@ +и отмените подписку на страницу и/или пространство имен. + +-- +Это письмо создано DokuWiki с сайта +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/ru/updateprofile.txt b/inc/lang/ru/updateprofile.txt index 136184467..b1f9f56ef 100644 --- a/inc/lang/ru/updateprofile.txt +++ b/inc/lang/ru/updateprofile.txt @@ -1,5 +1,5 @@ ====== Обновить профиль ====== -Необходимо заполнить только те поля, которые Вы хотите изменить. Имя пользователя не может быть изменено. +Необходимо заполнить только те поля, которые вы хотите изменить. Имя пользователя не может быть изменено. diff --git a/inc/lang/ru/uploadmail.txt b/inc/lang/ru/uploadmail.txt index 07dbf186d..4dd43e603 100644 --- a/inc/lang/ru/uploadmail.txt +++ b/inc/lang/ru/uploadmail.txt @@ -1,4 +1,4 @@ -В вашу DokuWiki был закачан файл. Подробная информация: +В вашу вики был закачан файл. Подробная информация: Файл : @MEDIA@ Дата : @DATE@ diff --git a/inc/lang/sk/admin.txt b/inc/lang/sk/admin.txt index 039da2ae2..510eeb9c8 100644 --- a/inc/lang/sk/admin.txt +++ b/inc/lang/sk/admin.txt @@ -1,5 +1,5 @@ ====== Administrácia ====== -Nižšie môžte nájsť zoznam administratívnych úloch, ktoré môžte vykonávať v DokuWiki. +Nižšie môžete nájsť zoznam administratívnych úloh dostupných v DokuWiki. diff --git a/inc/lang/sk/adminplugins.txt b/inc/lang/sk/adminplugins.txt new file mode 100644 index 000000000..64d2ca774 --- /dev/null +++ b/inc/lang/sk/adminplugins.txt @@ -0,0 +1 @@ +===== Ďalšie pluginy =====
\ No newline at end of file diff --git a/inc/lang/sk/conflict.txt b/inc/lang/sk/conflict.txt index d3cd0f590..5dab2dbe1 100644 --- a/inc/lang/sk/conflict.txt +++ b/inc/lang/sk/conflict.txt @@ -1,5 +1,5 @@ ====== Existuje novšia verzia ====== -Existuje novšia verzia práve upravovaného dokumentu. To se stáva, keď niekto iný zmenil dokument, ktorý práve upravujete. +Existuje novšia verzia práve upravovaného dokumentu. To sa stáva, keď niekto iný zmenil dokument, ktorý práve upravujete. Prehliadnite si nižšie uvedené rozdiely, prípadne rozdiely z obidvoch verzií ručne spojte dohromady a rozhodnite sa, ktorú verziu uchovať. Ak zvolíte ''Uložiť', bude uložená vaša verzia. V opačnom prípade stlačte ''Storno'' pre uchovanie pôvodnej verzie. diff --git a/inc/lang/sk/denied.txt b/inc/lang/sk/denied.txt index 6f673c7d6..6e9c98496 100644 --- a/inc/lang/sk/denied.txt +++ b/inc/lang/sk/denied.txt @@ -1,3 +1,3 @@ ====== Nepovolená akcia ====== -Prepáčte, ale nemáte dostatočné oprávnenie k tejto činnosti. Možno ste se zabudli prihlásiť? +Prepáčte, ale nemáte dostatočné oprávnenie k tejto činnosti. Možno ste sa zabudli prihlásiť? diff --git a/inc/lang/sk/diff.txt b/inc/lang/sk/diff.txt index 0e29e7f7b..0548ea5d6 100644 --- a/inc/lang/sk/diff.txt +++ b/inc/lang/sk/diff.txt @@ -1,4 +1,4 @@ ====== Rozdiely ====== -Tu môžete vidieť rozdiely medzi vybranou verziou a aktuálnou verzou danej stránky. +Tu môžete vidieť rozdiely medzi vybranou verziou a aktuálnou verziou danej stránky. diff --git a/inc/lang/sk/draft.txt b/inc/lang/sk/draft.txt index 7e6776deb..96a4e91b2 100644 --- a/inc/lang/sk/draft.txt +++ b/inc/lang/sk/draft.txt @@ -2,5 +2,5 @@ Vaša posledná editácia tejto stránky nebola ukončená korektne. Dokuwiki automaticky uložila počas vašej práce koncept a ten môžete teraz použiť pre pokračovanie editácie. Nižšie môžete vidieť dáta, ktoré boli uložené. -Prosím, rozhodnite sa, či chcete //obnoviť// vašu poslednú editáciu, //zmazať// automaticky uložený koncept, alebo //stornovať// proces editácie. +Prosím, rozhodnite sa, či chcete //obnoviť// vašu poslednú editáciu, //zmazať// automaticky uložený koncept alebo //stornovať// proces editácie. diff --git a/inc/lang/sk/edit.txt b/inc/lang/sk/edit.txt index 1adf4e16f..b8d63fb72 100644 --- a/inc/lang/sk/edit.txt +++ b/inc/lang/sk/edit.txt @@ -1 +1 @@ -Upravte stránku a stlačte ''Uložiť''. Na stránke [[wiki:syntax]] sa môžete dozvedieť viac o Wiki syntaxi. Prosím upravujte stránky len pokiaľ ich môžete **vylepšit**. Pokiaľ si chcete niečo len vyskúšať, použite [[playground:playground| pieskovisko]]. +Upravte stránku a stlačte ''Uložiť''. Na stránke [[wiki:syntax]] sa môžete dozvedieť viac o Wiki syntaxi. Prosím upravujte stránky, len pokiaľ ich môžete **zdokonaliť**. Pokiaľ si chcete niečo len vyskúšať, použite [[playground:playground| pieskovisko]]. diff --git a/inc/lang/sk/editrev.txt b/inc/lang/sk/editrev.txt index 6a837c244..ed15e791c 100644 --- a/inc/lang/sk/editrev.txt +++ b/inc/lang/sk/editrev.txt @@ -1 +1 @@ -**Máte načítanú staršiu verziu dokumentu!** Pokiaľ ju uložíte, vytvoríte tým novú aktuálnú verziu. +**Máte načítanú staršiu verziu dokumentu!** Pokiaľ ju uložíte, vytvoríte tým novú aktuálnu verziu. diff --git a/inc/lang/sk/index.txt b/inc/lang/sk/index.txt index 7b26d42ce..b4189f214 100644 --- a/inc/lang/sk/index.txt +++ b/inc/lang/sk/index.txt @@ -1,3 +1,3 @@ ====== Index ====== -Tu je k dispozícii index všetkých dostupných stránok Zoradených podľa [[doku>namespaces|menných priestorov]]. +Tu je k dispozícii index všetkých dostupných stránok zoradených podľa [[doku>namespaces|menných priestorov]]. diff --git a/inc/lang/sk/install.html b/inc/lang/sk/install.html index c45b82005..e31d7457c 100644 --- a/inc/lang/sk/install.html +++ b/inc/lang/sk/install.html @@ -1,23 +1,23 @@ <p>Táto stránka sprevádza prvou inštaláciou a konfiguráciou -<a href="http://dokuwiki.org">Dokuwiki</a>. Viac informácií o tomto Inštalátore je dostupných na jeho +<a href="http://dokuwiki.org">Dokuwiki</a>. Viac informácií o tomto inštalátore je dostupných na jeho <a href="http://dokuwiki.org/installer">dokumentačnej stránke</a>.</p> <p>DokuWiki používa bežné súbory pre ukladanie wiki stránok a iných informácií priradených k týmto stránkam (napr. obrázkov, vyhľadávacích indexov, starých revízií). Ak chcete úspešne narábať s DokuWiki, <strong>musí</strong> -mať práva pre zápis do adresárov, kde sa ukladajú tieto súbory. Tento Inštalátor +mať práva pre zápis do adresárov, kde sa ukladajú tieto súbory. Tento inštalátor nie je schopný nastaviť prístupové práva pre adresáre. Je potrebné to urobiť -priamo cez príkazový riadok, alebo ak využívate webhosting, cez FTP, alebo vaše +priamo cez príkazový riadok alebo, ak využívate webhosting, cez FTP alebo vaše webhostingové administračné rozhranie.</p> -<p>Tento Inštalátor nastaví <acronym title="access control list - zoznam prístupových práv">ACL</acronym> +<p>Tento inštalátor nastaví <acronym title="access control list - zoznam prístupových práv">ACL</acronym> konfiguráciu vašej Dokuwiki. Umožňuje vytvoriť administrátorské konto s prístupom do administračného menu s možnosťou inštalácie pluginov, správy užívateľov, správy prístupových práv k wiki stránkam a zmeny konfiguračných nastavení. Nie je nevyhnutné pre používanie Dokuwiki, ale umožňuje to ľahšie spravovať Dokuwiki.</p> -<p>Skúsení užívatelia, alebo užívatelia so špeciálnymi požiadavkami môžu použiť +<p>Skúsení užívatelia alebo užívatelia so špeciálnymi požiadavkami môžu použiť tieto odkazy pre bližšie informácie týkajúce sa <a href="http://dokuwiki.org/install">inštalačných pokynov</a> a <a href="http://dokuwiki.org/config">konfiguračných nastavení</a>.</p> diff --git a/inc/lang/sk/lang.php b/inc/lang/sk/lang.php index 2d9c8efea..b1783008b 100644 --- a/inc/lang/sk/lang.php +++ b/inc/lang/sk/lang.php @@ -25,7 +25,7 @@ $lang['btn_preview'] = 'Náhľad'; $lang['btn_top'] = 'Hore'; $lang['btn_newer'] = '<< novšie'; $lang['btn_older'] = 'staršie >>'; -$lang['btn_revs'] = 'Staršia verzia'; +$lang['btn_revs'] = 'Staršie verzie'; $lang['btn_recent'] = 'Posledné úpravy'; $lang['btn_upload'] = 'Nahrať'; $lang['btn_cancel'] = 'Storno'; @@ -39,16 +39,14 @@ $lang['btn_delete'] = 'Zmazať'; $lang['btn_back'] = 'Späť'; $lang['btn_backlink'] = 'Spätné linky'; $lang['btn_backtomedia'] = 'Späť na výber média'; -$lang['btn_subscribe'] = 'Posielať zmeny'; -$lang['btn_unsubscribe'] = 'Neposielať zmeny'; -$lang['btn_subscribens'] = 'Posielať zmeny menných priestorov'; -$lang['btn_unsubscribens'] = 'Neposielať zmeny menných priestorov'; +$lang['btn_subscribe'] = 'Sledovať zmeny'; $lang['btn_profile'] = 'Aktualizovať profil'; $lang['btn_reset'] = 'Zrušiť'; $lang['btn_resendpwd'] = 'Poslať nové heslo'; $lang['btn_draft'] = 'Upraviť koncept'; $lang['btn_recover'] = 'Obnoviť koncept'; $lang['btn_draftdel'] = 'Zmazať koncept'; +$lang['btn_revert'] = 'Obnoviť'; $lang['loggedinas'] = 'Prihlásený(á) ako'; $lang['user'] = 'Užívateľské meno'; $lang['pass'] = 'Heslo'; @@ -63,22 +61,22 @@ $lang['profile'] = 'Užívateľský profil'; $lang['badlogin'] = 'Zadané užívateľské meno a heslo nie je správne.'; $lang['minoredit'] = 'Menšie zmeny'; $lang['draftdate'] = 'Koncept automaticky uložený'; -$lang['nosecedit'] = 'Skránka bola medzičasom zmenená, informácie o sekcii sú zastaralé a z tohto dôvodu bola nahraná celá stránka.'; +$lang['nosecedit'] = 'Stránka bola medzičasom zmenená, informácie o sekcii sú zastaralé a z tohto dôvodu bola nahraná celá stránka.'; $lang['regmissing'] = 'Musíte vyplniť všetky údaje.'; $lang['reguexists'] = 'Užívateľ s rovnakým menom je už zaregistrovaný.'; $lang['regsuccess'] = 'Užívateľský účet bol vytvorený a heslo zaslané mailom.'; $lang['regsuccess2'] = 'Užívateľský účet bol vytvorený.'; $lang['regmailfail'] = 'Zdá sa, že nastala chyba pri posielaní mailu s heslom. Skúste kontaktovať správcu.'; $lang['regbadmail'] = 'Zadaná mailová adresa nie je platná. Pokiaľ si myslíte, že to je zle, skúste kontaktovať správcu.'; -$lang['regbadpass'] = 'Dve zadané heslá nie sú rovnaké, skúste prosím znovu.'; +$lang['regbadpass'] = 'Zadané heslá nie sú rovnaké, zadajte ich prosím znovu.'; $lang['regpwmail'] = 'Vaše heslo do systému DokuWiki'; -$lang['reghere'] = 'Nemáte uživateľský účet? Vytvorte si ho'; -$lang['profna'] = 'Toto wiki nepodporuje zmenu profilu'; +$lang['reghere'] = 'Nemáte užívateľský účet? Vytvorte si ho'; +$lang['profna'] = 'Táto wiki nepodporuje zmenu profilu'; $lang['profnochange'] = 'Žiadne zmeny, nie je čo robiť.'; -$lang['profnoempty'] = 'Prázdne meno, alebo e-mailová adresa nie sú povolené.'; +$lang['profnoempty'] = 'Prázdne meno alebo e-mailová adresa nie sú povolené.'; $lang['profchanged'] = 'Užívateľský účet úspešne zmenený.'; $lang['pwdforget'] = 'Zabudli ste heslo? Získajte nové!'; -$lang['resendna'] = 'Toto wiki nepodporuje znovuposielanie hesla.'; +$lang['resendna'] = 'Táto wiki nepodporuje opätovné zasielanie hesla.'; $lang['resendpwd'] = 'Pošli nové heslo pre'; $lang['resendpwdmissing'] = 'Prepáčte, musíte vyplniť všetky polia.'; $lang['resendpwdnouser'] = 'Prepáčte, nemôžeme nájsť zadaného užívateľa v databáze.'; @@ -87,13 +85,46 @@ $lang['resendpwdconfirm'] = 'Autorizačný odkaz bol zaslaný na e-mail.'; $lang['resendpwdsuccess'] = 'Vaše nové heslo bolo zaslané na e-mail.'; $lang['license'] = 'Ak nie je uvedené inak, obsah tejto wiki je uverejnený pod nasledujúcou licenciou:'; $lang['licenseok'] = 'Poznámka: Zmenou tejto stránky súhlasíte s uverejnením obsahu pod nasledujúcou licenciou:'; +$lang['searchmedia'] = 'Hľadať meno súboru:'; +$lang['searchmedia_in'] = 'Hľadať v %s'; $lang['txt_upload'] = 'Vyberte súbor ako prílohu'; -$lang['txt_filename'] = 'Wiki meno (volitelné)'; +$lang['txt_filename'] = 'Uložiť ako (voliteľné)'; $lang['txt_overwrt'] = 'Prepísať existujúci súbor'; $lang['lockedby'] = 'Práve zamknuté:'; -$lang['lockexpire'] = 'Zámok vyprší:'; -$lang['willexpire'] = 'Váš zámok pre editáciu za chvílu vyprší.\nAby ste predišli konfliktom, stlačte tlačítko Náhľad a zámok sa predĺži.'; -$lang['notsavedyet'] = 'Neuložené zmeny budú stratené.\nChcete naozaj pokračovať?'; +$lang['lockexpire'] = 'Zámok stratí platnosť:'; +$lang['willexpire'] = 'Váš zámok pre editáciu za chvíľu stratí platnosť.\nAby ste predišli konfliktom, stlačte tlačítko Náhľad a zámok sa predĺži.'; +$lang['js']['notsavedyet'] = 'Neuložené zmeny budú stratené. +Chcete naozaj pokračovať?'; +$lang['js']['searchmedia'] = 'Hľadať súbory'; +$lang['js']['keepopen'] = 'Po vybraní súboru ponechať okno otvorené'; +$lang['js']['hidedetails'] = 'Skryť detaily'; +$lang['js']['mediatitle'] = 'Nastavenia odkazu'; +$lang['js']['mediadisplay'] = 'Typ odkazu'; +$lang['js']['mediaalign'] = 'Zarovnanie'; +$lang['js']['mediasize'] = 'Veľkosť obrázku'; +$lang['js']['mediatarget'] = 'Cieľ odkazu'; +$lang['js']['mediaclose'] = 'Zatvoriť'; +$lang['js']['mediainsert'] = 'Vložiť'; +$lang['js']['mediadisplayimg'] = 'Zobraziť obrázok.'; +$lang['js']['mediadisplaylnk'] = 'Zobraziť iba odkaz.'; +$lang['js']['mediasmall'] = 'Malý'; +$lang['js']['mediamedium'] = 'Stredný'; +$lang['js']['medialarge'] = 'Veľký'; +$lang['js']['mediaoriginal'] = 'Originál'; +$lang['js']['medialnk'] = 'Odkaz na stránku s detailným popisom'; +$lang['js']['mediadirect'] = 'Priamy odkaz na originál'; +$lang['js']['medianolnk'] = 'Žiadny odkaz'; +$lang['js']['medianolink'] = 'Bez odkazu na obrázok'; +$lang['js']['medialeft'] = 'Zarovnať obrázok vľavo.'; +$lang['js']['mediaright'] = 'Zarovnať obrázok vpravo.'; +$lang['js']['mediacenter'] = 'Zarovnať obrázok na stred.'; +$lang['js']['medianoalign'] = 'Nepoužívať zarovnanie.'; +$lang['js']['nosmblinks'] = 'Odkazovanie na zdielané prostriedky Windows funguje len v Internet Explorer. +Aj napriek tomu tento odkaz môžete skopírovať a vložiť inde.'; +$lang['js']['linkwiz'] = 'Sprievodca odkazmi'; +$lang['js']['linkto'] = 'Odkaz na:'; +$lang['js']['del_confirm'] = 'Zmazať túto položku?'; +$lang['js']['mu_btn'] = 'Nahrať viac súborov súčasne'; $lang['rssfailed'] = 'Nastala chyba pri vytváraní tohto RSS: '; $lang['nothingfound'] = 'Nič nenájdené.'; $lang['mediaselect'] = 'Výber dokumentu'; @@ -101,7 +132,7 @@ $lang['fileupload'] = 'Nahrávanie dokumentu'; $lang['uploadsucc'] = 'Prenos prebehol v poriadku'; $lang['uploadfail'] = 'Chyba pri nahrávaní. Možno kvôli zle nastaveným právam?'; $lang['uploadwrong'] = 'Prenos súboru s takouto príponou nie je dovolený.'; -$lang['uploadexist'] = 'Súbor skutočne existuje. Nie je čo robiť.'; +$lang['uploadexist'] = 'Súbor už existuje. Žiadna akcia.'; $lang['uploadbadcontent'] = 'Nahraný obsah sa nezhoduje s príponou súboru %s.'; $lang['uploadspam'] = 'Nahrávanie bolo zablokované spamovým blacklistom.'; $lang['uploadxss'] = 'Nahrávanie bolo zablokované kvôli potenciálnemu škodlivému obsahu.'; @@ -111,40 +142,37 @@ $lang['deletefail'] = '"%s" nie je možné zmazať - skontrolujte opr $lang['mediainuse'] = 'Súbor "%s" nebol zmazaný - je stále používaný.'; $lang['namespaces'] = 'Menné priestory'; $lang['mediafiles'] = 'Dostupné súbory'; -$lang['js']['keepopen'] = 'Po vybraní súboru ponechať okno otvorené'; -$lang['js']['hidedetails'] = 'Skryť detaily'; -$lang['js']['nosmblinks'] = 'Odkazovanie na zdielané prostriedky Windows funguje len v Internet Explorer. -Aj napriek tomu tento odkaz môžete skopírovat a vložit inde.'; -$lang['js']['mu_btn'] = 'Nahrať viac súborov naraz'; $lang['mediausage'] = 'Pre odkázanie na súbor použite nasledujúcu syntax:'; $lang['mediaview'] = 'Zobraziť pôvodný súbor'; $lang['mediaroot'] = 'root'; -$lang['mediaupload'] = 'Nahrať súbor do aktuálneho menného priestoru. Pre vytvorenie menného podpriestoru, pridajte jeho názov na začiatok wiki mena (oddelený dvojbodkou)'; +$lang['mediaupload'] = 'Nahrať súbor do aktuálneho menného priestoru. Pre vytvorenie menného podpriestoru, pridajte jeho názov na začiatok mena súboru (oddelený dvojbodkou)'; $lang['mediaextchange'] = 'Prípona súboru bola zmenená z .%s na .%s!'; $lang['reference'] = 'Referencie pre'; $lang['ref_inuse'] = 'Súbor nemôže byť zmazaný, pretože je stále používaný nasledujúcimi stránkami:'; -$lang['ref_hidden'] = 'Niektoré referencie sú na stránky pre ktoré nemáte právo na čítanie'; +$lang['ref_hidden'] = 'Niektoré referencie sú na stránky, pre ktoré nemáte právo na čítanie'; $lang['hits'] = '- počet výskytov'; $lang['quickhits'] = 'Zodpovedajúce stránky'; $lang['toc'] = 'Obsah'; $lang['current'] = 'aktuálne'; $lang['yours'] = 'Vaša verzia'; -$lang['diff'] = 'zobrazit rozdiely voči aktuálnej verzii'; -$lang['diff2'] = 'Ukázať rozdiely medzi vybranými verziami'; +$lang['diff'] = 'Zobraziť rozdiely voči aktuálnej verzii'; +$lang['diff2'] = 'Zobraziť rozdiely medzi vybranými verziami'; $lang['line'] = 'Riadok'; $lang['breadcrumb'] = 'História'; $lang['youarehere'] = 'Nachádzate sa'; $lang['lastmod'] = 'Posledná úprava'; $lang['by'] = 'od'; -$lang['deleted'] = 'odstranené'; +$lang['deleted'] = 'odstránené'; $lang['created'] = 'vytvorené'; -$lang['restored'] = 'stará verzia bola obnovena'; +$lang['restored'] = 'stará verzia bola obnovená'; $lang['external_edit'] = 'externá úprava'; $lang['summary'] = 'Komentár k úpravám'; $lang['noflash'] = 'Pre zobrazenie tohto obsahu potrebujete <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>.'; +$lang['download'] = 'Stiahnuť'; $lang['mail_newpage'] = 'stránka pridaná:'; $lang['mail_changed'] = 'stránka zmenená:'; -$lang['mail_new_user'] = 'Nový užívateľ:'; +$lang['mail_subscribe_list'] = 'stránky zmenené v mennom priestore:'; +$lang['mail_new_user'] = 'nový užívateľ:'; $lang['mail_upload'] = 'nahraný súbor:'; $lang['qb_bold'] = 'Tučné'; $lang['qb_italic'] = 'Kurzíva'; @@ -156,6 +184,11 @@ $lang['qb_h2'] = 'Nadpis 2. úrovne'; $lang['qb_h3'] = 'Nadpis 3. úrovne'; $lang['qb_h4'] = 'Nadpis 4. úrovne'; $lang['qb_h5'] = 'Nadpis 5. úrovne'; +$lang['qb_h'] = 'Nadpis'; +$lang['qb_hs'] = 'Zvoliť nadpis'; +$lang['qb_hplus'] = 'Nadpis vyššej úrovne'; +$lang['qb_hminus'] = 'Nadpis nižšej úrovne'; +$lang['qb_hequal'] = 'Nadpis predchádzajúcej úrovne'; $lang['qb_link'] = 'Interný odkaz'; $lang['qb_extlink'] = 'Externý odkaz'; $lang['qb_hr'] = 'Horizontálna linka'; @@ -165,7 +198,7 @@ $lang['qb_media'] = 'Vložiť obrázky alebo iné súbory'; $lang['qb_sig'] = 'Vložiť podpis'; $lang['qb_smileys'] = 'Smajlíky'; $lang['qb_chars'] = 'Špeciálne znaky'; -$lang['js']['del_confirm'] = 'Zmazať túto položku?'; +$lang['upperns'] = 'návrat do nadradeného menného priestoru'; $lang['admin_register'] = 'Pridaj nového užívateľa'; $lang['metaedit'] = 'Upraviť metainformácie'; $lang['metasaveerr'] = 'Zápis metainformácií zlyhal'; @@ -180,48 +213,67 @@ $lang['img_artist'] = 'Fotograf'; $lang['img_copyr'] = 'Kopírovacie práva'; $lang['img_format'] = 'Formát'; $lang['img_camera'] = 'Fotoaparát'; -$lang['img_keywords'] = 'Klúčové slová'; -$lang['subscribe_success'] = 'Pridané %s do zoznamu objednávok pre %s'; -$lang['subscribe_error'] = 'Chyba pri pridaní %s do zoznamu objednávok pre %s'; -$lang['subscribe_noaddress'] = 'Nie je žiadna e-mailová adresa priradená k vašemu menu,nemôžte byť pridaný do zoznamu objednávok'; -$lang['unsubscribe_success'] = 'Odobrané %s zo zoznamu objednávok pre %s'; -$lang['unsubscribe_error'] = 'Chaba pri odobraní %s zo zoznamu objednávok pre %s'; -$lang['authmodfailed'] = 'Užívateľská autentifikácia nie je možná. Prosím informujte správcu tohto systému.'; -$lang['authtempfail'] = 'Užívateľská autentifikácia je dočasne nedostupná. Ak táto situácia pretrvá, prosím informujte správcu tohto systému.'; +$lang['img_keywords'] = 'Kľúčové slová'; +$lang['subscr_subscribe_success'] = 'Používateľ %s bol pridaný do zoznamu hlásení o zmenách %s'; +$lang['subscr_subscribe_error'] = 'Chyba pri pridaní používateľa %s do zoznamu hlásení o zmenách %s'; +$lang['subscr_subscribe_noaddress'] = 'Vaše prihlasovacie meno nemá priradenú žiadnu email adresu, nemôžete byť pridaný do zoznamu hlásení o zmenách'; +$lang['subscr_unsubscribe_success'] = 'Používateľ %s bol odstánený zo zoznamu hlásení o zmenách %s'; +$lang['subscr_unsubscribe_error'] = 'Chyba pri odstánení používateľa %s zo zoznamu hlásení o zmenách %s'; +$lang['subscr_already_subscribed'] = 'Používateľ %s už je v zozname hlásení o zmenách %s'; +$lang['subscr_not_subscribed'] = 'Používateľ %s nie je v zozname hlásení o zmenách %s'; +$lang['subscr_m_not_subscribed'] = 'Momentálne nesledujete zmeny aktuálnej stránky alebo menného priestoru.'; +$lang['subscr_m_new_header'] = 'Pridať sledovanie zmien'; +$lang['subscr_m_current_header'] = 'Aktuálne sledované zmeny'; +$lang['subscr_m_unsubscribe'] = 'Nesledovať zmeny'; +$lang['subscr_m_subscribe'] = 'Sledovať zmeny'; +$lang['subscr_m_receive'] = 'Dostávať'; +$lang['subscr_style_every'] = 'email pri každej zmene'; +$lang['subscr_style_digest'] = 'email so zhrnutím zmien pre každú stránku'; +$lang['subscr_style_list'] = 'zoznam zmenených stránok od posledného emailu'; +$lang['authmodfailed'] = 'Užívateľská autentifikácia nie je možná. Prosím informujte správcu systému.'; +$lang['authtempfail'] = 'Užívateľská autentifikácia je dočasne nedostupná. Ak táto situácia pretrváva, prosím informujte správcu systému.'; $lang['i_chooselang'] = 'Zvoľte váš jazyk'; $lang['i_installer'] = 'DokuWiki inštalátor'; $lang['i_wikiname'] = 'Názov Wiki'; $lang['i_enableacl'] = 'Aktivovať ACL (doporučené)'; $lang['i_superuser'] = 'Správca'; $lang['i_problems'] = 'Inštalátor narazil na nižšie uvedené problémy. Nemôžete pokračovať, pokiaľ ich neodstránite.'; -$lang['i_modified'] = 'Z bezpečnostných dôvodov bude tento skript fungovať iba s novou, neupravenou inštaláciou Dokuwiki. Môžete buď znovu rozbaliť stiahnutý inštalačný balíček, alebo preštudovať <a href="http://dokuwiki.org/install"> inštalačné inštrukcie Dokuwiki</a>'; +$lang['i_modified'] = 'Z bezpečnostných dôvodov bude tento skript fungovať iba s novou, neupravenou inštaláciou Dokuwiki. Môžete buď znovu rozbaliť stiahnutý inštalačný balíček alebo preštudovať <a href="http://dokuwiki.org/install"> inštalačné inštrukcie Dokuwiki</a>'; $lang['i_funcna'] = 'PHP funkcia <code>%s</code> nie je dostupná. Je možné, že ju z určitých dôvodov zablokoval váš poskytovateľ webhostingu?'; -$lang['i_phpver'] = 'Vaša verzia PHP <code>%s</code> je nižšia ako požadovaná <code>%s</code>. Potrebujete aktualizovať Vašu instaláciu PHP.'; +$lang['i_phpver'] = 'Vaša verzia PHP <code>%s</code> je nižšia ako požadovaná <code>%s</code>. Potrebujete aktualizovať Vašu inštaláciu PHP.'; $lang['i_permfail'] = '<code>%s</code> nie je zapisovateľný pre DokuWiki. Musíte zmeniť prístupové práva pre tento adresár!'; $lang['i_confexists'] = '<code>%s</code> už existuje'; $lang['i_writeerr'] = 'Nie je možné vytvoriť <code>%s</code>. Potrebujete skontrolovať prístupové práva pre adresár/súbor a vytvoriť ho manuálne.'; -$lang['i_badhash'] = 'nerozpoznaný, alebo zmenený súbor dokuwiki.php (hash=<code>%s</code>)'; -$lang['i_badval'] = '<code>%s</code> - bola zadaná nesprávna, alebo žiadna hodnota'; -$lang['i_success'] = 'Konfigurácia bola úspešne ukončená. Teraz môžte zmazať súbor install.php. Pokračujte vo - <a href="doku.php">vašej novej DokuWiki</a>.'; -$lang['i_failure'] = 'Pri zápise konfiguračného súboru nastali nejaké chyby. Potrebujete ich opraviť manuálne pred tým ako budete môcť používať - <a href="doku.php">vašu novú DokuWiki</a>.'; +$lang['i_badhash'] = 'neznámy alebo zmenený súbor dokuwiki.php (hash=<code>%s</code>)'; +$lang['i_badval'] = '<code>%s</code> - nesprávna alebo žiadna hodnota'; +$lang['i_success'] = 'Konfigurácia bola úspešne ukončená. Teraz môžete zmazať súbor install.php. Pokračujte vo <a href="doku.php">vašej novej DokuWiki</a>.'; +$lang['i_failure'] = 'Pri zápise konfiguračného súboru nastali nejaké chyby. Potrebujete ich opraviť manuálne pred tým, ako budete môcť používať <a href="doku.php">vašu novú DokuWiki</a>.'; $lang['i_policy'] = 'Počiatočná ACL politika'; $lang['i_pol0'] = 'Otvorená Wiki (čítanie, zápis a nahrávanie pre každého)'; $lang['i_pol1'] = 'Verejná Wiki (čítanie pre každého, zápis a nahrávanie pre registrovaných užívateľov)'; $lang['i_pol2'] = 'Uzatvorená Wiki (čítanie, zápis a nahrávanie len pre registrovaných užívateľov)'; $lang['i_retry'] = 'Skúsiť znovu'; -$lang['mu_intro'] = 'Na tomto mieste môžete nahrávať viac súborov naraz. Tlačidlom Prehľadávať pridáte súbory do zoznamu. Tlačidlom Nahrať vykonáte prenos súborov.'; +$lang['mu_intro'] = 'Na tomto mieste môžete nahrávať viac súborov súčasne. Tlačidlom Prehľadávať pridáte súbory do zoznamu. Tlačidlom Nahrať vykonáte prenos súborov.'; $lang['mu_gridname'] = 'Názov súboru'; $lang['mu_gridsize'] = 'Veľkosť'; $lang['mu_gridstat'] = 'Status'; -$lang['mu_namespace'] = 'Oblasť mien'; +$lang['mu_namespace'] = 'Menný priestor'; $lang['mu_browse'] = 'Prehľadávať'; $lang['mu_toobig'] = 'príliš veľký'; $lang['mu_ready'] = 'pripravený na nahratie'; $lang['mu_done'] = 'dokončený'; $lang['mu_fail'] = 'neúspešný'; -$lang['mu_authfail'] = 'spojenie vypršalo'; +$lang['mu_authfail'] = 'pripojenie stratilo platnosť'; $lang['mu_progress'] = '@PCT@% nahraných'; $lang['mu_filetypes'] = 'Povolené typy súborov'; +$lang['mu_info'] = 'nahraných súborov.'; +$lang['mu_lasterr'] = 'Posledná chyba:'; $lang['recent_global'] = 'Práve prehliadate zmeny v mennom priestore <b>%s</b>. Môžete si tiež pozrieť <a href="%s">aktuálne zmeny celej wiki</a>.'; +$lang['years'] = 'pred %d rokmi'; +$lang['months'] = 'pred %d mesiacmi'; +$lang['weeks'] = 'pred %d týždňami'; +$lang['days'] = 'pred %d dňami'; +$lang['hours'] = 'pred %d hodinami'; +$lang['minutes'] = 'pred %d minútami'; +$lang['seconds'] = 'pred %d sekundami'; +$lang['wordblock'] = 'Vaše zmeny neboli uložené, pretože obsahovali nepovolený text (spam).'; diff --git a/inc/lang/sk/locked.txt b/inc/lang/sk/locked.txt index 0e7d9645e..5063c0605 100644 --- a/inc/lang/sk/locked.txt +++ b/inc/lang/sk/locked.txt @@ -1,3 +1,3 @@ ====== Stránka je uzamknutá ====== -Tato stránka je práve uzamknutá pre úpravy iným užívateľom. Musíte počkať pokým daný užívateľ dokončí svoje úpravy, alebo pokým tento zámok vyprší. +Tato stránka je práve uzamknutá pre úpravy iným užívateľom. Musíte počkať dovtedy, pokiaľ daný užívateľ dokončí svoje úpravy alebo pokiaľ tento zámok stratí platnosť. diff --git a/inc/lang/sk/mailtext.txt b/inc/lang/sk/mailtext.txt index 78757799e..30b7f5c37 100644 --- a/inc/lang/sk/mailtext.txt +++ b/inc/lang/sk/mailtext.txt @@ -1,17 +1,17 @@ -Stránka vo vašom DokuWiki bola zmenená. Tu sú podrobnosti: +Stránka vo vašej DokuWiki bola zmenená. Tu sú podrobnosti: -Dátum : @DATE@ -Prehliadač : @BROWSER@ -IP adresa : @IPADDRESS@ -Hostitel : @HOSTNAME@ +Dátum : @DATE@ +Prehliadač : @BROWSER@ +IP adresa : @IPADDRESS@ +Adresa : @HOSTNAME@ Stará verzia : @OLDPAGE@ -Nová verzia : @NEWPAGE@ -Komentár : @SUMMARY@ -User : @USER@ +Nová verzia : @NEWPAGE@ +Komentár : @SUMMARY@ +User : @USER@ @DIFF@ -- -Táto správa bola vygenerovaná systémom DokuWiki: +Táto správa bola zaslaná DokuWiki @DOKUWIKIURL@ diff --git a/inc/lang/sk/password.txt b/inc/lang/sk/password.txt index 17e5dda9d..2b85e9c39 100644 --- a/inc/lang/sk/password.txt +++ b/inc/lang/sk/password.txt @@ -2,10 +2,10 @@ Dobrý deň, Tu sú prihlasovacie informácie pre @TITLE@ (@DOKUWIKIURL@) -Meno : @FULLNAME@ +Meno : @FULLNAME@ Užívateľské meno : @LOGIN@ -Heslo : @PASSWORD@ +Heslo : @PASSWORD@ -- -Tato správa bola vygenerována systémom DokuWiki: +Táto správa bola zaslaná DokuWiki @DOKUWIKIURL@ diff --git a/inc/lang/sk/pwconfirm.txt b/inc/lang/sk/pwconfirm.txt index 19903203d..210740da7 100644 --- a/inc/lang/sk/pwconfirm.txt +++ b/inc/lang/sk/pwconfirm.txt @@ -11,5 +11,5 @@ použite prosím nasledujúci odkaz. @CONFIRM@ -- -Tento mail bol generovaný Dokuwiki na adrese +Táto správa bola zaslaná DokuWiki @DOKUWIKIURL@ diff --git a/inc/lang/sk/read.txt b/inc/lang/sk/read.txt index a50b2afb6..64b7ed26e 100644 --- a/inc/lang/sk/read.txt +++ b/inc/lang/sk/read.txt @@ -1,2 +1,2 @@ -Táto stránka je iba na čítanie. Môžete si iba prehliadnuť zdrojový kód, ale nie meniť ho. Opýtajte sa správcu, ak si myslíťe že niečo nie je v poriadku. +Táto stránka je iba na čítanie. Môžete si prehliadnuť zdrojový kód, ale nemôžete ho meniť. Opýtajte sa správcu, ak si myslíte, že niečo nie je v poriadku. diff --git a/inc/lang/sk/register.txt b/inc/lang/sk/register.txt index 8dfe6be4e..1e694ca79 100644 --- a/inc/lang/sk/register.txt +++ b/inc/lang/sk/register.txt @@ -1,3 +1,3 @@ ====== Zaregistrujte sa ako nový užívateľ ====== -Aby ste získali uživateľský účet, vyplňťe prosím všetky informácie v následujúcom formulári. Zadajte **platnú** mailovú adresu, na ktorú bude zaslané heslo. Uživateľské meno musí byť v platnom [[doku>pagename|formáte]] (ktorý je rovnaký ako formát názvu stránky). +Aby ste získali užívateľský účet, vyplňte prosím všetky informácie v následujúcom formulári. Zadajte **platnú** mailovú adresu, na ktorú bude zaslané heslo. Užívateľské meno musí byť v platnom [[doku>pagename|formáte]] (ktorý je rovnaký ako formát názvu stránky). diff --git a/inc/lang/sk/registermail.txt b/inc/lang/sk/registermail.txt index 3fdc63f74..a0bf9e314 100644 --- a/inc/lang/sk/registermail.txt +++ b/inc/lang/sk/registermail.txt @@ -10,5 +10,5 @@ IP adresa : @IPADDRESS@ Meno servera : @HOSTNAME@ -- -Tento mail bol generovaný Dokuwiki na adrese +Táto správa bola zaslaná DokuWiki @DOKUWIKIURL@ diff --git a/inc/lang/sk/resendpwd.txt b/inc/lang/sk/resendpwd.txt index b51706c96..6f52486f1 100644 --- a/inc/lang/sk/resendpwd.txt +++ b/inc/lang/sk/resendpwd.txt @@ -1,4 +1,4 @@ ====== Poslať nové heslo ====== -Vyplnte niežšie požadované informácie pre získanie nového hesla pre váš účet v tomto wiki. Vaše nové heslo bude zaslané na vašu registrovanú e-mailovú adresu. Užívateľské meno má byť vaše prihlasovaciemeno do wiki. +Vyplňte nižšie požadované informácie pre získanie nového hesla pre váš účet v tejto wiki. Vaše nové heslo bude zaslané na vašu registrovanú e-mailovú adresu. Užívateľské meno má byť vaše prihlasovacie meno do wiki. diff --git a/inc/lang/sk/stopwords.txt b/inc/lang/sk/stopwords.txt index 86eb84046..060ee495f 100644 --- a/inc/lang/sk/stopwords.txt +++ b/inc/lang/sk/stopwords.txt @@ -1,6 +1,6 @@ -#Toto je zoznam slov ignorovaných indexérom, jedno slovo na riadok +#Toto je zoznam slov ignorovaných indexáciou, jedno slovo na riadok # Keď editujete tento súbor, uistite sa, či používate UNIXové konce riadkov (jednoduchý nový riadok) -# Nie je potrebné vkladať slová kraťšie ako 3 znaky - tie sú ignorované vždy. +# Nie je potrebné vkladať slová kratšie ako 3 znaky - tie sú ignorované vždy. # Tento zoznam je založený na inom nájdenom na http://www.ranks.nl/stopwords/ okolo tvoj diff --git a/inc/lang/sk/subscr_digest.txt b/inc/lang/sk/subscr_digest.txt new file mode 100644 index 000000000..273cc7e26 --- /dev/null +++ b/inc/lang/sk/subscr_digest.txt @@ -0,0 +1,20 @@ +Dobrý deň! + +Stránka @PAGE@ wiki @TITLE@ bola zmenená. +Zoznam zmien: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Stará verzia: @OLDPAGE@ +Nová verzia: @NEWPAGE@ + +Ak si neprajete zasielať tieto správy, prihláste sa do wiki +@DOKUWIKIURL@, potom prejdite na +@SUBSCRIBE@ +a odhláste sa z informovania o zmenách stránky alebo menného priestoru. + +-- +Táto správa bola zaslaná DokuWiki +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/sk/subscr_form.txt b/inc/lang/sk/subscr_form.txt new file mode 100644 index 000000000..1f12e9a15 --- /dev/null +++ b/inc/lang/sk/subscr_form.txt @@ -0,0 +1,3 @@ +====== Sledovanie zmien ====== + +Táto stánka umožňuje sledovať zmeny aktuálnej stránky a menného priestoru.
\ No newline at end of file diff --git a/inc/lang/sk/subscr_list.txt b/inc/lang/sk/subscr_list.txt new file mode 100644 index 000000000..3a5bfb572 --- /dev/null +++ b/inc/lang/sk/subscr_list.txt @@ -0,0 +1,17 @@ +Dobrý deň! + +Stránky v mennom priestore @PAGE@ wiki @TITLE@ boli zmenené. +Zoznam zmenených stránok: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Ak si neprajete zasielať tieto správy, prihláste sa do wiki +@DOKUWIKIURL@, potom prejdite na +@SUBSCRIBE@ +a odhláste sa z informovania o zmenách stránky alebo menného priestoru. + +-- +Táto správa bola zaslaná DokuWiki +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/sk/subscr_single.txt b/inc/lang/sk/subscr_single.txt new file mode 100644 index 000000000..3abbc40b8 --- /dev/null +++ b/inc/lang/sk/subscr_single.txt @@ -0,0 +1,23 @@ +Dobrý deň! + +Stránka @PAGE@ wiki @TITLE@ bola zmenená. +Zoznam zmien: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Dátum : @DATE@ +Používateľ : @USER@ +Komentár: @SUMMARY@ +Stará verzia: @OLDPAGE@ +Nová verzia: @NEWPAGE@ + +Ak si neprajete zasielať tieto správy, prihláste sa do wiki +@DOKUWIKIURL@, potom prejdite na +@SUBSCRIBE@ +a odhláste sa z informovania o zmenách stránky alebo menného priestoru. + +-- +Táto správa bola zaslaná DokuWiki +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/sk/uploadmail.txt b/inc/lang/sk/uploadmail.txt index 871fcaeb2..18293799f 100644 --- a/inc/lang/sk/uploadmail.txt +++ b/inc/lang/sk/uploadmail.txt @@ -10,5 +10,5 @@ MIME Typ : @MIME@ Užívateľ : @USER@ -- -Tento mail vygenerovalo DokuWiki na +Táto správa bola zaslaná DokuWiki @DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/sk/wordblock.txt b/inc/lang/sk/wordblock.txt deleted file mode 100644 index 4901b2aab..000000000 --- a/inc/lang/sk/wordblock.txt +++ /dev/null @@ -1,3 +0,0 @@ -====== SPAM nebol povolený ====== - -Vaše zmeny **neboli uložené**, pretože obsahujú jedno alebo viacej nepovolených slov. Wiki si nepotrpí na spam! Pokiaľ sa domnievate, že ide o omyl, kontaktujte správcu. diff --git a/inc/lang/sl/lang.php b/inc/lang/sl/lang.php index bbffcfbb1..9d94bab49 100644 --- a/inc/lang/sl/lang.php +++ b/inc/lang/sl/lang.php @@ -78,7 +78,7 @@ $lang['txt_overwrt'] = 'Prepiši obstoječo datoteko'; $lang['lockedby'] = 'Trenutno zaklenjeno od'; $lang['lockexpire'] = 'Zaklep preteče'; $lang['willexpire'] = 'Vaš zaklep za urejevanje bo pretekel čez eno minuto.\nDa se izognete konfliktom, uporabite predogled, da se merilnik časa za zaklep ponastavi.'; -$lang['notsavedyet'] = 'Obstajajo neshranjene spremembe, ki bodo izgubljene.\nRes želite nadaljevati?'; +$lang['js']['notsavedyet'] = "Obstajajo neshranjene spremembe, ki bodo izgubljene.\nRes želite nadaljevati?"; $lang['rssfailed'] = 'Prišlo je do napake pri prenašanju tega dovoda: '; $lang['nothingfound'] = 'Nič ni bilo najdeno.'; $lang['mediaselect'] = 'Mediafile Izbira'; diff --git a/inc/lang/sl/wordblock.txt b/inc/lang/sl/wordblock.txt deleted file mode 100644 index c9d9c1ca0..000000000 --- a/inc/lang/sl/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== Blokiran SPAM ====== - -Vaše spremembe **niso** bile shranjene, ker so vsebovale eno ali več prepovedanih besed. Če ste poskusili nasmetiti Wiki -- Fuj Fido! Če mislite da je to napaka, stopite v stik z administratorjem. - diff --git a/inc/lang/sq/admin.txt b/inc/lang/sq/admin.txt new file mode 100644 index 000000000..6edbf8a19 --- /dev/null +++ b/inc/lang/sq/admin.txt @@ -0,0 +1,3 @@ +====== Administrimi ====== + +Poshtë është një listë e punëve administrative të disponueshme në DokuWiki.
\ No newline at end of file diff --git a/inc/lang/sq/adminplugins.txt b/inc/lang/sq/adminplugins.txt new file mode 100644 index 000000000..f87626c8e --- /dev/null +++ b/inc/lang/sq/adminplugins.txt @@ -0,0 +1 @@ +===== Plugin-e Shtesë =====
\ No newline at end of file diff --git a/inc/lang/sq/backlinks.txt b/inc/lang/sq/backlinks.txt new file mode 100644 index 000000000..b25df00be --- /dev/null +++ b/inc/lang/sq/backlinks.txt @@ -0,0 +1,3 @@ +====== Linke të kthyeshëm ====== + +Kjo është një listë e faqeve që duket se lidhen mbrapsht te kjo faqe aktuale.
\ No newline at end of file diff --git a/inc/lang/sq/conflict.txt b/inc/lang/sq/conflict.txt new file mode 100644 index 000000000..9c6cc940d --- /dev/null +++ b/inc/lang/sq/conflict.txt @@ -0,0 +1,5 @@ +====== Ekziston një version më i ri ====== + +Ekziston një version më i ri i dokumentit që ju redaktuat. Kjo ndodh kur një përdorues tjetër e ndryshoi dokumentin ndërkohë që ju po e redaktonit atë. + +Gjeni ndryshimet e treguara më poshtë dhe pastaj vendosni se kë version doni të mbani. Nëse zgjidhni "ruaj", versioni juaj do të ruhet. Klikon "fshi" për të mbajtur versioni aktual.
\ No newline at end of file diff --git a/inc/lang/sq/denied.txt b/inc/lang/sq/denied.txt new file mode 100644 index 000000000..03e10527f --- /dev/null +++ b/inc/lang/sq/denied.txt @@ -0,0 +1,3 @@ +====== Leja Refuzohet ====== + +Na vjen keq, ju nuk keni të drejta të mjaftueshme për të vazhduar. Mbase harruat të hyni?
\ No newline at end of file diff --git a/inc/lang/sq/diff.txt b/inc/lang/sq/diff.txt new file mode 100644 index 000000000..ab03a283f --- /dev/null +++ b/inc/lang/sq/diff.txt @@ -0,0 +1,3 @@ +====== Ndryshimet ====== + +Kjo tregon ndryshimet midis dy versioneve të faqes.
\ No newline at end of file diff --git a/inc/lang/sq/draft.txt b/inc/lang/sq/draft.txt new file mode 100644 index 000000000..80634a780 --- /dev/null +++ b/inc/lang/sq/draft.txt @@ -0,0 +1,5 @@ +====== Skedari skicë u gjend ====== + +Sesioni juaj i fundit i redaktimit në këtë faqe nuk përfundoi me sukses. DokuWiki ruajti automatikisht një skicë gjatë punës tuaj të cilën mund ta përdorni tani për të vazhduar redaktimin tuaj. Më poshtë mund të shihni të dhënat që janë ruajtur nga sesioni juaj i fundit. + +Ju lutem vendosni nëse doni të //rekuperoni// sesionin tuaj të humbur të redaktimit, //fshini// skicën e ruajtur automatikisht ose //dilni// nga proçesi i redaktimit.
\ No newline at end of file diff --git a/inc/lang/sq/edit.txt b/inc/lang/sq/edit.txt new file mode 100644 index 000000000..1f038ead7 --- /dev/null +++ b/inc/lang/sq/edit.txt @@ -0,0 +1 @@ +Redaktoni faqen dhe shtypni "Ruaj". Shikoni [[wiki:syntax]] për sintaksën e Wiki-t. Nëse doni të provoni disa gjëra, mësoni të hidhni hapat e parë në [[playground:playground|playground]].
\ No newline at end of file diff --git a/inc/lang/sq/editrev.txt b/inc/lang/sq/editrev.txt new file mode 100644 index 000000000..08792eafb --- /dev/null +++ b/inc/lang/sq/editrev.txt @@ -0,0 +1,2 @@ +**Keni ngarkuar një rishikim të vjetër të dokumentit!** Nëse e ruani, do të krijoni një version të ri me këto të dhëna. +----
\ No newline at end of file diff --git a/inc/lang/sq/index.txt b/inc/lang/sq/index.txt new file mode 100644 index 000000000..6daef1c30 --- /dev/null +++ b/inc/lang/sq/index.txt @@ -0,0 +1,3 @@ +====== Index ====== + +Ky është një index mbi të gjitha faqet e disponueshme të renditura sipas [[doku>namespaces|namespaces]].
\ No newline at end of file diff --git a/inc/lang/sq/install.html b/inc/lang/sq/install.html new file mode 100644 index 000000000..f9f69f473 --- /dev/null +++ b/inc/lang/sq/install.html @@ -0,0 +1,8 @@ +<p>Kjo faqe ndihmon në instalimin dhe konfigurimin për herë të parë të <a href="http://dokuwiki.org">Dokuwiki-t</a>. Më shumë informacion mbi këtë installer gjendet në <a href="http://dokuwiki.org/installer">faqen e tij të dokumentimit</a>.</p> + +<p>Dokuwiki përdor skedarë të zakonshëm për ruajtjen e faqeve wiki dhe informacioneve të tjera të lidhura me ato faqe (psh imazhe, indekse kërkimi, rishikime të vjetra etj). Në mënyrë që të funksionojë me sukses DokuWiki <strong>duhet</strong> të ketë akses shkrimi mbi direktoritë që mbajnë këto skedarë. Ky installer nuk është në gjendje të vendosë leje mbi direktoritë. Kjo normalisht duhet bërë drejtpërdrejt nga një command shell ose nëse jeni duke përdorur hostimin, nëpërmjet FTP ose panelit të kontrollit të hostit (psh cPanel).</p> + +<p>Ky installer do të instalojë konfigurimin e DokuWiki-t tuaj +për <acronym title="access control list">ACL</acronym>, që në këmbim lejon hyrje si administrator dhe akses të menusë së administrimit të DokuWiki-t për të instaluar plugin-e, menaxhuar përdoruesit, menaxhuar akses në faqet wiki dhe ndryshim të konfigurimeve. Nuk është e domosdoshme për DokuWiki-n të funksionojë, megjithatë do ta bëjë DokuWiki-n më të lehtë për tu administruar.</p> + +<p>Përduruesit me përvojë ose përdoruesit me kërkesa speciale për instalim duhet të përdorin këto linke për detaje mbi <a href="http://dokuwiki.org/install">instruksionet e instalimit</a> dhe <a href="http://dokuwiki.org/config">konfigurimeve</a>.</p>
\ No newline at end of file diff --git a/inc/lang/sq/lang.php b/inc/lang/sq/lang.php new file mode 100644 index 000000000..0213ba28b --- /dev/null +++ b/inc/lang/sq/lang.php @@ -0,0 +1,258 @@ +<?php +/** + * sq language file + * + * This file was initially built by fetching translations from other + * Wiki projects. See the @url lines below. Additional translations + * and fixes where done for DokuWiki by the people mentioned in the + * lines starting with @author + * + * @url http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/languages/messages/MessagesSq.php?view=co + * @author Leonard Elezi leonard.elezi@depinfo.info + */ +$lang['encoding'] = 'utf-8'; +$lang['direction'] = 'ltr'; +$lang['doublequoteopening'] = '"'; +$lang['doublequoteclosing'] = '"'; +$lang['singlequoteopening'] = '\''; +$lang['singlequoteclosing'] = '\''; +$lang['apostrophe'] = '\''; +$lang['btn_edit'] = 'Redaktoni këtë faqe'; +$lang['btn_source'] = 'Trego kodin burim të faqes'; +$lang['btn_show'] = 'Trego faqen'; +$lang['btn_create'] = 'Krijo këtë faqe'; +$lang['btn_search'] = 'Kërko'; +$lang['btn_save'] = 'Ruaj'; +$lang['btn_preview'] = 'Shikim paraprak'; +$lang['btn_top'] = 'Kthehu ne krye'; +$lang['btn_newer'] = '<< më të hershme'; +$lang['btn_older'] = 'më të vonshme'; +$lang['btn_revs'] = 'Shqyrtime të vjetra'; +$lang['btn_recent'] = 'Ndryshime së fundmi'; +$lang['btn_upload'] = 'Ngarko'; +$lang['btn_cancel'] = 'Harroji'; +$lang['btn_index'] = 'Kreu'; +$lang['btn_secedit'] = 'Redaktoni'; +$lang['btn_login'] = 'Hyrje'; +$lang['btn_logout'] = 'Dalje'; +$lang['btn_admin'] = 'Admin'; +$lang['btn_update'] = 'Përditëso'; +$lang['btn_delete'] = 'Fshi'; +$lang['btn_back'] = 'Mbrapa'; +$lang['btn_backlink'] = 'Lidhjet këtu'; +$lang['btn_backtomedia'] = 'Mbrapa tek Përzgjedhja e Media-ve'; +$lang['btn_subscribe'] = 'Menaxho Abonimet'; +$lang['btn_profile'] = 'Përditëso Profilin'; +$lang['btn_reset'] = 'Rivendos'; +$lang['btn_resendpwd'] = 'Dërgo fjalëkalim të ri'; +$lang['btn_draft'] = 'Redakto skicën'; +$lang['btn_recover'] = 'Rekupero skicën'; +$lang['btn_draftdel'] = 'Fshi skicën'; +$lang['btn_revert'] = 'Kthe si më parë'; +$lang['loggedinas'] = 'Regjistruar si '; +$lang['user'] = 'Nofka e përdoruesit:'; +$lang['pass'] = 'Fjalëkalimi'; +$lang['newpass'] = 'Fjalëkalim i ri'; +$lang['oldpass'] = 'Konfirmo fjalëkalimin aktual'; +$lang['passchk'] = 'Edhe një herë'; +$lang['remember'] = 'Më mbaj mend'; +$lang['fullname'] = 'Emri i vërtetë'; +$lang['email'] = 'Adresa e email-it*'; +$lang['register'] = 'Regjsitrohuni'; +$lang['profile'] = 'Profili i përdoruesit'; +$lang['badlogin'] = 'Na vjen keq, emri ose fjalëkalimi është gabim.'; +$lang['minoredit'] = 'Ndryshime të Vogla'; +$lang['draftdate'] = 'Skica u ruajt automatikisht në'; +$lang['nosecedit'] = 'Faqja u ndryshua ndëwrkohë, informacioni i kwtij seksioni ishte i vjetër, u ngarkua faqja e tërë në vend të saj.'; +$lang['regmissing'] = 'Na vjen keq, duhet të plotësoni të gjitha fushat.'; +$lang['reguexists'] = 'Na vjen keq, ekziston një përdorues tjetër me të njëjtin emër.'; +$lang['regsuccess'] = 'Përdoruesi u regjistrua dhe fjalëkalimi u dërgua me email.'; +$lang['regsuccess2'] = 'Llogarija e Përdoruesit u krijua'; +$lang['regmailfail'] = 'Duket se ka ndodhur një gabim gjatë dërgimit të fjalëkalimit me e-mail. Ju lutemi kontaktoni administratorin!'; +$lang['regbadmail'] = 'Adresa email e dhënë nuk mund të pranohet sepse nuk duket e rregullt. Ju lutem fusni një adresë të rregullt ose boshatisni kutinë e shtypit.'; +$lang['regbadpass'] = 'Dy fjalëkalimet e dhëna nuk janë njësoj, ju lutemi provoni përsëri.'; +$lang['regpwmail'] = 'Fjalëkalimi juaj i DokuWiki-it.'; +$lang['reghere'] = 'Ende nuk keni llogari? Hap një'; +$lang['profna'] = 'Ky wiki nuk e lejon ndryshimin e profilit.'; +$lang['profnochange'] = 'Asnjë ndryshim, asgjë për të bërë.'; +$lang['profnoempty'] = 'Një emër bosh ose adresë email-i bosh nuk lejohet.'; +$lang['profchanged'] = 'Profili i përdoruesit u përditësua me sukses.'; +$lang['pwdforget'] = 'E harruat fjalëkalimin? Merni një të ri'; +$lang['resendna'] = 'Ky wiki nuk e lejon ridërgimin e fjalëkalimeve.'; +$lang['resendpwd'] = 'Dërgo një fjalëkalim të ri për'; +$lang['resendpwdmissing'] = 'Na vjen keq, duhet t\'i plotësoni të gjitha fushat.'; +$lang['resendpwdnouser'] = 'Na vjen keq, nuk mund ta gjejmë këtë përdorues në bazën tonë të të dhënave.'; +$lang['resendpwdbadauth'] = 'Na vjen keq, ky kod autorizimi nuk është i vlefshëm. Sigurohuni që përdoret linkun e plotë të konfirmimit.'; +$lang['resendpwdconfirm'] = 'U dërgua një link konfirmimi nëpërmjet eMail-it.'; +$lang['resendpwdsuccess'] = 'Fjalëkalimi juaj i ri u dërgua nëpërmjet eMail-it.'; +$lang['license'] = 'Përveç rasteve të përcaktuara, përmbajtja në këtë wiki është e liçnsuar nën liçensën e mëposhtme:'; +$lang['licenseok'] = 'Shënim: Duke redaktuar këtë faqe ju bini dakort të liçensoni përmbajtjen tuaj nën liçensën e mëposhtme:'; +$lang['searchmedia'] = 'Kërko emrin e skedarit:'; +$lang['searchmedia_in'] = 'Kërko në %s'; +$lang['txt_upload'] = 'Zgjidh skedarin për ngarkim'; +$lang['txt_filename'] = 'Ngarko si (alternative)'; +$lang['txt_overwrt'] = 'Zëvendëso skedarin ekzistues'; +$lang['lockedby'] = 'Kyçur momentalisht nga'; +$lang['lockexpire'] = 'Kyçi skadon në'; +$lang['willexpire'] = 'Kyçi juaj për redaktimin e kësaj faqeje është duke skaduar.\nPër të shmangur konflikte përdorni butonin Shiko Paraprakisht për të rivendosur kohën e kyçjes.'; +$lang['js']['notsavedyet'] = "Ndryshimet e paruajtura do të humbasin.\nVazhdo me të vërtetë?"; +$lang['rssfailed'] = 'Ndoshi një gabim gjatë kapjes së këtij lajmi:'; +$lang['nothingfound'] = 'Nuk u gjet asgjë.'; +$lang['mediaselect'] = 'Skedarët e Medias'; +$lang['fileupload'] = 'Ngarkoje'; +$lang['uploadsucc'] = 'Ngarkim i suksesshëm'; +$lang['uploadfail'] = 'Ngarkimi dështoi. Ndoshta leje të gabuara?'; +$lang['uploadwrong'] = 'Ngarkimi u refuzua! Prapashtesa e skedarit është e ndaluar!'; +$lang['uploadexist'] = 'Skedari ekziston. Nuk u bë asgjë.'; +$lang['uploadbadcontent'] = 'Përmbajtja e ngarkimit nuk përkoi me prapshtesën e skedarit %s'; +$lang['uploadspam'] = 'Ngarkimi u bllokua nga lista e zezë e spam-eve.'; +$lang['uploadxss'] = 'Ngarkimi u bllokua për dyshim përmbajtjeje jo të sigurt.'; +$lang['uploadsize'] = 'Skedari i ngarkuar ishte tepër i madh. (maksimumi %s)'; +$lang['deletesucc'] = 'Skedari "%s" u fshi.'; +$lang['deletefail'] = '"%s" nuk mundi të fshihej. Kontrollo lejet.'; +$lang['mediainuse'] = 'Skedari "%s" nuk u fshi - është ende në përdorim.'; +$lang['namespaces'] = 'Hapësirat e Emrave'; +$lang['mediafiles'] = 'Skedarët e disponueshëm në'; +$lang['js']['searchmedia'] = 'Kërko për skedarë'; +$lang['js']['keepopen'] = 'Mbaje dritaren të hapur gjatë përzgjedhjes'; +$lang['js']['hidedetails'] = 'Fshih Detajet'; +$lang['js']['nosmblinks'] = 'Lidhja te Windows shares funksionon vetëm në Microsoft Internet Explorer. Ju prapë mund ta kopjoni dhe ngjitni linkun.'; +$lang['js']['linkwiz'] = 'Magjistari i Link'; +$lang['js']['linkto'] = 'Lidh tek:'; +$lang['js']['del_confirm'] = 'Fshiji vërtetë objektet e përzgjedhura?'; +$lang['js']['mu_btn'] = 'Ngarko shumë skedarë njëkohësisht'; +$lang['mediausage'] = 'Përdor sintaksën e mëposhtme për të referuar këtë skedar:'; +$lang['mediaview'] = 'Shiko skedarin origjinal'; +$lang['mediaroot'] = 'rrënja'; +$lang['mediaupload'] = 'Ngarko një skedar tek hapësira e emrit aktuale këtu. Për të krijuaj nënhapësira emri, bashkangjiti ato pas emrit të skedarit "Ngarko Si" duke e ndarë me dy pika (:).'; +$lang['mediaextchange'] = 'Prapashtesa e skedarit u ndërrua nga .%s në .%s!'; +$lang['reference'] = 'Referenca për:'; +$lang['ref_inuse'] = 'Skedari nuk mund të fshihet, sepse është duke u përdorur ende nga faqet e mëposhtme:'; +$lang['ref_hidden'] = 'Disa referenca janë në faqe të cilat ju nuk keni leje t\'i lexoni.'; +$lang['hits'] = 'Pamje'; +$lang['quickhits'] = 'Emrat e faqeve që përkojnë'; +$lang['toc'] = 'Tabela e Përmbajtjeve'; +$lang['current'] = 'aktuale'; +$lang['yours'] = 'Versioni Juaj'; +$lang['diff'] = 'Trego ndryshimet nga rishikimet aktuale'; +$lang['diff2'] = 'Trego ndryshimet mes rishikimeve të përzgjedhura'; +$lang['line'] = 'Vijë'; +$lang['breadcrumb'] = 'Gjurmë'; +$lang['youarehere'] = 'Ju jeni këtu'; +$lang['lastmod'] = 'Redaktuar për herë të fundit'; +$lang['by'] = 'nga'; +$lang['deleted'] = 'u fshi'; +$lang['created'] = 'u krijua'; +$lang['restored'] = 'Kthehu tek një version i vjetër'; +$lang['external_edit'] = 'redaktim i jashtëm'; +$lang['summary'] = 'Përmbledhja redaktimit'; +$lang['noflash'] = 'Nevojitet <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a> për të paraqitur këtë përmbajtje.'; +$lang['download'] = 'Shkarko Copën'; +$lang['mail_newpage'] = 'faqje u shtua:'; +$lang['mail_changed'] = 'faqja u ndryshua:'; +$lang['mail_subscribe_list'] = 'faqet u ndryshuan në hapësirën e emrave:'; +$lang['mail_new_user'] = 'përdorues i ri:'; +$lang['mail_upload'] = 'skedari u ngarkua:'; +$lang['qb_bold'] = 'Tekst i Theksuar'; +$lang['qb_italic'] = 'Tekst i Pjerrët'; +$lang['qb_underl'] = 'Tekst i Nënvijëzuar'; +$lang['qb_code'] = 'Tekst Kodi'; +$lang['qb_strike'] = 'Tekst me Vijë Mespërmes'; +$lang['qb_h1'] = 'Titull me Nivel 1'; +$lang['qb_h2'] = 'Titull me Nivel 2'; +$lang['qb_h3'] = 'Titull me Nivel 3'; +$lang['qb_h4'] = 'Titull me Nivel 4'; +$lang['qb_h5'] = 'Titull me Nivel 5'; +$lang['qb_h'] = 'Titull'; +$lang['qb_hs'] = 'Përzgjidh Titull'; +$lang['qb_hplus'] = 'Titull Më i Lartë'; +$lang['qb_hminus'] = 'Titull Më i Ulët'; +$lang['qb_hequal'] = 'Titull i të Njëjtit Nivel'; +$lang['qb_link'] = 'Lidhje e Brendshme'; +$lang['qb_extlink'] = 'Lidhje e Jashtme '; +$lang['qb_hr'] = 'Vijë Horizontale'; +$lang['qb_ol'] = 'Listë Objektesh të Renditur'; +$lang['qb_ul'] = 'Listë Objektesh të Parenditura'; +$lang['qb_media'] = 'Shto imazhe dhe skedarë të tjerë'; +$lang['qb_sig'] = 'Fut Firmën'; +$lang['qb_smileys'] = 'Smileys'; +$lang['qb_chars'] = 'Karaktere Speciale'; +$lang['upperns'] = 'kërce tek hapësira e emrit prind'; +$lang['admin_register'] = 'Shto Përdorues të Ri'; +$lang['metaedit'] = 'Redakto Metadata'; +$lang['metasaveerr'] = 'Shkrimi i metadata-ve dështoi'; +$lang['metasaveok'] = 'Metadata u ruajt'; +$lang['img_backto'] = 'Mbrapa te'; +$lang['img_title'] = 'Titulli '; +$lang['img_caption'] = 'Titra'; +$lang['img_date'] = 'Data'; +$lang['img_fname'] = 'Emri Skedarit'; +$lang['img_fsize'] = 'Madhësia'; +$lang['img_artist'] = 'Autor'; +$lang['img_copyr'] = 'Mbajtësi i të drejtave të autorit'; +$lang['img_format'] = 'Formati'; +$lang['img_camera'] = 'Kamera'; +$lang['img_keywords'] = 'Fjalë Kyçe'; +$lang['subscr_subscribe_success'] = 'Iu shtua %s listës së abonimeve për %s'; +$lang['subscr_subscribe_error'] = 'Gabim gjatë shtimit të %s listës së abonimeve për %s'; +$lang['subscr_subscribe_noaddress'] = 'Nuk ekziston asnjë adresë e lidhur me regjistrimin tuaj, ju nuk mund t\'i shtoheni listës së abonimeve.'; +$lang['subscr_unsubscribe_success'] = 'U hoq %s nga lista e abonimeve për %s'; +$lang['subscr_unsubscribe_error'] = 'Gabim në heqjen e %s nga lista e abonimeve për %s'; +$lang['subscr_already_subscribed'] = '%s është abonuar njëherë te %s'; +$lang['subscr_not_subscribed'] = '%s nuk është abonuar te %s'; +$lang['subscr_m_not_subscribed'] = 'Momentalisht ju nuk jeni i abonuar në faqen aktuale apo hapësirën e emrit aktual.'; +$lang['subscr_m_new_header'] = 'Shto abonim'; +$lang['subscr_m_current_header'] = 'Abonimet aktuale'; +$lang['subscr_m_unsubscribe'] = 'Fshi Abonimin'; +$lang['subscr_m_subscribe'] = 'Abonohu'; +$lang['subscr_m_receive'] = 'Mer'; +$lang['subscr_style_every'] = 'email mbi çdo ndryshim'; +$lang['subscr_style_digest'] = 'pasqyro email-e ndryshimi pér çdo faqe'; +$lang['subscr_style_list'] = 'listë e faqeve të ndryshuara që nga emaili i fundit'; +$lang['authmodfailed'] = 'Konfigurim i gabuar i autentikimit të përdoruesit. Ju lutem informoni Administratorin tuaj të Wiki-it.'; +$lang['authtempfail'] = 'Autentikimi i përdoruesve është përkohësisht i padisponueshëm. Nëse kjo gjendje vazhdon, ju lutemi të informoni Administratorin tuaj të Wiki-it.'; +$lang['i_chooselang'] = 'Zgjidhni gjuhën tuaj'; +$lang['i_installer'] = 'Installer-i DokuWiki'; +$lang['i_wikiname'] = 'Emri Wiki-it'; +$lang['i_enableacl'] = 'Aktivizo ACL (rekomanduar)'; +$lang['i_superuser'] = 'Superpërdorues'; +$lang['i_problems'] = 'Installer-i gjeti disa probleme, të shfaqura më poshtë. Nuk mund të vazhdoni derisa t\'i keni rregulluar.'; +$lang['i_modified'] = 'Për arsye sigurie ky skript do të punojë vetëm me një instalim të ri dhe të pamodifikuar DokuWiki. +Ose duhet të ekstraktoni skedarët nga e para nga pakoja e shkarkimit ose konsultohuni me <a href="http://dokuwiki.org/install">Dokuwiki installation instructions</a>'; +$lang['i_funcna'] = 'Funksioni PHP <code>%s</code> nuk është i disponueshëm. Mbase siguruesi juaj i host-it e ka çaktivizuar për ndonjë arsye?'; +$lang['i_phpver'] = 'Versioni juaj i PHP <code>%s</code> është më i vogël se ai i duhuri <code>%s</code>. Duhet të përditësoni instalimin tuaj të PHP-së.'; +$lang['i_permfail'] = '<code>%s</code> nuk është e shkruajtshme nga DokuWiki. Duhet të rregulloni lejet e përdorimit për këtë direktori.'; +$lang['i_confexists'] = '<code>%s</code> ekziston njëherë'; +$lang['i_writeerr'] = '<code>%s</code> nuk mundi të krijohej. Duhet të kontrolloni lejet e dirkektorisë/skedarit dhe ta krijoni skedarin manualisht.'; +$lang['i_badhash'] = 'dokuwiki.php e panjohur ose e ndryshuar (hash=code>%s</code>)'; +$lang['i_badval'] = '<code>%s</code> - vlerë e palejuar ose boshe'; +$lang['i_success'] = 'Konfigurimi u mbarua me sukses. Tani mund ta fshini skedarin install.php. Vazhdoni tek <a href="doku.php">DokuWiki juaj i ri.</a>.'; +$lang['i_failure'] = 'Ndodhën disa gabime gjatë shkrimit të skedarit të konfigurimit. Do t\'ju duhet t\'i rregulloni manualisht para se të përdorni <a href="doku.php">DokuWiki-in tuaj të ri.</a>.'; +$lang['i_policy'] = 'Veprimi fillestar ACL'; +$lang['i_pol0'] = 'Wiki i Hapur (lexim, shkrim, ngarkim për këdo)'; +$lang['i_pol1'] = 'Wiki Publike (lexim për këdo, shkrim dhe ngarkim për përdoruesit e regjistruar)'; +$lang['i_pol2'] = 'Wiki e Mbyllur (lexim, shkrim, ngarkim vetëm për përdoruesit e regjistruar)'; +$lang['i_retry'] = 'Provo Përsëri'; +$lang['mu_intro'] = 'Këtu mund të ngarkoni disa skedarë njëkohësisht. Klikoni butonin e shfletuesit për t\'i shtuar ata në radhë. Klikoni Ngarko kur të keni mbaruar.'; +$lang['mu_gridname'] = 'Emri Skedari'; +$lang['mu_gridsize'] = 'Madhësia'; +$lang['mu_gridstat'] = 'Statusi'; +$lang['mu_namespace'] = 'Hapësira Emrit'; +$lang['mu_browse'] = 'Shfleto'; +$lang['mu_toobig'] = 'shumë i/e madhe'; +$lang['mu_ready'] = 'gati për ngarkim'; +$lang['mu_done'] = 'përfundoi'; +$lang['mu_fail'] = 'dështoi'; +$lang['mu_authfail'] = 'sesioni skadoi'; +$lang['mu_progress'] = '@PCT@% u ngarkua'; +$lang['mu_filetypes'] = 'Tipet e Skedarëve të Lejuar'; +$lang['mu_info'] = 'skedarët e ngarkuar'; +$lang['mu_lasterr'] = 'Gabimi i fundit:'; +$lang['recent_global'] = 'Momentalisht jeni duke parë ndryshimet brenda hapësirës së emrit <b>%s</b>. Gjithashtu mund <a href="%s">të shihni ndryshimet më të fundit në të gjithë wiki-n</a>.'; +$lang['years'] = '%d vite më parë'; +$lang['months'] = '%d muaj më parë'; +$lang['weeks'] = '%d javë më parë'; +$lang['days'] = '%d ditë më parë'; +$lang['hours'] = '%d orë më parë'; +$lang['minutes'] = '%d minuta më parë'; +$lang['seconds'] = '%d sekonda më parë'; diff --git a/inc/lang/sq/locked.txt b/inc/lang/sq/locked.txt new file mode 100644 index 000000000..8c86c8be0 --- /dev/null +++ b/inc/lang/sq/locked.txt @@ -0,0 +1,3 @@ +====== Faqe e kyçur ====== + +Kjo faqe është përkohësisht e kyçur për redaktim nga një përdorues tjetër. Duhet të prisni derisa ky përdorues të mbarojë redaktimin ose çelësi të skadojë.
\ No newline at end of file diff --git a/inc/lang/sq/login.txt b/inc/lang/sq/login.txt new file mode 100644 index 000000000..843e47652 --- /dev/null +++ b/inc/lang/sq/login.txt @@ -0,0 +1,3 @@ +====== Hyrje ====== + +Momentalisht nuk jeni të futur në Wiki! Futni informacionet tuaja të autentikimit më poshtë për të hyrë. Duhet t'i keni cookies të aktivizuara për të hyrë.
\ No newline at end of file diff --git a/inc/lang/sq/mailtext.txt b/inc/lang/sq/mailtext.txt new file mode 100644 index 000000000..0746ca42c --- /dev/null +++ b/inc/lang/sq/mailtext.txt @@ -0,0 +1,16 @@ +Një faqe në DokuWiki-n tuaj u shtua ose u ndryshua. Këto janë detajet: + +Data: @DATE@ +Shfletuesi: @BROWSER@ +Adresa IP: @IPADDRESS@ +Emri Hostit: @HOSTNAME@ +Rishikimi i vjetër: @OLDPAGE@ +Rishikimi i ri: @NEWPAGE@ +Përmbledhja redaktimit: @SUMMARY@ +Përdoruesi: @USER@ + +@DIFF@ + +--- +Ky email u gjenerua nga DokuWiki në +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/sq/newpage.txt b/inc/lang/sq/newpage.txt new file mode 100644 index 000000000..1db750d00 --- /dev/null +++ b/inc/lang/sq/newpage.txt @@ -0,0 +1,3 @@ +====== Kjo temë nuk ekziston ende ====== + +Keni ndjekur një link për në një temë që nuk ekziston ende. Nëse ua lejojnë të drejtat, mund ta krijoni duke klikuar butonin "Krijo këtë faqe".
\ No newline at end of file diff --git a/inc/lang/sq/norev.txt b/inc/lang/sq/norev.txt new file mode 100644 index 000000000..0e73223a9 --- /dev/null +++ b/inc/lang/sq/norev.txt @@ -0,0 +1,3 @@ +====== Nuk ekzistion një rishikim i tillë ====== + +Rishikimi i specifikuar nuk ekziston. Përdor buttonin "Rishikime të vjetra" për një listë të rishikimeve të vjetra të këtij dokumenti.
\ No newline at end of file diff --git a/inc/lang/sq/password.txt b/inc/lang/sq/password.txt new file mode 100644 index 000000000..1c8a8694a --- /dev/null +++ b/inc/lang/sq/password.txt @@ -0,0 +1,10 @@ +Përshëndetje @FULLNAME@! + +Këtu janë të dhënat e përdoruesit për @TITLE@ në @DOKUWIKIURL@ + +Hyrje: @LOGIN@ +Fjalëkalimi: @PASSWORD@ + +--- +Ky email u gjenerua nga DokuWiki në +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/sq/preview.txt b/inc/lang/sq/preview.txt new file mode 100644 index 000000000..07148b842 --- /dev/null +++ b/inc/lang/sq/preview.txt @@ -0,0 +1,3 @@ +====== Shikim Paraprak ====== + +Ky është një shikim paraprak i tekstit tuaj. Kujtohuni: **Nuk** është ruajtur ende!
\ No newline at end of file diff --git a/inc/lang/sq/pwconfirm.txt b/inc/lang/sq/pwconfirm.txt new file mode 100644 index 000000000..44d6c2dfe --- /dev/null +++ b/inc/lang/sq/pwconfirm.txt @@ -0,0 +1,13 @@ +Përshëndetje @FULLNAME@! + +Dikush kërkoi një fjalëkalim të ri për hyrjen tuaj @TITLE@ në @DOKUWIKIURL@ + +Nëse nuk kërkuat një fjalëkalim të ri atëherë thjesht injorojeni këtë email. + +Për të konfirmuar që kërkesa u dërgua me të vërtetë nga ju, ju lutemi përdorni link-un e mëposhtëm. + +@CONFIRM@ + +-- +Ky email u gjenerua nga DokuWiki në +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/sq/read.txt b/inc/lang/sq/read.txt new file mode 100644 index 000000000..cbb028048 --- /dev/null +++ b/inc/lang/sq/read.txt @@ -0,0 +1 @@ +Kjo faqe është vetëm për lexim. Mund të shihni kodin burim, por nuk mund ta ndryshoni atë. Kontaktoni administratorin nëse mendoni se kjo është e gabuar.
\ No newline at end of file diff --git a/inc/lang/sq/recent.txt b/inc/lang/sq/recent.txt new file mode 100644 index 000000000..4b3bdf48d --- /dev/null +++ b/inc/lang/sq/recent.txt @@ -0,0 +1,3 @@ +====== Ndryshimet e kohëve të fundit ====== + +Faqet e mëposhtme janë ndryshuar së fundmi.
\ No newline at end of file diff --git a/inc/lang/sq/register.txt b/inc/lang/sq/register.txt new file mode 100644 index 000000000..d4a3ca36b --- /dev/null +++ b/inc/lang/sq/register.txt @@ -0,0 +1,3 @@ +====== Regjistrohuni si një përdorues i ri ====== + +Plotësoni të gjitha informacionet e mëposhtme për të krijuar një llogari në këtë wiki. Sigorohuni që të jepni një **adresë email-i të vlefshme**. Nëse nuk ju kërkohet të futni një fjalëkalim këtu, një fjalëkalim i ri do t'ju dërgohet në adresën e email-it që specifikuat. Emri i hyrjes duhet të një [[doku>pagename|pagename]] e vlefshme.
\ No newline at end of file diff --git a/inc/lang/sq/registermail.txt b/inc/lang/sq/registermail.txt new file mode 100644 index 000000000..ef90e455e --- /dev/null +++ b/inc/lang/sq/registermail.txt @@ -0,0 +1,14 @@ +Një përdorues i ri u regjistrua. Këto janë detajet: + +Emri përdoruesit: @NEWUSER@ +Emri i plotë i përdoruesit: @NEWNAME@ +E-mail: @NEWEMAIL@ + +Data: @DATE@ +Shfletuesi: @BROWSER@ +Adresa IP: @IPADDRESS@ +Emri Hostit: @HOSTNAME@ + +-- +Ky email u gjenerua nga DokuWiki në +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/sq/resendpwd.txt b/inc/lang/sq/resendpwd.txt new file mode 100644 index 000000000..79d0b3e8e --- /dev/null +++ b/inc/lang/sq/resendpwd.txt @@ -0,0 +1,3 @@ +====== Dërgo fjalëkalim të ri ====== + +Ju lutemi futni emrin tuaj të përdorimit në formën e mëposhtme për të kërkuar një fjalëkalim të ri për llogarinë tuaj në këtë wiki. Një link konfirmimi do të dërgohet në adresën tuaj të eMail-it.
\ No newline at end of file diff --git a/inc/lang/sq/revisions.txt b/inc/lang/sq/revisions.txt new file mode 100644 index 000000000..349631ffb --- /dev/null +++ b/inc/lang/sq/revisions.txt @@ -0,0 +1,3 @@ +====== Rishikime të vjetra ====== + +Këto janë rishikimet e vjetra të dokumentit aktual. Për t'u kthyer në një rishikim të vjetër, zgjidhni nga këtu poshtë, klikoni "Redaktoni këtë faqe" dhe ruajeni atë. diff --git a/inc/lang/sq/searchpage.txt b/inc/lang/sq/searchpage.txt new file mode 100644 index 000000000..2f34cabb9 --- /dev/null +++ b/inc/lang/sq/searchpage.txt @@ -0,0 +1,5 @@ +====== Kërko ====== + +Mund të gjeni rezultatet e kërkimit tuaj më poshtë. Nëse nuk e gjetët atë që po kërkonit, mund të krijoni ose redaktoni një faqe pas pyetjes suaj me butonin përkatës. + +===== Rezultate =====
\ No newline at end of file diff --git a/inc/lang/sq/showrev.txt b/inc/lang/sq/showrev.txt new file mode 100644 index 000000000..9c1f761dc --- /dev/null +++ b/inc/lang/sq/showrev.txt @@ -0,0 +1,2 @@ +**Ky është një rishikim i vjetër i dokumentit!** +----
\ No newline at end of file diff --git a/inc/lang/sq/stopwords.txt b/inc/lang/sq/stopwords.txt new file mode 100644 index 000000000..e35669410 --- /dev/null +++ b/inc/lang/sq/stopwords.txt @@ -0,0 +1,39 @@ +# Kjo është një listë e fjalëve që indexer-i injoron, një fjalë për rresht +# Kur të redaktoni këtë faqe sigurohuni që të përdorni fund-rreshtash UNIX (rresht i ri i vetëm) +# Nuk është nevoja të përfshini fjalë më të shkurtra se tre karaktere - këtë injorohen gjithsesi +# Kjo listë bazohet mbi ato që gjenden në http://www.ranks.nl/stopwords/ +about +are +as +an +and +you +your +them +their +com +for +from +into +if +in +is +it +how +of +on +or +that +the +this +to +was +what +when +where +who +will +with +und +the +www
\ No newline at end of file diff --git a/inc/lang/sq/subscr_digest.txt b/inc/lang/sq/subscr_digest.txt new file mode 100644 index 000000000..41404cff9 --- /dev/null +++ b/inc/lang/sq/subscr_digest.txt @@ -0,0 +1,20 @@ +Përshëndetje! + +Faqja @PAGE@ në wiki-n @TITLE@ ndryshoi. +Këtu janë ndryshimet: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Rishikimi i vjetër: @OLDPAGE@ +Rishikimi i ri: @NEWPAGE@ + +Për të fshirë lajmërimet e faqes, mund të hyni tek wiki në +@DOKUWIKIURL@ pastaj vizitoni +@SUBSCRIBE@ +dhe ç'regjistro faqen dhe/ose ndryshimet e hapësirës së emrit. + +-- +Ky eMail është gjeneruar nga DokuWiki në +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/sq/subscr_form.txt b/inc/lang/sq/subscr_form.txt new file mode 100644 index 000000000..7c71a4c73 --- /dev/null +++ b/inc/lang/sq/subscr_form.txt @@ -0,0 +1,3 @@ +====== Menaxhimi i Abonimeve ====== + +Kjo faqe lejon menaxhimin e abonimeve tuaja për faqen dhe hapësirën e emrit aktual.
\ No newline at end of file diff --git a/inc/lang/sq/subscr_list.txt b/inc/lang/sq/subscr_list.txt new file mode 100644 index 000000000..cb10d4223 --- /dev/null +++ b/inc/lang/sq/subscr_list.txt @@ -0,0 +1,13 @@ +Përshëndetje! + +Faqet në hapësirën e emrit @PAGE@ të wiki-t @TITLE@ ndryshuan. Këto janë faqet e ndryshuara: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Për të fshirë lajmërimet e faqes, hyni në wiki-n tek @DOKUWIKIURL@ dhe pastaj vizitoni @SUBSCRIBE@ dhe fshini ndryshimet e faqes dhe/ose të hapësirës së emrit. + +-- +Ky email u gjenerua nga DokuWiki në +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/sq/subscr_single.txt b/inc/lang/sq/subscr_single.txt new file mode 100644 index 000000000..90520be4f --- /dev/null +++ b/inc/lang/sq/subscr_single.txt @@ -0,0 +1,23 @@ +Përshëndetje! + +Faqja @PAGE@ në wiki-n @TITLE@ ndryshoi. +Këto janë ndryshimet: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Data : @DATE@ +Përdoruesi : @USER@ +Përmbledhja redaktimit: @SUMMARY@ +Rishikimi i vjetër: @OLDPAGE@ +Rishikimi i ri: @NEWPAGE@ + +Për të fshirë lajmërimet e faqes, hyni në wiki tek +@DOKUWIKIURL@ dhe pastaj vizitoni +@NEWPAGE@ +dhe fshini ndryshimet e faqes dhe/ose hapësirës së emrit. + +-- +Ky email u gjenerua nga DokuWiki në +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/sq/updateprofile.txt b/inc/lang/sq/updateprofile.txt new file mode 100644 index 000000000..ba76beb1f --- /dev/null +++ b/inc/lang/sq/updateprofile.txt @@ -0,0 +1,3 @@ +====== Përditësoni profilin e llogarisë tuaj ====== + +Duhet vetëm të plotësoni ato fusha që doni të ndryshoni. Mund të mos e ndryshoni emrin tuaj të përdoruesit.
\ No newline at end of file diff --git a/inc/lang/sq/uploadmail.txt b/inc/lang/sq/uploadmail.txt new file mode 100644 index 000000000..e7c62df15 --- /dev/null +++ b/inc/lang/sq/uploadmail.txt @@ -0,0 +1,14 @@ +Një skedar u ngarkua në DokuWiki-n tënd. Detajet janë: + +Skedar: @MEDIA@ +Data: @DATE@ +Shfletuesi: @BROWSER@ +Adresa IP: @IPADDRESS@ +Emri Hostit: @HOSTNAME@ +Madhësia: @SIZE@ +Tipi MIME: @MIME@ +Përdoruesi: @USER@ + +--- +Ky email u gjenerua nga DokuWiki në +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/sr/adminplugins.txt b/inc/lang/sr/adminplugins.txt new file mode 100644 index 000000000..02b1a0452 --- /dev/null +++ b/inc/lang/sr/adminplugins.txt @@ -0,0 +1 @@ +===== Остали додаци =====
\ No newline at end of file diff --git a/inc/lang/sr/draft.txt b/inc/lang/sr/draft.txt index 046c709cf..44affdd34 100644 --- a/inc/lang/sr/draft.txt +++ b/inc/lang/sr/draft.txt @@ -1 +1,5 @@ -====== Пронађена је скица датотеке ======
\ No newline at end of file +====== Пронађена је скица датотеке ====== + +Прошли пут кад сте покушали нешто да измените на овој страници ваше измене нису успешно сачуване. DokuWiki је аутоматски сачувао скицу вашег рада коју сада можете да искористите да бисте наставили са изменама. Испод можете да видите податке који су сачувани током ваше последње посете. + +Молимо вас, одаберите да ли желите да //повратите// ваше измене, //обришете// аутоматски сачувану скицу, или //поништите// цео процес измена.
\ No newline at end of file diff --git a/inc/lang/sr/lang.php b/inc/lang/sr/lang.php index 94829d314..71dde4062 100644 --- a/inc/lang/sr/lang.php +++ b/inc/lang/sr/lang.php @@ -6,6 +6,7 @@ * @author Filip Brcic <brcha@users.sourceforge.net> * @author Иван Петровић petrovicivan@ubuntusrbija.org * @author Ivan Petrovic <petrovicivan@ubuntusrbija.org> + * @author Miroslav Šolti <solti.miroslav@gmail.com> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -39,15 +40,13 @@ $lang['btn_back'] = 'Натраг'; $lang['btn_backlink'] = 'Повратне везе'; $lang['btn_backtomedia'] = 'Врати се на избор медијске датотеке'; $lang['btn_subscribe'] = 'Пријави се на измене'; -$lang['btn_unsubscribe'] = 'Одјави се са измена'; -$lang['btn_subscribens'] = 'Претплати се на промене у именском простору'; -$lang['btn_unsubscribens'] = 'Откажи претплату на промене у именском простору'; $lang['btn_profile'] = 'Ажурирај профил'; $lang['btn_reset'] = 'Поништи'; $lang['btn_resendpwd'] = 'Пошаљи нову лозинку'; $lang['btn_draft'] = 'Измени нацрт'; $lang['btn_recover'] = 'Опорави нацрт'; $lang['btn_draftdel'] = 'Обриши нацрт'; +$lang['btn_revert'] = 'Врати на пређашњу верзију'; $lang['loggedinas'] = 'Пријављен као'; $lang['user'] = 'Корисничко име'; $lang['pass'] = 'Лозинка'; @@ -86,13 +85,46 @@ $lang['resendpwdconfirm'] = 'Потврдни линк је постат к $lang['resendpwdsuccess'] = 'Ваша нова лозинка је послата као е-порука.'; $lang['license'] = 'Осим где је другачије назначено, материјал на овом викију је под следећом лиценцом:'; $lang['licenseok'] = 'Напомена: Изменом ове стране слажете се да ће ваше измене бити под следећом лиценцом:'; +$lang['searchmedia'] = 'Претражи по имену фајла'; +$lang['searchmedia_in'] = 'Претражи у %s'; $lang['txt_upload'] = 'Изаберите датотеку за слање'; $lang['txt_filename'] = 'Унесите вики-име (опционо)'; $lang['txt_overwrt'] = 'Препишите тренутни фајл'; $lang['lockedby'] = 'Тренутно закључано од стране'; $lang['lockexpire'] = 'Закључавање истиче'; $lang['willexpire'] = 'Ваше закључавање за измену ове странице ће да истекне за један минут.\nДа би сте избегли конфликте, искористите дугме за преглед како би сте ресетовали тајмер закључавања.'; -$lang['notsavedyet'] = 'Несачуване измене ће бити изгубљене.\nДа ли стварно желите да наставите?'; +$lang['js']['notsavedyet'] = 'Несачуване измене ће бити изгубљене. +Да ли стварно желите да наставите?'; +$lang['js']['searchmedia'] = 'Потражи фајлове'; +$lang['js']['keepopen'] = 'Задржи отворен прозор након одабира'; +$lang['js']['hidedetails'] = 'Сакриј детаље'; +$lang['js']['mediatitle'] = 'Подешаванја везе'; +$lang['js']['mediadisplay'] = 'Тип везе'; +$lang['js']['mediaalign'] = 'Поравнање'; +$lang['js']['mediasize'] = 'Величина слике'; +$lang['js']['mediatarget'] = 'веза води ка:'; +$lang['js']['mediaclose'] = 'Затвори'; +$lang['js']['mediainsert'] = 'Убаци'; +$lang['js']['mediadisplayimg'] = 'Покажи слику'; +$lang['js']['mediadisplaylnk'] = 'Покажи само везу'; +$lang['js']['mediasmall'] = 'Мала верзија'; +$lang['js']['mediamedium'] = 'Средња верзија'; +$lang['js']['medialarge'] = 'Велика верзија'; +$lang['js']['mediaoriginal'] = 'Оригинална верзија'; +$lang['js']['medialnk'] = 'Веза ка страници са детаљима'; +$lang['js']['mediadirect'] = 'Директна веза ка оригиналу'; +$lang['js']['medianolnk'] = 'Без везе'; +$lang['js']['medianolink'] = 'Не постављај слику као везу'; +$lang['js']['medialeft'] = 'Поравнај слику на лево'; +$lang['js']['mediaright'] = 'Поравнај слику на десно'; +$lang['js']['mediacenter'] = 'Поравнај слику по средини'; +$lang['js']['medianoalign'] = 'Без поравнања'; +$lang['js']['nosmblinks'] = 'Повезивање са Windows дељеним фолдерима ради само у Мајкрософтовом Интернет Претраживачу. +Ипак, можете да ископирате и залепите везу.'; +$lang['js']['linkwiz'] = 'Чаробњак за стварање везе'; +$lang['js']['linkto'] = 'Повежи ка:'; +$lang['js']['del_confirm'] = 'Обриши овај унос?'; +$lang['js']['mu_btn'] = 'Слање више датотека одједном'; $lang['rssfailed'] = 'Дошло је до грешке приликом преузимања овог довода: '; $lang['nothingfound'] = 'Ништа није нађено.'; $lang['mediaselect'] = 'Избор медијске датотеке'; @@ -110,11 +142,7 @@ $lang['deletefail'] = '"%s" није могао да буде изб $lang['mediainuse'] = 'Фајл "%s" није избрисан - још је у употреби.'; $lang['namespaces'] = 'Именски простори'; $lang['mediafiles'] = 'Доступни фајлови у'; -$lang['js']['keepopen'] = 'Задржи отворен прозор након одабира'; -$lang['js']['hidedetails'] = 'Сакриј детаље'; -$lang['js']['nosmblinks'] = 'Повезивање са Windows дељеним фолдерима ради само у Мајкрософтовом Интернет Претраживачу. -Ипак, можете да ископирате и залепите везу.'; -$lang['js']['mu_btn'] = 'Слање више датотека одједном'; +$lang['accessdenied'] = 'Немате дозволу да видите ову страницу.'; $lang['mediausage'] = 'Користите следећу синтаксу за референцу ка овој датотеци:'; $lang['mediaview'] = 'Прикажи оригиналну датотеку'; $lang['mediaroot'] = 'почетак'; @@ -130,6 +158,7 @@ $lang['current'] = 'тренутно'; $lang['yours'] = 'Ваша верзија'; $lang['diff'] = 'прикажи разлике до тренутне верзије'; $lang['diff2'] = 'Прикажи разлике између одабраних ревизија'; +$lang['difflink'] = 'Постави везу ка овом компаративном приказу'; $lang['line'] = 'Линија'; $lang['breadcrumb'] = 'Траг'; $lang['youarehere'] = 'Сада сте овде'; @@ -141,8 +170,10 @@ $lang['restored'] = 'стара верзија повраћена'; $lang['external_edit'] = 'спољна измена'; $lang['summary'] = 'Сажетак измене'; $lang['noflash'] = 'За приказивање ове врсте материјала потребан вам је <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Plugin</a>.'; +$lang['download'] = 'Преузми снипет'; $lang['mail_newpage'] = 'страница додата:'; $lang['mail_changed'] = 'страница измењена:'; +$lang['mail_subscribe_list'] = 'Странице промењене у именском простору:'; $lang['mail_new_user'] = 'нови корисник:'; $lang['mail_upload'] = 'послата датотека:'; $lang['qb_bold'] = 'Мастан текст'; @@ -155,6 +186,11 @@ $lang['qb_h2'] = 'Наслов 2. нивоа'; $lang['qb_h3'] = 'Наслов 3. нивоа'; $lang['qb_h4'] = 'Наслов 4. нивоа'; $lang['qb_h5'] = 'Наслов 5. нивоа'; +$lang['qb_h'] = 'Наслов'; +$lang['qb_hs'] = 'Одабери наслов'; +$lang['qb_hplus'] = 'Виши наслов'; +$lang['qb_hminus'] = 'Нижи наслов'; +$lang['qb_hequal'] = 'Наслов на истом нивоу'; $lang['qb_link'] = 'Унутрашња веза'; $lang['qb_extlink'] = 'Спољашња веза'; $lang['qb_hr'] = 'Хоризонтална линија'; @@ -164,7 +200,7 @@ $lang['qb_media'] = 'Додај слике и друге фајло $lang['qb_sig'] = 'Убаци потпис'; $lang['qb_smileys'] = 'Смешко'; $lang['qb_chars'] = 'Посебни карактери'; -$lang['js']['del_confirm'] = 'Обриши овај унос?'; +$lang['upperns'] = 'Скочи на виши именски простор'; $lang['admin_register'] = 'Додај новог корисника'; $lang['metaedit'] = 'Измени мета-податке'; $lang['metasaveerr'] = 'Записивање мета-података није било успешно'; @@ -180,11 +216,22 @@ $lang['img_copyr'] = 'Права копирања'; $lang['img_format'] = 'Формат'; $lang['img_camera'] = 'Камера'; $lang['img_keywords'] = 'Кључне речи'; -$lang['subscribe_success'] = 'Додао сам %s на листу претплатника за %s'; -$lang['subscribe_error'] = 'Дошло је до грешке при додавању %s на листу претплатника за %s'; -$lang['subscribe_noaddress'] = 'Не постоји е-адреса асоцирана са Вашим налогом. Не можете да будете додати на листу претплатника'; -$lang['unsubscribe_success'] = 'Избрисао сам %s са листе претплатника за %s'; -$lang['unsubscribe_error'] = 'Дошло је до грешке приликом брисања %s са листе претплатника за %s'; +$lang['subscr_subscribe_success'] = '%s је додат на списак претплатника %s'; +$lang['subscr_subscribe_error'] = 'Грешка приликом додавања %s на списак претплатника %s'; +$lang['subscr_subscribe_noaddress'] = 'Не постоји адреса повезана са вашим подацима, стога вас не можемо додати на списак претплатника.'; +$lang['subscr_unsubscribe_success'] = '%s уклоњен са списка претплатника %s'; +$lang['subscr_unsubscribe_error'] = 'Грешка приликом уклањања %s са списка претплатника %s'; +$lang['subscr_already_subscribed'] = '%s је већ претплаћен на %s'; +$lang['subscr_not_subscribed'] = '%s још није претплаћен на %s'; +$lang['subscr_m_not_subscribed'] = 'Тренутно нисте претплаћени на ову страницу или именски простор.'; +$lang['subscr_m_new_header'] = 'Додај претплату'; +$lang['subscr_m_current_header'] = 'Тренутне претплате'; +$lang['subscr_m_unsubscribe'] = 'Уклони претплату'; +$lang['subscr_m_subscribe'] = 'Претплати се'; +$lang['subscr_m_receive'] = 'Прими'; +$lang['subscr_style_every'] = 'имејл о свакој промени'; +$lang['subscr_style_digest'] = 'скраћени имејл о променама за сваку страницу (сваких %.2f дана)'; +$lang['subscr_style_list'] = 'Списак страница промењених након последњег имејла (сваких %.2f дана)'; $lang['authmodfailed'] = 'Лоше подешена провера корисника. Молим Вас да обавестите администратора викија.'; $lang['authtempfail'] = 'Провера корисника је тренутно недоступна. Ако се ситуација настави, молимо Вас да обавестите администратора викија.'; $lang['i_chooselang'] = 'Одаберите језик'; @@ -208,6 +255,7 @@ $lang['i_pol0'] = 'Отворени вики (читање, пи $lang['i_pol1'] = 'Јавни вики (читање за све, писање и слање датотека само за регистроване кориснике)'; $lang['i_pol2'] = 'Затворени вики (читање, писање и слање датотека само за регистроване кориснике)'; $lang['i_retry'] = 'Понови'; +$lang['i_license'] = 'Молимо вас, одаберите лиценцу под коју желите да ставите свој садржај:'; $lang['mu_intro'] = 'Одавде можете послати више датотека одједном. Кликните на дугме Тражи да бисте додали датотеке на листу. Када завршите са одабирањем кликните на Пошаљи.'; $lang['mu_gridname'] = 'Назив датотеке'; $lang['mu_gridsize'] = 'Величина'; @@ -221,4 +269,14 @@ $lang['mu_fail'] = 'није успело'; $lang['mu_authfail'] = 'сесија је истекла'; $lang['mu_progress'] = '@PCT@% послато'; $lang['mu_filetypes'] = 'Дозвољени типови датотека'; +$lang['mu_info'] = 'Фајлови послати'; +$lang['mu_lasterr'] = 'Последња грешка:'; $lang['recent_global'] = 'Тренутно пратите промене у именском простору <b>%s</b>. Такође, можете пратити <a href="%s">прмене на целом викију</a>.'; +$lang['years'] = 'Пре %d година'; +$lang['months'] = 'Пре %d месеци'; +$lang['weeks'] = 'Пре %d недеља'; +$lang['days'] = 'Пре %d дана'; +$lang['hours'] = 'Пре %d сати'; +$lang['minutes'] = 'Пре %d минута'; +$lang['seconds'] = 'Пре %d секунди'; +$lang['wordblock'] = 'Ваше измене нису сачуване јер садрже забрањен текст (спам)'; diff --git a/inc/lang/sr/subscr_digest.txt b/inc/lang/sr/subscr_digest.txt new file mode 100644 index 000000000..db8416833 --- /dev/null +++ b/inc/lang/sr/subscr_digest.txt @@ -0,0 +1,20 @@ +Здраво! + +Страница @PAGE@ под Вики насловом @TITLE@ је промењена. +Ово су промене: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Стара верзија: @OLDPAGE@ +Нова верзија: @NEWPAGE@ + + +Да бисте поништили обавештења о променама страница, улогујте се на Вики овде +@DOKUWIKIURL@ а затим посетите +@SUBSCRIBE@ и поништите обавештавање о променама страница и/или именских простора.. + +-- +Овај имејл је направио DokuWiki на страници +@DOKUWIKIURL@ diff --git a/inc/lang/sr/subscr_form.txt b/inc/lang/sr/subscr_form.txt new file mode 100644 index 000000000..9bf72e424 --- /dev/null +++ b/inc/lang/sr/subscr_form.txt @@ -0,0 +1,3 @@ +===== Управљање претплатама ===== + +Ова страница вам омогућава да управљате својим претплатама на страницу и именски простор на којима се налазите.
\ No newline at end of file diff --git a/inc/lang/sr/subscr_list.txt b/inc/lang/sr/subscr_list.txt new file mode 100644 index 000000000..b3887013b --- /dev/null +++ b/inc/lang/sr/subscr_list.txt @@ -0,0 +1,17 @@ +Здраво! + +Страница у именском простору @PAGE@ под Вики насловом @TITLE@ је промењена. +Ово су промењене странице: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + + +Да бисте поништили обавештења о променама страница, улогујте се на Вики овде +@DOKUWIKIURL@ а затим посетите +@SUBSCRIBE@ и поништите обавештавање о променама страница и/или именских простора.. + +-- +Овај имејл је направио DokuWiki на страници +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/sr/subscr_single.txt b/inc/lang/sr/subscr_single.txt new file mode 100644 index 000000000..c0ed4d87a --- /dev/null +++ b/inc/lang/sr/subscr_single.txt @@ -0,0 +1,23 @@ +Здраво! + +Страница @PAGE@ под Вики насловом @TITLE@ је промењена. +Ово су промене: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Датум : @DATE@ +Корисникr : @USER@ +Измени сиже: @SUMMARY@ +Стара верзија: @OLDPAGE@ +Нова верзија: @NEWPAGE@ + + +Да бисте поништили обавештења о променама страница, улогујте се на Бики овде +@DOKUWIKIURL@ а затим посетите +@SUBSCRIBE@ и поништите обавештавање о променама страница и/или именских простора.. + +-- +Овај имејл је направио DokuWiki на страници +@DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/sr/wordblock.txt b/inc/lang/sr/wordblock.txt deleted file mode 100644 index 56ecde3fd..000000000 --- a/inc/lang/sr/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== СПАМ је блокиран ====== - -Ваше измене **нису** сачуване јер садрже једну или више блокираних речи. Ако сте покушали да спамујете вики -- надрљаћете! Ако мислите да је ово грешка, контактирајте администратора овог викија. - diff --git a/inc/lang/sv/lang.php b/inc/lang/sv/lang.php index 062e83a31..09dec8edd 100644 --- a/inc/lang/sv/lang.php +++ b/inc/lang/sv/lang.php @@ -106,7 +106,7 @@ $lang['txt_overwrt'] = 'Skriv över befintlig fil'; $lang['lockedby'] = 'Låst av'; $lang['lockexpire'] = 'Lås upphör att gälla'; $lang['willexpire'] = 'Ditt redigeringslås för detta dokument kommer snart att upphöra.\nFör att undvika versionskonflikter bör du förhandsgranska ditt dokument för att förlänga redigeringslåset.'; -$lang['notsavedyet'] = 'Det finns ändringar som inte är sparade.\nÄr du säker på att du vill fortsätta?'; +$lang['js']['notsavedyet'] = "Det finns ändringar som inte är sparade.\nÄr du säker på att du vill fortsätta?"; $lang['rssfailed'] = 'Ett fel uppstod när detta RSS-flöde skulle hämtas: '; $lang['nothingfound'] = 'Inga filer hittades.'; $lang['mediaselect'] = 'Mediafiler'; diff --git a/inc/lang/sv/wordblock.txt b/inc/lang/sv/wordblock.txt deleted file mode 100644 index e1b632ce4..000000000 --- a/inc/lang/sv/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== Stoppade SPAM ====== - -Dina ändringar har **inte** sparats på grund av att de innehåller ett eller flera ord som spärrats. Om du har försökt att spara skräp, s k ''spam'' -- Fyyy på dig! Om du anser att det här beror på ett fel, kontakta wikins administratör. - diff --git a/inc/lang/th/lang.php b/inc/lang/th/lang.php index e7937ecbc..ea27793b8 100644 --- a/inc/lang/th/lang.php +++ b/inc/lang/th/lang.php @@ -102,7 +102,7 @@ $lang['txt_overwrt'] = 'เขียนทับไฟล์ที่ $lang['lockedby'] = 'ตอนนี้ถูกล๊อคโดย'; $lang['lockexpire'] = 'การล๊อคจะหมดอายุเมื่อ'; $lang['willexpire'] = 'การล๊อคเพื่อแก้ไขหน้านี้กำลังจะหมดเวลาในอีก \n นาที เพื่อที่จะหลีกเลี่ยงข้อขัดแย้งให้ใช้ปุ่ม "Preview" เพื่อรีเซ็ทเวลาใหม่'; -$lang['notsavedyet'] = 'การแก้ไขที่ไม่ได้บันทึกจะสูญหาย \n ต้องการทำต่อจริงๆหรือ?'; +$lang['js']['notsavedyet'] = "การแก้ไขที่ไม่ได้บันทึกจะสูญหาย \n ต้องการทำต่อจริงๆหรือ?"; $lang['rssfailed'] = 'มีข้อผิดพลาดขณะดูดฟีดนี้'; $lang['nothingfound'] = 'ไม่พบสิ่งใด'; $lang['mediaselect'] = 'ไฟล์สื่อ'; diff --git a/inc/lang/th/wordblock.txt b/inc/lang/th/wordblock.txt deleted file mode 100644 index 653e341e7..000000000 --- a/inc/lang/th/wordblock.txt +++ /dev/null @@ -1,3 +0,0 @@ -====== สแปมถูกกีดกัน ====== - -การเปลี่ยนแปลงของคุณ **ไม่**ได้รับการบันทึกเพราะมันมีหนึ่งข้อความต้องห้ามหรือมากกว่า ถ้าคุณพยายามสแปมวิกินี้ --คุณไม่น่ารักเลยนะ เด็กโง่! แต่ถ้าคุณคิดว่านี่เป็นข้อผิดพลาดแล้วละก็ ช่วยติดต่อผู้ดูแลวิกินี้ให้ด้วย
\ No newline at end of file diff --git a/inc/lang/tr/lang.php b/inc/lang/tr/lang.php index dd045a6c7..c6d20c805 100644 --- a/inc/lang/tr/lang.php +++ b/inc/lang/tr/lang.php @@ -42,15 +42,13 @@ $lang['btn_back'] = 'Geri'; $lang['btn_backlink'] = 'Geri linkler'; $lang['btn_backtomedia'] = 'Çokluortam dosyası seçimine dön'; $lang['btn_subscribe'] = 'Sayfa Değişikliklerini Bildir'; -$lang['btn_unsubscribe'] = 'Sayfa Değişikliklerini Bildirme'; -$lang['btn_subscribens'] = 'Namespace Değişikliklerini Bildir'; -$lang['btn_unsubscribens'] = 'Namespace Değişikliklerini Bildirme'; $lang['btn_profile'] = 'Kullanıcı Bilgilerini Güncelle'; $lang['btn_reset'] = 'Sıfırla'; $lang['btn_resendpwd'] = 'Yeni parola gönder'; $lang['btn_draft'] = 'Taslağı düzenle'; $lang['btn_recover'] = 'Taslağı geri yükle'; $lang['btn_draftdel'] = 'Taslağı sil'; +$lang['btn_revert'] = 'Geri Yükle'; $lang['loggedinas'] = 'Giriş ismi'; $lang['user'] = 'Kullanıcı ismi'; $lang['pass'] = 'Parola'; @@ -89,13 +87,45 @@ $lang['resendpwdconfirm'] = 'Doğrulama linki e-posta adresinize gönderild $lang['resendpwdsuccess'] = 'Yeni parolanız e-posta adresinize gönderildi.'; $lang['license'] = 'Aksi belirtilmediği halde, bu wikinin içeriğinin telif hakları şu lisans ile korunmaktadır:'; $lang['licenseok'] = 'Not: Bu sayfayı değiştirerek yazınızın şu lisans ile yayınlanmasını kabul etmiş olacaksınız:'; +$lang['searchmedia'] = 'Dosya Adı Ara:'; +$lang['searchmedia_in'] = '%s içinde ara'; $lang['txt_upload'] = 'Yüklenecek dosyayı seç'; $lang['txt_filename'] = 'Dosya adı (zorunlu değil)'; $lang['txt_overwrt'] = 'Mevcut dosyanın üstüne yaz'; $lang['lockedby'] = 'Şu an şunun tarafından kilitli:'; $lang['lockexpire'] = 'Kilitin açılma tarihi:'; $lang['willexpire'] = 'Bu sayfayı değiştirme kilidinin süresi yaklaşık bir dakika içinde geçecek.\nÇakışmaları önlemek için önizleme tuşunu kullanarak kilit sayacını sıfırla.'; -$lang['notsavedyet'] = 'Kaydedilmemiş değişiklikler kaybolacak.\nDevam etmek istiyor musunuz?'; +$lang['js']['notsavedyet'] = 'Kaydedilmemiş değişiklikler kaybolacak. +Devam etmek istiyor musunuz?'; +$lang['js']['searchmedia'] = 'Dosyalar için Ara'; +$lang['js']['keepopen'] = 'Seçim yapıldığında bu pencereyi açık tut'; +$lang['js']['hidedetails'] = 'Ayrıntıları gizle'; +$lang['js']['mediatitle'] = 'Bağlantı Ayarları'; +$lang['js']['mediadisplay'] = 'Bağlantı Tipi'; +$lang['js']['mediaalign'] = 'Hizalama'; +$lang['js']['mediasize'] = 'Resim büyüklüğü'; +$lang['js']['mediatarget'] = 'Bağlantı hedefi'; +$lang['js']['mediaclose'] = 'Kapat'; +$lang['js']['mediainsert'] = 'Ekle'; +$lang['js']['mediadisplayimg'] = 'Resmi görüntüle'; +$lang['js']['mediadisplaylnk'] = 'Sadece bağlantıyı görüntüle '; +$lang['js']['mediasmall'] = 'Küçük versiyon'; +$lang['js']['mediamedium'] = 'Orta versiyon'; +$lang['js']['medialarge'] = 'Büyük versiyon'; +$lang['js']['mediaoriginal'] = 'Orjinal versiyon'; +$lang['js']['medialnk'] = 'Detay sayfasına bağlantı'; +$lang['js']['mediadirect'] = 'Orjinal sayfaya bağlantı'; +$lang['js']['medianolnk'] = 'Bağlantı yok'; +$lang['js']['medianolink'] = 'Resme bağlantı verme'; +$lang['js']['medialeft'] = 'Resmi sola hizala'; +$lang['js']['mediaright'] = 'Resmi sağa hizala'; +$lang['js']['mediacenter'] = 'Resmi ortaya hizala'; +$lang['js']['medianoalign'] = 'Hizalama kullanma'; +$lang['js']['nosmblinks'] = 'Windows paylaşımı sadece Microsoft Internet Explorer ile çalışmaktadır. Yine de hala bağlantıyı kopyalayıp yapıştırarak kullanabilirsiniz. '; +$lang['js']['linkwiz'] = 'Bağlantı sihirbazı'; +$lang['js']['linkto'] = 'Bağlantı:'; +$lang['js']['del_confirm'] = 'Bu girişi sil?'; +$lang['js']['mu_btn'] = 'Birden fazla dosyayı bir seferde gönder'; $lang['rssfailed'] = 'Bu beslemeyi çekerken hata oluştu: '; $lang['nothingfound'] = 'Hiçbir şey yok.'; $lang['mediaselect'] = 'Çokluortam dosyası seçimi'; @@ -113,10 +143,7 @@ $lang['deletefail'] = '"%s" silinemedi - yetkileri kontrol et.'; $lang['mediainuse'] = '"%s" dosyası silinmedi, hala kullanımda.'; $lang['namespaces'] = 'Namespaces'; $lang['mediafiles'] = 'Şuradaki kullanıma hazır dosyalar:'; -$lang['js']['keepopen'] = 'Seçim yapıldığında bu pencereyi açık tut'; -$lang['js']['hidedetails'] = 'Ayrıntıları gizle'; -$lang['js']['nosmblinks'] = 'Windows paylaşımı sadece Microsoft Internet Explorer ile çalışmaktadır. Yine de hala bağlantıyı kopyalayıp yapıştırarak kullanabilirsiniz. '; -$lang['js']['mu_btn'] = 'Birden fazla dosyayı bir seferde gönder'; +$lang['accessdenied'] = 'Bu sayfayı görüntüleme yetkiniz bulunmamaktadır'; $lang['mediausage'] = 'Şu '; $lang['mediaview'] = 'Özgün dosyayı göster'; $lang['mediaroot'] = 'Kök dizini'; @@ -132,6 +159,7 @@ $lang['current'] = 'mevcut'; $lang['yours'] = 'Senin Sürümün'; $lang['diff'] = 'Kullanılan sürüm ile farkları göster'; $lang['diff2'] = 'Seçili sürümler arasındaki farkı göster'; +$lang['difflink'] = 'Karşılaştırma görünümüne bağlantı'; $lang['line'] = 'Satır'; $lang['breadcrumb'] = 'İz'; $lang['youarehere'] = 'Buradasınız'; @@ -143,6 +171,7 @@ $lang['restored'] = 'eski sürüme dönüldü'; $lang['external_edit'] = 'Dışarıdan düzenle'; $lang['summary'] = 'Özeti düzenle'; $lang['noflash'] = 'Bu içeriği göstermek için <a href="http://www.adobe.com/products/flashplayer/">Adobe Flash Eklentisi</a> gerekmektedir.'; +$lang['download'] = 'Parçacığı indir'; $lang['mail_newpage'] = 'sayfa eklenme:'; $lang['mail_changed'] = 'sayfa değiştirilme:'; $lang['mail_new_user'] = 'yeni kullanıcı'; @@ -166,7 +195,6 @@ $lang['qb_media'] = 'Resim ve başka dosyalar ekle'; $lang['qb_sig'] = 'İmza Ekle'; $lang['qb_smileys'] = 'Gülen Yüzler'; $lang['qb_chars'] = 'Özel Karakterler'; -$lang['js']['del_confirm'] = 'Bu girişi sil?'; $lang['admin_register'] = 'Yeni kullanıcı ekle...'; $lang['metaedit'] = 'Metaverileri Değiştir'; $lang['metasaveerr'] = 'Metaveri yazma başarısız '; @@ -182,11 +210,6 @@ $lang['img_copyr'] = 'Telif Hakkı'; $lang['img_format'] = 'Biçim'; $lang['img_camera'] = 'Fotoğraf Makinası'; $lang['img_keywords'] = 'Anahtar Sözcükler'; -$lang['subscribe_success'] = '%s, %s\'in abonelik listesine eklendi'; -$lang['subscribe_error'] = '%s; %s\'in abonelik listesine eklenirken hata oluştu'; -$lang['subscribe_noaddress'] = 'Giriş bilgilerinizle ilişkili bir adres yok, abonelik listesine eklenemezsiniz'; -$lang['unsubscribe_success'] = '%s, %s\'in abonelik listesinden çıkartıldı'; -$lang['unsubscribe_error'] = '%s, %s\'in listesinden çıkartılırken hata oluştu'; $lang['authmodfailed'] = 'Yanlış kullanıcı onaylama ayarı. Lütfen Wiki yöneticisine bildiriniz.'; $lang['authtempfail'] = 'Kullanıcı doğrulama geçici olarak yapılamıyor. Eğer bu durum devam ederse lütfen Wiki yöneticine haber veriniz.'; $lang['i_chooselang'] = 'Dili seçiniz'; diff --git a/inc/lang/tr/wordblock.txt b/inc/lang/tr/wordblock.txt deleted file mode 100644 index 506cbc793..000000000 --- a/inc/lang/tr/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== SPAM bloke edildi ====== - -Değişiklikleriniz **kaydedilmedi**, çünkü değişikliklerinizde bir veya daha fazla engellenen kelime var. Eğer Wikiyi spamlamaya çalışıyorsan -- Oh olsun! Eğer bunun bir hata olduğunu düşünüyorsanız, bu Wiki yöneticisiyle iletişime geçin. - diff --git a/inc/lang/uk/lang.php b/inc/lang/uk/lang.php index 5f94d9b47..d3d5d7acf 100644 --- a/inc/lang/uk/lang.php +++ b/inc/lang/uk/lang.php @@ -8,6 +8,7 @@ * @author okunia@gmail.com * @author Oleksandr Kunytsia <okunia@gmail.com> * @author Uko uko@uar.net + * @author Ulrikhe Lukoie <lukoie@gmail>.com */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -41,9 +42,6 @@ $lang['btn_back'] = 'Назад'; $lang['btn_backlink'] = 'Посилання сюди'; $lang['btn_backtomedia'] = 'Назад до вибору медіа-файлу'; $lang['btn_subscribe'] = 'Підписатися'; -$lang['btn_unsubscribe'] = 'Відписатися'; -$lang['btn_subscribens'] = 'Підписатися на зміни в просторі імен'; -$lang['btn_unsubscribens'] = 'Відписатися від змін простору імен'; $lang['btn_profile'] = 'Оновити профіль'; $lang['btn_reset'] = 'Очисти'; $lang['btn_resendpwd'] = 'Надіслати новий пароль'; @@ -97,7 +95,38 @@ $lang['txt_overwrt'] = 'Перезаписати існуючий фа $lang['lockedby'] = 'Заблоковано'; $lang['lockexpire'] = 'Блокування завершується в'; $lang['willexpire'] = 'Блокування редагування цієї сторінки закінчується через хвилину.\n Щоб уникнути конфліктів використовуйте кнопку перегляду для продовження блокування.'; -$lang['notsavedyet'] = 'Незбережені зміни будуть втрачені.\n Дійсно продовжити?'; +$lang['js']['notsavedyet'] = 'Незбережені зміни будуть втрачені. + Дійсно продовжити?'; +$lang['js']['searchmedia'] = 'Шукати файли'; +$lang['js']['keepopen'] = 'Тримати вікно відкритим під час вибору'; +$lang['js']['hidedetails'] = 'Сховати деталі'; +$lang['js']['mediatitle'] = 'Налаштунки посилання'; +$lang['js']['mediadisplay'] = 'Тип посилання'; +$lang['js']['mediaalign'] = 'Вирівнювання'; +$lang['js']['mediasize'] = 'Розмір зображення'; +$lang['js']['mediatarget'] = 'Ціль посилання'; +$lang['js']['mediaclose'] = 'Закрити'; +$lang['js']['mediainsert'] = 'Вставити'; +$lang['js']['mediadisplayimg'] = 'Показати зображення.'; +$lang['js']['mediadisplaylnk'] = 'Показати тілки посилання.'; +$lang['js']['mediasmall'] = 'Зменшена версіяЁ'; +$lang['js']['mediamedium'] = 'Середня версія'; +$lang['js']['medialarge'] = 'Велика версія'; +$lang['js']['mediaoriginal'] = 'Оигінальна версія'; +$lang['js']['medialnk'] = 'Посилання на сторінку з описом'; +$lang['js']['mediadirect'] = 'Пряме посилання на оригінал'; +$lang['js']['medianolnk'] = 'Немає посилання'; +$lang['js']['medianolink'] = 'Не посилайтеся на зображення'; +$lang['js']['medialeft'] = 'Вирівняти зображення по лівому краю.'; +$lang['js']['mediaright'] = 'Вирівняти зображення по правому краю.'; +$lang['js']['mediacenter'] = 'Вирівняти зображення по центру.'; +$lang['js']['medianoalign'] = 'Не вирівнювати зображення.'; +$lang['js']['nosmblinks'] = 'Посилання на мережеві папки працює лише в Internet Explorer. +Ви можете скопіювати посилання і відкрити його за допомогою Internet Explorer.'; +$lang['js']['linkwiz'] = 'Чарівник посилань'; +$lang['js']['linkto'] = 'Посилання на:'; +$lang['js']['del_confirm'] = 'Дійсно знищити обрані елементи?'; +$lang['js']['mu_btn'] = 'Завантажити одночасно кілька файлів'; $lang['rssfailed'] = 'Виникла помилка під час отримання RSS-стрічки: '; $lang['nothingfound'] = 'Нічого не знайдено.'; $lang['mediaselect'] = 'Вибір медіа-файлу'; @@ -115,15 +144,7 @@ $lang['deletefail'] = 'Неможливо знищити "%s" - пе $lang['mediainuse'] = '"%s" не знищено - файл використовується.'; $lang['namespaces'] = 'Простори імен'; $lang['mediafiles'] = 'Доступні файли'; -$lang['js']['searchmedia'] = 'Шукати файли'; -$lang['js']['keepopen'] = 'Тримати вікно відкритим під час вибору'; -$lang['js']['hidedetails'] = 'Сховати деталі'; -$lang['js']['nosmblinks'] = 'Посилання на мережеві папки працює лише в Internet Explorer. -Ви можете скопіювати посилання і відкрити його за допомогою Internet Explorer.'; -$lang['js']['linkwiz'] = 'Чарівник посилань'; -$lang['js']['linkto'] = 'Посилання на:'; -$lang['js']['del_confirm'] = 'Дійсно знищити обрані елементи?'; -$lang['js']['mu_btn'] = 'Завантажити одночасно кілька файлів'; +$lang['accessdenied'] = 'Вам не дозволено переглядати цю сторінку.'; $lang['mediausage'] = 'Для посилання на цей файл використовуйте такий синтаксис:'; $lang['mediaview'] = 'Переглянути початковий файл'; $lang['mediaroot'] = 'корінь'; @@ -139,6 +160,7 @@ $lang['current'] = 'поточний'; $lang['yours'] = 'Ваша версія'; $lang['diff'] = 'показати відмінності від поточної версії'; $lang['diff2'] = 'Показати відмінності між вибраними версіями'; +$lang['difflink'] = 'Посилання на цей список змін'; $lang['line'] = 'Рядок'; $lang['breadcrumb'] = 'Відвідано'; $lang['youarehere'] = 'Ви тут'; @@ -153,6 +175,7 @@ $lang['noflash'] = 'Для перегляду цієї сторі $lang['download'] = 'Завантажити фрагмент'; $lang['mail_newpage'] = 'сторінку додано:'; $lang['mail_changed'] = 'сторінку змінено:'; +$lang['mail_subscribe_list'] = 'сторінки, що змінено у просторі імен:'; $lang['mail_new_user'] = 'новий користувач:'; $lang['mail_upload'] = 'завантажено файл:'; $lang['qb_bold'] = 'Напівжирний текст'; @@ -195,11 +218,22 @@ $lang['img_copyr'] = 'Авторські права'; $lang['img_format'] = 'Формат'; $lang['img_camera'] = 'Камера'; $lang['img_keywords'] = 'Ключові слова'; -$lang['subscribe_success'] = '%s доданий(на) до списку розсилки для сторінки %s'; -$lang['subscribe_error'] = 'Помилка при доданні %s до списку розсилки для сторінки %s'; -$lang['subscribe_noaddress'] = 'У вашому профілі немає адреси e-mail, ви не можете користуватися списками розсилки'; -$lang['unsubscribe_success'] = '%s вилучено зі списку розсилки для сторінки %s'; -$lang['unsubscribe_error'] = 'Помилка при вилученні %s зі списку розсилки для %s'; +$lang['subscr_subscribe_success'] = 'Додано %s до списку підписки для %s'; +$lang['subscr_subscribe_error'] = 'Помилка при додавані %s до списку підписки для %s'; +$lang['subscr_subscribe_noaddress'] = 'Немає адреси, асоційованої з Вашим логіном, тому Ві не можете бути додані до списку підписки.'; +$lang['subscr_unsubscribe_success'] = 'Видалено %s із списку підписки для %s'; +$lang['subscr_unsubscribe_error'] = 'Помилка при видаленні %s із списку підписки для %s'; +$lang['subscr_already_subscribed'] = '%s вже підписаний до %s'; +$lang['subscr_not_subscribed'] = '%s не підписаний до %s'; +$lang['subscr_m_not_subscribed'] = 'Ви зараз не підписані до цієї сторінки або простору імен.'; +$lang['subscr_m_new_header'] = 'Додати підписку'; +$lang['subscr_m_current_header'] = 'Поточні підписки'; +$lang['subscr_m_unsubscribe'] = 'Відписатися'; +$lang['subscr_m_subscribe'] = 'Підписатися'; +$lang['subscr_m_receive'] = 'Отримувати'; +$lang['subscr_style_every'] = 'пошту про кожну зміну'; +$lang['subscr_style_digest'] = 'лист з дайджестом для зміни кожної сторінки (кожні %.2f днів)'; +$lang['subscr_style_list'] = 'список змінених сторінок від часу отримання останньоголиста (кожні %.2f днів)'; $lang['authmodfailed'] = 'Неправильна настройка автентифікації користувача. Будь ласка, повідомте про це адміністратора.'; $lang['authtempfail'] = 'Автентифікація користувача тимчасово не доступна. Якщо це буде продовжуватись, будь ласка, повідомте адміністратора.'; $lang['i_chooselang'] = 'Виберіть мову'; @@ -226,6 +260,7 @@ $lang['i_pol0'] = 'Відкрита Вікі (читання, з $lang['i_pol1'] = 'Публічна Вікі (читання для всіх, запис та завантаження для зареєстрованих користувачів)'; $lang['i_pol2'] = 'Закрита Вікі (читання, запис та завантаження тільки для зареєстрованих користувачів)'; $lang['i_retry'] = 'Повторити'; +$lang['i_license'] = 'Будь ласка, виберіть тип ліцензії, під якою Ві бажаєте опублікувати матеріал:'; $lang['mu_intro'] = 'Тут ви можете завантажити одночасно кілька файлів. Натисніть кнопку "Вибрати", щоб додати файли в чергу. Після закінчення натисніть кнопку "Завантажити"'; $lang['mu_gridname'] = 'Ім’я файлу'; $lang['mu_gridsize'] = 'Розмір'; @@ -242,3 +277,11 @@ $lang['mu_filetypes'] = 'Дозволені типи файлів'; $lang['mu_info'] = 'Файли завантажено'; $lang['mu_lasterr'] = 'Остання помилка:'; $lang['recent_global'] = 'Ви переглядаєте зміни в межах простору імен <b>%s</b>. Також можна <a href="%s">переглянути зміни в межах усієї Вікі</a>.'; +$lang['years'] = '%d років тому'; +$lang['months'] = '%d місяців тому'; +$lang['weeks'] = '%d тижнів тому'; +$lang['days'] = '%d днів тому'; +$lang['hours'] = '%d годин тому'; +$lang['minutes'] = '%d хвилин тому'; +$lang['seconds'] = '%d секунд тому'; +$lang['wordblock'] = 'Ваші зміни не збережено, тому що вони розпізнані як такі, що містять заблокований текст(спам).'; diff --git a/inc/lang/uk/pwconfirm.txt b/inc/lang/uk/pwconfirm.txt index 7a46f536a..54d7a200c 100644 --- a/inc/lang/uk/pwconfirm.txt +++ b/inc/lang/uk/pwconfirm.txt @@ -9,6 +9,5 @@ @CONFIRM@ --- -Це повідомлення створене ДокуВікі з -@DOKUWIKIURL@ +-- +Цей лист було надіслано за допомогою служби повідомлень DokuWiki, сайту @DOKUWIKIURL@ diff --git a/inc/lang/uk/registermail.txt b/inc/lang/uk/registermail.txt index 9b55d85bf..28735ed79 100644 --- a/inc/lang/uk/registermail.txt +++ b/inc/lang/uk/registermail.txt @@ -9,6 +9,5 @@ E-Mail : @NEWEMAIL@ Адреса IP : @IPADDRESS@ Назва хосту : @HOSTNAME@ --- -Це повідомлення створене ДокуВікі з -@DOKUWIKIURL@ +-- +Цей лист було надіслано за допомогою служби повідомлень DokuWiki, сайту @DOKUWIKIURL@ diff --git a/inc/lang/uk/subscr_digest.txt b/inc/lang/uk/subscr_digest.txt new file mode 100644 index 000000000..32379182b --- /dev/null +++ b/inc/lang/uk/subscr_digest.txt @@ -0,0 +1,17 @@ +Доброго дня! + +Сторінку @PAGE@ у @TITLE@ було змінено. +Зміни, які відбулися: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Стара версія: @OLDPAGE@ +Нова версія: @NEWPAGE@ + +Щоб відмовитися від повідомлень про редагування сторінок, зайдіть під своїм ім'ям на сайт @DOKUWIKIURL@, потім відвідайте сторінку @SUBSCRIBE@ +та відпишіться від повідомлень про зміну сторінки та/або простору імен. + +-- +Цей лист було надіслано за допомогою служби повідомлень DokuWiki, сайту @DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/uk/subscr_form.txt b/inc/lang/uk/subscr_form.txt new file mode 100644 index 000000000..1c9d6d229 --- /dev/null +++ b/inc/lang/uk/subscr_form.txt @@ -0,0 +1,3 @@ +====== Керування підписками ====== + +Ця сторінка дозволяє Вам керувати Вашими підписками для цієї сторінки та простору імен.
\ No newline at end of file diff --git a/inc/lang/uk/subscr_list.txt b/inc/lang/uk/subscr_list.txt new file mode 100644 index 000000000..7a538bc1f --- /dev/null +++ b/inc/lang/uk/subscr_list.txt @@ -0,0 +1,14 @@ +Доброго дня! + +Було змінено сторінки простору імен @PAGE@ у @TITLE@. +Зміни, які вібдулися: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Щоб відмовитися від повідомлень про редагування сторінок, зайдіть під своїм ім'ям на сайт @DOKUWIKIURL@, потім відвідайте сторінку @SUBSCRIBE@ +та відпишіться від повідомлень про зміну сторінки та/або простору імен. + +-- +Цей лист було надіслано за допомогою служби повідомлень DokuWiki, сайту @DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/uk/subscr_single.txt b/inc/lang/uk/subscr_single.txt new file mode 100644 index 000000000..22a06917e --- /dev/null +++ b/inc/lang/uk/subscr_single.txt @@ -0,0 +1,20 @@ +Доброго часу! + +Сторінку @PAGE@ у @TITLE@ було змінено. +Зміни, що відбулися: + +-------------------------------------------------------- +@DIFF@ +-------------------------------------------------------- + +Дата : @DATE@ +Користувач : @USER@ +Підсумок: @SUMMARY@ +Стара версія: @OLDPAGE@ +Нова версія: @NEWPAGE@ + +Щоб відмовитися від повідомлень про редагування сторінок, зайдіть під своїм ім'ям на сайт @DOKUWIKIURL@, потім відвідайте сторінку @NEWPAGE@ +та відпишіться від повідомлень про зміну сторінки та/або простору імен. + +-- +Цей лист було надіслано за допомогою служби повідомлень DokuWiki, сайту @DOKUWIKIURL@
\ No newline at end of file diff --git a/inc/lang/uk/wordblock.txt b/inc/lang/uk/wordblock.txt deleted file mode 100644 index 869f93a87..000000000 --- a/inc/lang/uk/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== Заблокований СПАМ ====== - -Ваші зміни **не були** збережені тому що вони містять одне чи декілька заблокованих слів. Якщо ви намагались додати спам до вікі, то нехай вам буде соромно. Якщо ви вважаєте, що це помилка, зверніться до адміністратора цієї Вікі. - diff --git a/inc/lang/vi/lang.php b/inc/lang/vi/lang.php index 23f42d69a..168fe3595 100644 --- a/inc/lang/vi/lang.php +++ b/inc/lang/vi/lang.php @@ -51,7 +51,7 @@ $lang['lockedby'] = 'Đang khoá bởi'; $lang['lockexpire'] = 'Khoá sẽ hết hạn vào lúc'; $lang['willexpire'] = 'Khoá của bạn để biên soạn trang này sẽ hết hạn trong vòng 1 phút.\nĐể tránh xung đột, bạn nên bấm nút xem trước để lập lại thời gian khoá'; -$lang['notsavedyet'] = 'Hiện có những thay đổi chưa được bảo lưu, và sẽ mất.\nBạn thật sự muốn tiếp tục?'; +$lang['js']['notsavedyet'] = "Hiện có những thay đổi chưa được bảo lưu, và sẽ mất.\nBạn thật sự muốn tiếp tục?"; $lang['rssfailed'] = 'Rút nguồn này gặp phải lỗi'; $lang['nothingfound']= 'Không tìm được gì'; diff --git a/inc/lang/vi/wordblock.txt b/inc/lang/vi/wordblock.txt deleted file mode 100644 index b219ca141..000000000 --- a/inc/lang/vi/wordblock.txt +++ /dev/null @@ -1,3 +0,0 @@ -====== SPAM bị chận ====== - -Các thay đổi **không** được bảo lưu vì có một hoặc nhiều từ bị ngăn chận. Nếu muốn spam Wiki này -- ngưng liền! Nếu đây là một sai lầm, liên lạc với người quản lý của Wiki. diff --git a/inc/lang/zh-tw/lang.php b/inc/lang/zh-tw/lang.php index f936123f4..eca7de4c8 100644 --- a/inc/lang/zh-tw/lang.php +++ b/inc/lang/zh-tw/lang.php @@ -98,7 +98,7 @@ $lang['txt_overwrt'] = '是否要覆蓋原有檔案'; $lang['lockedby'] = '目前已被下列人員鎖定'; $lang['lockexpire'] = '預計解除鎖定於'; $lang['willexpire'] = '您目前編輯這頁的鎖定將會在一分鐘內解除。\若要避免發生意外,請按「預覽」鍵來重新設定鎖定狀態'; -$lang['notsavedyet'] = '有尚未儲存的變更將會遺失。\n真的要繼續嗎?'; +$lang['js']['notsavedyet'] = "有尚未儲存的變更將會遺失。\n真的要繼續嗎?"; $lang['rssfailed'] = '當抓取餵送過來的 RSS 資料時發生錯誤: '; $lang['nothingfound'] = '沒找到任何結果。'; $lang['mediaselect'] = '選擇圖檔'; diff --git a/inc/lang/zh-tw/wordblock.txt b/inc/lang/zh-tw/wordblock.txt deleted file mode 100644 index 671e88b87..000000000 --- a/inc/lang/zh-tw/wordblock.txt +++ /dev/null @@ -1,4 +0,0 @@ -====== 拒絕垃圾資料(SPAM blocked) ====== - -您的變更並**不會**被存起來,因為它包含了一些被限制的字眼。若您還試著要丟垃圾資料到 Wiki 的話, -- Bad dog! 不過,若您認為這是誤判,那麼請與這個 Wiki 的管理員(Admin)談。 - diff --git a/inc/lang/zh/adminplugins.txt b/inc/lang/zh/adminplugins.txt new file mode 100644 index 000000000..66cee4509 --- /dev/null +++ b/inc/lang/zh/adminplugins.txt @@ -0,0 +1 @@ +===== 附加插件 =====
\ No newline at end of file diff --git a/inc/lang/zh/lang.php b/inc/lang/zh/lang.php index ffb759fde..2de962ce9 100644 --- a/inc/lang/zh/lang.php +++ b/inc/lang/zh/lang.php @@ -8,6 +8,7 @@ * @author George Sheraton guxd@163.com * @author Simon zhan <simonzhan@21cn.com> * @author mr.jinyi@gmail.com + * @author ben <ben@livetom.com> */ $lang['encoding'] = 'utf-8'; $lang['direction'] = 'ltr'; @@ -50,6 +51,7 @@ $lang['btn_resendpwd'] = '发送新密码'; $lang['btn_draft'] = '编辑草稿'; $lang['btn_recover'] = '恢复草稿'; $lang['btn_draftdel'] = '删除草稿'; +$lang['btn_revert'] = '恢复'; $lang['loggedinas'] = '登录为'; $lang['user'] = '用户名'; $lang['pass'] = '密码'; @@ -88,13 +90,15 @@ $lang['resendpwdconfirm'] = '确认链接已经通过邮件发送给您了 $lang['resendpwdsuccess'] = '您的新密码已经通过邮件发送给您了。'; $lang['license'] = '除额外注明的地方外,本维基上的内容按下列许可协议发布:'; $lang['licenseok'] = '当您选择开始编辑本页,即寓示你同意将你贡献的内容按下列许可协议发布:'; +$lang['searchmedia'] = '查找文件名:'; +$lang['searchmedia_in'] = '在%s中查找'; $lang['txt_upload'] = '选择要上传的文件'; $lang['txt_filename'] = '上传并重命名为(可选)'; $lang['txt_overwrt'] = '覆盖已存在的同名文件'; $lang['lockedby'] = '目前已被下列人员锁定'; $lang['lockexpire'] = '预计锁定解除于'; $lang['willexpire'] = '您对本页的独有编辑权将于一分钟之后解除。\n为了防止与其他人的编辑冲突,请使用预览按钮重设计时器。'; -$lang['notsavedyet'] = '未保存的更改将丢失。\n真的要继续?'; +$lang['js']['notsavedyet'] = "未保存的更改将丢失。\n真的要继续?"; $lang['rssfailed'] = '获取该 RSS 信息时产生错误:'; $lang['nothingfound'] = '什么都没有找到。'; $lang['mediaselect'] = '媒体文件'; @@ -112,10 +116,14 @@ $lang['deletefail'] = '无法删除“%s”- 请检查权限。'; $lang['mediainuse'] = '文件“%s”无法删除 - 它正被使用中。'; $lang['namespaces'] = '命名空间'; $lang['mediafiles'] = '可用的文件'; +$lang['js']['searchmedia'] = '查找文件'; $lang['js']['keepopen'] = '选中后不自动关闭窗口'; $lang['js']['hidedetails'] = '隐藏详细信息'; $lang['js']['nosmblinks'] = '连接到 Windows 共享功能只有在 IE 浏览器中才能正常使用。 但您仍能复制并粘贴该链接。'; +$lang['js']['linkwiz'] = '链接向导'; +$lang['js']['linkto'] = '链接到:'; +$lang['js']['del_confirm'] = '真的要删除选中的项目吗?'; $lang['js']['mu_btn'] = '一次上传了多个文件'; $lang['mediausage'] = '使用下列字符链接到该文件:'; $lang['mediaview'] = '查看该文件'; @@ -157,6 +165,11 @@ $lang['qb_h2'] = '标题 H2 '; $lang['qb_h3'] = '标题 H3'; $lang['qb_h4'] = '标题 H4'; $lang['qb_h5'] = '标题 H5'; +$lang['qb_h'] = '标题'; +$lang['qb_hs'] = '选择标题'; +$lang['qb_hplus'] = '上级标题'; +$lang['qb_hminus'] = '下级标题'; +$lang['qb_hequal'] = '同级标题'; $lang['qb_link'] = '内部链接'; $lang['qb_extlink'] = '外部链接'; $lang['qb_hr'] = '水平线'; @@ -166,7 +179,7 @@ $lang['qb_media'] = '插入图像或其他文件'; $lang['qb_sig'] = '插入签名'; $lang['qb_smileys'] = '表情符号'; $lang['qb_chars'] = '特殊字符'; -$lang['js']['del_confirm'] = '真的要删除选中的项目吗?'; +$lang['upperns'] = '跳转到父级名空间'; $lang['admin_register'] = '添加新用户'; $lang['metaedit'] = '编辑元数据'; $lang['metasaveerr'] = '写入元数据失败'; @@ -227,4 +240,12 @@ $lang['mu_fail'] = '失败'; $lang['mu_authfail'] = '会话过期'; $lang['mu_progress'] = '@PCT@% 上传完成'; $lang['mu_filetypes'] = '允许的文件类型'; +$lang['mu_info'] = '文件已上传。'; $lang['recent_global'] = '您当前看到的是<b>%s</b> 名称空间的变动。你还可以在<a href="%s">查看整个维基的近期变动</a>。'; +$lang['years'] = '%d年前'; +$lang['months'] = '%d月前'; +$lang['weeks'] = '%d周前'; +$lang['days'] = '%d天前'; +$lang['hours'] = '%d小时前'; +$lang['minutes'] = '%d分钟前'; +$lang['seconds'] = '%d秒前'; diff --git a/inc/lang/zh/wordblock.txt b/inc/lang/zh/wordblock.txt deleted file mode 100644 index 72c473a59..000000000 --- a/inc/lang/zh/wordblock.txt +++ /dev/null @@ -1,3 +0,0 @@ -====== 拒绝垃圾资料 ====== - -您的更改 **并没有** 保存,因为它包含了一个或多个被限制的字眼。如果您尝试为本维基添加垃圾信息 -- 你是一个大坏蛋!如果您认为这是一个系统错误,请联系本维基的管理员。 diff --git a/inc/load.php b/inc/load.php new file mode 100644 index 000000000..2f5be6d63 --- /dev/null +++ b/inc/load.php @@ -0,0 +1,89 @@ +<?php +/** + * Load all internal libraries and setup class autoloader + * + * @author Andreas Gohr <andi@splitbrain.org> + */ + +// setup class autoloader +spl_autoload_register('load_autoload'); + +// require all the common libraries +// for a few of these order does matter +require_once(DOKU_INC.'inc/blowfish.php'); +require_once(DOKU_INC.'inc/actions.php'); +require_once(DOKU_INC.'inc/changelog.php'); +require_once(DOKU_INC.'inc/common.php'); +require_once(DOKU_INC.'inc/confutils.php'); +require_once(DOKU_INC.'inc/pluginutils.php'); +require_once(DOKU_INC.'inc/plugin.php'); +require_once(DOKU_INC.'inc/events.php'); +require_once(DOKU_INC.'inc/form.php'); +require_once(DOKU_INC.'inc/fulltext.php'); +require_once(DOKU_INC.'inc/html.php'); +require_once(DOKU_INC.'inc/httputils.php'); +require_once(DOKU_INC.'inc/indexer.php'); +require_once(DOKU_INC.'inc/infoutils.php'); +require_once(DOKU_INC.'inc/io.php'); +require_once(DOKU_INC.'inc/mail.php'); +require_once(DOKU_INC.'inc/media.php'); +require_once(DOKU_INC.'inc/pageutils.php'); +require_once(DOKU_INC.'inc/parserutils.php'); +require_once(DOKU_INC.'inc/search.php'); +require_once(DOKU_INC.'inc/subscription.php'); +require_once(DOKU_INC.'inc/template.php'); +require_once(DOKU_INC.'inc/toolbar.php'); +require_once(DOKU_INC.'inc/utf8.php'); +require_once(DOKU_INC.'inc/auth.php'); + +/** + * spl_autoload_register callback + * + * Contains a static list of DokuWiki's core classes and automatically + * require()s their associated php files when an object is instantiated. + * + * @author Andreas Gohr <andi@splitbrain.org> + * @todo add generic loading of plugins and other generically named classes + */ +function load_autoload($name){ + static $classes = null; + if(is_null($classes)) $classes = array( + 'DokuHTTPClient' => DOKU_INC.'inc/HTTPClient.php', + 'JSON' => DOKU_INC.'inc/JSON.php', + 'adLDAP' => DOKU_INC.'inc/adLDAP.php', + 'Diff' => DOKU_INC.'inc/DifferenceEngine.php', + 'UnifiedDiffFormatter' => DOKU_INC.'inc/DifferenceEngine.php', + 'TableDiffFormatter' => DOKU_INC.'inc/DifferenceEngine.php', + 'cache' => DOKU_INC.'inc/cache.php', + 'cache_parser' => DOKU_INC.'inc/cache.php', + 'cache_instructions' => DOKU_INC.'inc/cache.php', + 'cache_renderer' => DOKU_INC.'inc/cache.php', + 'Doku_Event' => DOKU_INC.'inc/events.php', + 'Doku_Event_Handler' => DOKU_INC.'inc/events.php', + 'EmailAddressValidator' => DOKU_INC.'inc/EmailAddressValidator.php', + 'JpegMeta' => DOKU_INC.'inc/JpegMeta.php', + 'SimplePie' => DOKU_INC.'inc/SimplePie.php', + 'FeedParser' => DOKU_INC.'inc/FeedParser.php', + 'IXR_Server' => DOKU_INC.'inc/IXR_Library.php', + 'IXR_Client' => DOKU_INC.'inc/IXR_Library.php', + 'IXR_IntrospectionServer' => DOKU_INC.'inc/IXR_Library.php', + 'Doku_Plugin_Controller'=> DOKU_INC.'inc/plugincontroller.class.php', + 'GeSHi' => DOKU_INC.'inc/geshi.php', + 'TarLib' => DOKU_INC.'inc/TarLib.class.php', + 'ZipLib' => DOKU_INC.'inc/ZipLib.class.php', + 'DokuWikiFeedCreator' => DOKU_INC.'inc/feedcreator.class.php', + 'Doku_Parser_Mode' => DOKU_INC.'inc/parser/parser.php', + 'SafeFN' => DOKU_INC.'inc/SafeFN.class.php', + + 'DokuWiki_Action_Plugin' => DOKU_PLUGIN.'action.php', + 'DokuWiki_Admin_Plugin' => DOKU_PLUGIN.'admin.php', + 'DokuWiki_Syntax_Plugin' => DOKU_PLUGIN.'syntax.php', + + ); + + if(isset($classes[$name])){ + require_once($classes[$name]); + return; + } +} + diff --git a/inc/mail.php b/inc/mail.php index 3b0592b8b..38232d110 100644 --- a/inc/mail.php +++ b/inc/mail.php @@ -7,12 +7,11 @@ */ if(!defined('DOKU_INC')) die('meh.'); -require_once(DOKU_INC.'inc/utf8.php'); -require_once(DOKU_INC.'inc/EmailAddressValidator.php'); // end of line for mail lines - RFC822 says CRLF but postfix (and other MTAs?) // think different if(!defined('MAILHEADER_EOL')) define('MAILHEADER_EOL',"\n"); +if(!defined('QUOTEDPRINTABLE_EOL')) define('QUOTEDPRINTABLE_EOL',"\015\012"); #define('MAILHEADER_ASCIIONLY',1); /** @@ -256,11 +255,11 @@ function mail_quotedprintable_encode($sText,$maxlen=74,$bEmulate_imap_8bit=true) // but this wouldn't be caught by such an easy RegExp if($maxlen){ preg_match_all( '/.{1,'.($maxlen - 2).'}([^=]{0,2})?/', $sLine, $aMatch ); - $sLine = implode( '=' . MAILHEADER_EOL, $aMatch[0] ); // add soft crlf's + $sLine = implode( '=' . QUOTEDPRINTABLE_EOL, $aMatch[0] ); // add soft crlf's } } // join lines into text - return implode(MAILHEADER_EOL,$aLines); + return implode(QUOTEDPRINTABLE_EOL,$aLines); } diff --git a/inc/media.php b/inc/media.php index 3850f4e33..668f42d6a 100644 --- a/inc/media.php +++ b/inc/media.php @@ -8,9 +8,6 @@ if(!defined('DOKU_INC')) die('meh.'); if(!defined('NL')) define('NL',"\n"); -require_once(DOKU_INC.'inc/html.php'); -require_once(DOKU_INC.'inc/search.php'); -require_once(DOKU_INC.'inc/JpegMeta.php'); /** * Lists pages which currently use a media file selected for deletion @@ -152,7 +149,6 @@ function media_inuse($id) { global $conf; $mediareferences = array(); if($conf['refcheck']){ - require_once(DOKU_INC.'inc/fulltext.php'); $mediareferences = ft_mediause($id,$conf['refshow']); if(!count($mediareferences)) { return false; @@ -230,7 +226,6 @@ function media_delete($id,$auth){ function media_upload($ns,$auth){ if($auth < AUTH_UPLOAD) return false; if(!checkSecurityToken()) return false; - require_once(DOKU_INC.'inc/confutils.php'); global $lang; global $conf; diff --git a/inc/pageutils.php b/inc/pageutils.php index 9c192e5e6..969a6ea0d 100644 --- a/inc/pageutils.php +++ b/inc/pageutils.php @@ -23,10 +23,11 @@ function getID($param='id',$clean=true){ $id = isset($_REQUEST[$param]) ? $_REQUEST[$param] : null; - $request = $_SERVER['REQUEST_URI']; - //construct page id from request URI if(empty($id) && $conf['userewrite'] == 2){ + $request = $_SERVER['REQUEST_URI']; + $script = ''; + //get the script URL if($conf['basedir']){ $relpath = ''; @@ -35,15 +36,14 @@ function getID($param='id',$clean=true){ } $script = $conf['basedir'].$relpath.basename($_SERVER['SCRIPT_FILENAME']); - }elseif($_SERVER['DOCUMENT_ROOT'] && $_SERVER['PATH_TRANSLATED']){ - $request = preg_replace ('/^'.preg_quote($_SERVER['DOCUMENT_ROOT'],'/').'/','', - $_SERVER['PATH_TRANSLATED']); + }elseif($_SERVER['PATH_INFO']){ + $request = $_SERVER['PATH_INFO']; + }elseif($_SERVER['SCRIPT_NAME']){ + $script = $_SERVER['SCRIPT_NAME']; }elseif($_SERVER['DOCUMENT_ROOT'] && $_SERVER['SCRIPT_FILENAME']){ $script = preg_replace ('/^'.preg_quote($_SERVER['DOCUMENT_ROOT'],'/').'/','', $_SERVER['SCRIPT_FILENAME']); $script = '/'.$script; - }else{ - $script = $_SERVER['SCRIPT_NAME']; } //clean script and request (fixes a windows problem) @@ -185,10 +185,10 @@ function noNSorNS($id) { global $conf; $p = noNS($id); - if ($p == $conf['start']) { + if ($p == $conf['start'] || $p == false) { $p = curNS($id); if ($p == false) { - return noNS($id); + return $conf['start']; } } return $p; @@ -198,7 +198,7 @@ function noNSorNS($id) { * Creates a XHTML valid linkid from a given headline title * * @param string $title The headline title - * @param array $check List of existing IDs + * @param array $check Existing IDs (title => number) * @author Andreas Gohr <andi@splitbrain.org> */ function sectionID($title,&$check) { @@ -212,12 +212,11 @@ function sectionID($title,&$check) { if(is_array($check)){ // make sure tiles are unique - $num = ''; - while(in_array($title.$num,$check)){ - ($num) ? $num++ : $num = 1; + if (!array_key_exists ($title,$check)) { + $check[$title] = 0; + } else { + $title .= ++ $check[$title]; } - $title = $title.$num; - $check[] = $title; } return $title; @@ -319,15 +318,7 @@ function metaFiles($id){ $ns = getNS($id); $dir = ($ns) ? metaFN($ns,'').'/' : metaFN($ns,''); $files = array(); - - $dh = @opendir($dir); - if(!$dh) return $files; - while(($file = readdir($dh)) !== false){ - if(strpos($file,$name.'.') === 0 && !is_dir($dir.$file)) - $files[] = $dir.$file; - } - closedir($dh); - + $files = glob($dir.$name.'.*'); return $files; } @@ -446,7 +437,8 @@ function resolve_pageid($ns,&$page,&$exists){ $file = wikiFN($page); // if ends with colon or slash we have a namespace link - if(substr($page,-1) == ':' || ($conf['useslash'] && substr($page,-1) == '/')){ + if(in_array(substr($page,-1), array(':', ';')) || + ($conf['useslash'] && substr($page,-1) == '/')){ if(page_exists($page.$conf['start'])){ // start page inside namespace $page = $page.$conf['start']; @@ -534,4 +526,71 @@ function isVisiblePage($id){ return !isHiddenPage($id); } +/** + * Format an id for output to a user + * + * Namespaces are denoted by a trailing “:*”. The root namespace is + * “*”. Output is escaped. + * + * @author Adrian Lang <lang@cosmocode.de> + */ + +function prettyprint_id($id) { + if (!$id || $id === ':') { + return '*'; + } + if ((substr($id, -1, 1) === ':')) { + $id .= '*'; + } + return hsc($id); +} + +/** + * Encode a UTF-8 filename to use on any filesystem + * + * Uses the 'fnencode' option to determine encoding + * + * When the second parameter is true the string will + * be encoded only if non ASCII characters are detected - + * This makes it safe to run it multiple times on the + * same string (default is true) + * + * @author Andreas Gohr <andi@splitbrain.org> + * @see urlencode + */ +function utf8_encodeFN($file,$safe=true){ + global $conf; + if($conf['fnencode'] == 'utf-8') return $file; + + if($safe && preg_match('#^[a-zA-Z0-9/_\-\.%]+$#',$file)){ + return $file; + } + + if($conf['fnencode'] == 'safe'){ + return SafeFN::encode($file); + } + + $file = urlencode($file); + $file = str_replace('%2F','/',$file); + return $file; +} + +/** + * Decode a filename back to UTF-8 + * + * Uses the 'fnencode' option to determine encoding + * + * @author Andreas Gohr <andi@splitbrain.org> + * @see urldecode + */ +function utf8_decodeFN($file){ + global $conf; + if($conf['fnencode'] == 'utf-8') return $file; + + if($conf['fnencode'] == 'safe'){ + return SafeFN::decode($file); + } + + return urldecode($file); +} diff --git a/inc/parser/handler.php b/inc/parser/handler.php index 9fe5866ad..0b8b79254 100644 --- a/inc/parser/handler.php +++ b/inc/parser/handler.php @@ -12,15 +12,12 @@ class Doku_Handler { var $status = array( 'section' => false, - 'section_edit_start' => -1, - 'section_edit_level' => 1, - 'section_edit_title' => '' ); var $rewriteBlocks = true; function Doku_Handler() { - $this->CallWriter = & new Doku_Handler_CallWriter($this); + $this->CallWriter = new Doku_Handler_CallWriter($this); } function _addCall($handler, $args, $pos) { @@ -40,14 +37,10 @@ class Doku_Handler { if ( $this->status['section'] ) { $last_call = end($this->calls); array_push($this->calls,array('section_close',array(), $last_call[2])); - if ($this->status['section_edit_start']>1) { - // ignore last edit section if there is only one header - array_push($this->calls,array('section_edit',array($this->status['section_edit_start'], 0, $this->status['section_edit_level'], $this->status['section_edit_title']), $last_call[2])); - } } if ( $this->rewriteBlocks ) { - $B = & new Doku_Handler_Block(); + $B = new Doku_Handler_Block(); $this->calls = $B->process($this->calls); } @@ -97,8 +90,6 @@ class Doku_Handler { } function header($match, $state, $pos) { - global $conf; - // get level and title $title = trim($match); $level = 7 - strspn($title,'='); @@ -108,13 +99,6 @@ class Doku_Handler { if ($this->status['section']) $this->_addCall('section_close',array(),$pos); - if ($level<=$conf['maxseclevel']) { - $this->_addCall('section_edit',array($this->status['section_edit_start'], $pos-1, $this->status['section_edit_level'], $this->status['section_edit_title']), $pos); - $this->status['section_edit_start'] = $pos; - $this->status['section_edit_level'] = $level; - $this->status['section_edit_title'] = $title; - } - $this->_addCall('header',array($title,$level,$pos), $pos); $this->_addCall('section_open',array($level),$pos); @@ -212,7 +196,7 @@ class Doku_Handler { $this->_footnote = true; - $ReWriter = & new Doku_Handler_Nest($this->CallWriter,'footnote_close'); + $ReWriter = new Doku_Handler_Nest($this->CallWriter,'footnote_close'); $this->CallWriter = & $ReWriter; $this->_addCall('footnote_open', array(), $pos); break; @@ -240,7 +224,7 @@ class Doku_Handler { function listblock($match, $state, $pos) { switch ( $state ) { case DOKU_LEXER_ENTER: - $ReWriter = & new Doku_Handler_List($this->CallWriter); + $ReWriter = new Doku_Handler_List($this->CallWriter); $this->CallWriter = & $ReWriter; $this->_addCall('list_open', array($match), $pos); break; @@ -302,7 +286,7 @@ class Doku_Handler { function preformatted($match, $state, $pos) { switch ( $state ) { case DOKU_LEXER_ENTER: - $ReWriter = & new Doku_Handler_Preformatted($this->CallWriter); + $ReWriter = new Doku_Handler_Preformatted($this->CallWriter); $this->CallWriter = & $ReWriter; $this->_addCall('preformatted_start',array(), $pos); break; @@ -328,7 +312,7 @@ class Doku_Handler { switch ( $state ) { case DOKU_LEXER_ENTER: - $ReWriter = & new Doku_Handler_Quote($this->CallWriter); + $ReWriter = new Doku_Handler_Quote($this->CallWriter); $this->CallWriter = & $ReWriter; $this->_addCall('quote_start',array($match), $pos); break; @@ -360,21 +344,16 @@ class Doku_Handler { function code($match, $state, $pos, $type='code') { if ( $state == DOKU_LEXER_UNMATCHED ) { $matches = explode('>',$match,2); - $matches[0] = trim($matches[0]); - - list($language,$filename) = explode(' ',$matches[0],2); - $language = trim($language); - $filename = trim($filename); - if ( $language == '' ) $language = null; - if ( $language == '-' ) $language = null; - if ( $filename == '' ) $filename = null; - # We shortcut html here. - if($language == 'html') $language = 'html4strict'; - $this->_addCall( - $type, - array($matches[1],$language,$filename), - $pos - ); + + $param = preg_split('/\s+/', $matches[0], 2, PREG_SPLIT_NO_EMPTY); + while(count($param) < 2) array_push($param, null); + + // We shortcut html here. + if ($param[0] == 'html') $param[0] = 'html4strict'; + if ($param[0] == '-') $param[0] = null; + array_unshift($param, $matches[1]); + + $this->_addCall($type, $param, $pos); } return true; } @@ -580,10 +559,10 @@ class Doku_Handler { case DOKU_LEXER_ENTER: - $ReWriter = & new Doku_Handler_Table($this->CallWriter); + $ReWriter = new Doku_Handler_Table($this->CallWriter); $this->CallWriter = & $ReWriter; - $this->_addCall('table_start', array(), $pos); + $this->_addCall('table_start', array($pos + 1), $pos); if ( trim($match) == '^' ) { $this->_addCall('tableheader', array(), $pos); } else { @@ -592,7 +571,7 @@ class Doku_Handler { break; case DOKU_LEXER_EXIT: - $this->_addCall('table_end', array(), $pos); + $this->_addCall('table_end', array($pos), $pos); $this->CallWriter->process(); $ReWriter = & $this->CallWriter; $this->CallWriter = & $ReWriter->CallWriter; @@ -1196,7 +1175,7 @@ class Doku_Handler_Table { $this->tableStart($call); break; case 'table_row': - $this->tableRowClose(array('tablerow_close',$call[1],$call[2])); + $this->tableRowClose($call); $this->tableRowOpen(array('tablerow_open',$call[1],$call[2])); break; case 'tableheader': @@ -1204,7 +1183,7 @@ class Doku_Handler_Table { $this->tableCell($call); break; case 'table_end': - $this->tableRowClose(array('tablerow_close',$call[1],$call[2])); + $this->tableRowClose($call); $this->tableEnd($call); break; default: @@ -1216,13 +1195,13 @@ class Doku_Handler_Table { } function tableStart($call) { - $this->tableCalls[] = array('table_open',array(),$call[2]); + $this->tableCalls[] = array('table_open',$call[1],$call[2]); $this->tableCalls[] = array('tablerow_open',array(),$call[2]); $this->firstCell = true; } function tableEnd($call) { - $this->tableCalls[] = array('table_close',array(),$call[2]); + $this->tableCalls[] = array('table_close',$call[1],$call[2]); $this->finalizeTable(); } @@ -1242,7 +1221,7 @@ class Doku_Handler_Table { break; } } - $this->tableCalls[] = $call; + $this->tableCalls[] = array('tablerow_close', array(), $call[2]); if ( $this->currentCols > $this->maxCols ) { $this->maxCols = $this->currentCols; @@ -1287,6 +1266,7 @@ class Doku_Handler_Table { // Adjust to num cols not num col delimeters $this->tableCalls[0][1][] = $this->maxCols - 1; $this->tableCalls[0][1][] = $this->maxRows; + $this->tableCalls[0][1][] = array_shift($this->tableCalls[0][1]); } else { trigger_error('First element in table call list is not table_open'); } @@ -1299,19 +1279,24 @@ class Doku_Handler_Table { // Look for the colspan elements and increment the colspan on the // previous non-empty opening cell. Once done, delete all the cells // that contain colspans - foreach ( $this->tableCalls as $key => $call ) { + for ($key = 0 ; $key < count($this->tableCalls) ; ++$key) { + $call = $this->tableCalls[$key]; - if ( $call[0] == 'tablerow_open' ) { + switch ($call[0]) { + case 'tablerow_open': $lastRow++; $lastCell = 0; + break; - } else if ( $call[0] == 'tablecell_open' || $call[0] == 'tableheader_open' ) { + case 'tablecell_open': + case 'tableheader_open': $lastCell++; $cellKey[$lastRow][$lastCell] = $key; + break; - } else if ( $call[0] == 'table_align' ) { + case 'table_align': $prev = in_array($this->tableCalls[$key-1][0], array('tablecell_open', 'tableheader_open')); $next = in_array($this->tableCalls[$key+1][0], array('tablecell_close', 'tableheader_close')); @@ -1335,8 +1320,9 @@ class Doku_Handler_Table { // Now convert the whitespace back to cdata $this->tableCalls[$key][0] = 'cdata'; + break; - } else if ( $call[0] == 'colspan' ) { + case 'colspan': $this->tableCalls[$key-1][1][0] = false; @@ -1356,8 +1342,9 @@ class Doku_Handler_Table { $toDelete[] = $key-1; $toDelete[] = $key; $toDelete[] = $key+1; + break; - } else if ( $call[0] == 'rowspan' ) { + case 'rowspan': if ( $this->tableCalls[$key-1][0] == 'cdata' ) { // ignore rowspan if previous call was cdata (text mixed with :::) we don't have to check next call as that wont match regex @@ -1365,25 +1352,48 @@ class Doku_Handler_Table { } else { - $this->tableCalls[$key-1][1][2] = false; - + $spanning_cell = null; for($i = $lastRow-1; $i > 0; $i--) { if ( $this->tableCalls[$cellKey[$i][$lastCell]][0] == 'tablecell_open' || $this->tableCalls[$cellKey[$i][$lastCell]][0] == 'tableheader_open' ) { - if ( false !== $this->tableCalls[$cellKey[$i][$lastCell]][1][2] ) { - $this->tableCalls[$cellKey[$i][$lastCell]][1][2]++; + if ($this->tableCalls[$cellKey[$i][$lastCell]][1][2] >= $lastRow - $i) { + $spanning_cell = $i; break; } } } + if (is_null($spanning_cell)) { + // No spanning cell found, so convert this cell to + // an empty one to avoid broken tables + $this->tableCells[$key][1][1] = ''; + continue; + } + $this->tableCalls[$cellKey[$spanning_cell][$lastCell]][1][2]++; + + $this->tableCalls[$key-1][1][2] = false; $toDelete[] = $key-1; $toDelete[] = $key; - $toDelete[] = $key+1; + $toDelete[] = $key+1; } + break; + + case 'tablerow_close': + + // Fix broken tables by adding missing cells + while (++$lastCell < $this->maxCols) { + array_splice($this->tableCalls, $key, 0, array( + array('tablecell_open', array(1, null, 1), $call[2]), + array('cdata', array(''), $call[2]), + array('tablecell_close', array(), $call[2]))); + $key += 3; + } + + break; + } } @@ -1504,13 +1514,7 @@ class Doku_Handler_Block { //remove the whole paragraph array_splice($this->calls,$i); }else{ - if ($this->calls[count($this->calls)-1][0] == 'section_edit') { - $tmp = array_pop($this->calls); - $this->calls[] = array('p_close',array(), $pos); - $this->calls[] = $tmp; - } else { - $this->calls[] = array('p_close',array(), $pos); - } + $this->calls[] = array('p_close',array(), $pos); } $this->inParagraph = false; diff --git a/inc/parser/lexer.php b/inc/parser/lexer.php index afd260a05..211945d8f 100644 --- a/inc/parser/lexer.php +++ b/inc/parser/lexer.php @@ -295,7 +295,7 @@ class Doku_Lexer { $this->_case = $case; $this->_regexes = array(); $this->_parser = &$parser; - $this->_mode = &new Doku_LexerStateStack($start); + $this->_mode = new Doku_LexerStateStack($start); $this->_mode_handlers = array(); } diff --git a/inc/parser/metadata.php b/inc/parser/metadata.php index fc60e5774..f635ea1d5 100644 --- a/inc/parser/metadata.php +++ b/inc/parser/metadata.php @@ -334,8 +334,7 @@ class Doku_Renderer_metadata extends Doku_Renderer { $this->_firstimage($name['src']); if ($this->capture){ - if ($name) $this->doc .= $name; - else $this->doc .= '<'.$url.'>'; + $this->doc .= $this->_getLinkTitle($name, '<' . $url . '>'); } } @@ -345,7 +344,7 @@ class Doku_Renderer_metadata extends Doku_Renderer { if ($this->capture){ list($wikiUri, $hash) = explode('#', $wikiUri, 2); - $name = $this->_getLinkTitle($name, $wikiName.'>'.$wikiUri); + $name = $this->_getLinkTitle($name, $wikiUri); $this->doc .= $name; } } diff --git a/inc/parser/parser.php b/inc/parser/parser.php index a78b08a29..435b8aa46 100644 --- a/inc/parser/parser.php +++ b/inc/parser/parser.php @@ -61,7 +61,7 @@ class Doku_Parser { function addBaseMode(& $BaseMode) { $this->modes['base'] = & $BaseMode; if ( !$this->Lexer ) { - $this->Lexer = & new Doku_Lexer($this->Handler,'base', true); + $this->Lexer = new Doku_Lexer($this->Handler,'base', true); } $this->modes['base']->Lexer = & $this->Lexer; } @@ -413,8 +413,8 @@ class Doku_Parser_Mode_listblock extends Doku_Parser_Mode { } function connectTo($mode) { - $this->Lexer->addEntryPattern('\n {2,}[\-\*]',$mode,'listblock'); - $this->Lexer->addEntryPattern('\n\t{1,}[\-\*]',$mode,'listblock'); + $this->Lexer->addEntryPattern('[ \t]*\n {2,}[\-\*]',$mode,'listblock'); + $this->Lexer->addEntryPattern('[ \t]*\n\t{1,}[\-\*]',$mode,'listblock'); $this->Lexer->addPattern('\n {2,}[\-\*]','listblock'); $this->Lexer->addPattern('\n\t{1,}[\-\*]','listblock'); diff --git a/inc/parser/renderer.php b/inc/parser/renderer.php index 6082e935d..7e52cfce2 100644 --- a/inc/parser/renderer.php +++ b/inc/parser/renderer.php @@ -49,6 +49,15 @@ class Doku_Renderer extends DokuWiki_Plugin { trigger_error('getFormat() not implemented in '.get_class($this), E_USER_WARNING); } + /** + * Allow the plugin to prevent DokuWiki from reusing an instance + * + * @return bool false if the plugin has to be instantiated + */ + function isSingleton() { + return false; + } + //handle plugin rendering function plugin($name,$data){ @@ -85,8 +94,6 @@ class Doku_Renderer extends DokuWiki_Plugin { function header($text, $level, $pos) {} - function section_edit($start, $end, $level, $name) {} - function section_open($level) {} function section_close() {} @@ -231,9 +238,9 @@ class Doku_Renderer extends DokuWiki_Plugin { $src,$title=NULL,$align=NULL,$width=NULL,$height=NULL,$cache=NULL ) {} - function table_open($maxcols = NULL, $numrows = NULL){} + function table_open($maxcols = NULL, $numrows = NULL, $pos){} - function table_close(){} + function table_close($pos){} function tablerow_open(){} @@ -264,20 +271,12 @@ class Doku_Renderer extends DokuWiki_Plugin { list($name,$hash) = explode('#',$name,2); if($hash) return $hash; - //trim colons or slash of a namespace link - $name = rtrim($name,':'); - if($conf['useslash']) - $name = rtrim($name,'/'); - + $name = strtr($name,';',':'); if($conf['useslash']){ - $nssep = '[:;/]'; - }else{ - $nssep = '[:;]'; + $name = strtr($name,'/',':'); } - $name = preg_replace('!.*'.$nssep.'!','',$name); - if(!$name) return $this->_simpleTitle($conf['start']); - return $name; + return noNSorNS($name); } /** diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php index 4d5333f7a..5a3d945d1 100644 --- a/inc/parser/xhtml.php +++ b/inc/parser/xhtml.php @@ -29,6 +29,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer { var $doc = ''; // will contain the whole document var $toc = array(); // will contain the Table of Contents + private $sectionedits = array(); // A stack of section edit data var $headers = array(); var $footnotes = array(); @@ -39,6 +40,40 @@ class Doku_Renderer_xhtml extends Doku_Renderer { var $_counter = array(); // used as global counter, introduced for table classes var $_codeblock = 0; // counts the code and file blocks, used to provide download links + /** + * Register a new edit section range + * + * @param $type string The section type identifier + * @param $title string The section title + * @param $start int The byte position for the edit start + * @return string A marker class for the starting HTML element + * @author Adrian Lang <lang@cosmocode.de> + */ + public function startSectionEdit($start, $type, $title = null) { + static $lastsecid = 0; + $this->sectionedits[] = array(++$lastsecid, $start, $type, $title); + return 'sectionedit' . $lastsecid; + } + + /** + * Finish an edit section range + * + * @param $end int The byte position for the edit end; null for the rest of + the page + * @author Adrian Lang <lang@cosmocode.de> + */ + public function finishSectionEdit($end = null) { + list($id, $start, $type, $title) = array_pop($this->sectionedits); + if (!is_null($end) && $end <= $start) { + return; + } + $this->doc .= "<!-- EDIT$id " . strtoupper($type) . ' '; + if (!is_null($title)) { + $this->doc .= '"' . str_replace('"', '', $title) . '" '; + } + $this->doc .= "[$start-" . (is_null($end) ? '' : $end) . '] -->'; + } + function getFormat(){ return 'xhtml'; } @@ -51,6 +86,17 @@ class Doku_Renderer_xhtml extends Doku_Renderer { } function document_end() { + // Finish open section edits. + while (count($this->sectionedits) > 0) { + if ($this->sectionedits[count($this->sectionedits) - 1][1] <= 1) { + // If there is only one section, do not write a section edit + // marker. + array_pop($this->sectionedits); + } else { + $this->finishSectionEdit(); + } + } + if ( count ($this->footnotes) > 0 ) { $this->doc .= '<div class="footnotes">'.DOKU_LF; @@ -106,6 +152,8 @@ class Doku_Renderer_xhtml extends Doku_Renderer { } function header($text, $level, $pos) { + global $conf; + if(!$text) return; //skip empty headlines $hid = $this->_headerToLink($text,true); @@ -122,30 +170,24 @@ class Doku_Renderer_xhtml extends Doku_Renderer { } $this->lastlevel = $level; + if ($level <= $conf['maxseclevel'] && + count($this->sectionedits) > 0 && + $this->sectionedits[count($this->sectionedits) - 1][2] === 'section') { + $this->finishSectionEdit($pos - 1); + } + // write the header - $this->doc .= DOKU_LF.'<h'.$level.'><a name="'.$hid.'" id="'.$hid.'">'; + $this->doc .= DOKU_LF.'<h'.$level; + if ($level <= $conf['maxseclevel']) { + $this->doc .= ' class="' . $this->startSectionEdit($pos, 'section', $text) . '"'; + } + $this->doc .= '><a name="'.$hid.'" id="'.$hid.'">'; $this->doc .= $this->_xmlEntities($text); $this->doc .= "</a></h$level>".DOKU_LF; } - /** - * Section edit marker is replaced by an edit button when - * the page is editable. Replacement done in 'inc/html.php#html_secedit' - * - * @author Andreas Gohr <andi@splitbrain.org> - * @author Ben Coburn <btcoburn@silicodon.net> - */ - function section_edit($start, $end, $level, $name) { - global $conf; - - if ($start!=-1 && $level<=$conf['maxseclevel']) { - $name = str_replace('"', '', $name); - $this->doc .= '<!-- SECTION "'.$name.'" ['.$start.'-'.(($end===0)?'':$end).'] -->'; - } - } - function section_open($level) { - $this->doc .= "<div class=\"level$level\">".DOKU_LF; + $this->doc .= '<div class="level' . $level . '">' . DOKU_LF; } function section_close() { @@ -400,6 +442,13 @@ class Doku_Renderer_xhtml extends Doku_Renderer { $this->doc .= '</a></dt>'.DOKU_LF.'<dd>'; } + if ($text{0} == "\n") { + $text = substr($text, 1); + } + if (substr($text, -1) == "\n") { + $text = substr($text, 0, -1); + } + if ( is_null($language) ) { $this->doc .= '<pre class="'.$type.'">'.$this->_xmlEntities($text).'</pre>'.DOKU_LF; } else { @@ -517,6 +566,14 @@ class Doku_Renderer_xhtml extends Doku_Renderer { function internallink($id, $name = NULL, $search=NULL,$returnonly=false,$linktype='content') { global $conf; global $ID; + + $params = ''; + $parts = explode('?', $id, 2); + if (count($parts) === 2) { + $id = $parts[0]; + $params = $parts[1]; + } + // default name is based on $id as given $default = $this->_simpleTitle($id); @@ -550,7 +607,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer { } $link['more'] = ''; $link['class'] = $class; - $link['url'] = wl($id); + $link['url'] = wl($id, $params); $link['name'] = $name; $link['title'] = $id; //add search string @@ -845,14 +902,16 @@ class Doku_Renderer_xhtml extends Doku_Renderer { } // $numrows not yet implemented - function table_open($maxcols = NULL, $numrows = NULL){ + function table_open($maxcols = NULL, $numrows = NULL, $pos){ + global $lang; // initialize the row counter used for classes $this->_counter['row_counter'] = 0; - $this->doc .= '<table class="inline">'.DOKU_LF; + $this->doc .= '<div class="table ' . $this->startSectionEdit($pos, 'table') . '"><table class="inline">'.DOKU_LF; } - function table_close(){ - $this->doc .= '</table>'.DOKU_LF; + function table_close($pos){ + $this->doc .= '</table></div>'.DOKU_LF; + $this->finishSectionEdit($pos); } function tablerow_open(){ @@ -966,7 +1025,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer { }elseif($ext == 'jpg' || $ext == 'jpeg'){ //try to use the caption from IPTC/EXIF require_once(DOKU_INC.'inc/JpegMeta.php'); - $jpeg =& new JpegMeta(mediaFN($src)); + $jpeg =new JpegMeta(mediaFN($src)); if($jpeg !== false) $cap = $jpeg->getTitle(); if($cap){ $title = $this->_xmlEntities($cap); @@ -1019,7 +1078,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer { $att['class'] = "media$align"; if($align == 'right') $att['align'] = 'right'; if($align == 'left') $att['align'] = 'left'; - $ret .= html_flashobject(ml($src,array('cache'=>$cache)),$width,$height, + $ret .= html_flashobject(ml($src,array('cache'=>$cache),true,'&'),$width,$height, array('quality' => 'high'), null, $att, diff --git a/inc/parserutils.php b/inc/parserutils.php index e2dd85979..35ccdc1d6 100644 --- a/inc/parserutils.php +++ b/inc/parserutils.php @@ -8,10 +8,6 @@ */ if(!defined('DOKU_INC')) die('meh.'); -require_once(DOKU_INC.'inc/confutils.php'); -require_once(DOKU_INC.'inc/pageutils.php'); -require_once(DOKU_INC.'inc/pluginutils.php'); -require_once(DOKU_INC.'inc/cache.php'); /** * Returns the parsed Wikitext in XHTML for the given id and revision. @@ -204,10 +200,10 @@ function p_get_instructions($text){ $modes = p_get_parsermodes(); // Create the parser - $Parser = & new Doku_Parser(); + $Parser = new Doku_Parser(); // Add the Handler - $Parser->Handler = & new Doku_Handler(); + $Parser->Handler = new Doku_Handler(); //add modes to parser foreach($modes as $mode){ @@ -226,7 +222,7 @@ function p_get_instructions($text){ * * @author Esther Brunner <esther@kaffeehaus.ch> */ -function p_get_metadata($id, $key=false, $render=false){ +function p_get_metadata($id, $key='', $render=false){ global $ID, $INFO, $cache_metadata; // cache the current page @@ -245,19 +241,16 @@ function p_get_metadata($id, $key=false, $render=false){ if (!empty($INFO) && ($id == $INFO['id'])) { $INFO['meta'] = $meta['current']; } } - // filter by $key - if ($key){ - list($key, $subkey) = explode(' ', $key, 2); - $subkey = trim($subkey); + $val = $meta['current']; - if ($subkey) { - return isset($meta['current'][$key][$subkey]) ? $meta['current'][$key][$subkey] : null; + // filter by $key + foreach(preg_split('/\s+/', $key, 2, PREG_SPLIT_NO_EMPTY) as $cur_key) { + if (!isset($val[$cur_key])) { + return null; } - - return isset($meta['current'][$key]) ? $meta['current'][$key] : null; + $val = $val[$cur_key]; } - - return $meta['current']; + return $val; } /** @@ -416,14 +409,14 @@ function p_render_metadata($id, $orig){ } // set up the renderer - $renderer = & new Doku_Renderer_metadata(); + $renderer = new Doku_Renderer_metadata(); $renderer->meta = $orig['current']; $renderer->persistent = $orig['persistent']; // loop through the instructions foreach ($instructions as $instruction){ // execute the callback against the renderer - call_user_func_array(array(&$renderer, $instruction[0]), $instruction[1]); + call_user_func_array(array(&$renderer, $instruction[0]), (array) $instruction[1]); } $evt->result = array('current'=>$renderer->meta,'persistent'=>$renderer->persistent); @@ -587,12 +580,12 @@ function & p_get_renderer($mode) { msg("Renderer '$rname' for $mode not valid",-1); return null; } - $Renderer = & new $rclass(); + $Renderer = new $rclass(); }else{ // Maybe a plugin/component is available? list($plugin, $component) = $plugin_controller->_splitName($rname); if (!$plugin_controller->isdisabled($plugin)){ - $Renderer =& $plugin_controller->load('renderer',$rname, true); + $Renderer =& $plugin_controller->load('renderer',$rname); } if(is_null($Renderer)){ @@ -648,8 +641,6 @@ function p_xhtml_cached_geshi($code, $language, $wrapper='pre') { } else { - require_once(DOKU_INC . 'inc/geshi.php'); - $geshi = new GeSHi($code, $language, DOKU_INC . 'inc/geshi'); $geshi->set_encoding('utf-8'); $geshi->enable_classes(); diff --git a/inc/plugin.php b/inc/plugin.php index 364534739..aff07c1e5 100644 --- a/inc/plugin.php +++ b/inc/plugin.php @@ -231,12 +231,12 @@ class DokuWiki_Plugin { } /** - * Allow the plugin to prevent DokuWiki creating a second instance of itself + * Allow the plugin to prevent DokuWiki from reusing an instance * - * @return bool true if the plugin can not be instantiated more than once + * @return bool false if the plugin has to be instantiated */ function isSingleton() { - return false; + return true; } // deprecated functions diff --git a/inc/plugincontroller.class.php b/inc/plugincontroller.class.php index 4400a4187..ad394e11f 100644 --- a/inc/plugincontroller.class.php +++ b/inc/plugincontroller.class.php @@ -55,18 +55,26 @@ class Doku_Plugin_Controller { * * @author Andreas Gohr <andi@splitbrain.org> * - * @param $type string type of plugin to load - * @param $name string name of the plugin to load - * @param $new bool true to return a new instance of the plugin, false to use an already loaded instance + * @param $type string type of plugin to load + * @param $name string name of the plugin to load + * @param $new bool true to return a new instance of the plugin, false to use an already loaded instance + * @param $disabled bool true to load even disabled plugins * @return objectreference the plugin object or null on failure */ - function &load($type,$name,$new=false){ + function &load($type,$name,$new=false,$disabled=false){ //we keep all loaded plugins available in global scope for reuse global $DOKU_PLUGINS; + list($plugin,$component) = $this->_splitName($name); + + // check if disabled + if(!$disabled && $this->isdisabled($plugin)){ + return null; + } + //plugin already loaded? if(!empty($DOKU_PLUGINS[$type][$name])){ - if ($new && !$DOKU_PLUGINS[$type][$name]->isSingleton()) { + if ($new || !$DOKU_PLUGINS[$type][$name]->isSingleton()) { $class = $type.'_plugin_'.$name; return class_exists($class) ? new $class : null; } else { @@ -75,7 +83,6 @@ class Doku_Plugin_Controller { } //try to load the wanted plugin file - list($plugin,$component) = $this->_splitName($name); $dir = $this->get_directory($plugin); $file = $component ? "$type/$component.php" : "$type.php"; @@ -120,8 +127,8 @@ class Doku_Plugin_Controller { function _populateMasterList() { if ($dh = opendir(DOKU_PLUGIN)) { while (false !== ($plugin = readdir($dh))) { - if ($plugin == '.' || $plugin == '..' || $plugin == 'tmp') continue; - if (is_file(DOKU_PLUGIN.$plugin)) continue; + if ($plugin[0] == '.') continue; // skip hidden entries + if (is_file(DOKU_PLUGIN.$plugin)) continue; // skip files, we're only interested in directories if (substr($plugin,-9) == '.disabled') { // the plugin was disabled by rc2009-01-26 diff --git a/inc/pluginutils.php b/inc/pluginutils.php index 8294d1ec8..85bcaee1e 100644 --- a/inc/pluginutils.php +++ b/inc/pluginutils.php @@ -8,14 +8,6 @@ // plugin related constants if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); -require_once(DOKU_INC.'inc/plugincontroller.class.php'); - -$plugin_types = array('admin','syntax','action','renderer', 'helper'); - -global $plugin_controller_class, $plugin_controller; -if (empty($plugin_controller_class)) $plugin_controller_class = 'Doku_Plugin_Controller'; - -$plugin_controller = new $plugin_controller_class(); /** * Original plugin functions, remain for backwards compatibility @@ -24,9 +16,9 @@ function plugin_list($type='',$all=false) { global $plugin_controller; return $plugin_controller->getList($type,$all); } -function &plugin_load($type,$name,$new=false) { +function &plugin_load($type,$name,$new=false,$disabled=false) { global $plugin_controller; - return $plugin_controller->load($type,$name,$new); + return $plugin_controller->load($type,$name,$new,$disabled); } function plugin_isdisabled($plugin) { global $plugin_controller; @@ -44,4 +36,3 @@ function plugin_directory($plugin) { global $plugin_controller; return $plugin_controller->get_directory($plugin); } - diff --git a/inc/search.php b/inc/search.php index 2b9a51fb3..ea8897662 100644 --- a/inc/search.php +++ b/inc/search.php @@ -7,7 +7,6 @@ */ if(!defined('DOKU_INC')) die('meh.'); -require_once(DOKU_INC.'inc/common.php'); /** * recurse direcory @@ -195,13 +194,12 @@ function search_media(&$data,$base,$file,$type,$lvl,$opts){ $info['writable'] = is_writable($base.'/'.$file); if(preg_match("/\.(jpe?g|gif|png)$/",$file)){ $info['isimg'] = true; - require_once(DOKU_INC.'inc/JpegMeta.php'); $info['meta'] = new JpegMeta($base.'/'.$file); }else{ $info['isimg'] = false; } if($opts['hash']){ - $info['hash'] = md5(io_readFile(wikiFN($info['id']),false)); + $info['hash'] = md5(io_readFile(mediaFN($info['id']),false)); } $data[] = $info; @@ -321,7 +319,6 @@ function search_backlinks(&$data,$base,$file,$type,$lvl,$opts){ } //fetch instructions - require_once(DOKU_INC.'inc/parserutils.php'); $instructions = p_cached_instructions($base.$file,true); if(is_null($instructions)) return false; @@ -552,7 +549,7 @@ function search_universal(&$data,$base,$file,$type,$lvl,$opts){ $return = true; // get ID and check if it is a valid one - $item['id'] = pathID($file); + $item['id'] = pathID($file,$opts['keeptxt']); if($item['id'] != cleanID($item['id'])){ if($opts['showmsg']) msg(hsc($item['id']).' is not a valid file name for DokuWiki - skipped',-1); diff --git a/inc/subscription.php b/inc/subscription.php new file mode 100644 index 000000000..f39b87eb5 --- /dev/null +++ b/inc/subscription.php @@ -0,0 +1,372 @@ +<?php +/** + * Utilities for handling (email) subscriptions + * + * The public interface of this file consists of the functions + * - subscription_find + * - subscription_send_digest + * - subscription_send_list + * - subscription_set + * - get_info_subscribed + * - subscription_addresslist + * - subscription_lock + * - subscription_unlock + * + * @author Adrian Lang <lang@cosmocode.de> + * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) + */ + +/** + * Get the name of the metafile tracking subscriptions to target page or + * namespace + * + * @param string $id The target page or namespace, specified by id; Namespaces + * are identified by appending a colon. + * + * @author Adrian Lang <lang@cosmocode.de> + */ +function subscription_filename($id) { + $meta_fname = '.mlist'; + if ((substr($id, -1, 1) === ':')) { + $meta_froot = getNS($id); + $meta_fname = '/' . $meta_fname; + } else { + $meta_froot = $id; + } + return metaFN((string) $meta_froot, $meta_fname); +} + +/** + * Lock subscription info for an ID + * + * @param string $id The target page or namespace, specified by id; Namespaces + * are identified by appending a colon. + * + * @author Adrian Lang <lang@cosmocode.de> + */ +function subscription_lock($id) { + $lockf = subscription_filename($id) . '.lock'; + return !file_exists($lockf) && touch($lockf); +} + +/** + * Unlock subscription info for an ID + * + * @param string $id The target page or namespace, specified by id; Namespaces + * are identified by appending a colon. + * + * @author Adrian Lang <lang@cosmocode.de> + */ +function subscription_unlock($id) { + $lockf = subscription_filename($id) . '.lock'; + return file_exists($lockf) && unlink($lockf); +} + +/** + * Set subscription information + * + * Allows to set subscription informations for permanent storage in meta files. + * Subscriptions consist of a target object, a subscribing user, a subscribe + * style and optional data. + * A subscription may be deleted by specifying an empty subscribe style. + * Only one subscription per target and user is allowed. + * The function returns false on error, otherwise true. Note that no error is + * returned if a subscription should be deleted but the user is not subscribed + * and the subscription meta file exists. + * + * @param string $user The subscriber or unsubscriber + * @param string $page The target object (page or namespace), specified by + * id; Namespaces are identified by a trailing colon. + * @param string $style The subscribe style; DokuWiki currently implements + * “every”, “digest”, and “list”. + * @param string $data An optional data blob + * @param bool $overwrite Whether an existing subscription may be overwritten + * + * @author Adrian Lang <lang@cosmocode.de> + */ +function subscription_set($user, $page, $style, $data = null, + $overwrite = false) { + global $lang; + if (is_null($style)) { + // Delete subscription. + $file = subscription_filename($page); + if (!@file_exists($file)) { + msg(sprintf($lang['subscr_not_subscribed'], $user, + prettyprint_id($page)), -1); + return false; + } + + // io_deleteFromFile does not return false if no line matched. + return io_deleteFromFile($file, + subscription_regex(array('user' => $user)), + true); + } + + // Delete subscription if one exists and $overwrite is true. If $overwrite + // is false, fail. + $subs = subscription_find($page, array('user' => $user)); + if (count($subs) > 0 && array_pop(array_keys($subs)) === $page) { + if (!$overwrite) { + msg(sprintf($lang['subscr_already_subscribed'], $user, + prettyprint_id($page)), -1); + return false; + } + // Fail if deletion failed, else continue. + if (!subscription_set($user, $page, null)) { + return false; + } + } + + $file = subscription_filename($page); + $content = auth_nameencode($user) . ' ' . $style; + if (!is_null($data)) { + $content .= ' ' . $data; + } + return io_saveFile($file, $content . "\n", true); +} + +/** + * Recursively search for matching subscriptions + * + * This function searches all relevant subscription files for a page or + * namespace. + * + * @param string $page The target object’s (namespace or page) id + * @param array $pre A hash of predefined values + * + * @see function subscription_regex for $pre documentation + * + * @author Adrian Lang <lang@cosmocode.de> + */ +function subscription_find($page, $pre) { + // Construct list of files which may contain relevant subscriptions. + $filenames = array(':' => subscription_filename(':')); + do { + $filenames[$page] = subscription_filename($page); + $page = getNS(rtrim($page, ':')) . ':'; + } while ($page !== ':'); + + // Handle files. + $matches = array(); + foreach ($filenames as $cur_page => $filename) { + if (!@file_exists($filename)) { + continue; + } + $subscriptions = file($filename); + foreach ($subscriptions as $subscription) { + if (strpos($subscription, ' ') === false) { + // This is an old subscription file. + $subscription = trim($subscription) . " every\n"; + } + if (preg_match(subscription_regex($pre), $subscription, + $line_matches) === 0) { + continue; + } + $match = array_slice($line_matches, 1); + if (!isset($matches[$cur_page])) { + $matches[$cur_page] = array(); + } + $matches[$cur_page][] = $match; + } + } + return array_reverse($matches); +} + +/** + * Get data for $INFO['subscribed'] + * + * $INFO['subscribed'] is either false if no subscription for the current page + * and user is in effect. Else it contains an array of arrays with the fields + * “target”, “style”, and optionally “data”. + * + * @author Adrian Lang <lang@cosmocode.de> + */ +function get_info_subscribed() { + global $ID; + global $conf; + if (!$conf['subscribers']) { + return false; + } + + $subs = subscription_find($ID, array('user' => $_SERVER['REMOTE_USER'])); + if (count($subs) === 0) { + return false; + } + + $_ret = array(); + foreach ($subs as $target => $subs_data) { + $new = array('target' => $target, + 'style' => $subs_data[0][0]); + if (count($subs_data[0]) > 1) { + $new['data'] = $subs_data[0][1]; + } + $_ret[] = $new; + } + + return $_ret; +} + +/** + * Construct a regular expression parsing a subscription definition line + * + * @param array $pre A hash of predefined values; “user”, “style”, and + * “data” may be set to limit the results to + * subscriptions matching these parameters. If + * “escaped” is true, these fields are inserted into the + * regular expression without escaping. + * + * @author Adrian Lang <lang@cosmocode.de> + */ +function subscription_regex($pre = array()) { + if (!isset($pre['escaped']) || $pre['escaped'] === false) { + $pre = array_map('preg_quote_cb', $pre); + } + foreach (array('user', 'style', 'data') as $key) { + if (!isset($pre[$key])) { + $pre[$key] = '(\S+)'; + } + } + return '/^' . $pre['user'] . '(?: ' . $pre['style'] . + '(?: ' . $pre['data'] . ')?)?$/'; +} + +/** + * Return a string with the email addresses of all the + * users subscribed to a page + * + * This is the default action for COMMON_NOTIFY_ADDRESSLIST. + * + * @param array $data Containing $id (the page id), $self (whether the author + * should be notified, $addresslist (current email address + * list) + * + * @author Steven Danz <steven-danz@kc.rr.com> + * @author Adrian Lang <lang@cosmocode.de> + */ +function subscription_addresslist(&$data){ + global $conf; + global $auth; + + $id = $data['id']; + $self = $data['self']; + $addresslist = $data['addresslist']; + + if (!$conf['subscribers']) { + return ''; + } + $pres = array('style' => 'every', 'escaped' => true); + if (!$self && isset($_SERVER['REMOTE_USER'])) { + $pres['user'] = '((?:(?!' . preg_quote_cb($_SERVER['REMOTE_USER']) . + ')\S?)+)'; + } + $subs = subscription_find($id, $pres); + $emails = array(); + foreach ($subs as $by_targets) { + foreach ($by_targets as $sub) { + $info = $auth->getUserData($sub[0]); + if ($info === false) continue; + $level = auth_aclcheck($id, $sub[0], $info['grps']); + if ($level >= AUTH_READ) { + if (strcasecmp($info['mail'], $conf['notify']) != 0) { + $emails[$sub[0]] = $info['mail']; + } + } + } + } + $data['addresslist'] = trim($addresslist . ',' . implode(',', $emails), ','); +} + +/** + * Send a digest mail + * + * Sends a digest mail showing a bunch of changes. + * + * @param string $subscriber_mail The target mail address + * @param array $id The ID + * @param int $lastupdate Time of the last notification + * + * @author Adrian Lang <lang@cosmocode.de> + */ +function subscription_send_digest($subscriber_mail, $id, $lastupdate) { + $n = 0; + do { + $rev = getRevisions($id, $n++, 1); + $rev = (count($rev) > 0) ? $rev[0] : null; + } while (!is_null($rev) && $rev > $lastupdate); + + $replaces = array('NEWPAGE' => wl($id, '', true, '&'), + 'SUBSCRIBE' => wl($id, array('do' => 'subscribe'), true, '&')); + if (!is_null($rev)) { + $subject = 'changed'; + $replaces['OLDPAGE'] = wl($id, "rev=$rev", true, '&'); + $df = new Diff(explode("\n", rawWiki($id, $rev)), + explode("\n", rawWiki($id))); + $dformat = new UnifiedDiffFormatter(); + $replaces['DIFF'] = $dformat->format($df); + } else { + $subject = 'newpage'; + $replaces['OLDPAGE'] = 'none'; + $replaces['DIFF'] = rawWiki($id); + } + subscription_send($subscriber_mail, $replaces, $subject, $id, + 'subscr_digest'); +} + +/** + * Send a list mail + * + * Sends a list mail showing a list of changed pages. + * + * @param string $subscriber_mail The target mail address + * @param array $ids Array of ids + * @param string $ns_id The id of the namespace + * + * @author Adrian Lang <lang@cosmocode.de> + */ +function subscription_send_list($subscriber_mail, $ids, $ns_id) { + if (count($ids) === 0) return; + global $conf; + $list = ''; + foreach ($ids as $id) { + $list .= '* ' . wl($id, array(), true) . NL; + } + subscription_send($subscriber_mail, + array('DIFF' => rtrim($list), + 'SUBSCRIBE' => wl($ns_id . $conf['start'], + array('do' => 'subscribe'), + true, '&')), + 'subscribe_list', + prettyprint_id($ns_id), + 'subscr_list'); +} + +/** + * Helper function for sending a mail + * + * @param string $subscriber_mail The target mail address + * @param array $replaces Predefined parameters used to parse the + * template + * @param string $subject The lang id of the mail subject (without the + * prefix “mail_”) + * @param string $id The page or namespace id + * @param string $template The name of the mail template + * + * @author Adrian Lang <lang@cosmocode.de> + */ +function subscription_send($subscriber_mail, $replaces, $subject, $id, $template) { + global $conf; + + $text = rawLocale($template); + $replaces = array_merge($replaces, array('TITLE' => $conf['title'], + 'DOKUWIKIURL' => DOKU_URL, + 'PAGE' => $id)); + + foreach ($replaces as $key => $substitution) { + $text = str_replace('@'.strtoupper($key).'@', $substitution, $text); + } + + global $lang; + $subject = $lang['mail_' . $subject] . ' ' . $id; + mail_send('', '['.$conf['title'].'] '. $subject, $text, + $conf['mailfrom'], '', $subscriber_mail); +} diff --git a/inc/template.php b/inc/template.php index 8fc70cfb8..003febe46 100644 --- a/inc/template.php +++ b/inc/template.php @@ -15,12 +15,12 @@ if(!defined('DOKU_INC')) die('meh.'); * @author Andreas Gohr <andi@splitbrain.org> */ function template($tpl){ - global $conf; + global $conf; - if(@is_readable(DOKU_INC.'lib/tpl/'.$conf['template'].'/'.$tpl)) - return DOKU_INC.'lib/tpl/'.$conf['template'].'/'.$tpl; + if(@is_readable(DOKU_INC.'lib/tpl/'.$conf['template'].'/'.$tpl)) + return DOKU_INC.'lib/tpl/'.$conf['template'].'/'.$tpl; - return DOKU_INC.'lib/tpl/default/'.$tpl; + return DOKU_INC.'lib/tpl/default/'.$tpl; } /** @@ -49,92 +49,88 @@ function tpl_content($prependTOC=true) { } function tpl_content_core(){ - global $ACT; - global $TEXT; - global $PRE; - global $SUF; - global $SUM; - global $IDX; - - switch($ACT){ - case 'show': - html_show(); - break; - case 'preview': - html_edit($TEXT); - html_show($TEXT); - break; - case 'recover': - html_edit($TEXT); - break; - case 'edit': - html_edit(); - break; - case 'draft': - html_draft(); - break; - case 'wordblock': - html_edit($TEXT,'wordblock'); - break; - case 'search': - html_search(); - break; - case 'revisions': - $first = isset($_REQUEST['first']) ? intval($_REQUEST['first']) : 0; - html_revisions($first); - break; - case 'diff': - html_diff(); - break; - case 'recent': - if (is_array($_REQUEST['first'])) { - $_REQUEST['first'] = array_keys($_REQUEST['first']); - $_REQUEST['first'] = $_REQUEST['first'][0]; - } - $first = is_numeric($_REQUEST['first']) ? intval($_REQUEST['first']) : 0; - html_recent($first); - break; - case 'index': - html_index($IDX); #FIXME can this be pulled from globals? is it sanitized correctly? - break; - case 'backlink': - html_backlinks(); - break; - case 'conflict': - html_conflict(con($PRE,$TEXT,$SUF),$SUM); - html_diff(con($PRE,$TEXT,$SUF),false); - break; - case 'locked': - html_locked(); - html_edit(); - break; - case 'login': - html_login(); - break; - case 'register': - html_register(); - break; - case 'resendpwd': - html_resendpwd(); - break; - case 'denied': - print p_locale_xhtml('denied'); - break; - case 'profile' : - html_updateprofile(); - break; - case 'admin': - tpl_admin(); - break; - default: - $evt = new Doku_Event('TPL_ACT_UNKNOWN',$ACT); - if ($evt->advise_before()) - msg("Failed to handle command: ".hsc($ACT),-1); - $evt->advise_after(); - unset($evt); - return false; - } - return true; + global $ACT; + global $TEXT; + global $PRE; + global $SUF; + global $SUM; + global $IDX; + + switch($ACT){ + case 'show': + html_show(); + break; + case 'locked': + html_locked(); + case 'edit': + case 'recover': + html_edit(); + break; + case 'preview': + html_edit(); + html_show($TEXT); + break; + case 'draft': + html_draft(); + break; + case 'search': + html_search(); + break; + case 'revisions': + $first = isset($_REQUEST['first']) ? intval($_REQUEST['first']) : 0; + html_revisions($first); + break; + case 'diff': + html_diff(); + break; + case 'recent': + if (is_array($_REQUEST['first'])) { + $_REQUEST['first'] = array_keys($_REQUEST['first']); + $_REQUEST['first'] = $_REQUEST['first'][0]; + } + $first = is_numeric($_REQUEST['first']) ? intval($_REQUEST['first']) : 0; + html_recent($first); + break; + case 'index': + html_index($IDX); #FIXME can this be pulled from globals? is it sanitized correctly? + break; + case 'backlink': + html_backlinks(); + break; + case 'conflict': + html_conflict(con($PRE,$TEXT,$SUF),$SUM); + html_diff(con($PRE,$TEXT,$SUF),false); + break; + case 'login': + html_login(); + break; + case 'register': + html_register(); + break; + case 'resendpwd': + html_resendpwd(); + break; + case 'denied': + print p_locale_xhtml('denied'); + break; + case 'profile' : + html_updateprofile(); + break; + case 'admin': + tpl_admin(); + break; + case 'subscribe': + tpl_subscribe(); + break; + default: + $evt = new Doku_Event('TPL_ACT_UNKNOWN',$ACT); + if ($evt->advise_before()) + msg("Failed to handle command: ".hsc($ACT),-1); + $evt->advise_after(); + unset($evt); + return false; + } + return true; } /** @@ -180,13 +176,13 @@ function tpl_toc($return=false){ } } if ( ($plugin !== null) && - (!$plugin->forAdminOnly() || $INFO['isadmin']) ){ + (!$plugin->forAdminOnly() || $INFO['isadmin']) ){ $toc = $plugin->getTOC(); $TOC = $toc; // avoid later rebuild } } - trigger_event('TPL_TOC_RENDER', $toc, NULL, false); + trigger_event('TPL_TOC_RENDER', $toc, null, false); $html = html_TOC($toc); if($return) return $html; echo $html; @@ -207,8 +203,8 @@ function tpl_admin(){ if (in_array($_REQUEST['page'], $pluginlist)) { - // attempt to load the plugin - $plugin =& plugin_load('admin',$_REQUEST['page']); + // attempt to load the plugin + $plugin =& plugin_load('admin',$_REQUEST['page']); } } @@ -237,130 +233,126 @@ function tpl_admin(){ * @author Andreas Gohr <andi@splitbrain.org> */ function tpl_metaheaders($alt=true){ - global $ID; - global $REV; - global $INFO; - global $JSINFO; - global $ACT; - global $QUERY; - global $lang; - global $conf; - $it=2; - - // prepare the head array - $head = array(); - - // prepare seed for js and css - $tseed = 0; - $depends = getConfigFiles('main'); - foreach($depends as $f) { - $time = @filemtime($f); - if($time > $tseed) $tseed = $time; - } - - // the usual stuff - $head['meta'][] = array( 'name'=>'generator', 'content'=>'DokuWiki '.getVersion() ); - $head['link'][] = array( 'rel'=>'search', 'type'=>'application/opensearchdescription+xml', - 'href'=>DOKU_BASE.'lib/exe/opensearch.php', 'title'=>$conf['title'] ); - $head['link'][] = array( 'rel'=>'start', 'href'=>DOKU_BASE ); - if(actionOK('index')){ - $head['link'][] = array( 'rel'=>'contents', 'href'=> wl($ID,'do=index',false,'&'), - 'title'=>$lang['btn_index'] ); - } - - if($alt){ - $head['link'][] = array( 'rel'=>'alternate', 'type'=>'application/rss+xml', - 'title'=>'Recent Changes', 'href'=>DOKU_BASE.'feed.php'); - $head['link'][] = array( 'rel'=>'alternate', 'type'=>'application/rss+xml', - 'title'=>'Current Namespace', - 'href'=>DOKU_BASE.'feed.php?mode=list&ns='.$INFO['namespace']); - if(($ACT == 'show' || $ACT == 'search') && $INFO['writable']){ - $head['link'][] = array( 'rel'=>'edit', - 'title'=>$lang['btn_edit'], - 'href'=> wl($ID,'do=edit',false,'&')); - } + global $ID; + global $REV; + global $INFO; + global $JSINFO; + global $ACT; + global $QUERY; + global $lang; + global $conf; + $it=2; - if($ACT == 'search'){ - $head['link'][] = array( 'rel'=>'alternate', 'type'=>'application/rss+xml', - 'title'=>'Search Result', - 'href'=>DOKU_BASE.'feed.php?mode=search&q='.$QUERY); + // prepare the head array + $head = array(); + + // prepare seed for js and css + $tseed = 0; + $depends = getConfigFiles('main'); + foreach($depends as $f) { + $time = @filemtime($f); + if($time > $tseed) $tseed = $time; } - if(actionOK('export_xhtml')){ - $head['link'][] = array( 'rel'=>'alternate', 'type'=>'text/html', 'title'=>'Plain HTML', - 'href'=>exportlink($ID, 'xhtml', '', false, '&')); + // the usual stuff + $head['meta'][] = array( 'name'=>'generator', 'content'=>'DokuWiki'); + $head['link'][] = array( 'rel'=>'search', 'type'=>'application/opensearchdescription+xml', + 'href'=>DOKU_BASE.'lib/exe/opensearch.php', 'title'=>$conf['title'] ); + $head['link'][] = array( 'rel'=>'start', 'href'=>DOKU_BASE ); + if(actionOK('index')){ + $head['link'][] = array( 'rel'=>'contents', 'href'=> wl($ID,'do=index',false,'&'), + 'title'=>$lang['btn_index'] ); } - if(actionOK('export_raw')){ - $head['link'][] = array( 'rel'=>'alternate', 'type'=>'text/plain', 'title'=>'Wiki Markup', - 'href'=>exportlink($ID, 'raw', '', false, '&')); + if($alt){ + $head['link'][] = array( 'rel'=>'alternate', 'type'=>'application/rss+xml', + 'title'=>'Recent Changes', 'href'=>DOKU_BASE.'feed.php'); + $head['link'][] = array( 'rel'=>'alternate', 'type'=>'application/rss+xml', + 'title'=>'Current Namespace', + 'href'=>DOKU_BASE.'feed.php?mode=list&ns='.$INFO['namespace']); + if(($ACT == 'show' || $ACT == 'search') && $INFO['writable']){ + $head['link'][] = array( 'rel'=>'edit', + 'title'=>$lang['btn_edit'], + 'href'=> wl($ID,'do=edit',false,'&')); + } + + if($ACT == 'search'){ + $head['link'][] = array( 'rel'=>'alternate', 'type'=>'application/rss+xml', + 'title'=>'Search Result', + 'href'=>DOKU_BASE.'feed.php?mode=search&q='.$QUERY); + } + + if(actionOK('export_xhtml')){ + $head['link'][] = array( 'rel'=>'alternate', 'type'=>'text/html', 'title'=>'Plain HTML', + 'href'=>exportlink($ID, 'xhtml', '', false, '&')); + } + + if(actionOK('export_raw')){ + $head['link'][] = array( 'rel'=>'alternate', 'type'=>'text/plain', 'title'=>'Wiki Markup', + 'href'=>exportlink($ID, 'raw', '', false, '&')); + } } - } - // setup robot tags apropriate for different modes - if( ($ACT=='show' || $ACT=='export_xhtml') && !$REV){ - if($INFO['exists']){ - //delay indexing: - if((time() - $INFO['lastmod']) >= $conf['indexdelay']){ + // setup robot tags apropriate for different modes + if( ($ACT=='show' || $ACT=='export_xhtml') && !$REV){ + if($INFO['exists']){ + //delay indexing: + if((time() - $INFO['lastmod']) >= $conf['indexdelay']){ + $head['meta'][] = array( 'name'=>'robots', 'content'=>'index,follow'); + }else{ + $head['meta'][] = array( 'name'=>'robots', 'content'=>'noindex,nofollow'); + } + $head['link'][] = array( 'rel'=>'canonical', 'href'=>wl($ID,'',true,'&') ); + }else{ + $head['meta'][] = array( 'name'=>'robots', 'content'=>'noindex,follow'); + } + }elseif(defined('DOKU_MEDIADETAIL')){ $head['meta'][] = array( 'name'=>'robots', 'content'=>'index,follow'); - }else{ - $head['meta'][] = array( 'name'=>'robots', 'content'=>'noindex,nofollow'); - } - $head['link'][] = array( 'rel'=>'canonical', 'href'=>wl($ID,'',true,'&') ); }else{ - $head['meta'][] = array( 'name'=>'robots', 'content'=>'noindex,follow'); + $head['meta'][] = array( 'name'=>'robots', 'content'=>'noindex,nofollow'); } - }elseif(defined('DOKU_MEDIADETAIL')){ - $head['meta'][] = array( 'name'=>'robots', 'content'=>'index,follow'); - }else{ - $head['meta'][] = array( 'name'=>'robots', 'content'=>'noindex,nofollow'); - } - - // set metadata - if($ACT == 'show' || $ACT=='export_xhtml'){ - // date of modification - if($REV){ - $head['meta'][] = array( 'name'=>'date', 'content'=>date('Y-m-d\TH:i:sO',$REV)); - }else{ - $head['meta'][] = array( 'name'=>'date', 'content'=>date('Y-m-d\TH:i:sO',$INFO['lastmod'])); + + // set metadata + if($ACT == 'show' || $ACT=='export_xhtml'){ + // date of modification + if($REV){ + $head['meta'][] = array( 'name'=>'date', 'content'=>date('Y-m-d\TH:i:sO',$REV)); + }else{ + $head['meta'][] = array( 'name'=>'date', 'content'=>date('Y-m-d\TH:i:sO',$INFO['lastmod'])); + } + + // keywords (explicit or implicit) + if(!empty($INFO['meta']['subject'])){ + $head['meta'][] = array( 'name'=>'keywords', 'content'=>join(',',$INFO['meta']['subject'])); + }else{ + $head['meta'][] = array( 'name'=>'keywords', 'content'=>str_replace(':',',',$ID)); + } } - // keywords (explicit or implicit) - if(!empty($INFO['meta']['subject'])){ - $head['meta'][] = array( 'name'=>'keywords', 'content'=>join(',',$INFO['meta']['subject'])); - }else{ - $head['meta'][] = array( 'name'=>'keywords', 'content'=>str_replace(':',',',$ID)); + // load stylesheets + $head['link'][] = array('rel'=>'stylesheet', 'media'=>'screen', 'type'=>'text/css', + 'href'=>DOKU_BASE.'lib/exe/css.php?t='.$conf['template'].'&tseed='.$tseed); + $head['link'][] = array('rel'=>'stylesheet', 'media'=>'all', 'type'=>'text/css', + 'href'=>DOKU_BASE.'lib/exe/css.php?s=all&t='.$conf['template'].'&tseed='.$tseed); + $head['link'][] = array('rel'=>'stylesheet', 'media'=>'print', 'type'=>'text/css', + 'href'=>DOKU_BASE.'lib/exe/css.php?s=print&t='.$conf['template'].'&tseed='.$tseed); + + // make $INFO and other vars available to JavaScripts + $json = new JSON(); + $script = "var NS='".$INFO['namespace']."';"; + if($conf['useacl'] && $_SERVER['REMOTE_USER']){ + $script .= "var SIG='".toolbar_signature()."';"; } - } - - // load stylesheets - $head['link'][] = array('rel'=>'stylesheet', 'media'=>'all', 'type'=>'text/css', - 'href'=>DOKU_BASE.'lib/exe/css.php?s=all&t='.$conf['template'].'&tseed='.$tseed); - $head['link'][] = array('rel'=>'stylesheet', 'media'=>'screen', 'type'=>'text/css', - 'href'=>DOKU_BASE.'lib/exe/css.php?t='.$conf['template'].'&tseed='.$tseed); - $head['link'][] = array('rel'=>'stylesheet', 'media'=>'print', 'type'=>'text/css', - 'href'=>DOKU_BASE.'lib/exe/css.php?s=print&t='.$conf['template'].'&tseed='.$tseed); - - // make $INFO and other vars available to JavaScripts - require_once(DOKU_INC.'inc/JSON.php'); - $json = new JSON(); - $script = "var NS='".$INFO['namespace']."';"; - if($conf['useacl'] && $_SERVER['REMOTE_USER']){ - require_once(DOKU_INC.'inc/toolbar.php'); - $script .= "var SIG='".toolbar_signature()."';"; - } - $script .= 'var JSINFO = '.$json->encode($JSINFO).';'; - $head['script'][] = array( 'type'=>'text/javascript', 'charset'=>'utf-8', - '_data'=> $script); - - // load external javascript - $head['script'][] = array( 'type'=>'text/javascript', 'charset'=>'utf-8', '_data'=>'', - 'src'=>DOKU_BASE.'lib/exe/js.php'.'?tseed='.$tseed); - - - // trigger event here - trigger_event('TPL_METAHEADER_OUTPUT',$head,'_tpl_metaheaders_action',true); - return true; + $script .= 'var JSINFO = '.$json->encode($JSINFO).';'; + $head['script'][] = array( 'type'=>'text/javascript', '_data'=> $script); + + // load external javascript + $head['script'][] = array( 'type'=>'text/javascript', 'charset'=>'utf-8', '_data'=>'', + 'src'=>DOKU_BASE.'lib/exe/js.php'.'?tseed='.$tseed); + + // trigger event here + trigger_event('TPL_METAHEADER_OUTPUT',$head,'_tpl_metaheaders_action',true); + return true; } /** @@ -376,22 +368,22 @@ function tpl_metaheaders($alt=true){ * @author Andreas Gohr <andi@splitbrain.org> */ function _tpl_metaheaders_action($data){ - foreach($data as $tag => $inst){ - foreach($inst as $attr){ - echo '<',$tag,' ',buildAttributes($attr); - if(isset($attr['_data']) || $tag == 'script'){ - if($tag == 'script' && $attr['_data']) - $attr['_data'] = "<!--//--><![CDATA[//><!--\n". - $attr['_data']. - "\n//--><!]]>"; - - echo '>',$attr['_data'],'</',$tag,'>'; - }else{ - echo '/>'; - } - echo "\n"; + foreach($data as $tag => $inst){ + foreach($inst as $attr){ + echo '<',$tag,' ',buildAttributes($attr); + if(isset($attr['_data']) || $tag == 'script'){ + if($tag == 'script' && $attr['_data']) + $attr['_data'] = "<!--//--><![CDATA[//><!--\n". + $attr['_data']. + "\n//--><!]]>"; + + echo '>',$attr['_data'],'</',$tag,'>'; + }else{ + echo '/>'; + } + echo "\n"; + } } - } } /** @@ -402,12 +394,12 @@ function _tpl_metaheaders_action($data){ * @author Andreas Gohr <andi@splitbrain.org> */ function tpl_link($url,$name,$more='',$return=false){ - $out = '<a href="'.$url.'" '; - if ($more) $out .= ' '.$more; - $out .= ">$name</a>"; - if ($return) return $out; - print $out; - return true; + $out = '<a href="'.$url.'" '; + if ($more) $out .= ' '.$more; + $out .= ">$name</a>"; + if ($return) return $out; + print $out; + return true; } /** @@ -417,9 +409,9 @@ function tpl_link($url,$name,$more='',$return=false){ * * @author Andreas Gohr <andi@splitbrain.org> */ -function tpl_pagelink($id,$name=NULL){ - print html_wikilink($id,$name); - return true; +function tpl_pagelink($id,$name=null){ + print html_wikilink($id,$name); + return true; } /** @@ -431,342 +423,209 @@ function tpl_pagelink($id,$name=NULL){ * @author Andreas Gohr <andi@splitbrain.org> */ function tpl_getparent($id){ - global $conf; - $parent = getNS($id).':'; - resolve_pageid('',$parent,$exists); - if($parent == $id) { - $pos = strrpos (getNS($id),':'); - $parent = substr($parent,0,$pos).':'; + global $conf; + $parent = getNS($id).':'; resolve_pageid('',$parent,$exists); - if($parent == $id) return false; - } - return $parent; + if($parent == $id) { + $pos = strrpos (getNS($id),':'); + $parent = substr($parent,0,$pos).':'; + resolve_pageid('',$parent,$exists); + if($parent == $id) return false; + } + return $parent; } /** * Print one of the buttons * - * Available Buttons are - * - * edit - edit/create/show/draft button - * history - old revisions - * recent - recent changes - * login - login/logout button - if ACL enabled - * profile - user profile button (if logged in) - * index - The index - * admin - admin page - if enough rights - * top - a back to top button - * back - a back to parent button - if available - * backlink - links to the list of backlinks - * subscription- subscribe/unsubscribe button - * - * @author Andreas Gohr <andi@splitbrain.org> - * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net> + * @author Adrian Lang <mail@adrianlang.de> + * @see tpl_get_action */ function tpl_button($type,$return=false){ - global $ACT; - global $ID; - global $REV; - global $NS; - global $INFO; - global $conf; - global $auth; - - // check disabled actions and fix the badly named ones - $ctype = $type; - if($type == 'history') $ctype='revisions'; - if(!actionOK($ctype)) return false; - - $out = ''; - switch($type){ - case 'edit': - #most complicated type - we need to decide on current action - if($ACT == 'show' || $ACT == 'search'){ - if($INFO['writable']){ - if(!empty($INFO['draft'])){ - $out .= html_btn('draft',$ID,'e',array('do' => 'draft'),'post'); - }else{ - if($INFO['exists']){ - $out .= html_btn('edit',$ID,'e',array('do' => 'edit','rev' => $REV),'post'); - }else{ - $out .= html_btn('create',$ID,'e',array('do' => 'edit','rev' => $REV),'post'); - } - } - }else{ - if(!actionOK('source')) return false; //pseudo action - $out .= html_btn('source',$ID,'v',array('do' => 'edit','rev' => $REV),'post'); - } - }else{ - $out .= html_btn('show',$ID,'v',array('do' => 'show')); - } - break; - case 'history': - if(actionOK('revisions')) - $out .= html_btn('revs',$ID,'o',array('do' => 'revisions')); - break; - case 'recent': - if(actionOK('recent')) - $out .= html_btn('recent',$ID,'r',array('do' => 'recent')); - break; - case 'index': - if(actionOK('index')) - $out .= html_btn('index',$ID,'x',array('do' => 'index')); - break; - case 'back': - if ($parent = tpl_getparent($ID)) { - $out .= html_btn('back',$parent,'b',array('do' => 'show')); - } - break; - case 'top': - $out .= html_topbtn(); - break; - case 'login': - if($conf['useacl'] && $auth){ - if(isset($_SERVER['REMOTE_USER'])){ - $out .= html_btn('logout',$ID,'',array('do' => 'logout', 'sectok' => getSecurityToken())); - }else{ - $out .= html_btn('login',$ID,'',array('do' => 'login', 'sectok' => getSecurityToken())); - } - } - break; - case 'admin': - if($INFO['ismanager']){ - $out .= html_btn('admin',$ID,'',array('do' => 'admin')); - } - break; - case 'revert': - if($INFO['ismanager'] && $REV && $INFO['writable'] && actionOK('revert')){ - $out .= html_btn('revert',$ID,'',array('do' => 'revert', 'rev' => $REV, 'sectok' => getSecurityToken())); - } - break; - case 'subscribe': - case 'subscription': - if($conf['useacl'] && $auth && $ACT == 'show' && $conf['subscribers'] == 1){ - if($_SERVER['REMOTE_USER']){ - if($INFO['subscribed']){ - if(actionOK('unsubscribe')) - $out .= html_btn('unsubscribe',$ID,'',array('do' => 'unsubscribe',)); - } else { - if(actionOK('subscribe')) - $out .= html_btn('subscribe',$ID,'',array('do' => 'subscribe',)); - } + $data = tpl_get_action($type); + if ($data === false) { + return false; + } elseif (!is_array($data)) { + $out = sprintf($data, 'button'); + } else { + extract($data); + if ($id === '#dokuwiki__top') { + $out = html_topbtn(); + } else { + $out = html_btn($type, $id, $accesskey, $params, $method); } - } - if($type == 'subscribe') break; - // else: fall through for backward compatibility - case 'subscribens': - if($conf['useacl'] && $auth && $ACT == 'show' && $conf['subscribers'] == 1){ - if($_SERVER['REMOTE_USER']){ - if($INFO['subscribedns']){ - if(actionOK('unsubscribens')) - $out .= html_btn('unsubscribens',$ID,'',array('do' => 'unsubscribens',)); - } else { - if(actionOK('subscribens')) - $out .= html_btn('subscribens',$ID,'',array('do' => 'subscribens',)); - } - } - } - break; - case 'backlink': - if(actionOK('backlink')) - $out .= html_btn('backlink',$ID,'',array('do' => 'backlink')); - break; - case 'profile': - if($conf['useacl'] && isset($_SERVER['REMOTE_USER']) && $auth && - $auth->canDo('Profile') && ($ACT!='profile')){ - $out .= html_btn('profile',$ID,'',array('do' => 'profile')); - } - break; - default: - $out .= '[unknown button type]'; - break; - } - if ($return) return $out; - print $out; - return $out ? true : false; + } + if ($return) return $out; + echo $out; + return true; } /** * Like the action buttons but links * - * Available links are + * @author Adrian Lang <mail@adrianlang.de> + * @see tpl_get_action + */ +function tpl_actionlink($type,$pre='',$suf='',$inner='',$return=false){ + global $lang; + $data = tpl_get_action($type); + if ($data === false) { + return false; + } elseif (!is_array($data)) { + $out = sprintf($data, 'link'); + } else { + extract($data); + if (strpos($id, '#') === 0) { + $linktarget = $id; + } else { + $linktarget = wl($id, $params); + } + $caption = $lang['btn_' . $type]; + $out = tpl_link($linktarget, $pre.(($inner)?$inner:$caption).$suf, + 'class="action ' . $type . '" ' . + 'accesskey="' . $accesskey . '" rel="nofollow" ' . + 'title="' . hsc($caption) . '"', 1); + } + if ($return) return $out; + echo $out; + return true; +} + +/** + * Check the actions and get data for buttons and links + * + * Available actions are * - * edit - edit/create/show link - * history - old revisions - * recent - recent changes - * login - login/logout link - if ACL enabled - * profile - user profile link (if logged in) - * index - The index - * admin - admin page - if enough rights - * top - a back to top link - * back - a back to parent link - if available - * backlink - links to the list of backlinks - * subscribe/subscription - subscribe/unsubscribe link + * edit - edit/create/show/draft + * history - old revisions + * recent - recent changes + * login - login/logout - if ACL enabled + * profile - user profile (if logged in) + * index - The index + * admin - admin page - if enough rights + * top - back to top + * back - back to parent - if available + * backlink - links to the list of backlinks + * subscribe/subscription- subscribe/unsubscribe * * @author Andreas Gohr <andi@splitbrain.org> * @author Matthias Grimm <matthiasgrimm@users.sourceforge.net> - * @see tpl_button + * @author Adrian Lang <mail@adrianlang.de> */ -function tpl_actionlink($type,$pre='',$suf='',$inner='',$return=false){ - global $ID; - global $INFO; - global $REV; - global $ACT; - global $conf; - global $lang; - global $auth; - - // check disabled actions and fix the badly named ones - $ctype = $type; - if($type == 'history') $ctype='revisions'; - if(!actionOK($ctype)) return false; - - $out = ''; - switch($type){ - case 'edit': - #most complicated type - we need to decide on current action - if($ACT == 'show' || $ACT == 'search'){ - if($INFO['writable']){ - if(!empty($INFO['draft'])) { - $out .= tpl_link(wl($ID,'do=draft'), - $pre.(($inner)?$inner:$lang['btn_draft']).$suf, - 'class="action edit" accesskey="e" rel="nofollow"',1); - } else { - if($INFO['exists']){ - $out .= tpl_link(wl($ID,'do=edit&rev='.$REV), - $pre.(($inner)?$inner:$lang['btn_edit']).$suf, - 'class="action edit" accesskey="e" rel="nofollow"',1); +function tpl_get_action($type) { + global $ID; + global $INFO; + global $REV; + global $ACT; + global $conf; + global $auth; + + // check disabled actions and fix the badly named ones + if($type == 'history') $type='revisions'; + if(!actionOK($type)) return false; + + $accesskey = null; + $id = $ID; + $method = 'get'; + $params = array('do' => $type); + switch($type){ + case 'edit': + // most complicated type - we need to decide on current action + if($ACT == 'show' || $ACT == 'search'){ + $method = 'post'; + if($INFO['writable']){ + $accesskey = 'e'; + if(!empty($INFO['draft'])) { + $type = 'draft'; + $params['do'] = 'draft'; + } else { + $params['rev'] = $REV; + if(!$INFO['exists']){ + $type = 'create'; + } + } + }else{ + if(!actionOK('source')) return false; //pseudo action + $params['rev'] = $REV; + $type = 'source'; + $accesskey = 'v'; + } }else{ - $out .= tpl_link(wl($ID,'do=edit&rev='.$REV), - $pre.(($inner)?$inner:$lang['btn_create']).$suf, - 'class="action create" accesskey="e" rel="nofollow"',1); + $params = ''; + $type = 'show'; + $accesskey = 'v'; } - } - }else{ - if(actionOK('source')) //pseudo action - $out .= tpl_link(wl($ID,'do=edit&rev='.$REV), - $pre.(($inner)?$inner:$lang['btn_source']).$suf, - 'class="action source" accesskey="v" rel="nofollow"',1); - } - }else{ - $out .= tpl_link(wl($ID,'do=show'), - $pre.(($inner)?$inner:$lang['btn_show']).$suf, - 'class="action show" accesskey="v" rel="nofollow"',1); - } - break; - case 'history': - if(actionOK('revisions')) - $out .= tpl_link(wl($ID,'do=revisions'), - $pre.(($inner)?$inner:$lang['btn_revs']).$suf, - 'class="action revisions" accesskey="o" rel="nofollow"',1); - break; - case 'recent': - if(actionOK('recent')) - $out .= tpl_link(wl($ID,'do=recent'), - $pre.(($inner)?$inner:$lang['btn_recent']).$suf, - 'class="action recent" accesskey="r" rel="nofollow"',1); - break; - case 'index': - if(actionOK('index')) - $out .= tpl_link(wl($ID,'do=index'), - $pre.(($inner)?$inner:$lang['btn_index']).$suf, - 'class="action index" accesskey="x" rel="nofollow"',1); - break; - case 'top': - $out .= '<a href="#dokuwiki__top" class="action top" accesskey="x">'. - $pre.(($inner)?$inner:$lang['btn_top']).$suf.'</a>'; - break; - case 'back': - if ($parent = tpl_getparent($ID)) { - $out .= tpl_link(wl($parent,'do=show'), - $pre.(($inner)?$inner:$lang['btn_back']).$suf, - 'class="action back" accesskey="b" rel="nofollow"',1); - } - break; - case 'login': - if($conf['useacl'] && $auth){ - if($_SERVER['REMOTE_USER']){ - $out .= tpl_link(wl($ID,'do=logout&sectok='.getSecurityToken()), - $pre.(($inner)?$inner:$lang['btn_logout']).$suf, - 'class="action logout" rel="nofollow"',1); - }else{ - $out .= tpl_link(wl($ID,'do=login&sectok='.getSecurityToken()), - $pre.(($inner)?$inner:$lang['btn_login']).$suf, - 'class="action login" rel="nofollow"',1); - } - } - break; - case 'admin': - if($INFO['ismanager']){ - $out .= tpl_link(wl($ID,'do=admin'), - $pre.(($inner)?$inner:$lang['btn_admin']).$suf, - 'class="action admin" rel="nofollow"',1); - } - break; - case 'revert': - if($INFO['ismanager'] && $REV && $INFO['writable'] && actionOK('revert')){ - $out .= tpl_link(wl($ID,array('do' => 'revert', 'rev' => $REV, 'sectok' => getSecurityToken())), - $pre.(($inner)?$inner:$lang['btn_revert']).$suf, - 'class="action revert" rel="nofollow"',1); - } - break; - case 'subscribe': - case 'subscription': - if($conf['useacl'] && $auth && $ACT == 'show' && $conf['subscribers'] == 1){ - if($_SERVER['REMOTE_USER']){ - if($INFO['subscribed']) { - if(actionOK('unsubscribe')) - $out .= tpl_link(wl($ID,'do=unsubscribe'), - $pre.(($inner)?$inner:$lang['btn_unsubscribe']).$suf, - 'class="action unsubscribe" rel="nofollow"',1); - } else { - if(actionOK('subscribe')) - $out .= tpl_link(wl($ID,'do=subscribe'), - $pre.(($inner)?$inner:$lang['btn_subscribe']).$suf, - 'class="action subscribe" rel="nofollow"',1); - } - } - } - if($type == 'subscribe') break; - // else: fall through for backward compatibility - case 'subscribens': - if($conf['useacl'] && $auth && $ACT == 'show' && $conf['subscribers'] == 1){ - if($_SERVER['REMOTE_USER']){ - if($INFO['subscribedns']) { - if(actionOK('unsubscribens')) - $out .= tpl_link(wl($ID,'do=unsubscribens'), - $pre.(($inner)?$inner:$lang['btn_unsubscribens']).$suf, - 'class="action unsubscribens" rel="nofollow"',1); - } else { - if(actionOK('subscribens')) - $out .= tpl_link(wl($ID,'do=subscribens'), - $pre.(($inner)?$inner:$lang['btn_subscribens']).$suf, - 'class="action subscribens" rel="nofollow"',1); - } - } - } - break; - case 'backlink': - if(actionOK('backlink')) - $out .= tpl_link(wl($ID,'do=backlink'), - $pre.(($inner)?$inner:$lang['btn_backlink']).$suf, - 'class="action backlink" rel="nofollow"',1); - break; - case 'profile': - if($conf['useacl'] && $auth && $_SERVER['REMOTE_USER'] && - $auth->canDo('Profile') && ($ACT!='profile')){ - $out .= tpl_link(wl($ID,'do=profile'), - $pre.(($inner)?$inner:$lang['btn_profile']).$suf, - 'class="action profile" rel="nofollow"',1); - } - break; - default: - $out .= '[unknown link type]'; - break; - } - if ($return) return $out; - print $out; - return $out ? true : false; + break; + case 'revisions': + $type = 'revs'; + $accesskey = 'o'; + break; + case 'recent': + $accesskey = 'r'; + break; + case 'index': + $accesskey = 'x'; + break; + case 'top': + $accesskey = 'x'; + $params = ''; + $id = '#dokuwiki__top'; + break; + case 'back': + $parent = tpl_getparent($ID); + if (!$parent) { + return false; + } + $id = $parent; + $params = ''; + $accesskey = 'b'; + break; + case 'login': + if(!$conf['useacl'] || !$auth){ + return false; + } + $params['sectok'] = getSecurityToken(); + if(isset($_SERVER['REMOTE_USER'])){ + if (!$auth->canDo('logout')) { + return false; + } + $params['do'] = 'logout'; + $type = 'logout'; + } + break; + case 'admin': + if(!$INFO['ismanager']){ + return false; + } + break; + case 'revert': + if(!$INFO['ismanager'] || !$REV || !$INFO['writable']) { + return false; + } + $params['rev'] = $REV; + $params['sectok'] = getSecurityToken(); + break; + case 'subscription': + $type = 'subscribe'; + $params['do'] = 'subscribe'; + case 'subscribe': + if(!$conf['useacl'] || !$auth || $ACT !== 'show' || !$conf['subscribers'] || !$_SERVER['REMOTE_USER']){ + return false; + } + break; + case 'backlink': + break; + case 'profile': + if(!$conf['useacl'] || !$auth || !isset($_SERVER['REMOTE_USER']) || + !$auth->canDo('Profile') || ($ACT=='profile')){ + return false; + } + break; + default: + return '[unknown %s type]'; + break; + } + return compact('accesskey', 'type', 'id', 'method', 'params'); } /** @@ -798,23 +657,23 @@ function tpl_action($type,$link=0,$wrapper=false,$return=false,$pre='',$suf='',$ * @author Andreas Gohr <andi@splitbrain.org> */ function tpl_searchform($ajax=true,$autocomplete=true){ - global $lang; - global $ACT; - global $QUERY; - - // don't print the search form if search action has been disabled - if (!actionOk('search')) return false; - - print '<form action="'.wl().'" accept-charset="utf-8" class="search" id="dw__search"><div class="no">'; - print '<input type="hidden" name="do" value="search" />'; - print '<input type="text" '; - if($ACT == 'search') print 'value="'.htmlspecialchars($QUERY).'" '; - if(!$autocomplete) print 'autocomplete="off" '; - print 'id="qsearch__in" accesskey="f" name="id" class="edit" title="[F]" />'; - print '<input type="submit" value="'.$lang['btn_search'].'" class="button" title="'.$lang['btn_search'].'" />'; - if($ajax) print '<div id="qsearch__out" class="ajax_qsearch JSpopup"></div>'; - print '</div></form>'; - return true; + global $lang; + global $ACT; + global $QUERY; + + // don't print the search form if search action has been disabled + if (!actionOk('search')) return false; + + print '<form action="'.wl().'" accept-charset="utf-8" class="search" id="dw__search"><div class="no">'; + print '<input type="hidden" name="do" value="search" />'; + print '<input type="text" '; + if($ACT == 'search') print 'value="'.htmlspecialchars($QUERY).'" '; + if(!$autocomplete) print 'autocomplete="off" '; + print 'id="qsearch__in" accesskey="f" name="id" class="edit" title="[F]" />'; + print '<input type="submit" value="'.$lang['btn_search'].'" class="button" title="'.$lang['btn_search'].'" />'; + if($ajax) print '<div id="qsearch__out" class="ajax_qsearch JSpopup"></div>'; + print '</div></form>'; + return true; } /** @@ -823,34 +682,34 @@ function tpl_searchform($ajax=true,$autocomplete=true){ * @author Andreas Gohr <andi@splitbrain.org> */ function tpl_breadcrumbs($sep='»'){ - global $lang; - global $conf; - - //check if enabled - if(!$conf['breadcrumbs']) return false; - - $crumbs = breadcrumbs(); //setup crumb trace - - //reverse crumborder in right-to-left mode, add RLM character to fix heb/eng display mixups - if($lang['direction'] == 'rtl') { - $crumbs = array_reverse($crumbs,true); - $crumbs_sep = ' ‏<span class="bcsep">'.$sep.'</span>‏ '; - } else { - $crumbs_sep = ' <span class="bcsep">'.$sep.'</span> '; - } - - //render crumbs, highlight the last one - print '<span class="bchead">'.$lang['breadcrumb'].':</span>'; - $last = count($crumbs); - $i = 0; - foreach ($crumbs as $id => $name){ - $i++; - echo $crumbs_sep; - if ($i == $last) print '<span class="curid">'; - tpl_link(wl($id),hsc($name),'class="breadcrumbs" title="'.$id.'"'); - if ($i == $last) print '</span>'; - } - return true; + global $lang; + global $conf; + + //check if enabled + if(!$conf['breadcrumbs']) return false; + + $crumbs = breadcrumbs(); //setup crumb trace + + //reverse crumborder in right-to-left mode, add RLM character to fix heb/eng display mixups + if($lang['direction'] == 'rtl') { + $crumbs = array_reverse($crumbs,true); + $crumbs_sep = ' ‏<span class="bcsep">'.$sep.'</span>‏ '; + } else { + $crumbs_sep = ' <span class="bcsep">'.$sep.'</span> '; + } + + //render crumbs, highlight the last one + print '<span class="bchead">'.$lang['breadcrumb'].':</span>'; + $last = count($crumbs); + $i = 0; + foreach ($crumbs as $id => $name){ + $i++; + echo $crumbs_sep; + if ($i == $last) print '<span class="curid">'; + tpl_link(wl($id),hsc($name),'class="breadcrumbs" title="'.$id.'"'); + if ($i == $last) print '</span>'; + } + return true; } /** @@ -866,59 +725,59 @@ function tpl_breadcrumbs($sep='»'){ * @todo May behave strangely in RTL languages */ function tpl_youarehere($sep=' » '){ - global $conf; - global $ID; - global $lang; - - // check if enabled - if(!$conf['youarehere']) return false; - - $parts = explode(':', $ID); - $count = count($parts); - - if($GLOBALS['ACT'] == 'search') - { - $parts = array($conf['start']); - $count = 1; - } - - echo '<span class="bchead">'.$lang['youarehere'].': </span>'; - - // always print the startpage - $title = useHeading('navigation') ? p_get_first_heading($conf['start']) : $conf['start']; - if(!$title) $title = $conf['start']; - tpl_link(wl($conf['start']),hsc($title),'title="'.$conf['start'].'"'); - - // print intermediate namespace links - $part = ''; - for($i=0; $i<$count - 1; $i++){ - $part .= $parts[$i].':'; - $page = $part; - resolve_pageid('',$page,$exists); - if ($page == $conf['start']) continue; // Skip startpage - - // output + global $conf; + global $ID; + global $lang; + + // check if enabled + if(!$conf['youarehere']) return false; + + $parts = explode(':', $ID); + $count = count($parts); + + if($GLOBALS['ACT'] == 'search') + { + $parts = array($conf['start']); + $count = 1; + } + + echo '<span class="bchead">'.$lang['youarehere'].': </span>'; + + // always print the startpage + $title = useHeading('navigation') ? p_get_first_heading($conf['start']) : $conf['start']; + if(!$title) $title = $conf['start']; + tpl_link(wl($conf['start']),hsc($title),'title="'.$conf['start'].'"'); + + // print intermediate namespace links + $part = ''; + for($i=0; $i<$count - 1; $i++){ + $part .= $parts[$i].':'; + $page = $part; + resolve_pageid('',$page,$exists); + if ($page == $conf['start']) continue; // Skip startpage + + // output + echo $sep; + if($exists){ + $title = useHeading('navigation') ? p_get_first_heading($page) : $parts[$i]; + tpl_link(wl($page),hsc($title),'title="'.$page.'"'); + }else{ + tpl_link(wl($page),$parts[$i],'title="'.$page.'" class="wikilink2" rel="nofollow"'); + } + } + + // print current page, skipping start page, skipping for namespace index + if(isset($page) && $page==$part.$parts[$i]) return; + $page = $part.$parts[$i]; + if($page == $conf['start']) return; echo $sep; - if($exists){ - $title = useHeading('navigation') ? p_get_first_heading($page) : $parts[$i]; - tpl_link(wl($page),hsc($title),'title="'.$page.'"'); + if(page_exists($page)){ + $title = useHeading('navigation') ? p_get_first_heading($page) : $parts[$i]; + tpl_link(wl($page),hsc($title),'title="'.$page.'"'); }else{ - tpl_link(wl($page),$parts[$i],'title="'.$page.'" class="wikilink2" rel="nofollow"'); + tpl_link(wl($page),$parts[$i],'title="'.$page.'" class="wikilink2" rel="nofollow"'); } - } - - // print current page, skipping start page, skipping for namespace index - if(isset($page) && $page==$part.$parts[$i]) return; - $page = $part.$parts[$i]; - if($page == $conf['start']) return; - echo $sep; - if(page_exists($page)){ - $title = useHeading('navigation') ? p_get_first_heading($page) : $parts[$i]; - tpl_link(wl($page),hsc($title),'title="'.$page.'"'); - }else{ - tpl_link(wl($page),$parts[$i],'title="'.$page.'" class="wikilink2" rel="nofollow"'); - } - return true; + return true; } /** @@ -930,98 +789,98 @@ function tpl_youarehere($sep=' » '){ * @author Andreas Gohr <andi@splitbrain.org> */ function tpl_userinfo(){ - global $lang; - global $INFO; - if(isset($_SERVER['REMOTE_USER'])){ - print $lang['loggedinas'].': '.$INFO['userinfo']['name'].' ('.$_SERVER['REMOTE_USER'].')'; - return true; - } - return false; -} + global $lang; + global $INFO; + if(isset($_SERVER['REMOTE_USER'])){ + print $lang['loggedinas'].': '.$INFO['userinfo']['name'].' ('.$_SERVER['REMOTE_USER'].')'; + return true; + } + return false; + } -/** - * Print some info about the current page - * - * @author Andreas Gohr <andi@splitbrain.org> - */ -function tpl_pageinfo($ret=false){ - global $conf; - global $lang; - global $INFO; - global $ID; - - // return if we are not allowed to view the page - if (!auth_quickaclcheck($ID)) { return false; } - - // prepare date and path - $fn = $INFO['filepath']; - if(!$conf['fullpath']){ - if($INFO['rev']){ - $fn = str_replace(fullpath($conf['olddir']).'/','',$fn); - }else{ - $fn = str_replace(fullpath($conf['datadir']).'/','',$fn); + /** + * Print some info about the current page + * + * @author Andreas Gohr <andi@splitbrain.org> + */ + function tpl_pageinfo($ret=false){ + global $conf; + global $lang; + global $INFO; + global $ID; + + // return if we are not allowed to view the page + if (!auth_quickaclcheck($ID)) { return false; } + + // prepare date and path + $fn = $INFO['filepath']; + if(!$conf['fullpath']){ + if($INFO['rev']){ + $fn = str_replace(fullpath($conf['olddir']).'/','',$fn); + }else{ + $fn = str_replace(fullpath($conf['datadir']).'/','',$fn); + } + } + $fn = utf8_decodeFN($fn); + $date = dformat($INFO['lastmod']); + + // print it + if($INFO['exists']){ + $out = ''; + $out .= $fn; + $out .= ' · '; + $out .= $lang['lastmod']; + $out .= ': '; + $out .= $date; + if($INFO['editor']){ + $out .= ' '.$lang['by'].' '; + $out .= editorinfo($INFO['editor']); + }else{ + $out .= ' ('.$lang['external_edit'].')'; + } + if($INFO['locked']){ + $out .= ' · '; + $out .= $lang['lockedby']; + $out .= ': '; + $out .= editorinfo($INFO['locked']); + } + if($ret){ + return $out; + }else{ + echo $out; + return true; + } + } + return false; + } + + /** + * Prints or returns the name of the given page (current one if none given). + * + * If useheading is enabled this will use the first headline else + * the given ID is used. + * + * @author Andreas Gohr <andi@splitbrain.org> + */ +function tpl_pagetitle($id=null, $ret=false){ + global $conf; + if(is_null($id)){ + global $ID; + $id = $ID; } - } - $fn = utf8_decodeFN($fn); - $date = dformat($INFO['lastmod']); - // print it - if($INFO['exists']){ - $out = ''; - $out .= $fn; - $out .= ' · '; - $out .= $lang['lastmod']; - $out .= ': '; - $out .= $date; - if($INFO['editor']){ - $out .= ' '.$lang['by'].' '; - $out .= editorinfo($INFO['editor']); - }else{ - $out .= ' ('.$lang['external_edit'].')'; - } - if($INFO['locked']){ - $out .= ' · '; - $out .= $lang['lockedby']; - $out .= ': '; - $out .= editorinfo($INFO['locked']); + $name = $id; + if (useHeading('navigation')) { + $title = p_get_first_heading($id); + if ($title) $name = $title; } - if($ret){ - return $out; - }else{ - echo $out; + + if ($ret) { + return hsc($name); + } else { + print hsc($name); return true; } - } - return false; -} - -/** - * Prints or returns the name of the given page (current one if none given). - * - * If useheading is enabled this will use the first headline else - * the given ID is used. - * - * @author Andreas Gohr <andi@splitbrain.org> - */ -function tpl_pagetitle($id=null, $ret=false){ - global $conf; - if(is_null($id)){ - global $ID; - $id = $ID; - } - - $name = $id; - if (useHeading('navigation')) { - $title = p_get_first_heading($id); - if ($title) $name = $title; - } - - if ($ret) { - return hsc($name); - } else { - print hsc($name); - return true; - } } /** @@ -1039,71 +898,90 @@ function tpl_pagetitle($id=null, $ret=false){ * @author Andreas Gohr <andi@splitbrain.org> */ function tpl_img_getTag($tags,$alt='',$src=null){ - // Init Exif Reader - global $SRC; + // Init Exif Reader + global $SRC; - if(is_null($src)) $src = $SRC; + if(is_null($src)) $src = $SRC; - static $meta = null; - if(is_null($meta)) $meta = new JpegMeta($src); - if($meta === false) return $alt; - $info = $meta->getField($tags); - if($info == false) return $alt; - return $info; + static $meta = null; + if(is_null($meta)) $meta = new JpegMeta($src); + if($meta === false) return $alt; + $info = $meta->getField($tags); + if($info == false) return $alt; + return $info; } /** * Prints the image with a link to the full sized version * * Only allowed in: detail.php + * + * @param $maxwidth int - maximal width of the image + * @param $maxheight int - maximal height of the image + * @param $link bool - link to the orginal size? + * @param $params array - additional image attributes */ -function tpl_img($maxwidth=0,$maxheight=0){ - global $IMG; - $w = tpl_img_getTag('File.Width'); - $h = tpl_img_getTag('File.Height'); - - //resize to given max values - $ratio = 1; - if($w >= $h){ - if($maxwidth && $w >= $maxwidth){ - $ratio = $maxwidth/$w; - }elseif($maxheight && $h > $maxheight){ - $ratio = $maxheight/$h; +function tpl_img($maxwidth=0,$maxheight=0,$link=true,$params=null){ + global $IMG; + $w = tpl_img_getTag('File.Width'); + $h = tpl_img_getTag('File.Height'); + + //resize to given max values + $ratio = 1; + if($w >= $h){ + if($maxwidth && $w >= $maxwidth){ + $ratio = $maxwidth/$w; + }elseif($maxheight && $h > $maxheight){ + $ratio = $maxheight/$h; + } + }else{ + if($maxheight && $h >= $maxheight){ + $ratio = $maxheight/$h; + }elseif($maxwidth && $w > $maxwidth){ + $ratio = $maxwidth/$w; + } + } + if($ratio){ + $w = floor($ratio*$w); + $h = floor($ratio*$h); + } + + //prepare URLs + $url=ml($IMG,array('cache'=>$_REQUEST['cache']),true,'&'); + $src=ml($IMG,array('cache'=>$_REQUEST['cache'],'w'=>$w,'h'=>$h),true,'&'); + + //prepare attributes + $alt=tpl_img_getTag('Simple.Title'); + if(is_null($params)){ + $p = array(); + }else{ + $p = $params; } - }else{ - if($maxheight && $h >= $maxheight){ - $ratio = $maxheight/$h; - }elseif($maxwidth && $w > $maxwidth){ - $ratio = $maxwidth/$w; + if($w) $p['width'] = $w; + if($h) $p['height'] = $h; + $p['class'] = 'img_detail'; + if($alt){ + $p['alt'] = $alt; + $p['title'] = $alt; + }else{ + $p['alt'] = ''; } - } - if($ratio){ - $w = floor($ratio*$w); - $h = floor($ratio*$h); - } - - //prepare URLs - $url=ml($IMG,array('cache'=>$_REQUEST['cache'])); - $src=ml($IMG,array('cache'=>$_REQUEST['cache'],'w'=>$w,'h'=>$h)); - - //prepare attributes - $alt=tpl_img_getTag('Simple.Title'); - $p = array(); - if($w) $p['width'] = $w; - if($h) $p['height'] = $h; - $p['class'] = 'img_detail'; - if($alt){ - $p['alt'] = $alt; - $p['title'] = $alt; - }else{ - $p['alt'] = ''; - } - $p = buildAttributes($p); - - print '<a href="'.$url.'">'; - print '<img src="'.$src.'" '.$p.'/>'; - print '</a>'; - return true; + $p['src'] = $src; + + $data = array('url'=>($link?$url:null), 'params'=>$p); + return trigger_event('TPL_IMG_DISPLAY',$data,'_tpl_img_action',true); +} + +/** + * Default action for TPL_IMG_DISPLAY + */ +function _tpl_img_action($data, $param=NULL) { + $p = buildAttributes($data['params']); + + if($data['url']) print '<a href="'.hsc($data['url']).'">'; + print '<img '.$p.'/>'; + if($data['url']) print '</a>'; + return true; } /** @@ -1114,21 +992,21 @@ function tpl_img($maxwidth=0,$maxheight=0){ * template */ function tpl_indexerWebBug(){ - global $ID; - global $INFO; - if(!$INFO['exists']) return false; - - if(isHiddenPage($ID)) return false; //no need to index hidden pages - - $p = array(); - $p['src'] = DOKU_BASE.'lib/exe/indexer.php?id='.rawurlencode($ID). - '&'.time(); - $p['width'] = 1; - $p['height'] = 1; - $p['alt'] = ''; - $att = buildAttributes($p); - print "<img $att />"; - return true; + global $ID; + global $INFO; + if(!$INFO['exists']) return false; + + if(isHiddenPage($ID)) return false; //no need to index hidden pages + + $p = array(); + $p['src'] = DOKU_BASE.'lib/exe/indexer.php?id='.rawurlencode($ID). + '&'.time(); + $p['width'] = 1; + $p['height'] = 1; + $p['alt'] = ''; + $att = buildAttributes($p); + print "<img $att />"; + return true; } // configuration methods @@ -1138,23 +1016,23 @@ function tpl_indexerWebBug(){ * use this function to access template configuration variables */ function tpl_getConf($id){ - global $conf; - global $tpl_configloaded; - - $tpl = $conf['template']; - - if (!$tpl_configloaded){ - $tconf = tpl_loadConfig(); - if ($tconf !== false){ - foreach ($tconf as $key => $value){ - if (isset($conf['tpl'][$tpl][$key])) continue; - $conf['tpl'][$tpl][$key] = $value; - } - $tpl_configloaded = true; + global $conf; + global $tpl_configloaded; + + $tpl = $conf['template']; + + if (!$tpl_configloaded){ + $tconf = tpl_loadConfig(); + if ($tconf !== false){ + foreach ($tconf as $key => $value){ + if (isset($conf['tpl'][$tpl][$key])) continue; + $conf['tpl'][$tpl][$key] = $value; + } + $tpl_configloaded = true; + } } - } - return $conf['tpl'][$tpl][$id]; + return $conf['tpl'][$tpl][$id]; } /** @@ -1164,15 +1042,15 @@ function tpl_getConf($id){ */ function tpl_loadConfig(){ - $file = DOKU_TPLINC.'/conf/default.php'; - $conf = array(); + $file = DOKU_TPLINC.'/conf/default.php'; + $conf = array(); - if (!@file_exists($file)) return false; + if (!@file_exists($file)) return false; - // load default config file - include($file); + // load default config file + include($file); - return $conf; + return $conf; } /** @@ -1189,50 +1067,50 @@ function tpl_loadConfig(){ * @author Andreas Gohr <andi@splitbrain.org> */ function tpl_mediaContent($fromajax=false){ - global $IMG; - global $AUTH; - global $INUSE; - global $NS; - global $JUMPTO; - - if(is_array($_REQUEST['do'])){ - $do = array_shift(array_keys($_REQUEST['do'])); - }else{ - $do = $_REQUEST['do']; - } - if(in_array($do,array('save','cancel'))) $do = ''; - - if(!$do){ - if($_REQUEST['edit']){ - $do = 'metaform'; - }elseif(is_array($INUSE)){ - $do = 'filesinuse'; - }else{ - $do = 'filelist'; - } - } - - // output the content pane, wrapped in an event. - if(!$fromajax) ptln('<div id="media__content">'); - $data = array( 'do' => $do); - $evt = new Doku_Event('MEDIAMANAGER_CONTENT_OUTPUT', $data); - if ($evt->advise_before()) { - $do = $data['do']; - if($do == 'metaform'){ - media_metaform($IMG,$AUTH); - }elseif($do == 'filesinuse'){ - media_filesinuse($INUSE,$IMG); - }elseif($do == 'filelist'){ - media_filelist($NS,$AUTH,$JUMPTO); - }elseif($do == 'searchlist'){ - media_searchlist($_REQUEST['q'],$NS,$AUTH); + global $IMG; + global $AUTH; + global $INUSE; + global $NS; + global $JUMPTO; + + if(is_array($_REQUEST['do'])){ + $do = array_shift(array_keys($_REQUEST['do'])); }else{ - msg('Unknown action '.hsc($do),-1); + $do = $_REQUEST['do']; + } + if(in_array($do,array('save','cancel'))) $do = ''; + + if(!$do){ + if($_REQUEST['edit']){ + $do = 'metaform'; + }elseif(is_array($INUSE)){ + $do = 'filesinuse'; + }else{ + $do = 'filelist'; + } + } + + // output the content pane, wrapped in an event. + if(!$fromajax) ptln('<div id="media__content">'); + $data = array( 'do' => $do); + $evt = new Doku_Event('MEDIAMANAGER_CONTENT_OUTPUT', $data); + if ($evt->advise_before()) { + $do = $data['do']; + if($do == 'metaform'){ + media_metaform($IMG,$AUTH); + }elseif($do == 'filesinuse'){ + media_filesinuse($INUSE,$IMG); + }elseif($do == 'filelist'){ + media_filelist($NS,$AUTH,$JUMPTO); + }elseif($do == 'searchlist'){ + media_searchlist($_REQUEST['q'],$NS,$AUTH); + }else{ + msg('Unknown action '.hsc($do),-1); + } } - } - $evt->advise_after(); - unset($evt); - if(!$fromajax) ptln('</div>'); + $evt->advise_after(); + unset($evt); + if(!$fromajax) ptln('</div>'); } @@ -1244,11 +1122,11 @@ function tpl_mediaContent($fromajax=false){ * @author Andreas Gohr <andi@splitbrain.org> */ function tpl_mediaTree(){ - global $NS; + global $NS; - ptln('<div id="media__tree">'); - media_nstree($NS); - ptln('</div>'); + ptln('<div id="media__tree">'); + media_nstree($NS); + ptln('</div>'); } @@ -1268,7 +1146,6 @@ function tpl_actiondropdown($empty='',$button='>'){ global $lang; global $auth; - echo '<form method="post" accept-charset="utf-8">'; #FIXME action echo '<input type="hidden" name="id" value="'.$ID.'" />'; if($REV) echo '<input type="hidden" name="rev" value="'.$REV.'" />'; @@ -1278,74 +1155,39 @@ function tpl_actiondropdown($empty='',$button='>'){ echo '<option value="">'.$empty.'</option>'; echo '<optgroup label=" — ">'; - // 'edit' - most complicated type, we need to decide on current action - if($ACT == 'show' || $ACT == 'search'){ - if($INFO['writable']){ - if(!empty($INFO['draft'])) { - echo '<option value="edit">'.$lang['btn_draft'].'</option>'; - } else { - if($INFO['exists']){ - echo '<option value="edit">'.$lang['btn_edit'].'</option>'; - }else{ - echo '<option value="edit">'.$lang['btn_create'].'</option>'; - } - } - }else if(actionOK('source')) { //pseudo action - echo '<option value="edit">'.$lang['btn_source'].'</option>'; - } - }else{ - echo '<option value="show">'.$lang['btn_show'].'</option>'; - } + $act = tpl_get_action('edit'); + if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; - echo '<option value="revisions">'.$lang['btn_revs'].'</option>'; - if($INFO['ismanager'] && $REV && $INFO['writable'] && actionOK('revert')){ - echo '<option value="revert">'.$lang['btn_revert'].'</option>'; - } - echo '<option value="backlink">'.$lang['btn_backlink'].'</option>'; + $act = tpl_get_action('revisions'); + if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; + + $act = tpl_get_action('revert'); + if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; + + $act = tpl_get_action('backlink'); + if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; echo '</optgroup>'; echo '<optgroup label=" — ">'; - echo '<option value="recent">'.$lang['btn_recent'].'</option>'; - echo '<option value="index">'.$lang['btn_index'].'</option>'; + $act = tpl_get_action('recent'); + if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; + + $act = tpl_get_action('index'); + if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; echo '</optgroup>'; echo '<optgroup label=" — ">'; - if($conf['useacl'] && $auth){ - if($_SERVER['REMOTE_USER']){ - echo '<option value="logout">'.$lang['btn_logout'].'</option>'; - }else{ - echo '<option value="login">'.$lang['btn_login'].'</option>'; - } - } + $act = tpl_get_action('login'); + if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; - if($conf['useacl'] && $auth && $_SERVER['REMOTE_USER'] && - $auth->canDo('Profile') && ($ACT!='profile')){ - echo '<option value="profile">'.$lang['btn_profile'].'</option>'; - } - - if($conf['useacl'] && $auth && $ACT == 'show' && $conf['subscribers'] == 1){ - if($_SERVER['REMOTE_USER']){ - if($INFO['subscribed']) { - echo '<option value="unsubscribe">'.$lang['btn_unsubscribe'].'</option>'; - } else { - echo '<option value="subscribe">'.$lang['btn_subscribe'].'</option>'; - } - } - } + $act = tpl_get_action('profile'); + if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; - if($conf['useacl'] && $auth && $ACT == 'show' && $conf['subscribers'] == 1){ - if($_SERVER['REMOTE_USER']){ - if($INFO['subscribedns']) { - echo '<option value="unsubscribens">'.$lang['btn_unsubscribens'].'</option>'; - } else { - echo '<option value="subscribens">'.$lang['btn_subscribens'].'</option>'; - } - } - } + $act = tpl_get_action('subscribe'); + if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; - if($INFO['ismanager']){ - echo '<option value="admin">'.$lang['btn_admin'].'</option>'; - } + $act = tpl_get_action('admin'); + if($act) echo '<option value="'.$act['params']['do'].'">'.$lang['btn_'.$act['type']].'</option>'; echo '</optgroup>'; echo '</select>'; @@ -1373,14 +1215,14 @@ function tpl_license($img='badge',$imgonly=false,$return=false){ $src = license_img($img); if($src){ $out .= '<a href="'.$lic['url'].'" rel="license"'; - if($conf['target']['external']) $out .= ' target="'.$conf['target']['external'].'"'; + if($conf['target']['extern']) $out .= ' target="'.$conf['target']['extern'].'"'; $out .= '><img src="'.DOKU_BASE.$src.'" class="medialeft lic'.$img.'" alt="'.$lic['name'].'" /></a> '; } } if(!$imgonly) { $out .= $lang['license']; $out .= '<a href="'.$lic['url'].'" rel="license" class="urlextern"'; - if(isset($conf['target']['external'])) $out .= ' target="'.$conf['target']['external'].'"'; + if($conf['target']['extern']) $out .= ' target="'.$conf['target']['extern'].'"'; $out .= '>'.$lic['name'].'</a>'; } $out .= '</div>'; @@ -1406,5 +1248,89 @@ function tpl_include_page($pageid,$print=true){ echo $html; } +/** + * Display the subscribe form + * + * @author Adrian Lang <lang@cosmocode.de> + */ +function tpl_subscribe() { + global $INFO; + global $ID; + global $lang; + global $conf; + + echo p_locale_xhtml('subscr_form'); + echo '<h2>' . $lang['subscr_m_current_header'] . '</h2>'; + echo '<div class="level2">'; + if ($INFO['subscribed'] === false) { + echo '<p>' . $lang['subscr_m_not_subscribed'] . '</p>'; + } else { + echo '<ul>'; + foreach($INFO['subscribed'] as $sub) { + echo '<li><div class="li">'; + if ($sub['target'] !== $ID) { + echo '<code class="ns">'.hsc(prettyprint_id($sub['target'])).'</code>'; + } else { + echo '<code class="page">'.hsc(prettyprint_id($sub['target'])).'</code>'; + } + $sstl = $lang['subscr_style_'.$sub['style']]; + if(!$sstl) $sstl = hsc($sub['style']); + echo ' ('.$sstl.') '; + + echo '<a href="' . wl($ID, + array('do'=>'subscribe', + 'sub_target'=>$sub['target'], + 'sub_style'=>$sub['style'], + 'sub_action'=>'unsubscribe', + 'sectok' => getSecurityToken())) . + '" class="unsubscribe">'.$lang['subscr_m_unsubscribe'] . + '</a></div></li>'; + } + echo '</ul>'; + } + echo '</div>'; + + // Add new subscription form + echo '<h2>' . $lang['subscr_m_new_header'] . '</h2>'; + echo '<div class="level2">'; + $ns = getNS($ID).':'; + $targets = array( + $ID => '<code class="page">'.prettyprint_id($ID).'</code>', + $ns => '<code class="ns">'.prettyprint_id($ns).'</code>', + ); + $stime_days = $conf['subscribe_time']/60/60/24; + $styles = array( + 'every' => $lang['subscr_style_every'], + 'digest' => sprintf($lang['subscr_style_digest'], $stime_days), + 'list' => sprintf($lang['subscr_style_list'], $stime_days), + ); + + $form = new Doku_Form(array('id' => 'subscribe__form')); + $form->startFieldset($lang['subscr_m_subscribe']); + $form->addRadioSet('sub_target', $targets); + $form->startFieldset($lang['subscr_m_receive']); + $form->addRadioSet('sub_style', $styles); + $form->addHidden('sub_action', 'subscribe'); + $form->addHidden('do', 'subscribe'); + $form->addHidden('id', $ID); + $form->endFieldset(); + $form->addElement(form_makeButton('submit', 'subscribe', $lang['subscr_m_subscribe'])); + html_form('SUBSCRIBE', $form); + echo '</div>'; +} + +/** + * Tries to send already created content right to the browser + * + * Wraps around ob_flush() and flush() + * + * @author Andreas Gohr <andi@splitbrain.org> + */ +function tpl_flush(){ + ob_flush(); + flush(); +} + + //Setup VIM: ex: et ts=4 enc=utf-8 : diff --git a/inc/toolbar.php b/inc/toolbar.php index 9140970d1..a07bfb93d 100644 --- a/inc/toolbar.php +++ b/inc/toolbar.php @@ -7,8 +7,6 @@ */ if(!defined('DOKU_INC')) die('meh.'); -require_once(DOKU_INC.'inc/JSON.php'); - /** * Prepares and prints an JavaScript array with all toolbar buttons @@ -36,6 +34,7 @@ function toolbar_JSdefines($varname){ 'key' => 'b', 'open' => '**', 'close' => '**', + 'block' => false ), array( 'type' => 'format', @@ -44,6 +43,7 @@ function toolbar_JSdefines($varname){ 'key' => 'i', 'open' => '//', 'close' => '//', + 'block' => false ), array( 'type' => 'format', @@ -52,6 +52,7 @@ function toolbar_JSdefines($varname){ 'key' => 'u', 'open' => '__', 'close' => '__', + 'block' => false ), array( 'type' => 'format', @@ -60,6 +61,7 @@ function toolbar_JSdefines($varname){ 'key' => 'c', 'open' => "''", 'close' => "''", + 'block' => false ), array( 'type' => 'format', @@ -68,6 +70,7 @@ function toolbar_JSdefines($varname){ 'key' => 'd', 'open' => '<del>', 'close' => '</del>', + 'block' => false ), array( @@ -76,7 +79,8 @@ function toolbar_JSdefines($varname){ 'icon' => 'hequal.png', 'key' => '8', 'text' => $lang['qb_h'], - 'mod' => 0 + 'mod' => 0, + 'block' => true ), array( 'type' => 'autohead', @@ -84,7 +88,8 @@ function toolbar_JSdefines($varname){ 'icon' => 'hminus.png', 'key' => '9', 'text' => $lang['qb_h'], - 'mod' => 1 + 'mod' => 1, + 'block' => true ), array( 'type' => 'autohead', @@ -92,7 +97,8 @@ function toolbar_JSdefines($varname){ 'icon' => 'hplus.png', 'key' => '0', 'text' => $lang['qb_h'], - 'mod' => -1 + 'mod' => -1, + 'block' => true ), array( @@ -141,7 +147,8 @@ function toolbar_JSdefines($varname){ 'open' => '== ', 'close' => ' ==\n', ), - ) + ), + 'block' => true ), array( @@ -151,6 +158,7 @@ function toolbar_JSdefines($varname){ 'key' => 'l', 'open' => '[[', 'close' => ']]', + 'block' => false ), array( 'type' => 'format', @@ -159,6 +167,7 @@ function toolbar_JSdefines($varname){ 'open' => '[[', 'close' => ']]', 'sample' => 'http://example.com|'.$lang['qb_extlink'], + 'block' => false ), array( 'type' => 'formatln', @@ -167,6 +176,7 @@ function toolbar_JSdefines($varname){ 'open' => ' - ', 'close' => '', 'key' => '-', + 'block' => true ), array( 'type' => 'formatln', @@ -175,12 +185,14 @@ function toolbar_JSdefines($varname){ 'open' => ' * ', 'close' => '', 'key' => '.', + 'block' => true ), array( 'type' => 'insert', 'title' => $lang['qb_hr'], 'icon' => 'hr.png', 'insert' => '\n----\n', + 'block' => true ), array( 'type' => 'mediapopup', @@ -189,6 +201,7 @@ function toolbar_JSdefines($varname){ 'url' => 'lib/exe/mediamanager.php?ns=', 'name' => 'mediaselect', 'options'=> 'width=750,height=500,left=20,top=20,scrollbars=yes,resizable=yes', + 'block' => false ), array( 'type' => 'picker', @@ -196,18 +209,21 @@ function toolbar_JSdefines($varname){ 'icon' => 'smiley.png', 'list' => getSmileys(), 'icobase'=> 'smileys', + 'block' => false ), array( 'type' => 'picker', 'title' => $lang['qb_chars'], 'icon' => 'chars.png', 'list' => explode(' ','À à Á á  â à ã Ä ä Ǎ ǎ Ă ă Å å Ā ā Ą ą Æ æ Ć ć Ç ç Č č Ĉ ĉ Ċ ċ Ð đ ð Ď ď È è É é Ê ê Ë ë Ě ě Ē ē Ė ė Ę ę Ģ ģ Ĝ ĝ Ğ ğ Ġ ġ Ĥ ĥ Ì ì Í í Î î Ï ï Ǐ ǐ Ī ī İ ı Į į Ĵ ĵ Ķ ķ Ĺ ĺ Ļ ļ Ľ ľ Ł ł Ŀ ŀ Ń ń Ñ ñ Ņ ņ Ň ň Ò ò Ó ó Ô ô Õ õ Ö ö Ǒ ǒ Ō ō Ő ő Œ œ Ø ø Ŕ ŕ Ŗ ŗ Ř ř Ś ś Ş ş Š š Ŝ ŝ Ţ ţ Ť ť Ù ù Ú ú Û û Ü ü Ǔ ǔ Ŭ ŭ Ū ū Ů ů ǖ ǘ ǚ ǜ Ų ų Ű ű Ŵ ŵ Ý ý Ÿ ÿ Ŷ ŷ Ź ź Ž ž Ż ż Þ þ ß Ħ ħ ¿ ¡ ¢ £ ¤ ¥ € ¦ § ª ¬ ¯ ° ± ÷ ‰ ¼ ½ ¾ ¹ ² ³ µ ¶ † ‡ · • º ∀ ∂ ∃ Ə ə ∅ ∇ ∈ ∉ ∋ ∏ ∑ ‾ − ∗ √ ∝ ∞ ∠ ∧ ∨ ∩ ∪ ∫ ∴ ∼ ≅ ≈ ≠ ≡ ≤ ≥ ⊂ ⊃ ⊄ ⊆ ⊇ ⊕ ⊗ ⊥ ⋅ ◊ ℘ ℑ ℜ ℵ ♠ ♣ ♥ ♦ α β Γ γ Δ δ ε ζ η Θ θ ι κ Λ λ μ Ξ ξ Π π ρ Σ σ Τ τ υ Φ φ χ Ψ ψ Ω ω ★ ☆ ☎ ☚ ☛ ☜ ☝ ☞ ☟ ☹ ☺ ✔ ✘ × „ “ ” ‚ ‘ ’ « » ‹ › — – … ← ↑ → ↓ ↔ ⇐ ⇑ ⇒ ⇓ ⇔ © ™ ® ′ ″ [ ] { } ~ ( ) % § $ # | @'), + 'block' => false ), array( 'type' => 'signature', 'title' => $lang['qb_sig'], 'icon' => 'sig.png', 'key' => 'y', + 'block' => false ), )); } // end event TOOLBAR_DEFINE default action diff --git a/inc/utf8.php b/inc/utf8.php index b078540d2..47e7ed61f 100644 --- a/inc/utf8.php +++ b/inc/utf8.php @@ -2,7 +2,7 @@ /** * UTF8 helper functions * - * @license LGPL (http://www.gnu.org/copyleft/lesser.html) + * @license LGPL 2.1 (http://www.gnu.org/copyleft/lesser.html) * @author Andreas Gohr <andi@splitbrain.org> */ @@ -19,45 +19,6 @@ if(!defined('UTF8_MBSTRING')){ if(UTF8_MBSTRING){ mb_internal_encoding('UTF-8'); } -if(!function_exists('utf8_encodeFN')){ - /** - * URL-Encode a filename to allow unicodecharacters - * - * Slashes are not encoded - * - * When the second parameter is true the string will - * be encoded only if non ASCII characters are detected - - * This makes it safe to run it multiple times on the - * same string (default is true) - * - * @author Andreas Gohr <andi@splitbrain.org> - * @see urlencode - */ - function utf8_encodeFN($file,$safe=true){ - if($safe && preg_match('#^[a-zA-Z0-9/_\-.%]+$#',$file)){ - return $file; - } - $file = urlencode($file); - $file = str_replace('%2F','/',$file); - return $file; - } -} - -if(!function_exists('utf8_decodeFN')){ - /** - * URL-Decode a filename - * - * This is just a wrapper around urldecode - * - * @author Andreas Gohr <andi@splitbrain.org> - * @see urldecode - */ - function utf8_decodeFN($file){ - $file = urldecode($file); - return $file; - } -} - if(!function_exists('utf8_isASCII')){ /** * Checks if a string contains 7bit ASCII only |