diff --git a/changes.zip b/changes.zip
new file mode 100644
index 0000000..3d36700
Binary files /dev/null and b/changes.zip differ
diff --git a/ckgedit.zip b/ckgedit.zip
new file mode 100644
index 0000000..9b0c450
Binary files /dev/null and b/ckgedit.zip differ
diff --git a/color.zip b/color.zip
new file mode 100644
index 0000000..2192731
Binary files /dev/null and b/color.zip differ
diff --git a/dokuwiki-plugins-2021-10-05-ckgedit_fix_media_dir.patch b/dokuwiki-plugins-2021-10-05-ckgedit_fix_media_dir.patch
new file mode 100644
index 0000000..fcdc76f
--- /dev/null
+++ b/dokuwiki-plugins-2021-10-05-ckgedit_fix_media_dir.patch
@@ -0,0 +1,14 @@
+diff -ruN lib/plugins/ckgedit.old/action/meta.php lib/plugins/ckgedit/action/meta.php
+--- lib/plugins/ckgedit.old/action/meta.php 2021-10-05 17:27:06.277221520 +0200
++++ lib/plugins/ckgedit/action/meta.php 2021-10-05 17:28:56.594090117 +0200
+@@ -523,7 +523,9 @@
+ if(! empty($domain )) {
+ list($prefix,$mdir) = explode(trim(DOKU_BASE, '/'),$userfiles);
+ $mdir = ltrim($mdir, '/');
+- $media_dir = DOKU_BASE . $mdir . 'image/';
++ // $media_dir = DOKU_BASE . $mdir . 'image/';
++ $media_dir = DOKU_BASE . $mdir . 'lib/exe/fetch.php/';
++
+ }
+ else $media_dir = '/lib/plugins/ckgedit/fckeditor/'. $animal . '/image/';
+ setcookieSameSite('FCK_media',$media_dir, $expire, '/');
diff --git a/dokuwiki-plugins-2021-10-05-mupdf_tmp_dir.patch b/dokuwiki-plugins-2021-10-05-mupdf_tmp_dir.patch
new file mode 100644
index 0000000..492137b
--- /dev/null
+++ b/dokuwiki-plugins-2021-10-05-mupdf_tmp_dir.patch
@@ -0,0 +1,12 @@
+diff -ruN lib/plugins/dw2pdf.old/vendor/mpdf/mpdf/src/Config/ConfigVariables.php lib/plugins/dw2pdf/vendor/mpdf/mpdf/src/Config/ConfigVariables.php
+--- lib/plugins/dw2pdf.old/vendor/mpdf/mpdf/src/Config/ConfigVariables.php 2021-10-05 17:24:40.914758223 +0200
++++ lib/plugins/dw2pdf/vendor/mpdf/mpdf/src/Config/ConfigVariables.php 2021-10-05 17:25:34.471666510 +0200
+@@ -453,7 +453,7 @@
+ __DIR__ . '/../../ttfonts'
+ ],
+
+- 'tempDir' => __DIR__ . '/../../tmp',
++ 'tempDir' => '/var/lib/dokuwiki/data/tmp',
+
+ 'allowAnnotationFiles' => false,
+
diff --git a/dokuwiki-plugins.spec b/dokuwiki-plugins.spec
new file mode 100644
index 0000000..9fd7b98
--- /dev/null
+++ b/dokuwiki-plugins.spec
@@ -0,0 +1,334 @@
+%define realversion 20210220
+%define version %(echo %{realversion} | sed -e 's/-//g')
+%define releasenum 4
+
+%if 0%{?fedora} >= 11 || 0%{?rhel} >= 5
+%global useselinux 1
+%else
+%global useselinux 0
+%endif
+
+Name: dokuwiki-plugins
+Version: %{version}
+Release: %{releasenum}%{?dist}
+Summary: Standards compliant simple to use wiki
+Group: Applications/Internet
+License: GPLv2
+URL: http://www.dokuwiki.org/dokuwiki
+
+Source10: changes.zip
+Source11: ckgedit.zip
+Source12: color.zip
+Source13: dw2pdf.zip
+Source14: edittable.zip
+Source15: encryptedpasswords.zip
+Source16: hidden.zip
+Source17: howhard.zip
+Source18: loglog.zip
+Source19: note.zip
+Source20: nspages.zip
+Source21: odt.zip
+Source22: pagelist.zip
+Source23: pagemove.zip
+Source24: sortablejs.zip
+Source25: tag.zip
+Source26: todo.zip
+
+
+Patch1: dokuwiki-plugins-2021-10-05-ckgedit_fix_media_dir.patch
+Patch2: dokuwiki-plugins-2021-10-05-mupdf_tmp_dir.patch
+
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+BuildArch: noarch
+Requires: dokuwiki >= 20200729
+
+
+%description
+DokuWiki is a standards compliant, simple to use Wiki, mainly aimed at creating
+documentation of any kind. It has a simple but powerful syntax which makes sure
+the data files remain readable outside the Wiki and eases the creation of
+structured texts.
+
+All data is stored in plain text files no database is required.
+
+This package provides several useful plugins for dokuwiki
+
+%prep
+%{__rm} -rf lib
+%{__mkdir_p} lib/{plugins,tpl}
+# Extract plugins
+for S in %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13} %{SOURCE14} %{SOURCE15} %{SOURCE16} %{SOURCE17} %{SOURCE18} %{SOURCE19} %{SOURCE20} %{SOURCE21} %{SOURCE22} %{SOURCE23} %{SOURCE24} %{SOURCE25} %{SOURCE26}; do
+ unzip -o -d lib/plugins $S
+done
+
+mv lib/plugins/changes-master lib/plugins/changes
+mv lib/plugins/ckgedit-master lib/plugins/ckgedit
+mv lib/plugins/color-master lib/plugins/color
+mv lib/plugins/dw2pdf-master lib/plugins/dw2pdf
+mv lib/plugins/edittable-master lib/plugins/edittable
+mv lib/plugins/encryptedpasswords-master lib/plugins/encryptedpasswords
+mv lib/plugins/hidden-master lib/plugins/hidden
+mv lib/plugins/howhard-master lib/plugins/howhard
+mv lib/plugins/loglog-master lib/plugins/loglog
+mv lib/plugins/note-master lib/plugins/note
+mv lib/plugins/nspages-master lib/plugins/nspages
+mv lib/plugins/odt-master lib/plugins/odt
+mv lib/plugins/pagelist-master lib/plugins/pagelist
+mv lib/plugins/pagemove-master lib/plugins/pagemove
+mv lib/plugins/sortablejs-master lib/plugins/sortablejs
+mv lib/plugins/tag-master lib/plugins/tag
+mv lib/plugins/todo-master lib/plugins/todo
+
+ls -l lib/plugins/ckgedit
+
+find lib -type d -exec chmod 755 "{}" \;
+find lib -type f -exec chmod 644 "{}" \;
+
+%patch1 -p0
+%patch2 -p0
+
+%build
+
+%install
+rm -rf $RPM_BUILD_ROOT
+install -d -p $RPM_BUILD_ROOT%{_datadir}/dokuwiki/
+cp -rp lib $RPM_BUILD_ROOT%{_datadir}/dokuwiki/
+
+%files
+%defattr(-,root,root,-)
+#%attr(0755,apache,apache) %dir %{_datadir}/dokuwiki/lib/plugins
+# %attr(0775,root,apache) %dir %{_datadir}/dokuwiki/lib/plugins/*
+%{_datadir}/dokuwiki/lib/plugins/*
+
+%clean
+%{__rm} -rf $RPM_BUILD_ROOT
+
+%changelog
+* Thu Oct 14 2021 John Crisp \s*)*( |\s+)<\/p>/",$tmp[$n])) || (preg_match("/^\s+$/",$tmp[$n]))) {
+ unset($tmp[$n]);
+ }
+ }
+ return "~~START_HTML_BLOCK~~" . implode("\n",$tmp) . "CLOSE_HTML_BLOCK"; '
+ ),$this->xhtml);
+
+ $this->xhtml = preg_replace_callback(
+ '/( \s* \s+_ckgedit_NPBBR_\s+<\/p>/ms',"\n",$xhtml);
+ $xhtml = str_replace('_ckgedit_NPBBR_', " ", $xhtml);
+ $xhtml = str_replace('_ckgedit_QUOT_', '"', $xhtml);
+ $xhtml = str_replace('_ckgedit_NL', "\n", $xhtml);
+ $xhtml = str_replace(' ';
+ $R->cdata(dformat($date, $this->getConf('dayheaderfmt')));
+ $R->doc .= '
';
+ } else {
+ $R->header(dformat($date, $this->getConf('dayheaderfmt')), 3, 0);
+ }
+ }
+
+ /**
+ * Render with a simple list render
+ *
+ * @param array $changes
+ * @param Doku_Renderer_xhtml $R
+ * @param null $flags
+ */
+ protected function renderSimpleList($changes, &$R, $flags = null)
+ {
+ global $conf;
+ $flags = $this->parseSimpleListFlags($flags);
+
+ $dayheaders_date = '';
+ if ($flags['dayheaders']) {
+ $dayheaders_date = date('Ymd', $changes[0]['date']);
+ $this->dayheader($R, $changes[0]['date']);
+ }
+
+ $R->listu_open();
+ foreach ($changes as $change) {
+ if ($flags['dayheaders']) {
+ $tdate = date('Ymd', $change['date']);
+ if ($tdate != $dayheaders_date) {
+ $R->listu_close(); // break list to insert new header
+ $this->dayheader($R, $change['date']);
+ $R->listu_open();
+ $dayheaders_date = $tdate;
+ }
+ }
+
+ $R->listitem_open(1);
+ $R->listcontent_open();
+ if (trim($change['extra']) == 'media') {
+ $R->internalmedia(':' . $change['id'], null, null, null, null, null, 'linkonly');
+ } else {
+ $R->internallink(':' . $change['id'], null, null, false, 'navigation');
+ }
+ if ($flags['summary']) {
+ $R->cdata(' ' . $change['sum']);
+ }
+ if ($flags['signature']) {
+ $user = $this->getUserName($change);
+ $date = strftime($conf['dformat'], $change['date']);
+ $R->cdata(' ');
+ $R->entity('---');
+ $R->cdata(' ');
+ $R->emphasis_open();
+ $R->cdata($user . ' ' . $date);
+ $R->emphasis_close();
+ }
+ $R->listcontent_close();
+ $R->listitem_close();
+ }
+ $R->listu_close();
+ }
+
+ /**
+ * Parse flags for the simple list render
+ *
+ * @param array $flags
+ * @return array
+ */
+ protected function parseSimpleListFlags($flags)
+ {
+ $outFlags = array('summary' => true, 'signature' => false, 'dayheaders' => false);
+ if (!empty($flags)) {
+ foreach ($flags as $flag) {
+ if (array_key_exists($flag, $outFlags)) {
+ $outFlags[$flag] = true;
+ } elseif (substr($flag, 0, 2) == 'no') {
+ $flag = substr($flag, 2);
+ if (array_key_exists($flag, $outFlags)) {
+ $outFlags[$flag] = false;
+ }
+ }
+ }
+ }
+ return $outFlags;
+ }
+
+ /**
+ * Get username or fallback to ip
+ *
+ * @param array $change
+ * @return mixed
+ */
+ protected function getUserName($change)
+ {
+ /* @var DokuWiki_Auth_Plugin $auth */
+ global $auth;
+ if (!empty($change['user'])) {
+ $user = $auth->getUserData($change['user']);
+ if (empty($user)) {
+ return $change['user'];
+ } else {
+ return $user['name'];
+ }
+ } else {
+ return $change['ip'];
+ }
+ }
+}
diff --git a/lib/plugins/ckgedit/LICENSE b/lib/plugins/ckgedit/LICENSE
new file mode 100644
index 0000000..d159169
--- /dev/null
+++ b/lib/plugins/ckgedit/LICENSE
@@ -0,0 +1,339 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ |
/ms", "TPRE_CODE", $matches[2]);
+ $matches[2] = preg_replace("/
(.*?<\/code>)|ms',
+ function($matches) {
+ $retstr = $matches[1] . ">\n/*" . $matches[2] . "*/\n" . $matches[3];
+ return $retstr;
+ }, $text
+ );
+
+ $this->xhtml = $this->_render_xhtml($text);
+
+ /*interwiki frasl refactoring*/
+ // $this->xhtml = str_replace("__IWIKI_FSLASH__", "⁄", $this->xhtml);
+ if($this->getConf('duplicate_notes')) {
+ $this->xhtml = preg_replace("/FNoteINSert\d+/ms", "",$this->xhtml);
+ }
+ if($divalign) {
+ $this->xhtml = str_replace("CGEHASH", "#", $this->xhtml);
+ }
+ $this->xhtml = str_replace("__GESHI_QUOT__", '"', $this->xhtml);
+ $this->xhtml = str_replace("__GESHI_OPEN__", "< ", $this->xhtml);
+ $this->xhtml = str_replace('CHEVRONescC', '>>',$this->xhtml);
+ $this->xhtml = str_replace('CHEVRONescO', '<<',$this->xhtml);
+ $this->xhtml = preg_replace('/_QUOT_/ms','>',$this->xhtml); // dw quotes
+ $this->xhtml = preg_replace_callback(
+ "/^(>+)(.*?)$/ms",
+ function($matches) {
+ $matches[2] = str_ireplace('
',"",$matches[2]);
+ return $matches[1] . $matches[2] . "
";
+ },
+ $this->xhtml
+ );
+
+ if($pos !== false) {
+ $this->xhtml = preg_replace_callback(
+ '/(TPRE_CODE|TPRE_FILE)(.*?)(TPRE_CLOSE)/ms',
+ create_function(
+ '$matches',
+ '$matches[1] = preg_replace("/TPRE_CODE/","\n", $matches[1]);
+ $matches[1] = preg_replace("/TPRE_FILE/","
\n", $matches[1]);
+ $matches[2] = preg_replace("/TC_NL/ms", "\n", $matches[2]);
+ $matches[3] = "
";
+ return $matches[1] . $matches[2] . $matches[3];'
+ ),
+ $this->xhtml
+ );
+
+ }
+ $this->xhtml = preg_replace_callback(
+ '/~~START_HTML_BLOCK~~[\n\s]*(.*?)CLOSE_HTML_BLOCK/ms',
+ create_function(
+ '$matches',
+ '$matches[1] = str_replace("&","&",$matches[1]);
+ $matches[1] = html_entity_decode($matches[1],ENT_QUOTES, "UTF-8");
+ $matches[1] = preg_replace("/<\/?code.*?>/", "",$matches[1]);
+ $matches[1] = preg_replace("/^\s*<\/p>/","",$matches[1]);
+ $tmp = explode("\n", $matches[1]);
+ for($n=0; $n<7; $n++) {
+ if( (preg_match("/()(.*?)(<\/pre>)/ms',
+ create_function(
+ '$matches',
+ '$matches[4] = preg_replace("/(\||\^)[ ]+(\||\^)/ms","$1 $2" , $matches[4]);
+ return $matches[1] . $matches[2] . $matches[3] . $matches[4] . $matches[5];'
+ ),
+ $this->xhtml
+ );
+
+ $this->xhtml = preg_replace_callback(
+ '/~~MULTI_PLUGIN_OPEN~~(.*?)~~MULTI_PLUGIN_CLOSE~~/ms',
+ create_function(
+ '$matches',
+ 'return str_replace("<", "< ",$matches[0]);'
+ ),
+ $this->xhtml
+ );
+ //insures breaks are retained for single spacing
+ $this->xhtml = preg_replace('/
', "\n\n
\s*<\/p>/ms', '
', $this->xhtml);
+
+ if($this->draft_started) return $this->xhtml;
+ $cname = getCacheName($INFO['client'].$ID,'.draft.fckl');
+
+ $this->draft_started = false;
+ if(file_exists($cname) && !$this->draft_started) {
+
+ $this->draft_started = true;
+
+ $cdata = unserialize(io_readFile($cname,false));
+ $prefix = isset($cdata['prefix']) ? urldecode($cdata['prefix']) : "" ;
+ if($prefix) $prefix = $this-> _preprocess($prefix);
+ $text = urldecode($cdata['text']);
+ $suffix = isset($cdata['suffix']) ? urldecode($cdata['suffix']) : "" ;
+
+ if($suffix) $suffix = $this-> _preprocess($suffix);
+
+ preg_match_all("/<\/(.*?)\>/", $cdata['text'],$matches);
+ /* exclude drafts saved from preview mode */
+ if (!in_array('code', $matches[1]) && !in_array('file', $matches[1]) && !in_array('nowiki', $matches[1])) {
+ //$this->draft_text = $cdata['text'];
+ $this->draft_text = $prefix . $text . $suffix;
+ $this->draft_found = true;
+ msg($this->getLang('draft_msg')) ;
+ }
+ unlink($cname);
+ }
+ if($draft_started) return $this->xhtml;
+ return true;
+ }
+
+
+ /**
+ Check for for alternate style sheet
+ */
+ function alt_style_sheet() {
+ $stylesheet = DOKU_PLUGIN . 'ckgedit/ckeditor/css/_style.css';
+ if(file_exists($stylesheet)) {
+ global $conf;
+ $tpl_name = $conf['template'];
+ if($fh = fopen($stylesheet,"r")) {
+ $line_num = 0;
+ while (!feof($fh) && $line_num < 4) {
+ $line = fgets($fh,1024); //msg($line);
+ if(strpos($line,$tpl_name)!==false) {
+ return DOKU_BASE . '/lib/plugins/ckgedit/ckeditor/css/_style.css' ;
+ break;
+ }
+ $line_num ++;
+ }
+ }
+ }
+ return "";
+ }
+
+
+ /**
+ * function _print
+ * @author Myron Turner
+ */
+ function _print()
+ {
+ global $INFO;
+ global $lang;
+ global $ckgedit_lang;
+ global $ID;
+ global $REV;
+ global $DATE;
+ global $PRE;
+ global $SUF;
+ global $SUM;
+ $wr = $INFO['writable'];
+ if($wr){
+ if ($REV) print p_locale_xhtml('editrev');
+ $ro=false;
+ }else{
+ // check pseudo action 'source'
+ if(!actionOK('source')){
+ msg('Command disabled: source',-1);
+ return false;
+ }
+ print p_locale_xhtml('read');
+ $ro='readonly="readonly"';
+ }
+
+ if(!$DATE) $DATE = $INFO['lastmod'];
+ $guest_toolbar = $this->getConf('guest_toolbar');
+ $guest_media = $this->getConf('guest_media');
+ if(!isset($INFO['userinfo']) && !$guest_toolbar) {
+ $toolbar = "DokuwikiNoGuest";
+ }
+ else if(!isset($INFO['userinfo']) && !$guest_media) {
+ $toolbar = "DokuwikiGuest";
+ }
+ else $toolbar = 'Dokuwiki';
+
+$height = isset($_COOKIE['ckgEdht']) && $_COOKIE['ckgEdht'] ? $_COOKIE['ckgEdht']: 250;
+if(!is_numeric($height)) $height = 250;
+$fbsz_increment = isset($_COOKIE['fbsz']) && $_COOKIE['fbsz'] ? $_COOKIE['fbsz'] : false;
+$fbrowser_width = 1070;
+$fbrowser_height = 660;
+if($fbsz_increment) {
+ $fbrowser_width = $fbrowser_width + ($fbrowser_width*($fbsz_increment/100));
+ $fbrowser_height =$fbrowser_height + ($fbrowser_height*($fbsz_increment/100));
+}
+
+$doku_base= rtrim(DOKU_BASE,'/');
+$ns = getNS($_COOKIE['FCK_NmSp']);
+
+//get user file browser if allowed
+if ($this->getConf('allow_ckg_filebrowser') == 'all') {
+ $fb = $this->getUserFb();
+} else {
+ //use only allowed file browser
+ $fb = $this->getConf('allow_ckg_filebrowser');
+}
+
+//setup options
+if ($fb == 'dokuwiki') {
+ $fbOptions = "filebrowserImageBrowseUrl: \"$doku_base/lib/exe/mediamanager.php?ns=$ns&edid=wiki__text&onselect=ckg_edit_mediaman_insert&ckg_media=img\",
+ filebrowserBrowseUrl: \"$doku_base/lib/exe/mediamanager.php?ns=$ns&edid=wiki__text&onselect=ckg_edit_mediaman_insertlink&ckg_media=link\"";
+} else {
+ $fbOptions = "filebrowserImageBrowseUrl : \"$doku_base/lib/plugins/ckgedit/fckeditor/editor/filemanager/browser/default/browser.html?Type=Image&Connector=$doku_base/lib/plugins/ckgedit/fckeditor/editor/filemanager/connectors/php/connector.php\",
+ filebrowserBrowseUrl: \"$doku_base/lib/plugins/ckgedit/fckeditor/editor/filemanager/browser/default/browser.html?Type=File&Connector=$doku_base/lib/plugins/ckgedit/fckeditor/editor/filemanager/connectors/php/connector.php\"";
+}
+if($this->getConf('style_sheet')) {
+$contents_css = $this->alt_style_sheet();
+}
+//msg($contents_css);
+$ckeditor_replace =<<|
",$matches[0]);'
+ ),
+ $xhtml
+ );
+
+ $xhtml = preg_replace('/~\s*~\s*MULTI_PLUGIN_OPEN~\s*~/', "\n\n~~MULTI_PLUGIN_OPEN~~\n\n\n\n", $xhtml);
+ $xhtml = preg_replace('/~\s*~\s*MULTI_PLUGIN_CLOSE~\s*~/', "\n\n
\n\n~~MULTI_PLUGIN_CLOSE~~\n\n", $xhtml);
+
+ }
+
+
+ // remove empty paragraph: see _ckgedit_NPBBR_ comment above
+ $xhtml = preg_replace('/
\s+<\/(em|b|u|i)>/ms',"",$xhtml); + $xhtml = preg_replace("/col\d+\s+(\w+align)/ms", "$1",$xhtml); //remove col number for cell prpoerties dialog + $xhtml = str_replace('ckgeditFONTOpen', '<font',$xhtml); // protect font markup in code blocks + $xhtml = str_replace('ckgeditFONTClose', 'font>',$xhtml); + $xhtml = str_replace('DBLBACKSPLASH', '\\ ',$xhtml); + $xhtml = str_replace('NWPIPECHARACTER', '|',$xhtml); + $xhtml = str_replace('<blockquote>','',$xhtml); + $xhtml = str_replace('</blockquote>','',$xhtml); + + $xhtml= preg_replace_callback( + '/(\s*)?
(.*?)<\/blockquote>(\s*<\/p>)?/ms', + function($matches) { + $matches[0] = preg_replace("/()?\s*(
)\s*(<\/p>)?/m","$2",$matches[0]); + $matches[0] = preg_replace("/()?\s*(<\/blockquote>)\s*(<\/p>)?/m","$2
",$matches[0]); + // $matches[0] = str_replace('', '', $matches[0]); + return $matches[0]; + }, $xhtml + ); + + $ua = strtolower ($_SERVER['HTTP_USER_AGENT']); + if(strpos($ua,'chrome') !== false) { + $xhtml = preg_replace_callback( + '/(?<=)/sm', + create_function( + '$matches', + '$ret_str = " " . trim($matches[3]) . " " . trim($matches[2]) . " " . trim($matches[1]) ; + return $ret_str;' + ), + $xhtml + ); + } + + return $xhtml; + } + + function write_debug($what,$line="") { + return; + $handle = fopen("ckgedit_php.txt", "a"); + // if(is_array($what)) $what = print_r($what,true); + if($line) $what = "line $line\n" . $what; + fwrite($handle,"$what\n"); + fclose($handle); + } + + function get_switch_fb_value() { + if ($this->getUserFb() == 'dokuwiki') { + $fbText = $this->getLang('btn_val_ckg_fb'); + } else { + $fbText = $this->getLang('btn_val_dw_fb'); + } + return $fbText; + } + + function get_switch_fb_title() { + if ($this->getUserFb() == 'dokuwiki') { + $fbText = $this->getLang('btn_title_ckg_fb'); + } else { + $fbText = $this->getLang('btn_title_dw_fb'); + } + return $fbText; + } + + function getUserFb() { + //get user file browser + if (!isset($_COOKIE['ckgFbOpt'])) { + $_COOKIE['ckgFbOpt'] = $this->getConf('default_ckg_filebrowser'); + } + return $_COOKIE['ckgFbOpt']; + } + +} //end of action class + +?> diff --git a/lib/plugins/ckgedit/action/ent.ser b/lib/plugins/ckgedit/action/ent.ser new file mode 100644 index 0000000..aa3ca6f --- /dev/null +++ b/lib/plugins/ckgedit/action/ent.ser @@ -0,0 +1 @@ +a:490:{i:8704;s:3:"∀";s:6:"forall";s:3:"∀";i:8706;s:3:"∂";s:4:"part";s:3:"∂";i:8707;s:3:"∃";s:5:"exist";s:3:"∃";i:8709;s:3:"∅";s:5:"empty";s:3:"∅";i:8711;s:3:"∇";s:5:"nabla";s:3:"∇";i:8712;s:3:"∈";s:4:"isin";s:3:"∈";i:8713;s:3:"∉";s:5:"notin";s:3:"∉";i:8715;s:3:"∋";s:2:"ni";s:3:"∋";i:8719;s:3:"∏";s:4:"prod";s:3:"∏";i:8721;s:3:"∑";s:3:"sum";s:3:"∑";i:8722;s:3:"−";s:5:"minus";s:3:"−";i:8727;s:3:"∗";s:6:"lowast";s:3:"∗";i:8730;s:3:"√";s:5:"radic";s:3:"√";i:8733;s:3:"∝";s:4:"prop";s:3:"∝";i:8734;s:3:"∞";s:5:"infin";s:3:"∞";i:8736;s:3:"∠";s:3:"ang";s:3:"∠";i:8743;s:3:"∧";s:3:"and";s:3:"∧";i:8744;s:3:"∨";s:2:"or";s:3:"™";i:8745;s:3:"∩";s:3:"cap";s:3:"∩";i:8746;s:3:"∪";s:3:"cup";s:3:"∪";i:8747;s:3:"∫";s:3:"int";s:3:"∫";i:8756;s:3:"∴";s:6:"there4";s:3:"∴";i:8764;s:3:"∼";s:3:"sim";s:3:"∼";i:8773;s:3:"≅";s:4:"cong";s:3:"≅";i:8776;s:3:"≈";s:5:"asymp";s:3:"≈";i:8800;s:3:"≠";s:2:"ne";s:3:"≠";i:8801;s:3:"≡";s:5:"equiv";s:3:"≡";i:8804;s:3:"≤";s:2:"le";s:3:"≤";i:8805;s:3:"≥";s:2:"ge";s:3:"≥";i:8834;s:3:"⊂";s:3:"sub";s:3:"⊂";i:8835;s:3:"⊃";s:3:"sup";s:3:"⊃";i:8836;s:3:"⊄";s:4:"nsub";s:3:"⊄";i:8838;s:3:"⊆";s:4:"sube";s:3:"⊆";i:8839;s:3:"⊇";s:4:"supe";s:3:"⊇";i:8853;s:3:"⊕";s:5:"oplus";s:3:"⊕";i:8855;s:3:"⊗";s:6:"otimes";s:3:"⊗";i:8869;s:3:"⊥";s:4:"perp";s:3:"⊥";i:8901;s:3:"⋅";s:4:"sdot";s:3:"⋅";i:913;s:2:"α";s:5:"Alpha";s:2:"Α";i:914;s:2:"β";s:4:"Beta";s:2:"Β";i:915;s:2:"γ";s:5:"Gamma";s:2:"Γ";i:916;s:2:"δ";s:5:"Delta";s:2:"Δ";i:917;s:2:"ε";s:7:"Epsilon";s:2:"Ε";i:918;s:2:"ζ";s:4:"Zeta";s:2:"Ζ";i:919;s:2:"η";s:3:"Eta";s:2:"Η";i:920;s:2:"θ";s:5:"Theta";s:2:"Θ";i:921;s:2:"ι";s:4:"Iota";s:2:"Ι";i:922;s:2:"κ";s:5:"Kappa";s:2:"Κ";i:923;s:2:"λ";s:6:"Lambda";s:2:"Λ";i:924;s:2:"μ";s:2:"Mu";s:2:"Μ";i:925;s:2:"ν";s:2:"Nu";s:2:"Ν";i:926;s:2:"ξ";s:2:"Xi";s:2:"Ξ";i:927;s:2:"ο";s:7:"Omicron";s:2:"Ο";i:928;s:2:"π";s:2:"Pi";s:2:"Π";i:929;s:2:"ρ";s:3:"Rho";s:2:"Ρ";i:931;s:2:"σ";s:5:"Sigma";s:2:"Σ";i:932;s:2:"τ";s:3:"Tau";s:2:"Τ";i:933;s:2:"υ";s:7:"Upsilon";s:2:"Υ";i:934;s:2:"φ";s:3:"Phi";s:2:"Φ";i:935;s:2:"χ";s:3:"Chi";s:2:"Χ";i:936;s:2:"ψ";s:3:"Psi";s:2:"Ψ";i:937;s:2:"ω";s:5:"Omega";s:2:"Ω";i:945;s:2:"α";s:5:"alpha";s:2:"α";i:946;s:2:"β";s:4:"beta";s:2:"β";i:947;s:2:"γ";s:5:"gamma";s:2:"γ";i:948;s:2:"δ";s:5:"delta";s:2:"δ";i:949;s:2:"ε";s:7:"epsilon";s:2:"ε";i:950;s:2:"ζ";s:4:"zeta";s:2:"ζ";i:951;s:2:"η";s:3:"eta";s:2:"η";i:952;s:2:"θ";s:5:"theta";s:2:"θ";i:953;s:2:"ι";s:4:"iota";s:2:"ι";i:954;s:2:"κ";s:5:"kappa";s:2:"κ";i:955;s:2:"λ";s:6:"lambda";s:2:"λ";i:956;s:2:"μ";s:2:"mu";s:2:"μ";i:957;s:2:"ν";s:2:"nu";s:2:"ν";i:958;s:2:"ξ";s:2:"xi";s:2:"ξ";i:959;s:2:"ο";s:7:"omicron";s:2:"ο";i:960;s:2:"π";s:2:"pi";s:2:"π";i:961;s:2:"ρ";s:3:"rho";s:2:"ρ";i:962;s:2:"ς";s:6:"sigmaf";s:2:"ς";i:963;s:2:"σ";s:5:"sigma";s:2:"σ";i:964;s:2:"τ";s:3:"tau";s:2:"τ";i:965;s:2:"υ";s:7:"upsilon";s:2:"υ";i:966;s:2:"φ";s:3:"phi";s:2:"φ";i:967;s:2:"χ";s:3:"chi";s:2:"χ";i:968;s:2:"ψ";s:3:"psi";s:2:"ψ";i:969;s:2:"ω";s:5:"omega";s:2:"ω";i:977;s:2:"ϑ";s:8:"thetasym";s:2:"ϑ";i:978;s:2:"ϒ";s:5:"upsih";s:2:"ϒ";i:982;s:2:"ϖ";s:3:"piv";s:2:"ϖ";i:338;s:2:"œ";s:5:"OElig";s:2:"Œ";i:339;s:2:"œ";s:5:"oelig";s:2:"œ";i:352;s:2:"š";s:6:"Scaron";s:2:"Š";i:353;s:2:"š";s:6:"scaron";s:2:"š";i:376;s:2:"ÿ";s:4:"Yuml";s:2:"Ÿ";i:402;s:2:"ƒ";s:4:"fnof";s:2:"ƒ";i:710;s:2:"ˆ";s:4:"circ";s:2:"ˆ";i:732;s:2:"˜";s:5:"tilde";s:2:"˜";i:8194;s:3:" ";s:4:"ensp";s:3:" ";i:8195;s:3:" ";s:4:"emsp";s:3:" ";i:8201;s:3:" ";s:6:"thinsp";s:3:" ";i:8204;s:3:"";s:4:"zwnj";s:3:"";i:8205;s:3:"";s:3:"zwj";s:3:"";i:8206;s:3:"";s:3:"lrm";s:3:"";i:8207;s:3:"";s:3:"rlm";s:3:"";i:8211;s:3:"–";s:5:"ndash";s:3:"–";i:8212;s:3:"—";s:5:"mdash";s:3:"—";i:8216;s:3:"‘";s:5:"lsquo";s:3:"‘";i:8217;s:3:"’";s:5:"rsquo";s:3:"’";i:8218;s:3:"‚";s:5:"sbquo";s:3:"‚";i:8220;s:3:"“";s:5:"ldquo";s:3:"“";i:8221;s:3:"”";s:5:"rdquo";s:3:"”";i:8222;s:3:"„";s:5:"bdquo";s:3:"„";i:8224;s:3:"†";s:6:"dagger";s:3:"†";i:8225;s:3:"†";s:6:"Dagger";s:3:"‡";i:8226;s:3:"•";s:4:"bull";s:3:"•";i:8230;s:3:"…";s:6:"hellip";s:3:"…";i:8240;s:3:"‰";s:6:"permil";s:3:"‰";i:8242;s:3:"′";s:5:"prime";s:3:"′";i:8243;s:3:"′";s:5:"Prime";s:3:"″";i:8249;s:3:"‹";s:6:"lsaquo";s:3:"‹";i:8250;s:3:"›";s:6:"rsaquo";s:3:"›";i:8254;s:3:"‾";s:5:"oline";s:3:"‾";i:8364;s:3:"€";s:4:"euro";s:3:"€";i:8482;s:3:"™";i:8592;s:3:"←";s:4:"larr";s:3:"←";i:8593;s:3:"↑";s:4:"uarr";s:3:"↑";i:8594;s:3:"→";s:4:"rarr";s:3:"→";i:8595;s:3:"↓";s:4:"darr";s:3:"↓";i:8596;s:3:"↔";s:4:"harr";s:3:"↔";i:8629;s:3:"↵";s:5:"crarr";s:3:"↵";i:8968;s:3:"⌈";s:5:"lceil";s:3:"⌈";i:8969;s:3:"⌉";s:5:"rceil";s:3:"⌉";i:8970;s:3:"⌊";s:6:"lfloor";s:3:"⌊";i:8971;s:3:"⌋";s:6:"rfloor";s:3:"⌋";i:9674;s:3:"◊";s:3:"loz";s:3:"◊";i:9824;s:3:"♠";s:6:"spades";s:3:"♠";i:9827;s:3:"♣";s:5:"clubs";s:3:"♣";i:9829;s:3:"♥";s:6:"hearts";s:3:"♥";i:9830;s:3:"♦";s:5:"diams";s:3:"♦";i:161;s:2:"¡";s:5:"iexcl";s:2:"¡";i:162;s:2:"¢";s:4:"cent";s:2:"¢";i:163;s:2:"£";s:5:"pound";s:2:"£";i:164;s:2:"¤";s:6:"curren";s:2:"¤";i:165;s:2:"¥";s:3:"yen";s:2:"¥";i:166;s:2:"¦";s:6:"brvbar";s:2:"¦";i:167;s:2:"§";s:4:"sect";s:2:"§";i:168;s:2:"¨";s:3:"uml";s:2:"¨";i:169;s:2:"©";s:4:"copy";s:2:"©";i:170;s:2:"ª";s:4:"ordf";s:2:"ª";i:171;s:2:"«";s:5:"laquo";s:2:"«";i:172;s:2:"¬";s:3:"not";s:2:"¬";i:173;s:2:"";s:3:"shy";s:2:"";i:174;s:2:"®";s:3:"reg";s:2:"®";i:175;s:2:"¯";s:4:"macr";s:2:"¯";i:176;s:2:"°";s:3:"deg";s:2:"°";i:177;s:2:"±";s:6:"plusmn";s:2:"±";i:178;s:2:"²";s:4:"sup2";s:2:"²";i:179;s:2:"³";s:4:"sup3";s:2:"³";i:180;s:2:"´";s:5:"acute";s:2:"´";i:181;s:2:"µ";s:5:"micro";s:2:"µ";i:182;s:2:"¶";s:4:"para";s:2:"¶";i:183;s:2:"·";s:6:"middot";s:2:"·";i:184;s:2:"¸";s:5:"cedil";s:2:"¸";i:185;s:2:"¹";s:4:"sup1";s:2:"¹";i:186;s:2:"º";s:4:"ordm";s:2:"º";i:187;s:2:"»";s:5:"raquo";s:2:"»";i:188;s:2:"¼";s:6:"frac14";s:2:"¼";i:189;s:2:"½";s:6:"frac12";s:2:"½";i:190;s:2:"¾";s:6:"frac34";s:2:"¾";i:191;s:2:"¿";s:6:"iquest";s:2:"¿";i:215;s:2:"×";s:5:"times";s:2:"×";i:247;s:2:"÷";s:6:"divide";s:2:"÷";i:192;s:2:"à";s:6:"Agrave";s:2:"À";i:193;s:2:"á";s:6:"Aacute";s:2:"Á";i:194;s:2:"â";s:5:"Acirc";s:2:"Â";i:195;s:2:"ã";s:6:"Atilde";s:2:"Ã";i:196;s:2:"Ä";s:4:"Auml";s:2:"Ä";i:197;s:2:"å";s:5:"Aring";s:2:"Å";i:198;s:2:"æ";s:5:"AElig";s:2:"Æ";i:199;s:2:"ç";s:6:"Ccedil";s:2:"Ç";i:200;s:2:"è";s:6:"Egrave";s:2:"È";i:201;s:2:"é";s:6:"Eacute";s:2:"É";i:202;s:2:"ê";s:5:"Ecirc";s:2:"Ê";i:203;s:2:"Ë";s:4:"Euml";s:2:"Ë";i:204;s:2:"ì";s:6:"Igrave";s:2:"Ì";i:205;s:2:"í";s:6:"Iacute";s:2:"Í";i:206;s:2:"î";s:5:"Icirc";s:2:"Î";i:207;s:2:"ï";s:4:"Iuml";s:2:"Ï";i:208;s:2:"ð";s:3:"ETH";s:2:"Ð";i:209;s:2:"ñ";s:6:"Ntilde";s:2:"Ñ";i:210;s:2:"ò";s:6:"Ograve";s:2:"Ò";i:211;s:2:"ó";s:6:"Oacute";s:2:"Ó";i:212;s:2:"ô";s:5:"Ocirc";s:2:"Ô";i:213;s:2:"õ";s:6:"Otilde";s:2:"Õ";i:214;s:2:"Ö";s:4:"Ouml";s:2:"Ö";i:216;s:2:"ø";s:6:"Oslash";s:2:"Ø";i:217;s:2:"ù";s:6:"Ugrave";s:2:"Ù";i:218;s:2:"ú";s:6:"Uacute";s:2:"Ú";i:219;s:2:"û";s:5:"Ucirc";s:2:"Û";i:220;s:2:"Ü";s:4:"Uuml";s:2:"Ü";i:221;s:2:"ý";s:6:"Yacute";s:2:"Ý";i:222;s:2:"þ";s:5:"THORN";s:2:"Þ";i:223;s:2:"ß";s:5:"szlig";s:2:"ß";i:224;s:2:"à";s:6:"agrave";s:2:"à";i:225;s:2:"á";s:6:"aacute";s:2:"á";i:226;s:2:"â";s:5:"acirc";s:2:"â";i:227;s:2:"ã";s:6:"atilde";s:2:"ã";i:228;s:2:"ä";s:4:"auml";s:2:"ä";i:229;s:2:"å";s:5:"aring";s:2:"å";i:230;s:2:"æ";s:5:"aelig";s:2:"æ";i:231;s:2:"ç";s:6:"ccedil";s:2:"ç";i:232;s:2:"è";s:6:"egrave";s:2:"è";i:233;s:2:"é";s:6:"eacute";s:2:"é";i:234;s:2:"ê";s:5:"ecirc";s:2:"ê";i:235;s:2:"ë";s:4:"euml";s:2:"ë";i:236;s:2:"ì";s:6:"igrave";s:2:"ì";i:237;s:2:"í";s:6:"iacute";s:2:"í";i:238;s:2:"î";s:5:"icirc";s:2:"î";i:239;s:2:"ï";s:4:"iuml";s:2:"ï";i:240;s:2:"ð";s:3:"eth";s:2:"ð";i:241;s:2:"ñ";s:6:"ntilde";s:2:"ñ";i:242;s:2:"ò";s:6:"ograve";s:2:"ò";i:243;s:2:"ó";s:6:"oacute";s:2:"ó";i:244;s:2:"ô";s:5:"ocirc";s:2:"ô";i:245;s:2:"õ";s:6:"otilde";s:2:"õ";i:246;s:2:"ö";s:4:"ouml";s:2:"ö";i:248;s:2:"ø";s:6:"oslash";s:2:"ø";i:249;s:2:"ù";s:6:"ugrave";s:2:"ù";i:250;s:2:"ú";s:6:"uacute";s:2:"ú";i:251;s:2:"û";s:5:"ucirc";s:2:"û";i:252;s:2:"ü";s:4:"uuml";s:2:"ü";i:253;s:2:"ý";s:6:"yacute";s:2:"ý";i:254;s:2:"þ";s:5:"thorn";s:2:"þ";i:255;s:2:"ÿ";s:4:"yuml";s:2:"ÿ";s:5:"trade";s:3:"™";i:32;s:1:" ";s:4:"nbsp";s:1:" ";s:4:"quot";s:1:""";i:34;s:1:""";s:3:"amp";s:1:"&";i:38;s:1:"&";s:2:"lt";s:1:"<";i:60;s:1:"<";s:2:"gt";s:1:">";i:62;s:1:">";s:5:"frasl";s:3:"⁄";i:8260;s:3:"⁄";i:8656;s:3:"⇐";i:8657;s:3:"↑";i:8658;s:3:"⇒";i:8659;s:3:"↓";i:8660;s:3:"⇔";s:4:"hArr";s:3:"⇔";s:4:"rArr";s:3:"⇒";s:4:"lArr";s:3:"⇐";} \ No newline at end of file diff --git a/lib/plugins/ckgedit/action/entities/ENTITIES.HOWTO b/lib/plugins/ckgedit/action/entities/ENTITIES.HOWTO new file mode 100644 index 0000000..806a5a5 --- /dev/null +++ b/lib/plugins/ckgedit/action/entities/ENTITIES.HOWTO @@ -0,0 +1,55 @@ +Adding Entities to the Entities Defintions Array. + +You create an Entity definition file with the format illustrated below, and then run the php +script ents_seri.php + +Name your definitions file add.ent + +Then at the command line type: + php ents_seri.php + +Alternatively, you can give your entity definition file any name you want and feed +the file name to the script at the command line: + php ents_seri.php your_entity_file + +This creates a new entities file called ent.ser, which must then be copied to +the fckg/action subdirectory. You would be wise to first back up the original ent.ser +before over-writing it. + +There are two definition files in the action/entities: ents.data and fcked-ents.data. +These are required and must not be removed from the directory. + +The definition file has the following format: + +character +entity numeric code +entity character code + +character +entity numeric code +entity character code + +etc. + +There is one empty line between each definition. Here is an actual example. + +< +< +< + +> +> +> + + +¡ +¡ + + +¢ +¢ + + +£ +£ + diff --git a/lib/plugins/ckgedit/action/entities/ent.ser b/lib/plugins/ckgedit/action/entities/ent.ser new file mode 100644 index 0000000..aa3ca6f --- /dev/null +++ b/lib/plugins/ckgedit/action/entities/ent.ser @@ -0,0 +1 @@ +a:490:{i:8704;s:3:"∀";s:6:"forall";s:3:"∀";i:8706;s:3:"∂";s:4:"part";s:3:"∂";i:8707;s:3:"∃";s:5:"exist";s:3:"∃";i:8709;s:3:"∅";s:5:"empty";s:3:"∅";i:8711;s:3:"∇";s:5:"nabla";s:3:"∇";i:8712;s:3:"∈";s:4:"isin";s:3:"∈";i:8713;s:3:"∉";s:5:"notin";s:3:"∉";i:8715;s:3:"∋";s:2:"ni";s:3:"∋";i:8719;s:3:"∏";s:4:"prod";s:3:"∏";i:8721;s:3:"∑";s:3:"sum";s:3:"∑";i:8722;s:3:"−";s:5:"minus";s:3:"−";i:8727;s:3:"∗";s:6:"lowast";s:3:"∗";i:8730;s:3:"√";s:5:"radic";s:3:"√";i:8733;s:3:"∝";s:4:"prop";s:3:"∝";i:8734;s:3:"∞";s:5:"infin";s:3:"∞";i:8736;s:3:"∠";s:3:"ang";s:3:"∠";i:8743;s:3:"∧";s:3:"and";s:3:"∧";i:8744;s:3:"∨";s:2:"or";s:3:"™";i:8745;s:3:"∩";s:3:"cap";s:3:"∩";i:8746;s:3:"∪";s:3:"cup";s:3:"∪";i:8747;s:3:"∫";s:3:"int";s:3:"∫";i:8756;s:3:"∴";s:6:"there4";s:3:"∴";i:8764;s:3:"∼";s:3:"sim";s:3:"∼";i:8773;s:3:"≅";s:4:"cong";s:3:"≅";i:8776;s:3:"≈";s:5:"asymp";s:3:"≈";i:8800;s:3:"≠";s:2:"ne";s:3:"≠";i:8801;s:3:"≡";s:5:"equiv";s:3:"≡";i:8804;s:3:"≤";s:2:"le";s:3:"≤";i:8805;s:3:"≥";s:2:"ge";s:3:"≥";i:8834;s:3:"⊂";s:3:"sub";s:3:"⊂";i:8835;s:3:"⊃";s:3:"sup";s:3:"⊃";i:8836;s:3:"⊄";s:4:"nsub";s:3:"⊄";i:8838;s:3:"⊆";s:4:"sube";s:3:"⊆";i:8839;s:3:"⊇";s:4:"supe";s:3:"⊇";i:8853;s:3:"⊕";s:5:"oplus";s:3:"⊕";i:8855;s:3:"⊗";s:6:"otimes";s:3:"⊗";i:8869;s:3:"⊥";s:4:"perp";s:3:"⊥";i:8901;s:3:"⋅";s:4:"sdot";s:3:"⋅";i:913;s:2:"α";s:5:"Alpha";s:2:"Α";i:914;s:2:"β";s:4:"Beta";s:2:"Β";i:915;s:2:"γ";s:5:"Gamma";s:2:"Γ";i:916;s:2:"δ";s:5:"Delta";s:2:"Δ";i:917;s:2:"ε";s:7:"Epsilon";s:2:"Ε";i:918;s:2:"ζ";s:4:"Zeta";s:2:"Ζ";i:919;s:2:"η";s:3:"Eta";s:2:"Η";i:920;s:2:"θ";s:5:"Theta";s:2:"Θ";i:921;s:2:"ι";s:4:"Iota";s:2:"Ι";i:922;s:2:"κ";s:5:"Kappa";s:2:"Κ";i:923;s:2:"λ";s:6:"Lambda";s:2:"Λ";i:924;s:2:"μ";s:2:"Mu";s:2:"Μ";i:925;s:2:"ν";s:2:"Nu";s:2:"Ν";i:926;s:2:"ξ";s:2:"Xi";s:2:"Ξ";i:927;s:2:"ο";s:7:"Omicron";s:2:"Ο";i:928;s:2:"π";s:2:"Pi";s:2:"Π";i:929;s:2:"ρ";s:3:"Rho";s:2:"Ρ";i:931;s:2:"σ";s:5:"Sigma";s:2:"Σ";i:932;s:2:"τ";s:3:"Tau";s:2:"Τ";i:933;s:2:"υ";s:7:"Upsilon";s:2:"Υ";i:934;s:2:"φ";s:3:"Phi";s:2:"Φ";i:935;s:2:"χ";s:3:"Chi";s:2:"Χ";i:936;s:2:"ψ";s:3:"Psi";s:2:"Ψ";i:937;s:2:"ω";s:5:"Omega";s:2:"Ω";i:945;s:2:"α";s:5:"alpha";s:2:"α";i:946;s:2:"β";s:4:"beta";s:2:"β";i:947;s:2:"γ";s:5:"gamma";s:2:"γ";i:948;s:2:"δ";s:5:"delta";s:2:"δ";i:949;s:2:"ε";s:7:"epsilon";s:2:"ε";i:950;s:2:"ζ";s:4:"zeta";s:2:"ζ";i:951;s:2:"η";s:3:"eta";s:2:"η";i:952;s:2:"θ";s:5:"theta";s:2:"θ";i:953;s:2:"ι";s:4:"iota";s:2:"ι";i:954;s:2:"κ";s:5:"kappa";s:2:"κ";i:955;s:2:"λ";s:6:"lambda";s:2:"λ";i:956;s:2:"μ";s:2:"mu";s:2:"μ";i:957;s:2:"ν";s:2:"nu";s:2:"ν";i:958;s:2:"ξ";s:2:"xi";s:2:"ξ";i:959;s:2:"ο";s:7:"omicron";s:2:"ο";i:960;s:2:"π";s:2:"pi";s:2:"π";i:961;s:2:"ρ";s:3:"rho";s:2:"ρ";i:962;s:2:"ς";s:6:"sigmaf";s:2:"ς";i:963;s:2:"σ";s:5:"sigma";s:2:"σ";i:964;s:2:"τ";s:3:"tau";s:2:"τ";i:965;s:2:"υ";s:7:"upsilon";s:2:"υ";i:966;s:2:"φ";s:3:"phi";s:2:"φ";i:967;s:2:"χ";s:3:"chi";s:2:"χ";i:968;s:2:"ψ";s:3:"psi";s:2:"ψ";i:969;s:2:"ω";s:5:"omega";s:2:"ω";i:977;s:2:"ϑ";s:8:"thetasym";s:2:"ϑ";i:978;s:2:"ϒ";s:5:"upsih";s:2:"ϒ";i:982;s:2:"ϖ";s:3:"piv";s:2:"ϖ";i:338;s:2:"œ";s:5:"OElig";s:2:"Œ";i:339;s:2:"œ";s:5:"oelig";s:2:"œ";i:352;s:2:"š";s:6:"Scaron";s:2:"Š";i:353;s:2:"š";s:6:"scaron";s:2:"š";i:376;s:2:"ÿ";s:4:"Yuml";s:2:"Ÿ";i:402;s:2:"ƒ";s:4:"fnof";s:2:"ƒ";i:710;s:2:"ˆ";s:4:"circ";s:2:"ˆ";i:732;s:2:"˜";s:5:"tilde";s:2:"˜";i:8194;s:3:" ";s:4:"ensp";s:3:" ";i:8195;s:3:" ";s:4:"emsp";s:3:" ";i:8201;s:3:" ";s:6:"thinsp";s:3:" ";i:8204;s:3:"";s:4:"zwnj";s:3:"";i:8205;s:3:"";s:3:"zwj";s:3:"";i:8206;s:3:"";s:3:"lrm";s:3:"";i:8207;s:3:"";s:3:"rlm";s:3:"";i:8211;s:3:"–";s:5:"ndash";s:3:"–";i:8212;s:3:"—";s:5:"mdash";s:3:"—";i:8216;s:3:"‘";s:5:"lsquo";s:3:"‘";i:8217;s:3:"’";s:5:"rsquo";s:3:"’";i:8218;s:3:"‚";s:5:"sbquo";s:3:"‚";i:8220;s:3:"“";s:5:"ldquo";s:3:"“";i:8221;s:3:"”";s:5:"rdquo";s:3:"”";i:8222;s:3:"„";s:5:"bdquo";s:3:"„";i:8224;s:3:"†";s:6:"dagger";s:3:"†";i:8225;s:3:"†";s:6:"Dagger";s:3:"‡";i:8226;s:3:"•";s:4:"bull";s:3:"•";i:8230;s:3:"…";s:6:"hellip";s:3:"…";i:8240;s:3:"‰";s:6:"permil";s:3:"‰";i:8242;s:3:"′";s:5:"prime";s:3:"′";i:8243;s:3:"′";s:5:"Prime";s:3:"″";i:8249;s:3:"‹";s:6:"lsaquo";s:3:"‹";i:8250;s:3:"›";s:6:"rsaquo";s:3:"›";i:8254;s:3:"‾";s:5:"oline";s:3:"‾";i:8364;s:3:"€";s:4:"euro";s:3:"€";i:8482;s:3:"™";i:8592;s:3:"←";s:4:"larr";s:3:"←";i:8593;s:3:"↑";s:4:"uarr";s:3:"↑";i:8594;s:3:"→";s:4:"rarr";s:3:"→";i:8595;s:3:"↓";s:4:"darr";s:3:"↓";i:8596;s:3:"↔";s:4:"harr";s:3:"↔";i:8629;s:3:"↵";s:5:"crarr";s:3:"↵";i:8968;s:3:"⌈";s:5:"lceil";s:3:"⌈";i:8969;s:3:"⌉";s:5:"rceil";s:3:"⌉";i:8970;s:3:"⌊";s:6:"lfloor";s:3:"⌊";i:8971;s:3:"⌋";s:6:"rfloor";s:3:"⌋";i:9674;s:3:"◊";s:3:"loz";s:3:"◊";i:9824;s:3:"♠";s:6:"spades";s:3:"♠";i:9827;s:3:"♣";s:5:"clubs";s:3:"♣";i:9829;s:3:"♥";s:6:"hearts";s:3:"♥";i:9830;s:3:"♦";s:5:"diams";s:3:"♦";i:161;s:2:"¡";s:5:"iexcl";s:2:"¡";i:162;s:2:"¢";s:4:"cent";s:2:"¢";i:163;s:2:"£";s:5:"pound";s:2:"£";i:164;s:2:"¤";s:6:"curren";s:2:"¤";i:165;s:2:"¥";s:3:"yen";s:2:"¥";i:166;s:2:"¦";s:6:"brvbar";s:2:"¦";i:167;s:2:"§";s:4:"sect";s:2:"§";i:168;s:2:"¨";s:3:"uml";s:2:"¨";i:169;s:2:"©";s:4:"copy";s:2:"©";i:170;s:2:"ª";s:4:"ordf";s:2:"ª";i:171;s:2:"«";s:5:"laquo";s:2:"«";i:172;s:2:"¬";s:3:"not";s:2:"¬";i:173;s:2:"";s:3:"shy";s:2:"";i:174;s:2:"®";s:3:"reg";s:2:"®";i:175;s:2:"¯";s:4:"macr";s:2:"¯";i:176;s:2:"°";s:3:"deg";s:2:"°";i:177;s:2:"±";s:6:"plusmn";s:2:"±";i:178;s:2:"²";s:4:"sup2";s:2:"²";i:179;s:2:"³";s:4:"sup3";s:2:"³";i:180;s:2:"´";s:5:"acute";s:2:"´";i:181;s:2:"µ";s:5:"micro";s:2:"µ";i:182;s:2:"¶";s:4:"para";s:2:"¶";i:183;s:2:"·";s:6:"middot";s:2:"·";i:184;s:2:"¸";s:5:"cedil";s:2:"¸";i:185;s:2:"¹";s:4:"sup1";s:2:"¹";i:186;s:2:"º";s:4:"ordm";s:2:"º";i:187;s:2:"»";s:5:"raquo";s:2:"»";i:188;s:2:"¼";s:6:"frac14";s:2:"¼";i:189;s:2:"½";s:6:"frac12";s:2:"½";i:190;s:2:"¾";s:6:"frac34";s:2:"¾";i:191;s:2:"¿";s:6:"iquest";s:2:"¿";i:215;s:2:"×";s:5:"times";s:2:"×";i:247;s:2:"÷";s:6:"divide";s:2:"÷";i:192;s:2:"à";s:6:"Agrave";s:2:"À";i:193;s:2:"á";s:6:"Aacute";s:2:"Á";i:194;s:2:"â";s:5:"Acirc";s:2:"Â";i:195;s:2:"ã";s:6:"Atilde";s:2:"Ã";i:196;s:2:"Ä";s:4:"Auml";s:2:"Ä";i:197;s:2:"å";s:5:"Aring";s:2:"Å";i:198;s:2:"æ";s:5:"AElig";s:2:"Æ";i:199;s:2:"ç";s:6:"Ccedil";s:2:"Ç";i:200;s:2:"è";s:6:"Egrave";s:2:"È";i:201;s:2:"é";s:6:"Eacute";s:2:"É";i:202;s:2:"ê";s:5:"Ecirc";s:2:"Ê";i:203;s:2:"Ë";s:4:"Euml";s:2:"Ë";i:204;s:2:"ì";s:6:"Igrave";s:2:"Ì";i:205;s:2:"í";s:6:"Iacute";s:2:"Í";i:206;s:2:"î";s:5:"Icirc";s:2:"Î";i:207;s:2:"ï";s:4:"Iuml";s:2:"Ï";i:208;s:2:"ð";s:3:"ETH";s:2:"Ð";i:209;s:2:"ñ";s:6:"Ntilde";s:2:"Ñ";i:210;s:2:"ò";s:6:"Ograve";s:2:"Ò";i:211;s:2:"ó";s:6:"Oacute";s:2:"Ó";i:212;s:2:"ô";s:5:"Ocirc";s:2:"Ô";i:213;s:2:"õ";s:6:"Otilde";s:2:"Õ";i:214;s:2:"Ö";s:4:"Ouml";s:2:"Ö";i:216;s:2:"ø";s:6:"Oslash";s:2:"Ø";i:217;s:2:"ù";s:6:"Ugrave";s:2:"Ù";i:218;s:2:"ú";s:6:"Uacute";s:2:"Ú";i:219;s:2:"û";s:5:"Ucirc";s:2:"Û";i:220;s:2:"Ü";s:4:"Uuml";s:2:"Ü";i:221;s:2:"ý";s:6:"Yacute";s:2:"Ý";i:222;s:2:"þ";s:5:"THORN";s:2:"Þ";i:223;s:2:"ß";s:5:"szlig";s:2:"ß";i:224;s:2:"à";s:6:"agrave";s:2:"à";i:225;s:2:"á";s:6:"aacute";s:2:"á";i:226;s:2:"â";s:5:"acirc";s:2:"â";i:227;s:2:"ã";s:6:"atilde";s:2:"ã";i:228;s:2:"ä";s:4:"auml";s:2:"ä";i:229;s:2:"å";s:5:"aring";s:2:"å";i:230;s:2:"æ";s:5:"aelig";s:2:"æ";i:231;s:2:"ç";s:6:"ccedil";s:2:"ç";i:232;s:2:"è";s:6:"egrave";s:2:"è";i:233;s:2:"é";s:6:"eacute";s:2:"é";i:234;s:2:"ê";s:5:"ecirc";s:2:"ê";i:235;s:2:"ë";s:4:"euml";s:2:"ë";i:236;s:2:"ì";s:6:"igrave";s:2:"ì";i:237;s:2:"í";s:6:"iacute";s:2:"í";i:238;s:2:"î";s:5:"icirc";s:2:"î";i:239;s:2:"ï";s:4:"iuml";s:2:"ï";i:240;s:2:"ð";s:3:"eth";s:2:"ð";i:241;s:2:"ñ";s:6:"ntilde";s:2:"ñ";i:242;s:2:"ò";s:6:"ograve";s:2:"ò";i:243;s:2:"ó";s:6:"oacute";s:2:"ó";i:244;s:2:"ô";s:5:"ocirc";s:2:"ô";i:245;s:2:"õ";s:6:"otilde";s:2:"õ";i:246;s:2:"ö";s:4:"ouml";s:2:"ö";i:248;s:2:"ø";s:6:"oslash";s:2:"ø";i:249;s:2:"ù";s:6:"ugrave";s:2:"ù";i:250;s:2:"ú";s:6:"uacute";s:2:"ú";i:251;s:2:"û";s:5:"ucirc";s:2:"û";i:252;s:2:"ü";s:4:"uuml";s:2:"ü";i:253;s:2:"ý";s:6:"yacute";s:2:"ý";i:254;s:2:"þ";s:5:"thorn";s:2:"þ";i:255;s:2:"ÿ";s:4:"yuml";s:2:"ÿ";s:5:"trade";s:3:"™";i:32;s:1:" ";s:4:"nbsp";s:1:" ";s:4:"quot";s:1:""";i:34;s:1:""";s:3:"amp";s:1:"&";i:38;s:1:"&";s:2:"lt";s:1:"<";i:60;s:1:"<";s:2:"gt";s:1:">";i:62;s:1:">";s:5:"frasl";s:3:"⁄";i:8260;s:3:"⁄";i:8656;s:3:"⇐";i:8657;s:3:"↑";i:8658;s:3:"⇒";i:8659;s:3:"↓";i:8660;s:3:"⇔";s:4:"hArr";s:3:"⇔";s:4:"rArr";s:3:"⇒";s:4:"lArr";s:3:"⇐";} \ No newline at end of file diff --git a/lib/plugins/ckgedit/action/entities/ents.data b/lib/plugins/ckgedit/action/entities/ents.data new file mode 100644 index 0000000..255e497 --- /dev/null +++ b/lib/plugins/ckgedit/action/entities/ents.data @@ -0,0 +1,948 @@ +∀ +∀ +∀ + +∂ +∂ +∂ + +∃ +∃ +∃ + +∅ +∅ +∅ + +∇ +∇ +∇ + +∈ +∈ +∈ + +∉ +∉ +∉ + +∋ +∋ +∋ + +∏ +∏ +∏ + +∑ +∑ +∑ + +− +− +− + +∗ +∗ +∗ + +√ +√ +√ + +∝ +∝ +∝ + +∞ +∞ +∞ + +∠ +∠ +∠ + +∧ +∧ +∧ + +∨ +∨ +∨ + +∩ +∩ +∩ + +∪ +∪ +∪ + +∫ +∫ +∫ + +∴ +∴ +∴ + +∼ +∼ +∼ + +≅ +≅ +≅ + +≈ +≈ +≈ + +≠ +≠ +≠ + +≡ +≡ +≡ + +≤ +≤ +≤ + +≥ +≥ +≥ + +⊂ +⊂ +⊂ + +⊃ +⊃ +⊃ + +⊄ +⊄ +⊄ + +⊆ +⊆ +⊆ + +⊇ +⊇ +⊇ + +⊕ +⊕ +⊕ + +⊗ +⊗ +⊗ + +⊥ +⊥ +⊥ + +⋅ +⋅ +⋅ + +Α +Α +Α + +Β +Β +Β + +Γ +Γ +Γ + +Δ +Δ +Δ + +Ε +Ε +Ε + +Ζ +Ζ +Ζ + +Η +Η +Η + +Θ +Θ +Θ + +Ι +Ι +Ι + +Κ +Κ +Κ + +Λ +Λ +Λ + +Μ +Μ +Μ + +Ν +Ν +Ν + +Ξ +Ξ +Ξ + +Ο +Ο +Ο + +Π +Π +Π + +Ρ +Ρ +Ρ + +Σ +Σ +Σ + +Τ +Τ +Τ + +Υ +Υ +Υ + +Φ +Φ +Φ + +Χ +Χ +Χ + +Ψ +Ψ +Ψ + +Ω +Ω +Ω + +α +α +α + +β +β +β + +γ +γ +γ + +δ +δ +δ + +ε +ε +ε + +ζ +ζ +ζ + +η +η +η + +θ +θ +θ + +ι +ι +ι + +κ +κ +κ + +λ +λ +λ + +μ +μ +μ + +ν +ν +ν + +ξ +ξ +ξ + +ο +ο +ο + +π +π +π + +ρ +ρ +ρ + +ς +ς +ς + +σ +σ +σ + +τ +τ +τ + +υ +υ +υ + +φ +φ +φ + +χ +χ +χ + +ψ +ψ +ψ + +ω +ω +ω + +ϑ +ϑ +ϑ + +ϒ +ϒ +ϒ + +ϖ +ϖ +ϖ + +Œ +Œ +Œ + +œ +œ +œ + +Š +Š +Š + +š +š +š + +Ÿ +Ÿ +Ÿ + +ƒ +ƒ +ƒ + +ˆ +ˆ +ˆ + +˜ +˜ +˜ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +– +– +– + +— +— +— + +‘ +‘ +‘ + +’ +’ +’ + +‚ +‚ +‚ + +“ +“ +“ + +” +” +” + +„ +„ +„ + +† +† +† + +‡ +‡ +‡ + +• +• +• + +… +… +… + +‰ +‰ +‰ + +′ +′ +′ + +″ +″ +″ + +‹ +‹ +‹ + +› +› +› + +‾ +‾ +‾ + +€ +€ +€ + +™ +™ +or + +← +← +← + +↑ +↑ +↑ + +→ +→ +→ + +↓ +↓ +↓ + +↔ +↔ +↔ + +↵ +↵ +↵ + +⌈ +⌈ +⌈ + +⌉ +⌉ +⌉ + +⌊ +⌊ +⌊ + +⌋ +⌋ +⌋ + +◊ +◊ +◊ + +♠ +♠ +♠ + +♣ +♣ +♣ + +♥ +♥ +♥ + +♦ +♦ +♦ + + + + + +¡ +¡ +¡ + +¢ +¢ +¢ + +£ +£ +£ + +¤ +¤ +¤ + +¥ +¥ +¥ + +¦ +¦ +¦ + +§ +§ +§ + +¨ +¨ +¨ + +© +© +© + +ª +ª +ª + +« +« +« + +¬ +¬ +¬ + + + + + +® +® +® + +¯ +¯ +¯ + +° +° +° + +± +± +± + +² +² +² + +³ +³ +³ + +´ +´ +´ + +µ +µ +µ + +¶ +¶ +¶ + +· +· +· + +¸ +¸ +¸ + +¹ +¹ +¹ + +º +º +º + +» +» +» + +¼ +¼ +¼ + +½ +½ +½ + +¾ +¾ +¾ + +¿ +¿ +¿ + +× +× +× + +÷ +÷ +÷ + +À +À +À + +Á +Á +Á + + + + + +à +à +à + +Ä +Ä +Ä + +Å +Å +Å + +Æ +Æ +Æ + +Ç +Ç +Ç + +È +È +È + +É +É +É + +Ê +Ê +Ê + +Ë +Ë +Ë + +Ì +Ì +Ì + +Í +Í +Í + +Î +Î +Î + +Ï +Ï +Ï + +Ð +Ð +Ð + +Ñ +Ñ +Ñ + +Ò +Ò +Ò + +Ó +Ó +Ó + +Ô +Ô +Ô + +Õ +Õ +Õ + +Ö +Ö +Ö + +Ø +Ø +Ø + +Ù +Ù +Ù + +Ú +Ú +Ú + +Û +Û +Û + +Ü +Ü +Ü + +Ý +Ý +Ý + +Þ +Þ +Þ + +ß +ß +ß + +à +à +à + +á +á +á + +â +â +â + +ã +ã +ã + +ä +ä +ä + +å +å +å + +æ +æ +æ + +ç +ç +ç + +è +è +è + +é +é +é + +ê +ê +ê + +ë +ë +ë + +ì +ì +ì + +í +í +í + +î +î +î + +ï +ï +ï + +ð +ð +ð + +ñ +ñ +ñ + +ò +ò +ò + +ó +ó +ó + +ô +ô +ô + +õ +õ +õ + +ö +ö +ö + +ø +ø +ø + +ù +ù +ù + +ú +ú +ú + +û +û +û + +ü +ü +ü + +ý +ý +ý + +þ +þ +þ + +ÿ +ÿ +ÿ + +™ +™ +™ + diff --git a/lib/plugins/ckgedit/action/entities/ents_seri.php b/lib/plugins/ckgedit/action/entities/ents_seri.php new file mode 100644 index 0000000..1a8c80b --- /dev/null +++ b/lib/plugins/ckgedit/action/entities/ents_seri.php @@ -0,0 +1,61 @@ + diff --git a/lib/plugins/ckgedit/action/entities/fcked-ents.data b/lib/plugins/ckgedit/action/entities/fcked-ents.data new file mode 100644 index 0000000..e0fb2c8 --- /dev/null +++ b/lib/plugins/ckgedit/action/entities/fcked-ents.data @@ -0,0 +1,842 @@ +¡ +iexcl +161 + +¢ +cent +162 + +£ +pound +163 + +¤ +curren +164 + +¥ +yen +165 + +¦ +brvbar +166 + +§ +sect +167 + +¨ +uml +168 + +© +copy +169 + +ª +ordf +170 + +« +laquo +171 + +¬ +not +172 + + +shy +173 + +® +reg +174 + +¯ +macr +175 + +° +deg +176 + +± +plusmn +177 + +² +sup2 +178 + +³ +sup3 +179 + +´ +acute +180 + +µ +micro +181 + +¶ +para +182 + +· +middot +183 + +¸ +cedil +184 + +¹ +sup1 +185 + +º +ordm +186 + +» +raquo +187 + +¼ +frac14 +188 + +½ +frac12 +189 + +¾ +frac34 +190 + +¿ +iquest +191 + +à +agrave +192 + +á +aacute +193 + +â +acirc +194 + +ã +atilde +195 + +Ä +Auml +196 + +å +aring +197 + +æ +aelig +198 + +ç +ccedil +199 + +è +egrave +200 + +é +eacute +201 + +ê +ecirc +202 + +Ë +203 +Euml; + +ì +igrave +204 + +í +iacute +205 + +î +icirc +206 + +ï +iuml +207 + +ð +eth +208 + +ñ +ntilde +209 + +ò +ograve +210 + +ó +oacute +211 + +ô +ocirc +212 + +õ +otilde +213 + +Ö +Ouml +214 + +× +times +215 + +ø +oslash +216 + +ù +ugrave +217 + +ú +uacute +218 + +û +ucirc +219 + +Ü +Uuml +220 + +ý +yacute +221 + +þ +thorn +222 + +ß +szlig +223 + +à +agrave +224 + +á +aacute +225 + +â +acirc +226 + +ã +atilde +227 + +ä +auml +228 + +å +aring +229 + +æ +aelig +230 + +ç +ccedil +231 + +è +egrave +232 + +é +eacute +233 + +ê +ecirc +234 + +ë +euml +235 + +ì +igrave +236 + +í +iacute +237 + +î +icirc +238 + +ï +iuml +239 + +ð +eth +240 + +ñ +ntilde +241 + +ò +ograve +242 + +ó +oacute +243 + +ô +ocirc +244 + +õ +otilde +245 + +ö +ouml +246 + +÷ +divide +247 + +ø +oslash +248 + +ù +ugrave +249 + +ú +uacute +250 + +û +ucirc +251 + +ü +uuml +252 + +ý +yacute +253 + +þ +thorn +254 + +ÿ +yuml +255 + +" +quot +34 + +& +amp +38 + +< +lt +60 + +> +gt +62 + +œ +oelig +338 + +œ +oelig +339 + +š +scaron +352 + +š +scaron +353 + +ÿ +yuml +376 + +ˆ +circ +710 + +˜ +tilde +732 + + +ensp +8194 + + +emsp +8195 + + +thinsp +8201 + +– +ndash +8211 + +— +mdash +8212 + +‘ +lsquo +8216 + +’ +rsquo +8217 + +‚ +sbquo +8218 + +“ +ldquo +8220 + +” +rdquo +8221 + +„ +bdquo +8222 + +† +dagger +8224 + +† +dagger +8225 + +‰ +permil +8240 + +‹ +lsaquo +8249 + +› +rsaquo +8250 + +€ +euro +8364 + +ƒ +fnof +402 + +α +alpha +913 + +β +beta +914 + +γ +gamma +915 + +δ +delta +916 + +ε +epsilon +917 + +ζ +zeta +918 + +η +eta +919 + +θ +theta +920 + +ι +iota +921 + +κ +kappa +922 + +λ +lambda +923 + +μ +mu +924 + +ν +nu +925 + +ξ +xi +926 + +ο +omicron +927 + +π +pi +928 + +ρ +rho +929 + +σ +sigma +931 + +τ +tau +932 + +υ +upsilon +933 + +φ +phi +934 + +χ +chi +935 + +ψ +psi +936 + +ω +omega +937 + +α +alpha +945 + +β +beta +946 + +γ +gamma +947 + +δ +delta +948 + +ε +epsilon +949 + +ζ +zeta +950 + +η +eta +951 + +θ +theta +952 + +ι +iota +953 + +κ +kappa +954 + +λ +lambda +955 + +μ +mu +956 + +ν +nu +957 + +ξ +xi +958 + +ο +omicron +959 + +π +pi +960 + +ρ +rho +961 + +ς +sigmaf +962 + +σ +sigma +963 + +τ +tau +964 + +υ +upsilon +965 + +φ +phi +966 + +χ +chi +967 + +ψ +psi +968 + +ω +omega +969 + +• +bull +8226 + +… +hellip +8230 + +′ +prime +8242 + +′ +prime +8243 + +‾ +oline +8254 + +⁄ +frasl +8260 + +← +larr +8592 + +↑ +uarr +8593 + +→ +rarr +8594 + +↓ +darr +8595 + +↔ +harr +8596 + +← +larr +8656 + +↑ +uarr +8657 + +→ +rarr +8658 + +↓ +darr +8659 + +↔ +harr +8660 + +∂ +part +8706 + +∏ +prod +8719 + +∑ +sum +8721 + +− +minus +8722 + +√ +radic +8730 + +∞ +infin +8734 + +∩ +cap +8745 + +∫ +int +8747 + +≈ +asymp +8776 + +≠ +ne +8800 + +≡ +equiv +8801 + +≤ +le +8804 + +≥ +ge +8805 + +◊ +loz +9674 + +♠ +spades +9824 + +♣ +clubs +9827 + +♥ +hearts +9829 + +♦ +diams +9830 + +⇔ +8660 +hArr + +⇒ +8658 +rArr + +⇐ +8656 +lArr + + + diff --git a/lib/plugins/ckgedit/action/entities/utils/entities.conf b/lib/plugins/ckgedit/action/entities/utils/entities.conf new file mode 100644 index 0000000..08a97de --- /dev/null +++ b/lib/plugins/ckgedit/action/entities/utils/entities.conf @@ -0,0 +1,27 @@ +# Typography replacements +# +# Order does matter! +# +# You can use HTML entities here, but it is not recommended because it may break +# non-HTML renderers. Use UTF-8 chars directly instead. +# This adds four entities that are needed by the ckgeditor. Before substituting this file for +# Dokuwiki's make sure all of the entities in Dokuwiki's entities.conf are listed here. +<-> ↔ +<- ← +<=> ⇔ +<= ⇐ +<-> ↔ +-> → +<- ← +<=> ⇔ +=> ⇒ +<= ⇐ +>> » +<< « +--- — +-- – +(c) © +(tm) ™ +(r) ® +... … + diff --git a/lib/plugins/ckgedit/action/entities/utils/entities.html b/lib/plugins/ckgedit/action/entities/utils/entities.html new file mode 100644 index 0000000..8d0d588 --- /dev/null +++ b/lib/plugins/ckgedit/action/entities/utils/entities.html @@ -0,0 +1,52 @@ + + + + + + + ++ +
+ + + + diff --git a/lib/plugins/ckgedit/action/entities/utils/entities.pl b/lib/plugins/ckgedit/action/entities/utils/entities.pl new file mode 100644 index 0000000..c583051 --- /dev/null +++ b/lib/plugins/ckgedit/action/entities/utils/entities.pl @@ -0,0 +1,711 @@ +use strict; + +my $count = 0; +my $skip = 0; + +while() { + next if /^\s+/; + + if ($skip) { + $skip=0; + next; + } + + $count++ if /^/; + $count++ if /^&\w/; + # print "$count: "; + print; + if($count == 2) { + $count = 0; + print "\n"; + $skip = 1; + } + + +} +# print $count, "\n"; + +__DATA__ +" +" +" +quotation mark + +' +' +' +apostrophe + +& +& +& +ampersand + +< +< +< +less-than + +> +> +> +greater-than + +¡ +¡ +¡ +inverted exclamation mark + +¢ +¢ +¢ +cent + +£ +£ +£ +pound + +¤ +¤ +¤ +currency + +¥ +¥ +¥ +yen + +¦ +¦ +¦ +broken vertical bar + +§ +§ +§ +section + +¨ +¨ +¨ +spacing diaeresis + +© +© +© +copyright + +ª +ª +ª +feminine ordinal indicator + +« +« +« +angle quotation mark (left) + +¬ +¬ +¬ +negation + + + +soft hyphen + +® +® +® +registered trademark + +¯ +¯ +¯ +spacing macron + +° +° +° +degree + +± +± +± +plus-or-minus + +² +² +² +superscript 2 + +³ +³ +³ +superscript 3 + +´ +´ +´ +spacing acute + +µ +µ +µ +micro + +¶ +¶ +¶ +paragraph + +· +· +· +middle dot + +¸ +¸ +¸ +spacing cedilla + +¹ +¹ +¹ +superscript 1 + +º +º +º +masculine ordinal indicator + +» +» +» +angle quotation mark (right) + +¼ +¼ +¼ +fraction 1/4 + +½ +½ +½ +fraction 1/2 + +¾ +¾ +¾ +fraction 3/4 + +¿ +¿ +¿ +inverted question mark + +× +× +× +multiplication + +÷ +÷ +÷ +division + +∀ +∀ +for all + +∂ +∂ +∂ +part + +∏ +∏ +∏ +prod + +∑ +∑ +∑ +sum + +− +− +− +minus + +∞ +∞ +∞ +infinity + +∩ +∩ +∩ +cap + +∫ +∫ +∫ +integral + +≈ +≈ +≈ +almost equal + +≠ +≠ +≠ +not equal +≡ +≡ +≡ +equivalent +≤ +≤ +≤ +less or equal +≥ +≥ +≥ +greater or equal + + +Α +Α +Α +Alpha + +Β +Β +Β +Beta + +Γ +Γ +Γ +Gamma + +Δ +Δ +Δ +Delta + +Ε +Ε +Ε +Epsilon + +Ζ +Ζ +Ζ +Zeta + +Η +Η +Η +Eta + +Θ +Θ +Θ +Theta + +Ι +Ι +Ι +Iota + +Κ +Κ +Κ +Kappa + +Λ +Λ +Λ +Lambda + +Μ +Μ +Μ +Mu + +Ν +Ν +Ν +Nu + +Ξ +Ξ +Ξ +Xi + +Ο +Ο +Ο +Omicron + +Π +Π +Π +Pi + +Ρ +Ρ +Ρ +Rho + +Σ +Σ +Σ +Sigma + +Τ +Τ +Τ +Tau + +Υ +Υ +Υ +Upsilon + +Φ +Φ +Φ +Phi + +Χ +Χ +Χ +Chi + +Ψ +Ψ +Ψ +Psi + +Ω +Ω +Ω +Omega + +α +α +α +alpha + +β +β +β +beta + +γ +γ +γ +gamma + +δ +δ +δ +delta + +ε +ε +ε +epsilon + +ζ +ζ +ζ +zeta + +η +η +η +eta + +θ +θ +θ +theta + +ι +ι +ι +iota + +κ +κ +κ +kappa + +λ +λ +λ +lambda + +μ +μ +μ +mu +ν +ν +ν +nu +ξ +ξ +ξ +xi +ο +ο +ο +omicron +π +π +π +pi +ρ +ρ +ρ +rho +ς +ς +ς +sigmaf +σ +σ +σ +sigma +τ +τ +τ +tau +υ +υ +υ +upsilon +φ +φ +φ +phi +χ +χ +χ +chi +ψ +ψ +ψ +psi +ω +ω +ω +omega + +Œ +Œ +Œ +capital ligature OE +œ +œ +œ +small ligature oe +Š +Š +Š +capital S with caron +š +š +š +small S with caron +Ÿ +Ÿ +Ÿ +capital Y with diaeres +ƒ +ƒ +ƒ +f with hook +ˆ +ˆ +ˆ +modifier letter circumflex accent +˜ +˜ +˜ +small tilde + + + +zero width non-joiner + + + +zero width joiner + + + +left-to-right mark + + + +right-to-left mark + +– +– +– +en dash + +— +— +— +em dash + +‘ +‘ +‘ +left single quotation mark + +’ +’ +’ +right single quotation mark + +‚ +‚ +‚ +single low-9 quotation mark + +“ +“ +“ +left double quotation mark + +” +” +” +right double quotation mark + +„ +„ +„ +double low-9 quotation mark + +† +† +† +dagger + +‡ +‡ +‡ +double dagger + +• +• +• +bullet + +… +… +… +horizontal ellipsis + +‰ +‰ +‰ +per mille + +′ +′ +′ +minutes + +″ +″ +″ +seconds + +‹ +‹ +‹ +single left angle quotation + +› +› +› +single right angle quotation + +‾ +‾ +‾ +overline + +€ +€ +€ +euro + +™ +™ +™ +trademark + +← +← +← +left arrow + +↑ +↑ +↑ +up arrow + +→ +→ +→ +right arrow + +↓ +↓ +↓ +down arrow + +↔ +↔ +↔ +left right arrow + +◊ +◊ +◊ +lozenge + +♠ +♠ +♠ +spade + +♣ +♣ +♣ +club + +♥ +♥ +♥ +heart + +♦ +♦ +♦ +diamond + + diff --git a/lib/plugins/ckgedit/action/entities/utils/entities.txt b/lib/plugins/ckgedit/action/entities/utils/entities.txt new file mode 100644 index 0000000..0d5cb67 --- /dev/null +++ b/lib/plugins/ckgedit/action/entities/utils/entities.txt @@ -0,0 +1,718 @@ +" +" +" +quotation mark + +' +' +' (does not work in IE) +apostrophe + +& +& +& +ampersand + +< +< +< +less-than + +> +> +> +greater-than +Note: Entity names are case sensitive! + +¡ +¡ +¡ +inverted exclamation mark + +¢ +¢ +¢ +cent + +£ +£ +£ +pound + +¤ +¤ +¤ +currency + +¥ +¥ +¥ +yen + +¦ +¦ +¦ +broken vertical bar + +§ +§ +§ +section + +¨ +¨ +¨ +spacing diaeresis + +© +© +© +copyright + +ª +ª +ª +feminine ordinal indicator + +« +« +« +angle quotation mark (left) + +¬ +¬ +¬ +negation + + + +soft hyphen + +® +® +® +registered trademark + +¯ +¯ +¯ +spacing macron + +° +° +° +degree + +± +± +± +plus-or-minus + +² +² +² +superscript 2 + +³ +³ +³ +superscript 3 + +´ +´ +´ +spacing acute + +µ +µ +µ +micro + +¶ +¶ +¶ +paragraph + +· +· +· +middle dot + +¸ +¸ +¸ +spacing cedilla + +¹ +¹ +¹ +superscript 1 + +º +º +º +masculine ordinal indicator + +» +» +» +angle quotation mark (right) + +¼ +¼ +¼ +fraction 1/4 + +½ +½ +½ +fraction 1/2 + +¾ +¾ +¾ +fraction 3/4 + +¿ +¿ +¿ +inverted question mark + +× +× +× +multiplication + +÷ +÷ +÷ +division + +∀ +∀ +for all + +∂ +∂ +∂ +part + +∏ +∏ +∏ +prod + +∑ +∑ +∑ +sum + +− +− +− +minus + +∞ +∞ +∞ +infinity + +∩ +∩ +∩ +cap + +∫ +∫ +∫ +integral + +≈ +≈ +≈ +almost equal +≠ +≠ +≠ +not equal +≡ +≡ +≡ +equivalent +≤ +≤ +≤ +less or equal +≥ +≥ +≥ +greater or equal + + +Α +Α +Α +Alpha + +Β +Β +Β +Beta + +Γ +Γ +Γ +Gamma + +Δ +Δ +Δ +Delta + +Ε +Ε +Ε +Epsilon + +Ζ +Ζ +Ζ +Zeta + +Η +Η +Η +Eta + +Θ +Θ +Θ +Theta + +Ι +Ι +Ι +Iota + +Κ +Κ +Κ +Kappa + +Λ +Λ +Λ +Lambda + +Μ +Μ +Μ +Mu + +Ν +Ν +Ν +Nu + +Ξ +Ξ +Ξ +Xi + +Ο +Ο +Ο +Omicron + +Π +Π +Π +Pi + +Ρ +Ρ +Ρ +Rho + +Σ +Σ +Σ +Sigma + +Τ +Τ +Τ +Tau + +Υ +Υ +Υ +Upsilon + +Φ +Φ +Φ +Phi + +Χ +Χ +Χ +Chi + +Ψ +Ψ +Ψ +Psi + +Ω +Ω +Ω +Omega + +α +α +α +alpha + +β +β +β +beta + +γ +γ +γ +gamma + +δ +δ +δ +delta + +ε +ε +ε +epsilon + +ζ +ζ +ζ +zeta + +η +η +η +eta + +θ +θ +θ +theta + +ι +ι +ι +iota + +κ +κ +κ +kappa + +λ +λ +λ +lambda + +μ +μ +μ +mu +ν +ν +ν +nu +ξ +ξ +ξ +xi +ο +ο +ο +omicron +π +π +π +pi +ρ +ρ +ρ +rho +ς +ς +ς +sigmaf +σ +σ +σ +sigma +τ +τ +τ +tau +υ +υ +υ +upsilon +φ +φ +φ +phi +χ +χ +χ +chi +ψ +ψ +ψ +psi +ω +ω +ω +omega + + + + +ϑ +ϑ +ϑ +theta symbol +ϒ +ϒ +ϒ +upsilon symbol +ϖ +ϖ +ϖ +pi symbol +Other Entities Supported by HTML +Character +Entity Number +Entity Name +Description +Œ +Œ +Œ +capital ligature OE +œ +œ +œ +small ligature oe +Š +Š +Š +capital S with caron +š +š +š +small S with caron +Ÿ +Ÿ +Ÿ +capital Y with diaeres +ƒ +ƒ +ƒ +f with hook +ˆ +ˆ +ˆ +modifier letter circumflex accent +˜ +˜ +˜ +small tilde + + + +zero width non-joiner + + + +zero width joiner + + + +left-to-right mark + + + +right-to-left mark + +– +– +– +en dash + +— +— +— +em dash + +‘ +‘ +‘ +left single quotation mark + +’ +’ +’ +right single quotation mark + +‚ +‚ +‚ +single low-9 quotation mark + +“ +“ +“ +left double quotation mark + +” +” +” +right double quotation mark + +„ +„ +„ +double low-9 quotation mark + +† +† +† +dagger + +‡ +‡ +‡ +double dagger + +• +• +• +bullet + +… +… +… +horizontal ellipsis + +‰ +‰ +‰ +per mille + +′ +′ +′ +minutes + +″ +″ +″ +seconds + +‹ +‹ +‹ +single left angle quotation + +› +› +› +single right angle quotation + +‾ +‾ +‾ +overline + +€ +€ +€ +euro + +™ +™ +™ +trademark + +← +← +← +left arrow + +↑ +↑ +↑ +up arrow + +→ +→ +→ +right arrow + +↓ +↓ +↓ +down arrow + +↔ +↔ +↔ +left right arrow + +◊ +◊ +◊ +lozenge + +♠ +♠ +♠ +spade + +♣ +♣ +♣ +club + +♥ +♥ +♥ +heart + +♦ +♦ +♦ +diamond + +⇔ +⇔ +⇔ + +⇒ +⇒ +⇒ + +⇐ +⇐ +⇐ + +← +&8592; +← + diff --git a/lib/plugins/ckgedit/action/entities/utils/fcked-ents.pl b/lib/plugins/ckgedit/action/entities/utils/fcked-ents.pl new file mode 100644 index 0000000..df297bc --- /dev/null +++ b/lib/plugins/ckgedit/action/entities/utils/fcked-ents.pl @@ -0,0 +1,231 @@ +use strict; + + + +while() { + chomp; + my($icon, $num, $character) = split; + next if !$icon || !$num || ! $character; +# $icon = trim($icon); +# $num = trim($num); +# $character=trim($character); + print "$icon\n$num\n$character\n\n"; +} + +sub trim { + my $str = shift; + $str =~ s/^\s+//; + $str =~ s/\s+$//; + return $str; +} + +__DATA__ + nbsp 160 +¡ iexcl 161 +¢ cent 162 +£ pound 163 +¤ curren 164 +¥ yen 165 +¦ brvbar 166 +§ sect 167 +¨ uml 168 +© copy 169 +ª ordf 170 +« laquo 171 +¬ not 172 + shy 173 +® reg 174 +¯ macr 175 +° deg 176 +± plusmn 177 +² sup2 178 +³ sup3 179 +´ acute 180 +µ micro 181 +¶ para 182 +· middot 183 +¸ cedil 184 +¹ sup1 185 +º ordm 186 +» raquo 187 +¼ frac14 188 +½ frac12 189 +¾ frac34 190 +¿ iquest 191 +à agrave 192 +á aacute 193 +â acirc 194 +ã atilde 195 +Ä Auml 196 +å aring 197 +æ aelig 198 +ç ccedil 199 +è egrave 200 +é eacute 201 +ê ecirc 202 +ë euml 203 +ì igrave 204 +í iacute 205 +î icirc 206 +ï iuml 207 +ð eth 208 +ñ ntilde 209 +ò ograve 210 +ó oacute 211 +ô ocirc 212 +õ otilde 213 +Ö Ouml 214 +× times 215 +ø oslash 216 +ù ugrave 217 +ú uacute 218 +û ucirc 219 +Ü Uuml 220 +ý yacute 221 +þ thorn 222 +ß szlig 223 +à agrave 224 +á aacute 225 +â acirc 226 +ã atilde 227 +ä auml 228 +å aring 229 +æ aelig 230 +ç ccedil 231 +è egrave 232 +é eacute 233 +ê ecirc 234 +ë euml 235 +ì igrave 236 +í iacute 237 +î icirc 238 +ï iuml 239 +ð eth 240 +ñ ntilde 241 +ò ograve 242 +ó oacute 243 +ô ocirc 244 +õ otilde 245 +ö ouml 246 +÷ divide 247 +ø oslash 248 +ù ugrave 249 +ú uacute 250 +û ucirc 251 +ü uuml 252 +ý yacute 253 +þ thorn 254 +ÿ yuml 255 +" quot 34 +& amp 38 +< lt 60 +> gt 62 +œ oelig 338 +œ oelig 339 +š scaron 352 +š scaron 353 +ÿ yuml 376 +ˆ circ 710 +˜ tilde 732 + ensp 8194 + emsp 8195 + thinsp 8201 +– ndash 8211 +— mdash 8212 +‘ lsquo 8216 +’ rsquo 8217 +‚ sbquo 8218 +“ ldquo 8220 +” rdquo 8221 +„ bdquo 8222 +† dagger 8224 +† dagger 8225 +‰ permil 8240 +‹ lsaquo 8249 +› rsaquo 8250 +€ euro 8364 +ƒ fnof 402 +α alpha 913 +β beta 914 +γ gamma 915 +δ delta 916 +ε epsilon 917 +ζ zeta 918 +η eta 919 +θ theta 920 +ι iota 921 +κ kappa 922 +λ lambda 923 +μ mu 924 +ν nu 925 +ξ xi 926 +ο omicron 927 +π pi 928 +ρ rho 929 +σ sigma 931 +τ tau 932 +υ upsilon 933 +φ phi 934 +χ chi 935 +ψ psi 936 +ω omega 937 +α alpha 945 +β beta 946 +γ gamma 947 +δ delta 948 +ε epsilon 949 +ζ zeta 950 +η eta 951 +θ theta 952 +ι iota 953 +κ kappa 954 +λ lambda 955 +μ mu 956 +ν nu 957 +ξ xi 958 +ο omicron 959 +π pi 960 +ρ rho 961 +ς sigmaf 962 +σ sigma 963 +τ tau 964 +υ upsilon 965 +φ phi 966 +χ chi 967 +ψ psi 968 +ω omega 969 +• bull 8226 +… hellip 8230 +′ prime 8242 +′ prime 8243 +‾ oline 8254 +⁄ frasl 8260 +← larr 8592 +↑ uarr 8593 +→ rarr 8594 +↓ darr 8595 +↔ harr 8596 +← larr 8656 +↑ uarr 8657 +→ rarr 8658 +↓ darr 8659 +↔ harr 8660 +∂ part 8706 +∏ prod 8719 +∑ sum 8721 +− minus 8722 +√ radic 8730 +∞ infin 8734 +∩ cap 8745 +∫ int 8747 +≈ asymp 8776 +≠ ne 8800 +≡ equiv 8801 +≤ le 8804 +≥ ge 8805 +◊ loz 9674 +♠ spades 9824 +♣ clubs 9827 +♥ hearts 9829 +♦ diams 9830 + diff --git a/lib/plugins/ckgedit/action/entities/utils/fcked-ents.txt b/lib/plugins/ckgedit/action/entities/utils/fcked-ents.txt new file mode 100644 index 0000000..61c1c69 --- /dev/null +++ b/lib/plugins/ckgedit/action/entities/utils/fcked-ents.txt @@ -0,0 +1,209 @@ + nbsp 160 +¡ iexcl 161 +¢ cent 162 +£ pound 163 +¤ curren 164 +¥ yen 165 +¦ brvbar 166 +§ sect 167 +¨ uml 168 +© copy 169 +ª ordf 170 +« laquo 171 +¬ not 172 + shy 173 +® reg 174 +¯ macr 175 +° deg 176 +± plusmn 177 +² sup2 178 +³ sup3 179 +´ acute 180 +µ micro 181 +¶ para 182 +· middot 183 +¸ cedil 184 +¹ sup1 185 +º ordm 186 +» raquo 187 +¼ frac14 188 +½ frac12 189 +¾ frac34 190 +¿ iquest 191 +à agrave 192 +á aacute 193 +â acirc 194 +ã atilde 195 +Ä Auml 196 +å aring 197 +æ aelig 198 +ç ccedil 199 +è egrave 200 +é eacute 201 +ê ecirc 202 +ë euml 203 +ì igrave 204 +í iacute 205 +î icirc 206 +ï iuml 207 +ð eth 208 +ñ ntilde 209 +ò ograve 210 +ó oacute 211 +ô ocirc 212 +õ otilde 213 +Ö Ouml 214 +× times 215 +ø oslash 216 +ù ugrave 217 +ú uacute 218 +û ucirc 219 +Ü Uuml 220 +ý yacute 221 +þ thorn 222 +ß szlig 223 +à agrave 224 +á aacute 225 +â acirc 226 +ã atilde 227 +ä auml 228 +å aring 229 +æ aelig 230 +ç ccedil 231 +è egrave 232 +é eacute 233 +ê ecirc 234 +ë euml 235 +ì igrave 236 +í iacute 237 +î icirc 238 +ï iuml 239 +ð eth 240 +ñ ntilde 241 +ò ograve 242 +ó oacute 243 +ô ocirc 244 +õ otilde 245 +ö ouml 246 +÷ divide 247 +ø oslash 248 +ù ugrave 249 +ú uacute 250 +û ucirc 251 +ü uuml 252 +ý yacute 253 +þ thorn 254 +ÿ yuml 255 +" quot 34 +& amp 38 +< lt 60 +> gt 62 +œ oelig 338 +œ oelig 339 +š scaron 352 +š scaron 353 +ÿ yuml 376 +ˆ circ 710 +˜ tilde 732 + ensp 8194 + emsp 8195 + thinsp 8201 +– ndash 8211 +— mdash 8212 +‘ lsquo 8216 +’ rsquo 8217 +‚ sbquo 8218 +“ ldquo 8220 +” rdquo 8221 +„ bdquo 8222 +† dagger 8224 +† dagger 8225 +‰ permil 8240 +‹ lsaquo 8249 +› rsaquo 8250 +€ euro 8364 +ƒ fnof 402 +α alpha 913 +β beta 914 +γ gamma 915 +δ delta 916 +ε epsilon 917 +ζ zeta 918 +η eta 919 +θ theta 920 +ι iota 921 +κ kappa 922 +λ lambda 923 +μ mu 924 +ν nu 925 +ξ xi 926 +ο omicron 927 +π pi 928 +ρ rho 929 +σ sigma 931 +τ tau 932 +υ upsilon 933 +φ phi 934 +χ chi 935 +ψ psi 936 +ω omega 937 +α alpha 945 +β beta 946 +γ gamma 947 +δ delta 948 +ε epsilon 949 +ζ zeta 950 +η eta 951 +θ theta 952 +ι iota 953 +κ kappa 954 +λ lambda 955 +μ mu 956 +ν nu 957 +ξ xi 958 +ο omicron 959 +π pi 960 +ρ rho 961 +ς sigmaf 962 +σ sigma 963 +τ tau 964 +υ upsilon 965 +φ phi 966 +χ chi 967 +ψ psi 968 +ω omega 969 +• bull 8226 +… hellip 8230 +′ prime 8242 +′ prime 8243 +‾ oline 8254 +⁄ frasl 8260 +← larr 8592 +↑ uarr 8593 +→ rarr 8594 +↓ darr 8595 +↔ harr 8596 +← larr 8656 +↑ uarr 8657 +→ rarr 8658 +↓ darr 8659 +↔ harr 8660 +∂ part 8706 +∏ prod 8719 +∑ sum 8721 +− minus 8722 +√ radic 8730 +∞ infin 8734 +∩ cap 8745 +∫ int 8747 +≈ asymp 8776 +≠ ne 8800 +≡ equiv 8801 +≤ le 8804 +≥ ge 8805 +◊ loz 9674 +♠ spades 9824 +♣ clubs 9827 +♥ hearts 9829 +♦ diams 9830 + diff --git a/lib/plugins/ckgedit/action/entities/utils/fckeditor_ents.doc b/lib/plugins/ckgedit/action/entities/utils/fckeditor_ents.doc new file mode 100644 index 0000000..1fcc34b Binary files /dev/null and b/lib/plugins/ckgedit/action/entities/utils/fckeditor_ents.doc differ diff --git a/lib/plugins/ckgedit/action/iwiki.php b/lib/plugins/ckgedit/action/iwiki.php new file mode 100644 index 0000000..dc430fe --- /dev/null +++ b/lib/plugins/ckgedit/action/iwiki.php @@ -0,0 +1,45 @@ +register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this, 'handle_ajax_call_unknown'); + + } + + /** + * @param Doku_Event $event event object by reference + * @param mixed $param [the parameters passed as fifth argument to register_hook() when this + * handler was registered] + * @return void + */ + + public function handle_ajax_call_unknown(Doku_Event &$event, $param) { + + if ($event->data !== 'iwiki_list') { + return; + } + + $event->stopPropagation(); + $event->preventDefault(); + $a = getInterwiki(); + ksort($a); + echo json_encode($a); + } + +} diff --git a/lib/plugins/ckgedit/action/mediamanager.php b/lib/plugins/ckgedit/action/mediamanager.php new file mode 100644 index 0000000..2e3c3ce --- /dev/null +++ b/lib/plugins/ckgedit/action/mediamanager.php @@ -0,0 +1,50 @@ +setupLocale(); + } + + + function register(Doku_Event_Handler $controller) + { + $controller->register_hook('MEDIAMANAGER_STARTED', 'AFTER', $this, 'mediaman_started'); + $controller->register_hook('MEDIA_UPLOAD_FINISH', 'BEFORE', $this, 'upload_finish'); + $controller->register_hook('TPL_METAHEADER_OUTPUT', 'BEFORE', $this, 'handle_metafile'); + } + + function handle_metafile(Doku_Event $event) { + $event->data['script'][] = + array( + 'type'=>'text/javascript', + 'charset'=>'utf-8', + '_data'=>'', + 'src'=>DOKU_BASE.'lib/plugins/ckgedit/scripts/mediamgr.js' + ) + ([ 'defer' => 'defer']); + } + + function upload_finish(Doku_Event $event) { + if(!preg_match("#^image/#",$event->data[3]) && $_COOKIE['ckgFbType'] == 'image') { + if(!empty($event->data[3]) && strlen($event->data[3]) >30) { + $fname = substr($event->data[3],0,29) . '. . .'; + } + else $fname = $event->data[3]; + msg($this->getLang('mediamgr_imgonly') . $fname); + setcookieSameSite('ckgFbType', 'image',time()-10); + $event->preventDefault(); + } + } + + function mediaman_started(Doku_Event $event) { + if ($_GET["onselect"] == "ckg_edit_mediaman_insert") { + setcookieSameSite('ckgFbType', 'image'); + } else if ($_GET["onselect"] == "ckg_edit_mediaman_insertlink") { + setcookieSameSite('ckgFbType', 'link'); + } + } +} diff --git a/lib/plugins/ckgedit/action/meta.php b/lib/plugins/ckgedit/action/meta.php new file mode 100644 index 0000000..83b76a6 --- /dev/null +++ b/lib/plugins/ckgedit/action/meta.php @@ -0,0 +1,1023 @@ +helper = plugin_load('helper', 'ckgedit'); + $this->dokuwiki_priority = false; + $this->dw_priority_group = "NOT_SET"; + $this->dw_priority_metafn=metaFN(':ckgedit:dw_priority', '.ser'); + if(!file_exists($this->dw_priority_metafn)) { + io_saveFile($this->dw_priority_metafn, serialize(array())); + } + + } + /* + * Register its handlers with the dokuwiki's event controller + */ + function register(Doku_Event_Handler $controller) { + + if($this->helper->is_outOfScope()) return; + $controller->register_hook( 'TPL_METAHEADER_OUTPUT', 'AFTER', $this, 'loadScript'); + $controller->register_hook( 'HTML_EDITFORM_INJECTION', 'AFTER', $this, 'preprocess'); + $controller->register_hook( 'HTML_EDITFORM_OUTPUT', 'BEFORE', $this, 'insertFormElement'); + $controller->register_hook('DOKUWIKI_STARTED', 'BEFORE', $this, 'file_type'); + $controller->register_hook('TPL_CONTENT_DISPLAY', 'AFTER', $this, 'setupDWEdit'); + $controller->register_hook('DOKUWIKI_STARTED', 'AFTER', $this, 'reset_user_rewrite_check'); + $controller->register_hook('DOKUWIKI_DONE', 'BEFORE', $this, 'restore_conf'); + $controller->register_hook('AJAX_CALL_UNKNOWN', 'BEFORE', $this,'_ajax_call'); + //$controller->register_hook('HTML_UPDATEPROFILEFORM_OUTPUT', 'BEFORE', $this, 'handle_profile_form'); + $controller->register_hook('ACTION_SHOW_REDIRECT', 'BEFORE', $this, 'handle_redirect'); + } + + function handle_redirect(Doku_Event $event, $param) { + global $INPUT; + $ckg_redirect = $INPUT->str('ckgedit_redirect',""); + if($ckg_redirect) $event->data['id'] = $ckg_redirect; + //msg($ckg_redirect); + } + + function handle_profile_form(Doku_Event $event, $param) { + if(!$this->getConf('dw_priority')) { return; } + global $INFO; + $client = $_SERVER['REMOTE_USER']; //$INFO['client']; + $ar = unserialize(file_get_contents($this->dw_priority_metafn)); + $which = $ar[$client]; + $dwed = ""; $cked = ""; + if($which == 'N') { + $cked = "checked"; + } + else if($which == 'Y') { + $dwed = "checked"; + } + + $pos = $event->data->findElementByAttribute('type', 'reset'); + $_form = '