浏览代码

Added a helper to check for valid IDs. Error control in Ajax functions. Fixed an error preventing adding new teams.

Iñigo Valentin 6 年之前
父节点
当前提交
0d6faa3180
共有 100 个文件被更改,包括 231 次插入44 次删除
  1. 3 3
      application/Constant.php
  2. 2 1
      application/Controller.php
  3. 20 20
      application/action/new_team.php
  4. 4 4
      application/entity/Run.php
  5. 49 0
      application/helper/APPLICATION_Helper.php
  6. 2 2
      application/page/Catalog_Page.php
  7. 2 2
      application/page/Monsters_Page.php
  8. 7 7
      application/page/Teams_Page.php
  9. 1 1
      application/view/runs.php
  10. 33 4
      application/view/teams.php
  11. 0 0
      doc/classes/APP.html
  12. 108 0
      doc/classes/APPLICATION.html
  13. 0 0
      doc/classes/ARCHETYPE_ID.html
  14. 0 0
      doc/classes/AREA_TYPE_ID.html
  15. 0 0
      doc/classes/ARENA_RANKING_POINTS.html
  16. 0 0
      doc/classes/ARENA_RANKING_RANK.html
  17. 0 0
      doc/classes/BUILDING_ID.html
  18. 0 0
      doc/classes/Building.html
  19. 0 0
      doc/classes/CRAFT_ID.html
  20. 0 0
      doc/classes/Catalog_Page.html
  21. 0 0
      doc/classes/Controller.html
  22. 0 0
      doc/classes/Custom_Filter.html
  23. 0 0
      doc/classes/DB.html
  24. 0 0
      doc/classes/DECORATION_ID.html
  25. 0 0
      doc/classes/DIFFICULTY_ID.html
  26. 0 0
      doc/classes/DUNGEON_ID.html
  27. 0 0
      doc/classes/Decoration.html
  28. 0 0
      doc/classes/EFFECT_AREA_ID.html
  29. 0 0
      doc/classes/ELEMENTAL_RIFT_DUNGEON_ID.html
  30. 0 0
      doc/classes/ELEMENT_ID.html
  31. 0 0
      doc/classes/ENHANCE_MONSTER_ID.html
  32. 0 0
      doc/classes/Entity.html
  33. 0 0
      doc/classes/FILTER.html
  34. 0 0
      doc/classes/Fusion.html
  35. 0 0
      doc/classes/Fusion_Page.html
  36. 0 0
      doc/classes/GUILD_MEMBER_GRADE_ID.html
  37. 0 0
      doc/classes/Guild.html
  38. 0 0
      doc/classes/Guild_Member.html
  39. 0 0
      doc/classes/Guild_Page.html
  40. 0 0
      doc/classes/HTML.html
  41. 0 0
      doc/classes/Helper.html
  42. 0 0
      doc/classes/Home_Page.html
  43. 0 0
      doc/classes/INVENTORY_ID.html
  44. 0 0
      doc/classes/INVENTORY_TYPE_ID.html
  45. 0 0
      doc/classes/Inventory.html
  46. 0 0
      doc/classes/K_Area.html
  47. 0 0
      doc/classes/K_Building.html
  48. 0 0
      doc/classes/K_Decoration.html
  49. 0 0
      doc/classes/K_Effect.html
  50. 0 0
      doc/classes/K_Guild_Skill.html
  51. 0 0
      doc/classes/K_Guild_Skill_Group.html
  52. 0 0
      doc/classes/K_Leader_Skill.html
  53. 0 0
      doc/classes/K_Rune_Set.html
  54. 0 0
      doc/classes/K_Skill.html
  55. 0 0
      doc/classes/K_Skill_Level.html
  56. 0 0
      doc/classes/K_Source.html
  57. 0 0
      doc/classes/K_Unit.html
  58. 0 0
      doc/classes/K_Unit_Transformation.html
  59. 0 0
      doc/classes/LABYRINTH_STAGES_ID.html
  60. 0 0
      doc/classes/Landing_Page.html
  61. 0 0
      doc/classes/Monster_Fusion.html
  62. 0 0
      doc/classes/Monster_Info_Page.html
  63. 0 0
      doc/classes/Monster_Page.html
  64. 0 0
      doc/classes/Monsters_Page.html
  65. 0 0
      doc/classes/NET.html
  66. 0 0
      doc/classes/PATH.html
  67. 0 0
      doc/classes/Page.html
  68. 0 0
      doc/classes/Profile_Page.html
  69. 0 0
      doc/classes/QUALITY_ID.html
  70. 0 0
      doc/classes/RAID_RIFT_DUNGEON_ID.html
  71. 0 0
      doc/classes/RUNE_SET_ID.html
  72. 0 0
      doc/classes/RUNE_STAT_ID.html
  73. 0 0
      doc/classes/Report_Page.html
  74. 0 0
      doc/classes/Report_Runecraft_Page.html
  75. 0 0
      doc/classes/Report_Runeupgrade_Page.html
  76. 0 0
      doc/classes/Report_Skillup_Page.html
  77. 0 0
      doc/classes/Run.html
  78. 0 0
      doc/classes/Rune.html
  79. 0 0
      doc/classes/Rune_Craft.html
  80. 0 0
      doc/classes/Runes_Page.html
  81. 0 0
      doc/classes/Runs_Page.html
  82. 0 0
      doc/classes/SCENARIO_ID.html
  83. 0 0
      doc/classes/SOURCE_ID.html
  84. 0 0
      doc/classes/STAT_ID.html
  85. 0 0
      doc/classes/TEXT.html
  86. 0 0
      doc/classes/Team.html
  87. 0 0
      doc/classes/Teams_Page.html
  88. 0 0
      doc/classes/URL.html
  89. 0 0
      doc/classes/Unit.html
  90. 0 0
      doc/files/application.Constant.html
  91. 0 0
      doc/files/application.Controller.html
  92. 0 0
      doc/files/application.action.edit_profile.html
  93. 0 0
      doc/files/application.action.login.html
  94. 0 0
      doc/files/application.action.logout.html
  95. 0 0
      doc/files/application.action.new_team.html
  96. 0 0
      doc/files/application.action.save_run_team.html
  97. 0 0
      doc/files/application.config.html
  98. 0 0
      doc/files/application.entity.Building.html
  99. 0 0
      doc/files/application.entity.Custom_Filter.html
  100. 0 0
      doc/files/application.entity.Decoration.html

+ 3 - 3
application/Constant.php

@@ -22,17 +22,17 @@
         /**
          * Difficulty EASY (Scenario, TOA, Labyrinth).
          */
-        const NORMAL = 0;
+        const NORMAL = 1;
 
         /**
          * Difficulty EASY (Scenario, TOA, Labyrinth).
          */
-        const HARD = 0;
+        const HARD = 2;
 
         /**
          * Difficulty EASY (Scenario, Labyrinth).
          */
-        const HELL = 0;
+        const HELL = 3;
     };
 
     /**

+ 2 - 1
application/Controller.php

@@ -16,6 +16,7 @@
     require_once(PATH::HELPER . "TEXT_Helper.php");
     require_once(PATH::HELPER . "NET_Helper.php");
     require_once(PATH::HELPER . "HTML_Helper.php");
+    require_once(PATH::HELPER . "APPLICATION_Helper.php");
     require_once(__DIR__ . "/Constant.php");
 
     /**
@@ -46,7 +47,7 @@
         public function __construct($params){
 
             global $UID;
-            $page;
+            $page = null;
 
             session_start();
             $db = DB::start();

+ 20 - 20
application/action/new_team.php

@@ -48,21 +48,21 @@
             return -1;
         }
         switch ($area_type){
-            case AREA_TYPE::SCENARIO:
+            case AREA_TYPE_ID::SCENARIO:
                 if ($stage < 0 || $stage > 7){
                     return -31;
                 }
-                if (!($difficulty == 0 || property_exists(DIFFICULTY_ID, $difficulty) || $difficulty == DIFFICULTY::EASY)){
+                if (!($difficulty == 0 || APPLICATION::valid_id("DIFFICULTY_ID", $difficulty) || $difficulty == DIFFICULTY_ID::EASY)){
                     return -32;
                 }
                 if ($id_count < 1 || $id_count > 4){
                     return -33;
                 }
-                if (!property_exists(SCENARIO_ID, $area)){
+                if (!APPLICATION::valid_id("SCENARIO_ID", $area)){
                     return -34;
                 }
                 break;
-            case AREA_TYPE::CAIROS_DUNGEON:
+            case AREA_TYPE_ID::CAIROS_DUNGEON:
                 if ($stage < 0 || $stage > 10){
                     return -35;
                 }
@@ -70,21 +70,21 @@
                 if ($id_count < 1 || $id_count > 5){
                     return -36;
                 }
-                if (!property_exists(DUNGEON_ID, $area)){
+                if (!APPLICATION::valid_id("DUNGEON_ID", $area)){
                     return -37;
                 }
                 break;
-            case AREA_TYPE::RIFT_DUNGEON:
+            case AREA_TYPE_ID::RIFT_DUNGEON:
                 $stage = null;
                 $difficulty = null;
                 if ($id_count < 1 || $id_count > 6){
                     return -39;
                 }
-                if (!property_exists(ELEMENTAL_RIFT_DUNGEON_ID, $area)){
+                if (!APPLICATION::valid_id("ELEMENTAL_RIFT_DUNGEON_ID", $area)){
                     return -40;
                 }
                 break;
-            case AREA_TYPE::RIFT_RAID:
+            case AREA_TYPE_ID::RIFT_RAID:
                 if ($stage < 0 || $stage > 5){
                     return -41;
                 }
@@ -94,35 +94,35 @@
                 }
                 $area = null;
                 break;
-            case AREA_TYPE::ARENA:
+            case AREA_TYPE_ID::ARENA:
                 $area = null;
                 $stage = null;
                 $difficulty = null;
                 break;
-            case AREA_TYPE::GUILD_WAR:
+            case AREA_TYPE_ID::GUILD_WAR:
                 $area = null;
                 $stage = null;
                 $difficulty = null;
                 break;
-            case AREA_TYPE::GUILD_SIEGE:
+            case AREA_TYPE_ID::GUILD_SIEGE:
                 $area = null;
                 $stage = null;
                 $difficulty = null;
                 break;
-            case AREA_TYPE::TARTARUS_LABYRINTH:
+            case AREA_TYPE_ID::TARTARUS_LABYRINTH:
                 $stage = null;
-                if ($difficulty < 0 || !property_exists(DIFFICULTY_ID, $difficulty)){
+                if (!APPLICATION::valid_id("DIFFICULTY_ID", $difficulty)){
                     return -43;
                 }
                 if ($id_count < 1 || $id_count > 5){
                     return -44;
                 }
-                if (!property_exists(LABYRINTH_STAGES_ID, $area)){
+                if (!APPLICATION::valid_id("LABYRINTH_STAGES_ID", $area)){
                     return -45;
                 }
                 break;
-            case AREA_TYPE::TRIAL_OF_ASCENSION:
-                if ($difficulty != 0 && $difficulty != DIFFICULTY::NORMAL && $difficulty != DIFFICULTY::HARD){
+            case AREA_TYPE_ID::TRIAL_OF_ASCENSION:
+                if ($difficulty != 0 && $difficulty != DIFFICULTY_ID::NORMAL && $difficulty != DIFFICULTY_ID::HARD){
                     return -46;
                 }
                 $stage = null;
@@ -131,7 +131,7 @@
                 }
                 $area = null;
                 break;
-            case AREA_TYPE::DIMENSIONAL_HOLE:
+            case AREA_TYPE_ID::DIMENSIONAL_HOLE:
                 if ($stage < 0 || $stage > 5){
                     return -48;
                 }
@@ -139,12 +139,12 @@
                 if ($id_count < 1 || $id_count > 4){
                     return -49;
                 }
-                if (!property_exists(DUNGEON_ID, $area)){
+                if (!APPLICATION::valid_id("DUNGEON_ID", $area)){
                     return -50;
                 }
                 break;
-            case AREA_TYPE::DIMENSIONAL_RIFT:
-                if ($difficulty != 0 && $difficulty != DIFFICULTY::NORMAL && $difficulty != DIFFICULTY::HARD){
+            case AREA_TYPE_ID::DIMENSIONAL_RIFT:
+                if ($difficulty != 0 && $difficulty != DIFFICULTY_ID::NORMAL && $difficulty != DIFFICULTY_ID::HARD){
                     return -51;
                 }
                 $stage = null;

+ 4 - 4
application/entity/Run.php

@@ -162,16 +162,16 @@
             $this->uid = $r["uid"];
             $this->dtime = $r["dtime"];
             $type = 0;
-            if (property_exists(RAID_RIFT_DUNGEON_ID, $r["area"]) && $r["stage"] < 1){
+            if (APPLICATION::valid_id("RAID_RIFT_DUNGEON_ID", $r["area"]) && $r["stage"] < 1){
                 $type = AREA_TYPE::RIFT_RAID_DUNGEON;
             }
-            elseif (property_exists(SCENARIO_ID, $r["area"])){
+            elseif (APPLICATION::valid_id("SCENARIO_ID", $r["area"])){
                 $type = AREA_TYPE::SCENARIO;
             }
-            elseif (property_exists(ELEMENTAL_RIFT_DUNGEON_ID, $r["area"]) && $r["stage"] < 1){
+            elseif (APPLICATION::valid_id("ELEMENTAL_RIFT_DUNGEON_ID", $r["area"]) && $r["stage"] < 1){
                 $type = AREA_TYPE::ELEMENTAL_RIFT_DUNGEON;
             }
-            elseif (property_exists(DUNGEON_ID, $r["area"])){
+            elseif (APPLICATION::valid_id("DUNGEON_ID", $r["area"])){
                 $type = AREA_TYPE::CAIROS_DUNGEON;
             }
             $this->area = new K_Area($this->db, $r["area"], $type);

+ 49 - 0
application/helper/APPLICATION_Helper.php

@@ -0,0 +1,49 @@
+<?php
+    /**
+     * App helper file.
+     *
+     * Provides a helper to perform app related operations.
+     *
+     * @category Helper.
+     */
+
+    /**
+     * Require dependent files if not present.
+     */
+    require_once(PATH::HELPER . "Helper.php");
+
+    /**
+     * Application helper.
+     *
+     * Contains app-related utilities.
+     *
+     * @category Helper.
+     */
+    final class APPLICATION extends Helper{
+
+        /**
+         * Checks if a value is a valid one in a constant class.
+         *
+         * It will intentionally fail when used for a non constant class.
+         *
+         * @param string $class Name of the class.
+         * @param int $value Value to check.
+         * @return bool True if the value is defined, false otherwise.
+         */
+        public static function valid_id($class, $value){
+            if (strtoupper($class) != $class){
+                return false;
+            }
+            if (!class_exists($class, false)){
+                return false;
+            }
+            $reflect = new ReflectionClass($class);
+            if (in_array($value, $reflect->getConstants())){
+                return true;
+            }
+            else{
+                return false;
+            }
+        }
+    }
+?>

+ 2 - 2
application/page/Catalog_Page.php

@@ -53,7 +53,7 @@
          */
         private function parse_filters(){
             $this->filters = FILTER::CATALOG;
-            if (isset($_GET["element"]) && property_exists(ELEMENT_ID, strtoupper($_GET["element"]))){
+            if (isset($_GET["element"]) && APPLICATION::valid_id("ELEMENT_ID", strtoupper($_GET["element"]))){
                 $this->filters["ELEMENT"] = $_GET["element"];
             }
             if (isset($_GET["name"]) && strlen($_GET["name"]) > 0){
@@ -83,7 +83,7 @@
                   awakens_from IS NULL AND
                   natural_stars >= " . $this->filters["MIN_STARS"] . " AND 
                   natural_stars <= " . $this->filters["MAX_STARS"];
-            if(property_exists(ELEMENT_ID, $this->filters["ELEMENT"])){
+            if(APPLICATION::valid_id("ELEMENT_ID", $this->filters["ELEMENT"])){
                 $s = $s . " AND element = " . $this->filters["ELEMENT"] . " ";
             }
             if ($this->filters["NAME"] != ""){

+ 2 - 2
application/page/Monsters_Page.php

@@ -71,7 +71,7 @@
          */
         private function parse_filters(){
             $this->filters = FILTER::MONSTER;
-            if (isset($_GET["element"]) && property_exists(ELEMENT_ID, strtoupper($_GET["element"]))){
+            if (isset($_GET["element"]) && APPLICATION::valid_id("ELEMENT_ID", strtoupper($_GET["element"]))){
                 $this->filters["ELEMENT"] = $_GET["element"];
             }
             if (isset($_GET["name"]) && strlen($_GET["name"]) > 0){
@@ -111,7 +111,7 @@
                   unit.unit = k_unit.id AND 
                   stars >= " . $this->filters["MIN_STARS"] . " AND 
                   stars <= " . $this->filters["MAX_STARS"];
-            if (property_exists(ELEMENT_ID, $this->filters["ELEMENT"])){
+            if (APPLICATION::valid_id("ELEMENT_ID", $this->filters["ELEMENT"])){
                 $s = $s . " AND unit IN (SELECT id FROM k_unit WHERE element = " . $this->filters["ELEMENT"] . ") ";
             }
             if ($this->filters["NAME"] != ""){

+ 7 - 7
application/page/Teams_Page.php

@@ -69,11 +69,11 @@
          */
         private function parse_filters(){
             $this->filters = FILTER::TEAM;
-            if (isset($_GET["area"]) && property_exists(AREA_TYPE_ID, $_GET["area"])){
-                $this->filters["area"] = $_GET["area"];
+            if (isset($_GET["area"]) && APPLICATION::valid_id("AREA_TYPE_ID", $_GET["area"])){
+                $this->filters["AREA"] = $_GET["area"];
             }
             if (isset($_GET["name"]) && strlen($_GET["name"]) > 0){
-                $this->filters["name"] = SQLite3::escapeString($_GET["name"]);
+                $this->filters["NAME"] = SQLite3::escapeString($_GET["name"]);
             }
             return;
         }
@@ -92,11 +92,11 @@
               FROM team
               WHERE uid = '$UID'
             ";
-            if (property_exists(AREA_ID, $this->filters["area"])){
-                $s = $s . " AND area  = '" . strtoupper($this->filters["area"]) . "') ";
+            if (APPLICATION::valid_id("AREA_ID", $this->filters["AREA"])){
+                $s = $s . " AND area  = '" . strtoupper($this->filters["AREA"]) . "') ";
             }
-            if ($this->filters["name"] != ""){
-                $s = $s . " AND upper(name) LIKE '%" . strtoupper($this->filters["name"]) . "%' ";
+            if ($this->filters["NAME"] != ""){
+                $s = $s . " AND upper(name) LIKE '%" . strtoupper($this->filters["NAME"]) . "%' ";
             }
             return $s;
         }

+ 1 - 1
application/view/runs.php

@@ -152,7 +152,7 @@
                                         <span class='stage'><?=$run->stage?></span>
 <?php
                                     }
-                                    if(property_exists(SCENARIO_ID, $run->area->id)){
+                                    if(APPLICATION::valid_id("SCENARIO_ID", $run->area->id)){
 ?>
                                         <span class='difficulty'>
 <?php

+ 33 - 4
application/view/teams.php

@@ -140,8 +140,13 @@
                 var ids = selected_ids.join(',');
                 var xhttp = new XMLHttpRequest();
                 xhttp.onreadystatechange = function() {
-                    if (this.readyState == 4 && this.status == 200) {
-                        location.reload(); 
+                    if (this.readyState == 4){ 
+                        if (this.status == 200){
+                            location.reload(); 
+                        }
+                        else{
+                            showError('Error saving team. HTTP status ' + this.status)
+                        }
                     }
                 };
                 xhttp.open("POST", "/action/new_team/", true);
@@ -508,6 +513,21 @@
                     slid.style.transform = 'rotate(0deg)';
                 }
             };
+
+            /**
+             * Closes the error dialog.
+             */
+            function closeError(){
+                document.getElementById('error').style.display = 'none';
+            }
+
+            /**
+             * Opens the error dialog with theselected text.
+             */
+            function showError(text){
+                document.getElementById('error_msg').innerHTML = text;
+                document.getElementById('error').style.display = 'block';
+            }
         </script>
     </head>
     <body>
@@ -522,7 +542,6 @@
             <article id='filters_content'>
 <?php
                 $filters = $page->filters;
-                $custom_filters = $page->custom_filters;
                 include __DIR__ . "/inc/filter_teams.php";
 ?>
             </article>
@@ -608,7 +627,7 @@
                         <td class='new_title'>
                             Area
                         </td>
-                        <td class='new_values'>
+                        <td class='new_values' id='new_values_area'>
                             <select id='new_area_type' name='new_area_type' onChange='selectNewAreaType();'>
                                 <option value=''> </option>
                                 <option value='<?=AREA_TYPE_ID::SCENARIO?>'>Scenario</option>
@@ -728,5 +747,15 @@
                 </table>
             </article>
         </section>
+        <section id='error'>
+            <h2>
+                Teams
+            </h2>
+            <article>
+                <p id='error_msg'>
+                </p>
+                <input type='button' onclick='closeError();'>
+            </article>
+        </section>
     </body>
 </html>

文件差异内容过多而无法显示
+ 0 - 0
doc/classes/APP.html


文件差异内容过多而无法显示
+ 108 - 0
doc/classes/APPLICATION.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/ARCHETYPE_ID.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/AREA_TYPE_ID.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/ARENA_RANKING_POINTS.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/ARENA_RANKING_RANK.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/BUILDING_ID.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Building.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/CRAFT_ID.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Catalog_Page.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Controller.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Custom_Filter.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/DB.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/DECORATION_ID.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/DIFFICULTY_ID.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/DUNGEON_ID.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Decoration.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/EFFECT_AREA_ID.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/ELEMENTAL_RIFT_DUNGEON_ID.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/ELEMENT_ID.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/ENHANCE_MONSTER_ID.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Entity.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/FILTER.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Fusion.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Fusion_Page.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/GUILD_MEMBER_GRADE_ID.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Guild.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Guild_Member.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Guild_Page.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/HTML.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Helper.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Home_Page.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/INVENTORY_ID.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/INVENTORY_TYPE_ID.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Inventory.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/K_Area.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/K_Building.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/K_Decoration.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/K_Effect.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/K_Guild_Skill.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/K_Guild_Skill_Group.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/K_Leader_Skill.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/K_Rune_Set.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/K_Skill.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/K_Skill_Level.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/K_Source.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/K_Unit.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/K_Unit_Transformation.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/LABYRINTH_STAGES_ID.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Landing_Page.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Monster_Fusion.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Monster_Info_Page.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Monster_Page.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Monsters_Page.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/NET.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/PATH.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Page.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Profile_Page.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/QUALITY_ID.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/RAID_RIFT_DUNGEON_ID.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/RUNE_SET_ID.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/RUNE_STAT_ID.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Report_Page.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Report_Runecraft_Page.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Report_Runeupgrade_Page.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Report_Skillup_Page.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Run.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Rune.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Rune_Craft.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Runes_Page.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Runs_Page.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/SCENARIO_ID.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/SOURCE_ID.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/STAT_ID.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/TEXT.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Team.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Teams_Page.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/URL.html


文件差异内容过多而无法显示
+ 0 - 0
doc/classes/Unit.html


文件差异内容过多而无法显示
+ 0 - 0
doc/files/application.Constant.html


文件差异内容过多而无法显示
+ 0 - 0
doc/files/application.Controller.html


文件差异内容过多而无法显示
+ 0 - 0
doc/files/application.action.edit_profile.html


文件差异内容过多而无法显示
+ 0 - 0
doc/files/application.action.login.html


文件差异内容过多而无法显示
+ 0 - 0
doc/files/application.action.logout.html


文件差异内容过多而无法显示
+ 0 - 0
doc/files/application.action.new_team.html


文件差异内容过多而无法显示
+ 0 - 0
doc/files/application.action.save_run_team.html


文件差异内容过多而无法显示
+ 0 - 0
doc/files/application.config.html


文件差异内容过多而无法显示
+ 0 - 0
doc/files/application.entity.Building.html


文件差异内容过多而无法显示
+ 0 - 0
doc/files/application.entity.Custom_Filter.html


文件差异内容过多而无法显示
+ 0 - 0
doc/files/application.entity.Decoration.html


部分文件因为文件数量过多而无法显示