Blame view

vendor/ezyang/htmlpurifier/plugins/modx.txt 3.3 KB
abf1649b   andryeyev   Чистая установка ...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
  
  MODx Plugin
  
  MODx <http://www.modxcms.com/> is an open source PHP application framework.
  I first came across them in my referrer logs when tillda asked if anyone
  could implement an HTML Purifier plugin.  This forum thread
  <http://modxcms.com/forums/index.php/topic,6604.0.html> eventually resulted
  in the fruition of this plugin that davidm says, "is on top of my favorite
  list."  HTML Purifier goes great with WYSIWYG editors!
  
  
  
  1. Credits
  
  PaulGregory wrote the overall structure of the code.  I added the
  slashes hack.
  
  
  
  2. Install
  
  First, you need to place HTML Purifier library somewhere.  The code here
  assumes that you've placed in MODx's assets/plugins/htmlpurifier (no version
  number).
  
  Log into the manager, and navigate:
  
  Resources > Manage Resources > Plugins tab > New Plugin
  
  Type in a name (probably HTML Purifier), and copy paste this code into the
  textarea:
  
  --------------------------------------------------------------------------------
  $e = &$modx->Event;
  if ($e->name == 'OnBeforeDocFormSave') {
      global $content;
  
      include_once '../assets/plugins/htmlpurifier/library/HTMLPurifier.auto.php';
      $purifier = new HTMLPurifier();
  
      static $magic_quotes = null;
      if ($magic_quotes === null) {
          // this is an ugly hack because this hook hasn't
          // had the backslashes removed yet when magic_quotes_gpc is on,
          // but HTMLPurifier must not have the quotes slashed.
          $magic_quotes = get_magic_quotes_gpc();
      }
  
      if ($magic_quotes) $content = stripslashes($content);
      $content = $purifier->purify($content);
      if ($magic_quotes) $content = addslashes($content);
  }
  --------------------------------------------------------------------------------
  
  Then navigate to the System Events tab and check "OnBeforeDocFormSave".
  Save the plugin.  HTML Purifier now is integrated!
  
  
  
  3. Making sure it works
  
  You can test HTML Purifier by deliberately putting in crappy HTML and seeing
  whether or not it gets fixed.  A better way is to put in something like this:
  
  <p lang="fr">Il est bon</p>
  
  ...and seeing whether or not the content comes out as:
  
  <p lang="fr" xml:lang="fr">Il est bon</p>
  
  (lang to xml:lang synchronization is one of the many features HTML Purifier
  has).
  
  
  
  4. Caveat Emptor
  
  This code does not intercept save requests from the QuickEdit plugin, this may
  be added in a later version.  It also modifies things on save, so there's a
  slight chance that HTML Purifier may make a boo-boo and accidently mess things
  up (the original version is not saved).
  
  Finally, make sure that MODx is using UTF-8.  If you are using, say, a French
  localisation, you may be using Latin-1, if that's the case, configure
  HTML Purifier properly like this:
  
  $config = HTMLPurifier_Config::createDefault();
  $config->set('Core', 'Encoding', 'ISO-8859-1'); // or whatever encoding
  $purifier = new HTMLPurifier($config);
  
  
  
  5. Known Bugs
  
  'rn' characters sometimes mysteriously appear after purification. We are
  currently investigating this issue. See: <http://htmlpurifier.org/phorum/read.php?3,1866>
  
  
  
  6. See Also
  
  A modified version of Jot 1.1.3 is available, which integrates with HTML
  Purifier. You can check it out here: <http://modxcms.com/forums/index.php/topic,25621.msg161970.html>
  
  
  X. Changelog
  
  2008-06-16
  - Updated code to work with 3.1.0 and later
  - Add Known Bugs and See Also section
  
      vim: et sw=4 sts=4