Brendan Abolivier 9 лет назад
Родитель
Сommit
90bc8d33ea
42 измененных файлов: 697 добавлений и 241 удалений
  1. Двоичные данные
      Notice d'utilisation.pdf
  2. 0
    0
      admin/.htaccess
  3. 0
    0
      admin/controllers/data.php
  4. 2
    4
      admin/controllers/document.php
  5. 10
    0
      admin/controllers/login.php
  6. 47
    0
      admin/controllers/promo.php
  7. 1
    2
      admin/index.php
  8. 0
    0
      admin/lib/bootstrap.min.css
  9. 0
    0
      admin/lib/bootstrap.min.js
  10. 0
    0
      admin/lib/fonts/glyphicons-halflings-regular.eot
  11. 0
    0
      admin/lib/fonts/glyphicons-halflings-regular.svg
  12. 0
    0
      admin/lib/fonts/glyphicons-halflings-regular.ttf
  13. 0
    0
      admin/lib/fonts/glyphicons-halflings-regular.woff
  14. 0
    0
      admin/lib/fonts/glyphicons-halflings-regular.woff2
  15. 4
    0
      admin/lib/jquery-2.1.4.min.js
  16. 2
    0
      admin/lib/jquery.tablesorter.min.js
  17. 0
    0
      admin/lib/limonade.php
  18. 0
    0
      admin/lib/limonade/abstract.php
  19. 0
    0
      admin/lib/limonade/assertions.php
  20. 0
    0
      admin/lib/limonade/public/css/screen.css
  21. 0
    0
      admin/lib/limonade/public/img/bg_header.png
  22. 0
    0
      admin/lib/limonade/tests.php
  23. 0
    0
      admin/lib/limonade/views/_debug.html.php
  24. 0
    0
      admin/lib/limonade/views/_notices.html.php
  25. 0
    0
      admin/lib/limonade/views/default_layout.php
  26. 0
    0
      admin/lib/limonade/views/error.html.php
  27. 258
    0
      admin/lib/platypuce.js
  28. 0
    0
      admin/models/connector.class.php
  29. 3
    0
      admin/models/data.class.php
  30. 22
    12
      admin/models/document.class.php
  31. 1
    0
      admin/models/promo.class.php
  32. 0
    0
      admin/views/home.html.php
  33. 53
    0
      admin/views/layout.html.php
  34. 37
    12
      admin/views/list.html.php
  35. 0
    0
      admin/views/login.html.php
  36. 0
    29
      controllers/login.php
  37. 0
    32
      controllers/promo.php
  38. 111
    0
      database.sql
  39. 0
    108
      lib/platypuce.js
  40. 72
    0
      readme.md
  41. 74
    0
      readme.txt
  42. 0
    42
      views/layout.html.php

Двоичные данные
Notice d'utilisation.pdf Просмотреть файл


.htaccess → admin/.htaccess Просмотреть файл


controllers/data.php → admin/controllers/data.php Просмотреть файл


controllers/document.php → admin/controllers/document.php Просмотреть файл

@@ -14,15 +14,13 @@ function document()
14 14
 
15 15
 function add_document()
16 16
 {
17
-    $filePath = Document::addDocument($_FILES["document"], [
17
+    $infos = Document::addDocument($_FILES["document"], [
18 18
         "rang" => $_POST["rang"],
19 19
         "promo" => $_POST["promo"],
20 20
         "libelle" => $_POST["libelle"]
21 21
     ]);
22 22
 
23
-    json_encode(array(
24
-        "path" => $filePath
25
-    ));
23
+    echo json_encode($infos);
26 24
 }
27 25
 
28 26
 function alter_document($documentid)

+ 10
- 0
admin/controllers/login.php Просмотреть файл

@@ -0,0 +1,10 @@
1
+<?php
2
+
3
+require_once(dirname(__DIR__)."/controllers/data.php");
4
+require_once(dirname(__DIR__)."/models/data.class.php");
5
+require_once(dirname(__DIR__)."/../DbIds.php");
6
+
7
+function redirect_data()
8
+{
9
+    header("Location: data");
10
+}

+ 47
- 0
admin/controllers/promo.php Просмотреть файл

@@ -0,0 +1,47 @@
1
+<?php
2
+
3
+require_once(dirname(__DIR__)."/models/promo.class.php");
4
+
5
+function promo()
6
+{
7
+    set("title", "Promotions");
8
+    set("data", Promo::getAll());
9
+    
10
+    return html("list.html.php", "layout.html.php");
11
+}
12
+
13
+function add_promo()
14
+{
15
+    Promo::addPromo([
16
+        "id" => $_POST["id"],
17
+        "libelle" => $_POST["libelle"]
18
+    ]);
19
+}
20
+
21
+function alter_promo($promoid)
22
+{
23
+    $promo = new Promo($promoid);
24
+
25
+    // We'll need to parse the PUT body to get our arguments
26
+    $params = file_get_contents("php://input", "r");
27
+
28
+    $putParams = array();
29
+
30
+    while(preg_match("/&/", $params))
31
+    {
32
+        $param = strstr($params, "&", true);
33
+        $params = substr(strstr($params, "&"), 1);
34
+        $putParams[strstr($param, "=", true)] = substr(strstr($param, "="), 1);
35
+    }
36
+    // We need it one more time for the last argument
37
+    $param = $params;
38
+    $putParams[strstr($param, "=", true)] = substr(strstr($param, "="), 1);
39
+    
40
+    $promo->setLibelle($putParams["libelle"]);
41
+    $promo->write();
42
+}
43
+
44
+function delete_promo($promoid)
45
+{
46
+    (new Promo($promoid))->erase();
47
+}

index.php → admin/index.php Просмотреть файл

@@ -2,13 +2,12 @@
2 2
 
3 3
 require_once("lib/limonade.php");
4 4
 
5
-dispatch_get("/",                       "login");
5
+dispatch_get("/",                       "redirect_data");
6 6
 dispatch_get("/data",                   "data");
7 7
 dispatch_get("/data/extract",           "data_extract");
8 8
 dispatch_get("/document",               "document");
9 9
 dispatch_get("/promo",                  "promo");
10 10
 
11
-dispatch_post("/",                      "check_login");
12 11
 dispatch_post("/document",              "add_document");
13 12
 dispatch_post("/promo",                 "add_promo");
14 13
 

lib/bootstrap.min.css → admin/lib/bootstrap.min.css Просмотреть файл


lib/bootstrap.min.js → admin/lib/bootstrap.min.js Просмотреть файл


lib/fonts/glyphicons-halflings-regular.eot → admin/lib/fonts/glyphicons-halflings-regular.eot Просмотреть файл


lib/fonts/glyphicons-halflings-regular.svg → admin/lib/fonts/glyphicons-halflings-regular.svg Просмотреть файл


lib/fonts/glyphicons-halflings-regular.ttf → admin/lib/fonts/glyphicons-halflings-regular.ttf Просмотреть файл


lib/fonts/glyphicons-halflings-regular.woff → admin/lib/fonts/glyphicons-halflings-regular.woff Просмотреть файл


lib/fonts/glyphicons-halflings-regular.woff2 → admin/lib/fonts/glyphicons-halflings-regular.woff2 Просмотреть файл


+ 4
- 0
admin/lib/jquery-2.1.4.min.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


+ 2
- 0
admin/lib/jquery.tablesorter.min.js
Разница между файлами не показана из-за своего большого размера
Просмотреть файл


lib/limonade.php → admin/lib/limonade.php Просмотреть файл


lib/limonade/abstract.php → admin/lib/limonade/abstract.php Просмотреть файл


lib/limonade/assertions.php → admin/lib/limonade/assertions.php Просмотреть файл


lib/limonade/public/css/screen.css → admin/lib/limonade/public/css/screen.css Просмотреть файл


lib/limonade/public/img/bg_header.png → admin/lib/limonade/public/img/bg_header.png Просмотреть файл


lib/limonade/tests.php → admin/lib/limonade/tests.php Просмотреть файл


lib/limonade/views/_debug.html.php → admin/lib/limonade/views/_debug.html.php Просмотреть файл


lib/limonade/views/_notices.html.php → admin/lib/limonade/views/_notices.html.php Просмотреть файл


lib/limonade/views/default_layout.php → admin/lib/limonade/views/default_layout.php Просмотреть файл


lib/limonade/views/error.html.php → admin/lib/limonade/views/error.html.php Просмотреть файл


+ 258
- 0
admin/lib/platypuce.js Просмотреть файл

@@ -0,0 +1,258 @@
1
+function checkPromoId(promoid)
2
+{
3
+    return promoid.match(/A[1-5]/) != null;
4
+}
5
+
6
+function editRow() {
7
+    var row = $(this).parent().parent();
8
+    switch ($("title").html()) {
9
+        case "Documents":
10
+            var rang = $(row.children()[0]);
11
+            var promo = $(row.children()[1]);
12
+            var rangValeur = rang.html();
13
+            var promoValeur = $(promo[0]).attr("class");
14
+            var promos = $("#promo").children();
15
+            var str = '<select class="tempPromos">';
16
+            var selected = "";
17
+
18
+            rang.html('<input type="number" value="' + rangValeur + '" size="2" style="width:35px" />');
19
+            $(promo[0]).removeClass(promoValeur);
20
+            for (var i = 0; i < promos.length; i++) {
21
+                if (promos[i].value === promoValeur) {
22
+                    selected = "selected";
23
+                }
24
+                else {
25
+                    selected = "";
26
+                }
27
+                str += '<option value="' + promos[i].value + '" ' + selected + '>' + promos[i].text + '</option>';
28
+            }
29
+            str += "</select>";
30
+            promo.html(str);
31
+            $(this).addClass("fa-check");
32
+            $(this).removeClass("fa-pencil");
33
+            $(this).off("click");
34
+            $(this).on("click", function () {
35
+                rangValeur = $(rang.children()[0]).val();
36
+                rang.html(rangValeur);
37
+                promoValeur = promo.children().val();
38
+                promo.addClass(promoValeur);
39
+                var promoName = "";
40
+                for (var i = 0; i < promos.length; i++) {
41
+                    if (promos[i].value === promoValeur) {
42
+                        promoName = promos[i].text;
43
+                    }
44
+                }
45
+                promo.html(promoName);
46
+                $(this).addClass("fa-pencil");
47
+                $(this).removeClass("fa-check");
48
+                $.ajax({
49
+                    method: "PUT",
50
+                    url: "document/" + row[0].id,
51
+                    data: "rang=" + rangValeur + "&promo=" + promoValeur,
52
+                    processData: false,
53
+                    contentType: false
54
+                });
55
+                $(this).off("click");
56
+                $(this).on("click", editRow);
57
+            });
58
+            break;
59
+        case "Promotions":
60
+            var promoName = $(row.children()[1]);
61
+            var name = $(promoName[0]).text();
62
+            $(promoName).html(
63
+                '<input type="text" value="'+name+'" style="width: 400px" />'
64
+            );
65
+            $(this).addClass("fa-check");
66
+            $(this).removeClass("fa-pencil");
67
+            $(this).off("click");
68
+            $(this).on("click", function () {
69
+                name = $(promoName.children()[0]).val();
70
+                $(promoName).html(name);
71
+                $(this).addClass("fa-pencil");
72
+                $(this).removeClass("fa-check");
73
+                $.ajax({
74
+                    method: "PUT",
75
+                    url: "promo/" + row[0].id,
76
+                    data: "libelle=" + name,
77
+                    processData: false,
78
+                    contentType: false
79
+                });
80
+                $(this).off("click");
81
+                $(this).on("click", editRow);
82
+            });
83
+            break;
84
+    }
85
+}
86
+
87
+$('.fa-pencil').on("click", editRow);
88
+
89
+$('.fa-trash-o').on("click", function () {
90
+    var row = $(this).parent().parent();
91
+    var url = "";
92
+    switch($("title").html())
93
+    {
94
+        case "Documents":
95
+            url = "document/"+row[0].id;
96
+            break;
97
+        case "Promotions":
98
+            url = "promo/"+row[0].id;
99
+    }
100
+    $.ajax({
101
+        method: "DELETE",
102
+        url: url,
103
+        processData: false,
104
+        contentType: false
105
+    });
106
+    row.remove();
107
+});
108
+
109
+$('#addForm').submit(function(e) {
110
+    e.preventDefault();
111
+    var data = new FormData();
112
+
113
+    switch ($("title").html())
114
+    {
115
+        case "Documents":
116
+            $("#helpBlock2").remove();
117
+            $(".has-error").removeClass("has-error");
118
+            if (!$("#rang").val().length)
119
+            {
120
+                var block = $("#rang").parent();
121
+                block.addClass("has-error");
122
+                block.html(block.html()+'<span id="helpBlock2" class="help-block">Vous devez spécifier un rang.</span>');
123
+            }
124
+            else if (!$("#libelle").val().length)
125
+            {
126
+                var block = $("#libelle").parent();
127
+                block.addClass("has-error");
128
+                block.html(block.html()+'<span id="helpBlock2" class="help-block">Vous devez spécifier un libellé.</span>');
129
+            }
130
+            else if (!$("#file").val().length)
131
+            {
132
+                var block = $("#file").parent();
133
+                block.addClass("has-error");
134
+                block.html(block.html()+'<span id="helpBlock2" class="help-block">Vous devez sélectionner un fichier.</span>');
135
+            }
136
+            else {
137
+
138
+                data.append("document", $("#file")[0].files[0]);
139
+                data.append("promo", $("#promo").val());
140
+                data.append("rang", $("#rang").val());
141
+                data.append("libelle", $("#libelle").val());
142
+
143
+                $.ajax({
144
+                    method: "POST",
145
+                    url: "document",
146
+                    data: data,
147
+                    dataType: 'json',
148
+                    processData: false,
149
+                    contentType: false,
150
+                    complete: function (result) {
151
+                        result = result.responseJSON;
152
+                        var promoName = "";
153
+                        var promoValeur = $("#promo").val();
154
+                        for (var i = 0; i < $("#promo").children().length; i++) {
155
+                            if ($("#promo").children()[i].value === promoValeur) {
156
+                                promoName = $("#promo").children()[i].text;
157
+                            }
158
+                        }
159
+                        $("table").append('<tr id="' + result.id + '">' +
160
+                            '<td>' + $("#rang").val() + '</td>' +
161
+                            '<td>' + promoName + '</td>' +
162
+                            '<td>' + $("#libelle").val() + '</td>' +
163
+                            '<td>' + result.path + '</td>' +
164
+                            '<td><i class="fa fa-pencil" style="cursor:pointer"></i>&nbsp;&nbsp;&nbsp;<i class="fa fa-trash-o" style="cursor:pointer"></i></td>' +
165
+                            '</tr>');
166
+
167
+                        $($("#alert")[0]).html('<div class="alert alert-success alert-dismissible" role="alert" style="text-align:center; display: none">Le document a été ajouté !<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button></div>');
168
+                        $($("button.btn")[0]).click();
169
+                        $($(".alert")[0]).fadeIn();
170
+
171
+                        // Reset the listeners
172
+                        $('.fa-pencil').on("click", editRow);
173
+                        $('.fa-trash-o').on("click", function () {
174
+                            var row = $(this).parent().parent();
175
+                            var url = "";
176
+                            switch ($("title").html()) {
177
+                                case "Documents":
178
+                                    url = "document/" + row[0].id;
179
+                                    break;
180
+                                case "Promotions":
181
+                                    url = "promo/" + row[0].id;
182
+                            }
183
+                            $.ajax({
184
+                                method: "DELETE",
185
+                                url: url,
186
+                                processData: false,
187
+                                contentType: false
188
+                            });
189
+                            row.remove();
190
+                        });
191
+                    }
192
+                });
193
+            }
194
+            break;
195
+        case "Promotions":
196
+            $("#helpBlock2").remove();
197
+            $(".has-error").removeClass("has-error");
198
+            var id = $("#id").val().toUpperCase();
199
+            if(checkPromoId(id))
200
+            {
201
+                if (!$("#libelle").val().length)
202
+                {
203
+                    var block = $("#libelle").parent();
204
+                    block.addClass("has-error");
205
+                    block.html(block.html()+'<span id="helpBlock2" class="help-block">Vous devez spécifier un libellé.</span>');
206
+                }
207
+                else {
208
+                    data.append("id", id);
209
+                    data.append("libelle", $("#libelle").val());
210
+
211
+                    $.ajax({
212
+                        method: "POST",
213
+                        url: "promo",
214
+                        data: data,
215
+                        processData: false,
216
+                        contentType: false
217
+                    });
218
+
219
+                    $("table").append('<tr>' +
220
+                        '<td>' + id + '</td>' +
221
+                        '<td>' + $("#libelle").val() + '</td>' +
222
+                        '<td><i class="fa fa-pencil" style="cursor:pointer"></i>&nbsp;&nbsp;&nbsp;<i class="fa fa-trash-o" style="cursor:pointer"></i></td>' +
223
+                        '</tr>');
224
+
225
+                    $($("#alert")[0]).html('<div class="alert alert-success alert-dismissible" role="alert" style="text-align:center; display: none">La promotion a été ajoutée !<button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button></div>');
226
+                    $($("button.btn")[0]).click();
227
+                    $($(".alert")[0]).fadeIn();
228
+                    // Reset the listeners
229
+                    $('.fa-pencil').on("click", editRow);
230
+                    $('.fa-trash-o').on("click", function () {
231
+                        var row = $(this).parent().parent();
232
+                        var url = "";
233
+                        switch ($("title").html()) {
234
+                            case "Documents":
235
+                                url = "document/" + row[0].id;
236
+                                break;
237
+                            case "Promotions":
238
+                                url = "promo/" + row[0].id;
239
+                        }
240
+                        $.ajax({
241
+                            method: "DELETE",
242
+                            url: url,
243
+                            processData: false,
244
+                            contentType: false
245
+                        });
246
+                        row.remove();
247
+                    });
248
+                }
249
+            }
250
+            else
251
+            {
252
+                var block = $("#id").parent();
253
+                block.addClass("has-error");
254
+                block.html(block.html()+'<span id="helpBlock2" class="help-block">Votre identifiant doit contenir "A" suivi de l\'année correspondant à la promotion.</span>')
255
+            }
256
+            break;
257
+    }
258
+});

models/connector.class.php → admin/models/connector.class.php Просмотреть файл


models/data.class.php → admin/models/data.class.php Просмотреть файл

@@ -4,6 +4,7 @@ require_once("connector.class.php");
4 4
 
5 5
 class Data
6 6
 {
7
+    private $id;
7 8
     private $identifiant;
8 9
     private $nom_fils;
9 10
     private $prenom_fils;
@@ -31,6 +32,7 @@ class Data
31 32
         $data = $data[0];
32 33
 
33 34
         // Chargement des informations
35
+        $this->id = $id;
34 36
         $this->identifiant = $data["identifiant"];
35 37
         $this->nom_fils = $data["nom_fils"];
36 38
         $this->prenom_fils = $data["prenom_fils"];
@@ -252,6 +254,7 @@ class Data
252 254
     public static function toArray($data)
253 255
     {
254 256
         return array(
257
+            "id" => $data->id,
255 258
             "Identifiant" => $data->identifiant,
256 259
             "Nom" => $data->nom_fils,
257 260
             "Prénom" => $data->prenom_fils,

models/document.class.php → admin/models/document.class.php Просмотреть файл

@@ -71,15 +71,8 @@ class Document
71 71
             $destination = $filename;
72 72
         }
73 73
 
74
-        error_log($destination);
75
-
76
-        if(move_uploaded_file($document["tmp_name"], __DIR__ . "/../../pdf/" . $destination))
77
-        {
78
-            echo "Uploaded!";
79
-        }
80
-        else
74
+        if(!move_uploaded_file($document["tmp_name"], __DIR__ . "/../../pdf/" . $destination))
81 75
         {
82
-            echo ":'((((";
83 76
             error_log("Error when trying to write ".__DIR__ . "/../../pdf/" . $destination);
84 77
         }
85 78
 
@@ -88,6 +81,7 @@ class Document
88 81
                 throw new InvalidArgumentException("La colonne `" . $key . "` doit être définie");
89 82
             }
90 83
         }
84
+
91 85
         $bdd = new Connector();
92 86
         $bdd->Insert("document", array(
93 87
             "rang" => $options["rang"],
@@ -96,7 +90,16 @@ class Document
96 90
             "fichier" => $destination
97 91
         ));
98 92
 
99
-        return $destination;
93
+        $document = $bdd->Select("*", "document", array(
94
+            "where" => array(
95
+                array("fichier", "=", $destination)
96
+            )
97
+        ))[0];
98
+
99
+        return array(
100
+            "path" => $destination,
101
+            "id" => $document["id"]
102
+        );
100 103
     }
101 104
 
102 105
     function erase()
@@ -113,7 +116,7 @@ class Document
113 116
         // Check if promo exists
114 117
         $promo = $bdd->Select("*", "promo", array(
115 118
             "where" => array(
116
-                array("promo_id", "=", $newPromo)
119
+                array("id_promo", "=", $newPromo)
117 120
             )
118 121
         ));
119 122
 
@@ -126,7 +129,10 @@ class Document
126 129
         $this->libelle_promo = $promo[0]["libelle"];
127 130
 
128 131
         $bdd->Update("document", array(
129
-            "promo" => $this->promo
132
+            "where" => array(
133
+                array("id", "=", $this->id)
134
+            ),
135
+            "set" => array("promo" => $this->promo)
130 136
         ));
131 137
     }
132 138
 
@@ -138,13 +144,17 @@ class Document
138 144
         $this->rang = $newRank;
139 145
 
140 146
         $bdd->Update("document", array(
141
-            "rang" => $this->rang
147
+            "where" => array(
148
+                array("id", "=", $this->id)
149
+            ),
150
+            "set" => array("rang" => $this->rang)
142 151
         ));
143 152
     }
144 153
 
145 154
     public static function toArray($document)
146 155
     {
147 156
         return array(
157
+            "id" => $document->id,
148 158
             "Rang" => $document->rang,
149 159
             "Promotion" => array(
150 160
                 "id" => $document->promo,

models/promo.class.php → admin/models/promo.class.php Просмотреть файл

@@ -123,6 +123,7 @@ class Promo
123 123
     public static function toArray($promo)
124 124
     {
125 125
         return array(
126
+            "id" => $promo->id_promo,
126 127
             "Identifiant" => $promo->id_promo,
127 128
             "Libellé" => $promo->libelle
128 129
         );

views/home.html.php → admin/views/home.html.php Просмотреть файл


+ 53
- 0
admin/views/layout.html.php Просмотреть файл

@@ -0,0 +1,53 @@
1
+<!DOCTYPE html>
2
+
3
+<html>
4
+    <head>
5
+        <meta charset = "utf-8">
6
+        <title>Rentrée ISEN Brest - <?php echo $title; ?> - Administration</title>
7
+        <link rel="stylesheet" href="lib/bootstrap.min.css" />
8
+        <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
9
+        <script src="lib/jquery-2.1.4.min.js"></script>
10
+        <script src="lib/jquery.tablesorter.min.js"></script>
11
+        <script src="lib/bootstrap.min.js"></script>
12
+        <style>
13
+            .table-striped > tbody > tr:nth-of-type(2n+1) {
14
+                background-color: #A1C5D2;
15
+            }
16
+            .table > tbody > tr > td, .table > tbody > tr > th, .table > tfoot > tr > td, .table > tfoot > tr > th, .table > thead > tr > td, .table > thead > tr > th {
17
+                border-top: 1px solid rgb(161, 197, 210);
18
+            }
19
+            .table > thead > tr > th {
20
+                border-bottom: 2px solid #809fab;
21
+            }
22
+        </style>
23
+    </head>
24
+    <body style="background:#c5efff">
25
+
26
+
27
+        <nav class="navbar navbar-inverse">
28
+            <div class="container">
29
+                <div class="navbar-header">
30
+                    <span class="navbar-brand">Administration rentrée ISEN Brest</span>
31
+                </div>
32
+                <div id="navbar" class="collapse navbar-collapse">
33
+                    <ul class="nav navbar-nav">
34
+                        <li <?php if($title == "Données") { ?>class="active"<?php } ?>><a href="data">Données</a></li>
35
+                        <li <?php if($title == "Documents") { ?>class="active"<?php } ?>><a href="document">Documents</a></li>
36
+                        <li <?php if($title == "Promotions") { ?>class="active"<?php } ?>><a href="promo">Promotions</a></li>
37
+                    </ul>
38
+                </div><!--/.nav-collapse -->
39
+            </div>
40
+        </nav>
41
+
42
+        <div class="container">
43
+            <?php echo $content; ?>
44
+        </div>
45
+        <script>
46
+            $(function(){
47
+                $("#mainTable").tablesorter();
48
+            });
49
+        </script>
50
+        <script src="lib/platypuce.js"></script>
51
+    </body>
52
+
53
+</html>

views/list.html.php → admin/views/list.html.php Просмотреть файл

@@ -1,3 +1,6 @@
1
+<h2>Traitement des <?php echo strtolower($title); ?></h2>
2
+
3
+<div id="alert"></div>
1 4
 <?php if($title == "Documents" || $title == "Promotions")
2 5
 {
3 6
     echo '<div style="text-align:right">
@@ -6,6 +9,14 @@
6 9
     </button>
7 10
 </div>';
8 11
 }
12
+else if($title == "Données")
13
+{
14
+    echo '<div style="text-align:right">
15
+    <a href="data/extract" class="btn btn-primary">
16
+        Tout télécharger (format CSV)
17
+    </a>
18
+</div>';
19
+}
9 20
 ?>
10 21
 
11 22
 
@@ -64,31 +75,45 @@
64 75
 <table class="table tablesorter table-striped" id="mainTable">
65 76
     <thead>
66 77
     <?php foreach ($data[0] as $key => $value) {
78
+        if ($key != "id") {
79
+            ?>
80
+            <th class="th-inner sortable both" style="cursor:pointer"><?php echo $key; ?></th>
81
+            <?php
82
+        }
83
+    }
84
+    if ($title != "Données") {
67 85
         ?>
68
-        <th class="th-inner sortable both"><?php echo $key; ?></th>
86
+        <th>Opérations</th>
69 87
         <?php
70 88
     }
71 89
     ?>
72
-    <th>Opérations</th>
73 90
     </thead>
74 91
     <tbody>
75 92
     <?php foreach ($data as $element) {
76 93
         ?>
77
-        <tr>
94
+        <tr id="<?php echo $element["id"]; ?>">
78 95
             <?php
79 96
             foreach ($element as $field => $value) {
80
-                if (is_array($value)) {
81
-                    ?>
82
-                    <td class="<?php echo $value["id"]; ?>"><?php echo $value["libelle"]; ?></td>
83
-                    <?php
84
-                } else {
85
-                    ?>
86
-                    <td><?php echo $value; ?></td>
87
-                    <?php
97
+                if ($field != "id") {
98
+                    if (is_array($value)) {
99
+                        ?>
100
+                        <td class="<?php echo $value["id"]; ?>"><?php echo $value["libelle"]; ?></td>
101
+                        <?php
102
+                    } else {
103
+                        ?>
104
+                        <td><?php echo $value; ?></td>
105
+                        <?php
106
+                    }
88 107
                 }
89 108
             }
109
+            if ($title != "Données") {
110
+                ?>
111
+                <td><i class="fa fa-pencil" style="cursor:pointer"></i>&nbsp;&nbsp;&nbsp;<i class="fa fa-trash-o"
112
+                                                                                            style="cursor:pointer"></i>
113
+                </td>
114
+                <?php
115
+            }
90 116
             ?>
91
-            <td><i class="fa fa-pencil" style="cursor:pointer"></i></td>
92 117
         </tr>
93 118
         <?php
94 119
     }

views/login.html.php → admin/views/login.html.php Просмотреть файл


+ 0
- 29
controllers/login.php Просмотреть файл

@@ -1,29 +0,0 @@
1
-<?php
2
-
3
-require_once(dirname(__DIR__)."/controllers/data.php");
4
-require_once(dirname(__DIR__)."/models/data.class.php");
5
-require_once(dirname(__DIR__)."/../DbIds.php");
6
-
7
-function getAdminIdentifiers()
8
-{
9
-    return ["toto", "tata"];
10
-}
11
-
12
-function login()
13
-{
14
-    set("title", "Login");
15
-    
16
-    return html("login.html.php", "layout.html.php");
17
-}
18
-
19
-function check_login()
20
-{
21
-    $identifiers = getAdminIdentifiers();
22
-    
23
-    if($_POST["login"] != $identifiers[0] || $_POST["password"] != $identifiers[1])
24
-        return login();
25
-    
26
-    set("title", "Home");
27
-    
28
-    return html("home.html.php", "layout.html.php");
29
-}

+ 0
- 32
controllers/promo.php Просмотреть файл

@@ -1,32 +0,0 @@
1
-<?php
2
-
3
-require_once(dirname(__DIR__)."/models/promo.class.php");
4
-
5
-function promo()
6
-{
7
-    set("title", "Promotions");
8
-    set("data", Promo::getAll());
9
-    
10
-    return html("list.html.php", "layout.html.php");
11
-}
12
-
13
-function add_promo()
14
-{
15
-    Promo::addPromo([
16
-        "id" => $_POST["id"],
17
-        "libelle" => $_POST["libelle"]
18
-    ]);
19
-}
20
-
21
-function alter_promo($promoid)
22
-{
23
-    $promo = new Promo($promoid);
24
-    
25
-    $promo->setLibelle($_POST["libelle"]);
26
-    $promo->write();
27
-}
28
-
29
-function delete_promo($promoid)
30
-{
31
-    (new Promo($promoid))->erase();
32
-}

+ 111
- 0
database.sql Просмотреть файл

@@ -0,0 +1,111 @@
1
+-- MySQL dump 10.13  Distrib 5.6.26, for Linux (x86_64)
2
+--
3
+-- Host: localhost    Database: rentree
4
+-- ------------------------------------------------------
5
+-- Server version	5.6.26
6
+
7
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
8
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
9
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
10
+/*!40101 SET NAMES utf8 */;
11
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
12
+/*!40103 SET TIME_ZONE='+00:00' */;
13
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
14
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
15
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
16
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
17
+
18
+--
19
+-- Table structure for table `data`
20
+--
21
+
22
+DROP TABLE IF EXISTS `data`;
23
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
24
+/*!40101 SET character_set_client = utf8 */;
25
+CREATE TABLE `data` (
26
+  `id` int(11) NOT NULL AUTO_INCREMENT,
27
+  `identifiant` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
28
+  `nom_fils` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
29
+  `prenom_fils` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
30
+  `ddn_fils` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
31
+  `tel_mobile` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
32
+  `courriel` varchar(256) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
33
+  `date` datetime NOT NULL,
34
+  `ip` varchar(32) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL,
35
+  PRIMARY KEY (`id`)
36
+) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
37
+/*!40101 SET character_set_client = @saved_cs_client */;
38
+
39
+--
40
+-- Dumping data for table `data`
41
+--
42
+
43
+LOCK TABLES `data` WRITE;
44
+/*!40000 ALTER TABLE `data` DISABLE KEYS */;
45
+INSERT INTO `data` VALUES (3,'contact@brendanabolivier.com','Abolivier','Brendan','08/08/1995','0658853799','christian.abolivier@gmail.com','2015-11-23 16:39:37','0.0.0.0'),(4,'contact@brendanabolivier.com','Michaud','Paul','07/08/1995','0658853799','christian.abolivier@gmail.com','2015-11-23 17:10:06','0.0.0.0');
46
+/*!40000 ALTER TABLE `data` ENABLE KEYS */;
47
+UNLOCK TABLES;
48
+
49
+--
50
+-- Table structure for table `document`
51
+--
52
+
53
+DROP TABLE IF EXISTS `document`;
54
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
55
+/*!40101 SET character_set_client = utf8 */;
56
+CREATE TABLE `document` (
57
+  `id` int(11) NOT NULL AUTO_INCREMENT,
58
+  `rang` int(11) NOT NULL,
59
+  `promo` varchar(20) DEFAULT NULL,
60
+  `libelle` varchar(256) NOT NULL,
61
+  `fichier` varchar(256) NOT NULL,
62
+  PRIMARY KEY (`id`),
63
+  KEY `document_ibfk_1` (`promo`),
64
+  CONSTRAINT `document_ibfk_1` FOREIGN KEY (`promo`) REFERENCES `promo` (`id_promo`)
65
+) ENGINE=InnoDB AUTO_INCREMENT=72 DEFAULT CHARSET=utf8;
66
+/*!40101 SET character_set_client = @saved_cs_client */;
67
+
68
+--
69
+-- Dumping data for table `document`
70
+--
71
+
72
+LOCK TABLES `document` WRITE;
73
+/*!40000 ALTER TABLE `document` DISABLE KEYS */;
74
+INSERT INTO `document` VALUES (1,5,'CSI_A3','Intégration','A12/CIR1B_CIR1R_CSI1_Courrier-integration-1.pdf'),(2,5,'CIR_RENNES_A1','Intégration','A12/CIR1B_CIR1R_CSI1_Courrier-integration-1.pdf'),(3,5,'CSI_A1','Intégration','A12/CIR1B_CIR1R_CSI1_Courrier-integration-1.pdf'),(4,5,NULL,'Offre banque BNP','BNP_Flyer_Rentree_2015.pdf'),(5,6,NULL,'Offre banque CMB','CMB_Flyers_Rentree_2015.pdf'),(6,7,NULL,'Offre banque Société Générale','SOCIETE GENERALE_Flyer_Rentree_2015.pdf'),(7,3,'CSI_A1','Annonce ordinateur portable','A12/courrierAnnoncePortable-2015-CSI-CIPA.pdf'),(8,3,'CSI_A3','Annonce ordinateur portable','A345/courrierAnnoncePortable-2015-CSI-CIPA.pdf'),(9,2,'CIPA_A3','Annonce ordinateur portable','A345/courrierAnnoncePortable-2015-CSI-CIPA.pdf'),(10,4,'CSI_A1','Dossier ordinateur portable','A12/acquisitionPortable-2015-CSI-CIPA.pdf'),(11,4,'CSI_A3','Dossier ordinateur portable','A345/acquisitionPortable-2015-CSI-CIPA.pdf'),(12,3,'CIPA_A3','Dossier ordinateur portable','A345/acquisitionPortable-2015-CSI-CIPA.pdf'),(13,1,'CIPA_A3','Calendrier CIPA3','A345/CIPA3Calendrier1516.pdf'),(14,1,'CIPA_A4','Calendrier CIPA4','A345/CIPA4Calendrier1516.pdf'),(15,1,'CIPA_A5','Calendrier CIPA5','A345/CIPA5Calendrier1516.pdf'),(16,1,'CSI_A3','Calendrier CSI3','A345/CSI3Calendrier1516.pdf'),(17,1,'CIR_A3_NONALT','Calendrier CIR3 non alternant','A345/CIR3nonAlternantCalendrier1516.pdf'),(18,3,'CIR_A3_NONALT','Annonce ordinateur portable','A345/courrierAnnoncePortable-2015-CSI-CIPA.pdf'),(19,4,'CIR_A3_NONALT','Dossier ordinateur portable','A345/acquisitionPortable-2015-CSI-CIPA.pdf'),(20,1,'CIR_A3_ALT','Calendrier CIR3 alternant','A345/CIR3AlternantCalendrier1516.pdf'),(21,3,'CIR_A3_ALT','Annonce ordinateur portable','A345/courrierAnnoncePortable-2015-CSI-CIPA.pdf'),(22,4,'CIR_A3_ALT','Dossier ordinateur portable','A345/acquisitionPortable-2015-CSI-CIPA.pdf'),(23,1,'M_A4','Calendrier M1','A345/M1Calendrier1516.pdf'),(24,3,'M_A4','Annonce ordinateur portable','A345/courrierAnnoncePortable-2015-CSI-CIPA.pdf'),(25,4,'M_A4','Dossier ordinateur portable','A345/acquisitionPortable-2015-CSI-CIPA.pdf'),(26,3,'CIR_BREST_A1','Annonce ordinateur portable','A12/courrierAnnonce2015CIR1.pdf'),(27,4,'CIR_BREST_A1','Contrat de mise à disposition ordinateur portable','A12/contratMiseDisposition2015CIR1.pdf'),(28,3,'CIR_RENNES_A1','Annonce ordinateur portable','A12/courrierAnnonce2015CIR1.pdf'),(29,4,'CIR_RENNES_A1','Contrat de mise à disposition ordinateur portable','A12/contratMiseDisposition2015CIR1.pdf'),(30,1,'CSI_A1','Calendrier Classes Préparatoires','A12/CSI1_CSI2calendrier2015.2016.pdf'),(31,1,'CSI_A2','Calendrier Classes Préparatoires','A12/CSI1_CSI2calendrier2015.2016.pdf'),(32,2,'CSI_A1','Informations pratiques','A12/CSI1_CSI2infospratiques.pdf'),(33,2,'CSI_A2','Informations pratiques','A12/CSI1_CSI2infospratiques.pdf'),(34,1,'CIR_BREST_A1','Calendrier CIR','A12/CIR1_CIR2calendrier2015.2016.pdf'),(35,2,'CIR_BREST_A1','Informations pratiques','A12/CIR1_CIR2infospratiques.pdf'),(36,1,'CIR_RENNES_A1','Calendrier CIR','A12/CIR1_CIR2calendrier2015.2016.pdf'),(37,2,'CIR_RENNES_A1','Informations pratiques','A12/CIR1_CIR2infospratiques.pdf'),(38,1,'CIR_BREST_A2','Calendrier CIR','A12/CIR1_CIR2calendrier2015.2016.pdf'),(39,2,'CIR_BREST_A2','Informations pratiques','A12/CIR1_CIR2infospratiques.pdf'),(40,1,'CIR_RENNES_A2','Calendrier CIR','A12/CIR1_CIR2calendrier2015.2016.pdf'),(41,2,'CIR_RENNES_A2','Informations pratiques','A12/CIR1_CIR2infospratiques.pdf'),(42,1,'BTSPREPA_A1','Calendrier BTS PREPA','A12/BTS1_BTS2Brestcalendrier2015.2016.pdf'),(43,1,'BTSPREPA_A2','Calendrier BTS PREPA','A12/BTS1_BTS2Brestcalendrier2015.2016.pdf'),(44,2,NULL,'Sécurité Sociale étudiante mode d\'emploi','mode_emploi_secu_sociale_15-16.pdf'),(46,1,'M_A5_ALT','Calendrier M2 alternant','A345/M2AlternantCalendrier1516.pdf'),(47,1,'M_A5_NONALT','Calendrier M2 non alternant','A345/M2nonAlternantCalendrier1516.pdf'),(48,1,NULL,'Dates des rentrées à l\'ISEN','Calendriersrentree1516.pdf'),(49,2,'CSI_A3','Informations pratiques','A345/rentreepratiqueinge1516.pdf'),(50,2,'CIR_A3_NONALT','Informations pratiques','A345/rentreepratiqueinge1516.pdf'),(51,2,'CIR_A3_ALT','Informations pratiques','A345/rentreepratiqueinge1516.pdf'),(52,2,'M_A4','Informations pratiques','A345/rentreepratiqueinge1516.pdf'),(53,2,'M_A5_ALT','Informations pratiques','A345/rentreepratiqueinge1516.pdf'),(54,2,'M_A5_NONALT','Informations pratiques','A345/rentreepratiqueinge1516.pdf'),(55,3,NULL,'LMDE','LMDE.pdf'),(71,45,'BTSPREPA_A1','sfgs','A12/konstantin-500.jpg');
75
+/*!40000 ALTER TABLE `document` ENABLE KEYS */;
76
+UNLOCK TABLES;
77
+
78
+--
79
+-- Table structure for table `promo`
80
+--
81
+
82
+DROP TABLE IF EXISTS `promo`;
83
+/*!40101 SET @saved_cs_client     = @@character_set_client */;
84
+/*!40101 SET character_set_client = utf8 */;
85
+CREATE TABLE `promo` (
86
+  `id_promo` varchar(20) NOT NULL DEFAULT '',
87
+  `libelle` varchar(256) NOT NULL,
88
+  PRIMARY KEY (`id_promo`)
89
+) ENGINE=InnoDB DEFAULT CHARSET=utf8;
90
+/*!40101 SET character_set_client = @saved_cs_client */;
91
+
92
+--
93
+-- Dumping data for table `promo`
94
+--
95
+
96
+LOCK TABLES `promo` WRITE;
97
+/*!40000 ALTER TABLE `promo` DISABLE KEYS */;
98
+INSERT INTO `promo` VALUES ('BTSPREPA_A1','1ʳᵉ année, BTS Prépa'),('BTSPREPA_A2','2&#x1D49; année, BTS Prépa'),('CIPA_A3','3&#x1D49; année, Cycle Ingénieur Par l\'Apprentissage'),('CIPA_A4','4&#x1D49; année, Cycle Ingénieur Par l\'Apprentissage'),('CIPA_A5','5&#x1D49; année, Cycle Ingénieur Par l\'Apprentissage'),('CIR_A3_ALT','3&#x1D49; année, Cycle Informatique et Réseaux (alternant)'),('CIR_A3_NONALT','3&#x1D49; année, Cycle Informatique et Réseaux (non alternant)'),('CIR_BREST_A1','1&#x02B3;&#x1D49; année, Cycle Informatique et Réseaux (Brest)'),('CIR_BREST_A2','2&#x1D49; année, Cycle Informatique et Réseaux (Brest)'),('CIR_RENNES_A1','1&#x02B3;&#x1D49; année, Cycle Informatique et Réseaux (Rennes)'),('CIR_RENNES_A2','2&#x1D49; année, Cycle Informatique et Réseaux (Rennes)'),('CSI_A1','1&#x02B3;&#x1D49; année, Cycle Sciences de l\'Ingénieur'),('CSI_A2','2&#x1D49; année, Cycle Sciences de l\'Ingénieur'),('CSI_A3','3&#x1D49; année, Cycle Sciences de l\'Ingénieur'),('M_A4','4&#x1D49; année, Majeure - M1'),('M_A5_ALT','5&#x1D49; année, Majeure - M2 (alternant)'),('M_A5_NONALT','5&#x1D49; année, Majeure - M2 (non alternant)'),('TEST_A4','Test année 5');
99
+/*!40000 ALTER TABLE `promo` ENABLE KEYS */;
100
+UNLOCK TABLES;
101
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
102
+
103
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
104
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
105
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
106
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
107
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
108
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
109
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
110
+
111
+-- Dump completed on 2015-12-18 21:26:10

+ 0
- 108
lib/platypuce.js Просмотреть файл

@@ -1,108 +0,0 @@
1
-function checkPromoId(promoid)
2
-{
3
-    return promoid.match(/A[1-5]/) != null;
4
-}
5
-
6
-function editRow() {
7
-    var row = $(this).parent().parent();
8
-    var rang = $(row.children()[0]);
9
-    var promo = $(row.children()[1]);
10
-    var rangValeur = rang.html();
11
-    var promoValeur = $(promo[0]).attr("class");
12
-    var promos = $("#promo").children();
13
-    var str = '<select class="tempPromos">';
14
-    var selected = "";
15
-
16
-    rang.html('<input type="number" value="'+rangValeur+'" size="2" style="width:35px" />');
17
-    $(promo[0]).removeClass(promoValeur);
18
-    for(var i = 0; i < promos.length; i++)
19
-    {
20
-        if (promos[i].value === promoValeur)
21
-        {
22
-            selected = "selected";
23
-        }
24
-        else
25
-        {
26
-            selected = "";
27
-        }
28
-        str += '<option value="'+promos[i].value+'" '+selected+'>'+promos[i].text+'</option>';
29
-    }
30
-    str += "</select>";
31
-    promo.html(str);
32
-    $(this).addClass("fa-check");
33
-    $(this).removeClass("fa-pencil");
34
-    $(this).off("click");
35
-    $(this).on("click", function () {
36
-        rangValeur = $(rang.children()[0]).val();
37
-        rang.html(rangValeur);
38
-        promoValeur = promo.children().val();
39
-        promo.addClass(promoValeur);
40
-        var promoName = "";
41
-        for(var i = 0; i < promos.length; i++)
42
-        {
43
-            if (promos[i].value === promoValeur)
44
-            {
45
-                promoName = promos[i].text;
46
-            }
47
-        }
48
-        promo.html(promoName);
49
-        $(this).addClass("fa-pencil");
50
-        $(this).removeClass("fa-check");
51
-        // Insert AJAX request here
52
-        $(this).off("click");
53
-        $(this).on("click", editRow);
54
-    });
55
-}
56
-
57
-$('.fa-pencil').on("click", editRow);
58
-
59
-$('#addForm').submit(function(e) {
60
-    e.preventDefault();
61
-    var data = new FormData();
62
-
63
-    switch ($("title").html())
64
-    {
65
-        case "Documents":
66
-            data.append("document", $("#file")[0].files[0]);
67
-            data.append("promo", $("#promo").val());
68
-            data.append("rang", $("#rang").val());
69
-            data.append("libelle", $("#libelle").val());
70
-
71
-            $.ajax({
72
-                method: "POST",
73
-                url: "document",
74
-                data: data,
75
-                dataType: 'json',
76
-                processData: false,
77
-                contentType: false,
78
-                complete: function (result) {
79
-
80
-                }
81
-            });
82
-            break;
83
-        case "Promotions":
84
-            if(checkPromoId($("#id").val()))
85
-            {
86
-                data.append("id", $("#id").val());
87
-                data.append("libelle", $("#libelle").val());
88
-
89
-                $.ajax({
90
-                    method: "POST",
91
-                    url: "promo",
92
-                    data: data,
93
-                    processData: false,
94
-                    contentType: false,
95
-                    complete: function (result) {
96
-                        console.log(result);
97
-                    }
98
-                });
99
-            }
100
-            else
101
-            {
102
-                var block = $(".form-group:first-child");
103
-                block.addClass("has-error");
104
-                block.html(block.html()+'<span id="helpBlock2" class="help-block">Votre identifiant doit contenir "A" suivi de l\'année correspondant à la promotion.</span>')
105
-            }
106
-            break;
107
-    }
108
-});

+ 72
- 0
readme.md Просмотреть файл

@@ -0,0 +1,72 @@
1
+# Rentrée ISEN Brest : Administration
2
+## Guide d'installation
3
+
4
+### Modifications sur l'application existante
5
+Afin que l'application fonctionne, il vous faudra effectuer les modifications suivantes dans le fichier `config.php`, à la racine de l'application existante :
6
+
7
+Remplacer
8
+```
9
+// informations concernant la base de données
10
+$DbHost = "127.0.0.1";
11
+$DbName = "à compléter...";
12
+$DbUser = "à compléter...";
13
+$DbPassword = "à compléter..."; 
14
+```
15
+par
16
+```
17
+require_once("DbIds.php");
18
+$ids = getParams();
19
+```
20
+
21
+ Remplacer
22
+```
23
+$libellePromo = array (
24
+    "1&#x02B3;&#x1D49; année, Cycle Sciences de l'Ingénieur" => "CSI_A1",
25
+    "1&#x02B3;&#x1D49; année, Cycle Informatique et Réseaux (Brest)" => "CIR_BREST_A1",
26
+    "1&#x02B3;&#x1D49; année, Cycle Informatique et Réseaux (Rennes)" => "CIR_RENNES_A1",        
27
+    "1&#x02B3;&#x1D49; année, BTS Prépa" => "BTSPREPA_A1",    
28
+    "2&#x1D49; année, Cycle Sciences de l'Ingénieur" => "CSI_A2",
29
+    "2&#x1D49; année, Cycle Informatique et Réseaux (Brest)" => "CIR_BREST_A2",
30
+    "2&#x1D49; année, Cycle Informatique et Réseaux (Rennes)" => "CIR_RENNES_A2",        
31
+    "2&#x1D49; année, BTS Prépa" => "BTSPREPA_A2",     
32
+    "3&#x1D49; année, Cycle Sciences de l'Ingénieur" => "CSI_A3",
33
+    "3&#x1D49; année, Cycle Informatique et Réseaux (alternant)" => "CIR_A3_ALT",
34
+    "3&#x1D49; année, Cycle Informatique et Réseaux (non alternant)" => "CIR_A3_NONALT",    
35
+    "3&#x1D49; année, Cycle Ingénieur Par l'Apprentissage" => "CIPA_A3",
36
+    "4&#x1D49; année, Majeure - M1" => "M_A4",
37
+    "4&#x1D49; année, Cycle Ingénieur Par l'Apprentissage" => "CIPA_A4",
38
+    "5&#x1D49; année, Majeure - M2 (alternant)" => "M_A5_ALT",
39
+    "5&#x1D49; année, Majeure - M2 (non alternant)" => "M_A5_NONALT",    
40
+    "5&#x1D49; année, Cycle Ingénieur Par l'Apprentissage" => "CIPA_A5"
41
+);
42
+```
43
+par
44
+```
45
+$libellePromo = array();
46
+foreach($stmt->fetchAll() as $promo) {
47
+    $libellePromo[$promo["libelle"]] = $promo["id_promo"];
48
+}
49
+```
50
+
51
+Vous devrez aussi créer et remplir le fichier `DbIds.php` (à la racine de l'application existante), qui contiendra vos identifiants de connexion à la base de données de la façon suivante :
52
+```
53
+<?php
54
+
55
+function getParams() {
56
+    // informations concernant la base de données
57
+    $DbHost = "[DB_HOST]";
58
+    $DbName = "[DB_NAME]";
59
+    $DbUser = "[DB_USER]";
60
+    $DbPassword = "[DB_PASSWORD]";
61
+
62
+    return [$DbHost, $DbName, $DbUser, $DbPassword];
63
+}
64
+```
65
+Veillez bien à remplacer `[DB_HOST]`, `[DB_NAME]`, `[DB_USER]` et `[DB_PASSWORD]` par les valeurs correspondates.
66
+
67
+Enfin, chargez fichier `database.sql` situé dans le même dossier que ce "readme", dans votre base de données.
68
+
69
+### Installation de l'application d'administration
70
+Pour installer l'application d'administration, il vous suffit de déplacer le dossier "admin" situé dans le même dossier que le présent "readme" dans le dossier racine de l'application existante. Vous pouvez le renommer comme vous le voudrez.
71
+
72
+Pour accéder à l'application, ouvrez votre navigateur à l'adresse `http(s)://[APP_EXISTANTE]/[NOM_ADMIN]`, où `[APP_EXISTANTE]` est l'adresse de l'application existante, et `[NOM_ADMIN]` est le nom du dossier contenant l'application d'administration (`admin` si vous ne l'avez pas renommé).

+ 74
- 0
readme.txt Просмотреть файл

@@ -0,0 +1,74 @@
1
+Note : Ce readme est rédigé en utilisant la syntaxe markdown. Il reste compréhensible, mais est plus agréable à lire ici : https://github.com/babolivier/isen-rentree/blob/master/readme.md
2
+
3
+# Rentrée ISEN Brest : Administration
4
+## Guide d'installation
5
+
6
+### Modifications sur l'application existante
7
+Afin que l'application fonctionne, il vous faudra effectuer les modifications suivantes dans le fichier `config.php`, à la racine de l'application existante :
8
+
9
+Remplacer
10
+```
11
+// informations concernant la base de données
12
+$DbHost = "127.0.0.1";
13
+$DbName = "à compléter...";
14
+$DbUser = "à compléter...";
15
+$DbPassword = "à compléter..."; 
16
+```
17
+par
18
+```
19
+require_once("DbIds.php");
20
+$ids = getParams();
21
+```
22
+
23
+ Remplacer
24
+```
25
+$libellePromo = array (
26
+    "1&#x02B3;&#x1D49; année, Cycle Sciences de l'Ingénieur" => "CSI_A1",
27
+    "1&#x02B3;&#x1D49; année, Cycle Informatique et Réseaux (Brest)" => "CIR_BREST_A1",
28
+    "1&#x02B3;&#x1D49; année, Cycle Informatique et Réseaux (Rennes)" => "CIR_RENNES_A1",        
29
+    "1&#x02B3;&#x1D49; année, BTS Prépa" => "BTSPREPA_A1",    
30
+    "2&#x1D49; année, Cycle Sciences de l'Ingénieur" => "CSI_A2",
31
+    "2&#x1D49; année, Cycle Informatique et Réseaux (Brest)" => "CIR_BREST_A2",
32
+    "2&#x1D49; année, Cycle Informatique et Réseaux (Rennes)" => "CIR_RENNES_A2",        
33
+    "2&#x1D49; année, BTS Prépa" => "BTSPREPA_A2",     
34
+    "3&#x1D49; année, Cycle Sciences de l'Ingénieur" => "CSI_A3",
35
+    "3&#x1D49; année, Cycle Informatique et Réseaux (alternant)" => "CIR_A3_ALT",
36
+    "3&#x1D49; année, Cycle Informatique et Réseaux (non alternant)" => "CIR_A3_NONALT",    
37
+    "3&#x1D49; année, Cycle Ingénieur Par l'Apprentissage" => "CIPA_A3",
38
+    "4&#x1D49; année, Majeure - M1" => "M_A4",
39
+    "4&#x1D49; année, Cycle Ingénieur Par l'Apprentissage" => "CIPA_A4",
40
+    "5&#x1D49; année, Majeure - M2 (alternant)" => "M_A5_ALT",
41
+    "5&#x1D49; année, Majeure - M2 (non alternant)" => "M_A5_NONALT",    
42
+    "5&#x1D49; année, Cycle Ingénieur Par l'Apprentissage" => "CIPA_A5"
43
+);
44
+```
45
+par
46
+```
47
+$libellePromo = array();
48
+foreach($stmt->fetchAll() as $promo) {
49
+    $libellePromo[$promo["libelle"]] = $promo["id_promo"];
50
+}
51
+```
52
+
53
+Vous devrez aussi créer et remplir le fichier `DbIds.php` (à la racine de l'application existante), qui contiendra vos identifiants de connexion à la base de données de la façon suivante :
54
+```
55
+<?php
56
+
57
+function getParams() {
58
+    // informations concernant la base de données
59
+    $DbHost = "[DB_HOST]";
60
+    $DbName = "[DB_NAME]";
61
+    $DbUser = "[DB_USER]";
62
+    $DbPassword = "[DB_PASSWORD]";
63
+
64
+    return [$DbHost, $DbName, $DbUser, $DbPassword];
65
+}
66
+```
67
+Veillez bien à remplacer `[DB_HOST]`, `[DB_NAME]`, `[DB_USER]` et `[DB_PASSWORD]` par les valeurs correspondates.
68
+
69
+Enfin, chargez fichier `database.sql` situé dans le même dossier que ce "readme", dans votre base de données.
70
+
71
+### Installation de l'application d'administration
72
+Pour installer l'application d'administration, il vous suffit de déplacer le dossier "admin" situé dans le même dossier que le présent "readme" dans le dossier racine de l'application existante. Vous pouvez le renommer comme vous le voudrez.
73
+
74
+Pour accéder à l'application, ouvrez votre navigateur à l'adresse `http(s)://[APP_EXISTANTE]/[NOM_ADMIN]`, où `[APP_EXISTANTE]` est l'adresse de l'application existante, et `[NOM_ADMIN]` est le nom du dossier contenant l'application d'administration (`admin` si vous ne l'avez pas renommé).

+ 0
- 42
views/layout.html.php Просмотреть файл

@@ -1,42 +0,0 @@
1
-<!DOCTYPE html>
2
-
3
-<html>
4
-    <head>
5
-        <meta charset = "utf-8">
6
-        <title><?php echo $title; ?></title>
7
-        <link rel="stylesheet" href="lib/bootstrap.min.css" />
8
-        <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
9
-        <script src="lib/jquery-2.1.4.min.js"></script>
10
-        <script src="lib/jquery.tablesorter.min.js"></script>
11
-        <script src="lib/bootstrap.min.js"></script>
12
-    </head>
13
-    <body>
14
-
15
-
16
-        <nav class="navbar navbar-inverse">
17
-            <div class="container">
18
-                <div class="navbar-header">
19
-                    <a class="navbar-brand" href="#">Administration rentrée ISEN Brest</a>
20
-                </div>
21
-                <div id="navbar" class="collapse navbar-collapse">
22
-                    <ul class="nav navbar-nav">
23
-                        <li><a href="data">Données</a></li>
24
-                        <li><a href="document">Documents</a></li>
25
-                        <li><a href="promo">Promotions</a></li>
26
-                    </ul>
27
-                </div><!--/.nav-collapse -->
28
-            </div>
29
-        </nav>
30
-
31
-        <div class="container">
32
-            <?php echo $content; ?>
33
-        </div>
34
-        <script>
35
-            $(function(){
36
-                $("#mainTable").tablesorter();
37
-            });
38
-        </script>
39
-        <script src="lib/platypuce.js"></script>
40
-    </body>
41
-
42
-</html>