Improve context processors customization. And docs.
Improve context processors customization. And docs.
diff --git a/Blog/Context.hs b/Blog/Context.hs
new file mode 100644
index 0000000..439cd06
--- /dev/null
+++ b/Blog/Context.hs
@@ -0,0 +1,7 @@
+module Context where
+
+import Framework.Controller
+
+-- | Application set of context processors
+contextProcessors :: [ContextProcessor]
+contextProcessors = []
diff --git a/Framework/ContextProcessors.hs b/Framework/ContextProcessors.hs
index e5cdcff..b6bfc69 100644
--- a/Framework/ContextProcessors.hs
+++ b/Framework/ContextProcessors.hs
@@ -1,15 +1,20 @@
module Framework.ContextProcessors
- (defaultProcessors)
+ (contextProcessors)
where
import Framework.Types(TContainer(C))
import Framework.Controller
import Framework.API.Sessions
+import qualified Context (contextProcessors)
+
-- | Default set of context processors
defaultProcessors :: [ContextProcessor]
defaultProcessors = [addMessage]
+contextProcessors :: [ContextProcessor]
+contextProcessors = defaultProcessors ++ Context.contextProcessors
+
-- | Add `message` variable from session to context
addMessage :: ContextProcessor
addMessage = do
diff --git a/Framework/TEngine/TemplateUtil.hs b/Framework/TEngine/TemplateUtil.hs
index c90cb64..6dbf29d 100644
--- a/Framework/TEngine/TemplateUtil.hs
+++ b/Framework/TEngine/TemplateUtil.hs
@@ -16,7 +16,7 @@ import Framework.Controller
import Framework.API.Sessions
import Framework.API.Cache
import Framework.Cache
-import Framework.ContextProcessors (defaultProcessors)
+import Framework.ContextProcessors (contextProcessors)
instance (Ord k, Show k,Show v, Read k, Read v) => Serializable (M.Map k v) where
toString = show
@@ -27,7 +27,7 @@ renderToResponse name pairs = ok $! render name (M.fromList pairs)
processContext :: Context -> Controller ActionConfig HttpResponse Context
processContext ctx = do
- res <- concatC defaultProcessors
+ res <- concatC contextProcessors
return $ ctx++res
renderToResponseM :: String -> Context -> HttpController
diff --git a/README.ru b/README.ru
index 37c0044..bf2823a 100644
--- a/README.ru
+++ b/README.ru
@@ -152,12 +152,16 @@ controller = do
* Response Middlewares: это функции StaticConfig -> HttpResponse -> IO
HttpResponse, через которые проходит ответ прежде чем он будет отдан
веб-сервером.
+ * Context Processors: эти функции могут добавлять переменные в контекст (набор
+ переменных), который передаётся из контроллеров в шаблоны.
* Обработчики исключений: приложение может определить свои обработчики для
request exceptions и controller exceptions.
-Все эти функции должны быть определены в приложении в модуле Settings.hs,
-оттуда их импортируют разные части фреймворка. В нём же определяется
-соответствие возможных сигналов и их обработчиков.
+Все эти функции (кроме context processors) должны быть определены в приложении
+в модуле Settings.hs, оттуда их импортируют разные части фреймворка. В нём же
+определяется соответствие возможных сигналов и их обработчиков.
+
+Context processors должны быть определены в приложении в файле Context.hs.
## Интернационализация