Version19.122

This commit is contained in:
Antonio Cañas Vargas 2020-01-30 20:47:00 +01:00
parent 5e8d3fc467
commit f73490a8ef
20 changed files with 678 additions and 190 deletions

View File

@ -45,14 +45,15 @@ OBJS = swad_account.o swad_action.o swad_agenda.o swad_alert.o \
swad_icon.o swad_ID.o swad_indicator.o swad_info.o swad_institution.o \
swad_institution_config.o \
swad_language.o swad_layout.o swad_link.o swad_log.o swad_logo.o \
swad_mail.o swad_main.o swad_map.o swad_mark.o swad_match.o \
swad_match_result.o swad_media.o swad_menu.o swad_message.o swad_MFU.o \
swad_mail.o swad_main.o swad_maintenance.o swad_map.o swad_mark.o \
swad_match.o swad_match_result.o swad_media.o swad_menu.o \
swad_message.o swad_MFU.o \
swad_network.o swad_nickname.o swad_notice.o swad_notification.o \
swad_pagination.o swad_parameter.o swad_password.o swad_photo.o \
swad_place.o swad_plugin.o swad_privacy.o swad_profile.o swad_project.o \
swad_QR.o \
swad_record.o swad_report.o swad_role.o swad_RSS.o \
swad_scope.o swad_search.o swad_session.o swad_setting.o swad_setup.o \
swad_scope.o swad_search.o swad_session.o swad_setting.o \
swad_statistic.o swad_string.o swad_survey.o swad_syllabus.o \
swad_system_config.o \
swad_tab.o swad_test.o swad_test_import.o swad_theme.o swad_timeline.o \

1
icon/bolt.svg Normal file
View File

@ -0,0 +1 @@
<svg aria-hidden="true" data-prefix="fas" data-icon="bolt" class="svg-inline--fa fa-bolt fa-w-10" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path fill="#404040" d="M296 160H180.6l42.6-129.8C227.2 15 215.7 0 200 0H56C44 0 33.8 8.9 32.2 20.8l-32 240C-1.7 275.2 9.5 288 24 288h118.7L96.6 482.5c-3.6 15.2 8 29.5 23.3 29.5 8.4 0 16.4-4.4 20.8-12l176-304c9.3-15.9-2.2-36-20.7-36z"></path></svg>

After

Width:  |  Height:  |  Size: 415 B

View File

@ -0,0 +1 @@
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="tools" class="svg-inline--fa fa-tools fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#404040" d="M501.1 395.7L384 278.6c-23.1-23.1-57.6-27.6-85.4-13.9L192 158.1V96L64 0 0 64l96 128h62.1l106.6 106.6c-13.6 27.8-9.2 62.3 13.9 85.4l117.1 117.1c14.6 14.6 38.2 14.6 52.7 0l52.7-52.7c14.5-14.6 14.5-38.2 0-52.7zM331.7 225c28.3 0 54.9 11 74.9 31l19.4 19.4c15.8-6.9 30.8-16.5 43.8-29.5 37.1-37.1 49.7-89.3 37.9-136.7-2.2-9-13.5-12.1-20.1-5.5l-74.4 74.4-67.9-11.3L334 98.9l74.4-74.4c6.6-6.6 3.4-17.9-5.7-20.2-47.4-11.7-99.6.9-136.6 37.9-28.5 28.5-41.9 66.1-41.2 103.6l82.1 82.1c8.1-1.9 16.5-2.9 24.7-2.9zm-103.9 82l-56.7-56.7L18.7 402.8c-25 25-25 65.5 0 90.5s65.5 25 90.5 0l123.6-123.6c-7.6-19.9-9.9-41.6-5-62.7zM64 472c-13.2 0-24-10.8-24-24 0-13.3 10.7-24 24-24s24 10.7 24 24c0 13.2-10.7 24-24 24z"></path></svg>

After

Width:  |  Height:  |  Size: 917 B

View File

@ -0,0 +1,385 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.0"
width="150"
height="150"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.44.1"
sodipodi:docname="Icon_tools.svg"
sodipodi:docbase="D:\home\styx\Inkscape">
<metadata
id="metadata2017">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
inkscape:window-height="847"
inkscape:window-width="939"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
guidetolerance="10.0"
gridtolerance="10.0"
objecttolerance="10.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
inkscape:zoom="1"
inkscape:cx="105.09946"
inkscape:cy="35.608479"
inkscape:window-x="-4"
inkscape:window-y="337"
inkscape:current-layer="svg2" />
<defs
id="defs5">
<linearGradient
id="linearGradient2851">
<stop
style="stop-color:#b2b2bf;stop-opacity:1;"
offset="0"
id="stop2853" />
<stop
style="stop-color:#151519;stop-opacity:1;"
offset="1"
id="stop2855" />
</linearGradient>
<linearGradient
id="linearGradient4069">
<stop
id="stop4071"
offset="0"
style="stop-color:#2f2f39;stop-opacity:1;" />
<stop
id="stop4073"
offset="1"
style="stop-color:#9393a6;stop-opacity:1;" />
</linearGradient>
<linearGradient
id="linearGradient3157">
<stop
id="stop3159"
offset="0"
style="stop-color:#f4f4f6;stop-opacity:1" />
<stop
id="stop3161"
offset="1"
style="stop-color:white;stop-opacity:0" />
</linearGradient>
<linearGradient
id="linearGradient3048">
<stop
style="stop-color:#ff372c;stop-opacity:1;"
offset="0"
id="stop3050" />
<stop
style="stop-color:#a11f18;stop-opacity:1;"
offset="1"
id="stop3052" />
</linearGradient>
<linearGradient
id="linearGradient4569">
<stop
style="stop-color:white;stop-opacity:1;"
offset="0"
id="stop4571" />
<stop
style="stop-color:white;stop-opacity:0"
offset="1"
id="stop4573" />
</linearGradient>
<linearGradient
id="linearGradient6599">
<stop
style="stop-color:#f4f4f6;stop-opacity:1"
offset="0"
id="stop6601" />
<stop
style="stop-color:#a1a2c0;stop-opacity:1;"
offset="1"
id="stop6603" />
</linearGradient>
<radialGradient
cx="381.42023"
cy="333.27771"
r="316.51691"
fx="381.42023"
fy="333.27771"
id="radialGradient13649"
xlink:href="#linearGradient6599"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.260971,-2.206619e-3,1.968349e-3,0.232582,8.279904,31.44974)"
spreadMethod="pad" />
<radialGradient
cx="381.42023"
cy="333.27771"
r="316.51691"
fx="381.42023"
fy="333.27771"
id="radialGradient13651"
xlink:href="#linearGradient6599"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.260971,-2.206619e-3,1.968349e-3,0.232582,8.691489,28.56994)"
spreadMethod="pad" />
<radialGradient
cx="381.42023"
cy="333.27771"
r="316.51691"
fx="381.42023"
fy="333.27771"
id="radialGradient1879"
xlink:href="#linearGradient6599"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.20013,-1.547535e-3,1.509464e-3,0.163113,-2.11855,19.04434)"
spreadMethod="pad" />
<radialGradient
cx="381.42023"
cy="333.27771"
r="316.51691"
fx="381.42023"
fy="333.27771"
id="radialGradient1883"
xlink:href="#linearGradient6599"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.20013,-1.547535e-3,1.509464e-3,0.163113,-2.434182,21.06398)"
spreadMethod="pad" />
<linearGradient
x1="32.485081"
y1="18.173479"
x2="39.085705"
y2="35.936974"
id="linearGradient4575"
xlink:href="#linearGradient4569"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.796247,0,0,0.747007,9.781798,4.994596)" />
<linearGradient
x1="32.485081"
y1="18.173479"
x2="39.085705"
y2="35.936974"
id="linearGradient4579"
xlink:href="#linearGradient4569"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(0.796247,0,0,0.747007,64.11903,1.084587)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4569"
id="linearGradient3155"
x1="61.156227"
y1="76.922729"
x2="74.122025"
y2="90.246391"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6599"
id="linearGradient4091"
x1="240.31413"
y1="38.874344"
x2="305.49738"
y2="38.874344"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(-31.97863,-172.8254)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3048"
id="linearGradient2897"
gradientUnits="userSpaceOnUse"
x1="28.837864"
y1="139.09169"
x2="70.107292"
y2="50.836796" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2851"
id="linearGradient2903"
gradientUnits="userSpaceOnUse"
spreadMethod="pad"
x1="260.55884"
y1="38.834545"
x2="271.94626"
y2="50.614651"
gradientTransform="translate(-155.4974,-0.39267)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6599"
id="linearGradient2936"
x1="117.93728"
y1="39.26852"
x2="131.3474"
y2="19.276201"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4069"
id="linearGradient2967"
x1="20.621258"
y1="16.678968"
x2="190.02657"
y2="189.49789"
gradientUnits="userSpaceOnUse" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6599"
id="linearGradient2996"
gradientUnits="userSpaceOnUse"
x1="174.77054"
y1="170.47469"
x2="16.857574"
y2="10.953424" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6599"
id="linearGradient3004"
gradientUnits="userSpaceOnUse"
x1="132.59375"
y1="130.90257"
x2="-30.518579"
y2="-30.765875" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6599"
id="linearGradient3007"
gradientUnits="userSpaceOnUse"
x1="95.437065"
y1="54.315994"
x2="99.909843"
y2="58.712097" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3157"
id="linearGradient3015"
gradientUnits="userSpaceOnUse"
x1="39.359585"
y1="21.469936"
x2="45.14185"
y2="59.042255" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient4569"
id="linearGradient3025"
gradientUnits="userSpaceOnUse"
x1="105.72369"
y1="85.294189"
x2="96.720894"
y2="92.09375" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6599"
id="linearGradient3030"
gradientUnits="userSpaceOnUse"
x1="253.14423"
y1="111.46268"
x2="270.63672"
y2="107.22004" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient6599"
id="linearGradient3038"
gradientUnits="userSpaceOnUse"
x1="255.25127"
y1="111.47541"
x2="273.8187"
y2="111.47541"
gradientTransform="translate(-144.6033,0.353554)" />
</defs>
<g
id="g1922">
<g
id="Clef">
<path
sodipodi:nodetypes="cssssssssscccccc"
id="path2971"
d="M 58.082393,80.410437 C 58.082393,79.268578 56.063543,78.850525 50.549343,78.850525 C 30.147653,78.850525 14.992673,64.313914 14.964443,44.717596 C 14.958183,40.3695 15.713113,34.992904 16.642063,32.769604 C 19.366403,26.249332 21.579426,27.259186 32.896476,38.635333 C 43.166186,48.958672 45.080085,52.13375 50.324953,46.411737 C 55.655992,40.595715 53.922657,39.29543 43.760227,29.185793 C 32.278937,17.764148 29.936723,15.665457 36.705033,12.837477 C 51.017963,6.8571539 70.156033,14.121737 78.293683,28.624034 C 81.234833,33.865532 81.918743,36.561287 82.339083,44.569657 C 82.789193,53.145543 83.187133,54.535222 85.950963,57.183139 C 119.45029,91.152215 76.85811,48.10793 116.59455,88.175786 C 129.63629,101.20155 138.30228,109.74324 137.34711,110.91792 C 136.28645,113.60801 116.54059,133.6712 114.67598,133.63644 C 114.00626,134.34346 104.27616,124.80801 93.547226,114.15453 C 58.904106,80.154513 97.935766,117.78505 58.082393,80.410437 z "
style="fill:url(#linearGradient2967);fill-opacity:1" />
<path
sodipodi:nodetypes="ccccscccccccccccc"
id="path2955"
d="M 46.0625,12.78125 C 42.549033,13.310097 37.106007,13.554993 35,16.53125 C 40.279841,25.281422 50.945032,30.425797 55.125,39.9375 C 55.647047,45.06852 50.885307,50.228929 46.03125,51.21875 C 38.66969,50.305061 34.986647,42.222446 29.46875,38.0625 C 26.461492,35.796886 23.828212,31.192558 19.96875,30.9375 C 15.226701,39.381385 16.309508,50.984559 20.5,59.6875 C 26.7601,72.321805 41.775045,77.226657 56.382964,76.261643 C 62.662838,76.568875 61.513537,80.760873 67.451554,86.323644 C 83.011628,100.46016 95.832019,113.82133 114.875,131.46875 C 122.12905,124.23152 127.65902,118.69141 135.09375,110.75 C 115.90912,89.719717 97.105875,72.608836 80.159929,53.75368 C 80.035918,49.974256 82.165125,36.330624 75.8125,28.34375 C 69.48327,18.417244 57.789989,12.261847 46.0625,12.78125 z M 34.96875,16.21875 L 34.9375,16.25 L 34.96875,16.21875 z "
style="fill:url(#linearGradient2996);fill-opacity:1.0" />
<path
sodipodi:nodetypes="cccccccccccc"
id="path2998"
d="M 46.125,14.78125 C 43.457346,15.290188 39.58952,15.230387 37.6875,16.96875 C 43.440285,25.472293 54.924782,30.473686 57.15625,41.03125 C 56.937852,48.931018 47.02177,56.81345 40,51.03125 C 33.219464,45.711793 28.129803,38.31319 21.0625,33.25 C 14.450443,48.425462 22.964921,68.371997 39.21875,72.96875 C 45.287496,75.762102 54.381296,73.089767 60.621321,74.72059 C 79.35152,93.726907 96.025208,111.34272 115.09375,128.78125 C 121.97853,122.15098 126.55808,117.527 132.59375,110.875 C 114.50695,91.845136 94.750778,73.018872 78.284931,54.118876 C 78.36891,45.910534 80.317676,34.793844 72.375,26.96875 C 66.290569,19.179841 56.223704,14.331407 46.125,14.78125 z "
style="fill:url(#linearGradient3004);fill-opacity:1" />
<path
sodipodi:nodetypes="ccccccccc"
id="path3009"
d="M 46.1875,16.78125 C 42.282316,16.863722 38.784732,17.599719 43.5625,20.78125 C 49.750975,26.882864 59.373388,33.099947 58.96875,42.90625 C 57.744631,52.013221 45.398163,59.229556 38.09375,52.0625 C 32.356992,47.588182 27.411561,40.487406 21.90625,36.75 C 17.013204,52.165774 27.801872,69.72744 44.3125,72.1875 C 59.691898,71.369384 71.752787,69.640165 75.84375,56.72427 C 77.784762,42.878545 75.553827,35.77131 69.09375,26.1875 C 63.216833,20.021584 54.686297,16.386778 46.1875,16.78125 z "
style="fill:url(#linearGradient3015);fill-opacity:1" />
<path
sodipodi:nodetypes="cccccc"
id="path3019"
d="M 77.5,58.15625 C 73.073791,64.868978 68.321786,70.093813 61.580267,74.021447 C 78.490009,92.413211 96.70464,109.35904 115.0625,126.25 C 120.59653,120.30323 125.22356,116.18821 130.09375,111 C 111.91683,91.659821 94.26166,76.390888 77.625,57.9375 L 77.5,58.15625 z "
style="fill:url(#linearGradient3025);fill-opacity:1" />
<path
transform="translate(-144.6033,0.353554)"
d="M 266.2257 111.46268 A 6.5407376 6.3639607 0 1 1 253.14423,111.46268 A 6.5407376 6.3639607 0 1 1 266.2257 111.46268 z"
sodipodi:ry="6.3639607"
sodipodi:rx="6.5407376"
sodipodi:cy="111.46268"
sodipodi:cx="259.68497"
id="path3028"
style="opacity:1;color:black;fill:url(#linearGradient3030);fill-opacity:1.0;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
sodipodi:type="arc" />
<path
id="path3032"
d="M 114.61545,107.47855 C 109.45166,107.60473 109.2436,115.85578 114.49045,116.1348 C 120.64266,116.90767 121.89509,107.42519 114.61545,107.47855 z "
style="opacity:1;color:black;fill:url(#linearGradient3038);fill-opacity:1.0;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
</g>
<g
id="tourne-vis">
<g
id="tige">
<path
style="color:black;fill:url(#linearGradient2903);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
d="M 70.8168,75.807488 C 108.32013,39.465037 111.38222,35.2272 111.52542,33.441343 C 111.968,27.92201 112.4186,26.524924 118.2498,23.408202 C 125.0827,19.756078 130.38713,17.588098 130.68564,18.223416 C 130.99691,18.986648 135.49681,22.392154 135.37701,24.049034 C 135.25721,25.705915 130.10333,35.714224 127.65805,39.381668 C 125.18407,43.092149 125.71324,40.385879 119.7809,41.56389 C 117.81044,41.955172 116.6513,43.814798 77.98524,82.330535"
id="path4051"
sodipodi:nodetypes="cssccssc" />
<path
sodipodi:nodetypes="ccccccccc"
id="path2883"
d="M 129.59635,20.32608 C 124.44419,23.006939 117.42157,24.378669 114.15885,29.41983 C 114.37775,34.880183 110.82345,38.888851 107.14699,42.484067 C 96.34187,53.845428 85.0048,64.804524 73.72135,75.76358 C 75.575383,79.443548 74.202289,78.132312 78.640969,78.186948 C 89.257559,68.245904 105.79201,49.005825 116.99464,39.88858 C 119.99429,38.303469 125.8995,41.092523 126.97135,36.73233 C 128.8981,32.446718 132.69478,26.767527 133.1999,23.003777 C 132.18403,22.002377 130.78718,20.887515 129.59635,20.32608 z "
style="opacity:1;color:black;fill:url(#linearGradient3007);fill-opacity:1.0;fill-rule:nonzero;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible" />
<path
sodipodi:nodetypes="cczczc"
id="path2920"
d="M 130.75916,21.20419 L 132.76163,23.167541 C 132.76163,23.167541 127.23492,32.974502 125.26178,34.947645 C 123.49477,36.714661 118.19372,34.947645 118.19372,34.947645 C 118.19372,34.947645 117.40838,29.352096 118.58639,28.272253 C 119.99146,26.984275 130.75916,21.20419 130.75916,21.20419 z "
style="fill:url(#linearGradient2936);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
id="manche">
<path
style="fill:#8b1f1f;fill-opacity:1"
d="M 86.4598,86.55428 C 85.45805,88.661963 84.51903,91.340621 82.89171,94.482904 C 77.16605,95.131703 76.42957,92.644679 71.51992,99.88383 C 70.84738,99.88383 69.44366,102.45367 65.52096,107.51429 C 55.86572,119.97041 42.62092,133.38826 35.62097,137.80495 C 27.48995,142.9353 22.70774,142.74411 17.27051,137.07127 L 17.27051,137.07127 C 14.96619,134.6671 12.77024,131.65096 12.39061,130.36874 C 10.35171,123.48209 24.74725,105.80575 46.04869,89.039824 C 58.4022,80.996913 59.29657,79.987867 57.1559,70.794418 C 60.109543,68.867814 61.683519,69.139114 67.08454,67.026664"
id="path4057"
sodipodi:nodetypes="cccssccsccc" />
<path
sodipodi:nodetypes="csssssssssc"
id="path3149"
d="M 18.71063,134.63726 C 16.72088,132.37107 14.385797,130.00522 14.385797,128.94772 C 14.385797,121.73406 28.225916,106.01888 47.51835,91.326358 C 58.271662,83.136972 61.012107,80.250441 61.012107,73.631547 C 61.012107,72.323008 62.289681,70.95959 64.19442,70.23541 C 67.188407,69.097099 66.464738,69.892783 74.448984,78.060066 C 81.896379,85.678192 83.517915,86.725123 82.62456,89.144782 C 82.064662,90.661271 81.339279,92.231265 80.113908,92.258832 C 70.890495,92.474286 73.316952,92.168846 66.528376,100.99057 C 56.864318,113.54898 40.720512,130.9156 34.265179,135.06942 C 27.044623,139.71565 21.87648,138.0859 18.71063,134.63726 z "
style="fill:url(#linearGradient2897);fill-opacity:1" />
<path
sodipodi:nodetypes="csssssssc"
style="opacity:1;fill:url(#linearGradient3155);fill-opacity:1"
d="M 42.300511,125.33315 C 49.900363,117.61692 65.420562,96.305174 72.804906,88.051451 C 75.646246,84.875593 78.064702,85.475552 77.773396,84.797949 C 76.790969,82.512738 67.529181,74.410387 64.698828,71.968584 C 64.035281,71.396128 63.552226,73.875947 63.343422,75.145424 C 62.282762,81.593979 61.332702,81.586924 51.97659,89.096298 C 32.311342,104.87996 16.468556,121.86832 16.468556,127.79312 C 16.468556,130.5567 21.173486,134.751 24.015519,134.83047 C 24.712702,134.84997 29.053514,138.78297 42.300511,125.33315 z "
id="path2141" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -59,6 +59,7 @@
#include "swad_language.h"
#include "swad_log.h"
#include "swad_mail.h"
#include "swad_maintenance.h"
#include "swad_mark.h"
#include "swad_match.h"
#include "swad_match_result.h"
@ -78,7 +79,6 @@
#include "swad_role.h"
#include "swad_search.h"
#include "swad_setting.h"
#include "swad_setup.h"
#include "swad_system_config.h"
#include "swad_tab.h"
#include "swad_test_import.h"
@ -192,7 +192,7 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActSeePen ] = {1060, 2,TabSys,ActSeePen , 0, 0, 0, 0, 0, 0,0x3C0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Hie_SeePending ,"sitemap" },
[ActSeeLnk ] = { 748, 3,TabSys,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x3C7,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Lnk_SeeLinks ,"link" },
[ActLstPlg ] = { 777, 4,TabSys,ActLstPlg , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Plg_ListPlugins ,"puzzle-piece" },
[ActSetUp ] = { 840, 5,TabSys,ActSetUp , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,SUp_SetUp ,"bolt" },
[ActMtn ] = {1820, 5,TabSys,ActMtn , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Mtn_Maintenance ,"tools" },
// Actions not in menu:
[ActPrnSysInf ] = {1819,-1,TabUnk,ActSeeSysInf , 0, 0, 0, 0, 0, 0,0x3C7,Act_CONT_NORM,Act_BRW_NEW_TAB,NULL ,SysCfg_PrintConfiguration ,NULL},
@ -203,9 +203,6 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActRenCty ] = { 866,-1,TabUnk,ActSeeCty , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Cty_RenameCountry ,Cty_ContEditAfterChgCty ,NULL},
[ActChgCtyWWW ] = {1157,-1,TabUnk,ActSeeCty , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Cty_ChangeCtyWWW ,Cty_ContEditAfterChgCty ,NULL},
[ActReqRemOldCrs ] = {1109,-1,TabUnk,ActSeePen , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Crs_AskRemoveOldCrss ,NULL},
[ActRemOldCrs ] = {1110,-1,TabUnk,ActSeePen , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Crs_RemoveOldCrss ,NULL},
[ActSeeBan ] = {1137,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x3FF,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Ban_SeeBanners ,NULL},
[ActEdiBan ] = {1138,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Ban_EditBanners ,NULL},
[ActNewBan ] = {1139,-1,TabUnk,ActSeeLnk , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Ban_RecFormNewBanner ,Ban_ContEditAfterChgBan ,NULL},
@ -235,6 +232,10 @@ const struct Act_Actions Act_Actions[Act_NUM_ACTIONS] =
[ActChgPlgURL ] = { 783,-1,TabUnk,ActLstPlg , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Plg_ChangePlgURL ,Plg_ContEditAfterChgPlg ,NULL},
[ActChgPlgIP ] = { 780,-1,TabUnk,ActLstPlg , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,Plg_ChangePlgIP ,Plg_ContEditAfterChgPlg ,NULL},
[ActSetUp ] = { 840, 5,TabUnk,ActMtn , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Mtn_SetUp ,NULL},
[ActReqRemOldCrs ] = {1109,-1,TabUnk,ActMtn , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Mtn_RemoveOldCrss ,NULL},
[ActRemOldCrs ] = {1110,-1,TabUnk,ActMtn , 0, 0, 0, 0, 0, 0,0x200,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,Crs_RemoveOldCrss ,NULL},
// TabCty ******************************************************************
// Actions in menu:
[ActSeeCtyInf ] = {1155, 0,TabCty,ActSeeCtyInf , 0, 0, 0, 0, 0,0x3C7, 0,Act_CONT_NORM,Act_BRW_1ST_TAB,NULL ,CtyCfg_ShowConfiguration ,"info" },
@ -3533,6 +3534,7 @@ Act_Action_t Act_FromActCodToAction[1 + Act_MAX_ACTION_COD] = // Do not reuse un
ActChgCtrAltCfg, // #1817
ActSeeSysInf, // #1818
ActPrnSysInf, // #1819
ActMtn, // #1820
};
/*****************************************************************************/

View File

@ -64,7 +64,7 @@ typedef enum
typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to indicate obsolete action
#define Act_MAX_ACTION_COD 1819
#define Act_MAX_ACTION_COD 1820
#define Act_MAX_OPTIONS_IN_MENU_PER_TAB 13
@ -170,7 +170,7 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
#define ActSeePen (ActRenMaiFul + 3)
#define ActSeeLnk (ActRenMaiFul + 4)
#define ActLstPlg (ActRenMaiFul + 5)
#define ActSetUp (ActRenMaiFul + 6)
#define ActMtn (ActRenMaiFul + 6)
// Secondary actions
#define ActPrnSysInf (ActRenMaiFul + 7)
@ -181,57 +181,58 @@ typedef signed int Act_Action_t; // Must be a signed type, because -1 is used to
#define ActRenCty (ActRenMaiFul + 11)
#define ActChgCtyWWW (ActRenMaiFul + 12)
#define ActReqRemOldCrs (ActRenMaiFul + 13)
#define ActRemOldCrs (ActRenMaiFul + 14)
#define ActSeeBan (ActRenMaiFul + 13)
#define ActEdiBan (ActRenMaiFul + 14)
#define ActNewBan (ActRenMaiFul + 15)
#define ActRemBan (ActRenMaiFul + 16)
#define ActShoBan (ActRenMaiFul + 17)
#define ActHidBan (ActRenMaiFul + 18)
#define ActRenBanSho (ActRenMaiFul + 19)
#define ActRenBanFul (ActRenMaiFul + 20)
#define ActChgBanImg (ActRenMaiFul + 21)
#define ActChgBanWWW (ActRenMaiFul + 22)
#define ActClkBan (ActRenMaiFul + 23)
#define ActSeeBan (ActRenMaiFul + 15)
#define ActEdiBan (ActRenMaiFul + 16)
#define ActNewBan (ActRenMaiFul + 17)
#define ActRemBan (ActRenMaiFul + 18)
#define ActShoBan (ActRenMaiFul + 19)
#define ActHidBan (ActRenMaiFul + 20)
#define ActRenBanSho (ActRenMaiFul + 21)
#define ActRenBanFul (ActRenMaiFul + 22)
#define ActChgBanImg (ActRenMaiFul + 23)
#define ActChgBanWWW (ActRenMaiFul + 24)
#define ActClkBan (ActRenMaiFul + 25)
#define ActEdiLnk (ActRenMaiFul + 24)
#define ActNewLnk (ActRenMaiFul + 25)
#define ActRemLnk (ActRenMaiFul + 26)
#define ActRenLnkSho (ActRenMaiFul + 27)
#define ActRenLnkFul (ActRenMaiFul + 28)
#define ActChgLnkWWW (ActRenMaiFul + 29)
#define ActEdiLnk (ActRenMaiFul + 26)
#define ActNewLnk (ActRenMaiFul + 27)
#define ActRemLnk (ActRenMaiFul + 28)
#define ActRenLnkSho (ActRenMaiFul + 29)
#define ActRenLnkFul (ActRenMaiFul + 30)
#define ActChgLnkWWW (ActRenMaiFul + 31)
#define ActEdiPlg (ActRenMaiFul + 30)
#define ActNewPlg (ActRenMaiFul + 31)
#define ActRemPlg (ActRenMaiFul + 32)
#define ActRenPlg (ActRenMaiFul + 33)
#define ActChgPlgDes (ActRenMaiFul + 34)
#define ActChgPlgLog (ActRenMaiFul + 35)
#define ActChgPlgAppKey (ActRenMaiFul + 36)
#define ActChgPlgURL (ActRenMaiFul + 37)
#define ActChgPlgIP (ActRenMaiFul + 38)
#define ActEdiPlg (ActRenMaiFul + 32)
#define ActNewPlg (ActRenMaiFul + 33)
#define ActRemPlg (ActRenMaiFul + 34)
#define ActRenPlg (ActRenMaiFul + 35)
#define ActChgPlgDes (ActRenMaiFul + 36)
#define ActChgPlgLog (ActRenMaiFul + 37)
#define ActChgPlgAppKey (ActRenMaiFul + 38)
#define ActChgPlgURL (ActRenMaiFul + 39)
#define ActChgPlgIP (ActRenMaiFul + 40)
#define ActSetUp (ActRenMaiFul + 39)
#define ActReqRemOldCrs (ActRenMaiFul + 40)
#define ActRemOldCrs (ActRenMaiFul + 41)
/*****************************************************************************/
/******************************** Country tab ********************************/
/*****************************************************************************/
// Actions in menu
#define ActSeeCtyInf (ActChgPlgIP + 1)
#define ActSeeIns (ActChgPlgIP + 2)
#define ActSeeCtyInf (ActRemOldCrs + 1)
#define ActSeeIns (ActRemOldCrs + 2)
// Secondary actions
#define ActPrnCtyInf (ActChgPlgIP + 3)
#define ActChgCtyMapAtt (ActChgPlgIP + 4)
#define ActPrnCtyInf (ActRemOldCrs + 3)
#define ActChgCtyMapAtt (ActRemOldCrs + 4)
#define ActEdiIns (ActChgPlgIP + 5)
#define ActReqIns (ActChgPlgIP + 6)
#define ActNewIns (ActChgPlgIP + 7)
#define ActRemIns (ActChgPlgIP + 8)
#define ActRenInsSho (ActChgPlgIP + 9)
#define ActRenInsFul (ActChgPlgIP + 10)
#define ActChgInsWWW (ActChgPlgIP + 11)
#define ActChgInsSta (ActChgPlgIP + 12)
#define ActEdiIns (ActRemOldCrs + 5)
#define ActReqIns (ActRemOldCrs + 6)
#define ActNewIns (ActRemOldCrs + 7)
#define ActRemIns (ActRemOldCrs + 8)
#define ActRenInsSho (ActRemOldCrs + 9)
#define ActRenInsFul (ActRemOldCrs + 10)
#define ActChgInsWWW (ActRemOldCrs + 11)
#define ActChgInsSta (ActRemOldCrs + 12)
/*****************************************************************************/
/****************************** Institution tab ******************************/

View File

@ -103,7 +103,7 @@ static void Ctr_FormToGoToMap (struct Centre *Ctr);
void Ctr_SeeCtrWithPendingDegs (void)
{
extern const char *Hlp_SYSTEM_Hierarchy_pending;
extern const char *Hlp_SYSTEM_Pending;
extern const char *Txt_Centres_with_pending_degrees;
extern const char *Txt_Centre;
extern const char *Txt_Degrees_ABBREVIATION;
@ -148,7 +148,7 @@ void Ctr_SeeCtrWithPendingDegs (void)
{
/***** Begin box and table *****/
Box_BoxTableBegin (NULL,Txt_Centres_with_pending_degrees,NULL,
Hlp_SYSTEM_Hierarchy_pending,Box_NOT_CLOSABLE,2);
Hlp_SYSTEM_Pending,Box_NOT_CLOSABLE,2);
/***** Wrtie heading *****/
HTM_TR_Begin (NULL);

View File

@ -494,7 +494,7 @@ enscript -2 --landscape --color --file-align=2 --highlight --line-numbers -o - *
En OpenSWAD:
ps2pdf source.ps destination.pdf
*/
#define Log_PLATFORM_VERSION "SWAD 19.121 (2020-01-26)"
#define Log_PLATFORM_VERSION "SWAD 19.122 (2020-01-30)"
#define CSS_FILE "swad19.118.css"
#define JS_FILE "swad19.91.1.js"
/*
@ -502,6 +502,13 @@ ps2pdf source.ps destination.pdf
// TODO: Impedir la creación y edición de proyectos si no son editables.
// TODO: No se puede entrar con DNI '1' suponiendo que no tenga password ¿por qué?
Version 19.122: Jan 30, 2020 Some options changed in system tab. (278690 lines)
Copy the following icons to icon public directory:
sudo cp -a icon/bolt.svg /var/www/html/swad/icon/
sudo cp -a icon/iconset/awesome/tools.svg /var/www/html/swad/icon/iconset/awesome/
sudo cp -a icon/iconset/nuvola/tools.svg /var/www/html/swad/icon/iconset/nuvola/
Version 19.121.1: Jan 30, 2020 Fixed bug in database. (? lines)
Version 19.121: Jan 26, 2020 Number of centres with map shown in institution configuration. (278601 lines)
Version 19.120: Jan 25, 2020 Number of centres with map shown in country configuration. (278592 lines)
Version 19.119: Jan 25, 2020 Number of centres with map shown in platform configuration. (278591 lines)

View File

@ -102,7 +102,7 @@ static void Cty_FormToGoToMap (struct Country *Cty);
void Cty_SeeCtyWithPendingInss (void)
{
extern const char *Hlp_SYSTEM_Hierarchy_pending;
extern const char *Hlp_SYSTEM_Pending;
extern const char *Lan_STR_LANG_ID[1 + Lan_NUM_LANGUAGES];
extern const char *Txt_Countries_with_pending_institutions;
extern const char *Txt_Country;
@ -139,7 +139,7 @@ void Cty_SeeCtyWithPendingInss (void)
{
/***** Begin box and table *****/
Box_BoxTableBegin (NULL,Txt_Countries_with_pending_institutions,NULL,
Hlp_SYSTEM_Hierarchy_pending,Box_NOT_CLOSABLE,2);
Hlp_SYSTEM_Pending,Box_NOT_CLOSABLE,2);
/***** Write heading *****/
HTM_TR_Begin (NULL);

View File

@ -2763,7 +2763,7 @@ void Crs_PutLinkToRemoveOldCrss (void)
void Crs_AskRemoveOldCrss (void)
{
extern const char *Hlp_SYSTEM_Hierarchy_eliminate_old_courses;
extern const char *Hlp_SYSTEM_Maintenance_eliminate_old_courses;
extern const char *The_ClassFormInBox[The_NUM_THEMES];
extern const char *Txt_Eliminate_old_courses;
extern const char *Txt_Eliminate_all_courses_whithout_users_PART_1_OF_2;
@ -2777,7 +2777,7 @@ void Crs_AskRemoveOldCrss (void)
/***** Begin box *****/
Box_BoxBegin (NULL,Txt_Eliminate_old_courses,NULL,
Hlp_SYSTEM_Hierarchy_eliminate_old_courses,Box_NOT_CLOSABLE);
Hlp_SYSTEM_Maintenance_eliminate_old_courses,Box_NOT_CLOSABLE);
/***** Form to request number of months without clicks *****/
HTM_LABEL_Begin ("class=\"%s\"",The_ClassFormInBox[Gbl.Prefs.Theme]);

View File

@ -1884,7 +1884,7 @@ mysql> DESCRIBE msg_content;
"MedCod INT NOT NULL DEFAULT -1,"
"UNIQUE INDEX(MsgCod),"
"FULLTEXT(Subject,Content),"
"INDEX(MedCod)) ENGINE = MYISAM;");
"INDEX(MedCod)) ENGINE = MYISAM");
/***** Table msg_content_deleted *****/
/*
@ -1906,7 +1906,7 @@ mysql> DESCRIBE msg_content_deleted;
"MedCod INT NOT NULL DEFAULT -1,"
"UNIQUE INDEX(MsgCod),"
"FULLTEXT(Subject,Content),"
"INDEX(MedCod)) ENGINE = MYISAM;");
"INDEX(MedCod)) ENGINE = MYISAM");
/***** Table msg_rcv *****/
/*
@ -2535,11 +2535,11 @@ mysql> DESCRIBE tl_comments;
*/
DB_CreateTable ("CREATE TABLE IF NOT EXISTS tl_comments ("
"PubCod BIGINT NOT NULL,"
"Content Txt NOT NULL,"
"Txt LONGTEXT NOT NULL,"
"MedCod INT NOT NULL DEFAULT -1,"
"UNIQUE INDEX(PubCod),"
"FULLTEXT(Txt),"
"INDEX(MedCod)) ENGINE = MYISAM;");
"INDEX(MedCod)) ENGINE = MYISAM");
/***** Table tl_comments_fav *****/
/*
@ -2632,7 +2632,7 @@ mysql> DESCRIBE tl_posts;
"MedCod INT NOT NULL DEFAULT -1,"
"UNIQUE INDEX(PubCod),"
"FULLTEXT(Txt),"
"INDEX(MedCod)) ENGINE = MYISAM;");
"INDEX(MedCod)) ENGINE = MYISAM");
/***** Table tl_pubs *****/
/*

View File

@ -105,7 +105,7 @@ static void Deg_EditingDegreeDestructor (void);
void Deg_SeeDegWithPendingCrss (void)
{
extern const char *Hlp_SYSTEM_Hierarchy_pending;
extern const char *Hlp_SYSTEM_Pending;
extern const char *Txt_Degrees_with_pending_courses;
extern const char *Txt_Degree;
extern const char *Txt_Courses_ABBREVIATION;
@ -153,7 +153,7 @@ void Deg_SeeDegWithPendingCrss (void)
{
/***** Begin box and table *****/
Box_BoxTableBegin (NULL,Txt_Degrees_with_pending_courses,NULL,
Hlp_SYSTEM_Hierarchy_pending,Box_NOT_CLOSABLE,2);
Hlp_SYSTEM_Pending,Box_NOT_CLOSABLE,2);
/***** Write heading *****/
HTM_TR_Begin (NULL);

View File

@ -201,46 +201,46 @@ const char *Hlp_SYSTEM_Countries =
"SYSTEM.Countries.en";
#endif
const char *Hlp_SYSTEM_Hierarchy_pending =
const char *Hlp_SYSTEM_Pending =
#if L==1
"SYSTEM.Hierarchy.es#pendientes";
"SYSTEM.Pending.es";
#elif L==2
"SYSTEM.Hierarchy.en#pending";
"SYSTEM.Pending.en";
#elif L==3
"SYSTEM.Hierarchy.en#pending";
"SYSTEM.Pending.en";
#elif L==4
"SYSTEM.Hierarchy.es#pendientes";
"SYSTEM.Pending.es";
#elif L==5
"SYSTEM.Hierarchy.en#pending";
"SYSTEM.Pending.en";
#elif L==6
"SYSTEM.Hierarchy.es#pendientes";
"SYSTEM.Pending.es";
#elif L==7
"SYSTEM.Hierarchy.en#pending";
"SYSTEM.Pending.en";
#elif L==8
"SYSTEM.Hierarchy.en#pending";
"SYSTEM.Pending.en";
#elif L==9
"SYSTEM.Hierarchy.en#pending";
"SYSTEM.Pending.en";
#endif
const char *Hlp_SYSTEM_Hierarchy_eliminate_old_courses =
const char *Hlp_SYSTEM_Maintenance_eliminate_old_courses =
#if L==1
"SYSTEM.Hierarchy.es#eliminar-asignaturas-antiguas";
"SYSTEM.Maintenance.es#eliminar-asignaturas-antiguas";
#elif L==2
"SYSTEM.Hierarchy.en#eliminate-old-courses";
"SYSTEM.Maintenance.en#eliminate-old-courses";
#elif L==3
"SYSTEM.Hierarchy.en#eliminate-old-courses";
"SYSTEM.Maintenance.en#eliminate-old-courses";
#elif L==4
"SYSTEM.Hierarchy.es#eliminar-asignaturas-antiguas";
"SYSTEM.Maintenance.es#eliminar-asignaturas-antiguas";
#elif L==5
"SYSTEM.Hierarchy.en#eliminate-old-courses";
"SYSTEM.Maintenance.en#eliminate-old-courses";
#elif L==6
"SYSTEM.Hierarchy.es#eliminar-asignaturas-antiguas";
"SYSTEM.Maintenance.es#eliminar-asignaturas-antiguas";
#elif L==7
"SYSTEM.Hierarchy.en#eliminate-old-courses";
"SYSTEM.Maintenance.en#eliminate-old-courses";
#elif L==8
"SYSTEM.Hierarchy.en#eliminate-old-courses";
"SYSTEM.Maintenance.en#eliminate-old-courses";
#elif L==9
"SYSTEM.Hierarchy.en#eliminate-old-courses";
"SYSTEM.Maintenance.en#eliminate-old-courses";
#endif
const char *Hlp_SYSTEM_Banners =

View File

@ -63,11 +63,6 @@ extern struct Globals Gbl;
void Hie_SeePending (void)
{
/***** Contextual menu *****/
Mnu_ContextMenuBegin ();
Crs_PutLinkToRemoveOldCrss (); // Remove old courses
Mnu_ContextMenuEnd ();
/***** List countries with pending institutions *****/
Cty_SeeCtyWithPendingInss ();

View File

@ -107,7 +107,7 @@ static void Ins_FormToGoToMap (struct Instit *Ins);
void Ins_SeeInsWithPendingCtrs (void)
{
extern const char *Hlp_SYSTEM_Hierarchy_pending;
extern const char *Hlp_SYSTEM_Pending;
extern const char *Txt_Institutions_with_pending_centres;
extern const char *Txt_Institution;
extern const char *Txt_Centres_ABBREVIATION;
@ -155,7 +155,7 @@ void Ins_SeeInsWithPendingCtrs (void)
{
/***** Begin box and table *****/
Box_BoxTableBegin (NULL,Txt_Institutions_with_pending_centres,NULL,
Hlp_SYSTEM_Hierarchy_pending,Box_NOT_CLOSABLE,2);
Hlp_SYSTEM_Pending,Box_NOT_CLOSABLE,2);
/***** Write heading *****/
HTM_TR_Begin (NULL);

View File

@ -1,4 +1,4 @@
// swad_setup.c: initial setup after installation
// swad_maintenance.c: platform maintenance
/*
SWAD (Shared Workspace At a Distance),
@ -25,7 +25,9 @@
/********************************* Headers ***********************************/
/*****************************************************************************/
#include "swad_course.h"
#include "swad_database.h"
#include "swad_menu.h"
/*****************************************************************************/
/************** External global variables from others modules ****************/
@ -47,12 +49,61 @@
/***************************** Private prototypes ****************************/
/*****************************************************************************/
static void Mtn_PutLinkToSetUp (void);
/*****************************************************************************/
/******************************** Maintenance ********************************/
/*****************************************************************************/
void Mtn_Maintenance (void)
{
/***** Contextual menu *****/
Mnu_ContextMenuBegin ();
Mtn_PutLinkToSetUp (); // Set up
Crs_PutLinkToRemoveOldCrss (); // Remove old courses
Mnu_ContextMenuEnd ();
}
/*****************************************************************************/
/************************ Put link to set up platform ************************/
/*****************************************************************************/
static void Mtn_PutLinkToSetUp (void)
{
extern const char *Txt_Set_up;
/***** Put form to set up platform *****/
Lay_PutContextualLinkIconText (ActSetUp,NULL,NULL,
"bolt.svg",
Txt_Set_up);
}
/*****************************************************************************/
/****************************** Initial set up *******************************/
/*****************************************************************************/
void SUp_SetUp (void)
void Mtn_SetUp (void)
{
/***** Create tables in database *****/
/***** Contextual menu *****/
Mnu_ContextMenuBegin ();
Crs_PutLinkToRemoveOldCrss (); // Remove old courses
Mnu_ContextMenuEnd ();
/***** Create database tables if not exist *****/
DB_CreateTablesIfNotExist ();
}
/*****************************************************************************/
/****************************** Initial set up *******************************/
/*****************************************************************************/
void Mtn_RemoveOldCrss (void)
{
/***** Contextual menu *****/
Mnu_ContextMenuBegin ();
Mtn_PutLinkToSetUp (); // Set up
Mnu_ContextMenuEnd ();
/***** Write form to remove old courses *****/
Crs_AskRemoveOldCrss ();
}

View File

@ -1,7 +1,7 @@
// swad_setup.h: initial setup after installation
// swad_maintenance.h: platform maintenance
#ifndef _SWAD_SUP
#define _SWAD_SUP
#ifndef _SWAD_MTN
#define _SWAD_MTN
/*
SWAD (Shared Workspace At a Distance in Spanish),
is a web platform developed at the University of Granada (Spain),
@ -35,6 +35,8 @@
/***************************** Public prototypes *****************************/
/*****************************************************************************/
void SUp_SetUp (void);
void Mtn_Maintenance (void);
void Mtn_SetUp (void);
void Mtn_RemoveOldCrss (void);
#endif

View File

@ -77,7 +77,7 @@ static const Act_Action_t Mnu_MenuActions[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_
[ 2] = ActSeePen,
[ 3] = ActSeeLnk,
[ 4] = ActLstPlg,
[ 5] = ActSetUp,
[ 5] = ActMtn,
},
[TabCty] = {
[ 0] = ActSeeCtyInf,

View File

@ -18826,23 +18826,23 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
,
// 2: ActSeePen
#if L==1 // ca
"Jerarquia"
"Pendents"
#elif L==2 // de
"Hierarchie"
"Anh&auml;ngig"
#elif L==3 // en
"Hierarchy"
"Pending"
#elif L==4 // es
"Jerarqu&iacute;a"
"Pendientes"
#elif L==5 // fr
"Hi&eacute;rarchie"
"En&nbsp;attente"
#elif L==6 // gn
"S&atilde;mbyhyha reko"
"Pendientes" // Okoteve traducción
#elif L==7 // it
"Gerarchia"
"In&nbsp;attesa"
#elif L==8 // pl
"Hierarchia"
"Oczekuj&aogon;cy"
#elif L==9 // pt
"Hierarquia"
"Pendentes"
#endif
,
// 3: ActSeeLnk
@ -18887,25 +18887,25 @@ const char *Txt_MENU_TITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
"Plugins"
#endif
,
// 5: ActSetUp
// 5: ActMtn
#if L==1 // ca
"Instal lar"
"Manteniment"
#elif L==2 // de
"Einrichten"
"Erhaltung"
#elif L==3 // en
"Set up"
"Maintenance"
#elif L==4 // es
"Instalar"
"Mantenimiento"
#elif L==5 // fr
"Installer"
"Entretien"
#elif L==6 // gn
"Instalar" // Okoteve traducción
"&Ntilde;emyatyr&otilde;"
#elif L==7 // it
"Setup"
"Manutenzione"
#elif L==8 // pl
"Set up"
"Utrzymanie"
#elif L==9 // pt
"Instalar"
"Manuten&ccedil;&atilde;o"
#endif
,
NULL, // 6
@ -20665,7 +20665,7 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
#elif L==6 // gn
"Instituciones, centros, titulaciones y asignaturas pendientes de activar" // Okoteve traducción
#elif L==7 // it
"Istituzioni, centri, lauree e corsi in sospeso"
"Istituzioni, centri, lauree e corsi in attesa di essere attivati"
#elif L==8 // pl
"Instytucje, centra, stopnie i kurs&otilde;w oczekuj&aogon;cy"
#elif L==9 // pt
@ -20714,25 +20714,25 @@ const char *Txt_MENU_SUBTITLE[Tab_NUM_TABS][Act_MAX_OPTIONS_IN_MENU_PER_TAB] =
"Lista de plugins"
#endif
,
// 5: ActSetUp
// 5: ActMtn
#if L==1 // ca
"Instal laci&oacute; de la plataforma (en proves)"
"Instal&centerdot;laci&oacute; i manteniment de la plataforma"
#elif L==2 // de
"Einrichten"
"Plattformeinrichtung und Wartung"
#elif L==3 // en
"Set up"
"Platform set up and maintenance"
#elif L==4 // es
"Instalaci&oacute;n de la plataforma (en pruebas)"
"Instalaci&oacute;n y mantenimiento de la plataforma"
#elif L==5 // fr
"Installer"
"Mise en place et maintenance de la plateforme"
#elif L==6 // gn
"Instalaci&oacute;n de la plataforma (en pruebas)"// Okoteve traducción
"Instalaci&oacute;n y mantenimiento de la plataforma" // Okoteve traducción
#elif L==7 // it
"Setup"
"Installazione e manutenzione della piattaforma"
#elif L==8 // pl
"Set up"
"Konfiguracja i utrzymanie platformy"
#elif L==9 // pt
"Instalar"
"Instala&ccedil;&atilde;o e manuten&ccedil;&atilde;o da plataforma"
#endif
,
NULL, // 6
@ -39237,6 +39237,27 @@ const char *Txt_Set_password =
"Definir senha";
#endif
const char *Txt_Set_up =
#if L==1 // ca
"Instal&centerdot;lar";
#elif L==2 // de
"Einrichten";
#elif L==3 // en
"Set up";
#elif L==4 // es
"Instalar";
#elif L==5 // fr
"Installer";
#elif L==6 // gn
"Instalar"; // Okoteve traducción
#elif L==7 // it
"Setup";
#elif L==8 // pl
"Set up";
#elif L==9 // pt
"Instalar";
#endif
const char *Txt_Settings =
#if L==1 // ca
"Configuraci&oacute;";

View File

@ -1576,23 +1576,23 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
,
[ActSeePen] =
#if L==1 // ca
"" // Necessita traducció
"Institutions, centres, titulacions i assignatures pendents d'activar"
#elif L==2 // de
"" // Need Übersetzung
"Anh&auml;ngig Hochschulen, Lehrinstitute, Studiengang und Kursen"
#elif L==3 // en
"List pending institutions, centres, degrees and courses in hierarchy"
"Pending institutions, centres, degrees and courses"
#elif L==4 // es
""
"Instituciones, centros, titulaciones y asignaturas pendientes de activar"
#elif L==5 // fr
"" // Besoin de traduction
"&Eacute;tablissements, centres, &eacute;tudes et mati&egrave;res en attente"
#elif L==6 // gn
"" // Okoteve traducción
"Instituciones, centros, titulaciones y asignaturas pendientes de activar" // Okoteve traducción
#elif L==7 // it
"" // Bisogno di traduzione
"Istituzioni, centri, lauree e corsi in attesa di essere attivati"
#elif L==8 // pl
"" // Potrzebujesz tlumaczenie
"Instytucje, centra, stopnie i kurs&otilde;w oczekuj&aogon;cy"
#elif L==9 // pt
"" // Precisa de tradução
"Institu&ccedil;&otilde;es, centros, graus e disciplinas pendentes"
#endif
,
[ActSeeLnk] =
@ -1637,25 +1637,25 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
"" // Precisa de tradução
#endif
,
[ActSetUp] =
[ActMtn] =
#if L==1 // ca
"" // Necessita traducció
"Manteniment"
#elif L==2 // de
"" // Need Übersetzung
"Erhaltung"
#elif L==3 // en
"Initial set up"
"Maintenance"
#elif L==4 // es
""
"Mantenimiento"
#elif L==5 // fr
"" // Besoin de traduction
"Entretien"
#elif L==6 // gn
"" // Okoteve traducción
"&Ntilde;emyatyr&otilde;"
#elif L==7 // it
"" // Bisogno di traduzione
"Manutenzione"
#elif L==8 // pl
"" // Potrzebujesz tlumaczenie
"Utrzymanie"
#elif L==9 // pt
"" // Precisa de tradução
"Manuten&ccedil;&atilde;o"
#endif
,
[ActPrnSysInf] =
@ -1782,48 +1782,6 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
"" // Potrzebujesz tlumaczenie
#elif L==9 // pt
"" // Precisa de tradução
#endif
,
[ActReqRemOldCrs] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
"Request the total removal of old courses"
#elif L==4 // es
""
#elif L==5 // fr
"" // Besoin de traduction
#elif L==6 // gn
"" // Okoteve traducción
#elif L==7 // it
"" // Bisogno di traduzione
#elif L==8 // pl
"" // Potrzebujesz tlumaczenie
#elif L==9 // pt
"" // Precisa de tradução
#endif
,
[ActRemOldCrs] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
"Remove completely old courses"
#elif L==4 // es
""
#elif L==5 // fr
"" // Besoin de traduction
#elif L==6 // gn
"" // Okoteve traducción
#elif L==7 // it
"" // Bisogno di traduzione
#elif L==8 // pl
"" // Potrzebujesz tlumaczenie
#elif L==9 // pt
"" // Precisa de tradução
#endif
,
[ActSeeBan] =
@ -2370,6 +2328,69 @@ const char *Txt_Actions[Act_NUM_ACTIONS] =
"" // Potrzebujesz tlumaczenie
#elif L==9 // pt
"" // Precisa de tradução
#endif
,
[ActSetUp] =
#if L==1 // ca
"Instal lar"
#elif L==2 // de
"Einrichten"
#elif L==3 // en
"Set up"
#elif L==4 // es
"Instalar"
#elif L==5 // fr
"Installer"
#elif L==6 // gn
"Instalar" // Okoteve traducción
#elif L==7 // it
"Setup"
#elif L==8 // pl
"Set up"
#elif L==9 // pt
"Instalar"
#endif
,
[ActReqRemOldCrs] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
"Request the total removal of old courses"
#elif L==4 // es
""
#elif L==5 // fr
"" // Besoin de traduction
#elif L==6 // gn
"" // Okoteve traducción
#elif L==7 // it
"" // Bisogno di traduzione
#elif L==8 // pl
"" // Potrzebujesz tlumaczenie
#elif L==9 // pt
"" // Precisa de tradução
#endif
,
[ActRemOldCrs] =
#if L==1 // ca
"" // Necessita traducció
#elif L==2 // de
"" // Need Übersetzung
#elif L==3 // en
"Remove completely old courses"
#elif L==4 // es
""
#elif L==5 // fr
"" // Besoin de traduction
#elif L==6 // gn
"" // Okoteve traducción
#elif L==7 // it
"" // Bisogno di traduzione
#elif L==8 // pl
"" // Potrzebujesz tlumaczenie
#elif L==9 // pt
"" // Precisa de tradução
#endif
,
[ActSeeCtyInf] =