diff --git a/3.0/modules/content_warning/controllers/admin_content_warning.php b/3.0/modules/content_warning/controllers/admin_content_warning.php
new file mode 100644
index 00000000..18f4bebc
--- /dev/null
+++ b/3.0/modules/content_warning/controllers/admin_content_warning.php
@@ -0,0 +1,62 @@
+_get_view();
+ }
+
+ public function handler() {
+ access::verify_csrf();
+
+ $form = $this->_get_form();
+
+ if ($form->validate()) {
+ module::set_var("content_warning", "title", $form->content_warning->inputs["title"]->value);
+ module::set_var("content_warning", "message", $form->content_warning->inputs["message"]->value);
+ module::set_var("content_warning", "enter_link_text", $form->content_warning->inputs["enter_link_text"]->value);
+ //module::set_var("content_warning", "enter_link_url", $form->content_warning->inputs["enter_link_url"]->value);
+ module::set_var("content_warning", "exit_link_text", $form->content_warning->inputs["exit_link_text"]->value);
+ module::set_var("content_warning", "exit_link_url", $form->content_warning->inputs["exit_link_url"]->value);
+ url::redirect("admin/content_warning");
+ }
+ print $this->_get_view($form);
+ }
+
+ private function _get_view($form=null) {
+ $v = new Admin_View("admin.html");
+ $v->content = new View("admin_content_warning.html");
+ $v->content->form = empty($form) ? $this->_get_form() : $form;
+ return $v;
+ }
+
+ private function _get_form() {
+ $form = new Forge("admin/content_warning/handler", "", "post",
+ array("id" => "gAdminContentWerning"));
+ $group = $form->group("content_warning");
+ $group->input("title")->label(t('Title (Will be displayed within H3)'))->rules("required")->value(module::get_var("content_warning", "title"));
+ $group->textarea("message")->label(t('Message (you can use HTML tags)'))->rules("required")->value(module::get_var("content_warning", "message"));
+ $group->input("enter_link_text")->label(t('Enter Label'))->rules("required")->value(module::get_var("content_warning", "enter_link_text"));
+ //$group->input("enter_link_url")->label(t('Enter Url (Leave empty to redirect to the previous page)'))->value(module::get_var("content_warning", "enter_link_url"));
+ $group->input("exit_link_text")->label(t('Exit Label'))->rules("required")->value(module::get_var("content_warning", "exit_link_text"));
+ $group->input("exit_link_url")->label(t('Exit Url'))->rules("required")->value(module::get_var("content_warning", "exit_link_url"));
+
+ $group->submit("submit")->value(t("Save"));
+ return $form;
+ }
+}
\ No newline at end of file
diff --git a/3.0/modules/content_warning/controllers/content_warning.php b/3.0/modules/content_warning/controllers/content_warning.php
new file mode 100644
index 00000000..4d4be6af
--- /dev/null
+++ b/3.0/modules/content_warning/controllers/content_warning.php
@@ -0,0 +1,27 @@
+get("settings_menu")
+ ->append(Menu::factory("link")
+ ->id("content_warning_menu")
+ ->label(t("Content Warning"))
+ ->url(url::site("admin/content_warning")));
+ }
+}
diff --git a/3.0/modules/content_warning/helpers/content_warning_installer.php b/3.0/modules/content_warning/helpers/content_warning_installer.php
new file mode 100644
index 00000000..6c0df195
--- /dev/null
+++ b/3.0/modules/content_warning/helpers/content_warning_installer.php
@@ -0,0 +1,41 @@
+
+
+
+
+ ';
+ return $h;
+ }
+
+ static function page_top($theme) {
+ $cw = '
+
+
+
'.module::get_var("content_warning", "title").'
+
+
'.nl2br(module::get_var("content_warning", "message")).'
+
+
+
+ ';
+ if(!isset($_COOKIE['cw_agree'])) {
+ return $cw;
+ }
+ }
+}
\ No newline at end of file
diff --git a/3.0/modules/content_warning/jqModal.css b/3.0/modules/content_warning/jqModal.css
new file mode 100644
index 00000000..02698748
--- /dev/null
+++ b/3.0/modules/content_warning/jqModal.css
@@ -0,0 +1,65 @@
+/* jqModal base Styling courtesy of;
+ Brice Burgess */
+
+/* The Window's CSS z-index value is respected (takes priority). If none is supplied,
+ the Window's z-index value will be set to 3000 by default (via jqModal.js). */
+
+.jqmWindow {
+ display: none;
+ position: fixed;
+ top: 5%;
+ left: 5%;
+ /*margin-left: -500px;*/
+ width: 90%;
+ height: 90%;
+ background-color: #EEE;
+ color: #333;
+ border: 1px solid black;
+ padding: 12px;
+}
+
+.jqmOverlay {
+ background-color: #000;
+}
+
+/* Background iframe styling for IE6. Prevents ActiveX bleed-through (