Browse Source

add auth view & shareToFacebook view

Yong 2 years ago
parent
commit
2d9e1f019b

+ 188
- 0
resources/views/admin/DataManagement/InfoManagement.blade.php View File

1
+@extends('admin.master')
2
+
3
+@section('content')
4
+    <div class="row">
5
+        <div class="col-lg-12">
6
+            <div class="contentpanel">
7
+                <form id="listForm" method="post">
8
+                    <!-- 功能按鈕(新增/批量處理等等) -->
9
+                    <div class="row" style="margin-bottom: 5px;">
10
+                        <div class="col-lg-12">
11
+                            <ol class="headermenu">
12
+                                <li>
13
+                                    <button class="btn btn-darkblue btn-xs" id="export"><strong>匯出</strong></button>
14
+                                </li>
15
+                            </ol>
16
+                        </div>
17
+                    </div>
18
+                    <!-- 搜尋段 -->
19
+                    <div class="panel panel-default">
20
+                        <div class="panel-heading" data-toggle="collapse" data-target="#search_content">
21
+                            <h3 class="panel-title">資料維護</h3>
22
+                        </div>
23
+                        <div id="search_content" class="collapse in">
24
+                            <div class="panel-body">
25
+                                <!-- 時間範圍 from -->
26
+                                <div class="form-group col-xs-12 col-sm-6 col-lg-6">
27
+                                    <label for="sDateStart">時間範圍(起)</label>
28
+                                    <input type="text" class="form-control input-sm" id="sDateStart"
29
+                                           maxlength="10">
30
+                                </div>
31
+                                <!-- 時間範圍 to -->
32
+                                <div class="form-group col-xs-12 col-sm-6 col-lg-6">
33
+                                    <label for="sDateFinal">時間範圍(迄)</label>
34
+                                    <input type="text" class="form-control input-sm" id="sDateFinal"
35
+                                           maxlength="10">
36
+                                </div>
37
+                                <!-- Search -->
38
+                                <div class="form-group col-xs-12 col-sm-12 col-lg-12">
39
+                                    <a class="btn btn-success btn-xs" onclick="javascript: custom_search();">
40
+                                        <div class="glyphicon glyphicon-search"></div>
41
+                                    </a>
42
+                                </div>
43
+                            </div>
44
+                        </div>
45
+                    </div>
46
+                    <hr class="search-hr"/>
47
+                    <!-- 列表段 -->
48
+                    <div class="row">
49
+                        <div class="col-lg-12">
50
+                            <table id="GridView1" class="table table-striped table-bordered" cellspacing="0">
51
+                                <thead>
52
+                                <tr>
53
+                                    <th>ID</th>
54
+                                    <th>圖片</th>
55
+                                    <th>暱稱</th>
56
+                                    <th>留言</th>
57
+                                    <th>標籤</th>
58
+                                    <th>姓名</th>
59
+                                    <th>電話</th>
60
+                                    <th>信箱</th>
61
+                                    <th>地區</th>
62
+                                    <th>時間</th>
63
+                                </tr>
64
+                                </thead>
65
+                            </table>
66
+                        </div>
67
+                    </div>
68
+                </form>
69
+                <!-- row -->
70
+            </div>
71
+        </div>
72
+    </div>
73
+@endsection
74
+
75
+@section('extjs')
76
+    <script>
77
+        $(document).ready(function () {
78
+            var table = $('#GridView1').dataTable({
79
+                "scrollX": true,
80
+                "processing": true,
81
+                "serverSide": true,
82
+                "ajax": "infoManagement/grid",
83
+                "paging": true,
84
+                "ordering": true,
85
+                "info": true,
86
+                "order": [[0, "desc"]],
87
+                "stateSave": true,
88
+                "pagingType": "full",
89
+                "bFilter": true,
90
+                "aoColumnDefs": [
91
+                    {
92
+                        'bSortable': false,
93
+                        'aTargets': [] //不想參加排序的欄位,可指定多個,逗號分隔
94
+                    },
95
+                    {
96
+                        'aTargets': [3],
97
+                        render: $.fn.dataTable.render.ellipsis(20)
98
+                    }
99
+                ]
100
+            });
101
+            // 從網址參觸發搜尋
102
+            custom_search();
103
+            $('#GridView1_filter').hide();
104
+        });
105
+
106
+        //客製化搜尋欄位
107
+        function custom_search() {
108
+            $('#GridView1').DataTable()
109
+                .column(1).search($('#sDateStart').val() + "\n" + $('#sDateFinal').val())
110
+            ;
111
+            $('#GridView1').dataTable().fnDraw(true);
112
+        }
113
+
114
+        // 匯出報告
115
+        $("#export").click(function () {
116
+            //加個讀取中畫面
117
+            $.blockUI({
118
+                css: {
119
+                    border: 'none',
120
+                    padding: '15px',
121
+                    backgroundColor: '#000',
122
+                    '-webkit-border-radius': '10px',
123
+                    '-moz-border-radius': '10px',
124
+                    opacity: .5,
125
+                    color: '#FFF'
126
+                }
127
+            });
128
+            var http = new XMLHttpRequest();
129
+            http.responseType = 'blob';
130
+            var header;
131
+            var blob;
132
+            var url = 'infoManagement/export';
133
+            var params =
134
+                ''
135
+                + 'sDateStart=' + $('#sDateStart').val()
136
+                + '&sDateFinal=' + $('#sDateFinal').val()
137
+            ;
138
+            http.open("POST", url, true);
139
+            http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
140
+            http.onreadystatechange = function () {//Call a function when the state changes.
141
+                if (http.readyState == 4 && http.status == 200) {
142
+                    var filename = "";
143
+                    var disposition = http.getResponseHeader('Content-Disposition');
144
+                    if (disposition && disposition.indexOf('attachment') !== -1) {
145
+                        var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
146
+                        var matches = filenameRegex.exec(disposition);
147
+                        if (matches != null && matches[1]) filename = matches[1].replace(/['"]/g, '');
148
+                    }
149
+                    var type = http.getResponseHeader('Content-Type');
150
+                    blob = new Blob([http.response], {type: type, endings: 'native'});
151
+                    var URL = window.URL || window.webkitURL;
152
+                    var downloadUrl = URL.createObjectURL(blob);
153
+                    var a = document.createElement("a");
154
+                    a.href = downloadUrl;
155
+                    a.download = filename;
156
+                    document.body.appendChild(a);
157
+                    a.click();
158
+                }
159
+                //解除鎖定
160
+                $.unblockUI();
161
+            }
162
+            http.send(params);
163
+            return false;
164
+        });
165
+
166
+        //日期選擇器
167
+        $('#sDateStart').datepicker({
168
+            dateFormat: 'yy-mm-dd'
169
+        }).datepicker("setDate");
170
+        $('#sDateFinal').datepicker({
171
+            dateFormat: 'yy-mm-dd'
172
+        }).datepicker("setDate");
173
+
174
+        setInterval(function () {
175
+            // 註冊手機裝置模擬滑鼠 mouseover 看到的 tooltop 字樣
176
+            $(".ellipsis").unbind("click");
177
+            $(".ellipsis").bind("click", function () {
178
+                var $title = $(this).find(".title");
179
+                if (!$title.length) {
180
+                    $(this).append('<span class="title">' + $(this).attr("title") + '</span>');
181
+                } else {
182
+                    $title.remove();
183
+                }
184
+            });
185
+        }, 1000);
186
+
187
+    </script>
188
+@endsection

+ 194
- 0
resources/views/admin/DataManagement/QuoteDataManagement.blade.php View File

1
+@extends('admin.master')
2
+
3
+@section('content')
4
+    <div class="row">
5
+        <div class="col-lg-12">
6
+            <div class="contentpanel">
7
+                <form id="listForm" method="post">
8
+                    <!-- 功能按鈕(新增/批量處理等等) -->
9
+                    <div class="row" style="margin-bottom: 5px;">
10
+                        <div class="col-lg-12">
11
+                            <!--<ol class="headermenu">
12
+                                <li>
13
+                                    <button class="btn btn-darkblue btn-xs" id="export"><strong>匯出</strong></button>
14
+                                </li>
15
+                            </ol>-->
16
+                        </div>
17
+                    </div>
18
+                    <!-- 搜尋段 -->
19
+                    <div class="panel panel-default">
20
+                        <div class="panel-heading" data-toggle="collapse" data-target="#search_content">
21
+                            <h3 class="panel-title">資料維護</h3>
22
+                        </div>
23
+                        <div id="search_content" class="collapse in">
24
+                            <div class="panel-body">
25
+                                <!-- 時間範圍 from -->
26
+                                <div class="form-group col-xs-12 col-sm-6 col-lg-6">
27
+                                    <label for="sDateStart">時間範圍(起)</label>
28
+                                    <input type="text" class="form-control input-sm" id="sDateStart"
29
+                                           maxlength="10">
30
+                                </div>
31
+                                <!-- 時間範圍 to -->
32
+                                <div class="form-group col-xs-12 col-sm-6 col-lg-6">
33
+                                    <label for="sDateFinal">時間範圍(迄)</label>
34
+                                    <input type="text" class="form-control input-sm" id="sDateFinal"
35
+                                           maxlength="10">
36
+                                </div>
37
+                                <!-- Search -->
38
+                                <div class="form-group col-xs-12 col-sm-12 col-lg-12">
39
+                                    <a class="btn btn-success btn-xs" onclick="javascript: custom_search();">
40
+                                        <div class="glyphicon glyphicon-search"></div>
41
+                                    </a>
42
+                                </div>
43
+                            </div>
44
+                        </div>
45
+                    </div>
46
+                    <hr class="search-hr"/>
47
+                    <!-- 列表段 -->
48
+                    <div class="row">
49
+                        <div class="col-lg-12">
50
+                            <table id="GridView1" class="table table-striped table-bordered" cellspacing="0">
51
+                                <thead>
52
+                                <tr>
53
+                                    <th>報名編號</th>
54
+                                    <th>姓名</th>
55
+                                    <th>手機</th>
56
+                                    <th>信箱</th>
57
+                                    <th>擅長領域</th>
58
+                                    <th>個人獨特故事</th>
59
+                                    <th>你的獨特宣言</th>
60
+                                    <th>上傳檔案</th>
61
+                                    <th>投票數</th>
62
+                                    <th>報名時間</th>
63
+                                    <th>上/下架</th>
64
+                                </tr>
65
+                                </thead>
66
+                            </table>
67
+                        </div>
68
+                    </div>
69
+                </form>
70
+                <!-- row -->
71
+            </div>
72
+        </div>
73
+    </div>
74
+@endsection
75
+
76
+@section('extjs')
77
+    <script>
78
+        $(document).ready(function () {
79
+            var table = $('#GridView1').dataTable({
80
+                "scrollX": true,
81
+                "processing": true,
82
+                "serverSide": true,
83
+                "ajax": "quoteDataManagement/grid",
84
+                "paging": true,
85
+                "ordering": true,
86
+                "info": true,
87
+                "order": [[0, "asc"]],
88
+                "stateSave": true,
89
+                "pagingType": "full",
90
+                "bFilter": true,
91
+                "aoColumnDefs": [
92
+                    {
93
+                        'bSortable': false,
94
+                        'aTargets': [] //不想參加排序的欄位,可指定多個,逗號分隔
95
+                    },
96
+                    {
97
+                        'aTargets': [3],
98
+                        render: $.fn.dataTable.render.ellipsis(20)
99
+                    }
100
+                ]
101
+            });
102
+            // 從網址參觸發搜尋
103
+            custom_search();
104
+            $('#GridView1_filter').hide();
105
+        });
106
+
107
+        //客製化搜尋欄位
108
+        function custom_search() {
109
+            $('#GridView1').DataTable()
110
+                .column(1).search($('#sDateStart').val() + "\n" + $('#sDateFinal').val())
111
+            ;
112
+            $('#GridView1').dataTable().fnDraw(true);
113
+        }
114
+
115
+        // 匯出報告
116
+        $("#export").click(function () {
117
+            //加個讀取中畫面
118
+            $.blockUI({
119
+                css: {
120
+                    border: 'none',
121
+                    padding: '15px',
122
+                    backgroundColor: '#000',
123
+                    '-webkit-border-radius': '10px',
124
+                    '-moz-border-radius': '10px',
125
+                    opacity: .5,
126
+                    color: '#FFF'
127
+                }
128
+            });
129
+            var http = new XMLHttpRequest();
130
+            http.responseType = 'blob';
131
+            var header;
132
+            var blob;
133
+            var url = 'quoteDataManagement/export';
134
+            var params =
135
+                ''
136
+                + 'sDateStart=' + $('#sDateStart').val()
137
+                + '&sDateFinal=' + $('#sDateFinal').val()
138
+            ;
139
+            http.open("POST", url, true);
140
+            http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
141
+            http.onreadystatechange = function () {//Call a function when the state changes.
142
+                if (http.readyState == 4 && http.status == 200) {
143
+                    var filename = "";
144
+                    var disposition = http.getResponseHeader('Content-Disposition');
145
+                    if (disposition && disposition.indexOf('attachment') !== -1) {
146
+                        var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
147
+                        var matches = filenameRegex.exec(disposition);
148
+                        if (matches != null && matches[1]) filename = matches[1].replace(/['"]/g, '');
149
+                    }
150
+                    var type = http.getResponseHeader('Content-Type');
151
+                    blob = new Blob([http.response], {type: type, endings: 'native'});
152
+                    var URL = window.URL || window.webkitURL;
153
+                    var downloadUrl = URL.createObjectURL(blob);
154
+                    var a = document.createElement("a");
155
+                    a.href = downloadUrl;
156
+                    a.download = filename;
157
+                    document.body.appendChild(a);
158
+                    a.click();
159
+                }
160
+                //解除鎖定
161
+                $.unblockUI();
162
+            }
163
+            http.send(params);
164
+            return false;
165
+        });
166
+
167
+        //日期選擇器
168
+        $('#sDateStart').datepicker({
169
+            dateFormat: 'yy-mm-dd'
170
+        }).datepicker("setDate");
171
+        $('#sDateFinal').datepicker({
172
+            dateFormat: 'yy-mm-dd'
173
+        }).datepicker("setDate");
174
+
175
+        setInterval(function () {
176
+            // 註冊手機裝置模擬滑鼠 mouseover 看到的 tooltop 字樣
177
+            $(".ellipsis").unbind("click");
178
+            $(".ellipsis").bind("click", function () {
179
+                var $title = $(this).find(".title");
180
+                if (!$title.length) {
181
+                    $(this).append('<span class="title">' + $(this).attr("title") + '</span>');
182
+                } else {
183
+                    $title.remove();
184
+                }
185
+            });
186
+        }, 1000);
187
+        
188
+        function udtWarning() {
189
+            if(!confirm("您確定要更新此作品的上架狀態嗎?"))
190
+            event.preventDefault();
191
+        }
192
+        
193
+    </script>
194
+@endsection

+ 58
- 0
resources/views/admin/funmenus.blade.php View File

1
+@extends('admin.master')
2
+
3
+@section('content')
4
+    <div class="row">
5
+        <div class="col-md-12">
6
+            <div class="panel panel-dark">
7
+                <div class="panel-heading">
8
+                    <div class="row">
9
+                        <div class="col-md-6">
10
+                            <div class="panel-title">Manage Functions</div>
11
+                        </div>
12
+                        <div class="col-md-6" style="text-align: right">
13
+                            <a class="btn btn-darkblue btn-xs" href="{{ url('backend/Funmenus/create') }}"><strong>Add</strong></a>
14
+                        </div>
15
+                    </div>
16
+                </div>
17
+                <table class="table table-hover">
18
+                    <thead>
19
+                        <tr>
20
+                            <td>#</td>
21
+                            <td>Icon</td>
22
+                            <td>Menu Name</td>
23
+                            <td>Valid</td>
24
+                            <td>Orders</td>
25
+                            <td>Create Time</td>
26
+                            <td>Modify Time</td>
27
+                            <td></td>
28
+                        </tr>
29
+                    </thead>
30
+                    <tbody>
31
+                        @foreach($tables as $data)
32
+                            <tr>
33
+                                <td>{{ $data->id }}</td>
34
+                                <td><i class='{{ $data->icon }}'></i></td>
35
+                                <td>{{ $data->MenuName }}</td>
36
+                                <td>
37
+                                    <input type="checkbox" disabled {{ ($data->Valid == 1) ? "checked" : "" }}>
38
+                                </td>
39
+                                <td>{{ $data->Corder }}</td>
40
+                                <td>{{ $data->created_at }}</td>
41
+                                <td>{{ $data->updated_at }}</td>
42
+                                <td style="text-align: right">
43
+                                    <form method="post" action="{{ url('/backend/Funmenus/delete/'.$data->id) }}">
44
+                                        <a class="btn btn-xs btn-primary" href="{{ url('/backend/Funmenus/'.$data->id) }}">Details</a>
45
+                                        <a class="btn btn-xs btn-success" href="{{ url('/backend/Funmenus/edit/'.$data->id) }}">Edit</a>
46
+                                        {{ csrf_field() }}
47
+                                        {{ method_field('DELETE') }}
48
+                                        <button type="submit" class="btn btn-danger btn-xs"><strong>Delete</strong></button>
49
+                                    </form>
50
+                                </td>
51
+                            </tr>
52
+                        @endforeach
53
+                    </tbody>
54
+                </table>
55
+            </div>
56
+        </div>
57
+    </div>
58
+@endsection

+ 60
- 0
resources/views/admin/funmenusdetail.blade.php View File

1
+@extends('admin.master')
2
+
3
+@section('content')
4
+    <div class="row">
5
+        <div class="col-md-12">
6
+            <div class="panel panel-dark">
7
+                <div class="panel-heading">
8
+                    <div class="row">
9
+                        <div class="col-md-6">
10
+                            <div class="panel-title">Manage Functions</div>
11
+                            <p><span class="fa fa-angle-right"></span>&nbsp;&nbsp;&nbsp;{{ $parentname[0]["MenuName"] }}</p>
12
+                        </div>
13
+                        <div class="col-md-6" style="text-align: right">
14
+                            <a class="btn btn-default btn-xs" href="{{ url('/backend/Funmenus/') }}"><strong>Back</strong></a>
15
+                            &nbsp;
16
+                            <a class="btn btn-darkblue btn-xs" href="{{ url('/backend/Funmenus/'.$id.'/create') }}"><strong>Add</strong></a>
17
+                        </div>
18
+                    </div>
19
+                </div>
20
+                <table class="table table-hover table-primary">
21
+                    <thead>
22
+                        <tr>
23
+                            <td>#</td>
24
+                            <td>Function Name</td>
25
+                            <td>Function Link</td>
26
+                            <td>Function Description</td>
27
+                            <td>Valid</td>
28
+                            <td>Create Time</td>
29
+                            <td>Modify Time</td>
30
+                            <td></td>
31
+                        </tr>
32
+                    </thead>
33
+                    <tbody>
34
+                        @foreach($tables as $data)
35
+                            <tr>
36
+                                <td>{{ $data->id }}</td>
37
+                                <td>{{ $data->FunName }}</td>
38
+                                <td>{{ $data->FunLink }}</td>
39
+                                <td>{{ $data->FunDesc }}</td>
40
+                                <td>
41
+                                    <input type="checkbox" disabled {{ ($data->Valid == 1) ? "checked" : "" }}>
42
+                                </td>
43
+                                <td>{{ $data->created_at }}</td>
44
+                                <td>{{ $data->updated_at }}</td>
45
+                                <td style="text-align: right">
46
+                                    <form method="post" action="{{ url('/backend/Funmenus/'.$id.'/delete/'.$data->id) }}">
47
+                                        <a class="btn btn-xs btn-success" href="{{ url('/backend/Funmenus/'.$id.'/edit/'.$data->id) }}">Edit</a>
48
+                                        {{ csrf_field() }}
49
+                                        {{ method_field('DELETE') }}
50
+                                        <button type="submit" class="btn btn-danger btn-xs"><strong>Delete</strong></button>
51
+                                    </form>
52
+                                </td>
53
+                            </tr>
54
+                        @endforeach
55
+                    </tbody>
56
+                </table>
57
+            </div>
58
+        </div>
59
+    </div>
60
+@endsection

+ 86
- 0
resources/views/admin/funmenusdetailedit.blade.php View File

1
+@extends('admin.master')
2
+
3
+@section('content')
4
+    {{! $mode = ($datas == "") ? "insert" : "modify" }}
5
+    <div class="row">
6
+        <div class="col-md-12">
7
+            <div class="panel panel-primary">
8
+                <div class="panel-heading">
9
+                    <h4 class="panel-title">{{ ($mode == "insert") ? "Create " : "Modify " }}Function</h4>
10
+                </div>
11
+                <form method="post" action="{{ url('/backend/Funmenus/'.$id.'/store') }}">
12
+                    <div class="panel-body">
13
+                        {{ csrf_field() }}
14
+                        @if ($mode == "insert")
15
+                            <input type="hidden" name="mode" value="insert">
16
+                        @else
17
+                            <input type="hidden" name="mode" value="modify">
18
+                            <input type="hidden" name="id" value="{{ $datas->id }}">
19
+                            <input type="hidden" name="detailid" value="{{ $datas2->id }}">
20
+                        @endif
21
+                        <div class="form-group">
22
+                            <label class="col-md-2 control-label">Function Name:</label>
23
+                            <div class="col-md-3">
24
+                                @if ($mode == "insert")
25
+                                    <input id="FunName" name="FunName" class="form-control" maxlength="20" type="text" />
26
+                                @else
27
+                                    <input id="FunName" name="FunName" class="form-control" maxlength="20" type="text" value="{{ $datas->FunName }}" />
28
+                                @endif
29
+                                <label class="error" for="FunName"></label>
30
+                            </div>
31
+                        </div>
32
+                        <div class="form-group">
33
+                            <label class="col-md-2 control-label">Function Link<br />(Route or Controller Name):</label>
34
+                            <div class="col-md-3">
35
+                                @if ($mode == "insert")
36
+                                    <input id="FunLink" name="FunLink" class="form-control" maxlength="128" type="text" />
37
+                                @else
38
+                                    <input id="FunLink" name="FunLink" class="form-control" maxlength="128" type="text" value="{{ $datas->FunLink }}" />
39
+                                @endif
40
+                                <label class="error" for="FunLink"></label>
41
+                            </div>
42
+                        </div>
43
+                        <div class="form-group">
44
+                            <label class="col-md-2 control-label">Function Description:</label>
45
+                            <div class="col-md-3">
46
+                                @if ($mode == "insert")
47
+                                    <input id="FunDesc" name="FunDesc" class="form-control" maxlength="128" type="text" />
48
+                                @else
49
+                                    <input id="FunDesc" name="FunDesc" class="form-control" maxlength="128" type="text" value="{{ $datas->FunDesc }}" />
50
+                                @endif
51
+                                <label class="error" for="FunLink"></label>
52
+                            </div>
53
+                        </div>
54
+                        <div class="form-group">
55
+                            <label class="col-md-2 control-label">Valid:</label>
56
+                            <div class="col-md-3">
57
+                                @if ($mode == "insert")
58
+                                    <input type="checkbox" name="Valid">
59
+                                @else
60
+                                    <input type="checkbox" name="Valid" {{ ($datas->Valid == 1) ? "checked" : "" }}>
61
+                                @endif
62
+                            </div>
63
+                        </div>
64
+                        <div class="form-group">
65
+                            <label class="col-md-2 control-label">Orders:</label>
66
+                            <div class="col-md-1">
67
+                                @if ($mode == "insert")
68
+                                    <input id="Corder" name="Corder" class="form-control" type="number" />
69
+                                @else
70
+                                    <input id="Corder" name="Corder" class="form-control" type="number" value="{{ $datas2->Corder }}" />
71
+                                @endif
72
+                            </div>
73
+                        </div>
74
+
75
+                    </div>
76
+                    <!-- panel-body -->
77
+                    <div class="panel-footer" style="text-align:right">
78
+                        <a class="btn btn-xs btn-default" href="{{ url('/backend/Funmenus/'.$id) }}">Back</a>
79
+                        <input id="btnOK" name="btnOK" value="Submit" class="btn btn-primary btn-xs" type="submit" />
80
+                    </div>
81
+                </form>
82
+                <!-- panel-footer -->
83
+            </div>
84
+        </div>
85
+    </div>
86
+@endsection

+ 74
- 0
resources/views/admin/funmenusedit.blade.php View File

1
+@extends('admin.master')
2
+
3
+@section('content')
4
+    {{! $mode = ($datas == "") ? "insert" : "modify" }}
5
+    <div class="row">
6
+        <div class="col-md-12">
7
+            <div class="panel panel-primary">
8
+                <div class="panel-heading">
9
+                    <h4 class="panel-title">{{ ($mode == "insert") ? "Create " : "Modify " }}Functions Menu</h4>
10
+                </div>
11
+                <form method="post" action="{{ url('/backend/Funmenus/store') }}">
12
+                <div class="panel-body">
13
+                        {{ csrf_field() }}
14
+                        @if ($mode == "insert")
15
+                            <input type="hidden" name="mode" value="insert">
16
+                        @else
17
+                            <input type="hidden" name="mode" value="modify">
18
+                            <input type="hidden" name="id" value="{{ $datas->id }}">
19
+                        @endif
20
+                        <div class="form-group">
21
+                            <label class="col-md-2 control-label">Menu Icon Class Name:</label>
22
+                            <div class="col-md-3">
23
+                                @if ($mode == "insert")
24
+                                    <input id="icon" name="icon" class="form-control" maxlength="20" type="text" />
25
+                                @else
26
+                                    <input id="icon" name="icon" class="form-control" maxlength="20" type="text" value="{{ $datas->icon }}" />
27
+                                @endif
28
+                                <label class="error" for="icon"></label>
29
+                            </div>
30
+                        </div>
31
+                        <div class="form-group">
32
+                            <label class="col-md-2 control-label">Menu Name:</label>
33
+                            <div class="col-md-3">
34
+                                @if ($mode == "insert")
35
+                                    <input id="MenuName" name="MenuName" class="form-control" maxlength="20" type="text" />
36
+                                @else
37
+                                    <input id="MenuName" name="MenuName" class="form-control" maxlength="20" type="text" value="{{ $datas->MenuName }}" />
38
+                                @endif
39
+                                <label class="error" for="MenuName"></label>
40
+                            </div>
41
+                        </div>
42
+                        <div class="form-group">
43
+                            <label class="col-md-2 control-label">Valid:</label>
44
+                            <div class="col-md-3">
45
+                                @if ($mode == "insert")
46
+                                    <input type="checkbox" name="Valid">
47
+                                @else
48
+                                    <input type="checkbox" name="Valid" {{ ($datas->Valid == 1) ? "checked" : "" }}>
49
+                                @endif
50
+                            </div>
51
+                        </div>
52
+                        <div class="form-group">
53
+                            <label class="col-md-2 control-label">Orders:</label>
54
+                            <div class="col-md-1">
55
+                                @if ($mode == "insert")
56
+                                    <input id="Corder" name="Corder" class="form-control" type="number" />
57
+                                @else
58
+                                    <input id="Corder" name="Corder" class="form-control" type="number" value="{{ $datas->Corder }}" />
59
+                                @endif
60
+                            </div>
61
+                        </div>
62
+
63
+                </div>
64
+                <!-- panel-body -->
65
+                <div class="panel-footer" style="text-align:right">
66
+                    <a class="btn btn-xs btn-default" href="{{ url('/backend/Funmenus') }}">Back</a>
67
+                    <input id="btnOK" name="btnOK" value="Submit" class="btn btn-primary btn-xs" type="submit" />
68
+                </div>
69
+                </form>
70
+                <!-- panel-footer -->
71
+            </div>
72
+        </div>
73
+    </div>
74
+@endsection

+ 31
- 0
resources/views/admin/index.blade.php View File

1
+@extends('admin.master')
2
+
3
+@section('content')
4
+<div class="row">
5
+    <div class="col-sm-12 col-md-12">
6
+        <!-- 內容區塊-->
7
+        <table border="0" cellpadding="0" cellspacing="0" style="margin:30px">
8
+            <tr>
9
+                <td>
10
+                    <p style="color: Gray">
11
+                        Login Time:  
12
+                        <span id="ctl00_ContentPlaceHolder1_loginDateTime" style="font-size:Small;">
13
+                            {{ date('Y/m/d H:i:s') }}
14
+                        </span>
15
+                        <br />
16
+                        Name:
17
+                        <span id="ctl00_ContentPlaceHolder1_loginName" style="font-size:Small;">
18
+                            {{ $username }}
19
+                        </span>
20
+                    </p>
21
+                    <p style="color: Gray">
22
+                        Welcome to  <span id="ctl00_ContentPlaceHolder1_labSystemName">{{ config('app.name') }}</span><br />
23
+                        Use the left menu bar to control.<br /><br />
24
+                        Production date: 
25
+                    </p>
26
+                </td>
27
+            </tr>
28
+        </table>
29
+    </div>
30
+</div>
31
+@endsection

+ 79
- 0
resources/views/admin/master.blade.php View File

1
+<!DOCTYPE html>
2
+<html lang="en">
3
+<head>
4
+	@include('admin.uc.head')
5
+</head>
6
+@if(Session::has('msg'))
7
+	<script>alert('{{Session::get('msg')}}')</script>
8
+@endif
9
+<body>
10
+	<!-- Preloader -->
11
+	<div id="preloader">
12
+		<div id="status"><i class="fa fa-spinner fa-spin"></i></div>
13
+	</div>
14
+	<section>
15
+		@include('admin.uc.leftmenu')
16
+		<!-- leftpanel -->
17
+		<div class="mainpanel">
18
+			@include('admin.uc.header')
19
+			<!-- headerbar -->
20
+			@include('admin.uc.pageheader')
21
+			<div class="contentpanel">
22
+				@include('common.errors')
23
+				@yield('content')
24
+				<!-- row -->
25
+			</div>
26
+			<!-- contentpanel -->
27
+		</div>
28
+		<!-- mainpanel -->
29
+	</section>
30
+	@include('admin.uc.foot')
31
+</body>
32
+@yield('extjs')
33
+<script>
34
+$(document).ready(function() {
35
+	var funname = $.cookie('bread-children');
36
+	var funmenu = $.cookie('bread-parent');
37
+	var funid = $.cookie('children-id');
38
+
39
+	if (funmenu == 'Dashboard')
40
+	{
41
+		var $node = $('#Dashboard');
42
+		$node.addClass('active');
43
+	}
44
+	else
45
+	{
46
+		var $node = $('#' + funid)
47
+		$node.addClass('active');
48
+		$node.parents('ul').parents('li').addClass('nav-active active');
49
+		$node.parents('ul').css('display', 'block');
50
+	}
51
+
52
+	if (funmenu != null)
53
+	{
54
+		$('.breadcrumb').append("<li>" + funmenu + "</li>");
55
+	}
56
+
57
+	if (funname != null)
58
+	{
59
+		$('.breadcrumb').append("<li>" + funname + "</li>");
60
+	}
61
+});
62
+
63
+$('.dashboard').click(function(){
64
+	$.cookie('children-id', 0, { path:'/'});
65
+	$.cookie('bread-parent', 'Dashboard', { path:'/'});
66
+	$.cookie('bread-children', null, { path:'/'});
67
+});
68
+
69
+$('.children li a').click(function(){
70
+	var funid = $(this).parents('li').attr('id');
71
+	var funname = $(this).children('span').text();
72
+	var funmenu = $(this).parents('li').children('.parent-name').children('span').text();
73
+	$.cookie('children-id', funid, { path:'/'});
74
+	$.cookie('bread-parent', funmenu, { path:'/'});
75
+	$.cookie('bread-children', funname, { path:'/'});
76
+	console.log(funid + "/" + funmenu + "/" + funname);
77
+})
78
+</script>
79
+</html>

+ 99
- 0
resources/views/admin/password.blade.php View File

1
+@extends('admin.master')
2
+@section('content')
3
+	<div class="row">
4
+		<div class="col-lg-12">
5
+			<form id="pwdForm" class="form-horizontal" method="post" action="">
6
+				{!! csrf_field() !!}
7
+				<div class="panel panel-primary">
8
+					<div class="panel-heading">
9
+						<h4 class="panel-title">Change Password</h4>
10
+					</div>
11
+					<div class="panel-body">
12
+						<div class="form-group">
13
+							<label class="col-lg-2 control-label">New Password:</label>
14
+							<div class="col-lg-4">
15
+								<input id="qpwd1" name="qpwd1" class="form-control" maxlength="20" type="password" />
16
+								<label class="error" for="qpwd1"></label>
17
+							</div>
18
+						</div>
19
+						<div class="form-group">
20
+							<label class="col-lg-2 control-label">Retype Password:</label>
21
+							<div class="col-lg-4">
22
+								<input id="qpwd2" name="qpwd2" class="form-control" maxlength="20" type="password" />
23
+								<label class="error" for="qpwd2"></label>
24
+							</div>
25
+						</div>
26
+					</div>
27
+					<!-- panel-body -->
28
+					<div class="panel-footer" style="text-align:right">
29
+						<input id="btnOK" name="btnOK" value="Submit" class="btn btn-primary btn-xs" type="submit" onclick="submitForm();" />
30
+					</div>
31
+					<!-- panel-footer -->
32
+				</div>
33
+				<!-- panel-default -->
34
+			</form>
35
+		</div>
36
+	</div>
37
+@endsection
38
+
39
+@section('extjs')
40
+	<script>
41
+	//逐個偵錯
42
+	$(function () {
43
+		//初始化需要偵錯的表格
44
+		$('#pwdForm').validate();
45
+		//正規表達驗證初始化
46
+		$.validator.addMethod(
47
+			"regex",
48
+			function (value, element, regexp) {
49
+				var re = new RegExp(regexp);
50
+				return this.optional(element) || re.test(value);
51
+			}
52
+		);
53
+		//各欄位
54
+		$('#qpwd1').rules("add", {
55
+			required: true,
56
+			minlength: 1,
57
+			maxlength: 20,
58
+			messages: {
59
+				required: "Password length must between 1-20",
60
+				minlength: "Password length must between 1-20",
61
+				maxlength: "Password length must between 1-20"
62
+			}
63
+		});
64
+		$('#qpwd2').rules("add", {
65
+			required: true,
66
+			minlength: 1,
67
+			maxlength: 20,
68
+			equalTo: '#qpwd1',
69
+			messages: {
70
+				required: "Retype length must between 1-20",
71
+				minlength: "Retype length must between 1-20",
72
+				maxlength: "Retype length must between 1-20",
73
+				equalTo: "Password mismatch"
74
+			}
75
+		});
76
+	});
77
+	//提交與取消按鈕
78
+	function submitForm() {
79
+		if (!!($("#pwdForm").valid()) === false) {
80
+			return false;
81
+		} else {
82
+			$(document).ready(function() {
83
+				$.blockUI({ css: {
84
+					border: 'none',
85
+					padding: '15px',
86
+					backgroundColor: '#000',
87
+					'-webkit-border-radius': '10px',
88
+					'-moz-border-radius': '10px',
89
+					opacity: .5,
90
+					color: '#fff'
91
+				}});
92
+			});
93
+		}
94
+	}
95
+	function cancelValidate() {
96
+		$("#pwdForm").validate().cancelSubmit = true;
97
+	}
98
+	</script>
99
+@endsection

+ 11
- 0
resources/views/admin/uc/foot.blade.php View File

1
+<script src="{{url('assets/js/bootstrap.min.js')}}"></script>
2
+<script src="{{url('assets/js/modernizr.min.js')}}"></script>
3
+<script src="{{url('assets/js/jquery.sparkline.min.js')}}"></script>
4
+<script src="{{url('assets/js/toggles.min.js')}}"></script>
5
+<script src="{{url('assets/js/retina.min.js')}}"></script>
6
+<script src="{{url('assets/js/flot/jquery.flot.min.js')}}"></script>
7
+<script src="{{url('assets/js/flot/jquery.flot.resize.min.js')}}"></script>
8
+<script src="{{url('assets/js/flot/jquery.flot.spline.min.js')}}"></script>
9
+<script src="{{url('assets/js/morris.min.js')}}"></script>
10
+<script src="{{url('assets/js/raphael-2.1.0.min.js')}}"></script>
11
+<script src="{{url('assets/js/custom.js')}}"></script>

+ 30
- 0
resources/views/admin/uc/head.blade.php View File

1
+<meta charset="utf-8">
2
+<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">
3
+<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
4
+<link rel="shortcut icon" href="{{url('assets/images/favicon.png')}}" type="image/png" />
5
+<title>{{ env('APP_NAME') }}</title>
6
+<link rel="Stylesheet" type="text/css" href="{{url('assets/css/style.default.css')}}"/>
7
+<!--<link rel="Stylesheet" type="text/css" href="{{url('assets/css/style.darkknight.css')}}"/>-->
8
+<script src="{{url('assets/js/jquery-1.11.1.min.js')}}"></script>
9
+<script src="{{url('assets/js/jquery-migrate-1.2.1.min.js')}}"></script>
10
+<script src="{{url('assets/js/jquery-ui-1.10.3.min.js')}}"></script>
11
+<script src="{{url('assets/js/jquery.cookies.js')}}"></script>
12
+<!--<script src="{{url('assets/js/datepicker-en.js')}}"></script>-->
13
+<script src="{{url('assets/js/jquery.validate.min.js')}}"></script>
14
+<script src="{{url('assets/js/jquery.blockUI.js')}}"></script>
15
+<script src="{{url('assets/js/bootstrap-clockpicker.min.js')}}"></script>
16
+<script src="{{url('assets/js/jquery.blockUI.js')}}"></script>
17
+<link href="{{url('assets/css/bootstrap-clockpicker.min.css')}}" rel="stylesheet" />
18
+<link href="{{url('assets/css/jquery.datatables-1.10.8.min.css')}}" rel="stylesheet"/>
19
+<link href="{{url('assets/css/jquery.datatables.rowreorderer.min.css')}}" rel="stylesheet"/>
20
+<script src="{{url('assets/js/jquery.datatables-1.10.8.min.js')}}"></script>
21
+<script src="{{url('assets/js/jquery.datatables.ellipsis.js')}}"></script>
22
+<script src="{{url('assets/js/jquery.datatables.editor.min.js')}}"></script>
23
+<script src="{{url('assets/js/jquery.datatables.rowreorderer.min.js')}}"></script>
24
+
25
+<!--<script src="{{url('assets/js/jquery.onscreen.theringe.min.js')}}"></script>-->
26
+<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
27
+<!--[if lt IE 9]>
28
+	<script src="{{url('assets/js/html5shiv.js')}}"></script>
29
+	<script src="{{url('assets/js/respond.min.js')}}"></script>
30
+<![endif]-->

+ 15
- 0
resources/views/admin/uc/header.blade.php View File

1
+<div class="headerbar">
2
+	<a class="menutoggle"><i class="fa fa-bars"></i></a>
3
+	<label class="hidden-xs" style="float:left; margin-left:5px"><h4>{{ $username }}</h4></label>
4
+	<form action="/backend/logout" method="post">
5
+        {!! csrf_field() !!}
6
+		<div class="header-right">
7
+			<div class="btn-group" style="">
8
+				<button type="submit" class="btn btn-danger btn-sm">
9
+					<i class="glyphicon glyphicon-log-out"></i> Logout
10
+				</button>
11
+			</div>
12
+		</div>
13
+	</form>
14
+	<!-- header-right -->
15
+</div>

+ 36
- 0
resources/views/admin/uc/leftmenu.blade.php View File

1
+<div class="leftpanel">
2
+	<div class="logopanel" style="cursor:pointer;">
3
+        <!--<img src="assets/images/nav_logo.png" style="height: 73px;">-->
4
+		<h1> {{ config('app.name') }} </h1>
5
+	</div>
6
+	<!-- logopanel -->
7
+	<div class="leftpanelinner">
8
+		<!-- This is only visible to small devices -->
9
+		<div class="visible-xs hidden-sm hidden-md hidden-lg">
10
+			<div class="media userlogged nomargin">
11
+				<div class="media-body">
12
+					<h4>{{ $username }}</h4>
13
+					<span>Login</span>
14
+				</div>
15
+			</div>
16
+		</div>
17
+        <h5 class="sidebartitle">Navigation</h5>
18
+		<ul id="navLeftMenu" class="nav nav-pills nav-stacked nav-bracket">
19
+			<!-- 選單區段 -->
20
+			<li class='nav-link' id="Dashboard"><a href='{{ url('backend/') }}' class="dashboard"><i class='fa fa-dashboard'></i><span>DashBoard</span></a></li>
21
+            @foreach($leftmenu as $data)
22
+                <li class='nav-parent'><a href='' class='parent-name'><i class='{{ $data->icon }}'></i><span>{{ $data->menuname }}</span></a><ul class='children'>
23
+                @for($i = 0; $i< count(explode(",",$data->submenuname)); $i++)
24
+                    <li id='{{ str_replace("/", "_", explode(",",$data->submenulink)[$i]) }}' data-level='two'>
25
+                        <a href='{{ url('backend/'.explode(",",$data->submenulink)[$i]) }}'>
26
+                            <i class='fa fa-caret-right'></i>
27
+                            <span>{{ explode(",",$data->submenuname)[$i] }}</span>
28
+                        </a>
29
+                    </li>
30
+                @endfor
31
+                </ul></li>
32
+            @endforeach
33
+		</ul>
34
+	</div>
35
+	<!-- leftpanelinner -->
36
+</div>

+ 7
- 0
resources/views/admin/uc/pageheader.blade.php View File

1
+<div class="pageheader" style="padding: 10px">
2
+	<div class="breadcrumb-wrapper" style="position: relative; top: 0; right: 0; display:block;">
3
+		<span class="label">You are here:</span>
4
+		<ol class="breadcrumb" style="margin-bottom: 0;">
5
+		</ol>
6
+	</div>
7
+</div>

+ 54
- 0
resources/views/admin/usergroups.blade.php View File

1
+@extends('admin.master')
2
+
3
+@section('content')
4
+	<!-- 列表段 -->
5
+	<div class="row">
6
+		<div class="col-lg-12">
7
+			<div class="panel panel-dark">
8
+				<div class="panel-heading">
9
+					<div class="row">
10
+						<div class="col-md-6">
11
+							<div class="panel-title">Manage Groups</div>
12
+						</div>
13
+						<div class="col-md-6" style="text-align: right">
14
+							<a class="btn btn-darkblue btn-xs" href="{{ url('/backend/Usergroups/create') }}"><strong>Add</strong></a>
15
+						</div>
16
+					</div>
17
+				</div>
18
+				<table class="table table-hover" cellspacing="0" width="100%">
19
+					<thead>
20
+						<tr>
21
+							<th>no</th>
22
+							<th>Group Name</th>
23
+							<th>Valid</th>
24
+							<th>Create Time</th>
25
+							<th>Modify Time</th>
26
+							<th>Operate</th>
27
+						</tr>
28
+					</thead>
29
+					<tbody>
30
+						@foreach($tables as $data)
31
+							<tr>
32
+								<td>{{ $data->id }}</td>
33
+								<td>{{ $data->Name }}</td>
34
+								<td><input type="checkbox" {{ ($data->Valid == 1) ? 'checked' : '' }} disabled></td>
35
+								<td>{{ $data->created_at }}</td>
36
+								<td>{{ $data->updated_at }}</td>
37
+								<td style="text-align: right">
38
+									<form method="post" action="{{ url('/backend/Usergroups/'.$data->id) }}">
39
+										<a class="btn btn-warning btn-xs" href="{{ url('/backend/Usergroups/edit/'.$data->id) }}">
40
+											<strong>Edit</strong>
41
+										</a>
42
+										{{ csrf_field() }}
43
+										{{ method_field('DELETE') }}
44
+										<button type="submit" class="btn btn-danger btn-xs"><strong>Delete</strong></button>
45
+									</form>
46
+								</td>
47
+							</tr>
48
+						@endforeach
49
+					</tbody>
50
+				</table>
51
+			</div>
52
+		</div>
53
+	</div>
54
+@endsection

+ 295
- 0
resources/views/admin/usergroupsedit.blade.php View File

1
+@extends('admin.master')
2
+
3
+@section('content')
4
+	<?php
5
+	if ($operdata == "") {
6
+		//Insert Mode
7
+		$_name  = "";
8
+		$_valid = "1";
9
+	} else {
10
+		//Edit Mode
11
+		foreach ($operdata as $data_item1) {
12
+			$_serno	  = $data_item1->id;
13
+			$_name	  = $data_item1->Name;
14
+			$_valid	  = $data_item1->Valid;
15
+			$_cdate	  = $data_item1->created_at;
16
+			$_mdate	  = $data_item1->updated_at;
17
+			$_oid	  = $data_item1->Oid;
18
+		}
19
+	}
20
+	?>
21
+	<div class="row">
22
+		<div class="col-lg-12">
23
+			<form id="EditForm" class="form-horizontal" method="post" action="{{ url('/backend/Usergroups/store') }}">
24
+				{{ csrf_field() }}
25
+				<div class="panel panel-primary">
26
+					<div class="panel-heading">
27
+						<h4 class="panel-title">{{ (($operdata == "") ? "Create " : "Modify ") }}Group</h4>
28
+					</div>
29
+					<div class="panel-body">
30
+						<div>
31
+							<!-- 表格本體 -->
32
+							<table class="table" cellspacing="0" id="DetailsView1" style="border-collapse:collapse;">
33
+								<tbody>
34
+									<!-- 欄位:no -->
35
+									@if ($operdata == "")
36
+										<!-- Insert Mode -->
37
+										<input type="hidden" name="mode" value="insert" />
38
+									@else
39
+										<!-- Edit Mode -->
40
+										<tr>
41
+											<td class="col-lg-2">no</td>
42
+											<td>
43
+												<input name="id" type="hidden" value="{{ $_serno }}" id="serno" />
44
+												{{ $_serno }}
45
+											</td>
46
+										</tr>
47
+									@endif
48
+									<!-- 欄位:Group Name -->
49
+									<!-- ALL Mode -->
50
+									<tr>
51
+										<td class="header-require col-lg-2">Group Name</td>
52
+										<td>
53
+											<div class="col-lg-3 nopadding">
54
+												<input name="Name" type="text" value="{{ $_name }}" maxlength="20" id="name" class="form-control">
55
+												<label class="error" for="name"></label>
56
+											</div>
57
+										</td>
58
+									</tr>
59
+									<!-- 欄位:Valid -->
60
+									<!-- ALL Mode -->
61
+									<tr>
62
+										<td class="col-lg-2">Valid</td>
63
+										<td>
64
+											<input id="valid" type="checkbox" name="Valid" {{ ($_valid=='1')?"checked='checked'":"" }} />
65
+										</td>
66
+									</tr>
67
+									<!-- 欄位:Create Time -->
68
+									@if ($operdata == "")
69
+										<!-- Insert Mode -->
70
+									@else
71
+										<!-- Edit Mode -->
72
+										<tr>
73
+											<td class="col-lg-2">Create Time</td>
74
+											<td>{{ $_cdate }}</td>
75
+										</tr>
76
+									@endif
77
+									<!-- 欄位:Modify Time -->
78
+									@if ($operdata == "")
79
+										<!-- Insert Mode -->
80
+									@else
81
+										<!-- Edit Mode -->
82
+										<tr>
83
+											<td class="col-lg-2">Modify Time</td>
84
+											<td>{{ $_mdate }}</td>
85
+										</tr>
86
+									@endif
87
+									<!-- 欄位:Role -->
88
+									@if ($operdata == "")
89
+										<!-- Insert Mode -->
90
+									@else
91
+										<!-- Edit Mode -->
92
+										<tr>
93
+											<td class="col-lg-2">Role</td>
94
+											<td><span id="oid">{{ $_oid }}</span></td>
95
+										</tr>
96
+									@endif
97
+									<!-- 欄位:Functions -->
98
+									<!-- ALL Mode -->
99
+									<tr>
100
+										<td class="col-lg-2">Functions</td>
101
+										<td>
102
+											<!-- 左側Source區 -->
103
+											<div class="row">
104
+												<div class="col-lg-12">
105
+													<div class="form-group has-warning" style="margin: 0">
106
+														<label class="control-label" for="funlist">Unassign</label>
107
+														<select size="4" name="fFunAll" multiple="multiple" id="fFunAll" class="form-control">
108
+															@foreach($unseleted_funlist as $data)
109
+																<option value='{{ $data->id }}'>{{ $data->FunName }}</option>
110
+															@endforeach
111
+														</select>
112
+													</div>
113
+												</div>
114
+											</div>
115
+											<div class="row">
116
+												<!-- 右側Destination區 -->
117
+												<div class="col-lg-12">
118
+													<div class="form-group has-success" style="margin: 0">
119
+														<label class="control-label" for="funlist">Assigned</label>
120
+														<select size="4" name="FunList" multiple="multiple" id="funlist" class="form-control">
121
+															@foreach($seleted_funlist as $data)
122
+																<option value='{{ $data->id }}'>{{ $data->FunName }}</option>
123
+															@endforeach
124
+														</select>
125
+													</div>
126
+												</div>
127
+											</div>
128
+											<!-- 右側的隱藏控制表單項 -->
129
+											<input type="hidden" id="hidfunlist" name ="hidfunlist"></input>
130
+										</td>
131
+									</tr>
132
+									<!-- 欄位:Role -->
133
+									<!-- ALL Mode -->
134
+									<tr>
135
+										<td class="col-lg-2">Users</td>
136
+										<td>
137
+											<!-- 左側Source區 -->
138
+											<div class="row">
139
+												<div class="col-lg-12">
140
+													<div class="form-group has-warning" style="margin: 0">
141
+														<label class="control-label" for="fUsrAll">Unassign</label>
142
+														<select size="4" name="fUsrAll" multiple="multiple" id="fUsrAll" class="form-control">
143
+															@foreach($unseleted_usrlist as $data)
144
+																<option value='{{ $data->id }}'>{{ $data->name }}({{ $data->email }})</option>
145
+															@endforeach
146
+														</select>
147
+													</div>
148
+												</div>
149
+												<!-- 中間的轉換按鈕 -->
150
+											</div>
151
+											<div class="row">
152
+												<!-- 右側Destination區 -->
153
+												<div class="col-lg-12">
154
+													<div class="form-group has-success" style="margin: 0">
155
+														<label class="control-label" for="usrlist">Assigned</label>
156
+														<select size="4" name="UsrList" multiple="multiple" id="usrlist" class="form-control">
157
+															@foreach($seleted_usrlist as $data)
158
+																<option value='{{ $data->id }}'>{{ $data->name }}({{ $data->email }})</option>
159
+															@endforeach
160
+														</select>
161
+													</div>
162
+												</div>
163
+											</div>
164
+											<!-- 右側的隱藏控制表單項 -->
165
+											<input type="hidden" id="hidusrlist" name ="hidusrlist"></input>
166
+										</td>
167
+									</tr>
168
+									<!-- 下控制按鈕 -->
169
+									<tr>
170
+										<td>&nbsp;</td>
171
+										<td>
172
+											<div style="text-align: right">
173
+												@if ($operdata == "")
174
+													<!-- Insert Mode -->
175
+													<input type="button" name="btnUpdate_foot" value="Create" id="btnUpdate_foot" class="btn btn-primary btn-xs" onclick="submitForm();">
176
+												@else
177
+													<!-- Edit Mode -->
178
+													<input type="button" name="btnUpdate_foot" value="Modify" id="btnUpdate_foot" class="btn btn-primary btn-xs" onclick="submitForm();">
179
+												@endif
180
+												<input type="button" name="btnBackTo2_foot" value="Back" id="btnBackTo2_foot" class="btn btn-default btn-xs">
181
+											</div>
182
+										</td>
183
+									</tr>
184
+								</tbody>
185
+							</table>
186
+						</div>
187
+					</div>
188
+					<!-- panel-body -->
189
+				</div>
190
+			</form>
191
+		</div>
192
+	</div>
193
+@endsection
194
+
195
+@section('extjs')
196
+	<script>
197
+	$(document).ready(function() {
198
+		//Functions:單個項目指派
199
+		$("#fFunAll option").live("dblclick", function() {
200
+			$("#fFunAll option:selected").each(function() {
201
+				$("#funlist").append('<option value="'+$(this).val()+'" >'+ $( this ).text()+'</option>');
202
+			});
203
+			$("#fFunAll option:selected").remove();
204
+		});
205
+		//Functions:單個項目移除
206
+		$("#funlist option").live("dblclick", function() {
207
+			$("#funlist option:selected").each(function() {
208
+				$("#fFunAll").append('<option value="'+$(this).val()+'" >'+ $( this ).text()+'</option>');
209
+			});
210
+			$("#funlist option:selected").remove();
211
+		});
212
+
213
+		//Role:單個項目指派
214
+		$("#fUsrAll option").live("dblclick", function() {
215
+			$("#fUsrAll option:selected").each(function() {
216
+				$("#usrlist").append('<option value="'+$(this).val()+'" >'+ $( this ).text()+'</option>');
217
+			});
218
+			$("#fUsrAll option:selected").remove();
219
+		});
220
+		//Role:單個項目移除
221
+		$("#usrlist option").live("dblclick", function() {
222
+			$("#usrlist option:selected").each(function() {
223
+				$("#fUsrAll").append('<option value="'+$(this).val()+'" >'+ $( this ).text()+'</option>');
224
+			});
225
+			$("#usrlist option:selected").remove();
226
+		});
227
+
228
+		//Back
229
+		$("#btnBackTo2").click(function() {
230
+			location.href='/backend/Usergroups';
231
+		});
232
+		$("#btnBackTo2_foot").click(function() {
233
+			location.href='/backend/Usergroups';
234
+		});
235
+		//初始化需要偵錯的表格
236
+		$('#EditForm').validate();
237
+		//正規表達驗證初始化
238
+		$.validator.addMethod(
239
+			"regex",
240
+			function (value, element, regexp) {
241
+				var re = new RegExp(regexp);
242
+				return this.optional(element) || re.test(value);
243
+			}
244
+		);
245
+		//各欄位
246
+		$('#name').rules("add", {
247
+			required: true,
248
+			minlength: 1,
249
+			maxlength: 20,
250
+			messages: {
251
+				required: "Group Name length must between 1-20",
252
+				minlength: "Group Name length must between 1-20",
253
+				maxlength: "Group Name length must between 1-20"
254
+			}
255
+		});
256
+	});
257
+	//提交與取消按鈕
258
+	function submitForm() {
259
+		if (!!($("#EditForm").valid()) === false) {
260
+			return false;
261
+		} else {
262
+			$(document).ready(function() {
263
+				$.blockUI({ css: {
264
+					border: 'none',
265
+					padding: '15px',
266
+					backgroundColor: '#000',
267
+					'-webkit-border-radius': '10px',
268
+					'-moz-border-radius': '10px',
269
+					opacity: .5,
270
+					color: '#fff'
271
+				}});
272
+			});
273
+		}
274
+		$(document).ready(function() {
275
+			//Functions的加工
276
+			var funlist='';
277
+			$("#funlist option").each(function(){
278
+				funlist += $(this).val() + "," ;
279
+			});
280
+			$("#hidfunlist").val(funlist);
281
+			//Role的加工
282
+			var usrlist='';
283
+			$("#usrlist option").each(function(){
284
+				usrlist += $(this).val() + "," ;
285
+			});
286
+			$("#hidusrlist").val(usrlist);
287
+			$("#EditForm").submit();
288
+		});
289
+
290
+	}
291
+	function cancelValidate() {
292
+		$("#EditForm").validate().cancelSubmit = true;
293
+	}
294
+	</script>
295
+@endsection

+ 388
- 0
resources/views/admin/usergroupsedit.blade.php.bak View File

1
+@extends('admin.master')
2
+
3
+@section('content')
4
+	<?php
5
+	if ($operdata == "") {
6
+		//Insert Mode
7
+		$_name  = "";
8
+		$_valid = "1";
9
+	} else {
10
+		//Edit Mode
11
+		foreach ($operdata as $data_item1) {
12
+			$_serno	  = $data_item1->id;
13
+			$_name	  = $data_item1->Name;
14
+			$_valid	  = $data_item1->Valid;
15
+			$_cdate	  = $data_item1->created_at;
16
+			$_mdate	  = $data_item1->updated_at;
17
+			$_oid	  = $data_item1->Oid;
18
+		}
19
+	}
20
+	?>
21
+	<div class="row">
22
+		<div class="col-lg-12">
23
+			<form id="EditForm" class="form-horizontal" method="post" action="{{ url('/Backend/Usergroups/store') }}">
24
+				{{ csrf_field() }}
25
+				<div class="panel panel-primary">
26
+					<div class="panel-heading">
27
+						<h4 class="panel-title">{{ (($operdata == "") ? "Create " : "Modify ") }}Group</h4>
28
+					</div>
29
+					<div class="panel-body">
30
+						<div>
31
+							<!-- 表格本體 -->
32
+							<table class="table" cellspacing="0" id="DetailsView1" style="border-collapse:collapse;">
33
+								<tbody>
34
+									<!-- 欄位:no -->
35
+									@if ($operdata == "")
36
+										<!-- Insert Mode -->
37
+										<input type="hidden" name="mode" value="insert" />
38
+									@else
39
+										<!-- Edit Mode -->
40
+										<tr>
41
+											<td class="col-lg-2">no</td>
42
+											<td>
43
+												<input name="id" type="hidden" value="{{ $_serno }}" id="serno" />
44
+												{{ $_serno }}
45
+											</td>
46
+										</tr>
47
+									@endif
48
+									<!-- 欄位:Group Name -->
49
+									<!-- ALL Mode -->
50
+									<tr>
51
+										<td class="header-require col-lg-2">Group Name</td>
52
+										<td>
53
+											<div class="col-lg-3 nopadding">
54
+												<input name="Name" type="text" value="{{ $_name }}" maxlength="20" id="name" class="form-control">
55
+												<label class="error" for="name"></label>
56
+											</div>
57
+										</td>
58
+									</tr>
59
+									<!-- 欄位:Valid -->
60
+									<!-- ALL Mode -->
61
+									<tr>
62
+										<td class="col-lg-2">Valid</td>
63
+										<td>
64
+											<input id="valid" type="checkbox" name="Valid" {{ ($_valid=='1')?"checked='checked'":"" }} />
65
+										</td>
66
+									</tr>
67
+									<!-- 欄位:Create Time -->
68
+									@if ($operdata == "")
69
+										<!-- Insert Mode -->
70
+									@else
71
+										<!-- Edit Mode -->
72
+										<tr>
73
+											<td class="col-lg-2">Create Time</td>
74
+											<td>{{ $_cdate }}</td>
75
+										</tr>
76
+									@endif
77
+									<!-- 欄位:Modify Time -->
78
+									@if ($operdata == "")
79
+										<!-- Insert Mode -->
80
+									@else
81
+										<!-- Edit Mode -->
82
+										<tr>
83
+											<td class="col-lg-2">Modify Time</td>
84
+											<td>{{ $_mdate }}</td>
85
+										</tr>
86
+									@endif
87
+									<!-- 欄位:Role -->
88
+									@if ($operdata == "")
89
+										<!-- Insert Mode -->
90
+									@else
91
+										<!-- Edit Mode -->
92
+										<tr>
93
+											<td class="col-lg-2">Role</td>
94
+											<td><span id="oid">{{ $_oid }}</span></td>
95
+										</tr>
96
+									@endif
97
+									<!-- 欄位:Functions -->
98
+									<!-- ALL Mode -->
99
+									<tr>
100
+										<td class="col-lg-2">Functions</td>
101
+										<td>
102
+											<!-- 左側Source區 -->
103
+											<div class="col-md-4">
104
+												<table>
105
+													<tbody>
106
+														<tr style="text-align: center">
107
+															<td style="background-color: #cccccc" class="nopadding">Source</td>
108
+														</tr>
109
+														<tr>
110
+															<td class="nopadding">
111
+																<select size="4" name="fFunAll" multiple="multiple" id="fFunAll" style="height:160px;width:160px;">
112
+																	@foreach($unseleted_funlist as $data)
113
+																		<option value='{{ $data->id }}'>{{ $data->FunName }}</option>
114
+																	@endforeach
115
+																</select>
116
+															</td>
117
+														</tr>
118
+													</tbody>
119
+												</table>
120
+											</div>
121
+											<!-- 中間的轉換按鈕 -->
122
+											<div class="col-md-2">
123
+												<table>
124
+													<tbody>
125
+														<tr style="text-align: center">
126
+															<td style="width: 80px" class="nopadding">&nbsp;</td>
127
+														</tr>
128
+														<tr>
129
+															<td style="text-align: center">
130
+																<input type="button" name="btnAllSelect" value=" >> " id="btnAllSelect" class="btn btn-default form-control btn-xs">
131
+																<br>
132
+																<input type="button" name="btnSelect" value="  >  " id="btnSelect" class="btn btn-default form-control btn-xs">
133
+																<br>
134
+																<input type="button" name="btnRomove" value="  <  " id="btnRomove" class="btn btn-default form-control btn-xs">
135
+																<br>
136
+																<input type="button" name="btnAllRomove" value=" << " id="btnAllRomove" class="btn btn-default form-control btn-xs">
137
+																<br>
138
+															</td>
139
+														</tr>
140
+													</tbody>
141
+												</table>
142
+											</div>
143
+											<!-- 右側Destination區 -->
144
+											<div class="col-md-4">
145
+												<table>
146
+													<tbody>
147
+														<tr style="text-align: center">
148
+															<td style="background-color: #cccccc" class="nopadding">Destination</td>
149
+														</tr>
150
+														<tr>
151
+															<td class="nopadding">
152
+																<select size="4" name="FunList" multiple="multiple" id="funlist" style="height:160px;width:160px;">
153
+																	@foreach($seleted_funlist as $data)
154
+																		<option value='{{ $data->id }}'>{{ $data->FunName }}</option>
155
+																	@endforeach
156
+																</select>
157
+															</td>
158
+														</tr>
159
+													</tbody>
160
+												</table>
161
+											</div>
162
+											<!-- 右側的隱藏控制表單項 -->
163
+											<input type="hidden" id="hidfunlist" name ="hidfunlist"></input>
164
+										</td>
165
+									</tr>
166
+									<!-- 欄位:Role -->
167
+									<!-- ALL Mode -->
168
+									<tr>
169
+										<td class="col-lg-2">Role</td>
170
+										<td>
171
+											<!-- 左側Source區 -->
172
+											<div class="col-md-4">
173
+												<table>
174
+													<tbody>
175
+														<tr style="text-align: center">
176
+															<td style="background-color: #cccccc" class="nopadding">Source</td>
177
+														</tr>
178
+														<tr>
179
+															<td class="nopadding">
180
+																<select size="4" name="fUsrAll" multiple="multiple" id="fUsrAll" style="height:160px;width:160px;">
181
+																	@foreach($unseleted_usrlist as $data)
182
+																		<option value='{{ $data->id }}'>{{ $data->name }}({{ $data->email }})</option>
183
+																	@endforeach
184
+																</select>
185
+															</td>
186
+														</tr>
187
+													</tbody>
188
+												</table>
189
+											</div>
190
+											<!-- 中間的轉換按鈕 -->
191
+											<div class="col-md-2">
192
+												<table>
193
+													<tbody>
194
+														<tr style="text-align: center">
195
+															<td style="width: 80px" class="nopadding">&nbsp;</td>
196
+														</tr>
197
+														<tr>
198
+															<td style="text-align: center">
199
+																<input type="button" name="btnAllSelect" value=" >> " id="UbtnAllSelect" class="btn btn-default form-control btn-xs">
200
+																<br>
201
+																<input type="button" name="btnSelect" value=" > " id="UbtnSelect" class="btn btn-default form-control btn-xs">
202
+																<br>
203
+																<input type="button" name="btnRomove" value=" < " id="UbtnRomove" class="btn btn-default form-control btn-xs">
204
+																<br>
205
+																<input type="button" name="btnAllRomove" value=" << " id="UbtnAllRomove" class="btn btn-default form-control btn-xs">
206
+																<br>
207
+															</td>
208
+														</tr>
209
+													</tbody>
210
+												</table>
211
+											</div>
212
+											<!-- 右側Destination區 -->
213
+											<div class="col-md-4">
214
+												<table>
215
+													<tbody>
216
+														<tr style="text-align: center">
217
+															<td style="background-color: #cccccc" class="nopadding">Destination</td>
218
+														</tr>
219
+														<tr>
220
+															<td class="nopadding">
221
+																<select size="4" name="UsrList" multiple="multiple" id="usrlist" style="height:160px;width:160px;">
222
+																	@foreach($seleted_usrlist as $data)
223
+																		<option value='{{ $data->id }}'>{{ $data->name }}({{ $data->email }})</option>
224
+																	@endforeach
225
+																</select>
226
+															</td>
227
+														</tr>
228
+													</tbody>
229
+												</table>
230
+											</div>
231
+											<!-- 右側的隱藏控制表單項 -->
232
+											<input type="hidden" id="hidusrlist" name ="hidusrlist"></input>
233
+										</td>
234
+									</tr>
235
+									<!-- 下控制按鈕 -->
236
+									<tr>
237
+										<td>&nbsp;</td>
238
+										<td>
239
+											<div style="text-align: right">
240
+												@if ($operdata == "")
241
+													<!-- Insert Mode -->
242
+													<input type="button" name="btnUpdate_foot" value="Create" id="btnUpdate_foot" class="btn btn-primary btn-xs" onclick="submitForm();">
243
+												@else
244
+													<!-- Edit Mode -->
245
+													<input type="button" name="btnUpdate_foot" value="Modify" id="btnUpdate_foot" class="btn btn-primary btn-xs" onclick="submitForm();">
246
+												@endif
247
+												<input type="button" name="btnBackTo2_foot" value="Back" id="btnBackTo2_foot" class="btn btn-default btn-xs">
248
+											</div>
249
+										</td>
250
+									</tr>
251
+								</tbody>
252
+							</table>
253
+						</div>
254
+					</div>
255
+					<!-- panel-body -->
256
+				</div>
257
+			</form>
258
+		</div>
259
+	</div>
260
+@endsection
261
+
262
+@section('extjs')
263
+	<script>
264
+	$(document).ready(function() {
265
+		//Functions:單個項目指派
266
+		$("#btnSelect").click(function() {
267
+			$("#fFunAll option:selected").each(function() {
268
+				$("#funlist").append('<option value="'+$(this).val()+'" >'+ $( this ).text()+'</option>');
269
+			});
270
+			$("#fFunAll option:selected").remove();
271
+		});
272
+		//Functions:單個項目移除
273
+		$("#btnRomove").click(function() {
274
+			$("#funlist option:selected").each(function() {
275
+				$("#fFunAll").append('<option value="'+$(this).val()+'" >'+ $( this ).text()+'</option>');
276
+			});
277
+			$("#funlist option:selected").remove();
278
+		});
279
+		//Functions:所有項目指派
280
+		$("#btnAllSelect").click(function() {
281
+			$("#fFunAll option").each(function() {
282
+				$("#funlist").append('<option value="'+$(this).val()+'" >'+ $( this ).text()+'</option>');
283
+			});
284
+			$("#fFunAll option").remove();
285
+		});
286
+		//Functions:所有項目移除
287
+		$("#btnAllRomove").click(function() {
288
+			$("#funlist option").each(function() {
289
+				$("#fFunAll").append('<option value="'+$(this).val()+'" >'+ $( this ).text()+'</option>');
290
+			});
291
+			$("#funlist option").remove();
292
+		});
293
+		//Role:單個項目指派
294
+		$("#UbtnSelect").click(function() {
295
+			$("#fUsrAll option:selected").each(function() {
296
+				$("#usrlist").append('<option value="'+$(this).val()+'" >'+ $( this ).text()+'</option>');
297
+			});
298
+			$("#fUsrAll option:selected").remove();
299
+		});
300
+		//Role:單個項目移除
301
+		$("#UbtnRomove").click(function() {
302
+			$("#usrlist option:selected").each(function() {
303
+				$("#fUsrAll").append('<option value="'+$(this).val()+'" >'+ $( this ).text()+'</option>');
304
+			});
305
+			$("#usrlist option:selected").remove();
306
+		});
307
+		//Role:所有項目指派
308
+		$("#UbtnAllSelect").click(function() {
309
+			$("#fUsrAll option").each(function() {
310
+				$("#usrlist").append('<option value="'+$(this).val()+'" >'+ $( this ).text()+'</option>');
311
+			});
312
+			$("#fUsrAll option").remove();
313
+		});
314
+		//Role:所有項目移除
315
+		$("#UbtnAllRomove").click(function() {
316
+			$("#usrlist option").each(function() {
317
+				$("#fUsrAll").append('<option value="'+$(this).val()+'" >'+ $( this ).text()+'</option>');
318
+			});
319
+			$("#usrlist option").remove();
320
+		});
321
+		//Back
322
+		$("#btnBackTo2").click(function() {
323
+			location.href='/Backend/Usergroups';
324
+		});
325
+		$("#btnBackTo2_foot").click(function() {
326
+			location.href='/Backend/Usergroups';
327
+		});
328
+		//初始化需要偵錯的表格
329
+		$('#EditForm').validate();
330
+		//正規表達驗證初始化
331
+		$.validator.addMethod(
332
+			"regex",
333
+			function (value, element, regexp) {
334
+				var re = new RegExp(regexp);
335
+				return this.optional(element) || re.test(value);
336
+			}
337
+		);
338
+		//各欄位
339
+		$('#name').rules("add", {
340
+			required: true,
341
+			minlength: 1,
342
+			maxlength: 20,
343
+			messages: {
344
+				required: "Group Name length must between 1-20",
345
+				minlength: "Group Name length must between 1-20",
346
+				maxlength: "Group Name length must between 1-20"
347
+			}
348
+		});
349
+	});
350
+	//提交與取消按鈕
351
+	function submitForm() {
352
+		if (!!($("#EditForm").valid()) === false) {
353
+			return false;
354
+		} else {
355
+			$(document).ready(function() {
356
+				$.blockUI({ css: {
357
+					border: 'none',
358
+					padding: '15px',
359
+					backgroundColor: '#000',
360
+					'-webkit-border-radius': '10px',
361
+					'-moz-border-radius': '10px',
362
+					opacity: .5,
363
+					color: '#fff'
364
+				}});
365
+			});
366
+		}
367
+		$(document).ready(function() {
368
+			//Functions的加工
369
+			var funlist='';
370
+			$("#funlist option").each(function(){
371
+				funlist += $(this).val() + "," ;
372
+			});
373
+			$("#hidfunlist").val(funlist);
374
+			//Role的加工
375
+			var usrlist='';
376
+			$("#usrlist option").each(function(){
377
+				usrlist += $(this).val() + "," ;
378
+			});
379
+			$("#hidusrlist").val(usrlist);
380
+			$("#EditForm").submit();
381
+		});
382
+
383
+	}
384
+	function cancelValidate() {
385
+		$("#EditForm").validate().cancelSubmit = true;
386
+	}
387
+	</script>
388
+@endsection

+ 53
- 0
resources/views/admin/users.blade.php View File

1
+@extends('admin.master')
2
+
3
+@section('content')
4
+	<div class="row">
5
+		<div class="col-lg-12">
6
+			<div class="panel panel-dark">
7
+				<div class="panel-heading">
8
+					<div class="row">
9
+						<div class="col-md-6">
10
+							<div class="panel-title">Manage Users</div>
11
+						</div>
12
+						<div class="col-md-6" style="text-align: right">
13
+							<a class="btn btn-darkblue btn-xs" href="{{ url('/backend/Users/create') }}"><strong>Add</strong></a>
14
+						</div>
15
+					</div>
16
+				</div>
17
+				<table class="table table-hover" cellspacing="0" width="100%">
18
+					<thead>
19
+						<tr>
20
+							<th>no</th>
21
+							<th>Nickname</th>
22
+							<th>Username</th>
23
+							<th>Create Time</th>
24
+							<th>Modify Time</th>
25
+							<th></th>
26
+						</tr>
27
+					</thead>
28
+					<tbody>
29
+						@foreach($tables as $data)
30
+							<tr>
31
+								<td>{{ $data->id }}</td>
32
+								<td>{{ $data->name }}</td>
33
+								<td>{{ $data->email }}</td>
34
+								<td>{{ $data->created_at }}</td>
35
+								<td>{{ $data->updated_at }}</td>
36
+								<td style="text-align: right">
37
+									<form method="post" action="{{ url('/backend/Users/'.$data->id) }}">
38
+										<a class="btn btn-warning btn-xs" href="{{ url('/backend/Users/edit/'.$data->id) }}">
39
+											<strong>Edit</strong>
40
+										</a>
41
+										{{ csrf_field() }}
42
+										{{ method_field('DELETE') }}
43
+										<button type="submit" class="btn btn-danger btn-xs"><strong>Delete</strong></button>
44
+									</form>
45
+								</td>
46
+							</tr>
47
+						@endforeach
48
+					</tbody>
49
+				</table>
50
+			</div>
51
+		</div>
52
+	</div>
53
+@endsection

+ 236
- 0
resources/views/admin/usersedit.blade.php View File

1
+@extends('admin.master')
2
+
3
+@section('content')
4
+	<div class="row">
5
+		<div class="col-lg-12">
6
+			<form id="EditForm" class="form-horizontal" method="post" action="{{ url('/backend/Users/store') }}">
7
+				{{ csrf_field() }}
8
+				<div class="panel panel-primary">
9
+					<div class="panel-heading">
10
+						<h4 class="panel-title">{{ ($operdata == "") ? "Create " : "Modify " }}User</h4>
11
+					</div>
12
+					<div class="panel-body">
13
+						<div>
14
+							<!-- 表格本體 -->
15
+							<table class="table" cellspacing="0" id="DetailsView1" style="border-collapse:collapse;">
16
+								<tbody>
17
+									<!-- 欄位:no -->
18
+									@if ($operdata == "")
19
+										<input type="hidden" name="mode" value="insert" />
20
+										<!-- Insert Mode -->
21
+									@else
22
+										<!-- Edit Mode -->
23
+										<tr>
24
+											<td class="col-lg-2">no</td>
25
+											<td>
26
+												<input name="id" type="hidden" value="{{ $operdata->id }}" id="serno" />
27
+												{{ $operdata->id }}
28
+											</td>
29
+										</tr>
30
+									@endif
31
+									<!-- 欄位:Nickname -->
32
+									<!-- ALL Mode -->
33
+									<tr>
34
+										<td class="header-require col-lg-2">Nickname</td>
35
+										<td>
36
+											<div class="col-lg-3 nopadding">
37
+												@if ($operdata == "")
38
+													<input name="name" type="text" value="" maxlength="20" id="name" class="form-control">
39
+												@else
40
+													<input name="name" type="text" value="{{ $operdata->name }}" maxlength="20" id="name" class="form-control">
41
+												@endif
42
+												<label class="error" for="name"></label>
43
+											</div>
44
+										</td>
45
+									</tr>
46
+									<!-- 欄位:Username -->
47
+									@if ($operdata == "")
48
+										<!-- Insert Mode -->
49
+										<tr>
50
+											<td class="header-require col-lg-2">Username</td>
51
+											<td>
52
+												<div class="col-lg-3 nopadding">
53
+													<input name="email" type="text" value="" maxlength="100" id="email" class="form-control">
54
+													<label class="error" for="email"></label>
55
+												</div>
56
+											</td>
57
+										</tr>
58
+									@else
59
+										<!-- Edit Mode -->
60
+										<tr class="Grid_Item">
61
+											<td class="col-lg-2">Username</td>
62
+											<td>
63
+												{{ $operdata->email }}
64
+											</td>
65
+										</tr>
66
+									@endif
67
+									<!-- 欄位:Password -->
68
+									@if ($operdata == "")
69
+										<!-- Insert Mode -->
70
+										<tr>
71
+											<td class="header-require col-lg-2">Password</td>
72
+											<td>
73
+												<div class="col-lg-3 nopadding">
74
+													<input name="password" type="password" value="" maxlength="20" id="password" class="form-control">
75
+													<label class="error" for="password"></label>
76
+												</div>
77
+											</td>
78
+										</tr>
79
+									@else
80
+										<!-- Edit Mode -->
81
+										<tr>
82
+											<td class="col-lg-2">Password</td>
83
+											<td>
84
+												<div class="col-lg-3 nopadding">
85
+													<input name="password" type="password" value="" maxlength="20" id="password" class="form-control tooltips" data-placement="top" data-toggle="tooltip" data-original-title="Leave it blank if you don't want to change password">
86
+													<label class="error" for="password"></label>
87
+												</div>
88
+											</td>
89
+										</tr>
90
+									@endif
91
+
92
+									<!-- 欄位:Create Time -->
93
+									@if ($operdata == "")
94
+										<!-- Insert Mode -->
95
+									@else
96
+										<!-- Edit Mode -->
97
+										<tr>
98
+											<td class="col-lg-2">Create Time</td>
99
+											<td>{{ $operdata->created_at }}</td>
100
+										</tr>
101
+									@endif
102
+									<!-- 欄位:Modify Time -->
103
+									@if ($operdata == "")
104
+										<!-- Insert Mode -->
105
+									@else
106
+										<!-- Edit Mode -->
107
+										<tr>
108
+											<td class="col-lg-2">Modify Time</td>
109
+											<td>{{ $operdata->updated_at }}</td>
110
+										</tr>
111
+									@endif
112
+
113
+									<!-- 下控制按鈕 -->
114
+									<tr>
115
+										<td>&nbsp;</td>
116
+										<td>
117
+											<div style="text-align: right">
118
+												@if ($operdata == "")
119
+													<!-- Insert Mode -->
120
+													<input type="submit" name="btnUpdate_foot" value="Create" id="btnUpdate_foot" class="btn btn-primary btn-xs" onclick="submitForm();">
121
+												@else
122
+													<!-- Edit Mode -->
123
+													<input type="submit" name="btnUpdate_foot" value="Modify" id="btnUpdate_foot" class="btn btn-primary btn-xs" onclick="submitForm();">
124
+												@endif
125
+												<input type="button" name="btnBackTo2_foot" value="Back" id="btnBackTo2_foot" class="btn btn-default btn-xs">
126
+											</div>
127
+										</td>
128
+									</tr>
129
+								</tbody>
130
+							</table>
131
+						</div>
132
+					</div>
133
+					<!-- panel-body -->
134
+				</div>
135
+			</form>
136
+		</div>
137
+	</div>
138
+@endsection
139
+
140
+@section('extjs')
141
+	<script>
142
+	$(document).ready(function() {
143
+		//Back
144
+		$("#btnBackTo2").click(function() {
145
+			location.href='{{ url('backend/Users') }}';
146
+		});
147
+		$("#btnBackTo2_foot").click(function() {
148
+			location.href='{{ url('backend/Users') }}';
149
+		});
150
+		//初始化需要偵錯的表格
151
+		$('#EditForm').validate();
152
+		//正規表達驗證初始化
153
+		$.validator.addMethod(
154
+			"regex",
155
+			function (value, element, regexp) {
156
+				var re = new RegExp(regexp);
157
+				return this.optional(element) || re.test(value);
158
+			}
159
+		);
160
+		//各欄位
161
+		$('#name').rules("add", {
162
+			required: true,
163
+			minlength: 1,
164
+			maxlength: 20,
165
+			messages: {
166
+				required: "Nickname length must between 1-20",
167
+				minlength: "Nickname length must between 1-20",
168
+				maxlength: "Nickname length must between 1-20"
169
+			}
170
+		});
171
+		@if ($operdata == "")
172
+		//Insert Mode
173
+		$('#email').rules("add", {
174
+			required: true,
175
+			email: true,
176
+			minlength: 1,
177
+			maxlength: 100,
178
+			messages: {
179
+				required: "Username length must between 1-100",
180
+				email: "Username must be an email address",
181
+				minlength: "Username length must between 1-100",
182
+				maxlength: "Username length must between 1-100"
183
+			}
184
+		});
185
+		@else
186
+		//Edit Mode
187
+		@endif
188
+		@if ($operdata == "")
189
+		//Insert Mode
190
+		$('#password').rules("add", {
191
+			required: true,
192
+			minlength: 1,
193
+			maxlength: 20,
194
+			messages: {
195
+				required: "Password length must between 1-20",
196
+				minlength: "Password length must between 1-20",
197
+				maxlength: "Password length must between 1-20"
198
+			}
199
+		});
200
+		@else
201
+		//Edit Mode
202
+		$('#password').rules("add", {
203
+			required: false,
204
+			minlength: 0,
205
+			maxlength: 20,
206
+			messages: {
207
+				required: "Password length must between 0-20",
208
+				minlength: "Password length must between 0-20",
209
+				maxlength: "Password length must between 0-20"
210
+			}
211
+		});
212
+		@endif
213
+	});
214
+	//提交與取消按鈕
215
+	function submitForm() {
216
+		if (!!($("#EditForm").valid()) === false) {
217
+			return false;
218
+		} else {
219
+			$(document).ready(function() {
220
+				$.blockUI({ css: {
221
+					border: 'none',
222
+					padding: '15px',
223
+					backgroundColor: '#000',
224
+					'-webkit-border-radius': '10px',
225
+					'-moz-border-radius': '10px',
226
+					opacity: .5,
227
+					color: '#fff'
228
+				}});
229
+			});
230
+		}
231
+	}
232
+	function cancelValidate() {
233
+		$("#EditForm").validate().cancelSubmit = true;
234
+	}
235
+	</script>
236
+@endsection

+ 100
- 0
resources/views/auth/login.blade.php View File

1
+<!DOCTYPE html>
2
+<html lang="en">
3
+	<head>
4
+		@include('admin.uc.head')
5
+	</head>
6
+	<body class="signin">
7
+		<section>
8
+			<div class="signinpanel">
9
+				<div class="row">
10
+					<div class="col-md-3"></div>
11
+					<div class="col-md-6">
12
+						<!-- 登入表單段 -->
13
+						<form id="loginForm" method="post" action="login">
14
+                            @csrf
15
+							<h4 class="nomargin">{{ config('app.name') }}</h4>
16
+							<input id="qusername" name="email" placeholder="Username" class="form-control uname" maxlength="100" type="text" />
17
+							<label class="error" for="email"></label>
18
+							<input id="qpassword" name="password" placeholder="Password" class="form-control pword" maxlength="20" type="password" />
19
+							<label class="error" for="password"></label>
20
+							<input id="btnSignIn" name="btnSignIn" value="Login" class="btn btn-block btn-success" type="submit" onclick="submitForm();" />
21
+						</form>
22
+					</div>
23
+					<div class="col-md-3"></div>
24
+					<!-- col-sm-5 -->
25
+				</div>
26
+				<!-- row -->
27
+				<div class="signup-footer">
28
+					<div class="pull-left">
29
+						<?php echo env('COPY_RIGHT')?>
30
+					</div>
31
+					<div class="pull-right">
32
+						<?php echo env('CREATOR')?>
33
+					</div>
34
+				</div>
35
+			</div>
36
+			<!-- signin -->
37
+		</section>
38
+		@include('admin.uc.foot')
39
+		<!-- 表單JS -->
40
+		<script>
41
+			//逐個偵錯
42
+			$(function () {
43
+				//初始化需要偵錯的表格
44
+				$('#loginForm').validate();
45
+				//正規表達驗證初始化
46
+				$.validator.addMethod(
47
+					"regex",
48
+					function (value, element, regexp) {
49
+						var re = new RegExp(regexp);
50
+						return this.optional(element) || re.test(value);
51
+					}
52
+				);
53
+				//各欄位
54
+				$('#qusername').rules("add", {
55
+					required: true,
56
+					email: true,
57
+					minlength: 1,
58
+					maxlength: 100,
59
+					messages: {
60
+						required: "Username length must between 1-100",
61
+						email: "Username must be an email address",
62
+						minlength: "Username length must between 1-100",
63
+						maxlength: "Username length must between 1-100"
64
+					}
65
+				});
66
+				$('#qpassword').rules("add", {
67
+					required: true,
68
+					minlength: 1,
69
+					maxlength: 20,
70
+					messages: {
71
+						required: "Password length must between 1-20",
72
+						minlength: "Password length must between 1-20",
73
+						maxlength: "Password length must between 1-20"
74
+					}
75
+				});
76
+			});
77
+			//提交與取消按鈕
78
+			function submitForm() {
79
+				if (!!($("#loginForm").valid()) === false) {
80
+					return false;
81
+				} else {
82
+					$(document).ready(function() {
83
+						$.blockUI({ css: {
84
+							border: 'none',
85
+							padding: '15px',
86
+							backgroundColor: '#000',
87
+							'-webkit-border-radius': '10px',
88
+							'-moz-border-radius': '10px',
89
+							opacity: .5,
90
+							color: '#fff'
91
+						}});
92
+					});
93
+				}
94
+			}
95
+			function cancelValidate() {
96
+				$("#loginForm").validate().cancelSubmit = true;
97
+			}
98
+		</script>
99
+	</body>
100
+</html>

+ 13
- 0
resources/views/common/errors.blade.php View File

1
+@if (count($errors) > 0)
2
+    <!-- 表單錯誤清單 -->
3
+    <div class="alert alert-danger alert-dismissible" role="alert">
4
+        <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
5
+        <strong>Oops!!</strong>
6
+        <br />
7
+        <ul>
8
+            @foreach ($errors->all() as $error)
9
+                <li>{{ $error }}</li>
10
+            @endforeach
11
+        </ul>
12
+    </div>
13
+@endif

+ 22
- 0
resources/views/shareToFacebook.blade.php View File

1
+<!DOCTYPE html>
2
+<html lang="zh-Hant-TW" prefix="og: http://ogp.me/ns#">
3
+<head>
4
+    <meta charset="UTF-8">
5
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+    <meta http-equiv="X-UA-Compatible" content="ie=edge">
7
+    <meta property="og:type" content="website" />
8
+    <meta property="og:title" content="{{ $webTitle }}" />
9
+    <meta property="og:description" content="{{ $webDesc }}" />
10
+    <meta property="og:image" content="{{ $imagePath }}" />
11
+    <meta property="og:image:type" content="image/jpg" />
12
+    <meta property="og:image:width" content="1200" />
13
+    <meta property="og:image:height" content="630" />
14
+    <title> {{ $webTitle }} </title>
15
+</head>
16
+<body>
17
+    <script>
18
+        location.href = '{{ $redirectUrl }}';
19
+    </script>
20
+</body>
21
+
22
+</html>

+ 0
- 132
resources/views/welcome.blade.php View File

1
-<!DOCTYPE html>
2
-<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
3
-    <head>
4
-        <meta charset="utf-8">
5
-        <meta name="viewport" content="width=device-width, initial-scale=1">
6
-
7
-        <title>Laravel</title>
8
-
9
-        <!-- Fonts -->
10
-        <link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap" rel="stylesheet">
11
-
12
-        <!-- Styles -->
13
-        <style>
14
-            /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}a{background-color:transparent}[hidden]{display:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{box-sizing:border-box;border:0 solid #e2e8f0}a{color:inherit;text-decoration:inherit}svg,video{display:block;vertical-align:middle}video{max-width:100%;height:auto}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f7fafc;background-color:rgba(247,250,252,var(--bg-opacity))}.border-gray-200{--border-opacity:1;border-color:#edf2f7;border-color:rgba(237,242,247,var(--border-opacity))}.border-t{border-top-width:1px}.flex{display:flex}.grid{display:grid}.hidden{display:none}.items-center{align-items:center}.justify-center{justify-content:center}.font-semibold{font-weight:600}.h-5{height:1.25rem}.h-8{height:2rem}.h-16{height:4rem}.text-sm{font-size:.875rem}.text-lg{font-size:1.125rem}.leading-7{line-height:1.75rem}.mx-auto{margin-left:auto;margin-right:auto}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.ml-2{margin-left:.5rem}.mt-4{margin-top:1rem}.ml-4{margin-left:1rem}.mt-8{margin-top:2rem}.ml-12{margin-left:3rem}.-mt-px{margin-top:-1px}.max-w-6xl{max-width:72rem}.min-h-screen{min-height:100vh}.overflow-hidden{overflow:hidden}.p-6{padding:1.5rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.pt-8{padding-top:2rem}.fixed{position:fixed}.relative{position:relative}.top-0{top:0}.right-0{right:0}.shadow{box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.text-center{text-align:center}.text-gray-200{--text-opacity:1;color:#edf2f7;color:rgba(237,242,247,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#e2e8f0;color:rgba(226,232,240,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#a0aec0;color:rgba(160,174,192,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#718096;color:rgba(113,128,150,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#4a5568;color:rgba(74,85,104,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#1a202c;color:rgba(26,32,44,var(--text-opacity))}.underline{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.w-5{width:1.25rem}.w-8{width:2rem}.w-auto{width:auto}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}@media (min-width:640px){.sm\:rounded-lg{border-radius:.5rem}.sm\:block{display:block}.sm\:items-center{align-items:center}.sm\:justify-start{justify-content:flex-start}.sm\:justify-between{justify-content:space-between}.sm\:h-20{height:5rem}.sm\:ml-0{margin-left:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pt-0{padding-top:0}.sm\:text-left{text-align:left}.sm\:text-right{text-align:right}}@media (min-width:768px){.md\:border-t-0{border-top-width:0}.md\:border-l{border-left-width:1px}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1024px){.lg\:px-8{padding-left:2rem;padding-right:2rem}}@media (prefers-color-scheme:dark){.dark\:bg-gray-800{--bg-opacity:1;background-color:#2d3748;background-color:rgba(45,55,72,var(--bg-opacity))}.dark\:bg-gray-900{--bg-opacity:1;background-color:#1a202c;background-color:rgba(26,32,44,var(--bg-opacity))}.dark\:border-gray-700{--border-opacity:1;border-color:#4a5568;border-color:rgba(74,85,104,var(--border-opacity))}.dark\:text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.dark\:text-gray-400{--text-opacity:1;color:#cbd5e0;color:rgba(203,213,224,var(--text-opacity))}.dark\:text-gray-500{--tw-text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--tw-text-opacity))}}
15
-        </style>
16
-
17
-        <style>
18
-            body {
19
-                font-family: 'Nunito', sans-serif;
20
-            }
21
-        </style>
22
-    </head>
23
-    <body class="antialiased">
24
-        <div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center py-4 sm:pt-0">
25
-            @if (Route::has('login'))
26
-                <div class="hidden fixed top-0 right-0 px-6 py-4 sm:block">
27
-                    @auth
28
-                        <a href="{{ url('/home') }}" class="text-sm text-gray-700 dark:text-gray-500 underline">Home</a>
29
-                    @else
30
-                        <a href="{{ route('login') }}" class="text-sm text-gray-700 dark:text-gray-500 underline">Log in</a>
31
-
32
-                        @if (Route::has('register'))
33
-                            <a href="{{ route('register') }}" class="ml-4 text-sm text-gray-700 dark:text-gray-500 underline">Register</a>
34
-                        @endif
35
-                    @endauth
36
-                </div>
37
-            @endif
38
-
39
-            <div class="max-w-6xl mx-auto sm:px-6 lg:px-8">
40
-                <div class="flex justify-center pt-8 sm:justify-start sm:pt-0">
41
-                    <svg viewBox="0 0 651 192" fill="none" xmlns="http://www.w3.org/2000/svg" class="h-16 w-auto text-gray-700 sm:h-20">
42
-                        <g clip-path="url(#clip0)" fill="#EF3B2D">
43
-                            <path d="M248.032 44.676h-16.466v100.23h47.394v-14.748h-30.928V44.676zM337.091 87.202c-2.101-3.341-5.083-5.965-8.949-7.875-3.865-1.909-7.756-2.864-11.669-2.864-5.062 0-9.69.931-13.89 2.792-4.201 1.861-7.804 4.417-10.811 7.661-3.007 3.246-5.347 6.993-7.016 11.239-1.672 4.249-2.506 8.713-2.506 13.389 0 4.774.834 9.26 2.506 13.459 1.669 4.202 4.009 7.925 7.016 11.169 3.007 3.246 6.609 5.799 10.811 7.66 4.199 1.861 8.828 2.792 13.89 2.792 3.913 0 7.804-.955 11.669-2.863 3.866-1.908 6.849-4.533 8.949-7.875v9.021h15.607V78.182h-15.607v9.02zm-1.431 32.503c-.955 2.578-2.291 4.821-4.009 6.73-1.719 1.91-3.795 3.437-6.229 4.582-2.435 1.146-5.133 1.718-8.091 1.718-2.96 0-5.633-.572-8.019-1.718-2.387-1.146-4.438-2.672-6.156-4.582-1.719-1.909-3.032-4.152-3.938-6.73-.909-2.577-1.36-5.298-1.36-8.161 0-2.864.451-5.585 1.36-8.162.905-2.577 2.219-4.819 3.938-6.729 1.718-1.908 3.77-3.437 6.156-4.582 2.386-1.146 5.059-1.718 8.019-1.718 2.958 0 5.656.572 8.091 1.718 2.434 1.146 4.51 2.674 6.229 4.582 1.718 1.91 3.054 4.152 4.009 6.729.953 2.577 1.432 5.298 1.432 8.162-.001 2.863-.479 5.584-1.432 8.161zM463.954 87.202c-2.101-3.341-5.083-5.965-8.949-7.875-3.865-1.909-7.756-2.864-11.669-2.864-5.062 0-9.69.931-13.89 2.792-4.201 1.861-7.804 4.417-10.811 7.661-3.007 3.246-5.347 6.993-7.016 11.239-1.672 4.249-2.506 8.713-2.506 13.389 0 4.774.834 9.26 2.506 13.459 1.669 4.202 4.009 7.925 7.016 11.169 3.007 3.246 6.609 5.799 10.811 7.66 4.199 1.861 8.828 2.792 13.89 2.792 3.913 0 7.804-.955 11.669-2.863 3.866-1.908 6.849-4.533 8.949-7.875v9.021h15.607V78.182h-15.607v9.02zm-1.432 32.503c-.955 2.578-2.291 4.821-4.009 6.73-1.719 1.91-3.795 3.437-6.229 4.582-2.435 1.146-5.133 1.718-8.091 1.718-2.96 0-5.633-.572-8.019-1.718-2.387-1.146-4.438-2.672-6.156-4.582-1.719-1.909-3.032-4.152-3.938-6.73-.909-2.577-1.36-5.298-1.36-8.161 0-2.864.451-5.585 1.36-8.162.905-2.577 2.219-4.819 3.938-6.729 1.718-1.908 3.77-3.437 6.156-4.582 2.386-1.146 5.059-1.718 8.019-1.718 2.958 0 5.656.572 8.091 1.718 2.434 1.146 4.51 2.674 6.229 4.582 1.718 1.91 3.054 4.152 4.009 6.729.953 2.577 1.432 5.298 1.432 8.162 0 2.863-.479 5.584-1.432 8.161zM650.772 44.676h-15.606v100.23h15.606V44.676zM365.013 144.906h15.607V93.538h26.776V78.182h-42.383v66.724zM542.133 78.182l-19.616 51.096-19.616-51.096h-15.808l25.617 66.724h19.614l25.617-66.724h-15.808zM591.98 76.466c-19.112 0-34.239 15.706-34.239 35.079 0 21.416 14.641 35.079 36.239 35.079 12.088 0 19.806-4.622 29.234-14.688l-10.544-8.158c-.006.008-7.958 10.449-19.832 10.449-13.802 0-19.612-11.127-19.612-16.884h51.777c2.72-22.043-11.772-40.877-33.023-40.877zm-18.713 29.28c.12-1.284 1.917-16.884 18.589-16.884 16.671 0 18.697 15.598 18.813 16.884h-37.402zM184.068 43.892c-.024-.088-.073-.165-.104-.25-.058-.157-.108-.316-.191-.46-.056-.097-.137-.176-.203-.265-.087-.117-.161-.242-.265-.345-.085-.086-.194-.148-.29-.223-.109-.085-.206-.182-.327-.252l-.002-.001-.002-.002-35.648-20.524a2.971 2.971 0 00-2.964 0l-35.647 20.522-.002.002-.002.001c-.121.07-.219.167-.327.252-.096.075-.205.138-.29.223-.103.103-.178.228-.265.345-.066.089-.147.169-.203.265-.083.144-.133.304-.191.46-.031.085-.08.162-.104.25-.067.249-.103.51-.103.776v38.979l-29.706 17.103V24.493a3 3 0 00-.103-.776c-.024-.088-.073-.165-.104-.25-.058-.157-.108-.316-.191-.46-.056-.097-.137-.176-.203-.265-.087-.117-.161-.242-.265-.345-.085-.086-.194-.148-.29-.223-.109-.085-.206-.182-.327-.252l-.002-.001-.002-.002L40.098 1.396a2.971 2.971 0 00-2.964 0L1.487 21.919l-.002.002-.002.001c-.121.07-.219.167-.327.252-.096.075-.205.138-.29.223-.103.103-.178.228-.265.345-.066.089-.147.169-.203.265-.083.144-.133.304-.191.46-.031.085-.08.162-.104.25-.067.249-.103.51-.103.776v122.09c0 1.063.568 2.044 1.489 2.575l71.293 41.045c.156.089.324.143.49.202.078.028.15.074.23.095a2.98 2.98 0 001.524 0c.069-.018.132-.059.2-.083.176-.061.354-.119.519-.214l71.293-41.045a2.971 2.971 0 001.489-2.575v-38.979l34.158-19.666a2.971 2.971 0 001.489-2.575V44.666a3.075 3.075 0 00-.106-.774zM74.255 143.167l-29.648-16.779 31.136-17.926.001-.001 34.164-19.669 29.674 17.084-21.772 12.428-43.555 24.863zm68.329-76.259v33.841l-12.475-7.182-17.231-9.92V49.806l12.475 7.182 17.231 9.92zm2.97-39.335l29.693 17.095-29.693 17.095-29.693-17.095 29.693-17.095zM54.06 114.089l-12.475 7.182V46.733l17.231-9.92 12.475-7.182v74.537l-17.231 9.921zM38.614 7.398l29.693 17.095-29.693 17.095L8.921 24.493 38.614 7.398zM5.938 29.632l12.475 7.182 17.231 9.92v79.676l.001.005-.001.006c0 .114.032.221.045.333.017.146.021.294.059.434l.002.007c.032.117.094.222.14.334.051.124.088.255.156.371a.036.036 0 00.004.009c.061.105.149.191.222.288.081.105.149.22.244.314l.008.01c.084.083.19.142.284.215.106.083.202.178.32.247l.013.005.011.008 34.139 19.321v34.175L5.939 144.867V29.632h-.001zm136.646 115.235l-65.352 37.625V148.31l48.399-27.628 16.953-9.677v33.862zm35.646-61.22l-29.706 17.102V66.908l17.231-9.92 12.475-7.182v33.841z"/>
44
-                        </g>
45
-                    </svg>
46
-                </div>
47
-
48
-                <div class="mt-8 bg-white dark:bg-gray-800 overflow-hidden shadow sm:rounded-lg">
49
-                    <div class="grid grid-cols-1 md:grid-cols-2">
50
-                        <div class="p-6">
51
-                            <div class="flex items-center">
52
-                                <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"></path></svg>
53
-                                <div class="ml-4 text-lg leading-7 font-semibold"><a href="https://laravel.com/docs" class="underline text-gray-900 dark:text-white">Documentation</a></div>
54
-                            </div>
55
-
56
-                            <div class="ml-12">
57
-                                <div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
58
-                                    Laravel has wonderful, thorough documentation covering every aspect of the framework. Whether you are new to the framework or have previous experience with Laravel, we recommend reading all of the documentation from beginning to end.
59
-                                </div>
60
-                            </div>
61
-                        </div>
62
-
63
-                        <div class="p-6 border-t border-gray-200 dark:border-gray-700 md:border-t-0 md:border-l">
64
-                            <div class="flex items-center">
65
-                                <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M3 9a2 2 0 012-2h.93a2 2 0 001.664-.89l.812-1.22A2 2 0 0110.07 4h3.86a2 2 0 011.664.89l.812 1.22A2 2 0 0018.07 7H19a2 2 0 012 2v9a2 2 0 01-2 2H5a2 2 0 01-2-2V9z"></path><path d="M15 13a3 3 0 11-6 0 3 3 0 016 0z"></path></svg>
66
-                                <div class="ml-4 text-lg leading-7 font-semibold"><a href="https://laracasts.com" class="underline text-gray-900 dark:text-white">Laracasts</a></div>
67
-                            </div>
68
-
69
-                            <div class="ml-12">
70
-                                <div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
71
-                                    Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process.
72
-                                </div>
73
-                            </div>
74
-                        </div>
75
-
76
-                        <div class="p-6 border-t border-gray-200 dark:border-gray-700">
77
-                            <div class="flex items-center">
78
-                                <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M7 8h10M7 12h4m1 8l-4-4H5a2 2 0 01-2-2V6a2 2 0 012-2h14a2 2 0 012 2v8a2 2 0 01-2 2h-3l-4 4z"></path></svg>
79
-                                <div class="ml-4 text-lg leading-7 font-semibold"><a href="https://laravel-news.com/" class="underline text-gray-900 dark:text-white">Laravel News</a></div>
80
-                            </div>
81
-
82
-                            <div class="ml-12">
83
-                                <div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
84
-                                    Laravel News is a community driven portal and newsletter aggregating all of the latest and most important news in the Laravel ecosystem, including new package releases and tutorials.
85
-                                </div>
86
-                            </div>
87
-                        </div>
88
-
89
-                        <div class="p-6 border-t border-gray-200 dark:border-gray-700 md:border-l">
90
-                            <div class="flex items-center">
91
-                                <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="w-8 h-8 text-gray-500"><path d="M3.055 11H5a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v2.945M8 3.935V5.5A2.5 2.5 0 0010.5 8h.5a2 2 0 012 2 2 2 0 104 0 2 2 0 012-2h1.064M15 20.488V18a2 2 0 012-2h3.064M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg>
92
-                                <div class="ml-4 text-lg leading-7 font-semibold text-gray-900 dark:text-white">Vibrant Ecosystem</div>
93
-                            </div>
94
-
95
-                            <div class="ml-12">
96
-                                <div class="mt-2 text-gray-600 dark:text-gray-400 text-sm">
97
-                                    Laravel's robust library of first-party tools and libraries, such as <a href="https://forge.laravel.com" class="underline">Forge</a>, <a href="https://vapor.laravel.com" class="underline">Vapor</a>, <a href="https://nova.laravel.com" class="underline">Nova</a>, and <a href="https://envoyer.io" class="underline">Envoyer</a> help you take your projects to the next level. Pair them with powerful open source libraries like <a href="https://laravel.com/docs/billing" class="underline">Cashier</a>, <a href="https://laravel.com/docs/dusk" class="underline">Dusk</a>, <a href="https://laravel.com/docs/broadcasting" class="underline">Echo</a>, <a href="https://laravel.com/docs/horizon" class="underline">Horizon</a>, <a href="https://laravel.com/docs/sanctum" class="underline">Sanctum</a>, <a href="https://laravel.com/docs/telescope" class="underline">Telescope</a>, and more.
98
-                                </div>
99
-                            </div>
100
-                        </div>
101
-                    </div>
102
-                </div>
103
-
104
-                <div class="flex justify-center mt-4 sm:items-center sm:justify-between">
105
-                    <div class="text-center text-sm text-gray-500 sm:text-left">
106
-                        <div class="flex items-center">
107
-                            <svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" stroke="currentColor" class="-mt-px w-5 h-5 text-gray-400">
108
-                                <path d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13L5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 100 4 2 2 0 000-4zm-8 2a2 2 0 11-4 0 2 2 0 014 0z"></path>
109
-                            </svg>
110
-
111
-                            <a href="https://laravel.bigcartel.com" class="ml-1 underline">
112
-                                Shop
113
-                            </a>
114
-
115
-                            <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="ml-4 -mt-px w-5 h-5 text-gray-400">
116
-                                <path d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"></path>
117
-                            </svg>
118
-
119
-                            <a href="https://github.com/sponsors/taylorotwell" class="ml-1 underline">
120
-                                Sponsor
121
-                            </a>
122
-                        </div>
123
-                    </div>
124
-
125
-                    <div class="ml-4 text-center text-sm text-gray-500 sm:text-right sm:ml-0">
126
-                        Laravel v{{ Illuminate\Foundation\Application::VERSION }} (PHP v{{ PHP_VERSION }})
127
-                    </div>
128
-                </div>
129
-            </div>
130
-        </div>
131
-    </body>
132
-</html>