Projet

Général

Profil

Révision 54800558

Voir les différences:

App_Resources/Android/src/main/AndroidManifest.xml
1 1
<?xml version="1.0" encoding="utf-8"?>
2 2
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 3
	package="__PACKAGE__"
4
	android:versionCode="10007"
5
	android:versionName="1.0.7">
4
	android:versionCode="10008"
5
	android:versionName="1.0.8">
6 6

  
7 7
	<supports-screens
8 8
		android:smallScreens="true"
......
27 27
			android:name="com.tns.NativeScriptActivity"
28 28
			android:label="@string/title_activity_kimera"
29 29
			android:configChanges="keyboard|keyboardHidden|orientation|screenSize|smallestScreenSize|screenLayout|locale|uiMode"
30
			android:windowSoftInputMode="stateHidden | adjustPan"
30 31
			android:theme="@style/LaunchScreenTheme">
31 32

  
32 33
			<meta-data android:name="SET_THEME_ON_LAUNCH" android:resource="@style/AppTheme" />
src/app/about/about.component.html
19 19
    <GridLayout class="page__content">
20 20
        <StackLayout row="0" orientation="vertical" padding="10">
21 21
            <TextView row="1" editable="false" text="ClicAlbum est une application issue d'une vieille idée d'AbulÉdu (nom de code à l'époque : ouistiti) qui permet à un enseignant de créer une sorte d'album photo collaboratif ..." class="label"></TextView>
22
            <TextView row="2" editable="false" text="C'est une application libre (GNU/GPLv3) et un service libre (affero GPL) développé et hébergé par la société CAP-REL et l'association AbulÉdu-FR." class="label"></TextView>
22
            <TextView row="2" editable="false" text="C'est une application libre (GNU/GPLv3) et un service libre (affero GPL) développé par la société CAP-REL et hébergé par l'association AbulÉdu-FR." class="label"></TextView>
23 23
            <TextView row="3" editable="false" text="Vous êtes invités à contribuer au code source et à améliorer cette application." class="label"></TextView>
24
            <TextView row="4" editable="false" text="https://clicalbum.abuledu.net" class="label"></TextView>
24
            <TextView row="4" editable="false" text="Vous pouvez consulter les conditions générales d'utilisations et les engagements de l'association depuis le site de l'application https://clicalbum.abuledu.net" class="label"></TextView>
25 25
        </StackLayout>
26 26
    </GridLayout>
27 27
</ScrollView>
src/app/app.component.html
6 6
<RadSideDrawer [drawerTransition]="sideDrawerTransition">
7 7
    <GridLayout tkDrawerContent rows="auto, *" class="nt-drawer__content">
8 8
        <StackLayout row="0" class="nt-drawer__header">
9
            <Image class="nt-drawer__header-image fas t-36" src="font://&#xf2bd;"></Image>
9
            <!-- <Image class="nt-drawer__header-image fas t-36" src="font://&#xf2bd;"></Image> -->
10
            <Image class="nt-drawer__header-image fas t-36" src="~/images/logo.png"></Image>
10 11
            <Label class="nt-drawer__header-brand" [text]='pseudo'></Label>
11 12
            <Label class="nt-drawer__header-footnote" [text]='email'></Label>
12 13
            <Label class="nt-drawer__header-footnote" text='ClicAlbum version : {{appVersion}}'></Label>
......
19 20
                    <Label col="1" text="Application" class="p-r-10"></Label>
20 21
                </GridLayout>
21 22

  
22
                <GridLayout columns="auto, *" class="nt-drawer__list-item" [class.-selected]="isComponentSelected('/about')" (tap)="onNavItemTap('/about')">
23
                    <Label col="0" text="&#xf129;" class="nt-icon fas"></Label>
24
                    <Label col="1" text="À propos" class="p-r-10"></Label>
25
                </GridLayout>
26 23

  
27 24
                <!-- <GridLayout columns="auto, *" class="nt-drawer__list-item" [class.-selected]="isComponentSelected('/browse')" (tap)="onNavItemTap('/browse')">
28 25
                    <Label col="0" text="&#xf1ea;" class="nt-icon far"></Label>
......
51 48
                    <Label col="1" text="Configuration" class="p-r-10"></Label>
52 49
                </GridLayout>
53 50

  
51
                <StackLayout class="hr"></StackLayout>
52

  
53
                <GridLayout columns="auto, *" class="nt-drawer__list-item" [class.-selected]="isComponentSelected('/upgrade')" (tap)="onNavItemTap('/upgrade')">
54
                    <Label col="0" text="&#xf019;" class="nt-icon fas"></Label>
55
                    <Label col="1" text="Mise à jour" class="p-r-10"></Label>
56
                </GridLayout>
57

  
58
                <GridLayout columns="auto, *" class="nt-drawer__list-item" [class.-selected]="isComponentSelected('/about')" (tap)="onNavItemTap('/about')">
59
                    <Label col="0" text="&#xf129;" class="nt-icon fas"></Label>
60
                    <Label col="1" text="À propos" class="p-r-10"></Label>
61
                </GridLayout>
62

  
54 63
            </StackLayout>
55 64
        </ScrollView>
56 65
    </GridLayout>
src/app/app.component.ts
33 33
        this.email = getString("email", "");
34 34
        getJSON("https://clicalbum.abuledu.net/api.php").then((r: any) => {
35 35
            console.log("Verification de la version : ", r.APPversion);
36

  
36 37
            console.log("Version locale : ", this.appVersion);
37 38
            setString("serverJSON", JSON.stringify(r));
38 39
            if (this.versionCompare(r.APPversion, this.appVersion) > 0) {
40
                console.log("On propose la mise à jour ...");
39 41
                //On affiche la page de mise à jour
40 42
                this._activatedUrl = "/upgrade";
41 43
                this.routerExtensions.navigate(["/upgrade"]);
44
                return;
42 45
            }
43 46
        }, (e) => {
44 47
            console.log("getJSON Error", e);
src/app/home/home.component.html
11 11
    -->
12 12
    <ActionItem icon="res://menu" android:visibility="collapsed" (tap)="onDrawerButtonTap()" ios.position="left">
13 13
    </ActionItem>
14
    <Label text="ClicAlbum"></Label>
14
    <Label text="AbulÉdu ClicAlbum"></Label>
15 15
</ActionBar>
16 16

  
17 17
<ScrollView>
18
    <GridLayout class="page__content" columns="*">
19
        <StackLayout row="0" orientation="vertical" padding="10">
20
            <Label text="1. Prenez une photo ou choisissez-en une de votre galerie" class="label" textAlignment="left" autocorrect="true"></Label>
21
            <GridLayout columns="*,*">
22
                <Button id="btnTakePicture" col="0" text="Appareil photo" (tap)='onTakePictureTap($event)' padding="10" class="-primary"></Button>
23
                <Button id="btnGetPictureFromRoll" col="1" text="Galerie" (tap)='onGetPictureFromRollTap($event)' padding="10" class="-primary"></Button>
24
            </GridLayout>
25
            <Label text="2. Donnez un nom à cette photo" class="label" textAlignment="left" autocorrect="true"></Label>
26
            <TextField id="label" hint="" secure="false" maxLength="50">
27
            </TextField>
28
            <Label text="2.bis Un petit descriptif si vous voulez" class="legende" textAlignment="left" autocorrect="true"></Label>
29
            <TextView id="legende" hint="" autocorrect="true" maxLength="512" secure="false" [text]="legende">
30
            </TextView>
31
            <Label text="3. Entrez le nom de l'album collaboratif" class="label" textAlignment="left"></Label>
32
            <TextField id="album" [text]="album" hint="" secure="false" maxLength="50" (blur)="onBlur($event)">
33
            </TextField>
34
            <Label text="4. Entrez le mot de passe de l'album (si nécessaire)" class="label" textAlignment="left"></Label>
35
            <TextField id="albumPass" [text]="albumPass" hint="" secure="false" maxLength="50" (blur)="onBlur($event)">
36
            </TextField>
37
            <Label text="5. Envoyez la photo sur le serveur" class="label" textAlignment="left"></Label>
38
            <Button id="btnSendPicture" text="Envoyer la photo" (tap)='onSendPictureTap($event)' padding="10" class="-primary" [isEnabled]="hasPicture"></Button>
39
            <Label text="6. Regardez l'album sur https://{{serverURI}}/{{album}}" class="label" textAlignment="left"></Label>
40
            <Button id="btnGotoWeb" text="Aller sur https://{{serverURI}}/{{album}}" (tap)='onGotoWebTap($event)' padding="10" class="-primary"></Button>
41
            <ActivityIndicator id="busyIndicator" [busy]="isBusy" (busyChange)="onBusyChanged($event)"></ActivityIndicator>
42
            <Image [src]="cameraImage" stretch="aspectFit" margin="10"></Image>
43
        </StackLayout>
44
    </GridLayout>
18
    <StackLayout>
19
        <GridLayout class="page__content" columns="*">
20
            <StackLayout row="0" orientation="vertical" padding="10">
21
                <Label text="1. Prenez une photo ou choisissez-en une de votre galerie" class="label" textAlignment="left" autocorrect="true"></Label>
22
                <GridLayout columns="*,*">
23
                    <Button id="btnTakePicture" col="0" text="Appareil photo" (tap)='onTakePictureTap($event)' padding="10" class="-primary"></Button>
24
                    <Button id="btnGetPictureFromRoll" col="1" text="Galerie" (tap)='onGetPictureFromRollTap($event)' padding="10" class="-primary"></Button>
25
                </GridLayout>
26
                <Label text="2. Donnez un nom à cette photo" class="label" textAlignment="left" autocorrect="true"></Label>
27
                <TextField id="label" hint="" secure="false" maxLength="50">
28
                </TextField>
29
                <Label text="2.bis Un petit descriptif si vous voulez" class="legende" textAlignment="left" autocorrect="true"></Label>
30
                <TextView id="legende" hint="" autocorrect="true" maxLength="512" secure="false" [text]="legende">
31
                </TextView>
32
                <Label text="3. Entrez le nom de l'album collaboratif" class="label" textAlignment="left"></Label>
33
                <TextField id="album" [text]="album" hint="" secure="false" maxLength="50" (blur)="onBlur($event)">
34
                </TextField>
35
                <Label text="4. Entrez le mot de passe de l'album (si nécessaire)" class="label" textAlignment="left"></Label>
36
                <TextField id="albumPass" [text]="albumPass" hint="" secure="false" maxLength="50" (blur)="onBlur($event)">
37
                </TextField>
38
                <Label text="5. Envoyez la photo sur le serveur" class="label" textAlignment="left"></Label>
39
                <Button id="btnSendPicture" text="Envoyer la photo" (tap)='onSendPictureTap($event)' padding="10" class="-primary" [isEnabled]="hasPicture"></Button>
40
                <Label text="6. Regardez l'album sur https://{{serverURI}}/{{album}}" class="label" textAlignment="left"></Label>
41
                <Button id="btnGotoWeb" text="Aller sur https://{{serverURI}}/{{album}}" (tap)='onGotoWebTap($event)' padding="10" class="-primary"></Button>
42
                <ActivityIndicator id="busyIndicator" [busy]="isBusy" (busyChange)="onBusyChanged($event)"></ActivityIndicator>
43
                <Image [src]="cameraImage" stretch="aspectFit" margin="10"></Image>
44
            </StackLayout>
45
        </GridLayout>
46
    </StackLayout>
45 47
</ScrollView>
src/app/settings/settings.component.html
11 11
    -->
12 12
    <ActionItem icon="res://menu" android:visibility="collapsed" (tap)="onDrawerButtonTap()" ios.position="left">
13 13
    </ActionItem>
14
    <Label text="Configuration"></Label>
14
    <Label text="AbulÉdu ClicAlbum - Configuration"></Label>
15 15
</ActionBar>
16 16

  
17 17
<ScrollView>
src/app/settings/settings.component.ts
48 48
        this.serverURI = getString("serverURI", "");
49 49

  
50 50
        //On recupere les infos serveurs et en particulier la liste des serveurs disponibles
51
        getJSON("https://clicalbum.abuledu.net/api.php").then((r: any) => {
52
            console.log("getJSON : ", r);
53
            this.serverJSON = r;
54
            let i = 0;
55
            r.servers.forEach(element => {
56
                console.log(" json element : ", element.name);
57
                let option = new RadioOption(element.label, element.uri);
58
                this.radioOptions.push(option);
59
                if (i == 0) {
60
                    console.log(" premier element on le checked : ", element.label);
61
                    this.serverLabel = element.label;
62
                    this.serverName = element.label;
63
                    this.serverURI = element.uri;
64
                    option.selected = true;
65
                }
66
                i++;
67
            });
68
        }, (e) => {
69
            console.log("getJSON Error", e);
51
        this.serverJSON = JSON.parse(getString("serverJSON"));
52

  
53
        let i = 0;
54
        this.serverJSON['servers'].forEach(element => {
55
            console.log(" JSON element : ", element.name);
56
            let option = new RadioOption(element.label, element.uri);
57
            this.radioOptions.push(option);
58
            if (i == 0) {
59
                console.log(" Premier element on le checked : ", element.label);
60
                this.serverLabel = element.label;
61
                this.serverName = element.label;
62
                this.serverURI = element.uri;
63
                option.selected = true;
64
            }
65
            i++;
70 66
        });
71 67
    }
72 68

  
src/app/teachers/teachers.component.html
11 11
    -->
12 12
    <ActionItem icon="res://menu" android:visibility="collapsed" (tap)="onDrawerButtonTap()" ios.position="left">
13 13
    </ActionItem>
14
    <Label text="Enseignants"></Label>
14
    <Label text="AbulÉdu ClicAlbum - Enseignants"></Label>
15 15
</ActionBar>
16 16

  
17 17
<ScrollView>
18
    <GridLayout class="page__content">
19
        <StackLayout row="0" orientation="vertical" padding="5">
20
            <TextView row="1" editable="false" text="Vous pouvez créer votre album de publication. Le mot de passe de gestion de l'album vous permettra de modifier le contenu d'un album (suppression d'un fichier par exemple). Et le mot de passe (facultatif) d'accès à l'album en lecture permet de sécuriser un album dans lequel vous auriez des photos des enfants par exemple..." class="label"></TextView>
21
            <Label row="2" text="Nom de l'album à créer (sans accents ni caractères spéciaux)" class="label font-weight-bold m-b-5"></Label>
22
            <TextField row="3" [text]='album' id="album" keyboardType="email" hint="" secure="false" returnKeyType="next" autocorrect="false" maxLength="20" class="-primary" (blur)="onBlur($event)"></TextField>
23
            <Label row="4" text="Entrez un mot de passe d'accès à l'album" class="label font-weight-bold m-b-5"></Label>
24
            <TextField row="5" [text]='albumPass' id="albumPass" keyboardType="email" hint="" secure="false" returnKeyType="next" autocorrect="false" maxLength="50" class="-primary" (blur)="onBlur($event)"></TextField>
25
            <Label row="6" text="Entrez un mot de passe de gestion de l'album" class="label font-weight-bold m-b-5"></Label>
26
            <TextField row="7" [text]='albumPassAdmin' id="albumPassAdmin" keyboardType="email" hint="" secure="false" returnKeyType="send" autocorrect="false" maxLength="50" class="-primary" (blur)="onBlur($event)"></TextField>
27
            <Button row="8" id="btnSave" text="Enregistrer" (tap)='onSaveTap($event)' padding="10" class="-primary"></Button>
28
        </StackLayout>
29
    </GridLayout>
18
    <StackLayout>
19
        <GridLayout class="page__content">
20
            <StackLayout row="0" orientation="vertical" padding="5">
21
                <TextView row="1" editable="false" text="Vous pouvez créer votre album de publication. Le mot de passe de gestion de l'album vous permettra de modifier le contenu d'un album (suppression d'un fichier par exemple). Et le mot de passe (facultatif) d'accès à l'album en lecture permet de sécuriser un album dans lequel vous auriez des photos des enfants par exemple..." class="label"></TextView>
22
                <Label row="2" text="Nom de l'album à créer (sans accents ni caractères spéciaux)" class="label font-weight-bold m-b-5"></Label>
23
                <TextField row="3" [text]='album' id="album" keyboardType="email" hint="" secure="false" returnKeyType="next" autocorrect="false" maxLength="20" class="-primary" (blur)="onBlur($event)"></TextField>
24
                <Label row="4" text="Entrez un mot de passe d'accès à l'album" class="label font-weight-bold m-b-5"></Label>
25
                <TextField row="5" [text]='albumPass' id="albumPass" keyboardType="email" hint="" secure="false" returnKeyType="next" autocorrect="false" maxLength="50" class="-primary" (blur)="onBlur($event)"></TextField>
26
                <Label row="6" text="Entrez un mot de passe de gestion de l'album" class="label font-weight-bold m-b-5"></Label>
27
                <TextField row="7" [text]='albumPassAdmin' id="albumPassAdmin" keyboardType="email" hint="" secure="false" returnKeyType="send" autocorrect="false" maxLength="50" class="-primary" (blur)="onBlur($event)"></TextField>
28
                <Button row="8" id="btnSave" text="Enregistrer" (tap)='onSaveTap($event)' padding="10" class="-primary"></Button>
29
            </StackLayout>
30
        </GridLayout>
31
    </StackLayout>
30 32
</ScrollView>
src/app/upgrade/upgrade.component.html
11 11
    -->
12 12
    <ActionItem icon="res://menu" android:visibility="collapsed" (tap)="onDrawerButtonTap()" ios.position="left">
13 13
    </ActionItem>
14
    <Label text="Mise à jour"></Label>
14
    <Label text="AbulÉdu ClicAlbum - Mise à jour"></Label>
15 15
</ActionBar>
16 16

  
17 17
<ScrollView>
18
    <GridLayout class="page__content" columns="*">
19
        <StackLayout row="0" orientation="vertical" padding="10">
20
            <TextView row="1" editable="false" text="Une nouvelle version de l'application ClicAlbum est disponible, veuillez cliquer sur le bouton ci-dessous pour vous rendre sur le magasin d'application ou allez sur le site web clicalbum.abuledu.net pour télécharger le fichier (utilisateurs avancés)." class="label"></TextView>
21
            <Button row="3" id="btnUpgrade" text="Mettre à jour" (tap)='onUpgradeTap($event)' padding="10" class="-primary"></Button>
22
            <Button row="4" id="btnWeb" text="Aller sur ClicAlbum.abuledu.net" (tap)='onWebsiteTap($event)' padding="10" class="-primary"></Button>
23
        </StackLayout>
24
    </GridLayout>
18
    <StackLayout>
19
        <GridLayout class="page__content">
20
            <StackLayout row="0" orientation="vertical" padding="10">
21
                <TextView row="1" editable="false" text="Une nouvelle version de l'application ClicAlbum est disponible, veuillez cliquer sur le bouton ci-dessous pour vous rendre sur le magasin d'application ou allez sur le site web clicalbum.abuledu.net pour télécharger le fichier (utilisateurs avancés)." class="label"></TextView>
22
                <Button row="3" id="btnUpgrade" text="Mettre à jour" (tap)='onUpgradeTap($event)' padding="10" class="-primary"></Button>
23
                <Button row="4" id="btnWeb" text="Aller sur ClicAlbum.abuledu.net" (tap)='onWebsiteTap($event)' padding="10" class="-primary"></Button>
24
                <TextView row="6" editable="false" text="Note: si vous ne voulez pas faire de mise à jour pour l'instant vous pouvez ouvrir le menu en haut à gauche et choisir d'aller sur l'Application ..." class="label"></TextView>
25
                <TextView row="8" editable="false" [text]='changelog' class="label"></TextView>
26
            </StackLayout>
27
        </GridLayout>
28
    </StackLayout>
25 29
</ScrollView>
src/app/upgrade/upgrade.component.ts
2 2
import { RadSideDrawer } from "nativescript-ui-sidedrawer";
3 3
import * as app from "tns-core-modules/application";
4 4
import { isAndroid, isIOS, device, screen } from "tns-core-modules/platform";
5
import { getString, setString, hasKey, remove, clear } from "tns-core-modules/application-settings";
5 6

  
6 7
@Component({
7 8
    selector: "Upgrade",
8 9
    templateUrl: "./upgrade.component.html"
9 10
})
10 11
export class UpgradeComponent implements OnInit {
12
    private changelog: string;
13
    private message: string;
14
    private upgradeuri: string;
15
    public serverJSON: JSON;
11 16

  
12 17
    constructor() {
13 18
        // Use the component constructor to inject providers.
19
        this.changelog = "";
20
        this.message = "";
21
        this.upgradeuri = "";
14 22
    }
15 23

  
16 24
    ngOnInit(): void {
17 25
        // Init your component properties here.
26
        this.serverJSON = JSON.parse(getString("serverJSON"));
27
        this.changelog = this.serverJSON['APPchangelog'];
18 28
    }
19 29

  
20 30
    onDrawerButtonTap(): void {

Formats disponibles : Unified diff

Redmine Appliance - Powered by TurnKey Linux