summaryrefslogtreecommitdiff
path: root/rt/docs/design_docs/local_hacking
diff options
context:
space:
mode:
authorivan <ivan>2002-08-12 06:17:09 +0000
committerivan <ivan>2002-08-12 06:17:09 +0000
commit3ef62a0570055da710328937e7f65dbb2c027c62 (patch)
treed549158b172fd499b4f81a2981b62aabbde4f99b /rt/docs/design_docs/local_hacking
parent030438c9cb1c12ccb79130979ef0922097b4311a (diff)
import rt 2.0.14
Diffstat (limited to 'rt/docs/design_docs/local_hacking')
-rw-r--r--rt/docs/design_docs/local_hacking32
1 files changed, 32 insertions, 0 deletions
diff --git a/rt/docs/design_docs/local_hacking b/rt/docs/design_docs/local_hacking
new file mode 100644
index 000000000..c06d1126d
--- /dev/null
+++ b/rt/docs/design_docs/local_hacking
@@ -0,0 +1,32 @@
+To facilitate local hacking, RT needs a mechanism to allow site administrators
+to easily add HTML templates for the web ui and to replace sections
+of code in RT's core modules _without_ having to modify those modules
+
+We'll use several methods to achieve this goal.
+
+ Webui
+ HTML::Mason allows users to create multiple
+component hierarchies. RT should ship with a local component root
+defined and available. This root should be configured as the "primary"
+component root.
+
+
+ Core modules
+
+ This gets a bit trickier. we want to allow people to trivially
+subclass core modules and to use those subclasses throughout the code.
+
+The way we're going to handle this is by setting up a number of subroutines
+in config.pm that look something like this:
+
+sub NewTicketObj {
+ eval "require $TicketClass";
+ my $object = new $TicketClass;
+ return ($object);
+}
+
+# This variable is used for ref type checking
+$TicketClass = "RT::Ticket";
+
+we could use an eval around the require and thus completely avoid specifying
+the object in two places. which feels like a win. but i'm worried about perf.