diff --git a/doc/About.txt b/doc/About.txt index 42d3423ae75345fe97472b7f8625a6d8217fe4ba..28cf7e036dceed902bf043a853faab657930c798 100644 --- a/doc/About.txt +++ b/doc/About.txt @@ -4,4 +4,11 @@ About ===== -SFLphone is a mega phone. We like it. +SFLphone is meant to be a robust enterprise-class desktop phone. It is design +with a hundred-calls-a-day receptionist in mind. It can work for you, too. + +SFLphone is released under the *GNU General Public License* (GPLv2 and up). + +SFLphone is being developed by the global community, and maintained by +http://www.savoirfairelinux.com[Savoir-faire Linux], a Montreal, +Quebec, Canada-based Linux consulting company. diff --git a/doc/Build.txt b/doc/Build.txt index a255127afab377f1119381ac8d5b335c3d4da5a7..cde1429c162e843981b74041f8077e4fa9e48a63 100644 --- a/doc/Build.txt +++ b/doc/Build.txt @@ -2,16 +2,30 @@ Build notes ------------ - +=========== sflphoned -~~~~~~~~~ +--------- Instructions to build `sflphoned`: +dbus-c++-bindings +~~~~~~~~~~~~~~~~~ + +Go to `libs/dbus` and run: + +------------------------- +./autogen.sh +./configure --prefix=/usr +make +sudo make install +------------------------- + +NOTE: If you have `colorgcc`, configure will *fail* on `libeXpat`. Issue an `unset CC` and `unset CXX` to build the dbus bindings. + + libiax2 -^^^^^^^ +~~~~~~~ Go to `libs/libiax2` and run: @@ -22,11 +36,12 @@ sudo make install ------------------------- the daemon -^^^^^^^^^^ +~~~~~~~~~~ Then, go to the root of the repository, and run: --------------------------------------------------- +autoreconf --install ./configure --prefix=/usr (or whatever your prefix) make sudo make install @@ -34,13 +49,20 @@ sudo make install sflphone-qt -~~~~~~~~~~~ +----------- -`sflphone-qt` gets built with sflphoned, for now. +`sflphone-qt` is *deprecated* and should not be built anymore. sflphone-gtk -~~~~~~~~~~~~ +------------ -Merging of `sflphone-gtk` to come. +Compile `sflphone-gtk` by running: +------------------------- +cd sflphone-gtk +gnome-autogen.sh +./configure --prefix=/usr +make +sudo make install +------------------------- diff --git a/doc/Dependencies.txt b/doc/Dependencies.txt index e3b5bba071034450df4699faabca36291b8433a9..40934b2b63b1ee95680ce78078286baa25bbbbda 100644 --- a/doc/Dependencies.txt +++ b/doc/Dependencies.txt @@ -15,6 +15,20 @@ libosip2 2.2.2 http://www.gnu.org/software/osip/[website] portaudio v19 http://www.portaudio.com/[website] portaudio C++ binds. http://www.portaudio.com/archives/pa_snapshot_v19.tar.gz[archive] libsamplerate 0.1.2 http://www.mega-nerd.com/SRC/[website] +dbus-c++-1 0.5 See Build notes. +libexpat1 1.95.8 Packaged with your favorite distribution -------------------------------------------------------------------------------------- + + +Dependencies to compile SFLphone-GTK +------------------------------------ + +`--------------------`----------`----------------------------------------------------- +Program Version Notes +-------------------------------------------------------------------------------------- +libgtk2.0 2.2 +dbus-glib 0.35 +-------------------------------------------------------------------------------------- + diff --git a/doc/Downloads.txt b/doc/Downloads.txt new file mode 100644 index 0000000000000000000000000000000000000000..1446e013bf6a0c406469e7281e52bec1c88651e8 --- /dev/null +++ b/doc/Downloads.txt @@ -0,0 +1,27 @@ +// AsciiDoc + + +Downloads +========= + + +Latest release: + +[grid="all"] +`--------------------`----------`--------------------------- +Package Type Link +------------------------------------------------------------ +*SFLphone 0.7.2* Sources http://www.sflphone.org/releases/sflphone-0.7.2.tar.gz[Download] sflfile:Build.txt[Build notes] + FC6-RPM http://www.sflphone.org/releases/packages/rpm-fc6/sflphone-0.7.2-1.i386.rpm[Download] + RC6-SRPM http://www.sflphone.org/releases/packages/rpm-fc6/devel/sflphone-0.7.2-1.src.rpm[Download] +*SFLphone 0.7.0* Source http://www.sflphone.org/releases/sflphone-0.7.0.tar.gz[Download] + FC4-RPM http://www.sflphone.org/releases/packages/rpm-fc4/sflphone-0.7.0-1.i386.rpm[Download] + FC4-SRPM http://www.sflphone.org/releases/packages/rpm-fc4/devel/sflphone-0.7.0-1.src.rpm[Download] +------------------------------------------------------------ + + +Latest source code +------------------ + +See the sflfile:Git_Access.txt[repository access] page for the latest source +code. diff --git a/doc/Git_Access.txt b/doc/Git_Access.txt index 5cbde2f57edf3589964f16571b42d09f3dfc4696..0f4dbac2730964e048830c5b82cafaef06175790 100644 --- a/doc/Git_Access.txt +++ b/doc/Git_Access.txt @@ -5,16 +5,14 @@ Git anonymous access -------------------- - -To access SFLphone's git repository (read-only): +To grab source code form SFLphone's git repository: --------------------------------------------- git clone git://sflphone.org/git/sflphone.git cd sflphone -autoreconf --install --------------------------------------------- - +View sflsite:build[build notes] for more details. diff --git a/doc/Goals.txt b/doc/Goals.txt new file mode 100644 index 0000000000000000000000000000000000000000..0741c35849f9e0525a014b22a138a756471c0375 --- /dev/null +++ b/doc/Goals.txt @@ -0,0 +1,6 @@ +//AsciiDoc file + +Goals +----- + +[insert goals] diff --git a/doc/IRC.txt b/doc/IRC.txt new file mode 100644 index 0000000000000000000000000000000000000000..e3bdb583e97f7b1926c01ed505b52b2e49979a20 --- /dev/null +++ b/doc/IRC.txt @@ -0,0 +1,7 @@ +// AsciiDoc file + +IRC +=== + +Server:: `irc.freenode.org` +Channel:: `#sflphone` diff --git a/doc/MailingLists.txt b/doc/MailingLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..f732c91e658ec91945a75392c8d97e3a0dcfb785 --- /dev/null +++ b/doc/MailingLists.txt @@ -0,0 +1,18 @@ +// AsciiDoc file + +Mailing lists +============= + + +sflphone-user +------------- + +http://pouetpouet.list.com[subscribe] http://pouetpouet2.list.com[unsubscribe] +http://pouetpouet6.list.com[archives] + +sflphone-devel +-------------- + +http://pouetpouet3.list.com[subscribe] http://pouetpouet4.list.com[unsubscribe] +http://pouetpouet5.list.com[archives] + diff --git a/doc/News.txt b/doc/News.txt index d97ba467e6de7c7feaf94cf80ade0a16a45f4799..d411dbb59486210181307107541cac89276a20f5 100644 --- a/doc/News.txt +++ b/doc/News.txt @@ -3,5 +3,7 @@ News ==== -* News 1 -* News 2 +September 2007:: A new Gtk+ client is being written, to play with the new D-BUS client/server interface. See sflsite:screenshots[]. Upcoming release 0.8.0. + +July 2007:: *Pierre-Luc Beaudoin* and *Alexandre Bourget* have taken the lead of maintenance and development of SFLphone. + diff --git a/doc/Screenshots.txt b/doc/Screenshots.txt index 49a48f4eeaacca57a007c50917487ce5b12b9272..e8820229e19b76b0267b36305f2b6e797be2bdc6 100644 --- a/doc/Screenshots.txt +++ b/doc/Screenshots.txt @@ -1,11 +1,20 @@ // AsciiDoc file -Screenshots ------------ +Screenshots of upcoming releases +-------------------------------- -.Screenshot de 2007 -sflimage::images/SflphonePOuetpoUEt.png[SFLphone qt3] +This is an upcoming client, to be released with version 0.8. -.Screenshot de SFLphone 0.7 -sflimage::images/sflphone0.7.png[SFLphone 0.7] +.New SFLphone-GTK client (ver. 0.8) +sflimage::images/screenshots/sflphone_gtk_0.8.png[New SFLphone GTK client] + + +Historical screenshots +---------------------- + +.SFLphone 0.6.2 - Brushed metal skin +sflimage::images/screenshots/sflphone_qt3_0.6.2.png[SFLphone 0.6.2] + +.SFLphone 0.6 - Alternate skin +sflimage::images/screenshots/sflphone_metal.png[SFLphone 0.6] diff --git a/doc/asciidoc.conf b/doc/asciidoc.conf index 8461a64c985e3db4df7aed149079b4a783016292..f61b09cd991dbb033c7b6aad00f7ae56edb79ffc 100644 --- a/doc/asciidoc.conf +++ b/doc/asciidoc.conf @@ -16,8 +16,11 @@ # ifdef::backend-xhtml11[] -[sflink-inlinemacro] -<a href="index.php?f={target}.txt">{0?{0}}{0!{target}}</a> +[sflfile-inlinemacro] +<a href="index.php?file={target}">{0?{0}}{0!{target}}</a> + +[sflsite-inlinemacro] +<a href="index.php?mod={target}">{0?{0}}{0!{target}}</a> endif::backend-xhtml11[] # @@ -28,7 +31,7 @@ endif::backend-xhtml11[] <a id="{id}"></a> <div class="content"> <a class="image" href="{link#}"> -<img src="index.php?i={target}" alt="{1={target}}"{1? title="{1}"}{width? width="{width}"}{height? height="{height}"}/> +<img src="index.php?img={target}" alt="{1={target}}"{1? title="{1}"}{width? width="{width}"}{height? height="{height}"}/> {link#}</a> </div> <div class="image-title">{title}</div> diff --git a/doc/doxygen/Doxyfile-server b/doc/doxygen/Doxyfile-server index 9cf8b25b0f82aff1137c82a054269a478c4af252..fa1dc05f77445f8bf4b64369affed46acf031c15 100644 --- a/doc/doxygen/Doxyfile-server +++ b/doc/doxygen/Doxyfile-server @@ -450,7 +450,7 @@ WARN_LOGFILE = # directories like "/usr/src/myproject". Separate the files or directories # with spaces. -INPUT = src src/audio src/zeroconf src/config src/gui/server src/gui +INPUT = src src/audio src/zeroconf src/config src/dbus # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp diff --git a/doc/images/screenshots/sflphone_gtk_0.8.png b/doc/images/screenshots/sflphone_gtk_0.8.png new file mode 100644 index 0000000000000000000000000000000000000000..2a73002ea598fc07facc54ad6bfc95d7fd8247db Binary files /dev/null and b/doc/images/screenshots/sflphone_gtk_0.8.png differ diff --git a/doc/images/screenshots/sflphone_metal.png b/doc/images/screenshots/sflphone_metal.png new file mode 100644 index 0000000000000000000000000000000000000000..ed34ee700257aa068667d3ebf6db1966f7cbd1c9 Binary files /dev/null and b/doc/images/screenshots/sflphone_metal.png differ diff --git a/doc/images/screenshots/sflphone_qt3_0.6.2.png b/doc/images/screenshots/sflphone_qt3_0.6.2.png new file mode 100644 index 0000000000000000000000000000000000000000..3b53ce3190013f36ff1a4dc8bb54b051f51ca865 Binary files /dev/null and b/doc/images/screenshots/sflphone_qt3_0.6.2.png differ diff --git a/sflphone-gtk/src/accountlist.h b/sflphone-gtk/src/accountlist.h index f47c66dd6d9abaa5a2019f693c528e8ce469444b..5408d271d85caaba2ef37d1fab1f8c92ccf4671a 100644 --- a/sflphone-gtk/src/accountlist.h +++ b/sflphone-gtk/src/accountlist.h @@ -28,15 +28,16 @@ #define ACCOUNT_REGISTER "Account.autoregister" #define ACCOUNT_SIP_FULL_NAME "SIP.fullName" +#define ACCOUNT_SIP_HOST_PART "SIP.hostPart" #define ACCOUNT_SIP_USER_PART "SIP.userPart" #define ACCOUNT_SIP_AUTH_NAME "SIP.username" #define ACCOUNT_SIP_PASSWORD "SIP.password" -#define ACCOUNT_SIP_HOST_PART "SIP.hostPart" #define ACCOUNT_SIP_PROXY "SIP.proxy" -#define ACCOUNT_IAX_HOST "IAX.host" -#define ACCOUNT_IAX_USER "IAX.user" -#define ACCOUNT_IAX_PASS "IAX.pass" +#define ACCOUNT_IAX_FULL_NAME "IAX.fullName" +#define ACCOUNT_IAX_HOST "IAX.host" +#define ACCOUNT_IAX_USER "IAX.user" +#define ACCOUNT_IAX_PASS "IAX.pass" typedef enum { diff --git a/sflphone-gtk/src/accountwindow.c b/sflphone-gtk/src/accountwindow.c index 714b7eade3c51ffae7963ec27342301fa7046695..be64d2eaa188c19c72b534765f30a8ee7115cfa9 100644 --- a/sflphone-gtk/src/accountwindow.c +++ b/sflphone-gtk/src/accountwindow.c @@ -27,6 +27,21 @@ /** Local variables */ account_t * currentAccount; +GtkDialog * dialog; +GtkWidget * table; +GtkWidget * label; +GtkWidget * entryID; +GtkWidget * entryName; +GtkWidget * entryProtocol; +GtkWidget * entryEnabled; +GtkWidget * entryRegister; +GtkWidget * entryFullName; +GtkWidget * entryUserPart; +GtkWidget * entryHostPart; +GtkWidget * entryUsername; +GtkWidget * entryPassword; + + /** * Delete an account */ @@ -37,26 +52,64 @@ delete_account( GtkWidget *widget, gpointer data ) }*/ +/* Signal to entryProtocol 'changed' */ +void +change_protocol (account_t * currentAccount) +{ + gchar* proto = (gchar *)gtk_combo_box_get_active_text(GTK_COMBO_BOX(entryProtocol)); + //g_print("Protocol changed\n"); + + // toggle sensitivity for: entryUserPart + if (strcmp(proto, "SIP") == 0) { + gtk_widget_set_sensitive( GTK_WIDGET(entryUserPart), TRUE); + } + else if (strcmp(proto, "IAX") == 0) { + gtk_widget_set_sensitive( GTK_WIDGET(entryUserPart), FALSE); + } + else { + // Should not get here. + g_print("Unknown protocol: %s\n", proto); + } +} + + void show_account_window (account_t * a) { - - GtkDialog * dialog; - GtkWidget * table; - GtkWidget * label; - GtkWidget * entryID; - GtkWidget * entryName; - GtkWidget * entryProtocol; - GtkWidget * entryEnabled; - GtkWidget * entryRegister; - GtkWidget * entryFullName; - GtkWidget * entryUserPart; - GtkWidget * entryHostPart; - GtkWidget * entryUsername; - GtkWidget * entryPassword; guint response; currentAccount = a; + + // Current settings + gchar * curAccountType = NULL; + gchar * curProtocol = NULL; + gchar * curUserPart = NULL; + gchar * curHostPart = NULL; + gchar * curPassword = NULL; + gchar * curUsername = NULL; + gchar * curFullName = NULL; + /* TODO: add curProxy, and add boxes for Proxy support */ + + // Load from SIP/IAX/Unknown ? + curAccountType = g_hash_table_lookup(currentAccount->properties, ACCOUNT_TYPE); + + if (strcmp(curAccountType, "IAX") == 0) { + curHostPart = g_hash_table_lookup(currentAccount->properties, ACCOUNT_IAX_HOST); + curPassword = g_hash_table_lookup(currentAccount->properties, ACCOUNT_IAX_PASS); + curUsername = g_hash_table_lookup(currentAccount->properties, ACCOUNT_IAX_USER); + curFullName = g_hash_table_lookup(currentAccount->properties, ACCOUNT_IAX_FULL_NAME); + } + else if (strcmp(curAccountType, "SIP") == 0) { + curHostPart = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_HOST_PART); + curPassword = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_PASSWORD); + curUsername = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_AUTH_NAME); + curFullName = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_FULL_NAME); + curUserPart = g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_USER_PART); + } + else { + // Default values... + curAccountType = "SIP"; + } dialog = GTK_DIALOG(gtk_dialog_new_with_buttons ("Account settings", GTK_WINDOW(get_main_window()), @@ -108,25 +161,36 @@ show_account_window (account_t * a) gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5); entryProtocol = gtk_combo_box_new_text(); gtk_label_set_mnemonic_widget (GTK_LABEL (label), entryProtocol); - gtk_widget_set_sensitive( GTK_WIDGET(entryProtocol), FALSE); /* TODO When IAX is ok */ + //gtk_widget_set_sensitive( GTK_WIDGET(entryProtocol), TRUE); gtk_combo_box_append_text(GTK_COMBO_BOX(entryProtocol), "SIP"); gtk_combo_box_append_text(GTK_COMBO_BOX(entryProtocol), "IAX"); - if(strcmp(g_hash_table_lookup(a->properties, ACCOUNT_TYPE), "SIP") == 0) + if(strcmp(curAccountType, "SIP") == 0) { gtk_combo_box_set_active(GTK_COMBO_BOX(entryProtocol),0); } - else + else if(strcmp(curAccountType, "IAX") == 0) { gtk_combo_box_set_active(GTK_COMBO_BOX(entryProtocol),1); - } + } + else + { + /* Should never come here, add debug message. */ + gtk_combo_box_append_text(GTK_COMBO_BOX(entryProtocol), "Unknown"); + gtk_combo_box_set_active(GTK_COMBO_BOX(entryProtocol),2); + } gtk_table_attach ( GTK_TABLE( table ), entryProtocol, 1, 2, 4, 5, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + + /* Link signal 'changed' */ + g_signal_connect (G_OBJECT (GTK_COMBO_BOX(entryProtocol)), "changed", + G_CALLBACK (change_protocol), + currentAccount); label = gtk_label_new_with_mnemonic ("_Full Name:"); gtk_table_attach ( GTK_TABLE( table ), label, 0, 1, 5, 6, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5); entryFullName = gtk_entry_new(); gtk_label_set_mnemonic_widget (GTK_LABEL (label), entryFullName); - gtk_entry_set_text(GTK_ENTRY(entryFullName), g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_FULL_NAME)); + gtk_entry_set_text(GTK_ENTRY(entryFullName), curFullName); gtk_table_attach ( GTK_TABLE( table ), entryFullName, 1, 2, 5, 6, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); label = gtk_label_new_with_mnemonic ("_User part:"); @@ -134,7 +198,7 @@ show_account_window (account_t * a) gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5); entryUserPart = gtk_entry_new(); gtk_label_set_mnemonic_widget (GTK_LABEL (label), entryUserPart); - gtk_entry_set_text(GTK_ENTRY(entryUserPart), g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_USER_PART)); + gtk_entry_set_text(GTK_ENTRY(entryUserPart), curUserPart); gtk_table_attach ( GTK_TABLE( table ), entryUserPart, 1, 2, 6, 7, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); label = gtk_label_new_with_mnemonic ("_Host part:"); @@ -142,7 +206,7 @@ show_account_window (account_t * a) gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5); entryHostPart = gtk_entry_new(); gtk_label_set_mnemonic_widget (GTK_LABEL (label), entryHostPart); - gtk_entry_set_text(GTK_ENTRY(entryHostPart), g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_HOST_PART)); + gtk_entry_set_text(GTK_ENTRY(entryHostPart), curHostPart); gtk_table_attach ( GTK_TABLE( table ), entryHostPart, 1, 2, 7, 8, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); label = gtk_label_new_with_mnemonic ("U_sername:"); @@ -150,7 +214,7 @@ show_account_window (account_t * a) gtk_misc_set_alignment(GTK_MISC (label), 0, 0.5); entryUsername = gtk_entry_new(); gtk_label_set_mnemonic_widget (GTK_LABEL (label), entryUsername); - gtk_entry_set_text(GTK_ENTRY(entryUsername), g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_AUTH_NAME)); + gtk_entry_set_text(GTK_ENTRY(entryUsername), curUsername); gtk_table_attach ( GTK_TABLE( table ), entryUsername, 1, 2, 8, 9, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); label = gtk_label_new_with_mnemonic ("_Password:"); @@ -159,9 +223,21 @@ show_account_window (account_t * a) entryPassword = gtk_entry_new(); gtk_entry_set_visibility(GTK_ENTRY(entryPassword), FALSE); gtk_label_set_mnemonic_widget (GTK_LABEL (label), entryPassword); - gtk_entry_set_text(GTK_ENTRY(entryPassword), g_hash_table_lookup(currentAccount->properties, ACCOUNT_SIP_PASSWORD)); + gtk_entry_set_text(GTK_ENTRY(entryPassword), curPassword); gtk_table_attach ( GTK_TABLE( table ), entryPassword, 1, 2, 9, 10, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); + + // Toggle enabled/disabled widgets + if (strcmp(curAccountType, "SIP") == 0) { + //gtk_widget_set_sensitive( GTK_WIDGET(entryUserPart), TRUE);< + } + else if (strcmp(curAccountType, "IAX") == 0) { + gtk_widget_set_sensitive( GTK_WIDGET(entryUserPart), FALSE); + } + else { + // Disable everything ! ouch! + // Shouldn't get there. + } gtk_box_pack_start (GTK_BOX (dialog->vbox), table, TRUE, TRUE, 0); @@ -171,7 +247,9 @@ show_account_window (account_t * a) response = gtk_dialog_run (GTK_DIALOG (dialog)); if(response == GTK_RESPONSE_ACCEPT) - { + { + gchar* proto = (gchar *)gtk_combo_box_get_active_text(GTK_COMBO_BOX(entryProtocol)); + g_hash_table_replace(currentAccount->properties, g_strdup(ACCOUNT_ENABLED), g_strdup(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(entryEnabled)) ? "TRUE": "FALSE")); @@ -182,21 +260,41 @@ show_account_window (account_t * a) g_hash_table_replace(currentAccount->properties, g_strdup(ACCOUNT_ALIAS), g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryName)))); - g_hash_table_replace(currentAccount->properties, - g_strdup(ACCOUNT_SIP_FULL_NAME), - g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryFullName)))); - g_hash_table_replace(currentAccount->properties, - g_strdup(ACCOUNT_SIP_USER_PART), - g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryUserPart)))); - g_hash_table_replace(currentAccount->properties, - g_strdup(ACCOUNT_SIP_HOST_PART), - g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryHostPart)))); - g_hash_table_replace(currentAccount->properties, - g_strdup(ACCOUNT_SIP_AUTH_NAME), - g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryUsername)))); - g_hash_table_replace(currentAccount->properties, - g_strdup(ACCOUNT_SIP_PASSWORD), - g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryPassword)))); + + if (strcmp(proto, "SIP") == 0) { /* Protocol = SIP */ + g_hash_table_replace(currentAccount->properties, + g_strdup(ACCOUNT_SIP_FULL_NAME), + g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryFullName)))); + g_hash_table_replace(currentAccount->properties, + g_strdup(ACCOUNT_SIP_USER_PART), + g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryUserPart)))); + g_hash_table_replace(currentAccount->properties, + g_strdup(ACCOUNT_SIP_HOST_PART), + g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryHostPart)))); + g_hash_table_replace(currentAccount->properties, + g_strdup(ACCOUNT_SIP_AUTH_NAME), + g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryUsername)))); + g_hash_table_replace(currentAccount->properties, + g_strdup(ACCOUNT_SIP_PASSWORD), + g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryPassword)))); + } + else if (strcmp(proto, "IAX") == 0) { /* Protocol = IAX */ + g_hash_table_replace(currentAccount->properties, + g_strdup(ACCOUNT_IAX_FULL_NAME), + g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryFullName)))); + g_hash_table_replace(currentAccount->properties, + g_strdup(ACCOUNT_IAX_HOST), + g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryHostPart)))); + g_hash_table_replace(currentAccount->properties, + g_strdup(ACCOUNT_IAX_USER), + g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryUsername)))); + g_hash_table_replace(currentAccount->properties, + g_strdup(ACCOUNT_IAX_PASS), + g_strdup((gchar *)gtk_entry_get_text(GTK_ENTRY(entryPassword)))); + } + else { + + } dbus_set_account_details(currentAccount); } diff --git a/sflphone-gtk/src/configwindow.c b/sflphone-gtk/src/configwindow.c index 3e9f5e4a71e79d15d1b35ae745d981f10effdb21..75fd1ef6de79a1ad3f607d8344e3b56ce3913732 100644 --- a/sflphone-gtk/src/configwindow.c +++ b/sflphone-gtk/src/configwindow.c @@ -160,7 +160,7 @@ create_accounts_tab() view = gtk_tree_view_new_with_model (GTK_TREE_MODEL(account_store)); sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (view)); - g_signal_connect (G_OBJECT (sel), "changed", + g_signal_connect (G_OBJECT (sel), "changed", G_CALLBACK (select_account), account_store); diff --git a/sflphone-gtk/src/dbus.c b/sflphone-gtk/src/dbus.c index 9c3e53bfbe7f35921aff11fa8307dc896d610bf3..5f320fe0aaf42a9d5d7d890a93070c81fdf0e445 100644 --- a/sflphone-gtk/src/dbus.c +++ b/sflphone-gtk/src/dbus.c @@ -426,13 +426,13 @@ dbus_set_account_details(account_t *a) &error); if (error) { - g_printerr ("Failed to call get_account_details() on ConfigurationManager: %s\n", + g_printerr ("Failed to call set_account_details() on ConfigurationManager: %s\n", error->message); g_error_free (error); } else { - g_print ("DBus called get_account_details() on ConfigurationManager\n"); + g_print ("DBus called set_account_details() on ConfigurationManager\n"); } } diff --git a/src/account.h b/src/account.h index 8f525c78cc137c36dc5a5c946b86e38d3b5b6584..87375b58d983d923fb8de094dfe1d92ed068c6b1 100644 --- a/src/account.h +++ b/src/account.h @@ -130,12 +130,6 @@ class Account{ bool getState() { return _state; } private: - /** - * Create a unique VoIPLink() depending on the protocol - * Multiple call to this function do nothing (if the voiplink pointer is 0) - * @return false if an error occurs - */ - virtual bool createVoIPLink() = 0; protected: /** diff --git a/src/iaxaccount.cpp b/src/iaxaccount.cpp index ff369bb76a0a0b818076127fe8f407bb58901f33..78863ebefccf0d4ee9cc58a7248d7c724dd5c1a7 100644 --- a/src/iaxaccount.cpp +++ b/src/iaxaccount.cpp @@ -24,7 +24,7 @@ IAXAccount::IAXAccount(const AccountID& accountID) : Account(accountID) { - createVoIPLink(); + _link = new IAXVoIPLink(accountID); } @@ -32,16 +32,6 @@ IAXAccount::~IAXAccount() { } -/* virtual Account function implementation */ -bool -IAXAccount::createVoIPLink() -{ - if (!_link) { - _link = new IAXVoIPLink(_accountID); - } - return (_link != 0 ? true : false); -} - bool IAXAccount::registerAccount() { diff --git a/src/iaxaccount.h b/src/iaxaccount.h index 4b79f9860c98774ec52453aeab44cac63baa5ea1..af6090547b3c1887f5f717d5e3a320ef3b12a1c1 100644 --- a/src/iaxaccount.h +++ b/src/iaxaccount.h @@ -21,6 +21,7 @@ #include "account.h" + /** * An IAX Account specify IAX specific functions and objects (IAXCall/IAXVoIPLink) * @author Yan Morin <yan.morin@gmail.com> @@ -34,6 +35,7 @@ public: /* virtual Account function implementation */ void initConfig(Conf::ConfigTree& config); + /** Actually unuseful, since config loading is done in init() */ void loadConfig(); bool registerAccount(); bool unregisterAccount(); @@ -41,8 +43,6 @@ public: bool terminate(); private: - /* virtual Account function implementation */ - bool createVoIPLink(); }; #endif diff --git a/src/iaxvoiplink.cpp b/src/iaxvoiplink.cpp index 170fdafa7a2be102be3ceb44617fcef58a3e9008..6232fea44375923044df695d3c6c84df6fc68cf9 100644 --- a/src/iaxvoiplink.cpp +++ b/src/iaxvoiplink.cpp @@ -268,7 +268,7 @@ IAXVoIPLink::sendAudioFromMic(void) // take the lowest int bytesAvail = (availBytesFromMic < maxBytesToGet) ? availBytesFromMic : maxBytesToGet; - _debug("available = %d, maxBytesToGet = %d\n", availBytesFromMic, maxBytesToGet); + //_debug("available = %d, maxBytesToGet = %d\n", availBytesFromMic, maxBytesToGet); // Get bytes from micRingBuffer to data_from_mic int nbSample = audiolayer->getMic(_dataAudioLayer, bytesAvail) / sizeof(SFLDataFormat); diff --git a/src/managerimpl.cpp b/src/managerimpl.cpp index 881cfd473c69e4b9026dcc2b92183953a7c13fb9..a1898bc1862cd5363aac5ed384d8553d883e480b 100644 --- a/src/managerimpl.cpp +++ b/src/managerimpl.cpp @@ -69,7 +69,7 @@ ManagerImpl::ManagerImpl (void) _dbus = NULL; // sound - _audiodriver = 0; + _audiodriver = NULL; _dtmfKey = 0; _spkr_volume = 0; // Initialize after by init() -> initVolume() _mic_volume = 0; // Initialize after by init() -> initVolume() diff --git a/src/sipaccount.cpp b/src/sipaccount.cpp index 0a58d464336cb7b9f0b7a6cc0c060d84f0133f0b..480c21af90be7e2d1406dd8e73f9cd1b5c3cf77c 100644 --- a/src/sipaccount.cpp +++ b/src/sipaccount.cpp @@ -21,12 +21,10 @@ #include "manager.h" - - SIPAccount::SIPAccount(const AccountID& accountID) : Account(accountID) { - createVoIPLink(); + _link = new SIPVoIPLink(accountID); } @@ -34,16 +32,6 @@ SIPAccount::~SIPAccount() { } -/* virtual Account function implementation */ -bool -SIPAccount::createVoIPLink() -{ - if (!_link) { - _link = new SIPVoIPLink(_accountID); - } - return (_link != 0 ? true : false); -} - bool SIPAccount::registerAccount() { diff --git a/src/sipaccount.h b/src/sipaccount.h index eeb8f5d1203b20d485e3910d5b070133a4c15a6d..9a0ccea8b77ff1f8de408cc267f920ddadf4b7c2 100644 --- a/src/sipaccount.h +++ b/src/sipaccount.h @@ -35,6 +35,7 @@ public: /* virtual Account function implementation */ void initConfig(Conf::ConfigTree& config); + /** Actually unuseful, since config loading is done in init() */ void loadConfig(); bool registerAccount(); bool unregisterAccount(); @@ -42,8 +43,6 @@ public: bool terminate(); private: - /* virtual Account function implementation */ - bool createVoIPLink(); }; diff --git a/www/header.php b/www/header.php index b5244a40255848808132d999634cf5a832d9552f..009d1cad8419c45a58f6ccfa226d69516e369a35 100644 --- a/www/header.php +++ b/www/header.php @@ -9,5 +9,14 @@ <body> <div id="page_wrapper"> <div id="header"> - <a href="."><img src="images/logoSFLphone<?= ($module == 'page_home' ? '512x149' : '312x91') ?>.png" /></a> + <a href="."><img src="images/logoSFLphone<?= ($module == 'home' ? '512x149' : '312x91') ?>.png" /></a> + + +<?php if ($module != 'home') { ?> +<div id="homebutton"> + <a href="index.php"><img src="images/home.png" alt="Home" /></a> +</div> +<?php } ?> + + </div> \ No newline at end of file diff --git a/www/images/home.png b/www/images/home.png new file mode 100644 index 0000000000000000000000000000000000000000..4e78a3112f1b765a334d454daa8979431dd13159 Binary files /dev/null and b/www/images/home.png differ diff --git a/www/images/icons/README b/www/images/icons/README new file mode 100644 index 0000000000000000000000000000000000000000..1cd28686a36a3d1dd51f6235a6f9ebd900060d5a --- /dev/null +++ b/www/images/icons/README @@ -0,0 +1,10 @@ +Replaced the plain DocBook XSL admonition icons with Jimmac's DocBook +icons (http://jimmac.musichall.cz/ikony.php3). I dropped transparency +from the Jimmac icons to get round MS IE and FOP PNG incompatibilies. + +Stuart Rackham + + +--------- + +SFLphone took those from AsciiDoc package. diff --git a/www/images/icons/callouts/1.png b/www/images/icons/callouts/1.png new file mode 100644 index 0000000000000000000000000000000000000000..7d473430b7bec514f7de12f5769fe7c5859e8c5d Binary files /dev/null and b/www/images/icons/callouts/1.png differ diff --git a/www/images/icons/callouts/10.png b/www/images/icons/callouts/10.png new file mode 100644 index 0000000000000000000000000000000000000000..997bbc8246a316e040e0804174ba260e219d7d33 Binary files /dev/null and b/www/images/icons/callouts/10.png differ diff --git a/www/images/icons/callouts/11.png b/www/images/icons/callouts/11.png new file mode 100644 index 0000000000000000000000000000000000000000..ce47dac3f52ac49017749a3fea53db57d006993c Binary files /dev/null and b/www/images/icons/callouts/11.png differ diff --git a/www/images/icons/callouts/12.png b/www/images/icons/callouts/12.png new file mode 100644 index 0000000000000000000000000000000000000000..31daf4e2f25b6712499ee32de9c2e3b050b691ca Binary files /dev/null and b/www/images/icons/callouts/12.png differ diff --git a/www/images/icons/callouts/13.png b/www/images/icons/callouts/13.png new file mode 100644 index 0000000000000000000000000000000000000000..14021a89c2ed3d4881afea6e3a315bce4f95efce Binary files /dev/null and b/www/images/icons/callouts/13.png differ diff --git a/www/images/icons/callouts/14.png b/www/images/icons/callouts/14.png new file mode 100644 index 0000000000000000000000000000000000000000..64014b75fe2e84d45ed861974c72462727979360 Binary files /dev/null and b/www/images/icons/callouts/14.png differ diff --git a/www/images/icons/callouts/15.png b/www/images/icons/callouts/15.png new file mode 100644 index 0000000000000000000000000000000000000000..0d65765fcf13dcfd87914744dec8bda115e4adf1 Binary files /dev/null and b/www/images/icons/callouts/15.png differ diff --git a/www/images/icons/callouts/2.png b/www/images/icons/callouts/2.png new file mode 100644 index 0000000000000000000000000000000000000000..5d09341b2f6d2ea2d1d5dad5d980f14b4b05dfd2 Binary files /dev/null and b/www/images/icons/callouts/2.png differ diff --git a/www/images/icons/callouts/3.png b/www/images/icons/callouts/3.png new file mode 100644 index 0000000000000000000000000000000000000000..ef7b70047158970cf4e09f1bab2954d39c2d596b Binary files /dev/null and b/www/images/icons/callouts/3.png differ diff --git a/www/images/icons/callouts/4.png b/www/images/icons/callouts/4.png new file mode 100644 index 0000000000000000000000000000000000000000..adb8364eb5d21ecdd4086e16110b62ddcb42aa4a Binary files /dev/null and b/www/images/icons/callouts/4.png differ diff --git a/www/images/icons/callouts/5.png b/www/images/icons/callouts/5.png new file mode 100644 index 0000000000000000000000000000000000000000..4d7eb460021e845981861d77614539314f553993 Binary files /dev/null and b/www/images/icons/callouts/5.png differ diff --git a/www/images/icons/callouts/6.png b/www/images/icons/callouts/6.png new file mode 100644 index 0000000000000000000000000000000000000000..0ba694af6c07d947d219b45a629bd32c60a0f5fe Binary files /dev/null and b/www/images/icons/callouts/6.png differ diff --git a/www/images/icons/callouts/7.png b/www/images/icons/callouts/7.png new file mode 100644 index 0000000000000000000000000000000000000000..472e96f8ac36862c5645732f2fff19d06ee11a8e Binary files /dev/null and b/www/images/icons/callouts/7.png differ diff --git a/www/images/icons/callouts/8.png b/www/images/icons/callouts/8.png new file mode 100644 index 0000000000000000000000000000000000000000..5e60973c213b37df93666c5a00724f34493974ae Binary files /dev/null and b/www/images/icons/callouts/8.png differ diff --git a/www/images/icons/callouts/9.png b/www/images/icons/callouts/9.png new file mode 100644 index 0000000000000000000000000000000000000000..a0676d26cc2ff1de12c4ecdeefb44a0d71bc6bde Binary files /dev/null and b/www/images/icons/callouts/9.png differ diff --git a/www/images/icons/caution.png b/www/images/icons/caution.png new file mode 100644 index 0000000000000000000000000000000000000000..cb9d5ea0df3fb7abe744d6ef885847c13b786d4d Binary files /dev/null and b/www/images/icons/caution.png differ diff --git a/www/images/icons/example.png b/www/images/icons/example.png new file mode 100644 index 0000000000000000000000000000000000000000..bba1c0010ddbb148a93e8a442047ca6a68b5ef1f Binary files /dev/null and b/www/images/icons/example.png differ diff --git a/www/images/icons/home.png b/www/images/icons/home.png new file mode 100644 index 0000000000000000000000000000000000000000..37a5231bacc905886c9351a291e0d5eed68dd60e Binary files /dev/null and b/www/images/icons/home.png differ diff --git a/www/images/icons/important.png b/www/images/icons/important.png new file mode 100644 index 0000000000000000000000000000000000000000..1096c232959e8cb5c2977b5eb44c1b67173cb422 Binary files /dev/null and b/www/images/icons/important.png differ diff --git a/www/images/icons/next.png b/www/images/icons/next.png new file mode 100644 index 0000000000000000000000000000000000000000..64e126bdda3f2e611199744494367ad0c1a1f9ca Binary files /dev/null and b/www/images/icons/next.png differ diff --git a/www/images/icons/note.png b/www/images/icons/note.png new file mode 100644 index 0000000000000000000000000000000000000000..841820f7c4fb274fc45fae0a0a526a68eb31d85e Binary files /dev/null and b/www/images/icons/note.png differ diff --git a/www/images/icons/prev.png b/www/images/icons/prev.png new file mode 100644 index 0000000000000000000000000000000000000000..3e8f12fe24c6e042bc7ef4badb15449f71529ace Binary files /dev/null and b/www/images/icons/prev.png differ diff --git a/www/images/icons/tip.png b/www/images/icons/tip.png new file mode 100644 index 0000000000000000000000000000000000000000..a3a029d89891bff666fbdc1a082ae4a7951b5abf Binary files /dev/null and b/www/images/icons/tip.png differ diff --git a/www/images/icons/up.png b/www/images/icons/up.png new file mode 100644 index 0000000000000000000000000000000000000000..2db1ce62fa575fd990108b15b0de18a64cae19ca Binary files /dev/null and b/www/images/icons/up.png differ diff --git a/www/images/icons/warning.png b/www/images/icons/warning.png new file mode 100644 index 0000000000000000000000000000000000000000..0b0c419df29b7e71ef14ecf5970b2abcd6d5ea01 Binary files /dev/null and b/www/images/icons/warning.png differ diff --git a/www/images/see-above.png b/www/images/see-above.png new file mode 100644 index 0000000000000000000000000000000000000000..a37a9a9708f4baee392791b3bc7b0a1f5a5aa65f Binary files /dev/null and b/www/images/see-above.png differ diff --git a/www/images/toc-blank.png b/www/images/toc-blank.png new file mode 100644 index 0000000000000000000000000000000000000000..6ffad17a0c7a78deaae58716e8071cc40cb0b8e0 Binary files /dev/null and b/www/images/toc-blank.png differ diff --git a/www/images/toc-minus.png b/www/images/toc-minus.png new file mode 100644 index 0000000000000000000000000000000000000000..abbb020c8e2d6705ebc2f0fc17deed30f2977a46 Binary files /dev/null and b/www/images/toc-minus.png differ diff --git a/www/images/toc-plus.png b/www/images/toc-plus.png new file mode 100644 index 0000000000000000000000000000000000000000..941312ce0dab168e0efcc5b572e387259880e541 Binary files /dev/null and b/www/images/toc-plus.png differ diff --git a/www/index.php b/www/index.php index a8422e0f178a7dd8bb9d42fff8a5f27daac18db0..cec9d0640232cffb542fa71a79e3991608182137 100644 --- a/www/index.php +++ b/www/index.php @@ -10,8 +10,8 @@ require_once('sflphone.funcs.php'); // We've requested an image, fetch it, and send it. -if (defined($_REQUEST['i'])) { - $img = $_REQUEST['i']; +if (isset($_REQUEST['img'])) { + $img = $_REQUEST['img']; switch(strtolower(substr($img, -3))) { case 'jpg': header("Content-Type: image/jpeg"); @@ -26,9 +26,16 @@ if (defined($_REQUEST['i'])) { break; } - show_page($img); + show_page($img, FALSE); + exit(); } +if (isset($_REQUEST['file'])) { + include("header.php"); + show_page($_REQUEST['file']); + include("footer.php"); + exit(); +} $module = ''; diff --git a/www/sflphone.css b/www/sflphone.css index a2f0efafb29be56e6416481d801cfea9649c84bb..69e9975c4437f46a9ab6b8932206f58628973e7b 100644 --- a/www/sflphone.css +++ b/www/sflphone.css @@ -267,6 +267,7 @@ div.exampleblock-content { /** SFLphone specific */ #header { text-align: center; + position: relative; } #header img { border: 0px; @@ -278,4 +279,41 @@ div.exampleblock-content { padding: 1em 2em 2em 2em; border-left: 1px #aaaaaa solid; border-right: 1px #aaaaaa solid; +} + +#downtown { + margin-top: 40px; + border-top: 1px solid #bbbbbb; + font-size: smaller; + padding: 1em 0pt 0pt 0pt; + clear: both; + color: #777777; + text-align: center; +} + +.donate { + margin: auto +} + +#homebutton { + position: absolute; + right: 0px; + top: 10px; +} +#homebutton img { + border: none; +} + +.image { + text-align: center; + padding-bottom: 20px; +} + +.image .image-title { + background: transparent url(images/see-above.png) no-repeat left; + padding-left: 20px; + color: #4D4F3A; + font-weight: normal; + font-style: italic; + display: inline; } \ No newline at end of file diff --git a/www/sflphone.funcs.php b/www/sflphone.funcs.php index 678deaaef184b12a55e13a62d96d925d24534def..ba285613f2266da873151e97153394b17794f5d0 100644 --- a/www/sflphone.funcs.php +++ b/www/sflphone.funcs.php @@ -64,7 +64,6 @@ function get_page($page, $compile = TRUE) { */ function show_page($page, $compile = TRUE) { print get_page($page, $compile); - } @@ -141,8 +140,9 @@ function compile_page($hash, $page) { // keep return the hash $fnconf = bring_local_file('asciidoc.conf'); - // -d book so we can render H1s - $p = popen("GIT_DIR=".$GIT_REPOS." git-show $hash | asciidoc -f \"".$fnconf."\"-d book --no-header-footer -", 'r'); + // -d book, so we can render H1s + // -a icons, enables the display of graphic icons in admonition blocks. + $p = popen("GIT_DIR=".$GIT_REPOS." git-show $hash | asciidoc -a icons -f \"".$fnconf."\" -d book --no-header-footer - 2>&1", 'r'); if (!$p) { return "Unable to compile file: $page ($hash)\n"; @@ -203,10 +203,20 @@ function get_git_file_content($file) { function get_git_hash_content($hash) { global $GIT_REPOS; - $output = array(); - $content = exec("GIT_DIR=".$GIT_REPOS." git-show $hash", $output); + $output = ''; - return $content; + $p = popen("GIT_DIR=".$GIT_REPOS." git-show $hash", 'r'); + + if (!$p) { + return "Unable to run git-show for hash: $hash\n"; + } + + while (!feof($p)) { + $output .= fread($p, 1024); + } + pclose($p); + + return $output; } /** @@ -214,15 +224,24 @@ function get_git_hash_content($hash) { * * Used for comparison of cached/to cache/cache filename. * - * @param string Filename without the $PREFIX (ex: Features.txt, images/pouet.png) + * @param string Filename without the $PREFIX (ex: Features.txt, + * images/pouet.png) and optionally, a ":" separator, followed by + * a git tree-ish (commit, branch, tag), ex: Build.txt:tags/0.7.2 * @return string SHA-1 hash */ function get_git_hash($file) { global $USE_BRANCH, $GIT_REPOS; + $branch = $USE_BRANCH; + + $split = explode(":", $file); + if (count($split) > 1) { + $branch = $split[1]; + } + $output = array(); - $cmd = "cd $GIT_REPOS; git-ls-tree $USE_BRANCH \"".git_filename($file)."\""; + $cmd = "cd $GIT_REPOS; git-ls-tree $branch \"".git_filename($split[0])."\""; $string = exec($cmd, $output); diff --git a/www/templates/page_build.php b/www/templates/page_build.php index 9f90e9ffff96be283288160f9414ae9b0e989f07..f225c12ceb4171f3b9e7e639922c1fed208ac820 100644 --- a/www/templates/page_build.php +++ b/www/templates/page_build.php @@ -1,3 +1 @@ -<h1>Build instructions</h1> - <?php show_page('Build.txt'); ?> diff --git a/www/templates/page_discuss.php b/www/templates/page_discuss.php new file mode 100644 index 0000000000000000000000000000000000000000..ab46cdfed0ef1dfa4e5d906caf7a2675e1e112aa --- /dev/null +++ b/www/templates/page_discuss.php @@ -0,0 +1,5 @@ + +<?php show_page('MailingLists.txt'); ?> + +<?php show_page('IRC.txt'); ?> + diff --git a/www/templates/page_donate.php b/www/templates/page_donate.php new file mode 100644 index 0000000000000000000000000000000000000000..73e6ed68ae17322e34f29390f890cf5a050a0153 --- /dev/null +++ b/www/templates/page_donate.php @@ -0,0 +1,134 @@ +<p> + SFLphone is an <em>Open Source</em> project. This means + you can help the project by contributing <strong>time</strong>, + <strong>documentation</strong>, <strong>graphics</strong>, <strong>source code</strong> or <strong>translation</strong> services. +</p> +<p> + If you want to encourage us otherwise, your <strong>donations</strong> can help us: +</p> + <ul> + <li>Fund developer resources </li> + + <li>Purchase hardware for development</li> + <li>Encourage the actual developers</li> + <li>Cope with fees endured in the development</li> + </ul> + <p> + You can donate money securely with <a href="http://www.paypal.com/">PayPal</a> + or a credit card right here: + </p> + + + + <table class="donate"> + + <tr> + <td align=center> + <form action="https://www.paypal.com/cgi-bin/webscr" method="post"> + <input type="hidden" name="cmd" value="_xclick" /> + <input type="hidden" name="business" value="cyrille.beraud@savoirfairelinux.com" /> + <input type="hidden" name="item_name" value="SFLphone 10USD donation" /> + <input type="hidden" name="item_number" value="sfldon010" /> + <input type="hidden" name="no_shipping" value="1" /> + <input type="hidden" name="no_note" value="1" /> + + <input type="hidden" name="amount" value="10.00" /> + <input type="hidden" name="currency_code" value="USD" /> + <input type="hidden" name="tax" value="0" /> + <input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-butcc-donate.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!" /> + </form> + </td> + + <td align=center> + <form action="https://www.paypal.com/cgi-bin/webscr" method="post"> + <input type="hidden" name="cmd" value="_xclick" /> + + <input type="hidden" name="business" value="cyrille.beraud@savoirfairelinux.com" /> + <input type="hidden" name="item_name" value="SFLphone 20USD donation" /> + <input type="hidden" name="item_number" value="sfldon020" /> + <input type="hidden" name="no_shipping" value="1" /> + <input type="hidden" name="no_note" value="1" /> + <input type="hidden" name="amount" value="20.00" /> + <input type="hidden" name="currency_code" value="USD" /> + <input type="hidden" name="tax" value="0" /> + <input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-butcc-donate.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!" /> + + </form> + </td> + + <td align=center> + <form action="https://www.paypal.com/cgi-bin/webscr" method="post"> + <input type="hidden" name="cmd" value="_xclick" /> + <input type="hidden" name="business" value="cyrille.beraud@savoirfairelinux.com" /> + <input type="hidden" name="item_name" value="SFLphone 50USD donation" /> + <input type="hidden" name="item_number" value="sfldon050" /> + <input type="hidden" name="no_shipping" value="1" /> + + <input type="hidden" name="no_note" value="1" /> + <input type="hidden" name="amount" value="50.00" /> + <input type="hidden" name="currency_code" value="USD" /> + <input type="hidden" name="tax" value="0" /> + <input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-butcc-donate.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!" /> + </form> + </td> + + <td align=center> + <form action="https://www.paypal.com/cgi-bin/webscr" method="post"> + + <input type="hidden" name="cmd" value="_xclick" /> + <input type="hidden" name="business" value="cyrille.beraud@savoirfairelinux.com" /> + <input type="hidden" name="item_name" value="SFLphone 100USD donation" /> + <input type="hidden" name="item_number" value="sfldon100" /> + <input type="hidden" name="no_shipping" value="1" /> + <input type="hidden" name="no_note" value="1" /> + <input type="hidden" name="amount" value="100.00" /> + <input type="hidden" name="currency_code" value="USD" /> + <input type="hidden" name="tax" value="0" /> + + <input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-butcc-donate.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!" /> + </form> + </td> + + <td align=center> + <form action="https://www.paypal.com/cgi-bin/webscr" method="post"> + <input type="hidden" name="cmd" value="_xclick" /> + <input type="hidden" name="business" value="cyrille.beraud@savoirfairelinux.com" /> + <input type="hidden" name="item_name" value="SFLphone 250USD donation" /> + <input type="hidden" name="item_number" value="sfldon250" /> + + <input type="hidden" name="no_shipping" value="1" /> + <input type="hidden" name="no_note" value="1" /> + <input type="hidden" name="amount" value="250.00" /> + <input type="hidden" name="currency_code" value="USD" /> + <input type="hidden" name="tax" value="0" /> + <input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-butcc-donate.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!" /> + </form> + </td> + + <td align=center> + + <form action="https://www.paypal.com/cgi-bin/webscr" method="post"> + <input type="hidden" name="cmd" value="_xclick" /> + <input type="hidden" name="business" value="cyrille.beraud@savoirfairelinux.com" /> + <input type="hidden" name="item_name" value="SFLphone donation" /> + <input type="hidden" name="item_number" value="sfldon" /> + <input type="hidden" name="no_note" value="1" /> + <input type="hidden" name="no_shipping" value="1" /> + <input type="hidden" name="currency_code" value="USD" /> + <input type="hidden" name="tax" value="0" /> + + <input type="image" src="https://www.paypal.com/en_US/i/btn/x-click-butcc-donate.gif" border="0" name="submit" alt="Make payments with PayPal - it's fast, free and secure!" /> + </form> + </td> + </tr> + + <tr> + <td align=center>$10</td> + <td align=center>$20</td> + <td align=center>$50</td> + + <td align=center>$100</td> + <td align=center>$250</td> + <td align=center>custom</td> + </tr> + </table> \ No newline at end of file diff --git a/www/templates/page_download.php b/www/templates/page_download.php index 6c2092b712be8862f1a213b5afc35f069b3a89c5..f6d5e7c5e06bab40b53325b3aab3461d174be4bb 100644 --- a/www/templates/page_download.php +++ b/www/templates/page_download.php @@ -1,3 +1,2 @@ -<h1>Download</h1> -<?php show_page('Download.txt'); ?> +<?php show_page('Downloads.txt'); ?> diff --git a/www/templates/page_home.php b/www/templates/page_home.php index 4b8a10ac37874b68f72c51dbd6149e2f3ce3680b..3c641fe91ecc0ee385d4fd67fac3c353c3ec3e92 100644 --- a/www/templates/page_home.php +++ b/www/templates/page_home.php @@ -29,4 +29,10 @@ The project is ongoing well, but your help and contribution is needed to make th <a href="/mantis">File a bug</a> - report errors<br/> <a href="index.php?mod=discuss">Discuss</a> - Subscribe to a mailing list or contact us <br/> <a href="index.php?mod=devel">Develop</a> - Submit patches, work on the code, contribute -</p> \ No newline at end of file +</p> + + + +<div id="downtown"> + Any help is appreciated, <a href="index.php?mod=donate">donate</a>. +</div> \ No newline at end of file