Second pass at wiki enhancement, a=chris

Chris Pollett [2014-05-16 22:May:th]
Second pass at wiki enhancement, a=chris
Filename
configs/config.php
configs/createdb.php
controllers/group_controller.php
controllers/static_controller.php
css/search.css
lib/utility.php
locale/ar/configure.ini
locale/bn/configure.ini
locale/de/configure.ini
locale/en-US/configure.ini
locale/es/configure.ini
locale/fa/configure.ini
locale/fr-FR/configure.ini
locale/he/configure.ini
locale/hi/configure.ini
locale/in-ID/configure.ini
locale/it/configure.ini
locale/ja/configure.ini
locale/kn/configure.ini
locale/ko/configure.ini
locale/pl/configure.ini
locale/pt/configure.ini
locale/ru/configure.ini
locale/te/configure.ini
locale/th/configure.ini
locale/tr/configure.ini
locale/vi-VN/configure.ini
locale/zh-CN/configure.ini
models/blogpage_model.php
models/group_model.php
models/profile_model.php
views/elements/groupfeed_element.php
views/wiki_view.php
diff --git a/configs/config.php b/configs/config.php
index 486daba15..8e3264782 100755
--- a/configs/config.php
+++ b/configs/config.php
@@ -655,6 +655,24 @@ define('GROUP_READ_COMMENT', 3);
  *   read items posted to the group as well as post new items
  */
 define('GROUP_READ_WRITE', 4);
+/**
+ *  Indicates a group where people can't up and down vote threads
+ */
+define("NON_VOTING_GROUP", 0);
+/**
+ *  Indicates a group where people can up and down vote threads
+ */
+define("VOTING_GROUP", 1);
+/**
+ *   Typical posts to a group feed are on user created threads and
+ *   so are of this type
+ */
+define('STANDARD_GROUP_ITEM', 0);
+/**
+ *   Indicates the thread was created to go alongside the creation of a wiki
+ *   page so that people can discuss the pages contents
+ */
+define('WIKI_GROUP_ITEM', 1);
 /**
  * Maximum length of a post or a comment in a group feed
  */
diff --git a/configs/createdb.php b/configs/createdb.php
index d0ba0ab98..bd80be8dc 100755
--- a/configs/createdb.php
+++ b/configs/createdb.php
@@ -58,6 +58,9 @@ require_once BASE_DIR."/models/model.php";
 /** For ProfileModel::createDatabaseTables method*/
 require_once BASE_DIR."/models/profile_model.php";

+/** For GroupModel::setPageName method*/
+require_once BASE_DIR."/models/group_model.php";
+
 /** For crawlHash function */
 require_once BASE_DIR."/lib/utility.php";

@@ -98,7 +101,8 @@ $creation_time = microTimestamp();
 //default account is root without a password
 $sql ="INSERT INTO USERS VALUES (".ROOT_ID.", 'admin', 'admin','root',
         'root@dev.null', '".crawlCrypt('')."', '".ACTIVE_STATUS.
-        "', '".crawlCrypt('root'.AUTH_KEY.$creation_time)."','$creation_time')";
+        "', '".crawlCrypt('root'.AUTH_KEY.$creation_time)."','$creation_time',
+        0, 0)";

 $db->execute($sql);
 // public account is an inactive account for used for public permissions
@@ -106,14 +110,14 @@ $db->execute($sql);
 $sql ="INSERT INTO USERS VALUES (".PUBLIC_USER_ID.", 'all', 'all','public',
         'public@dev.null', '".crawlCrypt('')."', '".INACTIVE_STATUS.
         "', '".crawlCrypt('public'.AUTH_KEY.$creation_time)."',
-        '$creation_time')";
+        '$creation_time', 0, 0)";
 $db->execute($sql);

 //default public group with group id 1
 $creation_time = microTimestamp();
 $sql = "INSERT INTO GROUPS VALUES(".PUBLIC_GROUP_ID.",'Public','".
     $creation_time."','".ROOT_ID."', '".PUBLIC_JOIN."', '".GROUP_READ.
-    "')";
+    "', ".NON_VOTING_GROUP.")";
 $db->execute($sql);

 $now = time();
@@ -124,12 +128,32 @@ $db->execute("INSERT INTO USER_GROUP VALUES (".ROOT_ID.", ".
     PUBLIC_GROUP_ID.", ".ACTIVE_STATUS.", $now)");
 $db->execute("INSERT INTO USER_GROUP VALUES (".PUBLIC_USER_ID.", ".
     PUBLIC_GROUP_ID.", ".ACTIVE_STATUS.", $now)");
-$public_pages = array("404", "409", "blog", "bot", "privacy",
-    "captcha_time_out", "suggest_day_exceeded", "terms");
-foreach($public_pages as $page) {
-    $sql = "INSERT INTO ACCESS VALUES ('".$page."', '".
-        PUBLIC_GROUP_ID."', 'group')";
-    $db->execute($sql);
+$public_pages = array(
+    "404" => "=Page Not Found=\n\nThe page you requested cannot be found.",
+    "409" => "=Conflict=\n\nYour request would result in an edit conflict,".
+        "so will not be processed.",
+    "blog" => "=Blog=\n\n==Crawl Notes==\n\nThis was an especially ".
+        "interesting crawl...",
+    "bot" => "=Bot=\n\nDescribes the web crawler used with this ".
+        "web site",
+    "captcha_time_out" => "=Captcha/Recover Time Out=\n\n".
+        "==Account Timeout==\n\nA large number of captcha refreshes or ".
+        "recover password requests have been made from this IP address. ".
+        "Please wait until %s to try again.",
+    "privacy" => "=Privacy Policy=\n\nDescribes what information this site ".
+        "collects and retains about users and how it uses that information",
+    "suggest_day_exceeded" => "=One-day Suggest Url Time Out=\n\n".
+        "==Account Timeout==\n\nThe maximum number of URLs that can be ".
+        "submitted from an IP address in one day has been exceeded. Please ".
+        "wait until %s to try again.",
+    "terms" => "=Terms of Service=\n\nPlease write the terms for the services".
+        "provided by this website."
+    );
+$group_model = new GroupModel(DB_NAME, false);
+$group_model->db = $db;
+foreach($public_pages as $page_name => $page_content) {
+    $group_model->setPageName(ROOT_ID, PUBLIC_USER_ID, $page_name,
+        $page_content, "en-US", "Creating Default Page");
 }

 /* we insert 1 by 1 rather than comma separate as sqlite
diff --git a/controllers/group_controller.php b/controllers/group_controller.php
index a7f22e2c9..5a7d43479 100644
--- a/controllers/group_controller.php
+++ b/controllers/group_controller.php
@@ -216,13 +216,15 @@ class GroupController extends Controller implements CrawlConstants
             "group_id" => "int",
             "page_name" => "string",
             "page" => "string",
+            "edit_reason" => "string",
             "filter" => 'string',
             "limit" => 'int',
             "num" => 'int',
             "page_id" => 'int',
             "show" => 'int',
             "diff1" => 'int',
-            "diff2" => 'int'
+            "diff2" => 'int',
+            "revert" => 'int'
         );
         $last_care_missing = 3;
         $missing_fields = false;
@@ -273,7 +275,7 @@ class GroupController extends Controller implements CrawlConstants
                     } else if(!$missing_fields && $page){
                         $group_model->setPageName($user_id,
                             $group_id, $page_name, $page,
-                            $locale_tag);
+                            $locale_tag, $edit_reason);
                         $data['SCRIPT'] .=
                             "doMessage('<h1 class=\"red\" >".
                             tl("group_controller_page_saved").
@@ -334,10 +336,12 @@ class GroupController extends Controller implements CrawlConstants
                             CSRF_TOKEN.'='.$data[CSRF_TOKEN].
                             '&amp;arg=history&amp;page_id='.
                             $data['PAGE_ID'];
-                        $out_diff = "--- {$data["PAGE_NAME"]}\t''$diff1''\n";
-                        $out_diff .= "+++ {$data["PAGE_NAME"]}\t''$diff2''\n";
+                        $out_diff = "<div>--- {$data["PAGE_NAME"]}\t".
+                            "''$diff1''\n";
+                        $out_diff .= "<div>+++ {$data["PAGE_NAME"]}\t".
+                            "''$diff2''\n";
                         $out_diff .= diff($page_info1["PAGE"],
-                            $page_info2["PAGE"]);
+                            $page_info2["PAGE"], true);
                         $data["PAGE"] =
                             "<div>&nbsp;</div>".
                             "<div class='black-box back-dark-gray'>".
@@ -347,13 +351,34 @@ class GroupController extends Controller implements CrawlConstants
                             tl("group_controller_diff_page",
                             $data["PAGE_NAME"], date("r", $diff1),
                             date("r", $diff2)) .
-                            "</div>" . "<pre>\n$out_diff\n</pre>\n";
+                            "</div>" . "$out_diff";
+                    } else if(isset($revert)) {
+                        $page_info = $group_model->getHistoryPage(
+                            $page_id, $revert);
+                        if($page_info) {
+                            $group_model->setPageName($user_id,
+                                $group_id, $page_info["PAGE_NAME"],
+                                $page_info["PAGE"],
+                                $locale_tag,
+                                tl('group_controller_page_revert_to',
+                                date('r', $revert)));
+                            $data['SCRIPT'] .=
+                                "doMessage('<h1 class=\"red\" >".
+                                tl("group_controller_page_reverted").
+                                "</h1>')";
+                        } else {
+                            $data['SCRIPT'] .=
+                                "doMessage('<h1 class=\"red\" >".
+                                tl("group_controller_revert_error").
+                                "</h1>')";
+                        }
                     }
                     if($default_history) {
                         $data["LIMIT"] = $limit;
                         $data["RESULTS_PER_PAGE"] = $num;
-                        list($data["TOTAL_ROWS"], $data["HISTORY"]) =
-                            $group_model->getPageHistory($page_id, $limit,
+                        list($data["TOTAL_ROWS"], $data["PAGE_NAME"],
+                            $data["HISTORY"]) =
+                            $group_model->getPageHistoryList($page_id, $limit,
                             $num);
                     }
                     $data['page_id'] = $page_id;
diff --git a/controllers/static_controller.php b/controllers/static_controller.php
index 4386a03f6..07f3d1c89 100644
--- a/controllers/static_controller.php
+++ b/controllers/static_controller.php
@@ -100,9 +100,6 @@ class StaticController extends Controller
         if(isset($_REQUEST['p'])) {
             $page = $this->clean($_REQUEST['p'], "string");
             $page = preg_replace("@(\.\.|\/)@", "", $page);
-            if(!$this->model("blogpage")->isPageAccessible($user, $page)) {
-                $page = "404";
-            }
         } else {
             $page = "404";
         }
@@ -168,4 +165,4 @@ class StaticController extends Controller
         return $page_string;
     }
 }
-?>
\ No newline at end of file
+?>
diff --git a/css/search.css b/css/search.css
index a90d55fdd..818842e7f 100755
--- a/css/search.css
+++ b/css/search.css
@@ -144,6 +144,10 @@ p
 {
     color: red;
 }
+.green
+{
+    color: green;
+}

 .highlight,
 .back-red
diff --git a/lib/utility.php b/lib/utility.php
index 10dbd2157..ae58548c8 100755
--- a/lib/utility.php
+++ b/lib/utility.php
@@ -1818,9 +1818,23 @@ function arrayColumnCount($arr, $key_column, $count_column)
  *
  *  @param string $data1 first string to compare
  *  @param string $data2 second string to compare
+ *  @param bool $html whether to output html highlighting
  */
-function diff($data1, $data2)
+function diff($data1, $data2, $html = false)
 {
+    if($html) {
+        $start = "<div>";
+        $start_same = "<div class='light-gray'>";
+        $start1 = "<div class='red'>";
+        $start2 = "<div class='green'>";
+        $end = "</div>";
+    } else {
+        $start = "";
+        $start_same = "";
+        $start1 = "";
+        $start2 = "";
+        $end = "";
+    }
     $lines1 = explode("\n", $data1);
     $lines2 = explode("\n", $data2);
     $num_lines1 = count($lines1);
@@ -1830,8 +1844,9 @@ function diff($data1, $data2)
     $first_diff = 0;
     // trim off the starts and end lines of the strings that are same
     $head_lcs = array();
+
     while($first_diff < $shorter_len &&
-        $lines1[$first_diff] == $lines2[$first_diff]) {
+        strcmp($lines1[$first_diff], $lines2[$first_diff]) == 0) {
         $head_lcs[] = array($first_diff, $first_diff, $lines1[$first_diff]);
         $first_diff++;
     }
@@ -1840,14 +1855,14 @@ function diff($data1, $data2)
             return "";
         } else {
             $tmp = $lines1;
-            $prefix = "-";
+            $prefix = "$start1-";
             if($num_lines1 == $shorter_len) {
                 $tmp = $lines2;
-                $prefix = "+";
+                $prefix = "$start2+";
             }
-            $out = "@@ -$shorter_len,0 +$shorter_len,$out_len @@\n";
+            $out = "$start@@ -$shorter_len,0 +$shorter_len,$out_len @@$end\n";
             for($i = $shorter_len; $i < $longer_len; $i++) {
-                $out .= $prefix . $tmp[$i]."\n";
+                $out .= $prefix . $tmp[$i]."$end\n";
             }
             return $out;
         }
@@ -1873,38 +1888,53 @@ function diff($data1, $data2)

     $previous_first = -1;
     $previous_second = -1;
+    $current_first = 0;
+    $current_second = 0;
     $old_line = "";
     $out_string = "";
-    foreach($lcs as $lcs_item) {
-        list($current_first, $current_second, $line) = $lcs_item;
-        $gap1 = $current_first - $previous_first;
-        $gap2 = $current_second - $previous_second;
-        if($gap1 > 1 || $gap2 > 1) {
-            $gap1++;
-            $gap2++;
-            $out_string .= "@@ -$previous_first,$gap1 ".
-                " +$previous_second,$gap2 @@\n";
-            $out_string .= " ".$old_line."\n";
-            for($i = $previous_first + 1; $i < $current_first; $i++) {
-                $out_string .= "-" . $lines1[$i] . "\n";
-            }
-            for($i = $previous_second + 1; $i < $current_second; $i++) {
-                $out_string .= "+" . $lines2[$i] . "\n";
-            }
-            $out_string .= " ".$line."\n";
-        }
-        $previous_first = $current_first;
-        $previous_second = $current_second;
-        $old_line = $line;
-    }
     if($lcs == array()) {
-        $out_string .= "@@ -0,$num_lines1 ".
-            " +0,$num_lines2 @@\n";
+        $out_string .= "$start@@ -0,$num_lines1 ".
+            " +0,$num_lines2 @@$end\n";
         for($i = 0; $i < $num_lines1; $i++) {
-            $out_string .= "-" . $lines1[$i] . "\n";
+            $out_string .= "$start1-" . $lines1[$i] . "$end\n";
         }
         for($i = 0; $i < $num_lines2; $i++) {
-            $out_string .= "+" . $lines2[$i] . "\n";
+            $out_string .= "$start2+" . $lines2[$i] . "$end\n";
+        }
+    } else {
+        foreach($lcs as $lcs_item) {
+            list($current_first, $current_second, $line) = $lcs_item;
+            $gap1 = $current_first - $previous_first;
+            $gap2 = $current_second - $previous_second;
+            if($gap1 > 1 || $gap2 > 1) {
+                $gap1++;
+                $gap2++;
+                $out_string .= "$start@@ -$previous_first,$gap1 ".
+                    " +$previous_second,$gap2 @@$end\n";
+                $out_string .= "$start_same ".$old_line."$end\n";
+                for($i = $previous_first + 1; $i < $current_first; $i++) {
+                    $out_string .= "$start1-" . $lines1[$i] . "$end\n";
+                }
+                for($i = $previous_second + 1; $i < $current_second; $i++) {
+                    $out_string .= "$start2+" . $lines2[$i] . "$end\n";
+                }
+                $out_string .= "$start_same ".$line."$end\n";
+            }
+            $previous_first = $current_first;
+            $previous_second = $current_second;
+            $old_line = $line;
+        }
+        if($current_first < $num_lines1 - 1 ||
+            $current_second < $num_lines2 - 1) {
+            $gap1 = $num_lines1 - $current_first;
+            $gap2 = $num_lines2 - $current_second;
+            $out_string .= "$start_same ".$line."$end\n";
+            for($i = $current_first + 1; $i < $num_lines1; $i++) {
+                $out_string .= "$start1-" . $lines1[$i] . "$end\n";
+            }
+            for($i = $current_second + 1; $i < $num_lines2; $i++) {
+                $out_string .= "$start2+" . $lines2[$i] . "$end\n";
+            }
         }
     }
     return $out_string;
@@ -1960,12 +1990,20 @@ function computeLCS($lines1, $lines2, $offset = 0)
     return $lcs;
 }
 /**
- *
- *  @param array $lcs_moves
- *  @param int $i
- *  @param int $j
- *  @param int $offset an offset to shift over array addresses in output by
- *  @param array &$lcs
+ *  Extracts from a table of longest common sequence moves (probably calculated
+ *  by @see computeLCS) and a starting coordinate $i, $j in that table,
+ *  a longest common subsequence
+ *
+ *  @param array $lcs_moves a table of move computed by computeLCS
+ *  @param int $i a line number in string 1
+ *  @param int $j a line number in string 2
+ *  @param int $offset a number to add to each line number output into $lcs.
+ *      This is useful if we have trimmed off the initially common lines from
+ *      our two strings we are trying to compute the LCS of
+ *  @param array &$lcs an array of triples
+ *      (index_string1, index_string2, line)
+ *      the indexes indicate the line number in each string, line is the line
+ *      in common the two strings
  */
 function extractLCSFromTable($lcs_moves, $lines, $i, $j, $offset, &$lcs)
 {
diff --git a/locale/ar/configure.ini b/locale/ar/configure.ini
index f2bc92f69..ad58f10e2 100755
--- a/locale/ar/configure.ini
+++ b/locale/ar/configure.ini
@@ -1011,19 +1011,34 @@ system_component_check_passed = "تمرير الاختيار."
 ; system_component.php line: 1041
 system_component_using_local_config = "استخدام configs/local_config.php حتى تغيير دليل العمل أعلاه قد لا تعمل."
 ;
-; group_controller.php line: 268
+; group_controller.php line: 272
 group_controller_missing_fields = ""
 ;
-; group_controller.php line: 276
+; group_controller.php line: 280
 group_controller_page_saved = ""
 ;
-; group_controller.php line: 304
+; group_controller.php line: 316
 group_controller_back = ""
 ;
-; group_controller.php line: 306
+; group_controller.php line: 317
 group_controller_history_page = ""
 ;
-; group_controller.php line: 336
+; group_controller.php line: 349
+group_controller_back = ""
+;
+; group_controller.php line: 350
+group_controller_diff_page = ""
+;
+; group_controller.php line: 362
+group_controller_page_revert_to = ""
+;
+; group_controller.php line: 366
+group_controller_page_reverted = ""
+;
+; group_controller.php line: 371
+group_controller_revert_error = ""
+;
+; group_controller.php line: 404
 group_controller_main = ""
 ;
 ; machine_controller.php line: 174
@@ -1789,37 +1804,37 @@ groupfeed_element_comment = ""
 ; groupfeed_element.php line: 221
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 294
+; groupfeed_element.php line: 295
 groupfeed_element_add_comment = ""
 ;
-; groupfeed_element.php line: 299
+; groupfeed_element.php line: 300
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 325
+; groupfeed_element.php line: 327
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 328
+; groupfeed_element.php line: 330
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 333
+; groupfeed_element.php line: 336
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 338
+; groupfeed_element.php line: 341
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 367
+; groupfeed_element.php line: 371
 groupfeed_element_edit_post = ""
 ;
-; groupfeed_element.php line: 370
+; groupfeed_element.php line: 374
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 375
+; groupfeed_element.php line: 379
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 381
+; groupfeed_element.php line: 385
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 410
+; groupfeed_element.php line: 414
 groupfeed_element_no_longer_update = ""
 ;
 ; machinelog_element.php line: 61
@@ -3270,69 +3285,75 @@ wiki_view_edit = ""
 ; wiki_view.php line: 78
 wiki_view_pages = ""
 ;
-; wiki_view.php line: 103
+; wiki_view.php line: 107
 wiki_view_feed = ""
 ;
-; wiki_view.php line: 104
+; wiki_view.php line: 108
 wiki_view_wiki = ""
 ;
-; wiki_view.php line: 139
+; wiki_view.php line: 143
 adminview_auto_logout_one_minute = "خروج السيارات في دقيقة واحدة!!"
 ;
-; wiki_view.php line: 168
+; wiki_view.php line: 175
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 170
+; wiki_view.php line: 177
 wiki_view_create_edit = ""
 ;
-; wiki_view.php line: 171
+; wiki_view.php line: 178
 wiki_view_use_form_below = ""
 ;
-; wiki_view.php line: 183
+; wiki_view.php line: 190
 wiki_element_submit = ""
 ;
-; wiki_view.php line: 187
+; wiki_view.php line: 194
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 189
+; wiki_view.php line: 196
 wiki_view_signin_edit = ""
 ;
-; wiki_view.php line: 191
+; wiki_view.php line: 198
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 210
+; wiki_view.php line: 217
 wiki_element_history = ""
 ;
-; wiki_view.php line: 214
+; wiki_view.php line: 221
 wiki_element_discuss = ""
 ;
-; wiki_view.php line: 228
+; wiki_view.php line: 235
 wiki_element_locale_name = ""
 ;
-; wiki_view.php line: 232
+; wiki_view.php line: 239
 wiki_element_page = ""
 ;
-; wiki_view.php line: 240
+; wiki_view.php line: 247
+wiki_element_edit_reason = ""
+;
+; wiki_view.php line: 254
 wiki_element_savebutton = ""
 ;
-; wiki_view.php line: 294
+; wiki_view.php line: 314
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 295
+; wiki_view.php line: 315
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 300
+; wiki_view.php line: 320
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 303
+; wiki_view.php line: 323
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 309
+; wiki_view.php line: 329
 wiki_view_edited_by = ""
 ;
-; wiki_view.php line: 310
+; wiki_view.php line: 330
 wiki_view_page_len = ""
 ;
+; wiki_view.php line: 332
+wiki_view_revert = ""
+;
 ; /Applications/MAMP/htdocs/git/yioop//lib/indexing_plugins
 ;
 ; wordfilter_plugin.php line: 307
diff --git a/locale/bn/configure.ini b/locale/bn/configure.ini
index 873838014..a90c0ff4a 100755
--- a/locale/bn/configure.ini
+++ b/locale/bn/configure.ini
@@ -1011,19 +1011,34 @@ system_component_check_passed = ""
 ; system_component.php line: 1041
 system_component_using_local_config = ""
 ;
-; group_controller.php line: 268
+; group_controller.php line: 272
 group_controller_missing_fields = ""
 ;
-; group_controller.php line: 276
+; group_controller.php line: 280
 group_controller_page_saved = ""
 ;
-; group_controller.php line: 304
+; group_controller.php line: 316
 group_controller_back = ""
 ;
-; group_controller.php line: 306
+; group_controller.php line: 317
 group_controller_history_page = ""
 ;
-; group_controller.php line: 336
+; group_controller.php line: 349
+group_controller_back = ""
+;
+; group_controller.php line: 350
+group_controller_diff_page = ""
+;
+; group_controller.php line: 362
+group_controller_page_revert_to = ""
+;
+; group_controller.php line: 366
+group_controller_page_reverted = ""
+;
+; group_controller.php line: 371
+group_controller_revert_error = ""
+;
+; group_controller.php line: 404
 group_controller_main = ""
 ;
 ; machine_controller.php line: 174
@@ -1789,37 +1804,37 @@ groupfeed_element_comment = ""
 ; groupfeed_element.php line: 221
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 294
+; groupfeed_element.php line: 295
 groupfeed_element_add_comment = ""
 ;
-; groupfeed_element.php line: 299
+; groupfeed_element.php line: 300
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 325
+; groupfeed_element.php line: 327
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 328
+; groupfeed_element.php line: 330
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 333
+; groupfeed_element.php line: 336
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 338
+; groupfeed_element.php line: 341
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 367
+; groupfeed_element.php line: 371
 groupfeed_element_edit_post = ""
 ;
-; groupfeed_element.php line: 370
+; groupfeed_element.php line: 374
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 375
+; groupfeed_element.php line: 379
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 381
+; groupfeed_element.php line: 385
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 410
+; groupfeed_element.php line: 414
 groupfeed_element_no_longer_update = ""
 ;
 ; machinelog_element.php line: 61
@@ -3270,69 +3285,75 @@ wiki_view_edit = ""
 ; wiki_view.php line: 78
 wiki_view_pages = ""
 ;
-; wiki_view.php line: 103
+; wiki_view.php line: 107
 wiki_view_feed = ""
 ;
-; wiki_view.php line: 104
+; wiki_view.php line: 108
 wiki_view_wiki = ""
 ;
-; wiki_view.php line: 139
+; wiki_view.php line: 143
 adminview_auto_logout_one_minute = ""
 ;
-; wiki_view.php line: 168
+; wiki_view.php line: 175
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 170
+; wiki_view.php line: 177
 wiki_view_create_edit = ""
 ;
-; wiki_view.php line: 171
+; wiki_view.php line: 178
 wiki_view_use_form_below = ""
 ;
-; wiki_view.php line: 183
+; wiki_view.php line: 190
 wiki_element_submit = ""
 ;
-; wiki_view.php line: 187
+; wiki_view.php line: 194
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 189
+; wiki_view.php line: 196
 wiki_view_signin_edit = ""
 ;
-; wiki_view.php line: 191
+; wiki_view.php line: 198
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 210
+; wiki_view.php line: 217
 wiki_element_history = ""
 ;
-; wiki_view.php line: 214
+; wiki_view.php line: 221
 wiki_element_discuss = ""
 ;
-; wiki_view.php line: 228
+; wiki_view.php line: 235
 wiki_element_locale_name = ""
 ;
-; wiki_view.php line: 232
+; wiki_view.php line: 239
 wiki_element_page = ""
 ;
-; wiki_view.php line: 240
+; wiki_view.php line: 247
+wiki_element_edit_reason = ""
+;
+; wiki_view.php line: 254
 wiki_element_savebutton = ""
 ;
-; wiki_view.php line: 294
+; wiki_view.php line: 314
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 295
+; wiki_view.php line: 315
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 300
+; wiki_view.php line: 320
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 303
+; wiki_view.php line: 323
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 309
+; wiki_view.php line: 329
 wiki_view_edited_by = ""
 ;
-; wiki_view.php line: 310
+; wiki_view.php line: 330
 wiki_view_page_len = ""
 ;
+; wiki_view.php line: 332
+wiki_view_revert = ""
+;
 ; /Applications/MAMP/htdocs/git/yioop//lib/indexing_plugins
 ;
 ; wordfilter_plugin.php line: 307
diff --git a/locale/de/configure.ini b/locale/de/configure.ini
index 8f0675bad..ba4060dd5 100755
--- a/locale/de/configure.ini
+++ b/locale/de/configure.ini
@@ -1011,19 +1011,34 @@ system_component_check_passed = ""
 ; system_component.php line: 1041
 system_component_using_local_config = ""
 ;
-; group_controller.php line: 268
+; group_controller.php line: 272
 group_controller_missing_fields = ""
 ;
-; group_controller.php line: 276
+; group_controller.php line: 280
 group_controller_page_saved = ""
 ;
-; group_controller.php line: 304
+; group_controller.php line: 316
 group_controller_back = ""
 ;
-; group_controller.php line: 306
+; group_controller.php line: 317
 group_controller_history_page = ""
 ;
-; group_controller.php line: 336
+; group_controller.php line: 349
+group_controller_back = ""
+;
+; group_controller.php line: 350
+group_controller_diff_page = ""
+;
+; group_controller.php line: 362
+group_controller_page_revert_to = ""
+;
+; group_controller.php line: 366
+group_controller_page_reverted = ""
+;
+; group_controller.php line: 371
+group_controller_revert_error = ""
+;
+; group_controller.php line: 404
 group_controller_main = ""
 ;
 ; machine_controller.php line: 174
@@ -1789,37 +1804,37 @@ groupfeed_element_comment = ""
 ; groupfeed_element.php line: 221
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 294
+; groupfeed_element.php line: 295
 groupfeed_element_add_comment = ""
 ;
-; groupfeed_element.php line: 299
+; groupfeed_element.php line: 300
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 325
+; groupfeed_element.php line: 327
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 328
+; groupfeed_element.php line: 330
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 333
+; groupfeed_element.php line: 336
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 338
+; groupfeed_element.php line: 341
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 367
+; groupfeed_element.php line: 371
 groupfeed_element_edit_post = ""
 ;
-; groupfeed_element.php line: 370
+; groupfeed_element.php line: 374
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 375
+; groupfeed_element.php line: 379
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 381
+; groupfeed_element.php line: 385
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 410
+; groupfeed_element.php line: 414
 groupfeed_element_no_longer_update = ""
 ;
 ; machinelog_element.php line: 61
@@ -3270,69 +3285,75 @@ wiki_view_edit = ""
 ; wiki_view.php line: 78
 wiki_view_pages = ""
 ;
-; wiki_view.php line: 103
+; wiki_view.php line: 107
 wiki_view_feed = ""
 ;
-; wiki_view.php line: 104
+; wiki_view.php line: 108
 wiki_view_wiki = ""
 ;
-; wiki_view.php line: 139
+; wiki_view.php line: 143
 adminview_auto_logout_one_minute = ""
 ;
-; wiki_view.php line: 168
+; wiki_view.php line: 175
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 170
+; wiki_view.php line: 177
 wiki_view_create_edit = ""
 ;
-; wiki_view.php line: 171
+; wiki_view.php line: 178
 wiki_view_use_form_below = ""
 ;
-; wiki_view.php line: 183
+; wiki_view.php line: 190
 wiki_element_submit = ""
 ;
-; wiki_view.php line: 187
+; wiki_view.php line: 194
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 189
+; wiki_view.php line: 196
 wiki_view_signin_edit = ""
 ;
-; wiki_view.php line: 191
+; wiki_view.php line: 198
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 210
+; wiki_view.php line: 217
 wiki_element_history = ""
 ;
-; wiki_view.php line: 214
+; wiki_view.php line: 221
 wiki_element_discuss = ""
 ;
-; wiki_view.php line: 228
+; wiki_view.php line: 235
 wiki_element_locale_name = ""
 ;
-; wiki_view.php line: 232
+; wiki_view.php line: 239
 wiki_element_page = ""
 ;
-; wiki_view.php line: 240
+; wiki_view.php line: 247
+wiki_element_edit_reason = ""
+;
+; wiki_view.php line: 254
 wiki_element_savebutton = ""
 ;
-; wiki_view.php line: 294
+; wiki_view.php line: 314
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 295
+; wiki_view.php line: 315
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 300
+; wiki_view.php line: 320
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 303
+; wiki_view.php line: 323
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 309
+; wiki_view.php line: 329
 wiki_view_edited_by = ""
 ;
-; wiki_view.php line: 310
+; wiki_view.php line: 330
 wiki_view_page_len = ""
 ;
+; wiki_view.php line: 332
+wiki_view_revert = ""
+;
 ; /Applications/MAMP/htdocs/git/yioop//lib/indexing_plugins
 ;
 ; wordfilter_plugin.php line: 307
diff --git a/locale/en-US/configure.ini b/locale/en-US/configure.ini
index 8e9ad087e..dd9f8521f 100755
--- a/locale/en-US/configure.ini
+++ b/locale/en-US/configure.ini
@@ -1011,19 +1011,34 @@ system_component_check_passed = "Check Passed."
 ; system_component.php line: 1041
 system_component_using_local_config = "Using configs/local_config.php so changing work directory above may not work."
 ;
-; group_controller.php line: 268
+; group_controller.php line: 272
 group_controller_missing_fields = "Missing Fields!"
 ;
-; group_controller.php line: 276
+; group_controller.php line: 280
 group_controller_page_saved = "Page Saved!"
 ;
-; group_controller.php line: 304
+; group_controller.php line: 316
 group_controller_back = "Back"
 ;
-; group_controller.php line: 306
+; group_controller.php line: 317
 group_controller_history_page = "Historical Version of %s from %s."
 ;
-; group_controller.php line: 336
+; group_controller.php line: 349
+group_controller_back = "Back"
+;
+; group_controller.php line: 350
+group_controller_diff_page = "%s line differences between %s and %s."
+;
+; group_controller.php line: 362
+group_controller_page_revert_to = "Revert to %s."
+;
+; group_controller.php line: 366
+group_controller_page_reverted = "Page Reverted!"
+;
+; group_controller.php line: 371
+group_controller_revert_error = "Error Reverting Page!"
+;
+; group_controller.php line: 404
 group_controller_main = "Main"
 ;
 ; machine_controller.php line: 174
@@ -1789,37 +1804,37 @@ groupfeed_element_comment = "Comment"
 ; groupfeed_element.php line: 221
 groupfeed_element_start_thread = "Start New Thread"
 ;
-; groupfeed_element.php line: 294
+; groupfeed_element.php line: 295
 groupfeed_element_add_comment = "Add a Comment"
 ;
-; groupfeed_element.php line: 299
+; groupfeed_element.php line: 300
 groupfeed_element_save = "Save"
 ;
-; groupfeed_element.php line: 325
+; groupfeed_element.php line: 327
 groupfeed_element_start_thread = "Start New Thread"
 ;
-; groupfeed_element.php line: 328
+; groupfeed_element.php line: 330
 groupfeed_element_subject = "Subject"
 ;
-; groupfeed_element.php line: 333
+; groupfeed_element.php line: 336
 groupfeed_element_post = "Post"
 ;
-; groupfeed_element.php line: 338
+; groupfeed_element.php line: 341
 groupfeed_element_save = "Save"
 ;
-; groupfeed_element.php line: 367
+; groupfeed_element.php line: 371
 groupfeed_element_edit_post = "Edit Post"
 ;
-; groupfeed_element.php line: 370
+; groupfeed_element.php line: 374
 groupfeed_element_subject = "Subject"
 ;
-; groupfeed_element.php line: 375
+; groupfeed_element.php line: 379
 groupfeed_element_post = "Post"
 ;
-; groupfeed_element.php line: 381
+; groupfeed_element.php line: 385
 groupfeed_element_save = "Save"
 ;
-; groupfeed_element.php line: 410
+; groupfeed_element.php line: 414
 groupfeed_element_no_longer_update = "Group Feeds No Longer Updating!"
 ;
 ; machinelog_element.php line: 61
@@ -3270,69 +3285,75 @@ wiki_view_edit = "Edit"
 ; wiki_view.php line: 78
 wiki_view_pages = "Pages"
 ;
-; wiki_view.php line: 103
+; wiki_view.php line: 107
 wiki_view_feed = "Feed"
 ;
-; wiki_view.php line: 104
+; wiki_view.php line: 108
 wiki_view_wiki = "Wiki"
 ;
-; wiki_view.php line: 139
+; wiki_view.php line: 143
 adminview_auto_logout_one_minute = "Auto-logout in One Minute!!"
 ;
-; wiki_view.php line: 168
+; wiki_view.php line: 175
 wiki_view_page_no_exist = "%s page does not exist."
 ;
-; wiki_view.php line: 170
+; wiki_view.php line: 177
 wiki_view_create_edit = "You can create this page by clicking on the edit link above."
 ;
-; wiki_view.php line: 171
+; wiki_view.php line: 178
 wiki_view_use_form_below = "Or you can use the form below to create or edit a different page."
 ;
-; wiki_view.php line: 183
+; wiki_view.php line: 190
 wiki_element_submit = "Submit"
 ;
-; wiki_view.php line: 187
+; wiki_view.php line: 194
 wiki_view_page_no_exist = "%s page does not exist."
 ;
-; wiki_view.php line: 189
+; wiki_view.php line: 196
 wiki_view_signin_edit = "If you have sufficient access you might be able to create the page by logging in and navigating back here."
 ;
-; wiki_view.php line: 191
+; wiki_view.php line: 198
 wiki_view_page_no_exist = "%s page does not exist."
 ;
-; wiki_view.php line: 210
+; wiki_view.php line: 217
 wiki_element_history = "History"
 ;
-; wiki_view.php line: 214
+; wiki_view.php line: 221
 wiki_element_discuss = "Discuss"
 ;
-; wiki_view.php line: 228
+; wiki_view.php line: 235
 wiki_element_locale_name = "Locale: %s"
 ;
-; wiki_view.php line: 232
+; wiki_view.php line: 239
 wiki_element_page = "Page: %s"
 ;
-; wiki_view.php line: 240
+; wiki_view.php line: 247
+wiki_element_edit_reason = "Edit Reason:"
+;
+; wiki_view.php line: 254
 wiki_element_savebutton = "Save"
 ;
-; wiki_view.php line: 294
+; wiki_view.php line: 314
 wiki_view_diff_current = "Cur"
 ;
-; wiki_view.php line: 295
+; wiki_view.php line: 315
 wiki_view_diff_next = "Next"
 ;
-; wiki_view.php line: 300
+; wiki_view.php line: 320
 wiki_view_diff_current = "Cur"
 ;
-; wiki_view.php line: 303
+; wiki_view.php line: 323
 wiki_view_diff_next = "Next"
 ;
-; wiki_view.php line: 309
+; wiki_view.php line: 329
 wiki_view_edited_by = "Edited by %s. "
 ;
-; wiki_view.php line: 310
+; wiki_view.php line: 330
 wiki_view_page_len = "(%s bytes)."
 ;
+; wiki_view.php line: 332
+wiki_view_revert = "Revert"
+;
 ; /Applications/MAMP/htdocs/git/yioop//lib/indexing_plugins
 ;
 ; wordfilter_plugin.php line: 307
diff --git a/locale/es/configure.ini b/locale/es/configure.ini
index 218648a6a..85c189211 100755
--- a/locale/es/configure.ini
+++ b/locale/es/configure.ini
@@ -1011,19 +1011,34 @@ system_component_check_passed = "Entrada Aprobada"
 ; system_component.php line: 1041
 system_component_using_local_config = ""
 ;
-; group_controller.php line: 268
+; group_controller.php line: 272
 group_controller_missing_fields = ""
 ;
-; group_controller.php line: 276
+; group_controller.php line: 280
 group_controller_page_saved = ""
 ;
-; group_controller.php line: 304
+; group_controller.php line: 316
 group_controller_back = ""
 ;
-; group_controller.php line: 306
+; group_controller.php line: 317
 group_controller_history_page = ""
 ;
-; group_controller.php line: 336
+; group_controller.php line: 349
+group_controller_back = ""
+;
+; group_controller.php line: 350
+group_controller_diff_page = ""
+;
+; group_controller.php line: 362
+group_controller_page_revert_to = ""
+;
+; group_controller.php line: 366
+group_controller_page_reverted = ""
+;
+; group_controller.php line: 371
+group_controller_revert_error = ""
+;
+; group_controller.php line: 404
 group_controller_main = ""
 ;
 ; machine_controller.php line: 174
@@ -1789,37 +1804,37 @@ groupfeed_element_comment = ""
 ; groupfeed_element.php line: 221
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 294
+; groupfeed_element.php line: 295
 groupfeed_element_add_comment = ""
 ;
-; groupfeed_element.php line: 299
+; groupfeed_element.php line: 300
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 325
+; groupfeed_element.php line: 327
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 328
+; groupfeed_element.php line: 330
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 333
+; groupfeed_element.php line: 336
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 338
+; groupfeed_element.php line: 341
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 367
+; groupfeed_element.php line: 371
 groupfeed_element_edit_post = ""
 ;
-; groupfeed_element.php line: 370
+; groupfeed_element.php line: 374
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 375
+; groupfeed_element.php line: 379
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 381
+; groupfeed_element.php line: 385
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 410
+; groupfeed_element.php line: 414
 groupfeed_element_no_longer_update = ""
 ;
 ; machinelog_element.php line: 61
@@ -3270,69 +3285,75 @@ wiki_view_edit = ""
 ; wiki_view.php line: 78
 wiki_view_pages = ""
 ;
-; wiki_view.php line: 103
+; wiki_view.php line: 107
 wiki_view_feed = ""
 ;
-; wiki_view.php line: 104
+; wiki_view.php line: 108
 wiki_view_wiki = ""
 ;
-; wiki_view.php line: 139
+; wiki_view.php line: 143
 adminview_auto_logout_one_minute = "Auto-cerrar la sesi&oacute;n en un minuto!"
 ;
-; wiki_view.php line: 168
+; wiki_view.php line: 175
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 170
+; wiki_view.php line: 177
 wiki_view_create_edit = ""
 ;
-; wiki_view.php line: 171
+; wiki_view.php line: 178
 wiki_view_use_form_below = ""
 ;
-; wiki_view.php line: 183
+; wiki_view.php line: 190
 wiki_element_submit = ""
 ;
-; wiki_view.php line: 187
+; wiki_view.php line: 194
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 189
+; wiki_view.php line: 196
 wiki_view_signin_edit = ""
 ;
-; wiki_view.php line: 191
+; wiki_view.php line: 198
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 210
+; wiki_view.php line: 217
 wiki_element_history = ""
 ;
-; wiki_view.php line: 214
+; wiki_view.php line: 221
 wiki_element_discuss = ""
 ;
-; wiki_view.php line: 228
+; wiki_view.php line: 235
 wiki_element_locale_name = ""
 ;
-; wiki_view.php line: 232
+; wiki_view.php line: 239
 wiki_element_page = ""
 ;
-; wiki_view.php line: 240
+; wiki_view.php line: 247
+wiki_element_edit_reason = ""
+;
+; wiki_view.php line: 254
 wiki_element_savebutton = ""
 ;
-; wiki_view.php line: 294
+; wiki_view.php line: 314
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 295
+; wiki_view.php line: 315
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 300
+; wiki_view.php line: 320
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 303
+; wiki_view.php line: 323
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 309
+; wiki_view.php line: 329
 wiki_view_edited_by = ""
 ;
-; wiki_view.php line: 310
+; wiki_view.php line: 330
 wiki_view_page_len = ""
 ;
+; wiki_view.php line: 332
+wiki_view_revert = ""
+;
 ; /Applications/MAMP/htdocs/git/yioop//lib/indexing_plugins
 ;
 ; wordfilter_plugin.php line: 307
diff --git a/locale/fa/configure.ini b/locale/fa/configure.ini
index fa5980749..4dca0815f 100755
--- a/locale/fa/configure.ini
+++ b/locale/fa/configure.ini
@@ -1011,19 +1011,34 @@ system_component_check_passed = "در بررسی مشکلی پیدا نشد."
 ; system_component.php line: 1041
 system_component_using_local_config = "از configs/local_config.php استفاده می&zwnj;شود، بنابراین ممکن است تغییر بالا عمل نکند."
 ;
-; group_controller.php line: 268
+; group_controller.php line: 272
 group_controller_missing_fields = ""
 ;
-; group_controller.php line: 276
+; group_controller.php line: 280
 group_controller_page_saved = ""
 ;
-; group_controller.php line: 304
+; group_controller.php line: 316
 group_controller_back = ""
 ;
-; group_controller.php line: 306
+; group_controller.php line: 317
 group_controller_history_page = ""
 ;
-; group_controller.php line: 336
+; group_controller.php line: 349
+group_controller_back = ""
+;
+; group_controller.php line: 350
+group_controller_diff_page = ""
+;
+; group_controller.php line: 362
+group_controller_page_revert_to = ""
+;
+; group_controller.php line: 366
+group_controller_page_reverted = ""
+;
+; group_controller.php line: 371
+group_controller_revert_error = ""
+;
+; group_controller.php line: 404
 group_controller_main = ""
 ;
 ; machine_controller.php line: 174
@@ -1789,37 +1804,37 @@ groupfeed_element_comment = ""
 ; groupfeed_element.php line: 221
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 294
+; groupfeed_element.php line: 295
 groupfeed_element_add_comment = ""
 ;
-; groupfeed_element.php line: 299
+; groupfeed_element.php line: 300
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 325
+; groupfeed_element.php line: 327
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 328
+; groupfeed_element.php line: 330
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 333
+; groupfeed_element.php line: 336
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 338
+; groupfeed_element.php line: 341
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 367
+; groupfeed_element.php line: 371
 groupfeed_element_edit_post = ""
 ;
-; groupfeed_element.php line: 370
+; groupfeed_element.php line: 374
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 375
+; groupfeed_element.php line: 379
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 381
+; groupfeed_element.php line: 385
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 410
+; groupfeed_element.php line: 414
 groupfeed_element_no_longer_update = ""
 ;
 ; machinelog_element.php line: 61
@@ -3270,69 +3285,75 @@ wiki_view_edit = ""
 ; wiki_view.php line: 78
 wiki_view_pages = ""
 ;
-; wiki_view.php line: 103
+; wiki_view.php line: 107
 wiki_view_feed = ""
 ;
-; wiki_view.php line: 104
+; wiki_view.php line: 108
 wiki_view_wiki = ""
 ;
-; wiki_view.php line: 139
+; wiki_view.php line: 143
 adminview_auto_logout_one_minute = "خروج خودکار تا یک دقیقهٔ دیگر!!"
 ;
-; wiki_view.php line: 168
+; wiki_view.php line: 175
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 170
+; wiki_view.php line: 177
 wiki_view_create_edit = ""
 ;
-; wiki_view.php line: 171
+; wiki_view.php line: 178
 wiki_view_use_form_below = ""
 ;
-; wiki_view.php line: 183
+; wiki_view.php line: 190
 wiki_element_submit = ""
 ;
-; wiki_view.php line: 187
+; wiki_view.php line: 194
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 189
+; wiki_view.php line: 196
 wiki_view_signin_edit = ""
 ;
-; wiki_view.php line: 191
+; wiki_view.php line: 198
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 210
+; wiki_view.php line: 217
 wiki_element_history = ""
 ;
-; wiki_view.php line: 214
+; wiki_view.php line: 221
 wiki_element_discuss = ""
 ;
-; wiki_view.php line: 228
+; wiki_view.php line: 235
 wiki_element_locale_name = ""
 ;
-; wiki_view.php line: 232
+; wiki_view.php line: 239
 wiki_element_page = ""
 ;
-; wiki_view.php line: 240
+; wiki_view.php line: 247
+wiki_element_edit_reason = ""
+;
+; wiki_view.php line: 254
 wiki_element_savebutton = ""
 ;
-; wiki_view.php line: 294
+; wiki_view.php line: 314
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 295
+; wiki_view.php line: 315
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 300
+; wiki_view.php line: 320
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 303
+; wiki_view.php line: 323
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 309
+; wiki_view.php line: 329
 wiki_view_edited_by = ""
 ;
-; wiki_view.php line: 310
+; wiki_view.php line: 330
 wiki_view_page_len = ""
 ;
+; wiki_view.php line: 332
+wiki_view_revert = ""
+;
 ; /Applications/MAMP/htdocs/git/yioop//lib/indexing_plugins
 ;
 ; wordfilter_plugin.php line: 307
diff --git a/locale/fr-FR/configure.ini b/locale/fr-FR/configure.ini
index 16d4427bf..c5cbf8c08 100755
--- a/locale/fr-FR/configure.ini
+++ b/locale/fr-FR/configure.ini
@@ -1011,19 +1011,34 @@ system_component_check_passed = ""
 ; system_component.php line: 1041
 system_component_using_local_config = ""
 ;
-; group_controller.php line: 268
+; group_controller.php line: 272
 group_controller_missing_fields = ""
 ;
-; group_controller.php line: 276
+; group_controller.php line: 280
 group_controller_page_saved = ""
 ;
-; group_controller.php line: 304
+; group_controller.php line: 316
 group_controller_back = ""
 ;
-; group_controller.php line: 306
+; group_controller.php line: 317
 group_controller_history_page = ""
 ;
-; group_controller.php line: 336
+; group_controller.php line: 349
+group_controller_back = ""
+;
+; group_controller.php line: 350
+group_controller_diff_page = ""
+;
+; group_controller.php line: 362
+group_controller_page_revert_to = ""
+;
+; group_controller.php line: 366
+group_controller_page_reverted = ""
+;
+; group_controller.php line: 371
+group_controller_revert_error = ""
+;
+; group_controller.php line: 404
 group_controller_main = ""
 ;
 ; machine_controller.php line: 174
@@ -1789,37 +1804,37 @@ groupfeed_element_comment = ""
 ; groupfeed_element.php line: 221
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 294
+; groupfeed_element.php line: 295
 groupfeed_element_add_comment = ""
 ;
-; groupfeed_element.php line: 299
+; groupfeed_element.php line: 300
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 325
+; groupfeed_element.php line: 327
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 328
+; groupfeed_element.php line: 330
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 333
+; groupfeed_element.php line: 336
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 338
+; groupfeed_element.php line: 341
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 367
+; groupfeed_element.php line: 371
 groupfeed_element_edit_post = ""
 ;
-; groupfeed_element.php line: 370
+; groupfeed_element.php line: 374
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 375
+; groupfeed_element.php line: 379
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 381
+; groupfeed_element.php line: 385
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 410
+; groupfeed_element.php line: 414
 groupfeed_element_no_longer_update = ""
 ;
 ; machinelog_element.php line: 61
@@ -3270,69 +3285,75 @@ wiki_view_edit = ""
 ; wiki_view.php line: 78
 wiki_view_pages = ""
 ;
-; wiki_view.php line: 103
+; wiki_view.php line: 107
 wiki_view_feed = ""
 ;
-; wiki_view.php line: 104
+; wiki_view.php line: 108
 wiki_view_wiki = ""
 ;
-; wiki_view.php line: 139
+; wiki_view.php line: 143
 adminview_auto_logout_one_minute = ""
 ;
-; wiki_view.php line: 168
+; wiki_view.php line: 175
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 170
+; wiki_view.php line: 177
 wiki_view_create_edit = ""
 ;
-; wiki_view.php line: 171
+; wiki_view.php line: 178
 wiki_view_use_form_below = ""
 ;
-; wiki_view.php line: 183
+; wiki_view.php line: 190
 wiki_element_submit = ""
 ;
-; wiki_view.php line: 187
+; wiki_view.php line: 194
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 189
+; wiki_view.php line: 196
 wiki_view_signin_edit = ""
 ;
-; wiki_view.php line: 191
+; wiki_view.php line: 198
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 210
+; wiki_view.php line: 217
 wiki_element_history = ""
 ;
-; wiki_view.php line: 214
+; wiki_view.php line: 221
 wiki_element_discuss = ""
 ;
-; wiki_view.php line: 228
+; wiki_view.php line: 235
 wiki_element_locale_name = ""
 ;
-; wiki_view.php line: 232
+; wiki_view.php line: 239
 wiki_element_page = ""
 ;
-; wiki_view.php line: 240
+; wiki_view.php line: 247
+wiki_element_edit_reason = ""
+;
+; wiki_view.php line: 254
 wiki_element_savebutton = ""
 ;
-; wiki_view.php line: 294
+; wiki_view.php line: 314
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 295
+; wiki_view.php line: 315
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 300
+; wiki_view.php line: 320
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 303
+; wiki_view.php line: 323
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 309
+; wiki_view.php line: 329
 wiki_view_edited_by = ""
 ;
-; wiki_view.php line: 310
+; wiki_view.php line: 330
 wiki_view_page_len = ""
 ;
+; wiki_view.php line: 332
+wiki_view_revert = ""
+;
 ; /Applications/MAMP/htdocs/git/yioop//lib/indexing_plugins
 ;
 ; wordfilter_plugin.php line: 307
diff --git a/locale/he/configure.ini b/locale/he/configure.ini
index 48719da4e..5ac9fac84 100755
--- a/locale/he/configure.ini
+++ b/locale/he/configure.ini
@@ -1011,19 +1011,34 @@ system_component_check_passed = ""
 ; system_component.php line: 1041
 system_component_using_local_config = ""
 ;
-; group_controller.php line: 268
+; group_controller.php line: 272
 group_controller_missing_fields = ""
 ;
-; group_controller.php line: 276
+; group_controller.php line: 280
 group_controller_page_saved = ""
 ;
-; group_controller.php line: 304
+; group_controller.php line: 316
 group_controller_back = ""
 ;
-; group_controller.php line: 306
+; group_controller.php line: 317
 group_controller_history_page = ""
 ;
-; group_controller.php line: 336
+; group_controller.php line: 349
+group_controller_back = ""
+;
+; group_controller.php line: 350
+group_controller_diff_page = ""
+;
+; group_controller.php line: 362
+group_controller_page_revert_to = ""
+;
+; group_controller.php line: 366
+group_controller_page_reverted = ""
+;
+; group_controller.php line: 371
+group_controller_revert_error = ""
+;
+; group_controller.php line: 404
 group_controller_main = ""
 ;
 ; machine_controller.php line: 174
@@ -1789,37 +1804,37 @@ groupfeed_element_comment = ""
 ; groupfeed_element.php line: 221
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 294
+; groupfeed_element.php line: 295
 groupfeed_element_add_comment = ""
 ;
-; groupfeed_element.php line: 299
+; groupfeed_element.php line: 300
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 325
+; groupfeed_element.php line: 327
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 328
+; groupfeed_element.php line: 330
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 333
+; groupfeed_element.php line: 336
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 338
+; groupfeed_element.php line: 341
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 367
+; groupfeed_element.php line: 371
 groupfeed_element_edit_post = ""
 ;
-; groupfeed_element.php line: 370
+; groupfeed_element.php line: 374
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 375
+; groupfeed_element.php line: 379
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 381
+; groupfeed_element.php line: 385
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 410
+; groupfeed_element.php line: 414
 groupfeed_element_no_longer_update = ""
 ;
 ; machinelog_element.php line: 61
@@ -3270,69 +3285,75 @@ wiki_view_edit = ""
 ; wiki_view.php line: 78
 wiki_view_pages = ""
 ;
-; wiki_view.php line: 103
+; wiki_view.php line: 107
 wiki_view_feed = ""
 ;
-; wiki_view.php line: 104
+; wiki_view.php line: 108
 wiki_view_wiki = ""
 ;
-; wiki_view.php line: 139
+; wiki_view.php line: 143
 adminview_auto_logout_one_minute = ""
 ;
-; wiki_view.php line: 168
+; wiki_view.php line: 175
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 170
+; wiki_view.php line: 177
 wiki_view_create_edit = ""
 ;
-; wiki_view.php line: 171
+; wiki_view.php line: 178
 wiki_view_use_form_below = ""
 ;
-; wiki_view.php line: 183
+; wiki_view.php line: 190
 wiki_element_submit = ""
 ;
-; wiki_view.php line: 187
+; wiki_view.php line: 194
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 189
+; wiki_view.php line: 196
 wiki_view_signin_edit = ""
 ;
-; wiki_view.php line: 191
+; wiki_view.php line: 198
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 210
+; wiki_view.php line: 217
 wiki_element_history = ""
 ;
-; wiki_view.php line: 214
+; wiki_view.php line: 221
 wiki_element_discuss = ""
 ;
-; wiki_view.php line: 228
+; wiki_view.php line: 235
 wiki_element_locale_name = ""
 ;
-; wiki_view.php line: 232
+; wiki_view.php line: 239
 wiki_element_page = ""
 ;
-; wiki_view.php line: 240
+; wiki_view.php line: 247
+wiki_element_edit_reason = ""
+;
+; wiki_view.php line: 254
 wiki_element_savebutton = ""
 ;
-; wiki_view.php line: 294
+; wiki_view.php line: 314
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 295
+; wiki_view.php line: 315
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 300
+; wiki_view.php line: 320
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 303
+; wiki_view.php line: 323
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 309
+; wiki_view.php line: 329
 wiki_view_edited_by = ""
 ;
-; wiki_view.php line: 310
+; wiki_view.php line: 330
 wiki_view_page_len = ""
 ;
+; wiki_view.php line: 332
+wiki_view_revert = ""
+;
 ; /Applications/MAMP/htdocs/git/yioop//lib/indexing_plugins
 ;
 ; wordfilter_plugin.php line: 307
diff --git a/locale/hi/configure.ini b/locale/hi/configure.ini
index f9b87c540..0c6e0276b 100755
--- a/locale/hi/configure.ini
+++ b/locale/hi/configure.ini
@@ -1011,19 +1011,34 @@ system_component_check_passed = ""
 ; system_component.php line: 1041
 system_component_using_local_config = ""
 ;
-; group_controller.php line: 268
+; group_controller.php line: 272
 group_controller_missing_fields = ""
 ;
-; group_controller.php line: 276
+; group_controller.php line: 280
 group_controller_page_saved = ""
 ;
-; group_controller.php line: 304
+; group_controller.php line: 316
 group_controller_back = ""
 ;
-; group_controller.php line: 306
+; group_controller.php line: 317
 group_controller_history_page = ""
 ;
-; group_controller.php line: 336
+; group_controller.php line: 349
+group_controller_back = ""
+;
+; group_controller.php line: 350
+group_controller_diff_page = ""
+;
+; group_controller.php line: 362
+group_controller_page_revert_to = ""
+;
+; group_controller.php line: 366
+group_controller_page_reverted = ""
+;
+; group_controller.php line: 371
+group_controller_revert_error = ""
+;
+; group_controller.php line: 404
 group_controller_main = ""
 ;
 ; machine_controller.php line: 174
@@ -1789,37 +1804,37 @@ groupfeed_element_comment = ""
 ; groupfeed_element.php line: 221
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 294
+; groupfeed_element.php line: 295
 groupfeed_element_add_comment = ""
 ;
-; groupfeed_element.php line: 299
+; groupfeed_element.php line: 300
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 325
+; groupfeed_element.php line: 327
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 328
+; groupfeed_element.php line: 330
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 333
+; groupfeed_element.php line: 336
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 338
+; groupfeed_element.php line: 341
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 367
+; groupfeed_element.php line: 371
 groupfeed_element_edit_post = ""
 ;
-; groupfeed_element.php line: 370
+; groupfeed_element.php line: 374
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 375
+; groupfeed_element.php line: 379
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 381
+; groupfeed_element.php line: 385
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 410
+; groupfeed_element.php line: 414
 groupfeed_element_no_longer_update = ""
 ;
 ; machinelog_element.php line: 61
@@ -3270,69 +3285,75 @@ wiki_view_edit = ""
 ; wiki_view.php line: 78
 wiki_view_pages = ""
 ;
-; wiki_view.php line: 103
+; wiki_view.php line: 107
 wiki_view_feed = ""
 ;
-; wiki_view.php line: 104
+; wiki_view.php line: 108
 wiki_view_wiki = ""
 ;
-; wiki_view.php line: 139
+; wiki_view.php line: 143
 adminview_auto_logout_one_minute = ""
 ;
-; wiki_view.php line: 168
+; wiki_view.php line: 175
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 170
+; wiki_view.php line: 177
 wiki_view_create_edit = ""
 ;
-; wiki_view.php line: 171
+; wiki_view.php line: 178
 wiki_view_use_form_below = ""
 ;
-; wiki_view.php line: 183
+; wiki_view.php line: 190
 wiki_element_submit = ""
 ;
-; wiki_view.php line: 187
+; wiki_view.php line: 194
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 189
+; wiki_view.php line: 196
 wiki_view_signin_edit = ""
 ;
-; wiki_view.php line: 191
+; wiki_view.php line: 198
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 210
+; wiki_view.php line: 217
 wiki_element_history = ""
 ;
-; wiki_view.php line: 214
+; wiki_view.php line: 221
 wiki_element_discuss = ""
 ;
-; wiki_view.php line: 228
+; wiki_view.php line: 235
 wiki_element_locale_name = ""
 ;
-; wiki_view.php line: 232
+; wiki_view.php line: 239
 wiki_element_page = ""
 ;
-; wiki_view.php line: 240
+; wiki_view.php line: 247
+wiki_element_edit_reason = ""
+;
+; wiki_view.php line: 254
 wiki_element_savebutton = ""
 ;
-; wiki_view.php line: 294
+; wiki_view.php line: 314
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 295
+; wiki_view.php line: 315
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 300
+; wiki_view.php line: 320
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 303
+; wiki_view.php line: 323
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 309
+; wiki_view.php line: 329
 wiki_view_edited_by = ""
 ;
-; wiki_view.php line: 310
+; wiki_view.php line: 330
 wiki_view_page_len = ""
 ;
+; wiki_view.php line: 332
+wiki_view_revert = ""
+;
 ; /Applications/MAMP/htdocs/git/yioop//lib/indexing_plugins
 ;
 ; wordfilter_plugin.php line: 307
diff --git a/locale/in-ID/configure.ini b/locale/in-ID/configure.ini
index bca055fd5..ac417f0b0 100755
--- a/locale/in-ID/configure.ini
+++ b/locale/in-ID/configure.ini
@@ -1011,19 +1011,34 @@ system_component_check_passed = ""
 ; system_component.php line: 1041
 system_component_using_local_config = ""
 ;
-; group_controller.php line: 268
+; group_controller.php line: 272
 group_controller_missing_fields = ""
 ;
-; group_controller.php line: 276
+; group_controller.php line: 280
 group_controller_page_saved = ""
 ;
-; group_controller.php line: 304
+; group_controller.php line: 316
 group_controller_back = ""
 ;
-; group_controller.php line: 306
+; group_controller.php line: 317
 group_controller_history_page = ""
 ;
-; group_controller.php line: 336
+; group_controller.php line: 349
+group_controller_back = ""
+;
+; group_controller.php line: 350
+group_controller_diff_page = ""
+;
+; group_controller.php line: 362
+group_controller_page_revert_to = ""
+;
+; group_controller.php line: 366
+group_controller_page_reverted = ""
+;
+; group_controller.php line: 371
+group_controller_revert_error = ""
+;
+; group_controller.php line: 404
 group_controller_main = ""
 ;
 ; machine_controller.php line: 174
@@ -1789,37 +1804,37 @@ groupfeed_element_comment = ""
 ; groupfeed_element.php line: 221
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 294
+; groupfeed_element.php line: 295
 groupfeed_element_add_comment = ""
 ;
-; groupfeed_element.php line: 299
+; groupfeed_element.php line: 300
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 325
+; groupfeed_element.php line: 327
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 328
+; groupfeed_element.php line: 330
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 333
+; groupfeed_element.php line: 336
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 338
+; groupfeed_element.php line: 341
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 367
+; groupfeed_element.php line: 371
 groupfeed_element_edit_post = ""
 ;
-; groupfeed_element.php line: 370
+; groupfeed_element.php line: 374
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 375
+; groupfeed_element.php line: 379
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 381
+; groupfeed_element.php line: 385
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 410
+; groupfeed_element.php line: 414
 groupfeed_element_no_longer_update = ""
 ;
 ; machinelog_element.php line: 61
@@ -3270,69 +3285,75 @@ wiki_view_edit = ""
 ; wiki_view.php line: 78
 wiki_view_pages = ""
 ;
-; wiki_view.php line: 103
+; wiki_view.php line: 107
 wiki_view_feed = ""
 ;
-; wiki_view.php line: 104
+; wiki_view.php line: 108
 wiki_view_wiki = ""
 ;
-; wiki_view.php line: 139
+; wiki_view.php line: 143
 adminview_auto_logout_one_minute = ""
 ;
-; wiki_view.php line: 168
+; wiki_view.php line: 175
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 170
+; wiki_view.php line: 177
 wiki_view_create_edit = ""
 ;
-; wiki_view.php line: 171
+; wiki_view.php line: 178
 wiki_view_use_form_below = ""
 ;
-; wiki_view.php line: 183
+; wiki_view.php line: 190
 wiki_element_submit = ""
 ;
-; wiki_view.php line: 187
+; wiki_view.php line: 194
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 189
+; wiki_view.php line: 196
 wiki_view_signin_edit = ""
 ;
-; wiki_view.php line: 191
+; wiki_view.php line: 198
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 210
+; wiki_view.php line: 217
 wiki_element_history = ""
 ;
-; wiki_view.php line: 214
+; wiki_view.php line: 221
 wiki_element_discuss = ""
 ;
-; wiki_view.php line: 228
+; wiki_view.php line: 235
 wiki_element_locale_name = ""
 ;
-; wiki_view.php line: 232
+; wiki_view.php line: 239
 wiki_element_page = ""
 ;
-; wiki_view.php line: 240
+; wiki_view.php line: 247
+wiki_element_edit_reason = ""
+;
+; wiki_view.php line: 254
 wiki_element_savebutton = ""
 ;
-; wiki_view.php line: 294
+; wiki_view.php line: 314
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 295
+; wiki_view.php line: 315
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 300
+; wiki_view.php line: 320
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 303
+; wiki_view.php line: 323
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 309
+; wiki_view.php line: 329
 wiki_view_edited_by = ""
 ;
-; wiki_view.php line: 310
+; wiki_view.php line: 330
 wiki_view_page_len = ""
 ;
+; wiki_view.php line: 332
+wiki_view_revert = ""
+;
 ; /Applications/MAMP/htdocs/git/yioop//lib/indexing_plugins
 ;
 ; wordfilter_plugin.php line: 307
diff --git a/locale/it/configure.ini b/locale/it/configure.ini
index 226586079..d73535351 100755
--- a/locale/it/configure.ini
+++ b/locale/it/configure.ini
@@ -1011,19 +1011,34 @@ system_component_check_passed = "Controllo passato."
 ; system_component.php line: 1041
 system_component_using_local_config = "Usando configs/local_config.php la Cartella di Lavoro sopra potrebbe non funzionare."
 ;
-; group_controller.php line: 268
+; group_controller.php line: 272
 group_controller_missing_fields = ""
 ;
-; group_controller.php line: 276
+; group_controller.php line: 280
 group_controller_page_saved = ""
 ;
-; group_controller.php line: 304
+; group_controller.php line: 316
 group_controller_back = ""
 ;
-; group_controller.php line: 306
+; group_controller.php line: 317
 group_controller_history_page = ""
 ;
-; group_controller.php line: 336
+; group_controller.php line: 349
+group_controller_back = ""
+;
+; group_controller.php line: 350
+group_controller_diff_page = ""
+;
+; group_controller.php line: 362
+group_controller_page_revert_to = ""
+;
+; group_controller.php line: 366
+group_controller_page_reverted = ""
+;
+; group_controller.php line: 371
+group_controller_revert_error = ""
+;
+; group_controller.php line: 404
 group_controller_main = ""
 ;
 ; machine_controller.php line: 174
@@ -1789,37 +1804,37 @@ groupfeed_element_comment = ""
 ; groupfeed_element.php line: 221
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 294
+; groupfeed_element.php line: 295
 groupfeed_element_add_comment = ""
 ;
-; groupfeed_element.php line: 299
+; groupfeed_element.php line: 300
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 325
+; groupfeed_element.php line: 327
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 328
+; groupfeed_element.php line: 330
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 333
+; groupfeed_element.php line: 336
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 338
+; groupfeed_element.php line: 341
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 367
+; groupfeed_element.php line: 371
 groupfeed_element_edit_post = ""
 ;
-; groupfeed_element.php line: 370
+; groupfeed_element.php line: 374
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 375
+; groupfeed_element.php line: 379
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 381
+; groupfeed_element.php line: 385
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 410
+; groupfeed_element.php line: 414
 groupfeed_element_no_longer_update = ""
 ;
 ; machinelog_element.php line: 61
@@ -3270,69 +3285,75 @@ wiki_view_edit = ""
 ; wiki_view.php line: 78
 wiki_view_pages = ""
 ;
-; wiki_view.php line: 103
+; wiki_view.php line: 107
 wiki_view_feed = ""
 ;
-; wiki_view.php line: 104
+; wiki_view.php line: 108
 wiki_view_wiki = ""
 ;
-; wiki_view.php line: 139
+; wiki_view.php line: 143
 adminview_auto_logout_one_minute = "Fine Accesso in un minuto!!"
 ;
-; wiki_view.php line: 168
+; wiki_view.php line: 175
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 170
+; wiki_view.php line: 177
 wiki_view_create_edit = ""
 ;
-; wiki_view.php line: 171
+; wiki_view.php line: 178
 wiki_view_use_form_below = ""
 ;
-; wiki_view.php line: 183
+; wiki_view.php line: 190
 wiki_element_submit = ""
 ;
-; wiki_view.php line: 187
+; wiki_view.php line: 194
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 189
+; wiki_view.php line: 196
 wiki_view_signin_edit = ""
 ;
-; wiki_view.php line: 191
+; wiki_view.php line: 198
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 210
+; wiki_view.php line: 217
 wiki_element_history = ""
 ;
-; wiki_view.php line: 214
+; wiki_view.php line: 221
 wiki_element_discuss = ""
 ;
-; wiki_view.php line: 228
+; wiki_view.php line: 235
 wiki_element_locale_name = ""
 ;
-; wiki_view.php line: 232
+; wiki_view.php line: 239
 wiki_element_page = ""
 ;
-; wiki_view.php line: 240
+; wiki_view.php line: 247
+wiki_element_edit_reason = ""
+;
+; wiki_view.php line: 254
 wiki_element_savebutton = ""
 ;
-; wiki_view.php line: 294
+; wiki_view.php line: 314
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 295
+; wiki_view.php line: 315
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 300
+; wiki_view.php line: 320
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 303
+; wiki_view.php line: 323
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 309
+; wiki_view.php line: 329
 wiki_view_edited_by = ""
 ;
-; wiki_view.php line: 310
+; wiki_view.php line: 330
 wiki_view_page_len = ""
 ;
+; wiki_view.php line: 332
+wiki_view_revert = ""
+;
 ; /Applications/MAMP/htdocs/git/yioop//lib/indexing_plugins
 ;
 ; wordfilter_plugin.php line: 307
diff --git a/locale/ja/configure.ini b/locale/ja/configure.ini
index c616c2293..15bdf0ab3 100755
--- a/locale/ja/configure.ini
+++ b/locale/ja/configure.ini
@@ -1011,19 +1011,34 @@ system_component_check_passed = ""
 ; system_component.php line: 1041
 system_component_using_local_config = ""
 ;
-; group_controller.php line: 268
+; group_controller.php line: 272
 group_controller_missing_fields = ""
 ;
-; group_controller.php line: 276
+; group_controller.php line: 280
 group_controller_page_saved = ""
 ;
-; group_controller.php line: 304
+; group_controller.php line: 316
 group_controller_back = ""
 ;
-; group_controller.php line: 306
+; group_controller.php line: 317
 group_controller_history_page = ""
 ;
-; group_controller.php line: 336
+; group_controller.php line: 349
+group_controller_back = ""
+;
+; group_controller.php line: 350
+group_controller_diff_page = ""
+;
+; group_controller.php line: 362
+group_controller_page_revert_to = ""
+;
+; group_controller.php line: 366
+group_controller_page_reverted = ""
+;
+; group_controller.php line: 371
+group_controller_revert_error = ""
+;
+; group_controller.php line: 404
 group_controller_main = ""
 ;
 ; machine_controller.php line: 174
@@ -1789,37 +1804,37 @@ groupfeed_element_comment = ""
 ; groupfeed_element.php line: 221
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 294
+; groupfeed_element.php line: 295
 groupfeed_element_add_comment = ""
 ;
-; groupfeed_element.php line: 299
+; groupfeed_element.php line: 300
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 325
+; groupfeed_element.php line: 327
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 328
+; groupfeed_element.php line: 330
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 333
+; groupfeed_element.php line: 336
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 338
+; groupfeed_element.php line: 341
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 367
+; groupfeed_element.php line: 371
 groupfeed_element_edit_post = ""
 ;
-; groupfeed_element.php line: 370
+; groupfeed_element.php line: 374
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 375
+; groupfeed_element.php line: 379
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 381
+; groupfeed_element.php line: 385
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 410
+; groupfeed_element.php line: 414
 groupfeed_element_no_longer_update = ""
 ;
 ; machinelog_element.php line: 61
@@ -3270,69 +3285,75 @@ wiki_view_edit = ""
 ; wiki_view.php line: 78
 wiki_view_pages = ""
 ;
-; wiki_view.php line: 103
+; wiki_view.php line: 107
 wiki_view_feed = ""
 ;
-; wiki_view.php line: 104
+; wiki_view.php line: 108
 wiki_view_wiki = ""
 ;
-; wiki_view.php line: 139
+; wiki_view.php line: 143
 adminview_auto_logout_one_minute = "自動なログアウト一分ぐらい"
 ;
-; wiki_view.php line: 168
+; wiki_view.php line: 175
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 170
+; wiki_view.php line: 177
 wiki_view_create_edit = ""
 ;
-; wiki_view.php line: 171
+; wiki_view.php line: 178
 wiki_view_use_form_below = ""
 ;
-; wiki_view.php line: 183
+; wiki_view.php line: 190
 wiki_element_submit = ""
 ;
-; wiki_view.php line: 187
+; wiki_view.php line: 194
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 189
+; wiki_view.php line: 196
 wiki_view_signin_edit = ""
 ;
-; wiki_view.php line: 191
+; wiki_view.php line: 198
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 210
+; wiki_view.php line: 217
 wiki_element_history = ""
 ;
-; wiki_view.php line: 214
+; wiki_view.php line: 221
 wiki_element_discuss = ""
 ;
-; wiki_view.php line: 228
+; wiki_view.php line: 235
 wiki_element_locale_name = ""
 ;
-; wiki_view.php line: 232
+; wiki_view.php line: 239
 wiki_element_page = ""
 ;
-; wiki_view.php line: 240
+; wiki_view.php line: 247
+wiki_element_edit_reason = ""
+;
+; wiki_view.php line: 254
 wiki_element_savebutton = ""
 ;
-; wiki_view.php line: 294
+; wiki_view.php line: 314
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 295
+; wiki_view.php line: 315
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 300
+; wiki_view.php line: 320
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 303
+; wiki_view.php line: 323
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 309
+; wiki_view.php line: 329
 wiki_view_edited_by = ""
 ;
-; wiki_view.php line: 310
+; wiki_view.php line: 330
 wiki_view_page_len = ""
 ;
+; wiki_view.php line: 332
+wiki_view_revert = ""
+;
 ; /Applications/MAMP/htdocs/git/yioop//lib/indexing_plugins
 ;
 ; wordfilter_plugin.php line: 307
diff --git a/locale/kn/configure.ini b/locale/kn/configure.ini
index caf31f498..53bea9b60 100755
--- a/locale/kn/configure.ini
+++ b/locale/kn/configure.ini
@@ -1011,19 +1011,34 @@ system_component_check_passed = "ಪರಿಶೀಲನೆ ತೇರ್ಗಡೆ
 ; system_component.php line: 1041
 system_component_using_local_config = "configs/local_config.php ಉಪಯೋಗದಲ್ಲಿದೆ, ಅದರಿಂದ ಮೇಲಿನ ಕಾರ್ಯ ನಿರ್ದೇಶಿಕೆಯನ್ನು ಬದಲಾವಣೆ ನಿಷ್ಕ್ರಿಯವಾಗಬಹುದು "
 ;
-; group_controller.php line: 268
+; group_controller.php line: 272
 group_controller_missing_fields = ""
 ;
-; group_controller.php line: 276
+; group_controller.php line: 280
 group_controller_page_saved = ""
 ;
-; group_controller.php line: 304
+; group_controller.php line: 316
 group_controller_back = ""
 ;
-; group_controller.php line: 306
+; group_controller.php line: 317
 group_controller_history_page = ""
 ;
-; group_controller.php line: 336
+; group_controller.php line: 349
+group_controller_back = ""
+;
+; group_controller.php line: 350
+group_controller_diff_page = ""
+;
+; group_controller.php line: 362
+group_controller_page_revert_to = ""
+;
+; group_controller.php line: 366
+group_controller_page_reverted = ""
+;
+; group_controller.php line: 371
+group_controller_revert_error = ""
+;
+; group_controller.php line: 404
 group_controller_main = ""
 ;
 ; machine_controller.php line: 174
@@ -1789,37 +1804,37 @@ groupfeed_element_comment = ""
 ; groupfeed_element.php line: 221
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 294
+; groupfeed_element.php line: 295
 groupfeed_element_add_comment = ""
 ;
-; groupfeed_element.php line: 299
+; groupfeed_element.php line: 300
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 325
+; groupfeed_element.php line: 327
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 328
+; groupfeed_element.php line: 330
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 333
+; groupfeed_element.php line: 336
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 338
+; groupfeed_element.php line: 341
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 367
+; groupfeed_element.php line: 371
 groupfeed_element_edit_post = ""
 ;
-; groupfeed_element.php line: 370
+; groupfeed_element.php line: 374
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 375
+; groupfeed_element.php line: 379
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 381
+; groupfeed_element.php line: 385
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 410
+; groupfeed_element.php line: 414
 groupfeed_element_no_longer_update = ""
 ;
 ; machinelog_element.php line: 61
@@ -3270,69 +3285,75 @@ wiki_view_edit = ""
 ; wiki_view.php line: 78
 wiki_view_pages = ""
 ;
-; wiki_view.php line: 103
+; wiki_view.php line: 107
 wiki_view_feed = ""
 ;
-; wiki_view.php line: 104
+; wiki_view.php line: 108
 wiki_view_wiki = ""
 ;
-; wiki_view.php line: 139
+; wiki_view.php line: 143
 adminview_auto_logout_one_minute = ""
 ;
-; wiki_view.php line: 168
+; wiki_view.php line: 175
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 170
+; wiki_view.php line: 177
 wiki_view_create_edit = ""
 ;
-; wiki_view.php line: 171
+; wiki_view.php line: 178
 wiki_view_use_form_below = ""
 ;
-; wiki_view.php line: 183
+; wiki_view.php line: 190
 wiki_element_submit = ""
 ;
-; wiki_view.php line: 187
+; wiki_view.php line: 194
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 189
+; wiki_view.php line: 196
 wiki_view_signin_edit = ""
 ;
-; wiki_view.php line: 191
+; wiki_view.php line: 198
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 210
+; wiki_view.php line: 217
 wiki_element_history = ""
 ;
-; wiki_view.php line: 214
+; wiki_view.php line: 221
 wiki_element_discuss = ""
 ;
-; wiki_view.php line: 228
+; wiki_view.php line: 235
 wiki_element_locale_name = ""
 ;
-; wiki_view.php line: 232
+; wiki_view.php line: 239
 wiki_element_page = ""
 ;
-; wiki_view.php line: 240
+; wiki_view.php line: 247
+wiki_element_edit_reason = ""
+;
+; wiki_view.php line: 254
 wiki_element_savebutton = ""
 ;
-; wiki_view.php line: 294
+; wiki_view.php line: 314
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 295
+; wiki_view.php line: 315
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 300
+; wiki_view.php line: 320
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 303
+; wiki_view.php line: 323
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 309
+; wiki_view.php line: 329
 wiki_view_edited_by = ""
 ;
-; wiki_view.php line: 310
+; wiki_view.php line: 330
 wiki_view_page_len = ""
 ;
+; wiki_view.php line: 332
+wiki_view_revert = ""
+;
 ; /Applications/MAMP/htdocs/git/yioop//lib/indexing_plugins
 ;
 ; wordfilter_plugin.php line: 307
diff --git a/locale/ko/configure.ini b/locale/ko/configure.ini
index d10589e51..a97c42e00 100755
--- a/locale/ko/configure.ini
+++ b/locale/ko/configure.ini
@@ -1011,19 +1011,34 @@ system_component_check_passed = ""
 ; system_component.php line: 1041
 system_component_using_local_config = ""
 ;
-; group_controller.php line: 268
+; group_controller.php line: 272
 group_controller_missing_fields = ""
 ;
-; group_controller.php line: 276
+; group_controller.php line: 280
 group_controller_page_saved = ""
 ;
-; group_controller.php line: 304
+; group_controller.php line: 316
 group_controller_back = ""
 ;
-; group_controller.php line: 306
+; group_controller.php line: 317
 group_controller_history_page = ""
 ;
-; group_controller.php line: 336
+; group_controller.php line: 349
+group_controller_back = ""
+;
+; group_controller.php line: 350
+group_controller_diff_page = ""
+;
+; group_controller.php line: 362
+group_controller_page_revert_to = ""
+;
+; group_controller.php line: 366
+group_controller_page_reverted = ""
+;
+; group_controller.php line: 371
+group_controller_revert_error = ""
+;
+; group_controller.php line: 404
 group_controller_main = ""
 ;
 ; machine_controller.php line: 174
@@ -1789,37 +1804,37 @@ groupfeed_element_comment = ""
 ; groupfeed_element.php line: 221
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 294
+; groupfeed_element.php line: 295
 groupfeed_element_add_comment = ""
 ;
-; groupfeed_element.php line: 299
+; groupfeed_element.php line: 300
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 325
+; groupfeed_element.php line: 327
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 328
+; groupfeed_element.php line: 330
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 333
+; groupfeed_element.php line: 336
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 338
+; groupfeed_element.php line: 341
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 367
+; groupfeed_element.php line: 371
 groupfeed_element_edit_post = ""
 ;
-; groupfeed_element.php line: 370
+; groupfeed_element.php line: 374
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 375
+; groupfeed_element.php line: 379
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 381
+; groupfeed_element.php line: 385
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 410
+; groupfeed_element.php line: 414
 groupfeed_element_no_longer_update = ""
 ;
 ; machinelog_element.php line: 61
@@ -3270,69 +3285,75 @@ wiki_view_edit = ""
 ; wiki_view.php line: 78
 wiki_view_pages = ""
 ;
-; wiki_view.php line: 103
+; wiki_view.php line: 107
 wiki_view_feed = ""
 ;
-; wiki_view.php line: 104
+; wiki_view.php line: 108
 wiki_view_wiki = ""
 ;
-; wiki_view.php line: 139
+; wiki_view.php line: 143
 adminview_auto_logout_one_minute = "1 분내에 자동 로그 아웃 됍니다."
 ;
-; wiki_view.php line: 168
+; wiki_view.php line: 175
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 170
+; wiki_view.php line: 177
 wiki_view_create_edit = ""
 ;
-; wiki_view.php line: 171
+; wiki_view.php line: 178
 wiki_view_use_form_below = ""
 ;
-; wiki_view.php line: 183
+; wiki_view.php line: 190
 wiki_element_submit = ""
 ;
-; wiki_view.php line: 187
+; wiki_view.php line: 194
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 189
+; wiki_view.php line: 196
 wiki_view_signin_edit = ""
 ;
-; wiki_view.php line: 191
+; wiki_view.php line: 198
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 210
+; wiki_view.php line: 217
 wiki_element_history = ""
 ;
-; wiki_view.php line: 214
+; wiki_view.php line: 221
 wiki_element_discuss = ""
 ;
-; wiki_view.php line: 228
+; wiki_view.php line: 235
 wiki_element_locale_name = ""
 ;
-; wiki_view.php line: 232
+; wiki_view.php line: 239
 wiki_element_page = ""
 ;
-; wiki_view.php line: 240
+; wiki_view.php line: 247
+wiki_element_edit_reason = ""
+;
+; wiki_view.php line: 254
 wiki_element_savebutton = ""
 ;
-; wiki_view.php line: 294
+; wiki_view.php line: 314
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 295
+; wiki_view.php line: 315
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 300
+; wiki_view.php line: 320
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 303
+; wiki_view.php line: 323
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 309
+; wiki_view.php line: 329
 wiki_view_edited_by = ""
 ;
-; wiki_view.php line: 310
+; wiki_view.php line: 330
 wiki_view_page_len = ""
 ;
+; wiki_view.php line: 332
+wiki_view_revert = ""
+;
 ; /Applications/MAMP/htdocs/git/yioop//lib/indexing_plugins
 ;
 ; wordfilter_plugin.php line: 307
diff --git a/locale/pl/configure.ini b/locale/pl/configure.ini
index f67797ad8..7a58d0317 100755
--- a/locale/pl/configure.ini
+++ b/locale/pl/configure.ini
@@ -1011,19 +1011,34 @@ system_component_check_passed = ""
 ; system_component.php line: 1041
 system_component_using_local_config = ""
 ;
-; group_controller.php line: 268
+; group_controller.php line: 272
 group_controller_missing_fields = ""
 ;
-; group_controller.php line: 276
+; group_controller.php line: 280
 group_controller_page_saved = ""
 ;
-; group_controller.php line: 304
+; group_controller.php line: 316
 group_controller_back = ""
 ;
-; group_controller.php line: 306
+; group_controller.php line: 317
 group_controller_history_page = ""
 ;
-; group_controller.php line: 336
+; group_controller.php line: 349
+group_controller_back = ""
+;
+; group_controller.php line: 350
+group_controller_diff_page = ""
+;
+; group_controller.php line: 362
+group_controller_page_revert_to = ""
+;
+; group_controller.php line: 366
+group_controller_page_reverted = ""
+;
+; group_controller.php line: 371
+group_controller_revert_error = ""
+;
+; group_controller.php line: 404
 group_controller_main = ""
 ;
 ; machine_controller.php line: 174
@@ -1789,37 +1804,37 @@ groupfeed_element_comment = ""
 ; groupfeed_element.php line: 221
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 294
+; groupfeed_element.php line: 295
 groupfeed_element_add_comment = ""
 ;
-; groupfeed_element.php line: 299
+; groupfeed_element.php line: 300
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 325
+; groupfeed_element.php line: 327
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 328
+; groupfeed_element.php line: 330
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 333
+; groupfeed_element.php line: 336
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 338
+; groupfeed_element.php line: 341
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 367
+; groupfeed_element.php line: 371
 groupfeed_element_edit_post = ""
 ;
-; groupfeed_element.php line: 370
+; groupfeed_element.php line: 374
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 375
+; groupfeed_element.php line: 379
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 381
+; groupfeed_element.php line: 385
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 410
+; groupfeed_element.php line: 414
 groupfeed_element_no_longer_update = ""
 ;
 ; machinelog_element.php line: 61
@@ -3270,69 +3285,75 @@ wiki_view_edit = ""
 ; wiki_view.php line: 78
 wiki_view_pages = ""
 ;
-; wiki_view.php line: 103
+; wiki_view.php line: 107
 wiki_view_feed = ""
 ;
-; wiki_view.php line: 104
+; wiki_view.php line: 108
 wiki_view_wiki = ""
 ;
-; wiki_view.php line: 139
+; wiki_view.php line: 143
 adminview_auto_logout_one_minute = ""
 ;
-; wiki_view.php line: 168
+; wiki_view.php line: 175
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 170
+; wiki_view.php line: 177
 wiki_view_create_edit = ""
 ;
-; wiki_view.php line: 171
+; wiki_view.php line: 178
 wiki_view_use_form_below = ""
 ;
-; wiki_view.php line: 183
+; wiki_view.php line: 190
 wiki_element_submit = ""
 ;
-; wiki_view.php line: 187
+; wiki_view.php line: 194
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 189
+; wiki_view.php line: 196
 wiki_view_signin_edit = ""
 ;
-; wiki_view.php line: 191
+; wiki_view.php line: 198
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 210
+; wiki_view.php line: 217
 wiki_element_history = ""
 ;
-; wiki_view.php line: 214
+; wiki_view.php line: 221
 wiki_element_discuss = ""
 ;
-; wiki_view.php line: 228
+; wiki_view.php line: 235
 wiki_element_locale_name = ""
 ;
-; wiki_view.php line: 232
+; wiki_view.php line: 239
 wiki_element_page = ""
 ;
-; wiki_view.php line: 240
+; wiki_view.php line: 247
+wiki_element_edit_reason = ""
+;
+; wiki_view.php line: 254
 wiki_element_savebutton = ""
 ;
-; wiki_view.php line: 294
+; wiki_view.php line: 314
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 295
+; wiki_view.php line: 315
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 300
+; wiki_view.php line: 320
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 303
+; wiki_view.php line: 323
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 309
+; wiki_view.php line: 329
 wiki_view_edited_by = ""
 ;
-; wiki_view.php line: 310
+; wiki_view.php line: 330
 wiki_view_page_len = ""
 ;
+; wiki_view.php line: 332
+wiki_view_revert = ""
+;
 ; /Applications/MAMP/htdocs/git/yioop//lib/indexing_plugins
 ;
 ; wordfilter_plugin.php line: 307
diff --git a/locale/pt/configure.ini b/locale/pt/configure.ini
index 38a78644b..f73852d5c 100755
--- a/locale/pt/configure.ini
+++ b/locale/pt/configure.ini
@@ -1011,19 +1011,34 @@ system_component_check_passed = ""
 ; system_component.php line: 1041
 system_component_using_local_config = ""
 ;
-; group_controller.php line: 268
+; group_controller.php line: 272
 group_controller_missing_fields = ""
 ;
-; group_controller.php line: 276
+; group_controller.php line: 280
 group_controller_page_saved = ""
 ;
-; group_controller.php line: 304
+; group_controller.php line: 316
 group_controller_back = ""
 ;
-; group_controller.php line: 306
+; group_controller.php line: 317
 group_controller_history_page = ""
 ;
-; group_controller.php line: 336
+; group_controller.php line: 349
+group_controller_back = ""
+;
+; group_controller.php line: 350
+group_controller_diff_page = ""
+;
+; group_controller.php line: 362
+group_controller_page_revert_to = ""
+;
+; group_controller.php line: 366
+group_controller_page_reverted = ""
+;
+; group_controller.php line: 371
+group_controller_revert_error = ""
+;
+; group_controller.php line: 404
 group_controller_main = ""
 ;
 ; machine_controller.php line: 174
@@ -1789,37 +1804,37 @@ groupfeed_element_comment = ""
 ; groupfeed_element.php line: 221
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 294
+; groupfeed_element.php line: 295
 groupfeed_element_add_comment = ""
 ;
-; groupfeed_element.php line: 299
+; groupfeed_element.php line: 300
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 325
+; groupfeed_element.php line: 327
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 328
+; groupfeed_element.php line: 330
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 333
+; groupfeed_element.php line: 336
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 338
+; groupfeed_element.php line: 341
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 367
+; groupfeed_element.php line: 371
 groupfeed_element_edit_post = ""
 ;
-; groupfeed_element.php line: 370
+; groupfeed_element.php line: 374
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 375
+; groupfeed_element.php line: 379
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 381
+; groupfeed_element.php line: 385
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 410
+; groupfeed_element.php line: 414
 groupfeed_element_no_longer_update = ""
 ;
 ; machinelog_element.php line: 61
@@ -3270,69 +3285,75 @@ wiki_view_edit = ""
 ; wiki_view.php line: 78
 wiki_view_pages = ""
 ;
-; wiki_view.php line: 103
+; wiki_view.php line: 107
 wiki_view_feed = ""
 ;
-; wiki_view.php line: 104
+; wiki_view.php line: 108
 wiki_view_wiki = ""
 ;
-; wiki_view.php line: 139
+; wiki_view.php line: 143
 adminview_auto_logout_one_minute = ""
 ;
-; wiki_view.php line: 168
+; wiki_view.php line: 175
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 170
+; wiki_view.php line: 177
 wiki_view_create_edit = ""
 ;
-; wiki_view.php line: 171
+; wiki_view.php line: 178
 wiki_view_use_form_below = ""
 ;
-; wiki_view.php line: 183
+; wiki_view.php line: 190
 wiki_element_submit = ""
 ;
-; wiki_view.php line: 187
+; wiki_view.php line: 194
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 189
+; wiki_view.php line: 196
 wiki_view_signin_edit = ""
 ;
-; wiki_view.php line: 191
+; wiki_view.php line: 198
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 210
+; wiki_view.php line: 217
 wiki_element_history = ""
 ;
-; wiki_view.php line: 214
+; wiki_view.php line: 221
 wiki_element_discuss = ""
 ;
-; wiki_view.php line: 228
+; wiki_view.php line: 235
 wiki_element_locale_name = ""
 ;
-; wiki_view.php line: 232
+; wiki_view.php line: 239
 wiki_element_page = ""
 ;
-; wiki_view.php line: 240
+; wiki_view.php line: 247
+wiki_element_edit_reason = ""
+;
+; wiki_view.php line: 254
 wiki_element_savebutton = ""
 ;
-; wiki_view.php line: 294
+; wiki_view.php line: 314
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 295
+; wiki_view.php line: 315
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 300
+; wiki_view.php line: 320
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 303
+; wiki_view.php line: 323
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 309
+; wiki_view.php line: 329
 wiki_view_edited_by = ""
 ;
-; wiki_view.php line: 310
+; wiki_view.php line: 330
 wiki_view_page_len = ""
 ;
+; wiki_view.php line: 332
+wiki_view_revert = ""
+;
 ; /Applications/MAMP/htdocs/git/yioop//lib/indexing_plugins
 ;
 ; wordfilter_plugin.php line: 307
diff --git a/locale/ru/configure.ini b/locale/ru/configure.ini
index d249d3695..fb685cd80 100755
--- a/locale/ru/configure.ini
+++ b/locale/ru/configure.ini
@@ -1011,19 +1011,34 @@ system_component_check_passed = ""
 ; system_component.php line: 1041
 system_component_using_local_config = ""
 ;
-; group_controller.php line: 268
+; group_controller.php line: 272
 group_controller_missing_fields = ""
 ;
-; group_controller.php line: 276
+; group_controller.php line: 280
 group_controller_page_saved = ""
 ;
-; group_controller.php line: 304
+; group_controller.php line: 316
 group_controller_back = ""
 ;
-; group_controller.php line: 306
+; group_controller.php line: 317
 group_controller_history_page = ""
 ;
-; group_controller.php line: 336
+; group_controller.php line: 349
+group_controller_back = ""
+;
+; group_controller.php line: 350
+group_controller_diff_page = ""
+;
+; group_controller.php line: 362
+group_controller_page_revert_to = ""
+;
+; group_controller.php line: 366
+group_controller_page_reverted = ""
+;
+; group_controller.php line: 371
+group_controller_revert_error = ""
+;
+; group_controller.php line: 404
 group_controller_main = ""
 ;
 ; machine_controller.php line: 174
@@ -1789,37 +1804,37 @@ groupfeed_element_comment = ""
 ; groupfeed_element.php line: 221
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 294
+; groupfeed_element.php line: 295
 groupfeed_element_add_comment = ""
 ;
-; groupfeed_element.php line: 299
+; groupfeed_element.php line: 300
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 325
+; groupfeed_element.php line: 327
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 328
+; groupfeed_element.php line: 330
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 333
+; groupfeed_element.php line: 336
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 338
+; groupfeed_element.php line: 341
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 367
+; groupfeed_element.php line: 371
 groupfeed_element_edit_post = ""
 ;
-; groupfeed_element.php line: 370
+; groupfeed_element.php line: 374
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 375
+; groupfeed_element.php line: 379
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 381
+; groupfeed_element.php line: 385
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 410
+; groupfeed_element.php line: 414
 groupfeed_element_no_longer_update = ""
 ;
 ; machinelog_element.php line: 61
@@ -3270,69 +3285,75 @@ wiki_view_edit = ""
 ; wiki_view.php line: 78
 wiki_view_pages = ""
 ;
-; wiki_view.php line: 103
+; wiki_view.php line: 107
 wiki_view_feed = ""
 ;
-; wiki_view.php line: 104
+; wiki_view.php line: 108
 wiki_view_wiki = ""
 ;
-; wiki_view.php line: 139
+; wiki_view.php line: 143
 adminview_auto_logout_one_minute = ""
 ;
-; wiki_view.php line: 168
+; wiki_view.php line: 175
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 170
+; wiki_view.php line: 177
 wiki_view_create_edit = ""
 ;
-; wiki_view.php line: 171
+; wiki_view.php line: 178
 wiki_view_use_form_below = ""
 ;
-; wiki_view.php line: 183
+; wiki_view.php line: 190
 wiki_element_submit = ""
 ;
-; wiki_view.php line: 187
+; wiki_view.php line: 194
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 189
+; wiki_view.php line: 196
 wiki_view_signin_edit = ""
 ;
-; wiki_view.php line: 191
+; wiki_view.php line: 198
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 210
+; wiki_view.php line: 217
 wiki_element_history = ""
 ;
-; wiki_view.php line: 214
+; wiki_view.php line: 221
 wiki_element_discuss = ""
 ;
-; wiki_view.php line: 228
+; wiki_view.php line: 235
 wiki_element_locale_name = ""
 ;
-; wiki_view.php line: 232
+; wiki_view.php line: 239
 wiki_element_page = ""
 ;
-; wiki_view.php line: 240
+; wiki_view.php line: 247
+wiki_element_edit_reason = ""
+;
+; wiki_view.php line: 254
 wiki_element_savebutton = ""
 ;
-; wiki_view.php line: 294
+; wiki_view.php line: 314
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 295
+; wiki_view.php line: 315
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 300
+; wiki_view.php line: 320
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 303
+; wiki_view.php line: 323
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 309
+; wiki_view.php line: 329
 wiki_view_edited_by = ""
 ;
-; wiki_view.php line: 310
+; wiki_view.php line: 330
 wiki_view_page_len = ""
 ;
+; wiki_view.php line: 332
+wiki_view_revert = ""
+;
 ; /Applications/MAMP/htdocs/git/yioop//lib/indexing_plugins
 ;
 ; wordfilter_plugin.php line: 307
diff --git a/locale/te/configure.ini b/locale/te/configure.ini
index 089cdd696..10aefd17f 100755
--- a/locale/te/configure.ini
+++ b/locale/te/configure.ini
@@ -1011,19 +1011,34 @@ system_component_check_passed = ""
 ; system_component.php line: 1041
 system_component_using_local_config = ""
 ;
-; group_controller.php line: 268
+; group_controller.php line: 272
 group_controller_missing_fields = ""
 ;
-; group_controller.php line: 276
+; group_controller.php line: 280
 group_controller_page_saved = ""
 ;
-; group_controller.php line: 304
+; group_controller.php line: 316
 group_controller_back = ""
 ;
-; group_controller.php line: 306
+; group_controller.php line: 317
 group_controller_history_page = ""
 ;
-; group_controller.php line: 336
+; group_controller.php line: 349
+group_controller_back = ""
+;
+; group_controller.php line: 350
+group_controller_diff_page = ""
+;
+; group_controller.php line: 362
+group_controller_page_revert_to = ""
+;
+; group_controller.php line: 366
+group_controller_page_reverted = ""
+;
+; group_controller.php line: 371
+group_controller_revert_error = ""
+;
+; group_controller.php line: 404
 group_controller_main = ""
 ;
 ; machine_controller.php line: 174
@@ -1789,37 +1804,37 @@ groupfeed_element_comment = ""
 ; groupfeed_element.php line: 221
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 294
+; groupfeed_element.php line: 295
 groupfeed_element_add_comment = ""
 ;
-; groupfeed_element.php line: 299
+; groupfeed_element.php line: 300
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 325
+; groupfeed_element.php line: 327
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 328
+; groupfeed_element.php line: 330
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 333
+; groupfeed_element.php line: 336
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 338
+; groupfeed_element.php line: 341
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 367
+; groupfeed_element.php line: 371
 groupfeed_element_edit_post = ""
 ;
-; groupfeed_element.php line: 370
+; groupfeed_element.php line: 374
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 375
+; groupfeed_element.php line: 379
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 381
+; groupfeed_element.php line: 385
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 410
+; groupfeed_element.php line: 414
 groupfeed_element_no_longer_update = ""
 ;
 ; machinelog_element.php line: 61
@@ -3270,69 +3285,75 @@ wiki_view_edit = ""
 ; wiki_view.php line: 78
 wiki_view_pages = ""
 ;
-; wiki_view.php line: 103
+; wiki_view.php line: 107
 wiki_view_feed = ""
 ;
-; wiki_view.php line: 104
+; wiki_view.php line: 108
 wiki_view_wiki = ""
 ;
-; wiki_view.php line: 139
+; wiki_view.php line: 143
 adminview_auto_logout_one_minute = ""
 ;
-; wiki_view.php line: 168
+; wiki_view.php line: 175
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 170
+; wiki_view.php line: 177
 wiki_view_create_edit = ""
 ;
-; wiki_view.php line: 171
+; wiki_view.php line: 178
 wiki_view_use_form_below = ""
 ;
-; wiki_view.php line: 183
+; wiki_view.php line: 190
 wiki_element_submit = ""
 ;
-; wiki_view.php line: 187
+; wiki_view.php line: 194
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 189
+; wiki_view.php line: 196
 wiki_view_signin_edit = ""
 ;
-; wiki_view.php line: 191
+; wiki_view.php line: 198
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 210
+; wiki_view.php line: 217
 wiki_element_history = ""
 ;
-; wiki_view.php line: 214
+; wiki_view.php line: 221
 wiki_element_discuss = ""
 ;
-; wiki_view.php line: 228
+; wiki_view.php line: 235
 wiki_element_locale_name = ""
 ;
-; wiki_view.php line: 232
+; wiki_view.php line: 239
 wiki_element_page = ""
 ;
-; wiki_view.php line: 240
+; wiki_view.php line: 247
+wiki_element_edit_reason = ""
+;
+; wiki_view.php line: 254
 wiki_element_savebutton = ""
 ;
-; wiki_view.php line: 294
+; wiki_view.php line: 314
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 295
+; wiki_view.php line: 315
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 300
+; wiki_view.php line: 320
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 303
+; wiki_view.php line: 323
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 309
+; wiki_view.php line: 329
 wiki_view_edited_by = ""
 ;
-; wiki_view.php line: 310
+; wiki_view.php line: 330
 wiki_view_page_len = ""
 ;
+; wiki_view.php line: 332
+wiki_view_revert = ""
+;
 ; /Applications/MAMP/htdocs/git/yioop//lib/indexing_plugins
 ;
 ; wordfilter_plugin.php line: 307
diff --git a/locale/th/configure.ini b/locale/th/configure.ini
index 4b6eb2a83..d232bdf45 100755
--- a/locale/th/configure.ini
+++ b/locale/th/configure.ini
@@ -1011,19 +1011,34 @@ system_component_check_passed = ""
 ; system_component.php line: 1041
 system_component_using_local_config = ""
 ;
-; group_controller.php line: 268
+; group_controller.php line: 272
 group_controller_missing_fields = ""
 ;
-; group_controller.php line: 276
+; group_controller.php line: 280
 group_controller_page_saved = ""
 ;
-; group_controller.php line: 304
+; group_controller.php line: 316
 group_controller_back = ""
 ;
-; group_controller.php line: 306
+; group_controller.php line: 317
 group_controller_history_page = ""
 ;
-; group_controller.php line: 336
+; group_controller.php line: 349
+group_controller_back = ""
+;
+; group_controller.php line: 350
+group_controller_diff_page = ""
+;
+; group_controller.php line: 362
+group_controller_page_revert_to = ""
+;
+; group_controller.php line: 366
+group_controller_page_reverted = ""
+;
+; group_controller.php line: 371
+group_controller_revert_error = ""
+;
+; group_controller.php line: 404
 group_controller_main = ""
 ;
 ; machine_controller.php line: 174
@@ -1789,37 +1804,37 @@ groupfeed_element_comment = ""
 ; groupfeed_element.php line: 221
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 294
+; groupfeed_element.php line: 295
 groupfeed_element_add_comment = ""
 ;
-; groupfeed_element.php line: 299
+; groupfeed_element.php line: 300
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 325
+; groupfeed_element.php line: 327
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 328
+; groupfeed_element.php line: 330
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 333
+; groupfeed_element.php line: 336
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 338
+; groupfeed_element.php line: 341
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 367
+; groupfeed_element.php line: 371
 groupfeed_element_edit_post = ""
 ;
-; groupfeed_element.php line: 370
+; groupfeed_element.php line: 374
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 375
+; groupfeed_element.php line: 379
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 381
+; groupfeed_element.php line: 385
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 410
+; groupfeed_element.php line: 414
 groupfeed_element_no_longer_update = ""
 ;
 ; machinelog_element.php line: 61
@@ -3270,69 +3285,75 @@ wiki_view_edit = ""
 ; wiki_view.php line: 78
 wiki_view_pages = ""
 ;
-; wiki_view.php line: 103
+; wiki_view.php line: 107
 wiki_view_feed = ""
 ;
-; wiki_view.php line: 104
+; wiki_view.php line: 108
 wiki_view_wiki = ""
 ;
-; wiki_view.php line: 139
+; wiki_view.php line: 143
 adminview_auto_logout_one_minute = ""
 ;
-; wiki_view.php line: 168
+; wiki_view.php line: 175
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 170
+; wiki_view.php line: 177
 wiki_view_create_edit = ""
 ;
-; wiki_view.php line: 171
+; wiki_view.php line: 178
 wiki_view_use_form_below = ""
 ;
-; wiki_view.php line: 183
+; wiki_view.php line: 190
 wiki_element_submit = ""
 ;
-; wiki_view.php line: 187
+; wiki_view.php line: 194
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 189
+; wiki_view.php line: 196
 wiki_view_signin_edit = ""
 ;
-; wiki_view.php line: 191
+; wiki_view.php line: 198
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 210
+; wiki_view.php line: 217
 wiki_element_history = ""
 ;
-; wiki_view.php line: 214
+; wiki_view.php line: 221
 wiki_element_discuss = ""
 ;
-; wiki_view.php line: 228
+; wiki_view.php line: 235
 wiki_element_locale_name = ""
 ;
-; wiki_view.php line: 232
+; wiki_view.php line: 239
 wiki_element_page = ""
 ;
-; wiki_view.php line: 240
+; wiki_view.php line: 247
+wiki_element_edit_reason = ""
+;
+; wiki_view.php line: 254
 wiki_element_savebutton = ""
 ;
-; wiki_view.php line: 294
+; wiki_view.php line: 314
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 295
+; wiki_view.php line: 315
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 300
+; wiki_view.php line: 320
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 303
+; wiki_view.php line: 323
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 309
+; wiki_view.php line: 329
 wiki_view_edited_by = ""
 ;
-; wiki_view.php line: 310
+; wiki_view.php line: 330
 wiki_view_page_len = ""
 ;
+; wiki_view.php line: 332
+wiki_view_revert = ""
+;
 ; /Applications/MAMP/htdocs/git/yioop//lib/indexing_plugins
 ;
 ; wordfilter_plugin.php line: 307
diff --git a/locale/tr/configure.ini b/locale/tr/configure.ini
index 561a073b5..fba617ce2 100755
--- a/locale/tr/configure.ini
+++ b/locale/tr/configure.ini
@@ -1011,19 +1011,34 @@ system_component_check_passed = ""
 ; system_component.php line: 1041
 system_component_using_local_config = ""
 ;
-; group_controller.php line: 268
+; group_controller.php line: 272
 group_controller_missing_fields = ""
 ;
-; group_controller.php line: 276
+; group_controller.php line: 280
 group_controller_page_saved = ""
 ;
-; group_controller.php line: 304
+; group_controller.php line: 316
 group_controller_back = ""
 ;
-; group_controller.php line: 306
+; group_controller.php line: 317
 group_controller_history_page = ""
 ;
-; group_controller.php line: 336
+; group_controller.php line: 349
+group_controller_back = ""
+;
+; group_controller.php line: 350
+group_controller_diff_page = ""
+;
+; group_controller.php line: 362
+group_controller_page_revert_to = ""
+;
+; group_controller.php line: 366
+group_controller_page_reverted = ""
+;
+; group_controller.php line: 371
+group_controller_revert_error = ""
+;
+; group_controller.php line: 404
 group_controller_main = ""
 ;
 ; machine_controller.php line: 174
@@ -1789,37 +1804,37 @@ groupfeed_element_comment = ""
 ; groupfeed_element.php line: 221
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 294
+; groupfeed_element.php line: 295
 groupfeed_element_add_comment = ""
 ;
-; groupfeed_element.php line: 299
+; groupfeed_element.php line: 300
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 325
+; groupfeed_element.php line: 327
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 328
+; groupfeed_element.php line: 330
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 333
+; groupfeed_element.php line: 336
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 338
+; groupfeed_element.php line: 341
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 367
+; groupfeed_element.php line: 371
 groupfeed_element_edit_post = ""
 ;
-; groupfeed_element.php line: 370
+; groupfeed_element.php line: 374
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 375
+; groupfeed_element.php line: 379
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 381
+; groupfeed_element.php line: 385
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 410
+; groupfeed_element.php line: 414
 groupfeed_element_no_longer_update = ""
 ;
 ; machinelog_element.php line: 61
@@ -3270,69 +3285,75 @@ wiki_view_edit = ""
 ; wiki_view.php line: 78
 wiki_view_pages = ""
 ;
-; wiki_view.php line: 103
+; wiki_view.php line: 107
 wiki_view_feed = ""
 ;
-; wiki_view.php line: 104
+; wiki_view.php line: 108
 wiki_view_wiki = ""
 ;
-; wiki_view.php line: 139
+; wiki_view.php line: 143
 adminview_auto_logout_one_minute = ""
 ;
-; wiki_view.php line: 168
+; wiki_view.php line: 175
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 170
+; wiki_view.php line: 177
 wiki_view_create_edit = ""
 ;
-; wiki_view.php line: 171
+; wiki_view.php line: 178
 wiki_view_use_form_below = ""
 ;
-; wiki_view.php line: 183
+; wiki_view.php line: 190
 wiki_element_submit = ""
 ;
-; wiki_view.php line: 187
+; wiki_view.php line: 194
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 189
+; wiki_view.php line: 196
 wiki_view_signin_edit = ""
 ;
-; wiki_view.php line: 191
+; wiki_view.php line: 198
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 210
+; wiki_view.php line: 217
 wiki_element_history = ""
 ;
-; wiki_view.php line: 214
+; wiki_view.php line: 221
 wiki_element_discuss = ""
 ;
-; wiki_view.php line: 228
+; wiki_view.php line: 235
 wiki_element_locale_name = ""
 ;
-; wiki_view.php line: 232
+; wiki_view.php line: 239
 wiki_element_page = ""
 ;
-; wiki_view.php line: 240
+; wiki_view.php line: 247
+wiki_element_edit_reason = ""
+;
+; wiki_view.php line: 254
 wiki_element_savebutton = ""
 ;
-; wiki_view.php line: 294
+; wiki_view.php line: 314
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 295
+; wiki_view.php line: 315
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 300
+; wiki_view.php line: 320
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 303
+; wiki_view.php line: 323
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 309
+; wiki_view.php line: 329
 wiki_view_edited_by = ""
 ;
-; wiki_view.php line: 310
+; wiki_view.php line: 330
 wiki_view_page_len = ""
 ;
+; wiki_view.php line: 332
+wiki_view_revert = ""
+;
 ; /Applications/MAMP/htdocs/git/yioop//lib/indexing_plugins
 ;
 ; wordfilter_plugin.php line: 307
diff --git a/locale/vi-VN/configure.ini b/locale/vi-VN/configure.ini
index 46fbe0e4d..5e0402c97 100755
--- a/locale/vi-VN/configure.ini
+++ b/locale/vi-VN/configure.ini
@@ -1011,19 +1011,34 @@ system_component_check_passed = "Kiểm tra được th&ocirc;ng qua"
 ; system_component.php line: 1041
 system_component_using_local_config = ""
 ;
-; group_controller.php line: 268
+; group_controller.php line: 272
 group_controller_missing_fields = ""
 ;
-; group_controller.php line: 276
+; group_controller.php line: 280
 group_controller_page_saved = ""
 ;
-; group_controller.php line: 304
+; group_controller.php line: 316
 group_controller_back = ""
 ;
-; group_controller.php line: 306
+; group_controller.php line: 317
 group_controller_history_page = ""
 ;
-; group_controller.php line: 336
+; group_controller.php line: 349
+group_controller_back = ""
+;
+; group_controller.php line: 350
+group_controller_diff_page = ""
+;
+; group_controller.php line: 362
+group_controller_page_revert_to = ""
+;
+; group_controller.php line: 366
+group_controller_page_reverted = ""
+;
+; group_controller.php line: 371
+group_controller_revert_error = ""
+;
+; group_controller.php line: 404
 group_controller_main = ""
 ;
 ; machine_controller.php line: 174
@@ -1789,37 +1804,37 @@ groupfeed_element_comment = ""
 ; groupfeed_element.php line: 221
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 294
+; groupfeed_element.php line: 295
 groupfeed_element_add_comment = ""
 ;
-; groupfeed_element.php line: 299
+; groupfeed_element.php line: 300
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 325
+; groupfeed_element.php line: 327
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 328
+; groupfeed_element.php line: 330
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 333
+; groupfeed_element.php line: 336
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 338
+; groupfeed_element.php line: 341
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 367
+; groupfeed_element.php line: 371
 groupfeed_element_edit_post = ""
 ;
-; groupfeed_element.php line: 370
+; groupfeed_element.php line: 374
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 375
+; groupfeed_element.php line: 379
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 381
+; groupfeed_element.php line: 385
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 410
+; groupfeed_element.php line: 414
 groupfeed_element_no_longer_update = ""
 ;
 ; machinelog_element.php line: 61
@@ -3270,69 +3285,75 @@ wiki_view_edit = ""
 ; wiki_view.php line: 78
 wiki_view_pages = ""
 ;
-; wiki_view.php line: 103
+; wiki_view.php line: 107
 wiki_view_feed = ""
 ;
-; wiki_view.php line: 104
+; wiki_view.php line: 108
 wiki_view_wiki = ""
 ;
-; wiki_view.php line: 139
+; wiki_view.php line: 143
 adminview_auto_logout_one_minute = "Tự động tho&aacute;t trong một ph&uacute;t"
 ;
-; wiki_view.php line: 168
+; wiki_view.php line: 175
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 170
+; wiki_view.php line: 177
 wiki_view_create_edit = ""
 ;
-; wiki_view.php line: 171
+; wiki_view.php line: 178
 wiki_view_use_form_below = ""
 ;
-; wiki_view.php line: 183
+; wiki_view.php line: 190
 wiki_element_submit = ""
 ;
-; wiki_view.php line: 187
+; wiki_view.php line: 194
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 189
+; wiki_view.php line: 196
 wiki_view_signin_edit = ""
 ;
-; wiki_view.php line: 191
+; wiki_view.php line: 198
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 210
+; wiki_view.php line: 217
 wiki_element_history = ""
 ;
-; wiki_view.php line: 214
+; wiki_view.php line: 221
 wiki_element_discuss = ""
 ;
-; wiki_view.php line: 228
+; wiki_view.php line: 235
 wiki_element_locale_name = ""
 ;
-; wiki_view.php line: 232
+; wiki_view.php line: 239
 wiki_element_page = ""
 ;
-; wiki_view.php line: 240
+; wiki_view.php line: 247
+wiki_element_edit_reason = ""
+;
+; wiki_view.php line: 254
 wiki_element_savebutton = ""
 ;
-; wiki_view.php line: 294
+; wiki_view.php line: 314
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 295
+; wiki_view.php line: 315
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 300
+; wiki_view.php line: 320
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 303
+; wiki_view.php line: 323
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 309
+; wiki_view.php line: 329
 wiki_view_edited_by = ""
 ;
-; wiki_view.php line: 310
+; wiki_view.php line: 330
 wiki_view_page_len = ""
 ;
+; wiki_view.php line: 332
+wiki_view_revert = ""
+;
 ; /Applications/MAMP/htdocs/git/yioop//lib/indexing_plugins
 ;
 ; wordfilter_plugin.php line: 307
diff --git a/locale/zh-CN/configure.ini b/locale/zh-CN/configure.ini
index 1709c010b..8ebba3113 100755
--- a/locale/zh-CN/configure.ini
+++ b/locale/zh-CN/configure.ini
@@ -1011,19 +1011,34 @@ system_component_check_passed = "通過檢查"
 ; system_component.php line: 1041
 system_component_using_local_config = "使用當地語言"
 ;
-; group_controller.php line: 268
+; group_controller.php line: 272
 group_controller_missing_fields = ""
 ;
-; group_controller.php line: 276
+; group_controller.php line: 280
 group_controller_page_saved = ""
 ;
-; group_controller.php line: 304
+; group_controller.php line: 316
 group_controller_back = ""
 ;
-; group_controller.php line: 306
+; group_controller.php line: 317
 group_controller_history_page = ""
 ;
-; group_controller.php line: 336
+; group_controller.php line: 349
+group_controller_back = ""
+;
+; group_controller.php line: 350
+group_controller_diff_page = ""
+;
+; group_controller.php line: 362
+group_controller_page_revert_to = ""
+;
+; group_controller.php line: 366
+group_controller_page_reverted = ""
+;
+; group_controller.php line: 371
+group_controller_revert_error = ""
+;
+; group_controller.php line: 404
 group_controller_main = ""
 ;
 ; machine_controller.php line: 174
@@ -1789,37 +1804,37 @@ groupfeed_element_comment = ""
 ; groupfeed_element.php line: 221
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 294
+; groupfeed_element.php line: 295
 groupfeed_element_add_comment = ""
 ;
-; groupfeed_element.php line: 299
+; groupfeed_element.php line: 300
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 325
+; groupfeed_element.php line: 327
 groupfeed_element_start_thread = ""
 ;
-; groupfeed_element.php line: 328
+; groupfeed_element.php line: 330
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 333
+; groupfeed_element.php line: 336
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 338
+; groupfeed_element.php line: 341
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 367
+; groupfeed_element.php line: 371
 groupfeed_element_edit_post = ""
 ;
-; groupfeed_element.php line: 370
+; groupfeed_element.php line: 374
 groupfeed_element_subject = ""
 ;
-; groupfeed_element.php line: 375
+; groupfeed_element.php line: 379
 groupfeed_element_post = ""
 ;
-; groupfeed_element.php line: 381
+; groupfeed_element.php line: 385
 groupfeed_element_save = ""
 ;
-; groupfeed_element.php line: 410
+; groupfeed_element.php line: 414
 groupfeed_element_no_longer_update = ""
 ;
 ; machinelog_element.php line: 61
@@ -3270,69 +3285,75 @@ wiki_view_edit = ""
 ; wiki_view.php line: 78
 wiki_view_pages = ""
 ;
-; wiki_view.php line: 103
+; wiki_view.php line: 107
 wiki_view_feed = ""
 ;
-; wiki_view.php line: 104
+; wiki_view.php line: 108
 wiki_view_wiki = ""
 ;
-; wiki_view.php line: 139
+; wiki_view.php line: 143
 adminview_auto_logout_one_minute = ""
 ;
-; wiki_view.php line: 168
+; wiki_view.php line: 175
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 170
+; wiki_view.php line: 177
 wiki_view_create_edit = ""
 ;
-; wiki_view.php line: 171
+; wiki_view.php line: 178
 wiki_view_use_form_below = ""
 ;
-; wiki_view.php line: 183
+; wiki_view.php line: 190
 wiki_element_submit = ""
 ;
-; wiki_view.php line: 187
+; wiki_view.php line: 194
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 189
+; wiki_view.php line: 196
 wiki_view_signin_edit = ""
 ;
-; wiki_view.php line: 191
+; wiki_view.php line: 198
 wiki_view_page_no_exist = ""
 ;
-; wiki_view.php line: 210
+; wiki_view.php line: 217
 wiki_element_history = ""
 ;
-; wiki_view.php line: 214
+; wiki_view.php line: 221
 wiki_element_discuss = ""
 ;
-; wiki_view.php line: 228
+; wiki_view.php line: 235
 wiki_element_locale_name = ""
 ;
-; wiki_view.php line: 232
+; wiki_view.php line: 239
 wiki_element_page = ""
 ;
-; wiki_view.php line: 240
+; wiki_view.php line: 247
+wiki_element_edit_reason = ""
+;
+; wiki_view.php line: 254
 wiki_element_savebutton = ""
 ;
-; wiki_view.php line: 294
+; wiki_view.php line: 314
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 295
+; wiki_view.php line: 315
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 300
+; wiki_view.php line: 320
 wiki_view_diff_current = ""
 ;
-; wiki_view.php line: 303
+; wiki_view.php line: 323
 wiki_view_diff_next = ""
 ;
-; wiki_view.php line: 309
+; wiki_view.php line: 329
 wiki_view_edited_by = ""
 ;
-; wiki_view.php line: 310
+; wiki_view.php line: 330
 wiki_view_page_len = ""
 ;
+; wiki_view.php line: 332
+wiki_view_revert = ""
+;
 ; /Applications/MAMP/htdocs/git/yioop//lib/indexing_plugins
 ;
 ; wordfilter_plugin.php line: 307
diff --git a/models/blogpage_model.php b/models/blogpage_model.php
deleted file mode 100644
index cd37722e8..000000000
--- a/models/blogpage_model.php
+++ /dev/null
@@ -1,122 +0,0 @@
-<?php
-/**
- *  SeekQuarry/Yioop --
- *  Open Source Pure PHP Search Engine, Crawler, and Indexer
- *
- *  Copyright (C) 2009 - 2014  Chris Pollett chris@pollett.org
- *
- *  LICENSE:
- *
- *  This program is free software: you can redistribute it and/or modify
- *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation, either version 3 of the License, or
- *  (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful,
- *  but WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *  GNU General Public License for more details.
- *
- *  You should have received a copy of the GNU General Public License
- *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
- *
- *  END LICENSE
- *
- * @author Chris Pollett chris@pollett.org
- * @package seek_quarry
- * @subpackage model
- * @license http://www.gnu.org/licenses/ GPL3
- * @link http://www.seekquarry.com/
- * @copyright 2009 - 2014
- * @filesource
- */
-
-if(!defined('BASE_DIR')) {echo "BAD REQUEST"; exit();}
-
-/** Loads the base class */
-require_once BASE_DIR."/models/model.php";
-
-/** IndexShards used to store feed indexes*/
-require_once BASE_DIR."/lib/index_shard.php";
-
-/** For text manipulation of feeds*/
-require_once BASE_DIR."/lib/phrase_parser.php";
-/**
- * Used to manage data related to video, news, and other search sources
- * Also, used to manage data about available subsearches seen in SearchView
- *
- * @author Mallika Perepa (Creator), Chris Pollett (rewrite)
- * @package seek_quarry
- * @subpackage model
- */
-class BlogpageModel extends Model
-{
-    /**
-     * create a page and stores the file with .thtml extension
-     * in the user's work directory.
-     * @param string $title - title of the page
-     * @param string $description description of the page
-     * @param string $source_type whether it is a blog or a page
-     * @param string $language language of the page
-     * @param int $user id of the user
-     * @param int $select_group id of the group
-     * @return bool file input/output result
-     */
-    function addPage($title, $description, $source_type, $language, $user,
-        $select_group)
-    {
-        $timestamp = time();
-        $db = $this->db;
-
-        $sql = "INSERT INTO MEDIA_SOURCE(TIMESTAMP, NAME, TYPE,
-            LANGUAGE) VALUES (?, ?, ?, ?)";
-        $db->execute($sql, array($timestamp, $title,
-            $source_type, $language));
-
-        $sql = "INSERT INTO ACCESS (NAME, ID,TYPE) VALUES (?, ?,'user')";
-        $db->execute($sql, array($title, $user));
-
-        $sql = "INSERT INTO ACCESS( NAME, ID, TYPE) VALUES (?, ?, 'group')";
-        $db->execute($sql, array($title, $select_group));
-
-        $n = array();
-        $n[] = "title=$title";
-        $n[] = "";
-        $n[] = "description=$description";
-        $n[] = "END_HEAD_VARS";
-        $n[] = "<p>$description</p>";
-        $out = implode("\n", $n);
-        $path = LOCALE_DIR."/".DEFAULT_LOCALE."/pages/$title.thtml";
-        if(file_put_contents($path, $out) !== false) {
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Checks whether a page is accessible to a user
-     * @param int $user_id id of the logged in user
-     * @param string $title title of the page
-     * @return bool returns true if the page is accessible to the user or not
-     */
-    function isPageAccessible($user_id, $title)
-    {
-        if($user_id == ROOT_ID){
-            return true;
-        }
-        if($user_id == $_SERVER['REMOTE_ADDR']) {
-            $user_id = PUBLIC_USER_ID;
-        }
-        $sql = "SELECT USER_ID FROM USER_GROUP WHERE USER_ID =:user_id
-            AND GROUP_ID IN (SELECT ID FROM ACCESS WHERE NAME=".
-            ":title AND TYPE = 'group')";
-        if(($result = $this->db->execute($sql,
-            array(":user_id" => $user_id, ":title" => $title))) &&
-            ($row = $this->db->fetchArray($result))) {
-            return true;
-        }
-        $num_rows = 0;
-        return false;
-    }
-}
-?>
\ No newline at end of file
diff --git a/models/group_model.php b/models/group_model.php
index 851b641db..f80a12c66 100644
--- a/models/group_model.php
+++ b/models/group_model.php
@@ -549,15 +549,15 @@ class GroupModel extends Model
      *  @return int $id of item added
      */
     function addGroupItem($parent_id, $group_id, $user_id, $title,
-        $description)
+        $description, $type= STANDARD_GROUP_ITEM)
     {
         $db = $this->db;
         $join_date = time();
         $now = time();
         $sql = "INSERT INTO GROUP_ITEM (PARENT_ID, GROUP_ID, USER_ID, TITLE,
-            DESCRIPTION, PUBDATE) VALUES (?, ?, ?, ?, ?, ? )";
+            DESCRIPTION, PUBDATE, TYPE) VALUES (?, ?, ?, ?, ?, ?, ? )";
         $db->execute($sql, array($parent_id, $group_id, $user_id, $title,
-            $description, $now));
+            $description, $now, $type));
         $id = $db->insertID("GROUP_ITEM");
         if($parent_id == 0) {
             $sql = "UPDATE GROUP_ITEM SET PARENT_ID=? WHERE ID=?";
@@ -741,7 +741,8 @@ class GroupModel extends Model
     /**
      *
      */
-    function setPageName($user_id, $group_id, $page_name, $page, $locale_tag)
+    function setPageName($user_id, $group_id, $page_name, $page, $locale_tag,
+        $edit_comment = "")
     {
         $db = $this->db;
         $pubdate = time();
@@ -752,19 +753,19 @@ class GroupModel extends Model
             $result = $db->execute($sql, array($parsed_page, $page_id));
         } else {
             $discuss_thread = $this->addGroupItem(0, $group_id, $user_id,
-                "++".$page_name, "++".$page_name." ".date("r", $pubdate));
+                "++".$page_name, "++".$page_name." ".date("r", $pubdate),
+                WIKI_GROUP_ITEM);
             $sql = "INSERT INTO GROUP_PAGE (DISCUSS_THREAD, GROUP_ID,
                 TITLE, PAGE, LOCALE_TAG) VALUES (?, ?, ?, ?, ?)";
             $result = $db->execute($sql, array($discuss_thread, $group_id,
                 $page_name, $parsed_page, $locale_tag));
             $page_id = $db->insertID("GROUP_PAGE");
         }
-
         $sql = "INSERT INTO GROUP_PAGE_HISTORY (PAGE_ID, EDITOR_ID,
-            GROUP_ID, TITLE, PAGE, LOCALE_TAG, PUBDATE)
-            VALUES (?, ?, ?, ?, ?, ?, ?)";
+            GROUP_ID, TITLE, PAGE, LOCALE_TAG, PUBDATE, EDIT_COMMENT)
+            VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
         $result = $db->execute($sql, array($page_id, $user_id, $group_id,
-            $page_name, $page, $locale_tag, $pubdate));
+            $page_name, $page, $locale_tag, $pubdate, $edit_comment));
     }

     /**
@@ -841,21 +842,25 @@ class GroupModel extends Model
      *  @param string $limit
      *  @param string $num
      */
-    function getPageHistory($page_id, $limit, $num)
+    function getPageHistoryList($page_id, $limit, $num)
     {
         $db = $this->db;
-        $sql = "SELECT COUNT(*) AS TOTAL FROM GROUP_PAGE_HISTORY H, USERS U
+        $sql = "SELECT COUNT(*) AS TOTAL, MIN(H.TITLE) AS PAGE_NAME
+            FROM GROUP_PAGE_HISTORY H, USERS U
             WHERE H.PAGE_ID = ? AND
             U.USER_ID= H.EDITOR_ID";
+        $page_name = "";
         $result = $db->execute($sql, array($page_id));
         if($result) {
             $row = $db->fetchArray($result);
             $total = ($row) ? $row["TOTAL"] : 0;
+            $page_name = ($row) ? $row["PAGE_NAME"] : "";
         }
         $pages = array();
         if($total > 0) {
             $sql = "SELECT H.PUBDATE AS PUBDATE, U.USER_NAME AS USER_NAME,
-                LENGTH(H.PAGE) AS PAGE_LEN FROM GROUP_PAGE_HISTORY H, USERS U
+                LENGTH(H.PAGE) AS PAGE_LEN,
+                H.EDIT_COMMENT AS EDIT_REASON FROM GROUP_PAGE_HISTORY H, USERS U
                 WHERE H.PAGE_ID = ? AND
                 U.USER_ID= H.EDITOR_ID ORDER BY PUBDATE DESC ".
                 $db->limitOffset($limit, $num);
@@ -868,7 +873,7 @@ class GroupModel extends Model
                 unset($pages[$i]); //last one will be null
             }
         }
-        return array($total, $pages);
+        return array($total, $page_name, $pages);
     }

     /**
diff --git a/models/profile_model.php b/models/profile_model.php
index 2ce8b4b21..3019217fc 100755
--- a/models/profile_model.php
+++ b/models/profile_model.php
@@ -281,8 +281,6 @@ EOT;

         //create table statements (should be kept alphabetical)
         $create_statements = array(
-            "CREATE TABLE ACCESS (NAME VARCHAR(16), ID INTEGER,
-                TYPE VARCHAR(16))",
             "CREATE TABLE ACTIVE_FETCHER (NAME VARCHAR(16),FETCHER_ID INTEGER)",
             "CREATE INDEX AF_FETCHER_ID_INDEX ON
                  ACTIVE_FETCHER (FETCHER_ID)",
@@ -304,21 +302,29 @@ EOT;
             "CREATE TABLE GROUP_ITEM (ID $serial PRIMARY KEY $auto_increment,
                 PARENT_ID INTEGER, GROUP_ID INTEGER, USER_ID INTEGER,
                 TITLE VARCHAR(512), DESCRIPTION VARCHAR(".MAX_GROUP_POST_LEN."),
-                PUBDATE NUMERIC(11))",
+                PUBDATE NUMERIC(11), UPS INTEGER DEFAULT 0,
+                DOWNS INTEGER DEFAULT 0, TYPE INTEGER DEFAULT ".
+                STANDARD_GROUP_ITEM.")",
             "CREATE INDEX GI_GROUP_ID_INDEX ON GROUP_ITEM (GROUP_ID)",
             "CREATE INDEX GI_USER_ID_INDEX ON GROUP_ITEM (USER_ID)",
             "CREATE INDEX GI_PARENT_ID_INDEX ON GROUP_ITEM (PARENT_ID)",
+            "CREATE TABLE GROUP_ITEM_VOTE(USER_ID INTEGER, ITEM_ID INTEGER)",
             "CREATE TABLE GROUP_PAGE (ID $serial PRIMARY KEY $auto_increment,
                 GROUP_ID INTEGER, DISCUSS_THREAD INTEGER, TITLE VARCHAR(512),
-                PAGE VARCHAR(".MAX_GROUP_PAGE_LEN."), LOCALE_TAG VARCHAR(16))",
+                PAGE VARCHAR(".MAX_GROUP_PAGE_LEN."), LOCALE_TAG VARCHAR(16),
+                CONSTRAINT GID_TITLE_LOC UNIQUE(GROUP_ID, TITLE, LOCALE_TAG))",
+            "CREATE INDEX GP_ID_INDEX ON GROUP_PAGE
+                 (GROUP_ID, TITLE, LOCALE_TAG)",
             "CREATE TABLE GROUP_PAGE_HISTORY (PAGE_ID INTEGER,
                 GROUP_ID INTEGER, EDITOR_ID INTEGER, TITLE VARCHAR(512),
-                PAGE VARCHAR(".MAX_GROUP_PAGE_LEN."), LOCALE_TAG VARCHAR(16),
-                PUBDATE NUMERIC(11), PRIMARY KEY(PAGE_ID, PUBDATE))",
+                PAGE VARCHAR(".MAX_GROUP_PAGE_LEN."), EDIT_COMMENT VARCHAR(80),
+                LOCALE_TAG VARCHAR(16), PUBDATE NUMERIC(11),
+                PRIMARY KEY(PAGE_ID, PUBDATE))",
             "CREATE TABLE GROUPS (GROUP_ID $serial PRIMARY KEY $auto_increment,
                 GROUP_NAME VARCHAR(128), CREATED_TIME VARCHAR(20),
                 OWNER_ID INTEGER, REGISTER_TYPE INTEGER,
-                MEMBER_ACCESS INTEGER)",
+                MEMBER_ACCESS INTEGER, VOTE_ACCESS INTEGER DEFAULT ".
+                NON_VOTING_GROUP.")",
             /* NOTE: We are not using singular name GROUP for GROUPS as
                is a reserved SQL keyword
              */
@@ -361,7 +367,8 @@ EOT;
                 FIRST_NAME VARCHAR(16), LAST_NAME VARCHAR(16),
                 USER_NAME VARCHAR(16) UNIQUE, EMAIL VARCHAR(60),
                 PASSWORD CHAR(60), STATUS INTEGER, HASH CHAR(60),
-                CREATION_TIME VARCHAR(20))",
+                CREATION_TIME VARCHAR(20), UPS INTEGER DEFAULT 0,
+                DOWNS INTEGER DEFAULT 0)",
             "CREATE INDEX USRS_USER_NAME_INDEX ON USERS(USER_NAME)",
             "CREATE TABLE USER_GROUP (USER_ID INTEGER , GROUP_ID INTEGER,
                    STATUS INTEGER, JOIN_DATE NUMERIC(11),
diff --git a/views/elements/groupfeed_element.php b/views/elements/groupfeed_element.php
index 975ec02c4..6e1488345 100644
--- a/views/elements/groupfeed_element.php
+++ b/views/elements/groupfeed_element.php
@@ -282,7 +282,8 @@ class GroupfeedElement extends Element implements CrawlConstants
                 elt(id).innerHTML =
                     tmp +
                     '<form action="./" >' + <?php e($hidden_form); ?>
-                    '<input type="hidden" name="c" value="admin" />' +
+                    '<input type="hidden" name="c" value="<?php
+                        e($data['CONTROLLER']) ?>" />' +
                     '<input type="hidden" name="a" value="groupFeeds" />' +
                     '<input type="hidden" name="arg" value="addcomment" />' +
                     '<input type="hidden" name="parent_id" value="' +
@@ -315,7 +316,8 @@ class GroupfeedElement extends Element implements CrawlConstants
                 elt(id).innerHTML =
                     tmp +
                     '<form action="./" >' + <?php e($hidden_form); ?>
-                    '<input type="hidden" name="c" value="admin" />' +
+                    '<input type="hidden" name="c" value="<?php
+                        e($data['CONTROLLER']) ?>" />' +
                     '<input type="hidden" name="a" value="groupFeeds" />' +
                     '<input type="hidden" name="arg" value="newthread" />' +
                     '<input type="hidden" name="group_id" value="' +
@@ -328,7 +330,8 @@ class GroupfeedElement extends Element implements CrawlConstants
                     '<p><b><label for="title-'+ id +'" ><?php
                         e(tl("groupfeed_element_subject"));
                     ?></label></b></p>' +
-                    '<p><input type="text" name="title" value="" '+
+                    '<p><input type="text" id="title-'+ id +'" '+
+                    'name="title" value="" '+
                     ' maxlength="80" class="wide-field"/></p>' +
                     '<p><b><label for="description-'+ id +'" ><?php
                         e(tl("groupfeed_element_post"));
@@ -357,7 +360,8 @@ class GroupfeedElement extends Element implements CrawlConstants
                 elt(id).innerHTML =
                     tmp +
                     '<form action="./" >' +
-                    '<input type="hidden" name="c" value="admin" />' +
+                    '<input type="hidden" name="c" value="<?php
+                        e($data['CONTROLLER']) ?>" />' +
                     '<input type="hidden" name="a" value="groupFeeds" />' +
                     '<input type="hidden" name="arg" value="updatepost" />' +
                     '<input type="hidden" name="post_id" value="' +
diff --git a/views/wiki_view.php b/views/wiki_view.php
index 781d28bae..6113461c3 100644
--- a/views/wiki_view.php
+++ b/views/wiki_view.php
@@ -81,6 +81,10 @@ class WikiView extends View
             if($data["MODE"] == $name) { ?>
                 <li class="outer"><b><?php e($translation); ?></b></li>
                 <?php
+            } else if($data["MODE"] == "pages") { ?>
+                <li class="outer"><span class="gray"><?php e($translation);
+                ?></span></li>
+                <?php
             } else {
                 ?>
                 <li class="outer"><a href="<?php e($base_query .
@@ -158,6 +162,9 @@ class WikiView extends View
         }
     }

+    /**
+     * @param array $data
+     */
     function renderReadPage($data, $can_edit, $logged_in)
     {
         ?>
@@ -198,7 +205,7 @@ class WikiView extends View
     }

     /**
-     *
+     * @param array $data
      */
     function renderEditPageForm($data)
     {
@@ -236,6 +243,13 @@ class WikiView extends View
             <textarea class="tall-text-area" name="page" ><?php
                 e($data['PAGE']);
             ?></textarea>
+            <div class="top-margin">
+            <label for="edit-reason"><b><?php
+            e(tl('wiki_element_edit_reason'));
+            ?></b></label><input type="text" id='edit-reason'
+                name="edit_reason" value=""
+                maxlength="80" class="wide-field"/>
+            </div>
             <div class="top-margin center">
             <button class="button-box" type="submit"><?php
                 e(tl('wiki_element_savebutton')); ?></button>
@@ -246,7 +260,7 @@ class WikiView extends View
     }

     /**
-     *
+     * @param array $data
      */
     function renderPages($data)
     {
@@ -278,12 +292,13 @@ class WikiView extends View
     }

     /**
-     *
+     * @param array $data
      */
     function renderHistory($data)
     {
         ?>
         <div class="small-margin-current-activity">
+        <div>&nbsp;</div>
         <?php
         $time = time();
         $feed_helper = $this->helper("feeds");
@@ -314,7 +329,12 @@ class WikiView extends View
             e("<a href='$base_query&show={$item['PUBDATE']}'>".
                 date("r", $item["PUBDATE"])."</a>. ");
             e(tl("wiki_view_edited_by", $item["USER_NAME"]));
-            e(tl("wiki_view_page_len", $item["PAGE_LEN"]));
+            if(strlen($item["EDIT_REASON"]) > 0) {
+                e("<i>{$item["EDIT_REASON"]}</i>. ");
+            }
+            e(tl("wiki_view_page_len", $item["PAGE_LEN"])." ");
+            e("[<a href='$base_query&amp;revert=".$item['PUBDATE'].
+                "'>".tl("wiki_view_revert")."</a>].");
             $first = false;
             $next = $item['PUBDATE'];
             ?>
ViewGit