From ce417893a2b78dfa501552fed06b527101f84b38 Mon Sep 17 00:00:00 2001
From: Julian Dehne <julian.dehne@uni-potsdam.de>
Date: Tue, 27 Mar 2018 15:48:52 +0200
Subject: [PATCH] closes #16

---
 .gitignore                          |   1 +
 .idea/workspace.xml                 |  86 +++++++-------
 studentview/assets/js/newProject.js | 170 +++++++++++++++-------------
 studentview/pages/newproject.php    |   3 +
 4 files changed, 144 insertions(+), 116 deletions(-)

diff --git a/.gitignore b/.gitignore
index 714c58ca..e846d2b4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,3 +12,4 @@
 /.idea/workspace.xml
 /fltrail.iml
 /.idea/workspace.xml
+/.idea/workspace.xml
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 0c15c9cb..f90df392 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -78,11 +78,31 @@
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="overview.js" pinned="false" current-in-tab="true">
+      <file leaf-file-name="overview.js" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/studentview/assets/js/overview.js">
           <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="0.5232163">
-              <caret line="21" column="75" selection-start-line="21" selection-start-column="75" selection-end-line="21" selection-end-column="75" />
+            <state vertical-scroll-proportion="0.0">
+              <caret line="20" column="36" selection-start-line="20" selection-start-column="36" selection-end-line="20" selection-end-column="36" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="newproject.php" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/studentview/pages/newproject.php">
+          <provider selected="true" editor-type-id="text-editor">
+            <state vertical-scroll-proportion="-13.4838705">
+              <caret line="61" column="69" selection-start-line="61" selection-start-column="57" selection-end-line="61" selection-end-column="69" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="newProject.js" pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/studentview/assets/js/newProject.js">
+          <provider selected="true" editor-type-id="text-editor">
+            <state vertical-scroll-proportion="0.69762176">
+              <caret line="40" column="35" selection-start-line="40" selection-start-column="35" selection-end-line="40" selection-end-column="35" />
               <folding />
             </state>
           </provider>
@@ -158,18 +178,6 @@
           </provider>
         </entry>
       </file>
-      <file leaf-file-name="getAdresses.php" pinned="false" current-in-tab="false">
-        <entry file="file://$PROJECT_DIR$/studentview/database/getAdresses.php">
-          <provider selected="true" editor-type-id="text-editor">
-            <state vertical-scroll-proportion="-0.0">
-              <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
-              <folding>
-                <marker date="1522074655851" expanded="true" signature="588:731" placeholder="SELECT name,... users" />
-              </folding>
-            </state>
-          </provider>
-        </entry>
-      </file>
       <file leaf-file-name="getTags.php" pinned="false" current-in-tab="false">
         <entry file="file://$PROJECT_DIR$/studentview/database/getTags.php">
           <provider selected="true" editor-type-id="text-editor">
@@ -197,10 +205,10 @@
         <option value="$PROJECT_DIR$/studentview/database/getProjects.php" />
         <option value="dbtable:/fc3764cf/14340c2c-ac4b-492f-ac4f-18c0853598a8/fltrail.projects" />
         <option value="$PROJECT_DIR$/studentview/pages/projects.php" />
-        <option value="$PROJECT_DIR$/studentview/assets/js/newProject.js" />
-        <option value="$PROJECT_DIR$/studentview/pages/newproject.php" />
         <option value="$PROJECT_DIR$/studentview/database/getProjectsOfAuthor.php" />
         <option value="$PROJECT_DIR$/studentview/assets/js/overview.js" />
+        <option value="$PROJECT_DIR$/studentview/pages/newproject.php" />
+        <option value="$PROJECT_DIR$/studentview/assets/js/newProject.js" />
       </list>
     </option>
   </component>
@@ -886,12 +894,12 @@
       <created>1522142632208</created>
       <option name="number" value="Default" />
       <updated>1522142632208</updated>
-      <workItem from="1522142635858" duration="10726000" />
+      <workItem from="1522142635858" duration="14802000" />
     </task>
     <servers />
   </component>
   <component name="TimeTrackingManager">
-    <option name="totallyTimeSpent" value="10726000" />
+    <option name="totallyTimeSpent" value="14802000" />
   </component>
   <component name="ToolWindowManager">
     <frame x="-9" y="-9" width="2578" height="1410" extended-state="6" />
@@ -1057,24 +1065,6 @@
         </state>
       </provider>
     </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/pages/newproject.php">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="15.096774">
-          <caret line="35" column="6" selection-start-line="35" selection-start-column="6" selection-end-line="35" selection-end-column="6" />
-          <folding>
-            <element signature="n#style#0;n#button#0;n#div#8;n#div#1;n#div#1;n#body#0;n#html#0;n#!!top" expanded="true" />
-          </folding>
-        </state>
-      </provider>
-    </entry>
-    <entry file="file://$PROJECT_DIR$/studentview/assets/js/newProject.js">
-      <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.0">
-          <caret line="61" column="55" selection-start-line="61" selection-start-column="55" selection-end-line="61" selection-end-column="55" />
-          <folding />
-        </state>
-      </provider>
-    </entry>
     <entry file="file://$PROJECT_DIR$/studentview/assets/js/Customizable-Carousel-swipe-enabled.js">
       <provider selected="true" editor-type-id="text-editor">
         <state vertical-scroll-proportion="0.0">
@@ -1096,7 +1086,7 @@
         <state vertical-scroll-proportion="0.0">
           <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
           <folding>
-            <element signature="n#!!doc" expanded="true" />
+            <element signature="n#!!doc" expanded="false" />
           </folding>
         </state>
       </provider>
@@ -1236,8 +1226,24 @@
     </entry>
     <entry file="file://$PROJECT_DIR$/studentview/assets/js/overview.js">
       <provider selected="true" editor-type-id="text-editor">
-        <state vertical-scroll-proportion="0.5232163">
-          <caret line="21" column="75" selection-start-line="21" selection-start-column="75" selection-end-line="21" selection-end-column="75" />
+        <state vertical-scroll-proportion="0.0">
+          <caret line="20" column="36" selection-start-line="20" selection-start-column="36" selection-end-line="20" selection-end-column="36" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/studentview/pages/newproject.php">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="-13.4838705">
+          <caret line="61" column="69" selection-start-line="61" selection-start-column="57" selection-end-line="61" selection-end-column="69" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/studentview/assets/js/newProject.js">
+      <provider selected="true" editor-type-id="text-editor">
+        <state vertical-scroll-proportion="0.69762176">
+          <caret line="40" column="35" selection-start-line="40" selection-start-column="35" selection-end-line="40" selection-end-column="35" />
           <folding />
         </state>
       </provider>
diff --git a/studentview/assets/js/newProject.js b/studentview/assets/js/newProject.js
index 002173be..70b6d45f 100644
--- a/studentview/assets/js/newProject.js
+++ b/studentview/assets/js/newProject.js
@@ -7,6 +7,7 @@ $(document).ready(function () {
     $('#projectNameExists').hide();
     $('#projectIsMissing').hide();
     $('#exactNumberOfTags').hide();
+    $('#specialChars').hide();
     $(function () {
         $('#tagsProject').tagsInput({
             width: '475px',
@@ -22,12 +23,31 @@ $(document).ready(function () {
         var activ = "1";
         createNewProject(allTheTags, activ);
     });
+
+
 });
 
 
 function createNewProject(allTheTags, activ) {
+    $("#nameProject").focus();
+    $('#projectNameExists').hide();
+    $('#projectIsMissing').hide();
+    $('#exactNumberOfTags').hide();
+    $('#specialChars').hide();
+
     var projectName = $("#nameProject").val().trim();
     var password = $("#passwordProject").val().trim();
+
+    var reguexp = /^[a-zA-Z0-9]+$/;
+    if (!reguexp.test(projectName)) {
+        $('#specialChars').show();
+        return false;
+    }
+    if (projectName === "") {           //project has no name, so abort function
+        $('#projectIsMissing').show();
+        return false;
+    }
+
     document.getElementById('loader').className = "loader";
     document.getElementById('wrapper').className = "wrapper-inactive";
     var localurl = "../database/getProjects.php?project=" + projectName;
@@ -36,89 +56,87 @@ function createNewProject(allTheTags, activ) {
     } else {
         document.getElementById('tagHelper').className = "";
     }
-    if (projectName === "") {           //project has no name, so abort function
-        $('#projectIsMissing').show();
-        return false;
-    } else {
-        $('#projectIsMissing').hide();
-        $.ajax({                        //check local DB for existence of projectName
-            url: localurl,
-            projectName: projectName,
-            activ: activ,
-            Accept: "text/plain; charset=utf-8",
-            contentType: "text/plain",
-            success: function (response) {
-                if (response !== "project missing") {
-                    $('#projectNameExists').show();
+
+
+    $('#projectIsMissing').hide();
+    $.ajax({                        //check local DB for existence of projectName
+        url: localurl,
+        projectName: projectName,
+        activ: activ,
+        Accept: "text/plain; charset=utf-8",
+        contentType: "text/plain",
+        success: function (response) {
+            if (response !== "project missing") {
+                $('#projectNameExists').show();
+                document.getElementById('loader').className = "loader-inactive";
+                document.getElementById('wrapper').className = "wrapper";
+                return true;
+            } else {
+                $('#projectNameExists').hide();
+                if (allTheTags.length !== 5) {
+                    document.getElementById('tagHelper').className = "alert alert-warning";
                     document.getElementById('loader').className = "loader-inactive";
                     document.getElementById('wrapper').className = "wrapper";
-                    return true;
-                } else {
-                    $('#projectNameExists').hide();
-                    if (allTheTags.length !== 5) {
-                        document.getElementById('tagHelper').className = "alert alert-warning";
+                    $('#exactNumberOfTags').show();
+                    return false;
+                }
+                document.getElementById('tagHelper').className = "";
+                var obj = {
+                    "courseId": projectName,
+                    "printableName": projectName,
+                    "competences": allTheTags
+                };
+                var url = "https://esb.uni-potsdam.de:8243/services/competenceBase/api1/courses/" + $("#nameProject").val();
+                var dataString = JSON.stringify(obj);
+                var addProjectNeo4j = $.ajax({
+                    url: url,
+                    contentType: 'application/json',
+                    activ: activ,
+                    type: 'PUT',
+                    data: dataString,
+                    success: function (response) {
+                        console.log(response);
                         document.getElementById('loader').className = "loader-inactive";
                         document.getElementById('wrapper').className = "wrapper";
-                        $('#exactNumberOfTags').show();
-                        return false;
-                    }
-                    document.getElementById('tagHelper').className = "";
-                    var obj = {
-                        "courseId": projectName,
-                        "printableName": projectName,
-                        "competences": allTheTags
-                    };
-                    var url = "https://esb.uni-potsdam.de:8243/services/competenceBase/api1/courses/" + $("#nameProject").val();
-                    var dataString = JSON.stringify(obj);
-                    var addProjectNeo4j = $.ajax({
-                        url: url,
-                        contentType: 'application/json',
-                        activ: activ,
-                        type: 'PUT',
-                        data: dataString,
-                        success: function (response) {
-                            console.log(response);
-                            document.getElementById('loader').className = "loader-inactive";
-                            document.getElementById('wrapper').className = "wrapper";
-                        },
-                        error: function (a, b, c) {
-                            console.log(a);
-                            document.getElementById('loader').className = "loader-inactive";
-                            document.getElementById('wrapper').className = "wrapper";
-                            return false;
-                        }
-                    });
-                    $.when(addProjectNeo4j, addProjectToLocalDB(allTheTags, projectName, password, activ)).done(function () {
+                    },
+                    error: function (a, b, c) {
+                        console.log(a);
                         document.getElementById('loader').className = "loader-inactive";
                         document.getElementById('wrapper').className = "wrapper";
-                        if ($('#Teilnehmer').prop("checked")) {          //if author wants to join the course, he needs to be redirected to preferences.php
-                            var url = "../database/getProjects.php?project=" + projectName + "&password=" + document.getElementById('passwordProject').value;
-                            $.ajax({
-                                url: url,
-                                projectName: projectName,
-                                Accept: "text/plain; charset=utf-8",
-                                contentType: "text/plain",
-                                success: function (response) {
-                                    location.href = "preferences.php?token=" + getUserTokenFromUrl() + "&projectToken=" + response;
-                                },
-                                error: function (a, b, c) {
-                                    console.log(a);
-                                }
-                            });
-                        } else {                //if author is just author and not member, he will be directed to projects.php
-                            location.href = "projects.php?token=" + getUserTokenFromUrl();
-                        }
-                    });
-                }
-            },
-            error: function (a, b, c) {
-                console.log(a);
-                document.getElementById('loader').className = "loader-inactive";
-                document.getElementById('wrapper').className = "wrapper";
-                return true;
+                        return false;
+                    }
+                });
+                $.when(addProjectNeo4j, addProjectToLocalDB(allTheTags, projectName, password, activ)).done(function () {
+                    document.getElementById('loader').className = "loader-inactive";
+                    document.getElementById('wrapper').className = "wrapper";
+                    if ($('#Teilnehmer').prop("checked")) {          //if author wants to join the course, he needs to be redirected to preferences.php
+                        var url = "../database/getProjects.php?project=" + projectName + "&password=" + document.getElementById('passwordProject').value;
+                        $.ajax({
+                            url: url,
+                            projectName: projectName,
+                            Accept: "text/plain; charset=utf-8",
+                            contentType: "text/plain",
+                            success: function (response) {
+                                location.href = "preferences.php?token=" + getUserTokenFromUrl() + "&projectToken=" + response;
+                            },
+                            error: function (a, b, c) {
+                                console.log(a);
+                            }
+                        });
+                    } else {                //if author is just author and not member, he will be directed to projects.php
+                        location.href = "projects.php?token=" + getUserTokenFromUrl();
+                    }
+                });
             }
-        });
-    }
+        },
+        error: function (a, b, c) {
+            console.log(a);
+            document.getElementById('loader').className = "loader-inactive";
+            document.getElementById('wrapper').className = "wrapper";
+            return true;
+        }
+    });
+
 }
 
 function addProjectToLocalDB(allTheTags, projectName, password, activ) {
diff --git a/studentview/pages/newproject.php b/studentview/pages/newproject.php
index 3fe08313..cc219ce3 100644
--- a/studentview/pages/newproject.php
+++ b/studentview/pages/newproject.php
@@ -59,6 +59,9 @@ include_once '../database/tokenSetter.php';
         <div class="alert alert-danger" role="alert" id="exactNumberOfTags">
             Es müssen genau 5 Tags eingegeben werden.
         </div>
+        <div class="alert alert-danger" role="alert" id="specialChars">
+            Der Projektname darf keine Sonderzeichen enthalten.
+        </div>
         <div class="alert alert-danger" role="alert" id="projectIsMissing">
             Tragen sie einen Projektnamen ein.
         </div>
-- 
GitLab