Initial commit
This commit is contained in:
5
.buildpath
Normal file
5
.buildpath
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<buildpath>
|
||||||
|
<buildpathentry kind="src" path=""/>
|
||||||
|
<buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/>
|
||||||
|
</buildpath>
|
||||||
5
.externalToolBuilders/.svn/all-wcprops
Normal file
5
.externalToolBuilders/.svn/all-wcprops
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 44
|
||||||
|
/svn/!svn/ver/43/trunk/.externalToolBuilders
|
||||||
|
END
|
||||||
28
.externalToolBuilders/.svn/entries
Normal file
28
.externalToolBuilders/.svn/entries
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
10
|
||||||
|
|
||||||
|
dir
|
||||||
|
204
|
||||||
|
https://qcmmaker.googlecode.com/svn/trunk/.externalToolBuilders
|
||||||
|
https://qcmmaker.googlecode.com/svn
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-02-26T17:33:26.657075Z
|
||||||
|
43
|
||||||
|
Francois.Lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
1abcc3b6-0f78-11df-b47a-af0d17c1a499
|
||||||
|
|
||||||
3
.htaccess
Normal file
3
.htaccess
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
## Jul - deny access to the top-level git repository
|
||||||
|
RewriteEngine On
|
||||||
|
RewriteRule \.git - [F,L]
|
||||||
28
.project
Normal file
28
.project
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<projectDescription>
|
||||||
|
<name>qcmmaker</name>
|
||||||
|
<comment></comment>
|
||||||
|
<projects>
|
||||||
|
</projects>
|
||||||
|
<buildSpec>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.wst.validation.validationbuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.dltk.core.scriptbuilder</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
<buildCommand>
|
||||||
|
<name>org.eclipse.wst.jsdt.core.javascriptValidator</name>
|
||||||
|
<arguments>
|
||||||
|
</arguments>
|
||||||
|
</buildCommand>
|
||||||
|
</buildSpec>
|
||||||
|
<natures>
|
||||||
|
<nature>org.eclipse.wst.jsdt.core.jsNature</nature>
|
||||||
|
<nature>org.eclipse.php.core.PHPNature</nature>
|
||||||
|
</natures>
|
||||||
|
</projectDescription>
|
||||||
95
Archive/.svn/all-wcprops
Normal file
95
Archive/.svn/all-wcprops
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 31
|
||||||
|
/svn/!svn/ver/190/trunk/Archive
|
||||||
|
END
|
||||||
|
New Version TODO List
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 59
|
||||||
|
/svn/!svn/ver/190/trunk/Archive/New%20Version%20TODO%20List
|
||||||
|
END
|
||||||
|
qcm_v2.0.zip
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 43
|
||||||
|
/svn/!svn/ver/76/trunk/Archive/qcm_v2.0.zip
|
||||||
|
END
|
||||||
|
qcm_v1.2.zip
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 42
|
||||||
|
/svn/!svn/ver/3/trunk/Archive/qcm_v1.2.zip
|
||||||
|
END
|
||||||
|
qcm_v2.1.zip
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 44
|
||||||
|
/svn/!svn/ver/190/trunk/Archive/qcm_v2.1.zip
|
||||||
|
END
|
||||||
|
qcm_v1.3.zip
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 42
|
||||||
|
/svn/!svn/ver/3/trunk/Archive/qcm_v1.3.zip
|
||||||
|
END
|
||||||
|
imageMaker.php
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 45
|
||||||
|
/svn/!svn/ver/70/trunk/Archive/imageMaker.php
|
||||||
|
END
|
||||||
|
qcm_v2.2.zip
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 44
|
||||||
|
/svn/!svn/ver/190/trunk/Archive/qcm_v2.2.zip
|
||||||
|
END
|
||||||
|
qcm_v2.0.tar.gz
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 46
|
||||||
|
/svn/!svn/ver/76/trunk/Archive/qcm_v2.0.tar.gz
|
||||||
|
END
|
||||||
|
qcm_v1.2.tar.gz
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 45
|
||||||
|
/svn/!svn/ver/3/trunk/Archive/qcm_v1.2.tar.gz
|
||||||
|
END
|
||||||
|
qcm_v1.5.zip
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 43
|
||||||
|
/svn/!svn/ver/10/trunk/Archive/qcm_v1.5.zip
|
||||||
|
END
|
||||||
|
qcm_v2.1.tar.gz
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 47
|
||||||
|
/svn/!svn/ver/190/trunk/Archive/qcm_v2.1.tar.gz
|
||||||
|
END
|
||||||
|
qcm_v1.3.tar.gz
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 45
|
||||||
|
/svn/!svn/ver/3/trunk/Archive/qcm_v1.3.tar.gz
|
||||||
|
END
|
||||||
|
qcm_v2.2.tar.gz
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 47
|
||||||
|
/svn/!svn/ver/190/trunk/Archive/qcm_v2.2.tar.gz
|
||||||
|
END
|
||||||
|
qcm_v1.5.tar.gz
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 46
|
||||||
|
/svn/!svn/ver/10/trunk/Archive/qcm_v1.5.tar.gz
|
||||||
|
END
|
||||||
|
corners.svg
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 42
|
||||||
|
/svn/!svn/ver/10/trunk/Archive/corners.svg
|
||||||
|
END
|
||||||
541
Archive/.svn/entries
Normal file
541
Archive/.svn/entries
Normal file
@@ -0,0 +1,541 @@
|
|||||||
|
10
|
||||||
|
|
||||||
|
dir
|
||||||
|
204
|
||||||
|
https://qcmmaker.googlecode.com/svn/trunk/Archive
|
||||||
|
https://qcmmaker.googlecode.com/svn
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-09-11T12:22:57.471260Z
|
||||||
|
190
|
||||||
|
francois.lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
1abcc3b6-0f78-11df-b47a-af0d17c1a499
|
||||||
|
|
||||||
|
New Version TODO List
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-09-11T12:23:35.000000Z
|
||||||
|
933905cc82252b6bf9669df51ec8d400
|
||||||
|
2010-09-11T12:22:57.471260Z
|
||||||
|
190
|
||||||
|
francois.lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
493
|
||||||
|
|
||||||
|
photoshop
|
||||||
|
dir
|
||||||
|
|
||||||
|
qcm_v2.0.zip
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-03-24T17:28:47.000000Z
|
||||||
|
dc8e23a2e40def6dc6bfd7490dbd49b2
|
||||||
|
2010-03-22T19:31:07.865763Z
|
||||||
|
76
|
||||||
|
Francois.Lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
52510
|
||||||
|
|
||||||
|
qcm_v1.2.zip
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-02-02T19:33:45.000000Z
|
||||||
|
d22d94a897010ab5e97b6fdc6d5cf4b8
|
||||||
|
2010-02-01T21:43:55.771214Z
|
||||||
|
3
|
||||||
|
Francois.Lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
24546
|
||||||
|
|
||||||
|
qcm_v2.1.zip
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-09-11T12:23:35.000000Z
|
||||||
|
e09b43c61e51060511dae2f8bcc151ee
|
||||||
|
2010-09-11T12:22:57.471260Z
|
||||||
|
190
|
||||||
|
francois.lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
56027
|
||||||
|
|
||||||
|
qcm_v1.3.zip
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-02-02T19:33:45.000000Z
|
||||||
|
24384569c5241928dade0f2e111a2240
|
||||||
|
2010-02-01T21:43:55.771214Z
|
||||||
|
3
|
||||||
|
Francois.Lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
29073
|
||||||
|
|
||||||
|
imageMaker.php
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-03-17T01:00:05.000000Z
|
||||||
|
c5f9dd152ddf43f9b5085de411caeba8
|
||||||
|
2010-03-16T19:47:33.943166Z
|
||||||
|
70
|
||||||
|
Francois.Lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
283
|
||||||
|
|
||||||
|
qcm_v2.2.zip
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-09-11T12:23:35.000000Z
|
||||||
|
148aa8548e3e65904956e59a14e6fef5
|
||||||
|
2010-09-11T12:22:57.471260Z
|
||||||
|
190
|
||||||
|
francois.lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
390605
|
||||||
|
|
||||||
|
qcm_v2.0.tar.gz
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-03-24T17:28:47.000000Z
|
||||||
|
85870d8a0f27135c5fda108f090938c0
|
||||||
|
2010-03-22T19:31:07.865763Z
|
||||||
|
76
|
||||||
|
Francois.Lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
42481
|
||||||
|
|
||||||
|
qcm_v1.2.tar.gz
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-02-02T19:33:45.000000Z
|
||||||
|
511c930038ff79682df433036faff70d
|
||||||
|
2010-02-01T21:43:55.771214Z
|
||||||
|
3
|
||||||
|
Francois.Lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
21695
|
||||||
|
|
||||||
|
qcm_v1.5.zip
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-02-04T01:00:07.000000Z
|
||||||
|
b3f4cd1f6973ef379b963dcaefc72dce
|
||||||
|
2010-02-03T21:13:42.502035Z
|
||||||
|
10
|
||||||
|
Francois.Lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
39807
|
||||||
|
|
||||||
|
qcm_v2.1.tar.gz
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-09-11T12:23:35.000000Z
|
||||||
|
159abd8deb27644e3b5886f64563d184
|
||||||
|
2010-09-11T12:22:57.471260Z
|
||||||
|
190
|
||||||
|
francois.lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
46413
|
||||||
|
|
||||||
|
qcm_v2.2.tar.gz
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-09-11T12:23:35.000000Z
|
||||||
|
2e0e8d97b096abc2553f6128a1658f52
|
||||||
|
2010-09-11T12:22:57.471260Z
|
||||||
|
190
|
||||||
|
francois.lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
361038
|
||||||
|
|
||||||
|
qcm_v1.3.tar.gz
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-02-02T19:33:45.000000Z
|
||||||
|
95cb52ff48522706a62f5a1ba1eda598
|
||||||
|
2010-02-01T21:43:55.771214Z
|
||||||
|
3
|
||||||
|
Francois.Lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
23538
|
||||||
|
|
||||||
|
qcm_v1.5.tar.gz
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-02-04T01:00:07.000000Z
|
||||||
|
d925550478e7f25aefd45eaa82f3f52b
|
||||||
|
2010-02-03T21:13:42.502035Z
|
||||||
|
10
|
||||||
|
Francois.Lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
29378
|
||||||
|
|
||||||
|
corners.svg
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-02-04T01:00:07.000000Z
|
||||||
|
85d9a4dcd0d604e5b8a2a81adbe57078
|
||||||
|
2010-02-03T21:13:42.502035Z
|
||||||
|
10
|
||||||
|
Francois.Lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
213
|
||||||
|
|
||||||
5
Archive/.svn/prop-base/qcm_v1.2.tar.gz.svn-base
Normal file
5
Archive/.svn/prop-base/qcm_v1.2.tar.gz.svn-base
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
K 13
|
||||||
|
svn:mime-type
|
||||||
|
V 24
|
||||||
|
application/octet-stream
|
||||||
|
END
|
||||||
5
Archive/.svn/prop-base/qcm_v1.2.zip.svn-base
Normal file
5
Archive/.svn/prop-base/qcm_v1.2.zip.svn-base
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
K 13
|
||||||
|
svn:mime-type
|
||||||
|
V 24
|
||||||
|
application/octet-stream
|
||||||
|
END
|
||||||
5
Archive/.svn/prop-base/qcm_v1.3.tar.gz.svn-base
Normal file
5
Archive/.svn/prop-base/qcm_v1.3.tar.gz.svn-base
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
K 13
|
||||||
|
svn:mime-type
|
||||||
|
V 24
|
||||||
|
application/octet-stream
|
||||||
|
END
|
||||||
5
Archive/.svn/prop-base/qcm_v1.3.zip.svn-base
Normal file
5
Archive/.svn/prop-base/qcm_v1.3.zip.svn-base
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
K 13
|
||||||
|
svn:mime-type
|
||||||
|
V 24
|
||||||
|
application/octet-stream
|
||||||
|
END
|
||||||
5
Archive/.svn/prop-base/qcm_v1.5.tar.gz.svn-base
Normal file
5
Archive/.svn/prop-base/qcm_v1.5.tar.gz.svn-base
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
K 13
|
||||||
|
svn:mime-type
|
||||||
|
V 24
|
||||||
|
application/octet-stream
|
||||||
|
END
|
||||||
5
Archive/.svn/prop-base/qcm_v1.5.zip.svn-base
Normal file
5
Archive/.svn/prop-base/qcm_v1.5.zip.svn-base
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
K 13
|
||||||
|
svn:mime-type
|
||||||
|
V 24
|
||||||
|
application/octet-stream
|
||||||
|
END
|
||||||
5
Archive/.svn/prop-base/qcm_v2.0.tar.gz.svn-base
Normal file
5
Archive/.svn/prop-base/qcm_v2.0.tar.gz.svn-base
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
K 13
|
||||||
|
svn:mime-type
|
||||||
|
V 24
|
||||||
|
application/octet-stream
|
||||||
|
END
|
||||||
5
Archive/.svn/prop-base/qcm_v2.0.zip.svn-base
Normal file
5
Archive/.svn/prop-base/qcm_v2.0.zip.svn-base
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
K 13
|
||||||
|
svn:mime-type
|
||||||
|
V 24
|
||||||
|
application/octet-stream
|
||||||
|
END
|
||||||
5
Archive/.svn/prop-base/qcm_v2.1.tar.gz.svn-base
Normal file
5
Archive/.svn/prop-base/qcm_v2.1.tar.gz.svn-base
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
K 13
|
||||||
|
svn:mime-type
|
||||||
|
V 24
|
||||||
|
application/octet-stream
|
||||||
|
END
|
||||||
5
Archive/.svn/prop-base/qcm_v2.1.zip.svn-base
Normal file
5
Archive/.svn/prop-base/qcm_v2.1.zip.svn-base
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
K 13
|
||||||
|
svn:mime-type
|
||||||
|
V 24
|
||||||
|
application/octet-stream
|
||||||
|
END
|
||||||
5
Archive/.svn/prop-base/qcm_v2.2.tar.gz.svn-base
Normal file
5
Archive/.svn/prop-base/qcm_v2.2.tar.gz.svn-base
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
K 13
|
||||||
|
svn:mime-type
|
||||||
|
V 24
|
||||||
|
application/octet-stream
|
||||||
|
END
|
||||||
5
Archive/.svn/prop-base/qcm_v2.2.zip.svn-base
Normal file
5
Archive/.svn/prop-base/qcm_v2.2.zip.svn-base
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
K 13
|
||||||
|
svn:mime-type
|
||||||
|
V 24
|
||||||
|
application/octet-stream
|
||||||
|
END
|
||||||
8
Archive/.svn/text-base/New Version TODO List.svn-base
Normal file
8
Archive/.svn/text-base/New Version TODO List.svn-base
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
1. Change version number in /current_version/config.php
|
||||||
|
2. Empty /current_version/Download/ and /current_version/images/qcm/ (except qcm1question1.jpeg)
|
||||||
|
3. Update changelog : select led, version, type, changelog from changelog where version > 0 and version <= CURRENT_VERSION and progress = 1 order by version ASC
|
||||||
|
4. Copy Data into new folder (qcm_vx.x) in /archive/
|
||||||
|
5. delete settings.php, test.php
|
||||||
|
6. compress into .zip and .tar.gz
|
||||||
|
7. Copy file into /current_version/download/
|
||||||
|
8. Update SVN
|
||||||
5
Archive/.svn/text-base/corners.svg.svn-base
Normal file
5
Archive/.svn/text-base/corners.svg.svn-base
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<rect fill="white" x="0" y="0" width="100%" height="100%" />
|
||||||
|
<rect fill="transparent" x="0" y="0" width="100%" height="100%" rx="10px"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 213 B |
8
Archive/.svn/text-base/imageMaker.php.svn-base
Normal file
8
Archive/.svn/text-base/imageMaker.php.svn-base
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?php
|
||||||
|
header ('Content-type: image/png');
|
||||||
|
$oImage = imagecreatetruecolor($_GET['width'], $_GET['height']);
|
||||||
|
$text_color = imagecolorallocate($oImage, 233, 14, 91);
|
||||||
|
imagestring($oImage, 1, 5, 5, 'A Simple Text String', $text_color);
|
||||||
|
imagepng($oImage);
|
||||||
|
imagedestroy($oImage);
|
||||||
|
?>
|
||||||
BIN
Archive/.svn/text-base/qcm_v1.2.tar.gz.svn-base
Normal file
BIN
Archive/.svn/text-base/qcm_v1.2.tar.gz.svn-base
Normal file
Binary file not shown.
BIN
Archive/.svn/text-base/qcm_v1.2.zip.svn-base
Normal file
BIN
Archive/.svn/text-base/qcm_v1.2.zip.svn-base
Normal file
Binary file not shown.
BIN
Archive/.svn/text-base/qcm_v1.3.tar.gz.svn-base
Normal file
BIN
Archive/.svn/text-base/qcm_v1.3.tar.gz.svn-base
Normal file
Binary file not shown.
BIN
Archive/.svn/text-base/qcm_v1.3.zip.svn-base
Normal file
BIN
Archive/.svn/text-base/qcm_v1.3.zip.svn-base
Normal file
Binary file not shown.
BIN
Archive/.svn/text-base/qcm_v1.5.tar.gz.svn-base
Normal file
BIN
Archive/.svn/text-base/qcm_v1.5.tar.gz.svn-base
Normal file
Binary file not shown.
BIN
Archive/.svn/text-base/qcm_v1.5.zip.svn-base
Normal file
BIN
Archive/.svn/text-base/qcm_v1.5.zip.svn-base
Normal file
Binary file not shown.
BIN
Archive/.svn/text-base/qcm_v2.0.tar.gz.svn-base
Normal file
BIN
Archive/.svn/text-base/qcm_v2.0.tar.gz.svn-base
Normal file
Binary file not shown.
BIN
Archive/.svn/text-base/qcm_v2.0.zip.svn-base
Normal file
BIN
Archive/.svn/text-base/qcm_v2.0.zip.svn-base
Normal file
Binary file not shown.
BIN
Archive/.svn/text-base/qcm_v2.1.tar.gz.svn-base
Normal file
BIN
Archive/.svn/text-base/qcm_v2.1.tar.gz.svn-base
Normal file
Binary file not shown.
BIN
Archive/.svn/text-base/qcm_v2.1.zip.svn-base
Normal file
BIN
Archive/.svn/text-base/qcm_v2.1.zip.svn-base
Normal file
Binary file not shown.
BIN
Archive/.svn/text-base/qcm_v2.2.tar.gz.svn-base
Normal file
BIN
Archive/.svn/text-base/qcm_v2.2.tar.gz.svn-base
Normal file
Binary file not shown.
BIN
Archive/.svn/text-base/qcm_v2.2.zip.svn-base
Normal file
BIN
Archive/.svn/text-base/qcm_v2.2.zip.svn-base
Normal file
Binary file not shown.
8
Archive/New Version TODO List
Normal file
8
Archive/New Version TODO List
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
1. Change version number in /current_version/config.php
|
||||||
|
2. Empty /current_version/Download/ and /current_version/images/qcm/ (except qcm1question1.jpeg)
|
||||||
|
3. Update changelog : select led, version, type, changelog from changelog where version > 0 and version <= CURRENT_VERSION and progress = 1 order by version ASC
|
||||||
|
4. Copy Data into new folder (qcm_vx.x) in /archive/
|
||||||
|
5. delete settings.php, test.php
|
||||||
|
6. compress into .zip and .tar.gz
|
||||||
|
7. Copy file into /current_version/download/
|
||||||
|
8. Update SVN
|
||||||
5
Archive/corners.svg
Normal file
5
Archive/corners.svg
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
<?xml version="1.0" ?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<rect fill="white" x="0" y="0" width="100%" height="100%" />
|
||||||
|
<rect fill="transparent" x="0" y="0" width="100%" height="100%" rx="10px"/>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 213 B |
8
Archive/imageMaker.php
Normal file
8
Archive/imageMaker.php
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
<?php
|
||||||
|
header ('Content-type: image/png');
|
||||||
|
$oImage = imagecreatetruecolor($_GET['width'], $_GET['height']);
|
||||||
|
$text_color = imagecolorallocate($oImage, 233, 14, 91);
|
||||||
|
imagestring($oImage, 1, 5, 5, 'A Simple Text String', $text_color);
|
||||||
|
imagepng($oImage);
|
||||||
|
imagedestroy($oImage);
|
||||||
|
?>
|
||||||
41
Archive/photoshop/.svn/all-wcprops
Normal file
41
Archive/photoshop/.svn/all-wcprops
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 39
|
||||||
|
/svn/!svn/ver/3/trunk/Archive/photoshop
|
||||||
|
END
|
||||||
|
arrow.psd
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 49
|
||||||
|
/svn/!svn/ver/3/trunk/Archive/photoshop/arrow.psd
|
||||||
|
END
|
||||||
|
qcmSelectionHover.psd
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 61
|
||||||
|
/svn/!svn/ver/3/trunk/Archive/photoshop/qcmSelectionHover.psd
|
||||||
|
END
|
||||||
|
beta version.psd
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 58
|
||||||
|
/svn/!svn/ver/3/trunk/Archive/photoshop/beta%20version.psd
|
||||||
|
END
|
||||||
|
qcmSelectionActive.psd
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 62
|
||||||
|
/svn/!svn/ver/3/trunk/Archive/photoshop/qcmSelectionActive.psd
|
||||||
|
END
|
||||||
|
favicon.psd
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 51
|
||||||
|
/svn/!svn/ver/3/trunk/Archive/photoshop/favicon.psd
|
||||||
|
END
|
||||||
|
qcmSelection.psd
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 56
|
||||||
|
/svn/!svn/ver/3/trunk/Archive/photoshop/qcmSelection.psd
|
||||||
|
END
|
||||||
232
Archive/photoshop/.svn/entries
Normal file
232
Archive/photoshop/.svn/entries
Normal file
@@ -0,0 +1,232 @@
|
|||||||
|
10
|
||||||
|
|
||||||
|
dir
|
||||||
|
204
|
||||||
|
https://qcmmaker.googlecode.com/svn/trunk/Archive/photoshop
|
||||||
|
https://qcmmaker.googlecode.com/svn
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-02-01T21:43:55.771214Z
|
||||||
|
3
|
||||||
|
Francois.Lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
1abcc3b6-0f78-11df-b47a-af0d17c1a499
|
||||||
|
|
||||||
|
arrow.psd
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-02-02T19:33:45.000000Z
|
||||||
|
7849d3bca5af6776ebbcf9adef21cd8a
|
||||||
|
2010-02-01T21:43:55.771214Z
|
||||||
|
3
|
||||||
|
Francois.Lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
26680
|
||||||
|
|
||||||
|
qcmSelectionHover.psd
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-02-02T19:33:45.000000Z
|
||||||
|
c92146f3cd68537f84116904dea8981e
|
||||||
|
2010-02-01T21:43:55.771214Z
|
||||||
|
3
|
||||||
|
Francois.Lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
160590
|
||||||
|
|
||||||
|
beta version.psd
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-02-02T19:33:45.000000Z
|
||||||
|
3e83806dc3d984f2e5988ba6c3e514e9
|
||||||
|
2010-02-01T21:43:55.771214Z
|
||||||
|
3
|
||||||
|
Francois.Lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
196809
|
||||||
|
|
||||||
|
qcmSelectionActive.psd
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-02-02T19:33:45.000000Z
|
||||||
|
78cbd1667af67529d15aaeab5174714b
|
||||||
|
2010-02-01T21:43:55.771214Z
|
||||||
|
3
|
||||||
|
Francois.Lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
161486
|
||||||
|
|
||||||
|
favicon.psd
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-02-02T19:33:45.000000Z
|
||||||
|
d9213ef70e41ec5e01c0d758e201bdf9
|
||||||
|
2010-02-01T21:43:55.771214Z
|
||||||
|
3
|
||||||
|
Francois.Lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
157428
|
||||||
|
|
||||||
|
qcmSelection.psd
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-02-02T19:33:45.000000Z
|
||||||
|
16a1f1e21a70535eea9abd936bc08993
|
||||||
|
2010-02-01T21:43:55.771214Z
|
||||||
|
3
|
||||||
|
Francois.Lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
159750
|
||||||
|
|
||||||
5
Archive/photoshop/.svn/prop-base/arrow.psd.svn-base
Normal file
5
Archive/photoshop/.svn/prop-base/arrow.psd.svn-base
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
K 13
|
||||||
|
svn:mime-type
|
||||||
|
V 24
|
||||||
|
application/octet-stream
|
||||||
|
END
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
K 13
|
||||||
|
svn:mime-type
|
||||||
|
V 24
|
||||||
|
application/octet-stream
|
||||||
|
END
|
||||||
5
Archive/photoshop/.svn/prop-base/favicon.psd.svn-base
Normal file
5
Archive/photoshop/.svn/prop-base/favicon.psd.svn-base
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
K 13
|
||||||
|
svn:mime-type
|
||||||
|
V 24
|
||||||
|
application/octet-stream
|
||||||
|
END
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
K 13
|
||||||
|
svn:mime-type
|
||||||
|
V 24
|
||||||
|
application/octet-stream
|
||||||
|
END
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
K 13
|
||||||
|
svn:mime-type
|
||||||
|
V 24
|
||||||
|
application/octet-stream
|
||||||
|
END
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
K 13
|
||||||
|
svn:mime-type
|
||||||
|
V 24
|
||||||
|
application/octet-stream
|
||||||
|
END
|
||||||
BIN
Archive/photoshop/.svn/text-base/arrow.psd.svn-base
Normal file
BIN
Archive/photoshop/.svn/text-base/arrow.psd.svn-base
Normal file
Binary file not shown.
BIN
Archive/photoshop/.svn/text-base/beta version.psd.svn-base
Normal file
BIN
Archive/photoshop/.svn/text-base/beta version.psd.svn-base
Normal file
Binary file not shown.
BIN
Archive/photoshop/.svn/text-base/favicon.psd.svn-base
Normal file
BIN
Archive/photoshop/.svn/text-base/favicon.psd.svn-base
Normal file
Binary file not shown.
BIN
Archive/photoshop/.svn/text-base/qcmSelection.psd.svn-base
Normal file
BIN
Archive/photoshop/.svn/text-base/qcmSelection.psd.svn-base
Normal file
Binary file not shown.
BIN
Archive/photoshop/.svn/text-base/qcmSelectionActive.psd.svn-base
Normal file
BIN
Archive/photoshop/.svn/text-base/qcmSelectionActive.psd.svn-base
Normal file
Binary file not shown.
BIN
Archive/photoshop/.svn/text-base/qcmSelectionHover.psd.svn-base
Normal file
BIN
Archive/photoshop/.svn/text-base/qcmSelectionHover.psd.svn-base
Normal file
Binary file not shown.
BIN
Archive/photoshop/arrow.psd
Normal file
BIN
Archive/photoshop/arrow.psd
Normal file
Binary file not shown.
BIN
Archive/photoshop/beta version.psd
Normal file
BIN
Archive/photoshop/beta version.psd
Normal file
Binary file not shown.
BIN
Archive/photoshop/favicon.psd
Normal file
BIN
Archive/photoshop/favicon.psd
Normal file
Binary file not shown.
BIN
Archive/photoshop/qcmSelection.psd
Normal file
BIN
Archive/photoshop/qcmSelection.psd
Normal file
Binary file not shown.
BIN
Archive/photoshop/qcmSelectionActive.psd
Normal file
BIN
Archive/photoshop/qcmSelectionActive.psd
Normal file
Binary file not shown.
BIN
Archive/photoshop/qcmSelectionHover.psd
Normal file
BIN
Archive/photoshop/qcmSelectionHover.psd
Normal file
Binary file not shown.
BIN
Archive/qcm_v1.2.tar.gz
Normal file
BIN
Archive/qcm_v1.2.tar.gz
Normal file
Binary file not shown.
BIN
Archive/qcm_v1.2.zip
Normal file
BIN
Archive/qcm_v1.2.zip
Normal file
Binary file not shown.
BIN
Archive/qcm_v1.3.tar.gz
Normal file
BIN
Archive/qcm_v1.3.tar.gz
Normal file
Binary file not shown.
BIN
Archive/qcm_v1.3.zip
Normal file
BIN
Archive/qcm_v1.3.zip
Normal file
Binary file not shown.
BIN
Archive/qcm_v1.5.tar.gz
Normal file
BIN
Archive/qcm_v1.5.tar.gz
Normal file
Binary file not shown.
BIN
Archive/qcm_v1.5.zip
Normal file
BIN
Archive/qcm_v1.5.zip
Normal file
Binary file not shown.
BIN
Archive/qcm_v2.0.tar.gz
Normal file
BIN
Archive/qcm_v2.0.tar.gz
Normal file
Binary file not shown.
BIN
Archive/qcm_v2.0.zip
Normal file
BIN
Archive/qcm_v2.0.zip
Normal file
Binary file not shown.
BIN
Archive/qcm_v2.1.tar.gz
Normal file
BIN
Archive/qcm_v2.1.tar.gz
Normal file
Binary file not shown.
BIN
Archive/qcm_v2.1.zip
Normal file
BIN
Archive/qcm_v2.1.zip
Normal file
Binary file not shown.
BIN
Archive/qcm_v2.2.tar.gz
Normal file
BIN
Archive/qcm_v2.2.tar.gz
Normal file
Binary file not shown.
BIN
Archive/qcm_v2.2.zip
Normal file
BIN
Archive/qcm_v2.2.zip
Normal file
Binary file not shown.
155
current_version/.svn/all-wcprops
Normal file
155
current_version/.svn/all-wcprops
Normal file
@@ -0,0 +1,155 @@
|
|||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 39
|
||||||
|
/svn/!svn/ver/204/trunk/current_version
|
||||||
|
END
|
||||||
|
log
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 43
|
||||||
|
/svn/!svn/ver/194/trunk/current_version/log
|
||||||
|
END
|
||||||
|
account.php
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 51
|
||||||
|
/svn/!svn/ver/174/trunk/current_version/account.php
|
||||||
|
END
|
||||||
|
functions.js
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 52
|
||||||
|
/svn/!svn/ver/180/trunk/current_version/functions.js
|
||||||
|
END
|
||||||
|
stats.php
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 47
|
||||||
|
/svn/!svn/ver/8/trunk/current_version/stats.php
|
||||||
|
END
|
||||||
|
settings.php
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 51
|
||||||
|
/svn/!svn/ver/45/trunk/current_version/settings.php
|
||||||
|
END
|
||||||
|
qcmCreator.php
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 54
|
||||||
|
/svn/!svn/ver/187/trunk/current_version/qcmCreator.php
|
||||||
|
END
|
||||||
|
style.css
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 49
|
||||||
|
/svn/!svn/ver/202/trunk/current_version/style.css
|
||||||
|
END
|
||||||
|
changelog
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 49
|
||||||
|
/svn/!svn/ver/191/trunk/current_version/changelog
|
||||||
|
END
|
||||||
|
qcmResults.php
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 54
|
||||||
|
/svn/!svn/ver/191/trunk/current_version/qcmResults.php
|
||||||
|
END
|
||||||
|
qcmReader.php
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 53
|
||||||
|
/svn/!svn/ver/132/trunk/current_version/qcmReader.php
|
||||||
|
END
|
||||||
|
account_admin.php
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 57
|
||||||
|
/svn/!svn/ver/202/trunk/current_version/account_admin.php
|
||||||
|
END
|
||||||
|
search.php
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 50
|
||||||
|
/svn/!svn/ver/174/trunk/current_version/search.php
|
||||||
|
END
|
||||||
|
frontal.php
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 51
|
||||||
|
/svn/!svn/ver/202/trunk/current_version/frontal.php
|
||||||
|
END
|
||||||
|
config.php
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 50
|
||||||
|
/svn/!svn/ver/202/trunk/current_version/config.php
|
||||||
|
END
|
||||||
|
install.php
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 51
|
||||||
|
/svn/!svn/ver/187/trunk/current_version/install.php
|
||||||
|
END
|
||||||
|
rss.php
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 47
|
||||||
|
/svn/!svn/ver/142/trunk/current_version/rss.php
|
||||||
|
END
|
||||||
|
statsAdmin.php
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 54
|
||||||
|
/svn/!svn/ver/204/trunk/current_version/statsAdmin.php
|
||||||
|
END
|
||||||
|
index.php
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 49
|
||||||
|
/svn/!svn/ver/201/trunk/current_version/index.php
|
||||||
|
END
|
||||||
|
logon.php
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 48
|
||||||
|
/svn/!svn/ver/62/trunk/current_version/logon.php
|
||||||
|
END
|
||||||
|
qcmProcess.php
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 54
|
||||||
|
/svn/!svn/ver/179/trunk/current_version/qcmProcess.php
|
||||||
|
END
|
||||||
|
styleIe.css
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 49
|
||||||
|
/svn/!svn/ver/3/trunk/current_version/styleIe.css
|
||||||
|
END
|
||||||
|
test.php
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 48
|
||||||
|
/svn/!svn/ver/185/trunk/current_version/test.php
|
||||||
|
END
|
||||||
|
register.php
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 51
|
||||||
|
/svn/!svn/ver/91/trunk/current_version/register.php
|
||||||
|
END
|
||||||
|
backUpCreator.php
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 57
|
||||||
|
/svn/!svn/ver/192/trunk/current_version/backUpCreator.php
|
||||||
|
END
|
||||||
|
version.php
|
||||||
|
K 25
|
||||||
|
svn:wc:ra_dav:version-url
|
||||||
|
V 51
|
||||||
|
/svn/!svn/ver/193/trunk/current_version/version.php
|
||||||
|
END
|
||||||
6
current_version/.svn/dir-prop-base
Normal file
6
current_version/.svn/dir-prop-base
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
K 10
|
||||||
|
svn:ignore
|
||||||
|
V 13
|
||||||
|
settings.php
|
||||||
|
|
||||||
|
END
|
||||||
896
current_version/.svn/entries
Normal file
896
current_version/.svn/entries
Normal file
@@ -0,0 +1,896 @@
|
|||||||
|
10
|
||||||
|
|
||||||
|
dir
|
||||||
|
204
|
||||||
|
https://qcmmaker.googlecode.com/svn/trunk/current_version
|
||||||
|
https://qcmmaker.googlecode.com/svn
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2011-02-08T19:22:12.337819Z
|
||||||
|
204
|
||||||
|
francois.lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
1abcc3b6-0f78-11df-b47a-af0d17c1a499
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
((conflict settings.php file update deleted edited (version https://qcmmaker.googlecode.com/svn 2 90 trunk/current_version/settings.php file) (version https://qcmmaker.googlecode.com/svn 3 101 trunk/current_version/settings.php none)))
|
||||||
|
|
||||||
|
log
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-11-06T16:35:59.299251Z
|
||||||
|
1cce094ea04fcf8e4adfdee41ab40a86
|
||||||
|
2010-11-06T16:35:45.574309Z
|
||||||
|
194
|
||||||
|
francois.lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
192
|
||||||
|
|
||||||
|
account.php
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-06-22T10:03:52.000000Z
|
||||||
|
46c44649a38f295b238c3ace19cf3da4
|
||||||
|
2010-06-21T21:30:43.058512Z
|
||||||
|
174
|
||||||
|
francois.lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
8472
|
||||||
|
|
||||||
|
functions.js
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-06-24T18:14:17.000000Z
|
||||||
|
d15180502c17f40698bfcd325736b990
|
||||||
|
2010-06-24T13:42:55.849562Z
|
||||||
|
180
|
||||||
|
francois.lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
3240
|
||||||
|
|
||||||
|
stats.php
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-02-03T16:31:26.000000Z
|
||||||
|
55364c81629c96272ffe2b148b2099b2
|
||||||
|
2010-02-02T23:56:56.079998Z
|
||||||
|
8
|
||||||
|
Francois.Lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2040
|
||||||
|
|
||||||
|
settings.php
|
||||||
|
file
|
||||||
|
90
|
||||||
|
|
||||||
|
|
||||||
|
add
|
||||||
|
2010-03-01T01:00:10.000000Z
|
||||||
|
e35626cf50f16ff4312991f13c81740d
|
||||||
|
2010-02-28T15:00:52.349625Z
|
||||||
|
45
|
||||||
|
Francois.Lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
copied
|
||||||
|
https://qcmmaker.googlecode.com/svn/trunk/current_version/settings.php
|
||||||
|
90
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
908
|
||||||
|
|
||||||
|
qcmCreator.php
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-09-11T11:41:49.000000Z
|
||||||
|
cbae18788a57cc861ce631772497efc8
|
||||||
|
2010-09-09T13:24:00.096915Z
|
||||||
|
187
|
||||||
|
francois.lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
9395
|
||||||
|
|
||||||
|
style.css
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2011-02-02T21:26:33.598825Z
|
||||||
|
052da18b80fd80adbd09e67183a26e03
|
||||||
|
2011-02-02T21:25:35.154558Z
|
||||||
|
202
|
||||||
|
francois.lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
9866
|
||||||
|
|
||||||
|
changelog
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-11-06T12:54:38.555055Z
|
||||||
|
3c86289533c86f53a5bc24b8e63eae17
|
||||||
|
2010-11-06T12:54:00.872919Z
|
||||||
|
191
|
||||||
|
francois.lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
5480
|
||||||
|
|
||||||
|
qcmResults.php
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-11-06T12:54:38.555055Z
|
||||||
|
740f07de2aa4ee86b1ec555da3c56e27
|
||||||
|
2010-11-06T12:54:00.872919Z
|
||||||
|
191
|
||||||
|
francois.lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2980
|
||||||
|
|
||||||
|
qcmReader.php
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-05-17T13:58:33.000000Z
|
||||||
|
5b783e6fb522798ebb488e412a9312bb
|
||||||
|
2010-05-16T21:14:21.358495Z
|
||||||
|
132
|
||||||
|
Francois.Lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2208
|
||||||
|
|
||||||
|
downloads
|
||||||
|
dir
|
||||||
|
|
||||||
|
account_admin.php
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2011-02-02T21:26:33.608825Z
|
||||||
|
502b792e32849d5bc243b7750dc4494b
|
||||||
|
2011-02-02T21:25:35.154558Z
|
||||||
|
202
|
||||||
|
francois.lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
10604
|
||||||
|
|
||||||
|
search.php
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-06-22T10:03:52.000000Z
|
||||||
|
5bdfea908f1e9dfa2362d0a03ee58f59
|
||||||
|
2010-06-21T21:30:43.058512Z
|
||||||
|
174
|
||||||
|
francois.lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2296
|
||||||
|
|
||||||
|
frontal.php
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2011-02-02T21:26:33.608825Z
|
||||||
|
17207ab88483b6a53d38d4c69ab852ce
|
||||||
|
2011-02-02T21:25:35.154558Z
|
||||||
|
202
|
||||||
|
francois.lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
5375
|
||||||
|
|
||||||
|
config.php
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2011-02-02T21:26:33.608825Z
|
||||||
|
ae293d9b13d279274230720e79140db3
|
||||||
|
2011-02-02T21:25:35.154558Z
|
||||||
|
202
|
||||||
|
francois.lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
65700
|
||||||
|
|
||||||
|
install.php
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-09-11T11:41:49.000000Z
|
||||||
|
b0d1bd4d0d104dcac219bc0c47ee12f0
|
||||||
|
2010-09-09T13:24:00.096915Z
|
||||||
|
187
|
||||||
|
francois.lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
5734
|
||||||
|
|
||||||
|
classes
|
||||||
|
dir
|
||||||
|
|
||||||
|
statsAdmin.php
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2011-02-08T19:23:20.139189Z
|
||||||
|
4398d511f7ad18b0de287ba25513c6a3
|
||||||
|
2011-02-08T19:22:12.337819Z
|
||||||
|
204
|
||||||
|
francois.lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
6168
|
||||||
|
|
||||||
|
index.php
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2011-01-31T18:20:20.014061Z
|
||||||
|
2de83ba3f929c392a8e6878097335e2a
|
||||||
|
2011-01-31T18:18:47.374394Z
|
||||||
|
201
|
||||||
|
francois.lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
6081
|
||||||
|
|
||||||
|
rss.php
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-05-27T12:39:51.000000Z
|
||||||
|
6c7893982fe245db921986dd61c6434e
|
||||||
|
2010-05-26T15:19:46.928829Z
|
||||||
|
142
|
||||||
|
francois.lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
8081
|
||||||
|
|
||||||
|
logon.php
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-03-11T01:00:06.000000Z
|
||||||
|
bf839fe48d1d98afceb8fd45baea1714
|
||||||
|
2010-03-10T21:53:51.228739Z
|
||||||
|
62
|
||||||
|
Francois.Lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
829
|
||||||
|
|
||||||
|
images
|
||||||
|
dir
|
||||||
|
|
||||||
|
qcmProcess.php
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-06-24T18:14:18.000000Z
|
||||||
|
1dbafc64eaf454e018d86d0c7dd962ab
|
||||||
|
2010-06-23T16:43:59.392251Z
|
||||||
|
179
|
||||||
|
francois.lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
4320
|
||||||
|
|
||||||
|
styleIe.css
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-02-02T19:33:46.000000Z
|
||||||
|
6898c57837d40aa829bb009679faeac7
|
||||||
|
2010-02-01T21:43:55.771214Z
|
||||||
|
3
|
||||||
|
Francois.Lutran
|
||||||
|
has-props
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
32
|
||||||
|
|
||||||
|
test.php
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-06-27T00:00:06.000000Z
|
||||||
|
87796986167401f14d80116616047a3e
|
||||||
|
2010-06-26T17:43:33.519351Z
|
||||||
|
185
|
||||||
|
francois.lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2673
|
||||||
|
|
||||||
|
register.php
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-04-18T19:27:04.000000Z
|
||||||
|
21c92d501dddfdb72e5078292869b3c3
|
||||||
|
2010-04-05T16:08:12.568839Z
|
||||||
|
91
|
||||||
|
Francois.Lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
1132
|
||||||
|
|
||||||
|
backUpCreator.php
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-11-06T14:46:11.949801Z
|
||||||
|
751c477b22c6087ca24c02f7d40c3bd3
|
||||||
|
2010-11-06T14:45:26.623737Z
|
||||||
|
192
|
||||||
|
francois.lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
8214
|
||||||
|
|
||||||
|
version.php
|
||||||
|
file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
2010-11-06T16:29:26.119054Z
|
||||||
|
0438a184159709dec296f99509a8d14d
|
||||||
|
2010-11-06T16:29:05.080573Z
|
||||||
|
193
|
||||||
|
francois.lutran
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
6380
|
||||||
|
|
||||||
5
current_version/.svn/prop-base/functions.js.svn-base
Normal file
5
current_version/.svn/prop-base/functions.js.svn-base
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
K 13
|
||||||
|
svn:mime-type
|
||||||
|
V 10
|
||||||
|
text/plain
|
||||||
|
END
|
||||||
5
current_version/.svn/prop-base/log.svn-base
Normal file
5
current_version/.svn/prop-base/log.svn-base
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
K 14
|
||||||
|
svn:executable
|
||||||
|
V 1
|
||||||
|
*
|
||||||
|
END
|
||||||
5
current_version/.svn/prop-base/style.css.svn-base
Normal file
5
current_version/.svn/prop-base/style.css.svn-base
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
K 13
|
||||||
|
svn:mime-type
|
||||||
|
V 10
|
||||||
|
text/plain
|
||||||
|
END
|
||||||
5
current_version/.svn/prop-base/styleIe.css.svn-base
Normal file
5
current_version/.svn/prop-base/styleIe.css.svn-base
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
K 13
|
||||||
|
svn:mime-type
|
||||||
|
V 10
|
||||||
|
text/plain
|
||||||
|
END
|
||||||
230
current_version/.svn/text-base/account.php.svn-base
Normal file
230
current_version/.svn/text-base/account.php.svn-base
Normal file
@@ -0,0 +1,230 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/* displays user's account settings */
|
||||||
|
|
||||||
|
//delete user
|
||||||
|
if(isset($_POST['deleteUserId']))
|
||||||
|
{
|
||||||
|
$iDeletedUserId = $_POST['deleteUserId'];
|
||||||
|
if(isAdmin($iDeletedUserId))
|
||||||
|
{
|
||||||
|
echo getError('Il est impossible de supprimer un compte administrateur');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$sDeletedUserName = getTextFromId(USER_TABLE, $iDeletedUserId);
|
||||||
|
deleteRow(USER_TABLE, $iDeletedUserId);
|
||||||
|
addFeed('DELETE', $iDeletedUserId , USER_TABLE, $sDeletedUserName, '');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//modify user account
|
||||||
|
$iSelectedUserId = isset($_POST['studentId'])?$_POST['studentId']:$_SESSION['user'];
|
||||||
|
$asSelectedUserInfo = selectRow(USER_TABLE, array($iSelectedUserId));
|
||||||
|
|
||||||
|
//modifications submit
|
||||||
|
$bfailedPassModif = false;
|
||||||
|
if(isset($_POST['submit']))
|
||||||
|
{
|
||||||
|
if($_GET['type']=='pass' && $_POST['pass']!='' && $_POST['oldpass']!='')
|
||||||
|
{
|
||||||
|
$sErrorMessage = checkPassword($_POST['oldpass'],$asSelectedUserInfo['pass'])?"":'Mot de passe incorrect';
|
||||||
|
$sErrorMessage .= ($_POST['pass']==$_POST['pass2'])?"":'Les mots de passe ne sont pas les mêmes';
|
||||||
|
$bfailedPassModif = ($sErrorMessage!='');
|
||||||
|
if($bfailedPassModif)
|
||||||
|
{
|
||||||
|
echo getError($sErrorMessage);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
updateRow(USER_TABLE, $iSelectedUserId, array('pass'=>encryptPassword($_POST['pass'])));
|
||||||
|
echo getSuccess('Mot de passe modifié');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elseif($_GET['type']=='info' && $_POST['login']!='' && $_POST['firstname']!='')
|
||||||
|
{
|
||||||
|
$sLastName = strtolower($_POST['login']);
|
||||||
|
$sFirstName = strtolower($_POST['firstname']);
|
||||||
|
//Check if someone has already been registered by that name
|
||||||
|
$asChangedUserInfo = getUserFromLogin($sLastName, $sFirstName);
|
||||||
|
$bUserAvailable = !$asChangedUserInfo || $iSelectedUserId==$asChangedUserInfo['id_user'];
|
||||||
|
if($bUserAvailable)
|
||||||
|
{
|
||||||
|
$asUserModif = array( 'user_first_name'=>$sFirstName,
|
||||||
|
'user_last_name'=>$sLastName,
|
||||||
|
'grade'=>$_POST['grade'],
|
||||||
|
'class'=>$_POST['class']);
|
||||||
|
if($bAdmin)
|
||||||
|
{
|
||||||
|
$asUserModif['admin'] = isset($_POST['admin'])?'1':'0';
|
||||||
|
}
|
||||||
|
|
||||||
|
$asUserInfo = selectRow(USER_TABLE, array($iSelectedUserId));
|
||||||
|
updateRow(USER_TABLE, $iSelectedUserId, $asUserModif);
|
||||||
|
|
||||||
|
//feed
|
||||||
|
$sModifiedUserName = $asUserInfo[USER_TABLE.'_first_name'].' '.$asUserInfo[USER_TABLE.'_last_name'];
|
||||||
|
if($sModifiedUserName != $sFirstName.' '.$sLastName)
|
||||||
|
{
|
||||||
|
addFeed('MODIFY', $sModifiedUserName, USER_TABLE.'_name', $sModifiedUserName, $sFirstName.' '.$sLastName);
|
||||||
|
}
|
||||||
|
if($asUserInfo['grade']!=$_POST['grade'] || $asUserInfo['class']!=$_POST['class'])
|
||||||
|
{
|
||||||
|
addFeed('MODIFY', $sModifiedUserName, USER_TABLE.'_class', $asUserInfo['grade'].GRADE_CLASS_SEPARATOR.$asUserInfo['class'], $_POST['grade'].GRADE_CLASS_SEPARATOR.$_POST['class']);
|
||||||
|
}
|
||||||
|
|
||||||
|
echo getSuccess('Coordonnées modifiées');
|
||||||
|
|
||||||
|
if($iSelectedUserId==$_SESSION['user'])
|
||||||
|
{
|
||||||
|
setSession($_SESSION['user']);
|
||||||
|
if($sLastName!=$asSelectedUserInfo['user_last_name'] || $sFirstName!=$asSelectedUserInfo['user_first_name'])
|
||||||
|
{
|
||||||
|
echo getWarning(array('Changement de login pour l\'authentification', 'Votre nouveau login est :', 'Nom : '.$sLastName, 'Prénom : '.$sFirstName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo getError('Ce nom existe déjà dans la base de données');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo getError('Champs incomplets');
|
||||||
|
$bfailedPassModif = ($_GET['type']=="pass");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//student class selection / teacher
|
||||||
|
$sTeacherClass = 'Professeur<input type="hidden" name="grade" value="0"><input type="hidden" name="class" value="0">';
|
||||||
|
$sStudentClass = getClasses(array('grade' => isset($_POST['grade'])?$_POST['grade']:$asSelectedUserInfo['grade'], 'class' => isset($_POST['class'])?$_POST['class']:$asSelectedUserInfo['class']));
|
||||||
|
|
||||||
|
//Admin menu : student selection
|
||||||
|
$sPromoteAdmin = '';
|
||||||
|
$bIsSelectedUserAdmin = isAdmin($iSelectedUserId);
|
||||||
|
if($bAdmin)
|
||||||
|
{
|
||||||
|
$sPromoteAdmin = '<tr>
|
||||||
|
<td>Admin</td>
|
||||||
|
<td><input type="checkbox" name="admin" '.($bIsSelectedUserAdmin?'CHECKED ':'').' onclick="switchClassType();" /></td>
|
||||||
|
</tr>';
|
||||||
|
?>
|
||||||
|
<script type="text/javascript">
|
||||||
|
function switchClassType()
|
||||||
|
{
|
||||||
|
if(document.forms['modif'].elements['admin'].checked)
|
||||||
|
{
|
||||||
|
replaceInnerText('studentTeacher', '<?php echo $sTeacherClass; ?>');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
replaceInnerText('studentTeacher', '<?php echo $sStudentClass; ?>');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<form action="?page=account" method="post" name="getEleve">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<td class="top-left-rounded bottom-left-rounded">Elève</td>
|
||||||
|
<td class="top-right-rounded bottom-right-rounded">
|
||||||
|
<select name="studentId" onchange="document.forms['getEleve'].submit();">
|
||||||
|
<?php
|
||||||
|
$asUsers = selectRows(array('from'=>USER_TABLE, 'orderBy'=>array('class'=>'asc', 'user_last_name'=>'asc')));
|
||||||
|
foreach($asUsers as $asUser)
|
||||||
|
{
|
||||||
|
echo '<option value="'.$asUser['id_'.USER_TABLE].'"'.(($iSelectedUserId==$asUser['id_'.USER_TABLE])?' selected="selected"':'').'>
|
||||||
|
'.$asUser['grade'].GRADE_CLASS_SEPARATOR.$asUser['class'].' - '.ucwords($asUser['user_last_name'].' '.$asUser['user_first_name']).
|
||||||
|
'</option>'."\n";
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" class="blank">
|
||||||
|
<input type="button" value="Supprimer ce compte" onclick="if(confirm('Etes-vous sur de vouloir supprimer le compte de <?php echo $asSelectedUserInfo['user_last_name']." ".$asSelectedUserInfo['user_first_name']; ?> ?'))document.deleteUser.submit();" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
|
||||||
|
//forms display : info and password modifications
|
||||||
|
if((isset($_GET['type']) && $_GET['type']=="pass" && !isset($_POST['submit'])) || $bfailedPassModif)
|
||||||
|
{
|
||||||
|
?>
|
||||||
|
<br />
|
||||||
|
<form action="?page=account&type=pass" method="post" name="updateAccount">
|
||||||
|
<table>
|
||||||
|
<tr><th colspan="2" class="top-left-rounded top-right-rounded">Changer de mot de passe</th></tr>
|
||||||
|
<tr>
|
||||||
|
<td>Ancien mot de passe</td>
|
||||||
|
<td><input type="password" name="oldpass" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Nouveau mot de passe</td>
|
||||||
|
<td><input type="password" name="pass" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="bottom-left-rounded">Nouveau mot de passe (une nouvelle fois)</td>
|
||||||
|
<td class="bottom-right-rounded"><input type="password" name="pass2" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" class="blank">
|
||||||
|
<input type="hidden" value="ok" name="submit" />
|
||||||
|
<input type="hidden" value="<?php echo $iSelectedUserId; ?>" name="studentId" />
|
||||||
|
<input type="button" name="annuler" onclick="goTo('?page=account');" value="Annuler"> <input type="submit" value="Changer le mot de passe">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
<br />
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
?>
|
||||||
|
<br />
|
||||||
|
<form action="?page=account&type=info" method="post" name="modif">
|
||||||
|
<table>
|
||||||
|
<tr><th colspan="2" class="top-left-rounded top-right-rounded">Modification de compte</th></tr>
|
||||||
|
<tr>
|
||||||
|
<td>Prénom</td>
|
||||||
|
<td><input type="text" name="firstname" value="<?php echo ucwords(isset($_POST['firstname'])?$_POST['firstname']:$asSelectedUserInfo['user_first_name']); ?>" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Nom de famille</td>
|
||||||
|
<td><input type="text" name="login" value="<?php echo ucwords(isset($_POST['login'])?$_POST['login']:$asSelectedUserInfo['user_last_name']); ?>" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Classe</td>
|
||||||
|
<td id="studentTeacher">
|
||||||
|
<?php echo $bIsSelectedUserAdmin?$sTeacherClass:$sStudentClass; ?>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php echo $sPromoteAdmin; ?>
|
||||||
|
<tr>
|
||||||
|
<td class="bottom-left-rounded">Mot de passe</td>
|
||||||
|
<td class="bottom-right-rounded"><input type="button" value="Changer le mot de passe" onclick="pass.submit();" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th colspan="2" class="blank">
|
||||||
|
<input type="hidden" value="ok" name="submit" />
|
||||||
|
<input type="hidden" value="<?php echo $iSelectedUserId; ?>" name="studentId" />
|
||||||
|
<input type="button" name="annuler" onclick="goTo('?page=logon');" value="Annuler"> <input type="submit" value="Changer les paramètres" />
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
<form action="?page=account&type=pass" method="post" name="pass">
|
||||||
|
<input type="hidden" name="studentId" value="<?php echo $iSelectedUserId; ?>" />
|
||||||
|
</form>
|
||||||
|
<form action="?page=account" method="post" name="deleteUser">
|
||||||
|
<input type="hidden" name="deleteUserId" value="<?php echo $iSelectedUserId; ?>" />
|
||||||
|
</form>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
?>
|
||||||
280
current_version/.svn/text-base/account_admin.php.svn-base
Normal file
280
current_version/.svn/text-base/account_admin.php.svn-base
Normal file
@@ -0,0 +1,280 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/* displays user's account settings */
|
||||||
|
|
||||||
|
define('DEL_USER_TAG', 'deluser');
|
||||||
|
|
||||||
|
//delete users
|
||||||
|
//TODO plusieurs eleves <20> la fois
|
||||||
|
if(isset($_GET['action']) && $_GET['action']=='delusers')
|
||||||
|
{
|
||||||
|
$asDeletedUserNames = array();
|
||||||
|
foreach($_POST as $sKey=>$sValue)
|
||||||
|
{
|
||||||
|
list($DelUserTag, $iUserId) = explode('_', $sKey);
|
||||||
|
//pre($DelUserTag.' '.$iUserId, '',true);
|
||||||
|
if($DelUserTag==DEL_USER_TAG && is_numeric($iUserId))
|
||||||
|
{
|
||||||
|
$sDeletedUserName = ucwords(getTextFromId(USER_TABLE, $iUserId));
|
||||||
|
if(isAdmin($iUserId))
|
||||||
|
{
|
||||||
|
addMessage(getError('Il est impossible de supprimer un compte administrateur ('.$sDeletedUserName.')'));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
deleteRow(USER_TABLE, $iUserId);
|
||||||
|
$asDeletedUserNames[] = $sDeletedUserName;
|
||||||
|
addFeed('DELETE', $iUserId , USER_TABLE, $sDeletedUserName, '');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(count($asDeletedUserNames)>0)
|
||||||
|
{
|
||||||
|
addMessage(getSuccess('Les comptes suivants ont été supprimés : '.implode(', ', $asDeletedUserNames)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//modify user account
|
||||||
|
$iSelectedUserId = isset($_REQUEST['studentId'])?$_REQUEST['studentId']:$_SESSION['user'];
|
||||||
|
$asSelectedUserInfo = selectRow(USER_TABLE, array($iSelectedUserId));
|
||||||
|
|
||||||
|
//modifications submit
|
||||||
|
$bfailedPassModif = false;
|
||||||
|
if(isset($_POST['submit']))
|
||||||
|
{
|
||||||
|
if($_GET['type']=='pass' && $_POST['pass']!='' && $_POST['oldpass']!='')
|
||||||
|
{
|
||||||
|
$sErrorMessage = checkPassword($_POST['oldpass'],$asSelectedUserInfo['pass'])?"":'Mot de passe incorrect';
|
||||||
|
$sErrorMessage .= ($_POST['pass']==$_POST['pass2'])?"":'Les mots de passe ne sont pas les mêmes';
|
||||||
|
$bfailedPassModif = ($sErrorMessage!='');
|
||||||
|
if($bfailedPassModif)
|
||||||
|
{
|
||||||
|
echo getError($sErrorMessage);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
updateRow(USER_TABLE, $iSelectedUserId, array('pass'=>encryptPassword($_POST['pass'])));
|
||||||
|
echo getSuccess('Mot de passe modifié');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elseif($_GET['type']=='info' && $_POST['login']!='' && $_POST['firstname']!='')
|
||||||
|
{
|
||||||
|
$sLastName = strtolower($_POST['login']);
|
||||||
|
$sFirstName = strtolower($_POST['firstname']);
|
||||||
|
|
||||||
|
//Check if someone has already been registered by that name
|
||||||
|
$asChangedUserInfo = getUserFromLogin($sLastName, $sFirstName);
|
||||||
|
$bUserAvailable = !$asChangedUserInfo || $iSelectedUserId==$asChangedUserInfo['id_user'];
|
||||||
|
if($bUserAvailable)
|
||||||
|
{
|
||||||
|
$asUserModif = array( 'user_first_name'=>$sFirstName,
|
||||||
|
'user_last_name'=>$sLastName,
|
||||||
|
'grade'=>$_POST['grade'],
|
||||||
|
'class'=>$_POST['class']);
|
||||||
|
if($bAdmin)
|
||||||
|
{
|
||||||
|
$asUserModif['admin'] = isset($_POST['admin'])?'1':'0';
|
||||||
|
}
|
||||||
|
|
||||||
|
$asUserInfo = selectRow(USER_TABLE, array($iSelectedUserId));
|
||||||
|
updateRow(USER_TABLE, $iSelectedUserId, $asUserModif);
|
||||||
|
|
||||||
|
//feed
|
||||||
|
$sModifiedUserName = $asUserInfo[USER_TABLE.'_first_name'].' '.$asUserInfo[USER_TABLE.'_last_name'];
|
||||||
|
if($sModifiedUserName != $sFirstName.' '.$sLastName)
|
||||||
|
{
|
||||||
|
addFeed('MODIFY', $sModifiedUserName, USER_TABLE.'_name', $sModifiedUserName, $sFirstName.' '.$sLastName);
|
||||||
|
}
|
||||||
|
if($asUserInfo['grade']!=$_POST['grade'] || $asUserInfo['class']!=$_POST['class'])
|
||||||
|
{
|
||||||
|
addFeed('MODIFY', $sModifiedUserName, USER_TABLE.'_class', $asUserInfo['grade'].GRADE_CLASS_SEPARATOR.$asUserInfo['class'], $_POST['grade'].GRADE_CLASS_SEPARATOR.$_POST['class']);
|
||||||
|
}
|
||||||
|
|
||||||
|
echo getSuccess('Coordonnées modifiées');
|
||||||
|
|
||||||
|
if($iSelectedUserId==$_SESSION['user'])
|
||||||
|
{
|
||||||
|
setSession($_SESSION['user']);
|
||||||
|
if($sLastName!=$asSelectedUserInfo['user_last_name'] || $sFirstName!=$asSelectedUserInfo['user_first_name'])
|
||||||
|
{
|
||||||
|
echo getWarning(array('Changement de login pour l\'authentification', 'Votre nouveau login est :', 'Nom : '.$sLastName, 'Prénom : '.$sFirstName));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo getError('Ce nom existe déjà dans la base de données');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo getError('Champs incomplets');
|
||||||
|
$bfailedPassModif = ($_GET['type']=="pass");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//student class selection / teacher
|
||||||
|
$sTeacherClass = 'Professeur<input type="hidden" name="grade" value="0"><input type="hidden" name="class" value="0">';
|
||||||
|
$sStudentClass = getClasses(array('grade' => isset($_POST['grade'])?$_POST['grade']:$asSelectedUserInfo['grade'], 'class' => isset($_POST['class'])?$_POST['class']:$asSelectedUserInfo['class']));
|
||||||
|
|
||||||
|
//forms display : info and password modifications
|
||||||
|
if(isset($_GET['type']) && $_GET['type']=="modif" && !isset($_POST['submit']))
|
||||||
|
{
|
||||||
|
$sPromoteAdmin = '';
|
||||||
|
$bIsSelectedUserAdmin = isAdmin($iSelectedUserId);
|
||||||
|
$asSelectedUserInfo = selectRow(USER_TABLE, array($iSelectedUserId));
|
||||||
|
$sPromoteAdmin = '<tr>
|
||||||
|
<td>Admin</td>
|
||||||
|
<td><input type="checkbox" name="admin" '.($bIsSelectedUserAdmin?'CHECKED ':'').' onclick="switchClassType();" /></td>
|
||||||
|
</tr>';
|
||||||
|
?>
|
||||||
|
<script type="text/javascript">
|
||||||
|
function switchClassType()
|
||||||
|
{
|
||||||
|
if(document.forms['modif'].elements['admin'].checked)
|
||||||
|
{
|
||||||
|
replaceInnerText('studentTeacher', '<?php echo $sTeacherClass; ?>');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
replaceInnerText('studentTeacher', '<?php echo $sStudentClass; ?>');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<br />
|
||||||
|
<form action="?page=account&type=info" method="post" name="modif">
|
||||||
|
<table>
|
||||||
|
<tr><th colspan="2" class="top-left-rounded top-right-rounded">Modification de compte</th></tr>
|
||||||
|
<tr>
|
||||||
|
<td>Prénom</td>
|
||||||
|
<td><input type="text" name="firstname" value="<?php echo $asSelectedUserInfo['user_first_name']; ?>" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Nom de famille</td>
|
||||||
|
<td><input type="text" name="login" value="<?php echo $asSelectedUserInfo['user_last_name']; ?>" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Classe</td>
|
||||||
|
<td id="studentTeacher">
|
||||||
|
<?php echo $bIsSelectedUserAdmin?$sTeacherClass:$sStudentClass; ?>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<?php echo $sPromoteAdmin; ?>
|
||||||
|
<tr>
|
||||||
|
<td class="bottom-left-rounded">Mot de passe</td>
|
||||||
|
<td class="bottom-right-rounded"><input type="button" value="Changer le mot de passe" onclick="pass.submit();" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th colspan="2" class="blank">
|
||||||
|
<input type="hidden" value="ok" name="submit" />
|
||||||
|
<input type="hidden" value="<?php echo $iSelectedUserId; ?>" name="studentId" />
|
||||||
|
<input type="button" name="annuler" onclick="goTo('?page=account_admin');" value="Annuler"> <input type="submit" value="Changer les paramètres" />
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
<form action="?page=account&type=pass" method="post" name="pass">
|
||||||
|
<input type="hidden" name="studentId" value="<?php echo $iSelectedUserId; ?>" />
|
||||||
|
</form>
|
||||||
|
<form action="?page=account" method="post" name="deleteUser">
|
||||||
|
<input type="hidden" name="deleteUserId" value="<?php echo $iSelectedUserId; ?>" />
|
||||||
|
</form>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
elseif((isset($_GET['type']) && $_GET['type']=="pass" && !isset($_POST['submit'])) || $bfailedPassModif)
|
||||||
|
{
|
||||||
|
?>
|
||||||
|
<br />
|
||||||
|
<form action="?page=account&type=pass" method="post" name="updateAccount">
|
||||||
|
<table>
|
||||||
|
<tr><th colspan="2" class="top-left-rounded top-right-rounded">Changer de mot de passe</th></tr>
|
||||||
|
<tr>
|
||||||
|
<td>Ancien mot de passe</td>
|
||||||
|
<td><input type="password" name="oldpass" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Nouveau mot de passe</td>
|
||||||
|
<td><input type="password" name="pass" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="bottom-left-rounded">Nouveau mot de passe (une nouvelle fois)</td>
|
||||||
|
<td class="bottom-right-rounded"><input type="password" name="pass2" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td colspan="2" class="blank">
|
||||||
|
<input type="hidden" value="ok" name="submit" />
|
||||||
|
<input type="hidden" value="<?php echo $iSelectedUserId; ?>" name="studentId" />
|
||||||
|
<input type="button" name="annuler" onclick="goTo('?page=account_admin');" value="Annuler"> <input type="submit" value="Changer le mot de passe">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
<br />
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$asPreviousEntries = array();
|
||||||
|
$asConstraints = array('admin'=>'0');
|
||||||
|
$asConstraintsSigns = array('admin'=>'=');
|
||||||
|
$sGradeClass = 'Toutes les classes';
|
||||||
|
if(isset($_POST['gradeClass']))
|
||||||
|
{
|
||||||
|
$sGradeClass = $_POST['gradeClass'];
|
||||||
|
list($iGrade, $iClass) = explode(GRADE_CLASS_SEPARATOR, $sGradeClass);
|
||||||
|
if($iGrade!=0 && $iClass!=0)
|
||||||
|
{
|
||||||
|
$asConstraints['grade'] = $iGrade;
|
||||||
|
$asConstraints['class'] = $iClass;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$asUsers = selectRows(array(
|
||||||
|
'from'=>USER_TABLE,
|
||||||
|
'constraint'=>$asConstraints,
|
||||||
|
'orderBy'=>array('class'=>'asc', 'user_last_name'=>'asc')));
|
||||||
|
$asStudents = array();
|
||||||
|
foreach($asUsers as $asUser)
|
||||||
|
{
|
||||||
|
if($asUser['class']==0 || $asUser['grade']==0){continue;}
|
||||||
|
$asStudents[] = '<tr>
|
||||||
|
<td style="text-align:left;"><strong>'.ucwords($asUser['user_last_name']).'</strong> '.ucwords($asUser['user_first_name']).'</td>
|
||||||
|
<td>'.$asUser['grade'].GRADE_CLASS_SEPARATOR.$asUser['class'].'</td>
|
||||||
|
<td><a href="?page=account_admin&type=modif&studentId='.$asUser['id_'.USER_TABLE].'">Modifier</a></td>
|
||||||
|
<td><input type="checkbox" name="'.DEL_USER_TAG.'_'.$asUser['id_'.USER_TABLE].'" /></td>
|
||||||
|
</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
$iStudentCount = count($asStudents);
|
||||||
|
$sStudents = ($iStudentCount>0)?implode("\n", $asStudents):'<tr><td colspan="4">Aucun utilisateur dans cette classe</td></tr>';
|
||||||
|
|
||||||
|
|
||||||
|
//Classes selection
|
||||||
|
$asClasses = getListe(array('select'=>array( "CONCAT(grade, '".GRADE_CLASS_SEPARATOR."', class) AS gradeClass", 'grade', 'class'),
|
||||||
|
'from'=>USER_TABLE,
|
||||||
|
'constraint'=>"admin=0 AND class<>0 AND grade<>0",
|
||||||
|
'groupBy' => 'gradeClass',
|
||||||
|
'orderBy'=>array('grade', 'class')));
|
||||||
|
$sSelectClasses = getSelect($asClasses, 'gradeClass', '', array('0'.GRADE_CLASS_SEPARATOR.'0'=>'Toutes'), isset($_POST['gradeClass'])?$_POST['gradeClass']:'', 'classSelect');
|
||||||
|
?>
|
||||||
|
<form name="classSelect" method="post" action="?page=<?php echo $sPage;?>">
|
||||||
|
<p style="text-align:center;margin-top:30px;">Classe : <?php echo $sSelectClasses; ?></p>
|
||||||
|
</form>
|
||||||
|
<form method="post" name="deleteUsers" action="?page=<?php echo $sPage;?>&action=delusers">
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th class="top-left-rounded" style="padding:2px 10px;">Elève</th>
|
||||||
|
<th style="padding:2px 10px;">Classe</th>
|
||||||
|
<th style="padding:2px 10px;">Modifier</th>
|
||||||
|
<th class="top-right-rounded" style="padding:2px 10px;">Supprimer</th>
|
||||||
|
</tr>
|
||||||
|
<?php echo $sStudents; ?>
|
||||||
|
<tr><th colspan="4" class="bottom-rounded"><?php echo $iStudentCount; ?> élève(s) (<?php echo $sGradeClass; ?>)</th></tr>
|
||||||
|
</table>
|
||||||
|
<div style="text-align:center;margin-top:10px;"><input type="submit" value="Supprimer" /></div>
|
||||||
|
</form>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
?>
|
||||||
178
current_version/.svn/text-base/backUpCreator.php.svn-base
Normal file
178
current_version/.svn/text-base/backUpCreator.php.svn-base
Normal file
@@ -0,0 +1,178 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/* Create a backup file in /backup/ folder and download a copy to the user hard drive. */
|
||||||
|
|
||||||
|
if(!function_exists('checkOrigin') || !$bAdmin)
|
||||||
|
{
|
||||||
|
require_once 'config.php';
|
||||||
|
relocate(getError('Accès interdit'));
|
||||||
|
}
|
||||||
|
|
||||||
|
//check external link
|
||||||
|
if(isset($_GET['action']) && $_GET['action']!='')
|
||||||
|
{
|
||||||
|
if(!checkOrigin('backUpCreator'))
|
||||||
|
{
|
||||||
|
relocate(getError('Aucun lien externe autorisé'));
|
||||||
|
}
|
||||||
|
|
||||||
|
//Set designed actions
|
||||||
|
switch ($_GET['action'])
|
||||||
|
{
|
||||||
|
case 'download':
|
||||||
|
createBackUp(isset($_POST['dropDb']));
|
||||||
|
break;
|
||||||
|
case 'restore':
|
||||||
|
$sBackFilePath = BACKUP_FOLDER.decodeUrl($_POST['backUpId']);
|
||||||
|
restoreBackUp($sBackFilePath, $oConnection);
|
||||||
|
break;
|
||||||
|
case 'upload' :
|
||||||
|
uploadBackUp($_FILES['backUpFile'], isset($_POST['restoreDb']), $oConnection);
|
||||||
|
break;
|
||||||
|
case 'sync':
|
||||||
|
$bInternalLink = ($_POST['version']!='');
|
||||||
|
$sUrl = $_POST['backUpUrl'].($bInternalLink?'/index.php?page=remote&action='.$_POST['version']:'');
|
||||||
|
$sAuth = isset($_POST['useKeyRing'])?getKeyRing():$_POST['key_ring'];
|
||||||
|
syncBackUp($sUrl, $bInternalLink, $sAuth, isset($_POST['restoreDb']), $oConnection);
|
||||||
|
break;
|
||||||
|
case 'reset' :
|
||||||
|
resetDatabase($oConnection);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//set Input Box for restoration
|
||||||
|
$oRestoreInputBox = new InputBox('Restauration d\'une sauvegarde', 'Etes-vous sur de vouloir charger la sauvegarde du #backUpDate# ?', array('Oui'=>'validateBackUp(\'#backUpId#\')', 'Non'=>''));
|
||||||
|
$oResetInputBox = new InputBox('Reset complet', 'Etes vous sûr de vouloir procéder à une réintallation complète ? (vous allez perdre toutes vos données)', array('Oui'=>'document.forms[\'reset\'].submit()', 'Non'=>''));
|
||||||
|
|
||||||
|
$sTitle = 'Suppression de la base de données courante';
|
||||||
|
$sWarningMessage = 'Etes-vous sur de vouloir remplacer la base de données par celle-ci ? Il est fortement conseillé de créer une sauvegarde avant une telle opération.';
|
||||||
|
$oUploadInputBox = new InputBox($sTitle, $sWarningMessage, array('Oui'=>'', 'Non'=>'document.forms[\'upload\'].restoreDb.checked = false;'));
|
||||||
|
$oSyncInputBox = new InputBox($sTitle, $sWarningMessage, array('Oui'=>'', 'Non'=>'document.forms[\'sync\'].restoreDb.checked = false;'));
|
||||||
|
|
||||||
|
//display available backups
|
||||||
|
$asFileList = glob(BACKUP_FOLDER.'*.'.DB_EXT_FILE);
|
||||||
|
$iFileNb = count($asFileList);
|
||||||
|
$iFilePerPage = 10;
|
||||||
|
|
||||||
|
//page switcher load
|
||||||
|
$oPageSwitcher = new PageSwitch('pageNb', $iFileNb, $iFilePerPage);
|
||||||
|
|
||||||
|
foreach($asFileList as $sFileName)
|
||||||
|
{
|
||||||
|
//set input box variables
|
||||||
|
$sBackUpId = encodeUrl(basename($sFileName));
|
||||||
|
$sTimeStamp = getTimeStampFromFile($sFileName);
|
||||||
|
$sBackUpName = date(LAYOUT_DATE_FORMAT, $sTimeStamp);
|
||||||
|
$oRestoreInputBox->setTags(array('backUpId'=>$sBackUpId, 'backUpDate'=>$sBackUpName));
|
||||||
|
|
||||||
|
$sLinkBackUp[$sTimeStamp] = ' <tr>
|
||||||
|
<td>Le '.$sBackUpName.'</td>
|
||||||
|
<td><input type="button" value="Télécharger" onClick="goTo(\'?page=download&file='.$sBackUpId.'\');" /></td>
|
||||||
|
<td><input type="button" value="Restorer cette sauvegarde" onClick="'.$oRestoreInputBox->getAction().'" /></td>
|
||||||
|
</tr>';
|
||||||
|
}
|
||||||
|
if(isset($sLinkBackUp))
|
||||||
|
{
|
||||||
|
krsort($sLinkBackUp);
|
||||||
|
$iFirstItem = $oPageSwitcher->getItemStartPointer();
|
||||||
|
$aiFileRange = $oPageSwitcher->getItemRange();
|
||||||
|
$sLinkBackUp = array_slice($sLinkBackUp, $iFirstItem, $iFilePerPage, true);
|
||||||
|
$sPageSwitchInfo = $aiFileRange['start'].' - '.$aiFileRange['end'].' sur ';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$sLinkBackUp = array('<tr><td colspan="3"><p>Aucune sauvegarde disponible</p><p><input type="button" value="Créer une sauvegarde maintenant" onClick="document.download.submit();" /></p></td></tr>');
|
||||||
|
$sPageSwitchInfo = '';
|
||||||
|
}
|
||||||
|
|
||||||
|
//KeyRing
|
||||||
|
$sKeyRing = getKeyRing();
|
||||||
|
?>
|
||||||
|
<fieldset class="rounded">
|
||||||
|
<legend class="rounded">Sauvegardes disponibles</legend>
|
||||||
|
<br />
|
||||||
|
<form name="restore" action="?page=backUpCreator&action=restore" method="post">
|
||||||
|
<table class="maxWidth">
|
||||||
|
<tr>
|
||||||
|
<th class="top-left-rounded">Date</th>
|
||||||
|
<th>Téléchargement</th>
|
||||||
|
<th class="top-right-rounded">Restoration</th>
|
||||||
|
</tr>
|
||||||
|
<?php echo implode("\n", $sLinkBackUp); ?>
|
||||||
|
<tr>
|
||||||
|
<th colspan="3" class="bottom-left-rounded bottom-right-rounded"><?php echo $oPageSwitcher->getPrevLink().' '.$sPageSwitchInfo.$iFileNb; ?> sauvegardes <?php echo $oPageSwitcher->getNextLink(); ?></th>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<input type="hidden" name="backUpId" value="" />
|
||||||
|
</form>
|
||||||
|
</fieldset>
|
||||||
|
<fieldset class="rounded">
|
||||||
|
<legend class="rounded">Créer une sauvegarde</legend>
|
||||||
|
<form name="download" action="?page=backUpCreator&action=download" method="post">
|
||||||
|
<p>Sauvegarde de la base de données <strong><?php echo DB_NAME; ?></strong> incluant les tables <?php echo implode(', ', getTables()); ?>.</p>
|
||||||
|
<p>Inclure les requête de suppression de la base avant réécriture : <input type="checkbox" name="dropDb" checked="checked" /></p>
|
||||||
|
<input type="submit" value="Lancer la sauvegarde" />
|
||||||
|
</form>
|
||||||
|
</fieldset>
|
||||||
|
<fieldset class="rounded">
|
||||||
|
<legend class="rounded">Ajouter une de vos sauvegardes</legend>
|
||||||
|
<form name="upload" action="?page=backUpCreator&action=upload" method="post" enctype="multipart/form-data">
|
||||||
|
<p>Insérer ici le fichier de sauvegarde (.sql) : <input type="file" name="backUpFile" /></p>
|
||||||
|
<p>remplacer la base de données actuelle par celle-ci :
|
||||||
|
<input type="checkbox" name="restoreDb" onchange="if(document.forms['upload'].restoreDb.checked)<?php echo $oUploadInputBox->getAction(); ?>" />
|
||||||
|
</p>
|
||||||
|
<input type="submit" value="Ajouter la sauvegarde" />
|
||||||
|
</form>
|
||||||
|
</fieldset>
|
||||||
|
<fieldset class="rounded">
|
||||||
|
<legend class="rounded">Synchroniser la base avec un point d'accès</legend>
|
||||||
|
<form name="sync" action="?page=backUpCreator&action=sync" method="post">
|
||||||
|
<p>
|
||||||
|
Insérer ici l'url de sauvegarde : <input type="text" name="backUpUrl" style="width:250px;" value="<?php echo isset($_POST['backUpUrl'])?$_POST['backUpUrl']:''; ?>" />
|
||||||
|
<select name="version">
|
||||||
|
<option value="<?php echo ACCESS_POINT_LAST_VERSION; ?>">Dernière version disponible</option>
|
||||||
|
<option value="<?php echo ACCESS_POINT_NEW_VERSION; ?>">Nouvelle version</option>
|
||||||
|
<option value="">aucune version (lien directe)</option>
|
||||||
|
</select>
|
||||||
|
</p>
|
||||||
|
<p>remplacer la base de données actuelle celle du point d'accès : <input type="checkbox" name="restoreDb" onchange="if(document.forms['sync'].restoreDb.checked)<?php echo $oSyncInputBox->getAction(); ?>" /></p>
|
||||||
|
<p>
|
||||||
|
Utiliser le KeyRing de cette session pour l'authentification : <input type="checkbox" name="useKeyRing" checked="checked" onclick="setKeyRingInput();" />
|
||||||
|
<span id="authentification" style="display:none;">
|
||||||
|
utiliser celui-ci : <input type="text" name="key_ring" style="width:300px;" />
|
||||||
|
</span>
|
||||||
|
</p>
|
||||||
|
<script type="text/javascript">
|
||||||
|
function setKeyRingInput()
|
||||||
|
{
|
||||||
|
var bUseKeyRing = document.forms['sync'].elements['useKeyRing'].checked;
|
||||||
|
setBoxDisplay('authentification', bUseKeyRing?'n':'y');
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<input type="submit" value="Synchroniser" />
|
||||||
|
</form>
|
||||||
|
</fieldset>
|
||||||
|
<fieldset class="rounded">
|
||||||
|
<legend class="rounded">KeyRing</legend>
|
||||||
|
<form name="keyring">
|
||||||
|
<p class="keyring">
|
||||||
|
<a href="#" onclick="setSelection('keyring', 'keyring');return false;"><img src="images/keyring.png" title="click pour sélectionner la clé" /></a>
|
||||||
|
<textarea name="keyring" class="disabled" rows="1" onclick="setSelection('keyring', 'keyring');"><?php echo $sKeyRing; ?></textarea>
|
||||||
|
</p>
|
||||||
|
</form>
|
||||||
|
</fieldset>
|
||||||
|
<fieldset class="rounded">
|
||||||
|
<legend class="rounded">Ré-initialisation complète</legend>
|
||||||
|
<form name="reset" action="?page=backUpCreator&action=reset" method="post">
|
||||||
|
<p>Tout supprimer et réinitialiser l'application (aka la méthode du bourinos) : <input type="button" value="Lancer" onclick="<?php echo $oResetInputBox->getAction(); ?>" /></p>
|
||||||
|
</form>
|
||||||
|
</fieldset>
|
||||||
|
<?php
|
||||||
|
echo $oRestoreInputBox->getHtml();
|
||||||
|
echo $oResetInputBox->getHtml();
|
||||||
|
echo $oUploadInputBox->getHtml();
|
||||||
|
echo $oSyncInputBox->getHtml();
|
||||||
|
?>
|
||||||
68
current_version/.svn/text-base/changelog.svn-base
Normal file
68
current_version/.svn/text-base/changelog.svn-base
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
0000-00-00 00:00:00 0.1 new feature Création de QCM
|
||||||
|
0000-00-00 00:00:00 1.0 new feature affichage des notes en direct
|
||||||
|
0000-00-00 00:00:00 1.0 new feature compte utilisateur
|
||||||
|
0000-00-00 00:00:00 1.0 new feature lecture de QCM
|
||||||
|
0000-00-00 00:00:00 1.1 new feature visionnage des notes obtenues
|
||||||
|
0000-00-00 00:00:00 1.1 new feature modification de compte
|
||||||
|
0000-00-00 00:00:00 1.1 new feature menus
|
||||||
|
0000-00-00 00:00:00 1.2 new feature calcul de moyenne par classe
|
||||||
|
0000-00-00 00:00:00 1.2 new feature modification des comptes par l admin
|
||||||
|
0000-00-00 00:00:00 1.2 new feature visionnage des notes par classe
|
||||||
|
0000-00-00 00:00:00 1.2 new feature onglet admin
|
||||||
|
0000-00-00 00:00:00 1.2 bug fix temps limite pour la création des QCM supprimée
|
||||||
|
0000-00-00 00:00:00 1.2 bug fix caractères spéciaux lors de créations de qcm
|
||||||
|
0000-00-00 00:00:00 1.3 design Beta tag
|
||||||
|
0000-00-00 00:00:00 1.3 design positionnement des paragraphes sur la page de versions
|
||||||
|
0000-00-00 00:00:00 1.3 design couleurs des boutons
|
||||||
|
0000-00-00 00:00:00 1.3 design Ajout bouton Déconnexion
|
||||||
|
0000-00-00 00:00:00 1.3 design Bords arrondis
|
||||||
|
0000-00-00 00:00:00 1.3 new feature Téléchargement
|
||||||
|
0000-00-00 00:00:00 1.3 new feature Les réponses de l'élève apparaissent sur les résultats des QCM
|
||||||
|
0000-00-00 00:00:00 1.3 new feature Suppression de compte
|
||||||
|
0000-00-00 00:00:00 1.3 bug fix auto logout à la fin de l'édition de QCM
|
||||||
|
0000-00-00 00:00:00 1.3 bug fix couleurs des moyennes
|
||||||
|
0000-00-00 00:00:00 1.5 design Logo qcm
|
||||||
|
0000-00-00 00:00:00 1.5 design Notification du compte connecté
|
||||||
|
0000-00-00 00:00:00 1.5 new feature Export de la base de données
|
||||||
|
0000-00-00 00:00:00 1.5 new feature remontée vers le haut du document
|
||||||
|
0000-00-00 00:00:00 1.5 new feature Bouton export en csv (Excel)
|
||||||
|
0000-00-00 00:00:00 1.5 new feature Option de finalisation des qcm
|
||||||
|
0000-00-00 00:00:00 1.5 new feature Téléchargements silencieux
|
||||||
|
0000-00-00 00:00:00 1.5 bug fix encodage du mot de passe
|
||||||
|
0000-00-00 00:00:00 1.5 bug fix doublon de login à la création et à la modification de login
|
||||||
|
0000-00-00 00:00:00 1.5 bug fix onglet paramètre : possibilité de changements sans vérification du mot de passe
|
||||||
|
0000-00-00 00:00:00 1.5 bug fix restructuration de l installation
|
||||||
|
0000-00-00 00:00:00 1.5 bug fix saut de lignes dans le libellé des questions
|
||||||
|
0000-00-00 00:00:00 2.0 new feature Téléchargement en csv avec coma separator embedded
|
||||||
|
0000-00-00 00:00:00 2.0 new feature Upload et restoration de backup
|
||||||
|
0000-00-00 00:00:00 2.0 new feature retour à la page en cours après déconnexion
|
||||||
|
0000-00-00 00:00:00 2.0 bug fix suppression complète des qcm : QCM + notes
|
||||||
|
0000-00-00 00:00:00 2.0 bug fix Restructuration complete des questions et des resultats (SQL)
|
||||||
|
0000-00-00 00:00:00 2.1 new feature Mélange des questions des QCM en lecture (mode anti-triche)
|
||||||
|
0000-00-00 00:00:00 2.1 design remplacement des fenetres javascript par des layers en html
|
||||||
|
0000-00-00 00:00:00 2.1 new feature Ajout d'une table pour le changelog
|
||||||
|
0000-00-00 00:00:00 2.1 bug fix modifier l'appel des fichiers de back up pour respecter l'ordre des dates
|
||||||
|
2010-02-28 15:52:23 2.1 bug fix ajouter les dates de modifications dans lhistorique des versions
|
||||||
|
2010-02-28 20:55:08 2.1 bug fix log in par nom de famille et prénom (siblings)
|
||||||
|
2010-03-04 13:54:26 2.1 new feature Création dynamique de base de données
|
||||||
|
2010-03-04 13:36:51 2.1 bug fix Couper la liste des backups à 10 (et afficher un bouton)
|
||||||
|
2010-03-04 13:55:04 2.1 new feature Point d'accès pour back up : export et import de base de données vers ou depuis un url
|
||||||
|
2010-03-10 09:27:12 2.1 bug fix Renforcement des sécurités d'accès (qcmResults & qcmProcess)
|
||||||
|
2010-03-09 09:48:01 2.1 bug fix qcmProcess.php : redirection en fin de traitement
|
||||||
|
2010-03-08 21:43:54 2.1 bug fix Fix : ajout de réponses sans question liée (NULL)
|
||||||
|
2010-05-17 16:07:06 2.2 new feature Log des changements utilisateur + flux rss
|
||||||
|
2010-04-21 16:23:32 2.2 bug fix Interface dynamique admin <-> eleve (grade + class) dans la gestion des comptes
|
||||||
|
2010-04-21 16:21:38 2.2 new feature Report Admin sur les erreurs SQL et relocate()
|
||||||
|
2010-05-17 16:08:15 2.2 bug fix Download en fonction (tout passe par index.php !)
|
||||||
|
2010-03-29 00:52:20 2.2 bug fix Check usage of insertUpdateRow() and optimize function
|
||||||
|
2010-06-08 20:12:53 2.2 bug fix Bug des apostrophes dans le cas d'un server configuré avec des magic quotes
|
||||||
|
2010-04-21 10:21:42 2.2 bug fix ajouter changelog au moment de l'installation initiale
|
||||||
|
2010-04-01 18:27:06 2.2 new feature moteur de recherche
|
||||||
|
2010-04-05 19:17:55 2.2 new feature Kit d'installation facile
|
||||||
|
2010-04-21 10:21:15 2.2 new feature téléchargement en zip ou gz en fonction du HTTP_USER_AGENT
|
||||||
|
2010-03-12 14:17:47 2.2 bug fix secure access point (v2 : shuffle firstname / name / pass)
|
||||||
|
2010-03-17 22:42:46 2.2 bug fix Secure le logon : isset($_SESSION['user']) avec une deuxieme validation sur HTTP_USER_AGENT + IP
|
||||||
|
2010-05-17 16:08:40 2.2 new feature image dans les questions
|
||||||
|
2010-06-25 13:40:14 2.2 bug fix Gerer le mode message
|
||||||
|
2010-06-21 19:21:42 2.2 bug fix modification du fonctionnement des dates des fichiers de back up
|
||||||
|
2010-06-25 15:59:12 2.2 new feature remote control
|
||||||
2171
current_version/.svn/text-base/config.php.svn-base
Normal file
2171
current_version/.svn/text-base/config.php.svn-base
Normal file
File diff suppressed because it is too large
Load Diff
140
current_version/.svn/text-base/frontal.php.svn-base
Normal file
140
current_version/.svn/text-base/frontal.php.svn-base
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/* Displays all QCM in the database : finished QCM (and unfinished ones made by the connected user) */
|
||||||
|
|
||||||
|
//delete / desactivate a qcm
|
||||||
|
if(isset($_POST['deleteQcm']))
|
||||||
|
{
|
||||||
|
$sDeletedQcmName = getTextFromId(QCM_TABLE, $_POST['deleteQcm']);
|
||||||
|
deleteRow(QCM_TABLE, $_POST['deleteQcm']);
|
||||||
|
addFeed('DELETE', $_POST['deleteQcm'], QCM_TABLE, $sDeletedQcmName);
|
||||||
|
}
|
||||||
|
elseif(isset($_POST['desactivateQcm']))
|
||||||
|
{
|
||||||
|
setQcmValidity($_POST['desactivateQcm'], false);
|
||||||
|
}
|
||||||
|
elseif(isset($_POST['activateQcm']))
|
||||||
|
{
|
||||||
|
if(checkQcm($_POST['activateQcm']))
|
||||||
|
{
|
||||||
|
setQcmValidity($_POST['activateQcm'], true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo getError(array('Il reste des erreurs dans ce Qcm.', 'Il est nécessaire de les corriger avant d\'activer ce Qcm'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//set Input Box
|
||||||
|
$oDeleteInputBox = new InputBox('Suppression du QCM : <strong>#qcmName#</strong>', 'Voulez-vous vraiment #qcmAction# le QCM : <em>"#qcmName#"</em> ?');
|
||||||
|
$oEditInputBox = new InputBox( 'Modification du QCM : <strong>#qcmName#</strong>',
|
||||||
|
'Voulez-vous faire une copie du QCM : <em>"#qcmName#"</em> avant de le modifier ?',
|
||||||
|
array('Oui'=>'goTo(\'?page=qcmCreator&qcm=#idQcm#©Qcm=1\')', 'Non'=>'goTo(\'?page=qcmCreator&qcm=#idQcm#©Qcm=0\')'));
|
||||||
|
|
||||||
|
//display valid and not valid (unfinished) QCM
|
||||||
|
$asParams = array
|
||||||
|
(
|
||||||
|
'notValid' => array
|
||||||
|
(
|
||||||
|
'title' => 'QCM non finalisés',
|
||||||
|
'valid' => '0',
|
||||||
|
'displayConstraint' => $bAdmin?array():array('id_'.USER_TABLE=>$_SESSION['user']),
|
||||||
|
'goTo' => 'Creator',
|
||||||
|
'copyQcm' => false,
|
||||||
|
'deleteAction' => 'deleteQcm',
|
||||||
|
'deleteTitle' => 'Supprimer',
|
||||||
|
'editTitle' => 'Activer'
|
||||||
|
),
|
||||||
|
'valid' => array
|
||||||
|
(
|
||||||
|
'title' => 'QCM disponibles',
|
||||||
|
'valid' => '1',
|
||||||
|
'displayConstraint' => array(),
|
||||||
|
'goTo' => 'Reader',
|
||||||
|
'copyQcm' => true,
|
||||||
|
'deleteAction' => 'desactivateQcm',
|
||||||
|
'deleteTitle' => 'Désactiver',
|
||||||
|
'editTitle' => 'Editer'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
foreach($asParams as $sParamName => $asParamValues)
|
||||||
|
{
|
||||||
|
$asConstraints = array_merge(array('valid'=>$asParamValues['valid']), $asParamValues['displayConstraint']);
|
||||||
|
$asQcms = selectRows(array('from'=>QCM_TABLE, 'constraint'=>$asConstraints));
|
||||||
|
$iTotal = 0;
|
||||||
|
if(count($asQcms) > 0)
|
||||||
|
{
|
||||||
|
$asDisplay[$sParamName] = '<p>'.$asParamValues['title'].' :</p>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th width="35%" class="top-left-rounded">nom du QCM</th>
|
||||||
|
<th width="20%">Auteur</th>
|
||||||
|
<th width="15%">Dernière modification</th>
|
||||||
|
<th width="15%">'.$asParamValues['editTitle'].' le QCM</th>
|
||||||
|
<th width="15%" class="top-right-rounded">'.$asParamValues['deleteTitle'].' le QCM</th>
|
||||||
|
</tr>';
|
||||||
|
|
||||||
|
foreach($asQcms as $asQcmRow)
|
||||||
|
{
|
||||||
|
$iQcmId = $asQcmRow['id_'.QCM_TABLE];
|
||||||
|
|
||||||
|
//link to the QCM
|
||||||
|
$asDisplay[$sParamName] .= '<tr><td class="qcmSelection" onclick="goTo(\'?page=qcm'.$asParamValues['goTo'].'&qcm='.$iQcmId.'\')"><p>'.$asQcmRow[QCM_TABLE].'</p></td>';
|
||||||
|
|
||||||
|
//get author info
|
||||||
|
$asAuthorInfo = selectRow(USER_TABLE, array($asQcmRow['id_'.USER_TABLE]), array(USER_TABLE.'_first_name', USER_TABLE.'_last_name'));
|
||||||
|
$asDisplay[$sParamName] .= '<td><p>'.ucwords($asAuthorInfo[USER_TABLE.'_first_name']).' '.ucwords($asAuthorInfo[USER_TABLE.'_last_name']).'</p></td><td><p>'.date('d/m/Y H:i:s', strtotime($asQcmRow['led'])).'</p></td>';
|
||||||
|
|
||||||
|
if($asQcmRow['id_user']==$_SESSION['user'] || $bAdmin)
|
||||||
|
{
|
||||||
|
$sFormName = 'form'.$iQcmId;
|
||||||
|
|
||||||
|
//set input box properties
|
||||||
|
$oDeleteInputBox->setTags(array('formName'=>$sFormName, 'qcmName'=>$asQcmRow[QCM_TABLE], 'qcmAction'=>$asParamValues['deleteTitle']));
|
||||||
|
$oEditInputBox->setTags(array('idQcm'=>$iQcmId, 'qcmName'=>$asQcmRow[QCM_TABLE]));
|
||||||
|
|
||||||
|
|
||||||
|
if($sParamName=='valid')
|
||||||
|
{
|
||||||
|
$sEdition = '<input type="button" onClick="'.($asParamValues['copyQcm']?$oEditInputBox->getAction():'goTo(\'?page=qcmCreator&qcm='.$iQcmId.'\')').'" value="Editer">';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$sEdition = '<form method="POST" action="?page=frontal">
|
||||||
|
<input type="hidden" value="'.$iQcmId.'" name="activateQcm" />
|
||||||
|
<input type="submit" value="Activer">
|
||||||
|
</form>';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$asDisplay[$sParamName] .= '<td>'.$sEdition.'</td>
|
||||||
|
<td>
|
||||||
|
<form class="no-margin" name="'.$sFormName.'" method="POST" action="?page=frontal">
|
||||||
|
<input type="hidden" value="'.$iQcmId.'" name="'.$asParamValues['deleteAction'].'" />
|
||||||
|
<input type="button" value="'.$asParamValues['deleteTitle'].'" onclick="'.$oDeleteInputBox->getAction().'" />
|
||||||
|
</form>
|
||||||
|
</td></tr>';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$asDisplay[$sParamName] .= '<td class="divDisabled"></td><td class="divDisabled"></td></tr>';
|
||||||
|
}
|
||||||
|
$iTotal++;
|
||||||
|
}
|
||||||
|
$asDisplay[$sParamName] .= '<tr><th colspan="5" class="bottom-left-rounded bottom-right-rounded">Un total de '.$iTotal.' QCM</th></tr></table>';
|
||||||
|
if($iTotal==0)
|
||||||
|
{
|
||||||
|
unset($asDisplay[$sParamName]);
|
||||||
|
}
|
||||||
|
next($asParams);
|
||||||
|
}
|
||||||
|
elseif($sParamName == 'valid')
|
||||||
|
{
|
||||||
|
$asDisplay[$sParamName] = getNotice('Aucun Qcm n\'est disponible');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
echo implode("\n",$asDisplay);
|
||||||
|
echo $oDeleteInputBox->getHtml();
|
||||||
|
echo $oEditInputBox->getHtml();
|
||||||
|
?>
|
||||||
143
current_version/.svn/text-base/functions.js.svn-base
Normal file
143
current_version/.svn/text-base/functions.js.svn-base
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
/* JavaScript Document. summoned by index.php */
|
||||||
|
|
||||||
|
function emptyBox(id)
|
||||||
|
{
|
||||||
|
if(document.forms['qcmCreator'].elements[id].value == "Tapez ici la question..." || document.forms['qcmCreator'].elements[id].value == "Tapez ici une reponse...")
|
||||||
|
{
|
||||||
|
document.forms['qcmCreator'].elements[id].value = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function goTo(url)
|
||||||
|
{
|
||||||
|
window.location.href = url;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setFocus(id, element)
|
||||||
|
{
|
||||||
|
if(!element)
|
||||||
|
{
|
||||||
|
document.getElementById(id).focus();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
document.forms[id].elements[element].focus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setSelection(form, element)
|
||||||
|
{
|
||||||
|
document.forms[form].elements[element].select();
|
||||||
|
}
|
||||||
|
|
||||||
|
function submitForm(formName)
|
||||||
|
{
|
||||||
|
document.forms[formName].submit();
|
||||||
|
}
|
||||||
|
|
||||||
|
function validateBackUp(id)
|
||||||
|
{
|
||||||
|
document.forms['restore'].backUpId.value = id;
|
||||||
|
submitForm('restore');
|
||||||
|
}
|
||||||
|
|
||||||
|
document.onmousemove = setXY;
|
||||||
|
|
||||||
|
function mouseX(evt)
|
||||||
|
{
|
||||||
|
if (evt.pageX)
|
||||||
|
{
|
||||||
|
return evt.pageX;
|
||||||
|
}
|
||||||
|
else if (evt.clientX)
|
||||||
|
{
|
||||||
|
return evt.clientX + (document.documentElement.scrollLeft?document.documentElement.scrollLeft:document.body.scrollLeft);
|
||||||
|
}
|
||||||
|
else return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function mouseY(evt)
|
||||||
|
{
|
||||||
|
if (evt.pageY)
|
||||||
|
{
|
||||||
|
return evt.pageY;
|
||||||
|
}
|
||||||
|
else if (evt.clientY)
|
||||||
|
{
|
||||||
|
return evt.clientY + (document.documentElement.scrollTop?document.documentElement.scrollTop:document.body.scrollTop);
|
||||||
|
}
|
||||||
|
else return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function setXY(evt)
|
||||||
|
{
|
||||||
|
X = mouseX(evt);
|
||||||
|
Y = mouseY(evt);
|
||||||
|
}
|
||||||
|
|
||||||
|
function hover(id, forceSet)
|
||||||
|
{
|
||||||
|
var className = document.getElementById(id).className;
|
||||||
|
var index = className.indexOf('Hover');
|
||||||
|
if(index === -1 && (!forceSet || forceSet=='y'))
|
||||||
|
{
|
||||||
|
document.getElementById(id).className = className+" "+className+"Hover";
|
||||||
|
}
|
||||||
|
else if(index !== -1 && (!forceSet || forceSet=='n'))
|
||||||
|
{
|
||||||
|
var spacePos = className.indexOf(' ');
|
||||||
|
document.getElementById(id).className = className.substring(0, spacePos);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function disableBox(form, element, forceSet)
|
||||||
|
{
|
||||||
|
if(!forceSet)
|
||||||
|
{
|
||||||
|
document.forms[form].elements[element].disabled = !document.forms[form].elements[element].disabled;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
document.forms[form].elements[element].disabled = (forceSet=='y')?true:false;
|
||||||
|
}
|
||||||
|
if(document.getElementById(element+'Delete'))
|
||||||
|
{
|
||||||
|
hover(element+'Delete', forceSet);
|
||||||
|
}
|
||||||
|
return document.forms[form].elements[element].disabled?'y':'n';
|
||||||
|
}
|
||||||
|
function disableDiv(id, forceSet)
|
||||||
|
{
|
||||||
|
var className = document.getElementById(id).className;
|
||||||
|
var index = className.indexOf('Disabled');
|
||||||
|
if(index === -1 && (!forceSet || forceSet=='y'))
|
||||||
|
{
|
||||||
|
document.getElementById(id).className = className+"Disabled";
|
||||||
|
}
|
||||||
|
else if(!forceSet || forceSet=='n')
|
||||||
|
{
|
||||||
|
document.getElementById(id).className = className.replace(/Disabled/g, "");
|
||||||
|
}
|
||||||
|
return (document.getElementById(id).className.indexOf('Disabled')===-1)?'n':'y';
|
||||||
|
}
|
||||||
|
function setBoxDisplay(id, forceSet)
|
||||||
|
{
|
||||||
|
if(!forceSet)
|
||||||
|
{
|
||||||
|
document.getElementById(id).style.display = (document.getElementById(id).style.display=='none')?'':'none';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
document.getElementById(id).style.display = (forceSet=='y')?'':'none';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function concatenateKeyWords(keywords)
|
||||||
|
{
|
||||||
|
return keywords.replace(/ /g, '+');
|
||||||
|
}
|
||||||
|
|
||||||
|
function replaceInnerText(id, newText)
|
||||||
|
{
|
||||||
|
document.getElementById(id).innerHTML = newText;
|
||||||
|
}
|
||||||
156
current_version/.svn/text-base/index.php.svn-base
Normal file
156
current_version/.svn/text-base/index.php.svn-base
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2010 Francois Lutran.
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program. If not, see http://www.gnu.org/licenses/gpl.html.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* First page on load */
|
||||||
|
|
||||||
|
//connection
|
||||||
|
session_start();
|
||||||
|
$sScriptStartTime = microtime();
|
||||||
|
require_once('config.php');
|
||||||
|
$oConnection = connection();
|
||||||
|
|
||||||
|
//clean data
|
||||||
|
cleanPost($_POST);
|
||||||
|
cleanPost($_GET);
|
||||||
|
cleanPost($_REQUEST);
|
||||||
|
|
||||||
|
//Page Management
|
||||||
|
$sRequestedPage = isset($_GET['page'])?$_GET['page']:DEFAULT_LOGGED_PAGE;
|
||||||
|
$sPage = pageAccessManagement($sRequestedPage);
|
||||||
|
$sPagePath = $sPage.'.php';
|
||||||
|
|
||||||
|
//Admin
|
||||||
|
$bConnected = checkSession();
|
||||||
|
$iUserId = $bConnected?$_SESSION['user']:false;
|
||||||
|
$bAdmin = isAdmin();
|
||||||
|
|
||||||
|
//display header
|
||||||
|
$asGeneralDisplay['beta'] = ($bAdmin && IS_BETA)?getA('?page=version', 'β', 'Envoyer un feedback', 'beta rounded'):'';
|
||||||
|
|
||||||
|
//display info
|
||||||
|
$sPageDesc = getPageDescription($sPage);
|
||||||
|
$asInfoDisplay['title'] = getHtml($sPageDesc, 'p', 'pageTitle rounded');
|
||||||
|
$asInfoDisplay['search'] = '';
|
||||||
|
if($bAdmin)
|
||||||
|
{
|
||||||
|
$asInfoDisplay['search'] = '<form name="search" method="post" action="?page=search" onSubmit="this.elements[\'keywords\'].value = concatenateKeyWords(this.elements[\'keywords\'].value);">
|
||||||
|
Recherche <input type="text" name="keywords" style="border-color:black;" value="'.(isset($_REQUEST['keywords'])?str_replace('+', ' ', $_REQUEST['keywords']):'').'" />
|
||||||
|
</form>';
|
||||||
|
}
|
||||||
|
$sConnectedUser = $bConnected?'Connecté : '.getHtml(ucwords($_SESSION['firstName'].' '.$_SESSION['lastName']), 'strong'):'Non connecté';
|
||||||
|
$asInfoDisplay['connectedUser'] = getHtml($sConnectedUser, 'p', 'connectedUser rounded');
|
||||||
|
$asGeneralDisplay['info'] = getHtml(getHtml(getHtml($asInfoDisplay, 'td', 'blank', 'padding:0;width:33%;'), 'tr'), 'table', 'maxWidth', 'border-spacing:0;');
|
||||||
|
|
||||||
|
//display browser warning
|
||||||
|
if(getBrowser() == 'msie')
|
||||||
|
{
|
||||||
|
$asGeneralDisplay['main']['browser'] = getWarning(array('Le navigateur Internet Explorer est déconseillé pour cette application',
|
||||||
|
'Nous vous conseillons un navigateur optimisé (et gratuit) tel que
|
||||||
|
<a href="http://www.mozilla-europe.org/fr/firefox/" title="Télécharger Firefox">Firefox</a>'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get included file
|
||||||
|
* Available variables within file:
|
||||||
|
* $bNoTemplate Boolean Display the application template
|
||||||
|
* $oConnection Object Database connection handle
|
||||||
|
* $iUserId Integer User Id (===false is not connected)
|
||||||
|
* $bAdmin Boolean Is the current user an admin
|
||||||
|
* $sPage String Page displayed
|
||||||
|
* $sScriptStartTime String Time at which the script started to be executed
|
||||||
|
*/
|
||||||
|
$bNoTemplate = false;
|
||||||
|
ob_start();
|
||||||
|
require_once($sPagePath);
|
||||||
|
$asGeneralDisplay['main']['file'] = ob_get_clean();
|
||||||
|
|
||||||
|
//display message
|
||||||
|
$asGeneralDisplay['message'] = getCleanMessage();
|
||||||
|
if($bAdmin && $sPage==DEFAULT_LOGGED_PAGE)
|
||||||
|
{
|
||||||
|
$asGeneralDisplay['message'] .= getCleanPublication($iUserId);
|
||||||
|
}
|
||||||
|
|
||||||
|
//display included file
|
||||||
|
if($bNoTemplate)
|
||||||
|
{
|
||||||
|
echo $asGeneralDisplay['main']['file'];
|
||||||
|
die();
|
||||||
|
}
|
||||||
|
|
||||||
|
//display Menu
|
||||||
|
$asGeneralDisplay['menu'] = getMenu($sPage, $bAdmin);
|
||||||
|
|
||||||
|
//display footer
|
||||||
|
$sLogLink = 'Version '.CURRENT_VERSION;
|
||||||
|
$asGeneralDisplay['rss'] = '';
|
||||||
|
if($bAdmin)
|
||||||
|
{
|
||||||
|
$sLogLink = getA('?page=version', $sLogLink, 'changelog et téléchargement');
|
||||||
|
$asGeneralDisplay['rss'] = getHtml(getA('?page=rss', getImage('images/feedIcon.png', 'flux rss'), 'flux rss'), 'p');
|
||||||
|
}
|
||||||
|
$asGeneralDisplay['version'] = $sLogLink;
|
||||||
|
|
||||||
|
//close SQL connection
|
||||||
|
if($oConnection)
|
||||||
|
{
|
||||||
|
mysql_close($oConnection);
|
||||||
|
}
|
||||||
|
|
||||||
|
//combine main part
|
||||||
|
$asGeneralDisplay['main'] = $asGeneralDisplay['message']."\n".implode("\n", $asGeneralDisplay['main']);
|
||||||
|
|
||||||
|
?>
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
|
||||||
|
<meta name="author" content="Franzz" />
|
||||||
|
<link href="style.css" rel="stylesheet" type="text/css" />
|
||||||
|
<!--[if IE]>
|
||||||
|
<link href="styleIe.css" rel="stylesheet" type="text/css" />
|
||||||
|
<![endif]-->
|
||||||
|
<script type="text/javascript" src="functions.js"></script>
|
||||||
|
<link rel="shortcut icon" href="images/favicon.ico" />
|
||||||
|
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="?page=rss"/>
|
||||||
|
<title>QCM - <?php echo $sPageDesc; ?></title>
|
||||||
|
</head>
|
||||||
|
<body id="top">
|
||||||
|
<img src="images/button_gradient_hover.gif" class="preload" alt="preloaded image" />
|
||||||
|
<img src="images/qcm_selection_hover.gif" class="preload" alt="preloaded image" />
|
||||||
|
<div id="layer" class="layer" style="display:none;"></div>
|
||||||
|
<?php echo $asGeneralDisplay['beta']; ?>
|
||||||
|
<div id="header" class="rounded">
|
||||||
|
<h1>Évaluation par <span class="logo">Q</span>CM</h1>
|
||||||
|
<h3>Collège International</h3>
|
||||||
|
</div>
|
||||||
|
<div id="topMenu"><?php echo $asGeneralDisplay['menu']; ?></div>
|
||||||
|
<div id="main" class="rounded">
|
||||||
|
<div id="info"><?php echo $asGeneralDisplay['info']; ?></div>
|
||||||
|
<?php echo $asGeneralDisplay['main']; ?>
|
||||||
|
</div>
|
||||||
|
<div id="footer">
|
||||||
|
<p>
|
||||||
|
Page chargée en <?php echo getElapsedTime($sScriptStartTime); ?> seconde(s). Application réalisée par M. Lutran pour le collège International de Fontainebleau.
|
||||||
|
<br />Projet sous licence <a href="http://www.gnu.org/licenses/gpl.html" target="_blank">GPLv3</a>. <?php echo $asGeneralDisplay['version']; ?>
|
||||||
|
</p>
|
||||||
|
<?php echo $asGeneralDisplay['rss']; ?>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
154
current_version/.svn/text-base/install.php.svn-base
Normal file
154
current_version/.svn/text-base/install.php.svn-base
Normal file
@@ -0,0 +1,154 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/* Setting up settings.php for constants storage */
|
||||||
|
|
||||||
|
//common variables
|
||||||
|
$sDbServer = isset($_POST['DB_SERVER'])?$_POST['DB_SERVER']:'localhost';
|
||||||
|
$sDbLogin = isset($_POST['DB_LOGIN'])?$_POST['DB_LOGIN']:'root';
|
||||||
|
$sDbName = isset($_POST['DB_NAME'])?$_POST['DB_NAME']:'dbqcm';
|
||||||
|
$sFirstName = isset($_POST['firstname'])?$_POST['firstname']:'';
|
||||||
|
$sLastName = isset($_POST['lastname'])?$_POST['lastname']:'';
|
||||||
|
$sFeedBackMail = isset($_POST['FEEDBACK_MAIL'])?$_POST['FEEDBACK_MAIL']:'';
|
||||||
|
$iMaxClass = isset($_POST['MAX_CLASS'])?$_POST['MAX_CLASS']:8;
|
||||||
|
$iMinGrade = isset($_POST['MIN_GRADE'])?$_POST['MIN_GRADE']:6;
|
||||||
|
$iMaxGrade = isset($_POST['MAX_GRADE'])?$_POST['MAX_GRADE']:3;
|
||||||
|
|
||||||
|
//process
|
||||||
|
if(isset($_POST['READY_TO_USE']))
|
||||||
|
{
|
||||||
|
if(file_exists(SETTINGS_FILE))
|
||||||
|
{
|
||||||
|
unlink(SETTINGS_FILE);
|
||||||
|
}
|
||||||
|
$oConnection = @mysql_connect($sDbServer, $sDbLogin, $_POST['DB_PASS']);
|
||||||
|
if(!$oConnection)
|
||||||
|
{
|
||||||
|
addMessage(getError(array('Connexion impossible', 'Vérifier les identifiants')));
|
||||||
|
}
|
||||||
|
elseif($sFirstName=='' || $sLastName=='')
|
||||||
|
{
|
||||||
|
addMessage(getError('Informations incomplètes'));
|
||||||
|
}
|
||||||
|
elseif($_POST['pass']!=$_POST['pass2'])
|
||||||
|
{
|
||||||
|
addMessage(getError('Les mots de passes ne sont pas les mêmes'));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$asAdminInfo = array(array($sFirstName, $sLastName, '0', '0', encryptPassword($_POST['pass']), 1));
|
||||||
|
if(install($oConnection, $sDbName, $asAdminInfo, isset($_POST['delete_db'])))
|
||||||
|
{
|
||||||
|
//setting Constants into file
|
||||||
|
$asConstants = array( 'DB_SERVER' => $_POST['DB_SERVER'],
|
||||||
|
'DB_LOGIN' => $_POST['DB_LOGIN'],
|
||||||
|
'DB_PASS' => $_POST['DB_PASS'],
|
||||||
|
'DB_NAME' => $_POST['DB_NAME'],
|
||||||
|
'FEEDBACK_MAIL' => $_POST['FEEDBACK_MAIL'],
|
||||||
|
'MAX_CLASS' => $_POST['MAX_CLASS'],
|
||||||
|
'MIN_GRADE' => $_POST['MIN_GRADE'],
|
||||||
|
'MAX_GRADE' => $_POST['MAX_GRADE'],
|
||||||
|
'READY_TO_USE' => $_POST['READY_TO_USE']);
|
||||||
|
$sSettingsFile = '<?php '."\n".implodeAll($asConstants, '\', \'', "\n", 'define(\'', '\');')."\n".' ?>';
|
||||||
|
if(file_put_contents(SETTINGS_FILE, $sSettingsFile, FILE_APPEND))
|
||||||
|
{
|
||||||
|
relocate(getSuccess('Installation terminée'));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
addMessage(getError(array('Création de fichier impossible', 'Vérifier les droits sur le dossier principal')));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
logMeOut(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(file_exists(SETTINGS_FILE))
|
||||||
|
{
|
||||||
|
$sDbServer = DB_SERVER;
|
||||||
|
$sDbLogin = DB_LOGIN;
|
||||||
|
$sDbName = DB_NAME;
|
||||||
|
$sFeedBackMail = FEEDBACK_MAIL;
|
||||||
|
$iMaxClass = MAX_CLASS;
|
||||||
|
$iMinGrade = MIN_GRADE;
|
||||||
|
$iMaxGrade = MAX_GRADE;
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO getHtmlTable()
|
||||||
|
?>
|
||||||
|
<p>Bienvenue dans QcmMaker v<?php echo STABLE_VERSION; ?> !</p>
|
||||||
|
<p>Veuillez entrer les informations suivantes : </p>
|
||||||
|
<form method="post" action="?page=install">
|
||||||
|
<fieldset class="rounded">
|
||||||
|
<legend class="rounded">Informations server</legend>
|
||||||
|
<table class="rounded">
|
||||||
|
<tr>
|
||||||
|
<td class="top-left-rounded">Adresse de votre server</td>
|
||||||
|
<td class="top-right-rounded"><input type="text" name="DB_SERVER" value="<?php echo $sDbServer; ?>" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>login MySql</td>
|
||||||
|
<td><input type="text" name="DB_LOGIN" value="<?php echo $sDbLogin; ?>" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Mot-de-passe MySql</td>
|
||||||
|
<td><input type="password" name="DB_PASS" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Nom de la base de données</td>
|
||||||
|
<td><input type="text" name="DB_NAME" value="<?php echo $sDbName; ?>" onchange="replaceInnerText('db_name', this.value);" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="bottom-left-rounded">Supprimer la base de données '<span id="db_name"><?php echo $sDbName; ?></span>' (si existante)</td>
|
||||||
|
<td class="bottom-right-rounded"><input type="checkbox" name="delete_db" /></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
<fieldset class="rounded">
|
||||||
|
<legend class="rounded">Informations administrateur</legend>
|
||||||
|
<table class="rounded">
|
||||||
|
<tr><th colspan="2" class="top-left-rounded top-right-rounded">Création du compte administrateur</th></tr>
|
||||||
|
<tr>
|
||||||
|
<td>Prénom</td>
|
||||||
|
<td><input type="text" name="firstname" value="<?php echo $sFirstName; ?>" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Nom de famille</td>
|
||||||
|
<td><input type="text" name="lastname" value="<?php echo $sLastName; ?>" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Mot de passe</td>
|
||||||
|
<td><input type="password" name="pass" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Mot de passe (une nouvelle fois)</td>
|
||||||
|
<td><input type="password" name="pass2" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="bottom-left-rounded">Adresse email de votre administrateur (optionel)</td>
|
||||||
|
<td class="bottom-right-rounded"><input type="text" name="FEEDBACK_MAIL" value="<?php echo $sFeedBackMail; ?>" /></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
<fieldset class="rounded">
|
||||||
|
<legend class="rounded">Paramètres supplémentaires</legend>
|
||||||
|
<input type="hidden" name="READY_TO_USE" value="1" />
|
||||||
|
<table class="rounded">
|
||||||
|
<tr>
|
||||||
|
<td class="top-left-rounded">Nombre de classes maximum par section</td>
|
||||||
|
<td class="top-right-rounded left"><input type="text" name="MAX_CLASS" value="<?php echo $iMaxClass; ?>" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Première section concernée</td>
|
||||||
|
<td class="left"><input type="text" name="MIN_GRADE" value="<?php echo $iMinGrade; ?>" />ème</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="bottom-left-rounded">Dernière section concernée</td>
|
||||||
|
<td class="bottom-right-rounded left"><input type="text" name="MAX_GRADE" value="<?php echo $iMaxGrade; ?>" />ème</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</fieldset>
|
||||||
|
<p style="text-align:center;"><input style="margin-top:10px;" type="submit" value ="Valider" /></p>
|
||||||
|
</form>
|
||||||
5
current_version/.svn/text-base/log.svn-base
Normal file
5
current_version/.svn/text-base/log.svn-base
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
data :
|
||||||
|
INSERT /* config.php 830 */
|
||||||
|
INTO changelog (`led`, `version`, `type`, `changelog`, `progress`)
|
||||||
|
VALUES ('0000-00-00 00:00:00', 0.1, 'new feature', 'Création de QCM', 1)
|
||||||
|
|
||||||
19
current_version/.svn/text-base/logon.php.svn-base
Normal file
19
current_version/.svn/text-base/logon.php.svn-base
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<form action="?page=logon&register=0" method="post">
|
||||||
|
<table>
|
||||||
|
<tr><th colspan="2" class="top-left-rounded top-right-rounded">Connexion</th></tr>
|
||||||
|
<tr>
|
||||||
|
<td>Prénom</td>
|
||||||
|
<td><input type="text" name="firstName" value="<?php echo isset($_POST['firstName'])?$_POST['firstName']:''; ?>" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Nom</td>
|
||||||
|
<td><input type="text" name="login" value="<?php echo isset($_POST['login'])?$_POST['login']:''; ?>" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="bottom-left-rounded">Mot de passe</td>
|
||||||
|
<td class="bottom-right-rounded"><input type="password" name="pass" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr><th colspan="2" class="blank"><input type="submit" value="Connexion" /></th></tr>
|
||||||
|
<tr><td colspan="2" class="rounded"><a href="?page=register">Créer un compte</a></td></tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
278
current_version/.svn/text-base/qcmCreator.php.svn-base
Normal file
278
current_version/.svn/text-base/qcmCreator.php.svn-base
Normal file
@@ -0,0 +1,278 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/* Displays the qcm form */
|
||||||
|
|
||||||
|
//Edition or creation selector
|
||||||
|
$bEdition = false;
|
||||||
|
$iNbQuestions = 0;
|
||||||
|
$asDisplayQuestions = $asAnswersCurrentState = array();
|
||||||
|
$sAdditionalBoxesScript = 'addQuestion();';
|
||||||
|
|
||||||
|
//get The Qcm in the database
|
||||||
|
if(isset($_GET['qcm']))
|
||||||
|
{
|
||||||
|
$iQcmId = $_GET['qcm'];
|
||||||
|
|
||||||
|
/*
|
||||||
|
if($_GET['copyQcm'])
|
||||||
|
{
|
||||||
|
$oQcm = new qcm($iQcmId);
|
||||||
|
$iQcmId = $oQcm->cloneQcm()->iQcmId;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
$bEdition=true;
|
||||||
|
$asQcm = getQcm($iQcmId);
|
||||||
|
$sQcmName = isset($asQcm[QCM_TABLE])?$asQcm[QCM_TABLE]:'';
|
||||||
|
$sQcmAuthorId = isset($asQcm['id_'.USER_TABLE])?$asQcm['id_'.USER_TABLE]:'';
|
||||||
|
$asQuestions = isset($asQcm[QUESTION_TABLE])?$asQcm[QUESTION_TABLE]:array();
|
||||||
|
|
||||||
|
foreach($asQuestions as $iQuestionId => $asAnswers)
|
||||||
|
{
|
||||||
|
$asDisplayAnswers = $asDisplayRightAnswers = array();
|
||||||
|
$iNbAnswers = 0;
|
||||||
|
$iNbQuestions++;
|
||||||
|
$sQuestion = $asAnswers[QUESTION_TABLE];
|
||||||
|
|
||||||
|
//image
|
||||||
|
$sImageName = $asAnswers['image'];
|
||||||
|
if($sImageName!='')
|
||||||
|
{
|
||||||
|
$sImage = getImage(IMAGE_FOLDER.$sImageName, '', '', '', array('id'=>'question'.$iQuestionId.'imageSrc'));
|
||||||
|
$sXButton = '<a href="#" id="question'.$iQuestionId.'ImageDelete" class="deleteImage" title="Supprimer cette image" onclick="deleteImage(\'question'.$iQuestionId.'\');return false;">X</a>';
|
||||||
|
$sImage = $sXButton.getHtml($sImage, 'div', 'qcmReader', '', array('id'=>'question'.$iQuestionId.'imageDiv'));
|
||||||
|
$sImageDiv = getInputHtml('Image', array($sImage, 'Remplacer par une nouvelle image', '', $iQuestionId));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$sImageDiv = getInputHtml('Image', array('', ADD_IMAGE_TEXT, '', $iQuestionId));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(array_key_exists(ANSWER_TABLE, $asAnswers) && count($asAnswers[ANSWER_TABLE])>0)
|
||||||
|
{
|
||||||
|
foreach($asAnswers[ANSWER_TABLE] as $iAnswerId => $asAnswer)
|
||||||
|
{
|
||||||
|
$iNbAnswers++;
|
||||||
|
$asDisplayAnswers[$iAnswerId] = getInputHtml('Answer', array($iQuestionId, $iAnswerId, '', $asAnswer[ANSWER_TABLE]));
|
||||||
|
$asDisplayRightAnswers[$iAnswerId] = getInputHtml('RightAnswer', array($iQuestionId, $iAnswerId, '', $asAnswer[RIGHT_ANSWER]?' CHECKED':''));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$asAnswersCurrentState[] = getInputHtml('CurrentAnswer', array($iQuestionId, $iNbAnswers));
|
||||||
|
$asDisplayQuestions[] = getInputHtml('Question', array($iNbQuestions, '', $iQuestionId, $sQuestion, implode($asDisplayAnswers), implode($asDisplayRightAnswers), $sImageDiv));
|
||||||
|
$sAdditionalBoxesScript .= 'addAnswer('.$iQuestionId.');';
|
||||||
|
}
|
||||||
|
|
||||||
|
//check Qcm
|
||||||
|
if(!checkOrigin('qcmCreator'))
|
||||||
|
{
|
||||||
|
checkQcm($iQcmId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<script type="text/javascript">
|
||||||
|
|
||||||
|
temp = new Array();
|
||||||
|
|
||||||
|
function save(formId)
|
||||||
|
{
|
||||||
|
for(var i in document.forms[formId].elements)
|
||||||
|
{
|
||||||
|
var elem = document.forms[formId].elements[i];
|
||||||
|
if(elem.type == 'text' || elem.type == 'textarea')
|
||||||
|
{
|
||||||
|
temp[elem.name] = elem.value;
|
||||||
|
}
|
||||||
|
else if(elem.type == 'checkbox')
|
||||||
|
{
|
||||||
|
temp[elem.name] = elem.checked;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function load(formId)
|
||||||
|
{
|
||||||
|
for(var i in document.forms[formId].elements)
|
||||||
|
{
|
||||||
|
var elem = document.forms[formId].elements[i];
|
||||||
|
if(temp[elem.name])
|
||||||
|
{
|
||||||
|
if(elem.type == 'checkbox')
|
||||||
|
{
|
||||||
|
document.forms[formId].elements[elem.name].checked = temp[elem.name];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
document.forms[formId].elements[elem.name].value = temp[elem.name];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function addQuestion(idRequestingQuestion)
|
||||||
|
{
|
||||||
|
var questionId = parseInt(document.forms['temp'].elements['currentquestion'].value);
|
||||||
|
if(!idRequestingQuestion || idRequestingQuestion==questionId)
|
||||||
|
{
|
||||||
|
save('qcmCreator');
|
||||||
|
questionId++;
|
||||||
|
newQuestion = '<?php echo getInputHtml('Question'); ?>';
|
||||||
|
newQuestion = newQuestion.replace(/\#questionId\#/g, questionId);
|
||||||
|
newQuestion = newQuestion.replace(/\#answerId\#/g, 1);
|
||||||
|
document.getElementById("questionpanel").innerHTML += newQuestion;
|
||||||
|
document.getElementById("temp").innerHTML += '<?php echo getInputHtml('CurrentAnswer'); ?>';
|
||||||
|
|
||||||
|
document.forms['temp'].elements['currentquestion'].value = questionId;
|
||||||
|
load('qcmCreator');
|
||||||
|
|
||||||
|
if(idRequestingQuestion)
|
||||||
|
{
|
||||||
|
document.forms['qcmCreator'].elements['newquestion'+(questionId-1)].focus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function addAnswer(questionId, idRequestingAnswer)
|
||||||
|
{
|
||||||
|
var answerId = parseInt(document.forms['temp'].elements["question"+questionId+"currentanswer"].value);
|
||||||
|
if(!idRequestingAnswer || idRequestingAnswer==answerId)
|
||||||
|
{
|
||||||
|
save('qcmCreator');
|
||||||
|
answerId++;
|
||||||
|
|
||||||
|
newAnswer = '<?php echo getInputHtml('Answer'); ?>';
|
||||||
|
newAnswer = newAnswer.replace(/\#answerId\#/g, answerId);
|
||||||
|
newAnswer = newAnswer.replace(/\#questionId\#/g, questionId);
|
||||||
|
newRightAnswer = '<?php echo getInputHtml('RightAnswer'); ?>';
|
||||||
|
newRightAnswer = newRightAnswer.replace(/\#answerId\#/g, answerId);
|
||||||
|
newRightAnswer = newRightAnswer.replace(/\#questionId\#/g, questionId);
|
||||||
|
document.getElementById("question"+questionId+"answerpanel").innerHTML += newAnswer;
|
||||||
|
document.getElementById("question"+questionId+"rightanswerpanel").innerHTML += newRightAnswer;
|
||||||
|
|
||||||
|
document.forms['temp'].elements["question"+questionId+"currentanswer"].value = answerId;
|
||||||
|
load('qcmCreator');
|
||||||
|
|
||||||
|
if(idRequestingAnswer)
|
||||||
|
{
|
||||||
|
document.forms['qcmCreator'].elements['newquestion'+questionId+'answer'+(answerId-1)].focus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function setDeletedData(id, forceSet)
|
||||||
|
{
|
||||||
|
var deletedData = document.forms['qcmCreator'].elements['deletedData'].value;
|
||||||
|
var index = deletedData.indexOf(id);
|
||||||
|
if(index === -1 && (!forceSet || forceSet=='y'))
|
||||||
|
{
|
||||||
|
deletedData += id+',';
|
||||||
|
}
|
||||||
|
else if(index !== -1 && (!forceSet || forceSet=='n'))
|
||||||
|
{
|
||||||
|
deletedData = deletedData.replace(new RegExp(id+',', 'i'), '');
|
||||||
|
}
|
||||||
|
document.forms['qcmCreator'].elements['deletedData'].value = deletedData;
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteQuestion(id)
|
||||||
|
{
|
||||||
|
var action = disableBox('qcmCreator', id);
|
||||||
|
disableBox('qcmCreator', id+'image', action);
|
||||||
|
disableImage(id, action);
|
||||||
|
setDeletedData(id);
|
||||||
|
for(var i in document.forms['qcmCreator'].elements)
|
||||||
|
{
|
||||||
|
var elem = document.forms['qcmCreator'].elements[i];
|
||||||
|
if((elem.type == 'text') && elem.id.indexOf(id) !== -1)
|
||||||
|
{
|
||||||
|
deleteAnswer(elem.id, action);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteAnswer(id, forceSet)
|
||||||
|
{
|
||||||
|
var action = disableBox('qcmCreator', id, forceSet);
|
||||||
|
setDeletedData(id, forceSet);
|
||||||
|
|
||||||
|
var index = id.length-1;
|
||||||
|
var rightAnswerId = '';
|
||||||
|
while(id.charAt(index).toString().search(/^[0-9]+$/) == 0)
|
||||||
|
{
|
||||||
|
rightAnswerId += id.charAt(index);
|
||||||
|
index--;
|
||||||
|
}
|
||||||
|
disableBox('qcmCreator', id+'<?php echo RIGHT_ANSWER; ?>'+rightAnswerId, forceSet);
|
||||||
|
|
||||||
|
//enable related question
|
||||||
|
var relatedQuestion = id.substring(0, id.indexOf('<?php echo ANSWER_TABLE; ?>'));
|
||||||
|
if(!document.forms['qcmCreator'].elements[relatedQuestion])
|
||||||
|
{
|
||||||
|
relatedQuestion = relatedQuestion.substring(3);
|
||||||
|
}
|
||||||
|
if(action == 'n' && document.forms['qcmCreator'].elements[relatedQuestion].disabled)
|
||||||
|
{
|
||||||
|
deleteQuestion(relatedQuestion);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function deleteImage(id, forceSet)
|
||||||
|
{
|
||||||
|
action = disableImage(id, forceSet);
|
||||||
|
setDeletedData(id+'image');
|
||||||
|
if(action == 'n' && document.forms['qcmCreator'].elements[id].disabled)
|
||||||
|
{
|
||||||
|
deleteQuestion(id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function disableImage(id, forceSet)
|
||||||
|
{
|
||||||
|
//image
|
||||||
|
var action = disableDiv(id+"imageDiv", forceSet);
|
||||||
|
document.getElementById(id+"imageSrc").style.opacity = (action=='y')?0.5:1;
|
||||||
|
hover(id+'ImageDelete', action);
|
||||||
|
|
||||||
|
//input
|
||||||
|
disableBox("qcmCreator", id+"image", action);
|
||||||
|
disableDiv(id+"imageText", forceSet);
|
||||||
|
|
||||||
|
return action;
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
<form action="?page=qcmProcess" method="post" name="qcmCreator" enctype="multipart/form-data">
|
||||||
|
<table class="maxWidth" id="questionpanel">
|
||||||
|
<tr>
|
||||||
|
<td colspan="3" class="rounded"><p class="important">Nom du QCM : <input type="text" name="qcm" value="<?php echo $bEdition?$sQcmName:''; ?>" /></p></td>
|
||||||
|
</tr>
|
||||||
|
<tr><td colspan="3" class="blank"> </td></tr>
|
||||||
|
<tr>
|
||||||
|
<th width="50%" class="top-left-rounded">Libellé de la question</th>
|
||||||
|
<th width="30%">Réponses possibles</th>
|
||||||
|
<th width="10%" class="top-right-rounded">Bonne(s) réponse(s)</th>
|
||||||
|
</tr>
|
||||||
|
<?php echo implode($asDisplayQuestions); ?>
|
||||||
|
</table>
|
||||||
|
<table class="maxWidth joinedTable">
|
||||||
|
<tr>
|
||||||
|
<th colspan="3" class="bottom-left-rounded bottom-right-rounded">une fois les questions complétées, cliquez sur le bouton 'Créer le QCM'</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="blank" colspan="4">
|
||||||
|
<input type="hidden" name="user" value="<?php echo $_SESSION['user']; ?>" />
|
||||||
|
<input type="hidden" name="author" value="<?php echo $bEdition?$sQcmAuthorId:$_SESSION['user']; ?>" />
|
||||||
|
<input type="hidden" name="id_<?php echo QCM_TABLE; ?>" value="<?php echo $bEdition?$iQcmId:'new'; ?>" />
|
||||||
|
<input type="hidden" name="deletedData" id="deletedData" value="">
|
||||||
|
<input type="button" name="annuler" onclick="goTo('?page=frontal');" value="Annuler">
|
||||||
|
|
||||||
|
<input type="submit" value="<?php echo $bEdition?"Modifier le QCM":"Créer le QCM"; ?>" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
|
<form id="temp" name="temp" style="display:none;">
|
||||||
|
<input type="hidden" name="currentquestion" id="currentquestion" value="<?php echo getMaxIncrementedValue(QUESTION_TABLE); ?>">
|
||||||
|
<?php echo implode($asAnswersCurrentState); ?>
|
||||||
|
</form>
|
||||||
|
<script type="text/javascript">
|
||||||
|
<?php echo $sAdditionalBoxesScript; ?>
|
||||||
|
</script>
|
||||||
121
current_version/.svn/text-base/qcmProcess.php.svn-base
Normal file
121
current_version/.svn/text-base/qcmProcess.php.svn-base
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/* Check the questions and answers, and add the QCM into database */
|
||||||
|
|
||||||
|
if(!checkOrigin('qcmCreator') || !isset($_POST['user']))
|
||||||
|
{
|
||||||
|
relocate(getError(array('Processus incorrect', 'Retour forcé à l\'accueil')));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//reconnection in case of session time out
|
||||||
|
setSession($_POST['user']);
|
||||||
|
|
||||||
|
$sQcmName = ($_POST[QCM_TABLE] != '')?$_POST[QCM_TABLE]:DEFAULT_QCM_NAME;
|
||||||
|
|
||||||
|
//Add / update the Qcm and unvalidate the qcm
|
||||||
|
$bNewQcm = ($_POST['id_'.QCM_TABLE]=='new');
|
||||||
|
$asData = array('id_user'=>$_POST['author'], QCM_TABLE=>$sQcmName);
|
||||||
|
$iQcmId = $bNewQcm?insertRow(QCM_TABLE, $asData):updateRow(QCM_TABLE, $_POST['id_'.QCM_TABLE], $asData);
|
||||||
|
setQcmValidity($iQcmId, false);
|
||||||
|
|
||||||
|
//feed
|
||||||
|
$iRefFeedId = addFeed($bNewQcm?'CREATE':'MODIFY', $iQcmId, QCM_TABLE, $sQcmName);
|
||||||
|
|
||||||
|
//Add the QCM questions, images & answers to the database
|
||||||
|
$asQuestionIds = $asFeedIds = array();
|
||||||
|
foreach($_POST as $sKey => $sValue)
|
||||||
|
{
|
||||||
|
$asDataKeys = parseQuestion($sKey);
|
||||||
|
if($asDataKeys && $sValue!=DEFAULT_QUESTION_INPUT && $sValue!=DEFAULT_ANSWER_INPUT)
|
||||||
|
{
|
||||||
|
$bNew = (strpos($sKey, 'new') !== false);
|
||||||
|
$iQuestionId = $asDataKeys[QUESTION_TABLE];
|
||||||
|
switch(count($asDataKeys))
|
||||||
|
{
|
||||||
|
case 1: //Add a question + image
|
||||||
|
$asData = array($iQcmId, $sValue);
|
||||||
|
if($bNew)
|
||||||
|
{
|
||||||
|
$asQuestionIds[$iQuestionId] = insertRow(QUESTION_TABLE, $asData);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$asQuestionIds[$iQuestionId] = updateRow(QUESTION_TABLE, $iQuestionId, $asData);
|
||||||
|
}
|
||||||
|
$asFeedIds[$iQuestionId] = addFeed($bNew?'CREATE':'MODIFY', $iRefFeedId, QUESTION_TABLE, $sValue, '', $iRefFeedId);
|
||||||
|
|
||||||
|
//image
|
||||||
|
$sImageName = $_FILES[$sKey.'image']['name'];
|
||||||
|
if($sImageName!='')
|
||||||
|
{
|
||||||
|
$oError = uploadFile($_FILES[$sKey.'image'], IMAGE_FOLDER, array('jpg', 'jpeg', 'bmp', 'png'));
|
||||||
|
if(is_string($oError))
|
||||||
|
{
|
||||||
|
addMessage($oError);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$sImageNewName = 'qcm'.$iQcmId.'question'.$asQuestionIds[$iQuestionId].'v'.date('dmYHis');
|
||||||
|
resizeRenameImage(IMAGE_FOLDER.$sImageName, $sImageNewName);
|
||||||
|
$bNewImage = (selectValue(QUESTION_TABLE, 'image', $asQuestionIds[$iQuestionId])=='');
|
||||||
|
updateRow(QUESTION_TABLE, $asQuestionIds[$iQuestionId], array('image'=>$sImageNewName.'.'.getExtension($sImageName)));
|
||||||
|
addFeed($bNewImage?'CREATE':'MODIFY', $asFeedIds[$iQuestionId], 'image', $sImageNewName, '', $iRefFeedId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 2: //Add an answer
|
||||||
|
//Add a question (empty) in the case of an answer without linked questions
|
||||||
|
if(!array_key_exists($iQuestionId, $asQuestionIds))
|
||||||
|
{
|
||||||
|
$asQuestionIds[$iQuestionId] = insertRow(QUESTION_TABLE, array($iQcmId, ''));
|
||||||
|
}
|
||||||
|
$bRightAnswer = isset($_POST[$sKey.RIGHT_ANSWER.$asDataKeys[ANSWER_TABLE]])?'1':'0';
|
||||||
|
$asData = array($asQuestionIds[$iQuestionId], $iQcmId, $sValue, $bRightAnswer);
|
||||||
|
if($bNew)
|
||||||
|
{
|
||||||
|
insertRow(ANSWER_TABLE, $asData);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
updateRow(ANSWER_TABLE, $asDataKeys[ANSWER_TABLE], $asData);
|
||||||
|
}
|
||||||
|
addFeed($bNew?'CREATE':'MODIFY', $asFeedIds[$iQuestionId], ANSWER_TABLE, $sValue, '', $iRefFeedId);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//delete questions / images / answers
|
||||||
|
foreach(array_filter(explode(',', $_POST['deletedData'])) as $sDeletedItem)
|
||||||
|
{
|
||||||
|
$asDataKeys = parseQuestion($sDeletedItem);
|
||||||
|
if(strpos($sDeletedItem, 'new') === false && $asDataKeys!=false && count($asDataKeys)>0)
|
||||||
|
{
|
||||||
|
if(strpos($sDeletedItem, 'image')!==false)
|
||||||
|
{
|
||||||
|
$sImagePath = IMAGE_FOLDER.selectValue(QUESTION_TABLE, 'image', $asDataKeys[QUESTION_TABLE]);
|
||||||
|
updateRow(QUESTION_TABLE, $asDataKeys[QUESTION_TABLE], array('image'=>''));
|
||||||
|
addFeed('DELETE', $asDataKeys[QUESTION_TABLE], 'image', $sImagePath, '', $iRefFeedId);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$sTable = (count($asDataKeys)==1)?QUESTION_TABLE:ANSWER_TABLE;
|
||||||
|
deleteRow($sTable, $asDataKeys[$sTable]);
|
||||||
|
addFeed('DELETE', $asDataKeys[$sTable], $sTable, $sImagePath, '', $iRefFeedId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Check Qcm
|
||||||
|
if(checkQcm($iQcmId))
|
||||||
|
{
|
||||||
|
setQcmValidity($iQcmId, true);
|
||||||
|
relocate(getSuccess('Modifications enregistrées'), 'qcmReader', array('qcm'=>$iQcmId));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
relocate('', 'qcmCreator', array('qcm'=>$iQcmId));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
60
current_version/.svn/text-base/qcmReader.php.svn-base
Normal file
60
current_version/.svn/text-base/qcmReader.php.svn-base
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/* Displays the selected QCM and check for previous results */
|
||||||
|
|
||||||
|
if(!isset($_GET['qcm']) || !is_numeric($_GET['qcm']) || $_GET['qcm']<=0)
|
||||||
|
{
|
||||||
|
echo getError(array('Qcm inconnu', 'Qcm n°'.$_GET['qcm']));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$iQcmId = $_GET['qcm'];
|
||||||
|
$asQcm = getQcm($iQcmId);
|
||||||
|
|
||||||
|
$sQcmName = $asQcm[QCM_TABLE];
|
||||||
|
|
||||||
|
//check if the user had already played this QCM
|
||||||
|
$bplayed = checkPreviousResults($_SESSION['user'], $iQcmId);
|
||||||
|
echo $bplayed?getWarning('Vous avez déjà répondu à ce QCM. Les résultats ne seront pas comptés'):'';
|
||||||
|
|
||||||
|
//display the questions
|
||||||
|
$iNbQuestions = 0;
|
||||||
|
foreach(shuffle_assoc($asQcm[QUESTION_TABLE]) as $iQuestionId => $asAnswers)
|
||||||
|
{
|
||||||
|
$asDisplayAnswers = $asDisplayRightAnswers = array();
|
||||||
|
$iNbAnswers = 0;
|
||||||
|
$iNbQuestions++;
|
||||||
|
foreach($asAnswers[ANSWER_TABLE] as $iAnswerId => $asAnswer)
|
||||||
|
{
|
||||||
|
$iNbAnswers++;
|
||||||
|
$asDisplayAnswers[$iAnswerId] = '<p class="question">'.$iNbAnswers.'. '.$asAnswer[ANSWER_TABLE].'</p>';
|
||||||
|
$asDisplayRightAnswers[$iAnswerId] = getInputHtml('RightAnswer', array($iQuestionId, $iAnswerId, '', ''));
|
||||||
|
}
|
||||||
|
|
||||||
|
$sImage = ($asAnswers['image']!='')?getHtml(getImage(IMAGE_FOLDER.$asAnswers['image']), 'div', 'qcmReader'):'';
|
||||||
|
$asDisplayQuestions[$iQuestionId] = '<tr>
|
||||||
|
<td width="10%">'.$iNbQuestions.'.</td>
|
||||||
|
<td width="60%">'.$asAnswers[QUESTION_TABLE].'<br />'.$sImage.'</td>
|
||||||
|
<td>'.implode("\n", $asDisplayAnswers).'</td>
|
||||||
|
<td>'.implode("\n", $asDisplayRightAnswers).'</td>
|
||||||
|
</tr>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<form action="?page=qcmResults" method="post">
|
||||||
|
<table class="maxWidth">
|
||||||
|
<tr>
|
||||||
|
<th colspan="4" class="top-left-rounded top-right-rounded"><p class="tresimportant"><?php echo $sQcmName; ?></p></th>
|
||||||
|
</tr>
|
||||||
|
<?php
|
||||||
|
echo implode("\n", $asDisplayQuestions);
|
||||||
|
?>
|
||||||
|
<tr>
|
||||||
|
<td colspan="4" class="bottom-left-rounded bottom-right-rounded">
|
||||||
|
<input type="hidden" name="qcm" value="<?php echo $iQcmId; ?>" />
|
||||||
|
<input type="hidden" name="user" value="<?php echo $_SESSION['user']; ?>" />
|
||||||
|
<input style="margin:10px;font-size:large;" type="submit" value="Résultats" />
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
81
current_version/.svn/text-base/qcmResults.php.svn-base
Normal file
81
current_version/.svn/text-base/qcmResults.php.svn-base
Normal file
@@ -0,0 +1,81 @@
|
|||||||
|
<?php
|
||||||
|
/* return user's results */
|
||||||
|
|
||||||
|
//reconnection in case of session time out
|
||||||
|
if(!checkOrigin('qcmReader', array('qcm'=>$_POST['qcm'])) || !isset($_POST['user']))
|
||||||
|
{
|
||||||
|
relocate(getError('Vous devez répondre à un QCM pour accéder à à la page de résultats'));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//reconnect session
|
||||||
|
setSession($_POST['user']);
|
||||||
|
|
||||||
|
//input Qcm data
|
||||||
|
$iQcmId = $_POST['qcm'];
|
||||||
|
$asQcm = getQcm($iQcmId);
|
||||||
|
$sQcmName = $asQcm[QCM_TABLE];
|
||||||
|
|
||||||
|
//display QCM results
|
||||||
|
$iNbRightAnswers = 0;
|
||||||
|
$iNbQuestions = getNbQuestions($iQcmId);
|
||||||
|
foreach($asQcm[QUESTION_TABLE] as $iQuestionId => $asQuestion)
|
||||||
|
{
|
||||||
|
$bAnswerUserResult = true;
|
||||||
|
$asDisplayRightResults = $asDisplayUserResults = '';
|
||||||
|
$asDisplayResults[$iQuestionId] = '<tr><td>'.$asQuestion[QUESTION_TABLE].'</td>';
|
||||||
|
foreach($asQuestion[ANSWER_TABLE] as $iAnswerId => $asAnswer)
|
||||||
|
{
|
||||||
|
$bUserAnswer = isset($_POST[QUESTION_TABLE.$iQuestionId.ANSWER_TABLE.$iAnswerId.RIGHT_ANSWER.$iAnswerId]);
|
||||||
|
$bRightAnswer = ($asAnswer[RIGHT_ANSWER] == '1');
|
||||||
|
$bAnswerUserResult = ($bAnswerUserResult && $bUserAnswer==$bRightAnswer);
|
||||||
|
$asDisplayRightResults .= $asAnswer[RIGHT_ANSWER]?'<p>• '.$asAnswer[ANSWER_TABLE].'</p>':'' ;
|
||||||
|
$asDisplayUserResults .= $bUserAnswer?'<p>• '.$asAnswer[ANSWER_TABLE].'</p>':'' ;
|
||||||
|
|
||||||
|
}
|
||||||
|
$asDisplayResults[$iQuestionId] .= '<td class="left">'.$asDisplayRightResults.'</td><td class="left">'.$asDisplayUserResults.'</td>';
|
||||||
|
if($bAnswerUserResult)
|
||||||
|
{
|
||||||
|
$asDisplayResults[$iQuestionId] .= "<td class=\"true\">Vrai</td>";
|
||||||
|
$iNbRightAnswers++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$asDisplayResults[$iQuestionId] .= "<td class=\"false\">Faux</td>";
|
||||||
|
}
|
||||||
|
$asDisplayResults[$iQuestionId] .= '</tr>';
|
||||||
|
}
|
||||||
|
|
||||||
|
//Update results table
|
||||||
|
$sUpdateResult = '';
|
||||||
|
$bplayed = checkPreviousResults($_SESSION['user'], $iQcmId);
|
||||||
|
if($bplayed)
|
||||||
|
{
|
||||||
|
$sUpdateResult = '(Votre note n\'a pas été enregistrée)';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
addResult($_SESSION['user'], $iQcmId, $iNbRightAnswers/$iNbQuestions);
|
||||||
|
addFeed('CREATE', $_SESSION['firstName'].' '.$_SESSION['lastName'], RESULT_TABLE, getTextFromId(QCM_TABLE, $iQcmId));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<table>
|
||||||
|
<tr>
|
||||||
|
<th colspan="4" class="rounded"><p class="tresimportant"><?php echo $sQcmName; ?> - Résultats</p></th>
|
||||||
|
</tr>
|
||||||
|
<tr><td class="blank"></td></tr>
|
||||||
|
<tr>
|
||||||
|
<th class="top-left-rounded" width="40%"><p>Question</p></th>
|
||||||
|
<th width="25%"><p>Bonnes réponses</p></th>
|
||||||
|
<th width="25%"><p>Vos réponses</p></th>
|
||||||
|
<th width="10%" class="top-right-rounded"><p>Votre résultat</p></th>
|
||||||
|
</tr>
|
||||||
|
<?php echo implode("\n", $asDisplayResults); ?>
|
||||||
|
<tr>
|
||||||
|
<td colspan="4" class="bottom-left-rounded bottom-right-rounded">
|
||||||
|
<p class="tresimportant"><?php echo ucwords($_SESSION['firstName'].' '.$_SESSION['lastName']).', votre note : '.round($iNbRightAnswers/$iNbQuestions*20, 2).'/20'; ?></p>
|
||||||
|
<p><?php echo $sUpdateResult; ?></p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
36
current_version/.svn/text-base/register.php.svn-base
Normal file
36
current_version/.svn/text-base/register.php.svn-base
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
<?php
|
||||||
|
$sLogin = isset($_POST['login'])?$_POST['login']:'';
|
||||||
|
$sFirstName = isset($_POST['firstname'])?$_POST['firstname']:'';
|
||||||
|
?>
|
||||||
|
<form action="?page=logon®ister=1" method="post">
|
||||||
|
<table>
|
||||||
|
<tr><th colspan="2" class="top-left-rounded top-right-rounded">Création de compte</th></tr>
|
||||||
|
<tr>
|
||||||
|
<td>Prénom</td>
|
||||||
|
<td><input type="text" name="firstname" value="<?php echo $sFirstName; ?>" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Nom de famille</td>
|
||||||
|
<td><input type="text" name="login" value="<?php echo $sLogin; ?>" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Classe</td>
|
||||||
|
<td><?php echo getClasses(); ?></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Mot de passe</td>
|
||||||
|
<td><input type="password" name="pass" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="bottom-left-rounded">Mot de passe (une nouvelle fois)</td>
|
||||||
|
<td class="bottom-right-rounded"><input type="password" name="pass2" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th colspan="2" class="blank">
|
||||||
|
<input type="button" name="annuler" onclick="goTo('?page=logon');" value="Annuler">
|
||||||
|
|
||||||
|
<input type="submit" value="S'enregistrer">
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</form>
|
||||||
226
current_version/.svn/text-base/rss.php.svn-base
Normal file
226
current_version/.svn/text-base/rss.php.svn-base
Normal file
@@ -0,0 +1,226 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/* RSS Feed */
|
||||||
|
|
||||||
|
$bNoTemplate = true;
|
||||||
|
|
||||||
|
$asRssFeed = selectRows(array('from'=>FEED_TABLE, 'constraint'=>array('id_ref'=>'0')));
|
||||||
|
$sRssFeedUrl = cleanRss('http://'.$_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'].'?page=rss');
|
||||||
|
$asItems = array();
|
||||||
|
foreach($asRssFeed as $asRssItem)
|
||||||
|
{
|
||||||
|
$sTitle = $sDesc = '';
|
||||||
|
switch($asRssItem['action'])
|
||||||
|
{
|
||||||
|
case 'CREATE':
|
||||||
|
$sTitle .= 'Cr<43>ation ';
|
||||||
|
switch($asRssItem['type'])
|
||||||
|
{
|
||||||
|
case 'database':
|
||||||
|
$sTitle .= 'd\'une nouvelle sauvegarde';
|
||||||
|
$sDesc = 'Une nouvelle sauvegarde de la base de donn<6E>es "'.$asRssItem['source'].'" a <20>t<EFBFBD> cr<63><72>e.
|
||||||
|
Chemin : '.$asRssItem['old_value'];
|
||||||
|
break;
|
||||||
|
case QCM_TABLE:
|
||||||
|
$sTitle .= 'd\'un QCM';
|
||||||
|
$sDesc = 'Le QCM nomm<6D> "'.$asRssItem['old_value'].'" a <20>t<EFBFBD> cr<63><72>';
|
||||||
|
break;
|
||||||
|
case QUESTION_TABLE:
|
||||||
|
$sTitle .= 'd\'une question';
|
||||||
|
$sDesc = 'La question "'.$asRssItem['old_value'].'" a <20>t<EFBFBD> cr<63><72>';
|
||||||
|
break;
|
||||||
|
case 'image':
|
||||||
|
$sTitle .= 'd\'une image';
|
||||||
|
$sDesc = 'L\'image "'.$asRssItem['old_value'].'" a <20>t<EFBFBD> ajout<75>';
|
||||||
|
break;
|
||||||
|
case ANSWER_TABLE:
|
||||||
|
$sTitle .= 'd\'une proposition de r<>ponse';
|
||||||
|
$sDesc = 'La proposition de r<>ponse "'.$asRssItem['old_value'].'" a <20>t<EFBFBD> cr<63><72>';
|
||||||
|
break;
|
||||||
|
case RESULT_TABLE:
|
||||||
|
$sTitle .= 'd\'un r<>sultat de qcm';
|
||||||
|
$sDesc = 'L\'utilisateur "'.ucwords($asRssItem['source']).'" a r<>pondu au qcm "'.$asRssItem['old_value'].'"';
|
||||||
|
break;
|
||||||
|
case USER_TABLE:
|
||||||
|
$sTitle .= 'd\'un compte utilisateur';
|
||||||
|
$sDesc = 'L\'utilisateur "'.ucwords($asRssItem['old_value']).'" s\'est enregistr<74>';
|
||||||
|
break;
|
||||||
|
case CHANGELOG_TABLE:
|
||||||
|
$sTitle .= 'd\'un changelog';
|
||||||
|
$sDesc = 'La modification n<>'.$asRssItem['source'].'. "'.$asRssItem['old_value'].'" a <20>t<EFBFBD> ajout<75>';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'MODIFY':
|
||||||
|
$sTitle .= 'Modification ';
|
||||||
|
switch($asRssItem['type'])
|
||||||
|
{
|
||||||
|
case USER_TABLE.'_name':
|
||||||
|
$sTitle .= 'du nom d\'un utilisateur';
|
||||||
|
$sDesc = 'l\'utilisateur "'.ucwords($asRssItem['old_value']).'" est dor<6F>navant nomm<6D> '.$asRssItem['new_value'];
|
||||||
|
break;
|
||||||
|
case USER_TABLE.'_class':
|
||||||
|
$sTitle .= 'de la classe d\'un utilisateur ';
|
||||||
|
$sDesc = 'l\'utilisateur "'.ucwords($asRssItem['source']).'" est pass<73> de la classe '.$asRssItem['old_value'].' <20> la classe '.$asRssItem['new_value'];
|
||||||
|
break;
|
||||||
|
case QCM_TABLE:
|
||||||
|
$sTitle .= 'd\'un QCM';
|
||||||
|
$sDesc = 'Le QCM nomm<6D> "'.$asRssItem['old_value'].'" a <20>t<EFBFBD> modifi<66>';
|
||||||
|
break;
|
||||||
|
case QUESTION_TABLE:
|
||||||
|
$sTitle .= 'd\'une question';
|
||||||
|
$sDesc = 'La question "'.$asRssItem['old_value'].'" a <20>t<EFBFBD> modifi<66>e';
|
||||||
|
break;
|
||||||
|
case 'image':
|
||||||
|
$sTitle .= 'd\'une image';
|
||||||
|
$sDesc = 'L\'image "'.$asRssItem['old_value'].'" a <20>t<EFBFBD> modifi<66>';
|
||||||
|
break;
|
||||||
|
case ANSWER_TABLE:
|
||||||
|
$sTitle .= 'd\'une proposition de r<>ponse';
|
||||||
|
$sDesc = 'La proposition de r<>ponse "'.$asRssItem['old_value'].'" a <20>t<EFBFBD> modif<69>';
|
||||||
|
break;
|
||||||
|
case CHANGELOG_TABLE:
|
||||||
|
$sTitle .= 'd\'un changelog';
|
||||||
|
$sDesc = 'La modification n<>'.$asRssItem['source'].'. "'.$asRssItem['old_value'].'" a <20>t<EFBFBD> modifi<66>e.
|
||||||
|
Nouvelle modification : "'.$asRssItem['new_value'].'"';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'ACTIVATE':
|
||||||
|
$sTitle .= 'Activation ';
|
||||||
|
switch($asRssItem['type'])
|
||||||
|
{
|
||||||
|
case QCM_TABLE:
|
||||||
|
$sTitle .= 'd\'un qcm';
|
||||||
|
$sDesc = 'Le qcm "'.$asRssItem['old_value'].'" a <20>t<EFBFBD> activ<69>';
|
||||||
|
break;
|
||||||
|
case CHANGELOG_TABLE:
|
||||||
|
$sTitle .= 'd\'un changelog';
|
||||||
|
$sDesc = 'La modification n<>'.$asRssItem['source'].'. "'.$asRssItem['old_value'].'" est achev<65>';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'DESACTIVATE':
|
||||||
|
$sTitle .= 'D<>sactivation ';
|
||||||
|
switch($asRssItem['type'])
|
||||||
|
{
|
||||||
|
case QCM_TABLE:
|
||||||
|
$sTitle .= 'd\'un qcm';
|
||||||
|
$sDesc = 'Le qcm "'.$asRssItem['old_value'].'" a <20>t<EFBFBD> d<>sactiv<69>';
|
||||||
|
break;
|
||||||
|
case CHANGELOG_TABLE:
|
||||||
|
$sTitle .= 'd\'un changelog';
|
||||||
|
$sDesc = 'La modification n<>'.$asRssItem['source'].'. "'.$asRssItem['old_value'].'" est pass<73> en mode "non achev<65>"';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'DELETE':
|
||||||
|
$sTitle .= 'Suppression ';
|
||||||
|
switch($asRssItem['type'])
|
||||||
|
{
|
||||||
|
case USER_TABLE:
|
||||||
|
$sTitle .= 'd\'un utilisateur';
|
||||||
|
$sDesc = 'Le compte de l\'utilisateur "'.$asRssItem['old_value'].'" a <20>t<EFBFBD> supprim<69>';
|
||||||
|
break;
|
||||||
|
case QCM_TABLE:
|
||||||
|
$sTitle .= 'd\'un qcm ';
|
||||||
|
$sDesc = 'Le qcm intitul<75> "'.$asRssItem['old_value'].'" a <20>t<EFBFBD> supprim<69>';
|
||||||
|
break;
|
||||||
|
case QUESTION_TABLE:
|
||||||
|
$sTitle .= 'd\'une question';
|
||||||
|
$sDesc = 'La question "'.$asRssItem['old_value'].'" a <20>t<EFBFBD> supprim<69>e';
|
||||||
|
break;
|
||||||
|
case 'image':
|
||||||
|
$sTitle .= 'd\'une image';
|
||||||
|
$sDesc = 'L\'image "'.$asRssItem['old_value'].'" a <20>t<EFBFBD> supprim<69>e';
|
||||||
|
break;
|
||||||
|
case ANSWER_TABLE:
|
||||||
|
$sTitle .= 'd\'une proposition de r<>ponse';
|
||||||
|
$sDesc = 'La proposition de r<>ponse "'.$asRssItem['old_value'].'" a <20>t<EFBFBD> supprim<69>e';
|
||||||
|
break;
|
||||||
|
case CHANGELOG_TABLE:
|
||||||
|
$sTitle .= 'd\'un changelog';
|
||||||
|
$sDesc = 'La modification n<>'.$asRssItem['source'].'. "'.$asRssItem['old_value'].'" a <20>t<EFBFBD> abandonn<6E>';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'RESET':
|
||||||
|
$sTitle .= 'R<>initialisation de la base de donn<6E>es ';
|
||||||
|
$sDesc = 'La base de donn<6E>es "'.$asRssItem['source'].'" a <20>t<EFBFBD> supprim<69>e et r<>install<6C>e';
|
||||||
|
break;
|
||||||
|
case 'RESTORE':
|
||||||
|
$sTitle .= 'Restauration de la base de donn<6E>es ';
|
||||||
|
$sDesc = 'La base de donn<6E>es "'.$asRssItem['old_value'].'" a <20>t<EFBFBD> restaur<75>e';
|
||||||
|
break;
|
||||||
|
case 'UPLOAD':
|
||||||
|
$sTitle .= 'Upload d\'une base de donn<6E>es ';
|
||||||
|
$sDesc = 'La base de donn<6E>es "'.$asRssItem['old_value'].'" ';
|
||||||
|
switch($asRssItem['type'])
|
||||||
|
{
|
||||||
|
case 'file':
|
||||||
|
$sDesc .= 'a <20>t<EFBFBD> upload<61>';
|
||||||
|
break;
|
||||||
|
case 'sync':
|
||||||
|
$sDesc = 'a <20>t<EFBFBD> synchronis<69>e avec le site '.$asRssItem['source'];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 'CONNECT':
|
||||||
|
$sTitle .= 'Connexion d\'un utilisateur';
|
||||||
|
$sDesc = 'L\'utilisateur "'.ucwords($asRssItem['old_value']).'" s\'est connect<63>';
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
$sAuthor = str_replace(' ', '.', strtolower($asRssItem['author'])).'@'.DOMAIN.' ('.ucwords($asRssItem['author']).')';
|
||||||
|
|
||||||
|
if($sTitle!='' && $sDesc!='')
|
||||||
|
{
|
||||||
|
$sRssItem = getHtml(cleanRss($sTitle), 'title');
|
||||||
|
$sRssItem .= getHtml(cleanRss($sAuthor), 'author');
|
||||||
|
$sRssItem .= getHtml($sRssFeedUrl, 'link');
|
||||||
|
$sRssItem .= getHtml(cleanRss($sDesc.'.'), 'description');
|
||||||
|
$sRssItem .= getHtml(cleanRss(date('r', strtotime($asRssItem['led']))), 'pubDate');
|
||||||
|
$sRssItem .= getHtml(cleanRss($sRssFeedUrl.'&id='.$asRssItem['id_'.FEED_TABLE]), 'guid', '', '', array('isPermaLink'=>'true'));
|
||||||
|
|
||||||
|
$asItems[] = getHtml($sRssItem, 'item');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function fillFeed($sText)
|
||||||
|
{
|
||||||
|
$asColumnNames = getTableColumnNames(FEED_TABLE);
|
||||||
|
foreach($asColumnNames as $sColumnName)
|
||||||
|
{
|
||||||
|
$sText = str_replace('#'.$sColumnName.'#', $_POST[$sColumnName], $sText);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function getFeedTitle($sAction, $sType)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function getFeedDesc($sAction, $sType)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//last feed update
|
||||||
|
$sPubDate = date('r', strtotime(getUniqueValue("SELECT /* ".basename(__FILE__)." ".__LINE__." */ MAX(led) FROM ".FEED_TABLE)));
|
||||||
|
|
||||||
|
//feed header
|
||||||
|
$sRssFeed = '<?xml version="1.0" encoding="ISO-8859-1" ?>';
|
||||||
|
$sRssFeedHeader = getHtml('QcmMaker Rss Feed', 'title');
|
||||||
|
$sRssFeedHeader .= getHtml($sRssFeedUrl, 'link');
|
||||||
|
$sRssFeedHeader .= getHtml('Copyright (C) '.date('Y').' Fran<61>ois Lutran', 'copyright');
|
||||||
|
$sRssFeedHeader .= getHtml('Users Activity', 'description');
|
||||||
|
$sRssFeedHeader .= getHtml('', 'atom:link', '', '', array('href'=>$sRssFeedUrl, 'rel'=>'self', 'type'=>'application/atom+xml'), true);
|
||||||
|
$sRssFeedHeader .= getHtml('fr', 'language');
|
||||||
|
$sRssFeedHeader .= getHtml(cleanRss($sPubDate), 'pubDate');
|
||||||
|
$sRssFeedHeader .= getHtml('qcmMaker rss Feed generator', 'generator');
|
||||||
|
$sRssFeedHeader .= getHtml(cleanRss(FEEDBACK_MAIL.' (Webmaster)'), 'webMaster');
|
||||||
|
|
||||||
|
//feed items
|
||||||
|
$sRssFeed .= getHtml(getHtml($sRssFeedHeader.implode("\n", $asItems), 'channel'), 'rss', '', '', array('version'=>'2.0', 'xmlns:atom'=>'http://www.w3.org/2005/Atom'));
|
||||||
|
|
||||||
|
echo $sRssFeed;
|
||||||
|
?>
|
||||||
76
current_version/.svn/text-base/search.php.svn-base
Normal file
76
current_version/.svn/text-base/search.php.svn-base
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/* Search database for keywords */
|
||||||
|
|
||||||
|
//security check
|
||||||
|
if(!function_exists('checkOrigin') || !$bAdmin)
|
||||||
|
{
|
||||||
|
require_once 'config.php';
|
||||||
|
relocate(getError('Accès interdit'));
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!isset($_REQUEST['keywords']))
|
||||||
|
{
|
||||||
|
relocate(getError('Cherchez au moins un mot'));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$asKeyWords = explode('+', $_REQUEST['keywords']);
|
||||||
|
$sHtmlKeyWords = getHtml($asKeyWords, 'em', '', '', array(), false, ', ');
|
||||||
|
foreach($asKeyWords as $sKeyWord)
|
||||||
|
{
|
||||||
|
foreach(getTables() as $sTableName)
|
||||||
|
{
|
||||||
|
$asColumnConstraint = "";
|
||||||
|
foreach(getTableColumnNames($sTableName) as $sColumnName)
|
||||||
|
{
|
||||||
|
if(strpos($sColumnName, 'id_')===false && $sColumnName != 'pass')
|
||||||
|
{
|
||||||
|
if($asColumnConstraint != "")
|
||||||
|
{
|
||||||
|
$asColumnConstraint .= "OR";
|
||||||
|
}
|
||||||
|
$asColumnConstraint .= " $sColumnName LIKE '%$sKeyWord%' ";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$sQuery = "SELECT /* ".basename(__FILE__)." ".__LINE__." */ *
|
||||||
|
FROM $sTableName
|
||||||
|
WHERE $asColumnConstraint";
|
||||||
|
|
||||||
|
$asTableResult = getArrayQuery($sQuery);
|
||||||
|
foreach($asTableResult as $asRow)
|
||||||
|
{
|
||||||
|
$sRowId = $sTableName.$asRow['id_'.$sTableName];
|
||||||
|
$asResult[$sRowId] = $asRow;
|
||||||
|
$asRank[$sRowId] = isset($asRank[$sRowId])?($asRank[$sRowId]+1):1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(isset($asRank))
|
||||||
|
{
|
||||||
|
arsort($asRank);
|
||||||
|
foreach($asRank as $sRowId=>$iRank)
|
||||||
|
{
|
||||||
|
$asColumnDisplayed = array_filter(array_keys($asResult[$sRowId]), 'filterTable');
|
||||||
|
$asResultRow = array_intersect_key($asResult[$sRowId], array_flip($asColumnDisplayed));
|
||||||
|
|
||||||
|
$sColumnNames = getHtml(ucwords(str_replace('_', ' ', getHtml(array_keys($asResultRow), 'th'))), 'tr');
|
||||||
|
$sHtmlRank = getHtml('Rang : '.$iRank, 'p', '', 'font-size:small;margin-top:10px;margin-bottom:0;');
|
||||||
|
$asSearchResults[] = $sHtmlRank.getHtml($sColumnNames.getHtml(getHtml($asResultRow, 'td'), 'tr'), 'table', 'maxWidth');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
relocate(getWarning(array('Aucun r<>sultat', 'Recherche effectu<74>e sur les mots : '.$sHtmlKeyWords)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function filterTable($sColumnName)
|
||||||
|
{
|
||||||
|
return (!is_numeric($sColumnName) && $sColumnName!='pass');
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<p>Mots recherch<63>s : <?php echo $sHtmlKeyWords; ?></p>
|
||||||
|
<p>R<>sultat<?php echo (count($asSearchResults)>1)?'s':''; ?> de la recherche :</p>
|
||||||
|
<?php echo implode($asSearchResults); ?>
|
||||||
34
current_version/.svn/text-base/settings.php.svn-base
Normal file
34
current_version/.svn/text-base/settings.php.svn-base
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*------------------------Remplacer les valeurs ci-dessous par vos parametres-----------------------*/
|
||||||
|
|
||||||
|
//remplacez par l'adresse de votre server
|
||||||
|
@define('DB_SERVER', 'localhost');
|
||||||
|
|
||||||
|
//remplacez par votre login mysql
|
||||||
|
@define('DB_LOGIN', 'root');
|
||||||
|
|
||||||
|
//remplacez par votre mot de passe mysql
|
||||||
|
@define('DB_PASS', '0nadmin');
|
||||||
|
|
||||||
|
//remplacez par le mot de passe de votre choix
|
||||||
|
@define('ADMIN_PASS', '123456');
|
||||||
|
|
||||||
|
//remplacer par l'adresse email de votre administrateur
|
||||||
|
@define('FEEDBACK_MAIL', 'francois.lutran@gmail.com');
|
||||||
|
|
||||||
|
/*------------------Remplacer les valeurs ci-dessous par vos parametres [OPTIONNEL]-----------------*/
|
||||||
|
|
||||||
|
//Nom de la base de donn<6E>es
|
||||||
|
@define('DB_NAME', 'dbqcm');
|
||||||
|
|
||||||
|
//Nombre maximum de class pour une meme section
|
||||||
|
@define('MAX_CLASS', 8);
|
||||||
|
|
||||||
|
//Premiere section (6 pour 6eme)
|
||||||
|
@define('MIN_GRADE', 6);
|
||||||
|
|
||||||
|
//Derniere section (3 pour 3eme)
|
||||||
|
@define('MAX_GRADE', 3);
|
||||||
|
|
||||||
|
?>
|
||||||
44
current_version/.svn/text-base/stats.php.svn-base
Normal file
44
current_version/.svn/text-base/stats.php.svn-base
Normal file
@@ -0,0 +1,44 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/* displays user's grades */
|
||||||
|
|
||||||
|
$iOutOf = isset($_POST['outofvalue'])?$_POST['outofvalue']:20;
|
||||||
|
$aiConstraints = array('grade' => $_SESSION['grade'], 'class' => $_SESSION['class'], USER_TABLE => $_SESSION['user']);
|
||||||
|
$asResults = getResults($aiConstraints);
|
||||||
|
|
||||||
|
if(!$asResults)
|
||||||
|
{
|
||||||
|
$asDisplay = array('<tr><td colspan="3"><p class="noinfo">Aucune note.Vous avez répondu à aucun QCM</p></td></tr>', );
|
||||||
|
$sDisplayAverage = '<th colspan="3" class="bottom-left-rounded bottom-right-rounded">Moyenne : Aucune donnée disponible</th>';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$asResults = $asResults[$_SESSION['grade']][$_SESSION['class']][$_SESSION['user']];
|
||||||
|
$iUserGlobalAvg = getResultsAverage($iOutOf, $aiConstraints);
|
||||||
|
$aiConstraints[USER_TABLE] = false;
|
||||||
|
$aiConstraints[QCM_TABLE] = array_keys($asResults);
|
||||||
|
$iClassGlobalAvg = getResultsAverage($iOutOf, $aiConstraints);
|
||||||
|
foreach($asResults as $iQcmId => $asQcmResultInfo)
|
||||||
|
{
|
||||||
|
$aiConstraints[QCM_TABLE] = $iQcmId;
|
||||||
|
$iClassAvg = getResultsAverage($iOutOf, $aiConstraints);
|
||||||
|
$asDisplay[$iQcmId] = '<tr><td>'.$asQcmResultInfo[QCM_TABLE].'</td><td>'.roundMark($iOutOf, $asQcmResultInfo[RESULT_TABLE]).' / '.$iOutOf.'</td><td>'.$iClassAvg.' / '.$iOutOf.'</td></tr>';
|
||||||
|
}
|
||||||
|
$sDisplayAverage = '<th colspan="2" class="bottom-left-rounded">Moyenne : '.$iUserGlobalAvg.' / '.$iOutOf.'</th><th class="bottom-right-rounded">Moyenne de la classe : '.$iClassGlobalAvg.' / '.$iOutOf.'</th>';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<table class="maxWidth">
|
||||||
|
<tr>
|
||||||
|
<td colspan="3" class="rounded"><p class="tresimportant">Les notes de <?php echo $_SESSION['firstName']." ".$_SESSION['lastName']; ?></p></td>
|
||||||
|
</tr>
|
||||||
|
<tr><td colspan="3" class="blank"></td></tr>
|
||||||
|
<tr>
|
||||||
|
<th class="top-left-rounded">QCM</th>
|
||||||
|
<th><?php echo getOutOfForm($iOutOf, false, '?page=stats', 'Note de '.$_SESSION['firstName'].' '.$_SESSION['lastName'].' :'); ?></th>
|
||||||
|
<th class="top-right-rounded">Moyenne de la classe</th>
|
||||||
|
</tr>
|
||||||
|
<?php echo implode("\n", $asDisplay); ?>
|
||||||
|
<tr>
|
||||||
|
<?php echo $sDisplayAverage; ?>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
135
current_version/.svn/text-base/statsAdmin.php.svn-base
Normal file
135
current_version/.svn/text-base/statsAdmin.php.svn-base
Normal file
@@ -0,0 +1,135 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/* Display students grades, by QCM and classes. Add a download button (csv format) */
|
||||||
|
|
||||||
|
//TODO lorsque le mask sera installé, remplir la page et le csv en meme temps
|
||||||
|
|
||||||
|
//Results
|
||||||
|
$asResultsDisplay = '';
|
||||||
|
$asExportCsv = array();
|
||||||
|
$iClass= 0;
|
||||||
|
if(isset($_POST['qcm']))
|
||||||
|
{
|
||||||
|
$bDisableExport = false;
|
||||||
|
$iOutOf = $_POST['outofvalue'];
|
||||||
|
list($iGrade, $iClass) = explode(GRADE_CLASS_SEPARATOR, $_POST['gradeClass']);
|
||||||
|
$asResultsConstraints = array();
|
||||||
|
$asOutputOrder = array('id_'.QCM_TABLE, 'grade', 'class', 'id_'.USER_TABLE);
|
||||||
|
$asConstraintColumns = array('grade'=>$iGrade, 'class'=>$iClass, USER_TABLE=>$_POST[USER_TABLE], QCM_TABLE=>$_POST[QCM_TABLE], 'outputOrder'=>$asOutputOrder);
|
||||||
|
foreach($asConstraintColumns as $sConstraintColumn=>$sConstraintValue)
|
||||||
|
{
|
||||||
|
if($sConstraintValue > 0)
|
||||||
|
{
|
||||||
|
$asResultsConstraints[$sConstraintColumn] = $sConstraintValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$asResults = getResults($asResultsConstraints);
|
||||||
|
|
||||||
|
//Display results & building export file
|
||||||
|
if(!$asResults)
|
||||||
|
{
|
||||||
|
$asResultsDisplay = getWarning('Aucune note disponible');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
foreach($asResults as $iQcmId=>$asQcmInfo)
|
||||||
|
{
|
||||||
|
$sQcmName = getQcmName($iQcmId);
|
||||||
|
$asResultsDisplay .= '<table class="maxWidth stats rounded"><tr><td colspan="3" class="rounded"><p class="tresimportant">QCM <em>"'.$sQcmName.'"</em></p></td></tr>';
|
||||||
|
$asExportCsv[] = array('QCM', $sQcmName);
|
||||||
|
foreach($asQcmInfo as $iGradeId=>$asGradeInfo)
|
||||||
|
{
|
||||||
|
foreach($asGradeInfo as $iClassId=>$asClassInfo)
|
||||||
|
{
|
||||||
|
$sClass = $iGradeId.GRADE_CLASS_SEPARATOR.$iClassId;
|
||||||
|
$asResultsDisplay .= '<tr><td colspan="3" class="blank"></td></tr>';
|
||||||
|
$asResultsDisplay .= '<tr><td colspan="3" class="top-left-rounded top-right-rounded"><p class="important">'.$sClass.'</p></td></tr>';
|
||||||
|
$asExportCsv[] = array('');
|
||||||
|
$asExportCsv[] = array('Classe', $sClass, 'Note sur', $iOutOf);
|
||||||
|
$dClassAvgMark = getResultsAverage($iOutOf, array('grade' => $iGradeId, 'class' => $iClassId, QCM_TABLE=>$iQcmId));
|
||||||
|
$asResultsDisplay .= '<tr>
|
||||||
|
<th>Eleve</th>
|
||||||
|
<th>Note</th>
|
||||||
|
<th>Moyenne</th>
|
||||||
|
</tr>';
|
||||||
|
$asExportCsv[] = array('Eleve', 'Note', 'Moyenne de l\'eleve');
|
||||||
|
foreach($asClassInfo as $iUserId=>$asUserInfo)
|
||||||
|
{
|
||||||
|
$dUserAvgMark = getResultsAverage($iOutOf, array('grade' => $iGradeId, 'class' => $iClassId, USER_TABLE=>$iUserId, QCM_TABLE=>array_keys($asResults)));
|
||||||
|
$sUserLastName = ucwords($asUserInfo[USER_TABLE.'_last_name']);
|
||||||
|
$sUserFirstName = ucwords($asUserInfo[USER_TABLE.'_first_name']);
|
||||||
|
$sUserName = '<strong>'.$sUserLastName.'</strong> '.$sUserFirstName;
|
||||||
|
$asResultsDisplay .= '<tr>
|
||||||
|
<td style="text-align:left;"><strong>'.$sUserLastName.'</strong> '.$sUserFirstName.'</td>
|
||||||
|
<td>'.roundMark($iOutOf, $asUserInfo[RESULT_TABLE]).' / '.$iOutOf.'</td>
|
||||||
|
<td>'.$dUserAvgMark.' / '.$iOutOf.'</td>
|
||||||
|
</tr>';
|
||||||
|
$asExportCsv[] = array($sUserLastName.' '.$sUserFirstName, roundMark($iOutOf, $asUserInfo[RESULT_TABLE]), $dUserAvgMark);
|
||||||
|
}
|
||||||
|
$asResultsDisplay .= '<tr><td colspan="3" class="bottom-left-rounded bottom-right-rounded">Moyenne de la '.$sClass.' : '.$dClassAvgMark.' / '.$iOutOf.'</td></tr>';
|
||||||
|
$asExportCsv[] = array('Moyenne de la '.$sClass, $dClassAvgMark);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$asResultsDisplay .= '</table><a href="#top" class="toTheTop rounded">Haut de page</a>';
|
||||||
|
$asExportCsv[] = array('');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$bDisableExport = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//QCM selection
|
||||||
|
$asQcms = getListe(array( 'select'=>array(getId(QCM_TABLE), QCM_TABLE),
|
||||||
|
'from'=>QCM_TABLE,
|
||||||
|
'orderBy'=>QCM_TABLE));
|
||||||
|
$sSelectQcm = getSelect($asQcms, 'id_'.QCM_TABLE, QCM_TABLE, array(0=>'Tous'), isset($_POST['qcm'])?$_POST['qcm']:'');
|
||||||
|
|
||||||
|
//Classes selection
|
||||||
|
$asClasses = getListe(array('select'=>array( "CONCAT(grade, '".GRADE_CLASS_SEPARATOR."', class) AS gradeClass", 'grade', 'class'),
|
||||||
|
'from'=>USER_TABLE,
|
||||||
|
'constraint'=>"admin=0",
|
||||||
|
'groupBy' => 'gradeClass',
|
||||||
|
'orderBy'=>array('grade', 'class')));
|
||||||
|
$sSelectClasses = getSelect($asClasses, 'gradeClass', '', array('0'.GRADE_CLASS_SEPARATOR.'0'=>'Toutes'), isset($_POST['gradeClass'])?$_POST['gradeClass']:'');
|
||||||
|
|
||||||
|
//Students selection
|
||||||
|
$asStudents = getListe(array( 'select'=>array(getId(USER_TABLE), "CONCAT(user_last_name, ' ', user_first_name) AS name"),
|
||||||
|
'from'=>USER_TABLE,
|
||||||
|
'constraint'=>"admin=0",
|
||||||
|
'orderBy'=>'user_last_name'));
|
||||||
|
$sSelectStudents = getSelect($asStudents, 'id_'.USER_TABLE, 'name', array(0=>'Tous'), isset($_POST['user'])?$_POST['user']:'');
|
||||||
|
|
||||||
|
$sSelectOutOf = getOutOfForm(isset($_POST['outofvalue'])?$_POST['outofvalue']:20);
|
||||||
|
|
||||||
|
//pre($_POST);
|
||||||
|
//<select multiple="multiple" name="test" ><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option><option value="5">5</option><option value="6">6</option></select>
|
||||||
|
?>
|
||||||
|
<p>Choisissez l'affichage :</p>
|
||||||
|
<form method="post" action="?page=statsAdmin" name="stats">
|
||||||
|
<table class="maxWidth">
|
||||||
|
<tr>
|
||||||
|
<th class="top-left-rounded">QCM</th>
|
||||||
|
<th>Classe</th>
|
||||||
|
<th>Élève</th>
|
||||||
|
<th>Dénominateur</th>
|
||||||
|
<th class="top-right-rounded">Validation</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td class="bottom-left-rounded"><?php echo $sSelectQcm; ?></td>
|
||||||
|
<td><?php echo $sSelectClasses; ?></td>
|
||||||
|
<td><?php echo $sSelectStudents; ?></td>
|
||||||
|
<td><?php echo $sSelectOutOf; ?></td>
|
||||||
|
<td class="bottom-right-rounded"><input type="submit" value="Ok" /></td>
|
||||||
|
</tr>
|
||||||
|
<tr><td colspan="5" class="blank"><input type="button"<?php echo $bDisableExport?' disabled':''; ?> value="Télécharger ces notes" onclick="document.forms['getCsv'].submit();" /></td></tr>
|
||||||
|
</table>
|
||||||
|
<?php echo $asResultsDisplay; ?>
|
||||||
|
<br /><br />
|
||||||
|
</form>
|
||||||
|
<form action="?page=download" method="post" name="getCsv">
|
||||||
|
<input type="hidden" name="generate" value="1" />
|
||||||
|
<input type="hidden" name="file" value="<?php echo 'notes'.($iClass>0?$_POST['gradeClass']:''); ?>" />
|
||||||
|
<input type="hidden" name="content" value="<?php echo urlencode(serialize($asExportCsv)); ?>" />
|
||||||
|
</form>
|
||||||
506
current_version/.svn/text-base/style.css.svn-base
Normal file
506
current_version/.svn/text-base/style.css.svn-base
Normal file
@@ -0,0 +1,506 @@
|
|||||||
|
@CHARSET "ISO-8859-1";
|
||||||
|
|
||||||
|
/* Global */
|
||||||
|
|
||||||
|
*:focus {
|
||||||
|
outline:none;
|
||||||
|
}
|
||||||
|
body {
|
||||||
|
margin:auto;
|
||||||
|
padding:0;
|
||||||
|
width:1024px;
|
||||||
|
min-width:1024px;
|
||||||
|
background-color:#CCC;
|
||||||
|
font-family: Verdana, Geneva, sans-serif;
|
||||||
|
font-size: medium;
|
||||||
|
font-style: normal;
|
||||||
|
font-weight: normal;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Structure */
|
||||||
|
|
||||||
|
#header {
|
||||||
|
margin:50px auto 80px auto;
|
||||||
|
text-align:center;
|
||||||
|
background-color:#FFFFFF;
|
||||||
|
padding:10px;
|
||||||
|
width:500px;
|
||||||
|
border:2px solid #000000;
|
||||||
|
}
|
||||||
|
#topMenu {
|
||||||
|
margin-bottom:5px;
|
||||||
|
text-align:center;
|
||||||
|
}
|
||||||
|
#main {
|
||||||
|
padding:10px;
|
||||||
|
border:2px solid #000000;
|
||||||
|
background-color:#FFFFFF;
|
||||||
|
}
|
||||||
|
#info {
|
||||||
|
margin-bottom:10px;
|
||||||
|
}
|
||||||
|
#content {
|
||||||
|
clear:both;
|
||||||
|
}
|
||||||
|
#footer {
|
||||||
|
padding:5px 10px 50px 10px;
|
||||||
|
}
|
||||||
|
.layer {
|
||||||
|
position:fixed;
|
||||||
|
top:0;
|
||||||
|
left:0;
|
||||||
|
width:100%;
|
||||||
|
height:100%;
|
||||||
|
background-color:white;
|
||||||
|
opacity:0.8;
|
||||||
|
}
|
||||||
|
.inputBox {
|
||||||
|
width:500px;
|
||||||
|
}
|
||||||
|
.preload {
|
||||||
|
display:none;
|
||||||
|
}
|
||||||
|
.center {
|
||||||
|
margin:4px auto;
|
||||||
|
}
|
||||||
|
.no-margin {
|
||||||
|
margin:0;
|
||||||
|
}
|
||||||
|
.qcmReader, .qcmReaderDisabled {
|
||||||
|
margin:10px auto;
|
||||||
|
padding:15px;
|
||||||
|
width:90%;
|
||||||
|
background-color:#FFFFFF;
|
||||||
|
border:1px solid #006;
|
||||||
|
border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px;
|
||||||
|
}
|
||||||
|
.rounded {
|
||||||
|
border-width:1px;
|
||||||
|
border-style:solid;
|
||||||
|
border-radius:10px; -moz-border-radius:10px; -webkit-border-radius:10px;
|
||||||
|
}
|
||||||
|
.top-left-rounded {
|
||||||
|
border-radius:10px 0 0 0; -moz-border-radius-topleft: 10px; -webkit-border-top-left-radius: 10px;
|
||||||
|
}
|
||||||
|
.top-right-rounded {
|
||||||
|
border-radius:0 10px 0 0; -moz-border-radius-topright: 10px; -webkit-border-top-right-radius: 10px;
|
||||||
|
}
|
||||||
|
.bottom-right-rounded {
|
||||||
|
border-radius:0 0 10px 0; -moz-border-radius-bottomright: 10px; -webkit-border-bottom-right-radius: 10px;
|
||||||
|
}
|
||||||
|
.bottom-left-rounded {
|
||||||
|
border-radius:0 0 0 10px; -moz-border-radius-bottomleft: 10px; -webkit-border-bottom-left-radius: 10px;
|
||||||
|
}
|
||||||
|
.bottom-rounded {
|
||||||
|
border-radius:0 0 10px 10px;
|
||||||
|
-moz-border-radius-bottomleft: 10px; -webkit-border-bottom-left-radius: 10px;
|
||||||
|
-moz-border-radius-bottomright: 10px; -webkit-border-bottom-right-radius: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
hr.separator {
|
||||||
|
margin:3px;
|
||||||
|
height:33px;
|
||||||
|
border:none;
|
||||||
|
background:none;
|
||||||
|
color:#FFFFFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Table */
|
||||||
|
table {
|
||||||
|
margin:auto;
|
||||||
|
border-spacing:2px;
|
||||||
|
}
|
||||||
|
table.maxWidth, #info table {
|
||||||
|
width:100%;
|
||||||
|
}
|
||||||
|
table.joinedTable {
|
||||||
|
margin-top:-2px;
|
||||||
|
}
|
||||||
|
table.stats {
|
||||||
|
background-color: #F5F5FF;
|
||||||
|
margin-top:50px;
|
||||||
|
border:1px solid #000000;
|
||||||
|
}
|
||||||
|
table tr {
|
||||||
|
text-align:center;
|
||||||
|
font-size:small;
|
||||||
|
}
|
||||||
|
table tr th {
|
||||||
|
border:1px solid #006;
|
||||||
|
text-align:center;
|
||||||
|
background-color:#006;
|
||||||
|
color:#FFFFFF;
|
||||||
|
font-size:medium;
|
||||||
|
}
|
||||||
|
table tr td {
|
||||||
|
border:1px solid #006;
|
||||||
|
background-color:#D5FFFF;
|
||||||
|
padding:5px;
|
||||||
|
}
|
||||||
|
table tr td.qcmSelection {
|
||||||
|
color:#006;
|
||||||
|
cursor:pointer;
|
||||||
|
text-align:left;
|
||||||
|
padding-left:50px;
|
||||||
|
font-weight:bold;
|
||||||
|
background:#D5FFFF url(images/qcm_selection.gif) 20px 50% no-repeat;
|
||||||
|
}
|
||||||
|
table tr td.qcmSelection:hover, table tr td.qcmSelection:active {
|
||||||
|
color:#000000;
|
||||||
|
border-color:#000000;
|
||||||
|
background:#d5ffd7 url(images/qcm_selection_hover.gif) 20px 50% no-repeat;
|
||||||
|
}
|
||||||
|
table tr td.qcmSelection:active {
|
||||||
|
background-image:url(images/qcm_selection_active.gif);
|
||||||
|
}
|
||||||
|
table tr td.left {
|
||||||
|
text-align:left;
|
||||||
|
padding-left:10px;
|
||||||
|
}
|
||||||
|
table tr td.true{
|
||||||
|
font-weight:bold;
|
||||||
|
background-color:#0F0;
|
||||||
|
}
|
||||||
|
table tr td.false{
|
||||||
|
font-weight:bold;
|
||||||
|
background-color:#F00;
|
||||||
|
color:#FFFFFF;
|
||||||
|
}
|
||||||
|
.green {
|
||||||
|
background-color:#d5ffd7;
|
||||||
|
}
|
||||||
|
.blank {
|
||||||
|
background-color:transparent;
|
||||||
|
border:none;
|
||||||
|
padding-top:10px;
|
||||||
|
padding-bottom:10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Form */
|
||||||
|
input, textarea {
|
||||||
|
margin:auto;
|
||||||
|
border:1px solid #006;
|
||||||
|
padding:2px 5px;
|
||||||
|
border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px;
|
||||||
|
}
|
||||||
|
input:disabled, textarea:disabled, textarea.disabled, .qcmReaderDisabled {
|
||||||
|
border-color:#aca899;
|
||||||
|
background-color:#D5FFFF;
|
||||||
|
color:#aca899;
|
||||||
|
}
|
||||||
|
input.nude, select.nude {
|
||||||
|
border:none;
|
||||||
|
background:none;
|
||||||
|
}
|
||||||
|
input[type=checkbox], input[type=checkbox]:disabled {
|
||||||
|
border:none;
|
||||||
|
}
|
||||||
|
input[type=button], input[type=submit] {
|
||||||
|
background:#FFFFFF url(images/button_gradient.gif) 0 100% repeat-x;
|
||||||
|
font-weight:bold;
|
||||||
|
color:#006;
|
||||||
|
}
|
||||||
|
input[type=button]:hover, input[type=submit]:hover {
|
||||||
|
background-image:url(images/button_gradient_hover.gif);
|
||||||
|
background-position:0 0;
|
||||||
|
}
|
||||||
|
input[type=button]:active, input[type=submit]:active {
|
||||||
|
background-color:#006;
|
||||||
|
background-image:none;
|
||||||
|
color:#FFFFFF;
|
||||||
|
}
|
||||||
|
input[type=button]:disabled, input[type=submit]:disabled {
|
||||||
|
background-image:none;
|
||||||
|
color:#aca899;
|
||||||
|
}
|
||||||
|
input[type="file"] {
|
||||||
|
border:1px solid #006;
|
||||||
|
}
|
||||||
|
.centered {
|
||||||
|
margin-top:4px;
|
||||||
|
}
|
||||||
|
textarea {
|
||||||
|
font-family:Verdana, Geneva, sans-serif;
|
||||||
|
font-size:small;
|
||||||
|
width:90%;
|
||||||
|
margin:10px auto;
|
||||||
|
padding:5px;
|
||||||
|
}
|
||||||
|
.spaceRight {
|
||||||
|
padding-right:25px;
|
||||||
|
}
|
||||||
|
select {
|
||||||
|
border:1px solid #006;
|
||||||
|
background:white;
|
||||||
|
}
|
||||||
|
select.mergeWithTh {
|
||||||
|
background-color:#006;
|
||||||
|
border-color:#FFFFFF;
|
||||||
|
color:#FFFFFF;
|
||||||
|
font-weight:bold;
|
||||||
|
font-size:medium;
|
||||||
|
}
|
||||||
|
.answerBox {
|
||||||
|
padding:3px;
|
||||||
|
height:25px;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Text */
|
||||||
|
h3 {
|
||||||
|
font-style:italic;
|
||||||
|
color:#666;
|
||||||
|
}
|
||||||
|
h1 span.logo {
|
||||||
|
border:3px solid #000000;
|
||||||
|
padding:0 8px 2px;
|
||||||
|
background-color:#CCCCCC;
|
||||||
|
}
|
||||||
|
fieldset {
|
||||||
|
border:1px solid #000000;
|
||||||
|
background-color:#F5F5FF;
|
||||||
|
padding:10px 10px 20px 10px;
|
||||||
|
margin-top:20px;
|
||||||
|
}
|
||||||
|
legend {
|
||||||
|
padding: 1px 6px 2px;
|
||||||
|
font-size: medium;
|
||||||
|
border:1px solid #000000;
|
||||||
|
background:#FFFFFF url(images/button_gradient.gif) 0 100% repeat-x;
|
||||||
|
}
|
||||||
|
a, a:visited {
|
||||||
|
color:#006;
|
||||||
|
}
|
||||||
|
a:hover {
|
||||||
|
color:#000000;
|
||||||
|
}
|
||||||
|
a:active {
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
a.beta {
|
||||||
|
position:absolute;
|
||||||
|
margin-left:740px;
|
||||||
|
margin-top:-30px;
|
||||||
|
padding:10px 20px;
|
||||||
|
color:#000000;
|
||||||
|
font-size:25pt;
|
||||||
|
font-style:italic;
|
||||||
|
text-decoration:none;
|
||||||
|
background-color:#FFFFFF;
|
||||||
|
border:2px solid #000000;
|
||||||
|
}
|
||||||
|
a.beta:hover {
|
||||||
|
background-color:#000000;
|
||||||
|
color:#FFFFFF;
|
||||||
|
border-color:#FFFFFF;
|
||||||
|
}
|
||||||
|
a.top {
|
||||||
|
position:absolute;
|
||||||
|
top:0;
|
||||||
|
}
|
||||||
|
a.toTheTop {
|
||||||
|
float:right;
|
||||||
|
margin-top:5px;
|
||||||
|
padding:2px 5px 2px 30px;
|
||||||
|
background:#D5FFFF url(images/arrow.png) 5px 1px no-repeat;
|
||||||
|
font-size:small;
|
||||||
|
text-decoration:none;
|
||||||
|
border:1px solid #006;
|
||||||
|
}
|
||||||
|
a.toTheTop:hover {
|
||||||
|
background-color:#d5ffd7;
|
||||||
|
background-position:5px 0;
|
||||||
|
color:#000000;
|
||||||
|
}
|
||||||
|
a.toTheTop:active {
|
||||||
|
background-color:#006;
|
||||||
|
background-position: 5px 0;
|
||||||
|
color:#FFFFFF;
|
||||||
|
}
|
||||||
|
a.deleteQuestion, a.deleteAnswer, a.XButton, a.deleteImage {
|
||||||
|
padding:2px 5px;
|
||||||
|
border:1px solid #006;
|
||||||
|
background-color:#FFFFFF;
|
||||||
|
text-decoration:none;
|
||||||
|
font-weight:bold;
|
||||||
|
}
|
||||||
|
a.deleteQuestion, a.deleteImage {
|
||||||
|
position:absolute;
|
||||||
|
margin-top:10px;
|
||||||
|
margin-left:-22px;
|
||||||
|
border-radius:0 5px; -moz-border-radius:0 5px; -webkit-border-radius:0 5px;
|
||||||
|
}
|
||||||
|
a.deleteAnswer {
|
||||||
|
position:absolute;
|
||||||
|
margin-left:-22px;
|
||||||
|
border-radius:0 5px 5px 0; -moz-border-radius:0 5px 5px 0; -webkit-border-radius:0 5px 5px 0;
|
||||||
|
}
|
||||||
|
a.deleteImage {
|
||||||
|
margin-top:139px;
|
||||||
|
margin-right:0;
|
||||||
|
}
|
||||||
|
a.XButton {
|
||||||
|
padding:1px 3px;
|
||||||
|
color:#006;
|
||||||
|
font-size:x-small;
|
||||||
|
}
|
||||||
|
a.deleteQuestion:hover, a.deleteQuestionHover, a.deleteAnswer:hover, a.deleteAnswerHover, a.XButton:hover, a.deleteImage:hover, a.deleteImageHover {
|
||||||
|
background-color:#006;
|
||||||
|
color:#FFFFFF;
|
||||||
|
}
|
||||||
|
a.XButton:hover {
|
||||||
|
text-decoration:none;
|
||||||
|
}
|
||||||
|
a.download {
|
||||||
|
padding:5px 10px 5px 28px;
|
||||||
|
text-decoration:none;
|
||||||
|
font-weight:bold;
|
||||||
|
color:#000066;
|
||||||
|
border-color:#000066;
|
||||||
|
background:url(images/arrow_down.png) 5px center no-repeat, url(images/button_gradient.gif) left bottom repeat-x;
|
||||||
|
}
|
||||||
|
a.download:hover {
|
||||||
|
background:url(images/arrow_down.png) 5px 60% no-repeat, url(images/button_gradient_hover.gif) left top repeat-x;
|
||||||
|
}
|
||||||
|
#topMenu a {
|
||||||
|
margin-left:10px;
|
||||||
|
margin-right:10px;
|
||||||
|
padding:5px 10px;
|
||||||
|
background-color:#E5E5E5;
|
||||||
|
color:#000000;
|
||||||
|
border:1px solid #666;
|
||||||
|
border-bottom-color:#000000;
|
||||||
|
font-weight:bold;
|
||||||
|
text-decoration:none;
|
||||||
|
}
|
||||||
|
#topMenu a.current {
|
||||||
|
border-width:2px;
|
||||||
|
border-color:#000000;
|
||||||
|
border-bottom-color:#FFFFFF;
|
||||||
|
background-color:#FFFFFF;
|
||||||
|
}
|
||||||
|
#topMenu a:hover {
|
||||||
|
border-color:#000000;
|
||||||
|
border-bottom-width:2px;
|
||||||
|
border-bottom-color:#FFFFFF;
|
||||||
|
background:#FFFFFF url(images/button_gradient_hover.gif) 0 0 repeat-x;
|
||||||
|
}
|
||||||
|
#main p {
|
||||||
|
padding-left:3px;
|
||||||
|
}
|
||||||
|
#main p.center {
|
||||||
|
text-align:center;
|
||||||
|
}
|
||||||
|
#main div.error, #main div.warning, #main div.success, #main div.notice {
|
||||||
|
border:1px solid #000000;
|
||||||
|
padding:5px;
|
||||||
|
margin-top:10px;
|
||||||
|
margin-bottom:10px;
|
||||||
|
}
|
||||||
|
#main div.error {
|
||||||
|
border-color:red;
|
||||||
|
}
|
||||||
|
#main div.warning {
|
||||||
|
border-color:orange;
|
||||||
|
}
|
||||||
|
#main div.success {
|
||||||
|
border-color:#008000;
|
||||||
|
}
|
||||||
|
#main p.error, #main p.warning, #main p.success, #main p.notice {
|
||||||
|
font-size:large;
|
||||||
|
padding:0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
#main p.error {
|
||||||
|
color:red;
|
||||||
|
font-weight:bold;
|
||||||
|
}
|
||||||
|
#main p.warning {
|
||||||
|
color:orange;
|
||||||
|
}
|
||||||
|
#main p.success {
|
||||||
|
color:#008000;
|
||||||
|
}
|
||||||
|
#main p.notice {
|
||||||
|
margin:0;
|
||||||
|
font-size:medium;
|
||||||
|
font-style:italic;
|
||||||
|
}
|
||||||
|
#main .panel p {
|
||||||
|
font-size:small;
|
||||||
|
}
|
||||||
|
#info p.pageTitle, #info p.connectedUser {
|
||||||
|
padding:1px 5px;
|
||||||
|
margin:0;
|
||||||
|
border:1px solid #000000;
|
||||||
|
font-size:medium;
|
||||||
|
}
|
||||||
|
#info p.pageTitle {
|
||||||
|
float:left;
|
||||||
|
}
|
||||||
|
#info p.connectedUser {
|
||||||
|
float:right;
|
||||||
|
}
|
||||||
|
#footer p{
|
||||||
|
text-align:center;
|
||||||
|
font-size: x-small;
|
||||||
|
margin-top:0;
|
||||||
|
}
|
||||||
|
p.code, p.keyring {
|
||||||
|
font-family:"Courier New";
|
||||||
|
overflow:auto;
|
||||||
|
}
|
||||||
|
p.keyring {
|
||||||
|
overflow:hidden;
|
||||||
|
width:964px;
|
||||||
|
}
|
||||||
|
p.question{
|
||||||
|
text-align:left;
|
||||||
|
margin:15px 0 15px 40px ;
|
||||||
|
}
|
||||||
|
p.important, ul li {
|
||||||
|
font-size:medium;
|
||||||
|
font-weight:bold;
|
||||||
|
}
|
||||||
|
p.tresimportant {
|
||||||
|
font-size:x-large;
|
||||||
|
font-weight:bold;
|
||||||
|
}
|
||||||
|
p.separator {
|
||||||
|
text-align:center;
|
||||||
|
font-weight:bold;
|
||||||
|
font-size:large;
|
||||||
|
}
|
||||||
|
ul li {
|
||||||
|
margin-top:10px;
|
||||||
|
}
|
||||||
|
ul li a {
|
||||||
|
text-decoration:none;
|
||||||
|
}
|
||||||
|
ul li a:hover {
|
||||||
|
text-decoration:underline;
|
||||||
|
}
|
||||||
|
ul li ul li {
|
||||||
|
margin:2px;
|
||||||
|
font-size:small;
|
||||||
|
font-weight:normal;
|
||||||
|
font-style:italic;
|
||||||
|
}
|
||||||
|
.noinfo{
|
||||||
|
font-style:italic;
|
||||||
|
color:#666;
|
||||||
|
margin:auto;
|
||||||
|
}
|
||||||
|
.divDisabled {
|
||||||
|
background-color:#aca899;
|
||||||
|
}
|
||||||
|
.text {
|
||||||
|
}
|
||||||
|
.textDisabled {
|
||||||
|
color:#aca899;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Image */
|
||||||
|
img {
|
||||||
|
border:none;
|
||||||
|
}
|
||||||
3
current_version/.svn/text-base/styleIe.css.svn-base
Normal file
3
current_version/.svn/text-base/styleIe.css.svn-base
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
a.beta {
|
||||||
|
margin-left:480px;
|
||||||
|
}
|
||||||
100
current_version/.svn/text-base/test.php.svn-base
Normal file
100
current_version/.svn/text-base/test.php.svn-base
Normal file
@@ -0,0 +1,100 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/* Tests */
|
||||||
|
/* TODO to be deleted on production */
|
||||||
|
|
||||||
|
//restricted area (admin)
|
||||||
|
if(!function_exists('checkOrigin') || !$bAdmin)
|
||||||
|
{
|
||||||
|
require_once 'config.php';
|
||||||
|
relocate(getError('Accès interdit'));
|
||||||
|
}
|
||||||
|
|
||||||
|
//Direct Access to database
|
||||||
|
$sSqlQuery = isset($_POST['sql'])?$_POST['sql']:"";
|
||||||
|
$sResult = '';
|
||||||
|
if($sSqlQuery!="")
|
||||||
|
{
|
||||||
|
$oResult = getQuery($sSqlQuery, false);
|
||||||
|
if($oResult===false)
|
||||||
|
{
|
||||||
|
$sResult = getError(array('', mysql_error(), 'Query : '.$sSqlQuery), true);
|
||||||
|
}
|
||||||
|
elseif($oResult===true)
|
||||||
|
{
|
||||||
|
$sResult = getSuccess(array('Requête envoyée', 'Query : '.$sSqlQuery));
|
||||||
|
}
|
||||||
|
elseif(mysql_num_rows($oResult)==0)
|
||||||
|
{
|
||||||
|
$sResult = getWarning(array('Aucun résultat', 'Query : '.$sSqlQuery));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$asDisplay[0] = '<table>';
|
||||||
|
$asDisplay[2] = '';
|
||||||
|
$i=0;
|
||||||
|
while($asCurrentRow = mysql_fetch_array($oResult))
|
||||||
|
{
|
||||||
|
$asDisplay[2] .= '<tr>';
|
||||||
|
foreach($asCurrentRow as $index=>$value)
|
||||||
|
{
|
||||||
|
if(!is_numeric($index))
|
||||||
|
{
|
||||||
|
if($i==0)
|
||||||
|
{
|
||||||
|
$asTitles[] = $index;
|
||||||
|
}
|
||||||
|
$asDisplay[2] .= '<td>'.$value.'</td>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$asDisplay[2] .= '</tr>';
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
$asDisplay[1] = '<tr style="font-weight:bold;"><td>'.implode('</td><td>', $asTitles).'</td></tr>';
|
||||||
|
$asDisplay[3] = '</table>';
|
||||||
|
ksort($asDisplay);
|
||||||
|
$sResult = implode("\n", $asDisplay);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
//Other Tests
|
||||||
|
pre(selectRows(array( 'select'=>array(getId(QCM_TABLE), QCM_TABLE),
|
||||||
|
'from'=>QCM_TABLE,
|
||||||
|
'constraint'=>array('valid' => '1'),
|
||||||
|
'orderBy'=>array(QCM_TABLE=>'ASC'))), 'apres');
|
||||||
|
|
||||||
|
pre(getListe(array( 'select'=>array(getId(QCM_TABLE), QCM_TABLE),
|
||||||
|
'from'=>QCM_TABLE,
|
||||||
|
'constraint'=>"valid = 1",
|
||||||
|
'orderBy'=>QCM_TABLE)), 'avant');
|
||||||
|
|
||||||
|
pre(getListe(array('select'=>array( "CONCAT(grade, '".GRADE_CLASS_SEPARATOR."', class) AS gradeClass", 'grade', 'class'),
|
||||||
|
'from'=>USER_TABLE,
|
||||||
|
'constraint'=>"admin=0",
|
||||||
|
'groupBy' => 'gradeClass',
|
||||||
|
'orderBy'=>array('grade', 'class'))), 'avant');
|
||||||
|
|
||||||
|
$as2 = selectRows(array('select'=>array('grade', 'class'),
|
||||||
|
'from'=>USER_TABLE,
|
||||||
|
'constraint'=>array('admin'=>'0'),
|
||||||
|
'groupBy' => array('grade', 'class'),
|
||||||
|
'orderBy'=>array('grade'=>'ASC', 'class'=>'ASC')));
|
||||||
|
|
||||||
|
foreach($as2 as $s2Key=>$s2)
|
||||||
|
{
|
||||||
|
$as2[$s2Key]['gradeClass'] = $s2['grade'].GRADE_CLASS_SEPARATOR.$s2['class'];
|
||||||
|
}
|
||||||
|
|
||||||
|
pre($as2, 'apres');
|
||||||
|
|
||||||
|
*/
|
||||||
|
?>
|
||||||
|
<form method="post" style="text-align:center;margin:30px;">
|
||||||
|
<input type="text" id="sql" name="sql" size="100%" value="<?php echo $sSqlQuery; ?>" />
|
||||||
|
</form>
|
||||||
|
<?php echo $sResult; ?>
|
||||||
|
<script type="text/javascript">
|
||||||
|
setFocus('sql');
|
||||||
|
</script>
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user