This commit is contained in:
pezcurrel 2020-01-27 17:26:37 +01:00
parent aa75b75277
commit a37efa448e
10 changed files with 785 additions and 84 deletions

109
web/admin/imgs/carica.svg Normal file
View file

@ -0,0 +1,109 @@
<?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://creativecommons.org/ns#"
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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
viewBox="0 0 5.8208332 5.8208335"
version="1.1"
id="svg8"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="carica.svg">
<defs
id="defs2">
<marker
style="overflow:visible"
id="DistanceEnd"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="DistanceEnd"
inkscape:isstock="true">
<g
id="g2301"
style="stroke:#000000;stroke-opacity:1;fill:#ffffff;fill-opacity:1">
<path
style="fill:#ffffff;stroke:#000000;stroke-width:1.15;stroke-linecap:square;stroke-opacity:1;fill-opacity:1"
d="M 0,0 L -2,0"
id="path2316" />
<path
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-opacity:1;fill-opacity:1"
d="M 0,0 L -13,4 L -9,0 -13,-4 L 0,0 z "
id="path2312" />
<path
style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-opacity:1;fill-opacity:1"
d="M 0,-4 L 0,40"
id="path2314" />
</g>
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="45.254834"
inkscape:cx="4.2945831"
inkscape:cy="10.274574"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:snap-bbox="true"
inkscape:snap-page="true"
inkscape:bbox-nodes="true"
inkscape:window-width="3840"
inkscape:window-height="2037"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Livello 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-291.17916)">
<rect
style="opacity:1;vector-effect:none;fill:#3088d4;fill-opacity:1;stroke:none;stroke-width:0.37526914;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect861"
width="5.8208332"
height="5.8208265"
x="-1.110223e-16"
y="291.17917"
ry="0.78214943" />
<rect
style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect4521"
width="1.5827367"
height="4.2721367"
x="2.0668476"
y="292.41998"
ry="0.4608396" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.23701932;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 2.9026735,291.48711 c -0.051063,0.002 -0.097206,0.0195 -0.1224421,0.0473 l -1.87802118,2.0275 c -0.0584756,0.0623 0.0135137,0.1407 0.12934038,0.14082 h 3.7577667 c 0.1157814,-1.3e-4 0.1877481,-0.0784 0.1293403,-0.14078 l -1.8780211,-2.0275 c -0.027985,-0.0307 -0.08135,-0.049 -0.137963,-0.0473 z"
id="path4529"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5 KiB

BIN
web/admin/imgs/loading.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

110
web/admin/imgs/salva.svg Normal file
View file

@ -0,0 +1,110 @@
<?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://creativecommons.org/ns#"
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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
viewBox="0 0 5.8208332 5.8208335"
version="1.1"
id="svg8"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="salva.svg">
<defs
id="defs2">
<marker
style="overflow:visible"
id="DistanceEnd"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="DistanceEnd"
inkscape:isstock="true">
<g
id="g2301"
style="stroke:#000000;stroke-opacity:1;fill:#ffffff;fill-opacity:1">
<path
style="fill:#ffffff;stroke:#000000;stroke-width:1.15;stroke-linecap:square;stroke-opacity:1;fill-opacity:1"
d="M 0,0 L -2,0"
id="path2316" />
<path
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-opacity:1;fill-opacity:1"
d="M 0,0 L -13,4 L -9,0 -13,-4 L 0,0 z "
id="path2312" />
<path
style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-opacity:1;fill-opacity:1"
d="M 0,-4 L 0,40"
id="path2314" />
</g>
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="45.254834"
inkscape:cx="4.2945831"
inkscape:cy="10.274574"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:snap-bbox="true"
inkscape:snap-page="true"
inkscape:bbox-nodes="true"
inkscape:window-width="3840"
inkscape:window-height="2037"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Livello 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-291.17916)">
<rect
style="opacity:1;vector-effect:none;fill:#3088d4;fill-opacity:1;stroke:none;stroke-width:0.37526914;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect861"
width="5.8208332"
height="5.8208265"
x="-1.110223e-16"
y="291.17917"
ry="0.78214943" />
<rect
style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect4521"
width="1.5827367"
height="4.2721367"
x="2.0668476"
y="-295.75919"
ry="0.4608396"
transform="scale(1,-1)" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.23701932;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 2.9026735,296.69205 c -0.051063,-0.002 -0.097206,-0.0195 -0.1224421,-0.0473 l -1.87802118,-2.0275 c -0.0584756,-0.0623 0.0135137,-0.1407 0.12934038,-0.14082 h 3.7577667 c 0.1157814,1.3e-4 0.1877481,0.0784 0.1293403,0.14078 l -1.8780211,2.0275 c -0.027985,0.0307 -0.08135,0.049 -0.137963,0.0473 z"
id="path4529"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 5 KiB

View file

@ -0,0 +1,132 @@
<?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://creativecommons.org/ns#"
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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="22"
height="22"
viewBox="0 0 5.8208332 5.8208335"
version="1.1"
id="svg8"
inkscape:version="0.92.4 5da689c313, 2019-01-14"
sodipodi:docname="salvacome.svg">
<defs
id="defs2">
<marker
style="overflow:visible"
id="DistanceEnd"
refX="0.0"
refY="0.0"
orient="auto"
inkscape:stockid="DistanceEnd"
inkscape:isstock="true">
<g
id="g2301"
style="stroke:#000000;stroke-opacity:1;fill:#ffffff;fill-opacity:1">
<path
style="fill:#ffffff;stroke:#000000;stroke-width:1.15;stroke-linecap:square;stroke-opacity:1;fill-opacity:1"
d="M 0,0 L -2,0"
id="path2316" />
<path
style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-opacity:1;fill-opacity:1"
d="M 0,0 L -13,4 L -9,0 -13,-4 L 0,0 z "
id="path2312" />
<path
style="fill:#ffffff;stroke:#000000;stroke-width:1;stroke-linecap:square;stroke-opacity:1;fill-opacity:1"
d="M 0,-4 L 0,40"
id="path2314" />
</g>
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="128"
inkscape:cx="15.505395"
inkscape:cy="14.672595"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="false"
units="px"
inkscape:snap-bbox="true"
inkscape:snap-page="true"
inkscape:bbox-nodes="true"
inkscape:window-width="3840"
inkscape:window-height="2037"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Livello 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-291.17916)">
<rect
style="opacity:1;vector-effect:none;fill:#3088d4;fill-opacity:1;stroke:none;stroke-width:0.37526914;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect861"
width="5.8208332"
height="5.8208265"
x="-1.110223e-16"
y="291.17917"
ry="0.78214943" />
<rect
style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458332;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal"
id="rect4521"
width="1.5827367"
height="4.2721367"
x="2.0668476"
y="-295.75919"
ry="0.4608396"
transform="scale(1,-1)" />
<path
style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;font-variant-ligatures:normal;font-variant-position:normal;font-variant-caps:normal;font-variant-numeric:normal;font-variant-alternates:normal;font-feature-settings:normal;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;text-decoration-style:solid;text-decoration-color:#000000;letter-spacing:normal;word-spacing:normal;text-transform:none;writing-mode:lr-tb;direction:ltr;text-orientation:mixed;dominant-baseline:auto;baseline-shift:baseline;text-anchor:start;white-space:normal;shape-padding:0;clip-rule:nonzero;display:inline;overflow:visible;visibility:visible;opacity:1;isolation:auto;mix-blend-mode:normal;color-interpolation:sRGB;color-interpolation-filters:linearRGB;solid-color:#000000;solid-opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.23701932;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal;color-rendering:auto;image-rendering:auto;shape-rendering:auto;text-rendering:auto;enable-background:accumulate"
d="m 2.9026735,296.69205 c -0.051063,-0.002 -0.097206,-0.0195 -0.1224421,-0.0473 l -1.87802118,-2.0275 c -0.0584756,-0.0623 0.0135137,-0.1407 0.12934038,-0.14082 h 3.7577667 c 0.1157814,1.3e-4 0.1877481,0.0784 0.1293403,0.14078 l -1.8780211,2.0275 c -0.027985,0.0307 -0.08135,0.049 -0.137963,0.0473 z"
id="path4529"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccc" />
<g
id="g836"
transform="matrix(0.45915813,0,0,0.45915611,5.6734009,158.05177)"
style="fill:#ffffff">
<rect
ry="0.5610584"
y="290.60983"
x="-2.5985863"
height="4.4471259"
width="1.1221168"
id="rect817"
style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458335;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
<rect
transform="rotate(90)"
ry="0.5610584"
y="-0.18603504"
x="292.27234"
height="4.4471259"
width="1.1221168"
id="rect817-9"
style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.26458335;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6 KiB

View file

@ -146,9 +146,9 @@ $cols=array(
'Languages.NameIT'=>array('field'=>'Languages%.NameIT','name'=>'Una lingua dichiarata','type'=>'joini','join'=>array('InstLangs AS InstLangs% ON InstLangs%.InstID=Instances.ID','Languages AS Languages% ON Languages%.ID=InstLangs%.LangID'),'subtype'=>'text','ord'=>true,'ordname'=>'Lingue dichiarate','ordjoin'=>array('InstLangs AS OrdInstLangs ON OrdInstLangs.InstID=Instances.ID','Languages AS OrdLanguages ON OrdLanguages.ID=OrdInstLangs.LangID'),'ordselmore'=>'GROUP_CONCAT(OrdLanguages.NameIT ORDER BY OrdInstLangs.Pos ASC SEPARATOR \'\') AS xOrdLangs','ordby'=>'xOrdLangs'),
'InstLangs.LangID.First'=>array('field'=>'InstLangs%.LangID','name'=>'Lingua primaria dichiarata ⮞','type'=>'join','join'=>array('InstLangs AS InstLangs% ON InstLangs%.InstID=Instances.ID AND InstLangs%.Pos=1'),'ord'=>false),
'InstLangs.LangID.First'=>array('field'=>'InstLangs.LangID','name'=>'Lingua primaria dichiarata ⮞','type'=>'join','join'=>array('InstLangs AS InstLangs ON InstLangs.InstID=Instances.ID AND InstLangs.Pos=1'),'ord'=>false),
'Languages.NameIT.First'=>array('field'=>'Languages%.NameIT','name'=>'Lingua primaria dichiarata','type'=>'joini','join'=>array('InstLangs AS InstLangs% ON InstLangs%.InstID=Instances.ID AND InstLangs%.Pos=1','Languages AS Languages% ON Languages%.ID=InstLangs%.LangID'),'subtype'=>'text','ord'=>false),
'Languages.NameIT.First'=>array('field'=>'Languages.NameIT','name'=>'Lingua primaria dichiarata','type'=>'joini','join'=>array('InstLangs AS InstLangs ON InstLangs.InstID=Instances.ID AND InstLangs.Pos=1','Languages AS Languages ON Languages.ID=InstLangs.LangID'),'subtype'=>'text','ord'=>false),
//--------------------------------
@ -158,9 +158,9 @@ $cols=array(
'OurLanguages.NameIT'=>array('field'=>'OurLanguages%.NameIT','name'=>'Una lingua impostata da noi','type'=>'joini','join'=>array('InstOurLangs AS InstOurLangs% ON InstOurLangs%.InstID=Instances.ID','Languages AS OurLanguages% ON OurLanguages%.ID=InstOurLangs%.OurLangID'),'subtype'=>'text','ord'=>true,'ordname'=>'Lingue impostate da noi','ordjoin'=>array('InstOurLangs AS OrdInstOurLangs ON OrdInstOurLangs.InstID=Instances.ID','Languages AS OrdOurLanguages ON OrdOurLanguages.ID=OrdInstOurLangs.OurLangID'),'ordselmore'=>'GROUP_CONCAT(OrdOurLanguages.NameIT ORDER BY OrdInstOurLangs.Pos ASC SEPARATOR \'\') AS xOrdOurLangs','ordby'=>'xOrdOurLangs'),
'InstOurLangs.OurLangID.First'=>array('field'=>'InstOurLangs%.OurLangID','name'=>'Lingua primaria impostata da noi ⮞','type'=>'join','join'=>array('InstOurLangs AS InstOurLangs% ON InstOurLangs%.InstID=Instances.ID AND InstOurLangs%.Pos=1'),'ord'=>false),
'InstOurLangs.OurLangID.First'=>array('field'=>'InstOurLangs.OurLangID','name'=>'Lingua primaria impostata da noi ⮞','type'=>'join','join'=>array('InstOurLangs AS InstOurLangs ON InstOurLangs.InstID=Instances.ID AND InstOurLangs.Pos=1'),'ord'=>false),
'OurLanguages.NameIT.First'=>array('field'=>'OurLanguages%.NameIT','name'=>'Lingua primaria impostata da noi','type'=>'joini','join'=>array('InstOurLangs AS InstOurLangs% ON InstOurLangs%.InstID=Instances.ID AND InstOurLangs%.Pos=1','Languages AS OurLanguages% ON OurLanguages%.ID=InstOurLangs%.OurLangID'),'subtype'=>'text','ord'=>false),
'OurLanguages.NameIT.First'=>array('field'=>'OurLanguages.NameIT','name'=>'Lingua primaria impostata da noi','type'=>'joini','join'=>array('InstOurLangs AS InstOurLangs ON InstOurLangs.InstID=Instances.ID AND InstOurLangs.Pos=1','Languages AS OurLanguages ON OurLanguages.ID=InstOurLangs.OurLangID'),'subtype'=>'text','ord'=>false),
//--------------------------------
@ -170,9 +170,9 @@ $cols=array(
'Financing.Type'=>array('field'=>'Financing%.Type','name'=>'Una modalità di finanziamento','type'=>'joini','join'=>array('InstFinancing AS InstFinancing% ON InstFinancing%.InstID=Instances.ID','Financing AS Financing% ON Financing%.ID=InstFinancing%.FinID'),'subtype'=>'text','ord'=>true,'ordname'=>'Modalità di finanziamento','ordjoin'=>array('InstFinancing AS OrdInstFinancing ON OrdInstFinancing.InstID=Instances.ID','Financing AS OrdFinancing ON OrdFinancing.ID=OrdInstFinancing.FinID'),'ordselmore'=>'GROUP_CONCAT(OrdFinancing.Type ORDER BY OrdInstFinancing.Pos ASC SEPARATOR \'\') AS xOrdFinancing','ordby'=>'xOrdFinancing'),
'InstFinancing.FinID.First'=>array('field'=>'InstFinancing%.FinID','name'=>'Modalità di finanziamento primaria ⮞','type'=>'join','join'=>array('InstFinancing AS InstFinancing% ON InstFinancing%.InstID=Instances.ID AND InstFinancing%.Pos=1'),'ord'=>false),
'InstFinancing.FinID.First'=>array('field'=>'InstFinancing.FinID','name'=>'Modalità di finanziamento primaria ⮞','type'=>'join','join'=>array('InstFinancing AS InstFinancing ON InstFinancing.InstID=Instances.ID AND InstFinancing.Pos=1'),'ord'=>false),
'Financing.Type.First'=>array('field'=>'Financing%.Type','name'=>'Modalità di finanziamento primaria','type'=>'joini','join'=>array('InstFinancing AS InstFinancing% ON InstFinancing%.InstID=Instances.ID AND InstFinancing%.Pos=1','Financing AS Financing% ON Financing%.ID=InstFinancing%.FinID'),'subtype'=>'text','ord'=>false),
'Financing.Type.First'=>array('field'=>'Financing.Type','name'=>'Modalità di finanziamento primaria','type'=>'joini','join'=>array('InstFinancing AS InstFinancing ON InstFinancing.InstID=Instances.ID AND InstFinancing.Pos=1','Financing AS Financing ON Financing.ID=InstFinancing.FinID'),'subtype'=>'text','ord'=>false),
//--------------------------------
@ -182,9 +182,9 @@ $cols=array(
'Policies.Name'=>array('field'=>'Policies%.Name','name'=>'Una restrizione sui contenuti','type'=>'joini','join'=>array('InstPolicies AS InstPolicies% ON InstPolicies%.InstID=Instances.ID','Policies AS Policies% ON Policies%.ID=InstPolicies%.PolID'),'subtype'=>'text','ord'=>true,'ordname'=>'Restrizioni sui contenuti','ordjoin'=>array('InstPolicies AS OrdInstPolicies ON OrdInstPolicies.InstID=Instances.ID','Policies AS OrdPolicies ON OrdPolicies.ID=OrdInstPolicies.PolID'),'ordselmore'=>'GROUP_CONCAT(OrdPolicies.Name ORDER BY OrdInstPolicies.Pos ASC SEPARATOR \'\') AS xOrdPolicies','ordby'=>'xOrdPolicies'),
'InstPolicies.PolID.First'=>array('field'=>'InstPolicies%.PolID','name'=>'Restrizione sui contenuti primaria ⮞','type'=>'join','join'=>array('InstPolicies AS InstPolicies% ON InstPolicies%.InstID=Instances.ID AND InstPolicies%.Pos=1'),'ord'=>false),
'InstPolicies.PolID.First'=>array('field'=>'InstPolicies.PolID','name'=>'Restrizione sui contenuti primaria ⮞','type'=>'join','join'=>array('InstPolicies AS InstPolicies ON InstPolicies.InstID=Instances.ID AND InstPolicies.Pos=1'),'ord'=>false),
'Policies.Name.First'=>array('field'=>'Policies%.Name','name'=>'Restrizione sui contenuti primaria','type'=>'joini','join'=>array('InstPolicies AS InstPolicies% ON InstPolicies%.InstID=Instances.ID AND InstPolicies%.Pos=1','Policies AS Policies% ON Policies%.ID=InstPolicies%.PolID'),'subtype'=>'text','ord'=>false),
'Policies.Name.First'=>array('field'=>'Policies.Name','name'=>'Restrizione sui contenuti primaria','type'=>'joini','join'=>array('InstPolicies AS InstPolicies ON InstPolicies.InstID=Instances.ID AND InstPolicies.Pos=1','Policies AS Policies ON Policies.ID=InstPolicies.PolID'),'subtype'=>'text','ord'=>false),
//--------------------------------
@ -194,9 +194,9 @@ $cols=array(
'Tags.Name'=>array('field'=>'Tags%.Name','name'=>'Una tag','type'=>'joini','join'=>array('InstTags AS InstTags% ON InstTags%.InstID=Instances.ID','Tags AS Tags% ON Tags%.ID=InstTags%.TagID'),'subtype'=>'text','ord'=>true,'ordname'=>'Tags','ordjoin'=>array('InstTags AS OrdInstTags ON OrdInstTags.InstID=Instances.ID','Tags AS OrdTags ON OrdTags.ID=OrdInstTags.TagID'),'ordselmore'=>'GROUP_CONCAT(OrdTags.Name ORDER BY OrdInstTags.Pos ASC SEPARATOR \'\') AS xOrdTags','ordby'=>'xOrdTags'),
'InstTags.TagID.First'=>array('field'=>'InstTags%.TagID','name'=>'Tag primaria ⮞','type'=>'join','join'=>array('InstTags AS InstTags% ON InstTags%.InstID=Instances.ID AND InstTags%.Pos=1'),'ord'=>false),
'InstTags.TagID.First'=>array('field'=>'InstTags.TagID','name'=>'Tag primaria ⮞','type'=>'join','join'=>array('InstTags AS InstTags ON InstTags.InstID=Instances.ID AND InstTags.Pos=1'),'ord'=>false),
'Tags.Name.First'=>array('field'=>'Tags%.Name','name'=>'Tag primaria','type'=>'joini','join'=>array('InstTags AS InstTags% ON InstTags%.InstID=Instances.ID AND InstTags%.Pos=1','Tags AS Tags% ON Tags%.ID=InstTags%.TagID'),'subtype'=>'text','ord'=>false),
'Tags.Name.First'=>array('field'=>'Tags.Name','name'=>'Tag primaria','type'=>'joini','join'=>array('InstTags AS InstTags ON InstTags.InstID=Instances.ID AND InstTags.Pos=1','Tags AS Tags ON Tags.ID=InstTags.TagID'),'subtype'=>'text','ord'=>false),
//--------------------------------
@ -566,11 +566,19 @@ if (mysqli_num_rows($res)<1) {
$out.='<div class="bigtabfoot"></div>';
}
$filtpresopts='<option value="null"></option>'.N;
$res=mysqli_query($link,'SELECT * FROM FilterPresets')
$presid=0;
if (array_key_exists('presets',$_POST) && preg_match('/^[0-9]+$/',$_POST['presets'])===1)
$presid=$_POST['presets'];
$presopts='<option value="null"></option>'.N;
$res=mysqli_query($link,'SELECT * FROM Presets ORDER BY Name ASC')
or muoribene(mysqli_error($link),true);
while ($row=mysqli_fetch_assoc($res))
$filtpresopts.='<option value="'.$row['ID'].'">'.hspech($row['Name']).'</option>'.N;
while ($row=mysqli_fetch_assoc($res)) {
if ($row['ID']!=$presid)
$presopts.='<option value="'.$row['ID'].'">'.hspech($row['Name']).'</option>'.N;
else
$presopts.='<option value="'.$row['ID'].'" selected>'.hspech($row['Name']).'</option>'.N;
}
mysqli_close($link);
@ -735,7 +743,8 @@ function popusels(index,valselval) {
pupwait(false);
};
xhr.onerror=function() {
alert('Request failed');
pupwait(false);
alert('La richiesta è fallita.');
};
} else {
alert('Attenziò: non so che farmene del tipo "'+type+'": diglielo, al programmatore.');
@ -1003,51 +1012,130 @@ function pupwait(on) {
}
//function setrow(index,openparv,fieldselv,condselv,valueselv,valueinpv,closeparv,andorv)
function loadfiltpres() {
pupwait(true);
truncfil();
let formdata=new FormData();
formdata.append('act','loadfil');
formdata.append('fid',document.getElementById('filtpres').value);
let xhr=new XMLHttpRequest();
xhr.open('POST','loadsavepres.php');
xhr.responseType='json';
xhr.send(formdata);
xhr.onload=function() {
let jarr=xhr.response;
for (i=0; i<jarr.length; i++) {
console.log(jarr[i]);
addrow(i+1,false);
}
synctai();
for (i=0; i<jarr.length; i++) {
setrow(i+1, jarr[i]['OpenPar'], jarr[i]['Field'], jarr[i]['Cond'], jarr[i]['ValueSel'], jarr[i]['ValueInp'], jarr[i]['ClosePar'], jarr[i]['AndOr']);
}
if (jarr.length>0)
document.getElementById('filbut').value='Rimuovi tutti i criteri di ricerca';
pupwait(false);
};
xhr.onerror=function() {
alert('Request failed');
};
function loadpres() {
let pres=document.getElementById('presets');
if (pres.value!='null') {
pupwait(true);
let formdata=new FormData();
formdata.append('act','load');
formdata.append('pid',pres.value);
let xhr=new XMLHttpRequest();
xhr.open('POST','loadsavepres.php');
xhr.responseType='json';
xhr.send(formdata);
xhr.onload=function() {
let jarr=xhr.response;
truncfil();
for (i=0; i<jarr['f'].length; i++) {
console.log(jarr['f'][i]);
addrow(i+1,false);
}
synctai();
for (i=0; i<jarr['f'].length; i++) {
setrow(i+1, jarr['f'][i]['OpenPar'], jarr['f'][i]['Field'], jarr['f'][i]['Cond'], jarr['f'][i]['ValueSel'], jarr['f'][i]['ValueInp'], jarr['f'][i]['ClosePar'], jarr['f'][i]['AndOr']);
}
if (jarr['f'].length>0)
document.getElementById('filbut').value='Rimuovi tutti i criteri di ricerca';
truncord();
for (i=0; i<jarr['o'].length; i++) {
console.log(jarr['o'][i]);
ordaddrow(i+1,false);
}
synctoi();
for (i=0; i<jarr['o'].length; i++) {
ordsetrow(i+1, jarr['o'][i]['Field'], jarr['o'][i]['Sort']);
}
if (jarr['o'].length>0)
document.getElementById('ordbut').value='Rimuovi tutti i criteri di ordinamento';
pupwait(false);
};
xhr.onerror=function() {
pupwait(false);
alert('La richiesta è fallita.');
};
} else {
alerta('<p>Non hai selezionato alcun preset ;)</p>');
}
}
function savefiltpres() {
function savepres(txt,asnew) {
pupwait(true);
let pres=document.getElementById('presets');
let formdata=new FormData(document.forms.f);
formdata.append('act','savefil');
formdata.append('fid',document.getElementById('filtpres').value);
formdata.append('act','save');
formdata.append('txt',txt);
if (!asnew)
formdata.append('pid',pres.value);
let xhr=new XMLHttpRequest();
xhr.open('POST','loadsavepres.php');
xhr.responseType='json';
xhr.send(formdata);
xhr.onload=function() {
console.log(xhr.response);
if (!asnew) {
pres.options[pres.selectedIndex].text=txt;
} else {
let jarr=xhr.response;
pres.add(new Option(txt,jarr['pid']));
pres.selectedIndex=pres.options.length-1;
}
pupwait(false);
};
xhr.onerror=function() {
alert('Request failed');
pupwait(false);
alert('La richiesta è fallita.');
};
}
function pupsavepres(asnew) {
var pres=document.getElementById('presets');
if (pres.value!='null' || asnew) {
var pup=document.getElementById('popup'), inpup=document.getElementById('inpopup');
var prestext=pres.options[pres.selectedIndex].text;
var pre='<p>Se vuoi puoi modificare il nome del preset che stai per sovrascrivere</p>';
if (asnew) pre='<p>Dai un nuovo nome al nuovo preset che stai per salvare</p>';
inpup.innerHTML='<div class="loadsavepresbub">'+pre+'<input type="text" maxlength="256" value="'+prestext.replace(/"/g,'&quot;')+'" id="presname"><input type="button" value="Salva" onClick="ckpresname('+asnew+');"><input type="button" value="Annulla" onClick="pupoff();"><div id="ckmsg"></div></div>';
pup.style.display='table';
} else {
alerta('<p>Non hai selezionato alcun preset ;)</p>');
}
}
function ckpresname(asnew) {
var pres=document.getElementById('presets');
var presname=document.getElementById('presname').value;
var ckmsg=document.getElementById('ckmsg');
var ok=true;
var i;
if (presname.trim=='') {
presname='';
ok=false;
ckmsg.innerHTML='Non puoi salvare un preset senza nome';
}
if (!asnew) {
for (i=0; i<pres.options.length; i++) {
if (i!=pres.selectedIndex && presname==pres.options[i].text) {
ok=false;
ckmsg.innerHTML='<p>Esiste già un altro preset con questo nome</p>';
break;
}
}
} else {
for (i=0; i<pres.options.length; i++) {
if (presname==pres.options[i].text) {
ok=false;
ckmsg.innerHTML='<p>Esiste già un preset con questo nome</p>';
break;
}
}
}
if (ok) {
pupoff();
savepres(presname,asnew);
}
}
function pupoff() {
var pup=document.getElementById('popup'), inpup=document.getElementById('inpopup');
inpup.innerHTML='<div id="popupcont">...</div>';
pup.style.display='none';
}
//-->
</script>
@ -1073,11 +1161,13 @@ function savefiltpres() {
</div>
</div>
<!--
<div id="footer">
<form action="edinst.php" name="addinst" method="post">
<table><tr><td>Aggiungi unistanza:</td><td><input type="text" name="URI" maxlength="512"></td><td><input type="button" value="Vai" onClick="ckaif();"></td></tr></table>
</form>
</div>
-->
<div id="debug">
<?php echo($dbg); ?>
@ -1088,10 +1178,10 @@ function savefiltpres() {
<table id="planciafil" class="planciatab">
<tr><td colspan="8"><input type="button" id="filbut" value="Aggiungi criteri di ricerca" class="ctrlbut" onclick="manfil();"></td></tr>
</table>
<table class="planciatab"><tr><td style="width:1%">Preset&nbsp;di&nbsp;ricerca:&nbsp;</td><td style="width:96%"><select name="filtpres" id="filtpres" class="preset" onchange="loadfiltpres();"><?php echo($filtpresopts); ?></select></td><td style="width:1%"><img src="imgs/salva.svg" class="lilbut" onclick="savefiltpres(false);" title="Salva i criteri impostati nel preset selezionato sovrascrivendolo"></td><td style="width:1%"><img src="imgs/salvacome.svg" class="lilbut" onclick="savefiltpres(true);" title="Salva i criteri impostati come nuovo preset ..."></td><td style="width:1%"><img src="imgs/minus.svg" class="lilbut" onclick="remfiltpres();" title="Elimina il preset selezionato"></td></tr></table>
<table id="planciaord" class="planciatab">
<tr><td colspan="4"><input type="button" id="ordbut" value="Aggiungi criteri di ordinamento" class="ctrlbut" onclick="manord();"></td></tr>
</table>
<table class="planciatab"><tr><td style="width:1%">Preset: </td><td style="width:95%"><select name="presets" id="presets" class="presets"><?php echo($presopts); ?></select></td><td style="width:1%"><img src="imgs/carica.svg" class="lilbut" onclick="loadpres();" title="Carica i criteri dal preset selezionato"></td><td style="width:1%"><img src="imgs/salva.svg" class="lilbut" onclick="pupsavepres(false);" title="Salva i criteri impostati nel preset selezionato sovrascrivendolo"></td><td style="width:1%"><img src="imgs/salvacome.svg" class="lilbut" onclick="pupsavepres(true);" title="Salva i criteri impostati come nuovo preset ..."></td><td style="width:1%"><img src="imgs/minus.svg" class="lilbut" onclick="rempres();" title="Elimina il preset selezionato"></td></tr></table>
<table id="planciaothers" class="planciatab">
<tr><td><input type="button" id="subbut" value="Applica" class="ctrlbut" onclick="ckf();"></td></tr>
</table>

117
web/admin/loadsavepres.php Normal file
View file

@ -0,0 +1,117 @@
<?php
header('Content-Type: application/json; charset=utf-8');
require('include/glob.php');
require('include/muoribene.php');
require('include/sessionstart.php');
require('include/myconn.php');
use function mysqli_real_escape_string as myesc;
if (array_key_exists('act',$_POST)) {
if ($_POST['act']=='load' && array_key_exists('pid',$_POST) && preg_match('/^[0-9]+$/',$_POST['pid'])===1) {
$res=mysqli_query($link,'SELECT * FROM PresFiltConds WHERE PresID='.$_POST['pid'].' ORDER BY Pos ASC')
or muoribene(mysqli_error($link),true);
$buf=array('f'=>array(),'o'=>array());
while ($row=mysqli_fetch_assoc($res))
$buf['f'][]=$row;
$res=mysqli_query($link,'SELECT * FROM PresOrdConds WHERE PresID='.$_POST['pid'].' ORDER BY Pos ASC')
or muoribene(mysqli_error($link),true);
while ($row=mysqli_fetch_assoc($res))
$buf['o'][]=$row;
echo(json_encode($buf));
} elseif ($_POST['act']=='save' && array_key_exists('txt',$_POST)) {
$fi=-1;
$oi=-1;
$fqueries=array(array());
$oqueries=array(array());
foreach ($_POST as $key=>$val) {
if (preg_match('/^openpar-\d+$/',$key)===1) {
$fi++;
if ($val=='null')
$val='NULL';
else
$val="'".myesc($link,$val)."'";
$fqueries[$fi]['OpenPar']=$val;
}
if (preg_match('/^fieldsel-\d+$/',$key)===1) {
$fqueries[$fi]['Field']="'".myesc($link,$val)."'";
}
if (preg_match('/^condsel-\d+$/',$key)===1) {
$fqueries[$fi]['Cond']="'".myesc($link,$val)."'";
}
if (preg_match('/^valuesel-\d+$/',$key)===1) {
$fqueries[$fi]['ValueSel']="'".myesc($link,$val)."'";
}
if (preg_match('/^valueinp-\d+$/',$key)===1) {
$fqueries[$fi]['ValueInp']="'".myesc($link,$val)."'";
}
if (preg_match('/^closepar-\d+$/',$key)===1) {
if ($val=='null')
$val='NULL';
else
$val="'".myesc($link,$val)."'";
$fqueries[$fi]['ClosePar']=$val;
}
if (preg_match('/^andor-\d+$/',$key)===1) {
$fqueries[$fi]['AndOr']="'".myesc($link,$val)."'";
}
if (preg_match('/^ordfieldsel-\d+$/',$key)===1) {
$oi++;
$oqueries[$oi]['Field']="'".myesc($link,$val)."'";
}
if (preg_match('/^ascdesc-\d+$/',$key)===1) {
$oqueries[$oi]['Sort']="'".myesc($link,$val)."'";
}
}
// print_r($fqueries).N;
// print_r($oqueries).N;
if (array_key_exists('pid',$_POST) && preg_match('/^[0-9]+$/',$_POST['pid'])===1) {
$pid=$_POST['pid'];
mysqli_query($link,'DELETE FROM PresFiltConds WHERE PresID='.$pid)
or muoribene(mysqli_error($link),true);
mysqli_query($link,'DELETE FROM PresOrdConds WHERE PresID='.$pid)
or muoribene(mysqli_error($link),true);
mysqli_query($link,'UPDATE Presets SET Name=\''.myesc($link,$_POST['txt']).'\' WHERE ID='.$pid)
or muoribene(mysqli_error($link),true);
} else {
mysqli_query($link,'INSERT INTO Presets SET Name=\''.myesc($link,$_POST['txt']).'\'')
or muoribene(mysqli_error($link),true);
$pid=mysqli_insert_id($link);
echo('{ "pid": '.$pid.' }'.N);
}
$fi=0;
foreach ($fqueries as $row) {
$fi++;
$query='INSERT INTO PresFiltConds SET PresID='.$pid.', OpenPar='.$row['OpenPar'].', Field='.$row['Field'].', Cond='.$row['Cond'].', ';
if (array_key_exists('ValueSel',$row))
$query.='ValueSel='.$row['ValueSel'].', ';
if (array_key_exists('ValueInp',$row))
$query.='ValueInp='.$row['ValueInp'].', ';
$query.='ClosePar='.$row['ClosePar'];
if (array_key_exists('AndOr',$row))
$query.=', AndOr='.$row['AndOr'];
$query.=', Pos='.$fi;
// echo($query.N);
mysqli_query($link,$query)
or muoribene(mysqli_error($link),true);
}
$oi=0;
foreach ($oqueries as $row) {
$oi++;
$query='INSERT INTO PresOrdConds SET PresID='.$pid.', Field='.$row['Field'].', Sort='.$row['Sort'].', Pos='.$oi;
// echo($query.N);
mysqli_query($link,$query)
or muoribene(mysqli_error($link),true);
}
} elseif ($_POST['act']=='remove' && array_key_exists('pid',$_POST) && preg_match('/^[0-9]+$/',$_POST['pid'])===1) {
echo(json_encode($_POST));
}
}
mysqli_close($link);
exit(0);
?>

View file

@ -254,6 +254,25 @@ input {
margin-left: auto;
margin-right: auto;
}
#inpopup .loadsavepresbub {
background-color: black;
color: #78b1e2;
padding: 16px;
border-radius: 20px;
width: 320px;
margin-left: auto;
margin-right: auto;
}
#inpopup .loadsavepresbub input {
font-size: 8pt;
height: 24px;
}
#inpopup .loadsavepresbub #ckmsg p {
color: red;
margin: 0;
padding: 0;
margin-top: 16px;
}
#popupcont {
position: relative;
margin-left: auto;
@ -420,11 +439,11 @@ input {
width: 120px;
}
/* questi li definisco e li applico solo per avere qualcosa su cui fare "querySelectorAll" */
#plancia .openpar, #plancia .fieldsel, #plancia .condsel, #plancia .valuesel, #plancia .valueinp, #plancia .andor, #plancia .closepar, #plancia .ordfieldsel, #plancia .ascdesc, #plancia .preset { min-width: 100%; }
#plancia .openpar, #plancia .fieldsel, #plancia .condsel, #plancia .valuesel, #plancia .valueinp, #plancia .andor, #plancia .closepar, #plancia .ordfieldsel, #plancia .ascdesc, #plancia .presets { min-width: 100%; }
#plancia .valuesel:disabled, #plancia .valueinp:disabled {
opacity: 0.5;
}
#plancia .preset {
#plancia .presets {
max-width: 400px;
}
#plancia .minus, #plancia .plus, #plancia .lilbut {

View file

@ -3,9 +3,9 @@
-- https://www.phpmyadmin.net/
--
-- Host: localhost
-- Creato il: Gen 11, 2020 alle 19:59
-- Creato il: Gen 27, 2020 alle 17:23
-- Versione del server: 10.4.11-MariaDB
-- Versione PHP: 7.4.1
-- Versione PHP: 7.4.2
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
@ -75,7 +75,8 @@ CREATE TABLE `InstActivity` (
`Week` int(10) UNSIGNED NOT NULL,
`Statuses` int(10) UNSIGNED NOT NULL,
`Logins` int(10) UNSIGNED NOT NULL,
`Registrations` int(10) UNSIGNED NOT NULL
`Registrations` int(10) UNSIGNED NOT NULL,
`Pos` tinyint(3) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- --------------------------------------------------------
@ -96,7 +97,7 @@ CREATE TABLE `Instances` (
`ShortDesc` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`LongDesc` text COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`OurDesc` varchar(8192) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`PlaceID` int(10) UNSIGNED DEFAULT NULL,
`LocalityID` int(10) UNSIGNED DEFAULT NULL,
`Email` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`Software` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`Version` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
@ -222,6 +223,18 @@ CREATE TABLE `Languages` (
-- --------------------------------------------------------
--
-- Struttura della tabella `Localities`
--
CREATE TABLE `Localities` (
`ID` int(10) UNSIGNED NOT NULL,
`Locality` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`ProvinceID` int(10) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- --------------------------------------------------------
--
-- Struttura della tabella `Notifications`
--
@ -236,20 +249,6 @@ CREATE TABLE `Notifications` (
-- --------------------------------------------------------
--
-- Struttura della tabella `Places`
--
CREATE TABLE `Places` (
`ID` int(10) UNSIGNED NOT NULL,
`State` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`Region` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`Province` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`Locality` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- --------------------------------------------------------
--
-- Struttura della tabella `Platforms`
--
@ -272,6 +271,72 @@ CREATE TABLE `Policies` (
-- --------------------------------------------------------
--
-- Struttura della tabella `Presets`
--
CREATE TABLE `Presets` (
`ID` int(10) UNSIGNED NOT NULL,
`Name` varchar(256) COLLATE utf8mb4_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- --------------------------------------------------------
--
-- Struttura della tabella `PresFiltConds`
--
CREATE TABLE `PresFiltConds` (
`PresID` int(10) UNSIGNED NOT NULL,
`OpenPar` varchar(3) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`Field` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
`Cond` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,
`ValueSel` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`ValueInp` varchar(256) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`ClosePar` varchar(3) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`AndOr` varchar(3) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`Pos` tinyint(3) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- --------------------------------------------------------
--
-- Struttura della tabella `PresOrdConds`
--
CREATE TABLE `PresOrdConds` (
`PresID` int(10) UNSIGNED NOT NULL,
`Field` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
`Sort` varchar(4) COLLATE utf8mb4_unicode_ci NOT NULL,
`Pos` tinyint(3) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- --------------------------------------------------------
--
-- Struttura della tabella `Provinces`
--
CREATE TABLE `Provinces` (
`ID` int(10) UNSIGNED NOT NULL,
`Province` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
`RegionID` int(10) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- --------------------------------------------------------
--
-- Struttura della tabella `Regions`
--
CREATE TABLE `Regions` (
`ID` int(10) UNSIGNED NOT NULL,
`Region` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL,
`StateID` int(10) UNSIGNED NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- --------------------------------------------------------
--
-- Struttura della tabella `StartNodes`
--
@ -283,6 +348,17 @@ CREATE TABLE `StartNodes` (
-- --------------------------------------------------------
--
-- Struttura della tabella `States`
--
CREATE TABLE `States` (
`ID` int(10) UNSIGNED NOT NULL,
`State` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
-- --------------------------------------------------------
--
-- Struttura della tabella `Tags`
--
@ -338,15 +414,15 @@ ALTER TABLE `Languages`
ADD PRIMARY KEY (`ID`);
--
-- Indici per le tabelle `Notifications`
-- Indici per le tabelle `Localities`
--
ALTER TABLE `Notifications`
ALTER TABLE `Localities`
ADD PRIMARY KEY (`ID`);
--
-- Indici per le tabelle `Places`
-- Indici per le tabelle `Notifications`
--
ALTER TABLE `Places`
ALTER TABLE `Notifications`
ADD PRIMARY KEY (`ID`);
--
@ -361,12 +437,36 @@ ALTER TABLE `Platforms`
ALTER TABLE `Policies`
ADD PRIMARY KEY (`ID`);
--
-- Indici per le tabelle `Presets`
--
ALTER TABLE `Presets`
ADD PRIMARY KEY (`ID`);
--
-- Indici per le tabelle `Provinces`
--
ALTER TABLE `Provinces`
ADD PRIMARY KEY (`ID`);
--
-- Indici per le tabelle `Regions`
--
ALTER TABLE `Regions`
ADD PRIMARY KEY (`ID`);
--
-- Indici per le tabelle `StartNodes`
--
ALTER TABLE `StartNodes`
ADD PRIMARY KEY (`ID`);
--
-- Indici per le tabelle `States`
--
ALTER TABLE `States`
ADD PRIMARY KEY (`ID`);
--
-- Indici per le tabelle `Tags`
--
@ -413,18 +513,18 @@ ALTER TABLE `Instances`
ALTER TABLE `Languages`
MODIFY `ID` int(11) UNSIGNED NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT per la tabella `Localities`
--
ALTER TABLE `Localities`
MODIFY `ID` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT per la tabella `Notifications`
--
ALTER TABLE `Notifications`
MODIFY `ID` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT per la tabella `Places`
--
ALTER TABLE `Places`
MODIFY `ID` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT per la tabella `Platforms`
--
@ -437,12 +537,36 @@ ALTER TABLE `Platforms`
ALTER TABLE `Policies`
MODIFY `ID` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT per la tabella `Presets`
--
ALTER TABLE `Presets`
MODIFY `ID` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT per la tabella `Provinces`
--
ALTER TABLE `Provinces`
MODIFY `ID` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT per la tabella `Regions`
--
ALTER TABLE `Regions`
MODIFY `ID` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT per la tabella `StartNodes`
--
ALTER TABLE `StartNodes`
MODIFY `ID` smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT per la tabella `States`
--
ALTER TABLE `States`
MODIFY `ID` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;
--
-- AUTO_INCREMENT per la tabella `Tags`
--

View file

@ -92,20 +92,20 @@
<section>
<h3><a name="Introduction" id="Introduction" class="anchor"></a>Introduzione</h3>
<p>Mastodon è una innovativa piattaforma di microblogging open source le cui funzionalità possono ricordare Twitter o Tumblr. Lo sviluppo inizia nel 2016 da parte dello sviluppatore Eugen Rochko e da allora Mastodon ha continuato a crescere grazie a sempre più comunità che lo adottano in cerca di un ambiente social indipendente, slegato da grandi compagnie e libero da censura.</p>
<p>Mastodon è una innovativa piattaforma di microblogging open source le cui funzionalità possono ricordare Twitter o Tumblr. Eugen Rochko ne inizia lo sviluppo nel 2016 e da allora Mastodon continua ad attrarre nuovi utenti e comunità in cerca di un ambiente social indipendente, slegato da grandi compagnie e libero da censura.</p>
<p>Ma Mastodon non è un clone di Twitter: per concetto, struttura e funzionalità è qualcosa di totalmente diverso e molto più interessante!</p>
<p>Questo sito è unintroduzione a funzionalità e concetti base che permettono di comprendere e apprezzare appieno il funzionamento di Mastodon. È concepito come una serie di capitoli indipendenti selezionabili da menù (clicca su “Guida” per visualizzare lindice dei capitoli), ma può essere tranquillamente letto come un testo unico. Contiene inoltre un <a href="instances/it">elenco di Istanze Mastodon</a> suggerite tra cui scegliere quella che meglio si addice alle tue esigenze.</p>
<p>Questo sito è un'introduzione a funzionalità e concetti base che permettono di comprendere ed apprezzare appieno il funzionamento di Mastodon. È concepito come una serie di capitoli indipendenti selezionabili da menù (clicca su "Guida" per visualizzare l'indice dei capitoli), ma può esser tranquillamente letto come un testo unico. Contiene inoltre un <a href="instances/it">elenco di Istanze Mastodon</a> suggerite tra cui scegliere quella che meglio si addice alle tue esigenze.</p>
</section>
<section class="lev1sect">
<h2><a name="WhatIsMastodon" id="WhatIsMastodon" class="anchor"></a>Cosè mastodon?</h2>
<h2><a name="WhatIsMastodon" id="WhatIsMastodon" class="anchor"></a>Cosè Mastodon?</h2>
</section>
<section>
<h3><a name="MastodonIsNotASocial" id="MastodonIsNotASocial" class="anchor"></a>Mastodon non è <em>un</em> social network</h3>
<p>Non cè <em>un</em> social network chiamato Mastodon! Ci sono, invece, migliaia di social network indipendenti chiamati Istanze Mastodon.</p>
<p>Ogni Istanza ha il proprio server indipendente, la sua homepage, comunità, regole e persone responsabili dellamministrazione e moderazione.</p>
<p>Da ogni Istanza puoi interagire con persone che si trovano sulle altre Istanze. Funziona un po come le-mail (si può spedire une-mail da Gmail a un indirizzo Yahoo, giusto?). Questo perché tutte le Istanze possono connettersi tra loro.</p>
<p>Da ogni Istanza puoi interagire con persone che si trovano sulle altre Istanze. Funziona un po come le-mail (si può spedire une-mail da Gmail a un indirizzo Yahoo, giusto? Stessa cosa!). Questo perché tutte le Istanze possono connettersi tra loro.</p>
<p>Chi amministra unIstanza può silenziare o bloccare utenti della sua Istanza ma anche quelli di Istanze diverse e questi blocchi avranno però effetto solo sullIstanza che amministra. Può anche decidere di bloccare completamente unaltra Istanza (per esempio perché permette la pubblicazione di contenuti offensivi o perché non è moderata adeguatamente).</p>
</section>
@ -118,9 +118,9 @@
<section>
<h3><a name="WhoOwnsMastodon" id="WhoOwnsMastodon" class="anchor"></a>Di chi è Mastodon?</h3>
<p>Del mondo intero! Poiché Mastodon è una piattaforma libera, gratuita e open source, chiunque può usarla, modificarla e, volendo, installarla su un proprio server per creare unIstanza. Chi ne porta avanti lo sviluppo non ha alcun copyright sul software che realizza e mette a disposizione gratuitamente. Questo è un classico esempio della filosofia alla base del software libero: realizzare e condividere senza alcuna restrizione strumenti software aperti affinché chiunque possa utilizzarli come preferisce e collaborare al loro miglioramento.</p>
<p><img src="<?php echo($prepath); ?>imgs/WhoOwnsMastodon.jpg" class="image" alt="Una ragazza con le braccia aperte davanti a un cielo azzurro. Foto di Jess Hall." title="Foto di Jess Hall."></p>
<p>I tuoi dati personali e i contenuti che pubblichi si trovano materialmente sul server dellIstanza su cui ti registri. Questo significa che oltre a te solo chi amministra la tua Istanza ha la possibilità di accedervi, esattamente come su qualsiasi piattaforma commerciale e non.</p>
<p>Di tutti! Poiché Mastodon è una piattaforma libera, gratuita e open source, chiunque può usarla, modificarla e, volendo, installarla su un proprio server per creare unIstanza. Chi ne porta avanti lo sviluppo non ha alcun copyright sul software che realizza e mette a disposizione gratuitamente. Questo è un classico esempio della filosofia alla base del software libero: realizzare e condividere senza alcuna restrizione strumenti software aperti affinché chiunque possa utilizzarli come preferisce e collaborare al loro miglioramento.</p>
<p><img src="<?php echo($prepath); ?>imgs/WhoOwnsMastodon.png" class="image" alt="Quattro mani che si stringono a vicenda."></p>
<p>I tuoi dati personali e i contenuti che pubblichi si trovano materialmente sul server dellIstanza su cui ti registri. Questo significa che oltre a te, solo gli amministratori dellIstanza su cui sei registrato hanno la possibilità di accedervi, esattamente come su qualsiasi piattaforma commerciale e non.</p>
</section>
<section class="lev1sect">

Binary file not shown.

After

Width:  |  Height:  |  Size: 839 KiB