Version 17.12

This commit is contained in:
Antonio Cañas Vargas 2017-10-01 18:44:50 +02:00
parent 794be41996
commit 6cebad8c0a
6 changed files with 164 additions and 80 deletions

BIN
icon/less64x64.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 829 B

BIN
icon/more64x64.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1011 B

View File

@ -682,6 +682,16 @@ function expandTextarea (textareaElem,idButton,rows) {
document.getElementById(idButton).style.display = '';
}
//Change display of a project
function toggleProject (prjID) {
toggleDisplay('prj_exp_' + prjID);
toggleDisplay('prj_con_' + prjID);
toggleDisplay('prj_dsc_' + prjID);
toggleDisplay('prj_knw_' + prjID);
toggleDisplay('prj_mtr_' + prjID);
toggleDisplay('prj_url_' + prjID);
}
// Change display of a test answer
function toggleAnswer (option) {
toggleDisplay('ans_' + option);

View File

@ -252,13 +252,18 @@
/****************************** Public constants *****************************/
/*****************************************************************************/
#define Log_PLATFORM_VERSION "SWAD 17.11.8 (2017-10-01)"
#define Log_PLATFORM_VERSION "SWAD 17.12 (2017-10-01)"
#define CSS_FILE "swad17.0.css"
#define JS_FILE "swad16.206.3.js"
#define JS_FILE "swad17.12.js"
// Number of lines (includes comments but not blank lines) has been got with the following command:
// nl swad*.c swad*.h css/swad*.css py/swad*.py js/swad*.js soap/swad*?.h sql/swad*.sql | tail -1
/*
Version 17.12: Oct 01, 2017 Changes in layout of projects. (231712 lines)
Copy the following icons to icon public directory:
sudo cp icon/more64x64.png /var/www/html/swad/icon/
sudo cp icon/less64x64.png /var/www/html/swad/icon/
Version 17.11.8: Oct 01, 2017 Changes in edition of projects. (231638 lines)
Version 17.11.7: Oct 01, 2017 Changes in layout of projects. (231634 lines)
Version 17.11.6: Oct 01, 2017 Fixed bug in edition of projects. (231632 lines)

View File

@ -92,17 +92,21 @@ static void Prj_PutIconToCreateNewPrj (void);
static void Prj_PutButtonToCreateNewPrj (void);
static void Prj_PutIconToShowAllData (void);
static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectView);
static void Prj_PutIconToToggleProject (unsigned UniqueId,
const char *Icon,const char *Text);
static void Prj_ShowTableAllProjectsOneRow (struct Project *Prj);
static void Prj_ShowOneProjectDepartment (const struct Project *Prj,
Prj_ProjectView_t ProjectView);
static void Prj_ShowTableAllProjectsDepartment (const struct Project *Prj);
static void Prj_ShowOneProjectTxtField (struct Project *Prj,
Prj_ProjectView_t ProjectView,
const char *id,unsigned UniqueId,
const char *Label,char *TxtField);
static void Prj_ShowTableAllProjectsTxtField (struct Project *Prj,
char *TxtField);
static void Prj_ShowOneProjectURL (const struct Project *Prj,
Prj_ProjectView_t ProjectView);
Prj_ProjectView_t ProjectView,
const char *id,unsigned UniqueId);
static void Prj_ShowTableAllProjectsURL (const struct Project *Prj);
static void Prj_ShowOneProjectMembers (struct Project *Prj,
Prj_ProjectView_t ProjectView);
@ -418,12 +422,22 @@ static void Prj_ShowTableAllProjectsHead (void)
unsigned NumRoleToShow;
fprintf (Gbl.F.Out,"<tr>");
for (Order = (Prj_Order_t) 0;
Order <= (Prj_Order_t) (Prj_NUM_ORDERS - 1);
Order++)
fprintf (Gbl.F.Out,"<th class=\"LEFT_TOP DAT_N\">%s</th>",
Txt_PROJECT_ORDER[Order]);
fprintf (Gbl.F.Out,"<th class=\"LEFT_TOP DAT_N\">%s</th>",
Txt_Preassigned_QUESTION);
for (NumRoleToShow = 0;
NumRoleToShow < Brw_NUM_ROLES_TO_SHOW;
NumRoleToShow++)
fprintf (Gbl.F.Out,"<th class=\"LEFT_TOP DAT_N\">%s</th>",
Txt_PROJECT_ROLES_PLURAL_Abc[Prj_RolesToShow[NumRoleToShow]]);
fprintf (Gbl.F.Out,"<th class=\"LEFT_TOP DAT_N\">%s</th>",
Txt_Description);
fprintf (Gbl.F.Out,"<th class=\"LEFT_TOP DAT_N\">%s</th>",
@ -432,14 +446,6 @@ static void Prj_ShowTableAllProjectsHead (void)
Txt_Required_materials);
fprintf (Gbl.F.Out,"<th class=\"LEFT_TOP DAT_N\">%s</th>",
Txt_URL);
fprintf (Gbl.F.Out,"<th class=\"LEFT_TOP DAT_N\">%s</th>",
Txt_Preassigned_QUESTION);
for (NumRoleToShow = 0;
NumRoleToShow < Brw_NUM_ROLES_TO_SHOW;
NumRoleToShow++)
fprintf (Gbl.F.Out,"<th class=\"LEFT_TOP DAT_N\">%s</th>",
Txt_PROJECT_ROLES_PLURAL_Abc[Prj_RolesToShow[NumRoleToShow]]);
fprintf (Gbl.F.Out,"</tr>");
}
@ -573,6 +579,8 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie
extern const char *Txt_Today;
extern const char *Txt_Yes;
extern const char *Txt_No;
extern const char *Txt_See_more;
extern const char *Txt_See_less;
extern const char *Txt_Description;
extern const char *Txt_Required_knowledge;
extern const char *Txt_Required_materials;
@ -650,23 +658,7 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie
/***** Project members *****/
Prj_ShowOneProjectMembers (Prj,ProjectView);
/***** Write rows of data of this project *****/
/* Description of the project */
Prj_ShowOneProjectTxtField (Prj,ProjectView,
Txt_Description,Prj->Description);
/* Required knowledge to carry out the project */
Prj_ShowOneProjectTxtField (Prj,ProjectView,
Txt_Required_knowledge,Prj->Knowledge);
/* Required materials to carry out the project */
Prj_ShowOneProjectTxtField (Prj,ProjectView,
Txt_Required_materials,Prj->Materials);
/* Link to view more info about the project */
Prj_ShowOneProjectURL (Prj,ProjectView);
/* Preassigned? */
/***** Preassigned? *****/
fprintf (Gbl.F.Out,"<tr>"
"<td colspan=\"3\" class=\"RIGHT_TOP");
if (ProjectView == Prj_LIST_PROJECTS)
@ -689,9 +681,61 @@ static void Prj_ShowOneProject (struct Project *Prj,Prj_ProjectView_t ProjectVie
(Prj->Preassigned == Prj_PREASSIGNED) ? Txt_Yes :
Txt_No);
/***** Link to show hidden info *****/
if (ProjectView == Prj_LIST_PROJECTS)
{
fprintf (Gbl.F.Out,"<tr id=\"prj_exp_%u\">"
"<td colspan=\"5\" class=\"CENTER_MIDDLE COLOR%u\">",
UniqueId,Gbl.RowEvenOdd);
Prj_PutIconToToggleProject (UniqueId,"more64x64.png",Txt_See_more);
fprintf (Gbl.F.Out,"</td>"
"</tr>");
fprintf (Gbl.F.Out,"<tr id=\"prj_con_%u\" style=\"display:none;\">"
"<td colspan=\"5\" class=\"CENTER_MIDDLE COLOR%u\">",
UniqueId,Gbl.RowEvenOdd);
Prj_PutIconToToggleProject (UniqueId,"less64x64.png",Txt_See_less);
fprintf (Gbl.F.Out,"</td>"
"</tr>");
}
/***** Write rows of data of this project *****/
/* Description of the project */
Prj_ShowOneProjectTxtField (Prj,ProjectView,"prj_dsc_",UniqueId,
Txt_Description,Prj->Description);
/* Required knowledge to carry out the project */
Prj_ShowOneProjectTxtField (Prj,ProjectView,"prj_knw_",UniqueId,
Txt_Required_knowledge,Prj->Knowledge);
/* Required materials to carry out the project */
Prj_ShowOneProjectTxtField (Prj,ProjectView,"prj_mtr_",UniqueId,
Txt_Required_materials,Prj->Materials);
/* Link to view more info about the project */
Prj_ShowOneProjectURL (Prj,ProjectView,"prj_url_",UniqueId);
Gbl.RowEvenOdd = 1 - Gbl.RowEvenOdd;
}
/*****************************************************************************/
/********** Put an icon to toggle on/off some fields of a project ************/
/*****************************************************************************/
static void Prj_PutIconToToggleProject (unsigned UniqueId,
const char *Icon,const char *Text)
{
extern const char *The_ClassForm[The_NUM_THEMES];
/***** Link to toggle on/off some fields of project *****/
fprintf (Gbl.F.Out,"<a href=\"\" title=\"%s\" class=\"%s\""
" onclick=\"toggleProject('%u');return false;\" />",
Text,The_ClassForm[Gbl.Prefs.Theme],
UniqueId);
Ico_PutIconWithText (Icon,Text,Text);
fprintf (Gbl.F.Out,"</a>");
}
/*****************************************************************************/
/***************** Show one row of table with all projects *******************/
/*****************************************************************************/
@ -757,9 +801,25 @@ static void Prj_ShowTableAllProjectsOneRow (struct Project *Prj)
"DAT_N",
Prj->Title);
/* Department */
/***** Department *****/
Prj_ShowTableAllProjectsDepartment (Prj);
/***** Preassigned? *****/
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP COLOR%u %s\">"
"%s"
"</td>",
Gbl.RowEvenOdd,
Prj->Hidden ? "DAT_LIGHT" :
"DAT",
(Prj->Preassigned == Prj_PREASSIGNED) ? Txt_Yes :
Txt_No);
/***** Project members *****/
for (NumRoleToShow = 0;
NumRoleToShow < Brw_NUM_ROLES_TO_SHOW;
NumRoleToShow++)
Prj_ShowTableAllProjectsMembersWithARole (Prj,Prj_RolesToShow[NumRoleToShow]);
/***** Write rows of data of this project *****/
/* Description of the project */
Prj_ShowTableAllProjectsTxtField (Prj,Prj->Description);
@ -773,22 +833,6 @@ static void Prj_ShowTableAllProjectsOneRow (struct Project *Prj)
/* Link to view more info about the project */
Prj_ShowTableAllProjectsURL (Prj);
/* Preassigned? */
fprintf (Gbl.F.Out,"<td class=\"LEFT_TOP COLOR%u %s\">"
"%s"
"</td>",
Gbl.RowEvenOdd,
Prj->Hidden ? "DAT_LIGHT" :
"DAT",
(Prj->Preassigned == Prj_PREASSIGNED) ? Txt_Yes :
Txt_No);
/* Project members */
for (NumRoleToShow = 0;
NumRoleToShow < Brw_NUM_ROLES_TO_SHOW;
NumRoleToShow++)
Prj_ShowTableAllProjectsMembersWithARole (Prj,Prj_RolesToShow[NumRoleToShow]);
/***** End row *****/
fprintf (Gbl.F.Out,"</tr>");
@ -855,6 +899,7 @@ static void Prj_ShowTableAllProjectsDepartment (const struct Project *Prj)
static void Prj_ShowOneProjectTxtField (struct Project *Prj,
Prj_ProjectView_t ProjectView,
const char *id,unsigned UniqueId,
const char *Label,char *TxtField)
{
/***** Change format *****/
@ -864,8 +909,9 @@ static void Prj_ShowOneProjectTxtField (struct Project *Prj,
Str_InsertLinks (TxtField,Cns_MAX_BYTES_TEXT,60); // Insert links
/***** Write row with label and text *****/
fprintf (Gbl.F.Out,"<tr>"
"<td colspan=\"3\" class=\"RIGHT_TOP");
fprintf (Gbl.F.Out,"<tr id=\"%s%u\" style=\"display:none;\">"
"<td colspan=\"3\" class=\"RIGHT_TOP",
id,UniqueId);
if (ProjectView == Prj_LIST_PROJECTS)
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd);
fprintf (Gbl.F.Out," %s\">"
@ -908,7 +954,8 @@ static void Prj_ShowTableAllProjectsTxtField (struct Project *Prj,
/*****************************************************************************/
static void Prj_ShowOneProjectURL (const struct Project *Prj,
Prj_ProjectView_t ProjectView)
Prj_ProjectView_t ProjectView,
const char *id,unsigned UniqueId)
{
extern const char *Txt_URL;
bool PutLink;
@ -916,8 +963,9 @@ static void Prj_ShowOneProjectURL (const struct Project *Prj,
/***** Write row with label and text *****/
PutLink = (ProjectView == Prj_LIST_PROJECTS && Prj->URL[0]);
fprintf (Gbl.F.Out,"<tr>"
"<td colspan=\"3\" class=\"RIGHT_TOP");
fprintf (Gbl.F.Out,"<tr id=\"%s%u\" style=\"display:none;\">"
"<td colspan=\"3\" class=\"RIGHT_TOP",
id,UniqueId);
if (ProjectView == Prj_LIST_PROJECTS)
fprintf (Gbl.F.Out," COLOR%u",Gbl.RowEvenOdd);
fprintf (Gbl.F.Out," %s\">"
@ -2178,11 +2226,11 @@ static void Prj_PutFormProject (struct Project *Prj,bool ItsANewProject)
extern const char *Txt_Data;
extern const char *Txt_Title;
extern const char *Txt_Department;
extern const char *Txt_Preassigned_QUESTION;
extern const char *Txt_Description;
extern const char *Txt_Required_knowledge;
extern const char *Txt_Required_materials;
extern const char *Txt_URL;
extern const char *Txt_Preassigned_QUESTION;
extern const char *Txt_No;
extern const char *Txt_Yes;
extern const char *Txt_Create_project;
@ -2260,6 +2308,30 @@ static void Prj_PutFormProject (struct Project *Prj,bool ItsANewProject)
fprintf (Gbl.F.Out,"</td>"
"</tr>");
/* Preassigned? */
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"%s RIGHT_MIDDLE\">"
"%s:"
"</td>"
"<td class=\"LEFT_MIDDLE\">"
"<select name=\"Preassigned\">",
The_ClassForm[Gbl.Prefs.Theme],
Txt_Preassigned_QUESTION);
fprintf (Gbl.F.Out,"<option value=\"N\"");
if (Prj->Preassigned == Prj_NOT_PREASSIGNED)
fprintf (Gbl.F.Out," selected=\"selected\"");
fprintf (Gbl.F.Out,">%s</option>",Txt_No);
fprintf (Gbl.F.Out,"<option value=\"Y\"");
if (Prj->Preassigned == Prj_PREASSIGNED)
fprintf (Gbl.F.Out," selected=\"selected\"");
fprintf (Gbl.F.Out,">%s</option>",Txt_Yes);
fprintf (Gbl.F.Out,"</select>"
"</td>"
"</tr>");
/* Description of the project */
Prj_EditOneProjectTxtArea ("Description",Txt_Description,
Prj->Description,12);
@ -2286,30 +2358,6 @@ static void Prj_PutFormProject (struct Project *Prj,bool ItsANewProject)
Txt_URL,
Cns_MAX_CHARS_WWW,Prj->URL);
/* Preassigned? */
fprintf (Gbl.F.Out,"<tr>"
"<td class=\"%s RIGHT_MIDDLE\">"
"%s:"
"</td>"
"<td class=\"LEFT_MIDDLE\">"
"<select name=\"Preassigned\">",
The_ClassForm[Gbl.Prefs.Theme],
Txt_Preassigned_QUESTION);
fprintf (Gbl.F.Out,"<option value=\"N\"");
if (Prj->Preassigned == Prj_NOT_PREASSIGNED)
fprintf (Gbl.F.Out," selected=\"selected\"");
fprintf (Gbl.F.Out,">%s</option>",Txt_No);
fprintf (Gbl.F.Out,"<option value=\"Y\"");
if (Prj->Preassigned == Prj_PREASSIGNED)
fprintf (Gbl.F.Out," selected=\"selected\"");
fprintf (Gbl.F.Out,">%s</option>",Txt_Yes);
fprintf (Gbl.F.Out,"</select>"
"</td>"
"</tr>");
/* End table, send button and end box */
if (ItsANewProject)
Box_EndBoxTableWithButton (Btn_CREATE_BUTTON,Txt_Create_project);
@ -2441,6 +2489,10 @@ void Prj_RecFormProject (void)
/* Get department */
Prj.DptCod = Par_GetParToLong ("DptCod");
/* Get whether the project is preassigned */
Prj.Preassigned = (Par_GetParToBool ("Preassigned")) ? Prj_PREASSIGNED :
Prj_NOT_PREASSIGNED;
/* Get project description, required knowledge and required materials */
Par_GetParToHTML ("Description",Prj.Description,Cns_MAX_BYTES_TEXT); // Store in HTML format (not rigorous)
Par_GetParToHTML ("Knowledge" ,Prj.Knowledge ,Cns_MAX_BYTES_TEXT); // Store in HTML format (not rigorous)
@ -2449,10 +2501,6 @@ void Prj_RecFormProject (void)
/* Get degree WWW */
Par_GetParToText ("URL",Prj.URL,Cns_MAX_BYTES_WWW);
/* Get whether the project is preassigned */
Prj.Preassigned = (Par_GetParToBool ("Preassigned")) ? Prj_PREASSIGNED :
Prj_NOT_PREASSIGNED;
/***** Adjust dates *****/
if (Prj.TimeUTC[Dat_START_TIME] == 0)
Prj.TimeUTC[Dat_START_TIME] = Gbl.StartExecutionTimeUTC;

View File

@ -38056,6 +38056,27 @@ const char *Txt_See_full_notice =
"Veja aviso completo";
#endif
const char *Txt_See_less =
#if L==1
"Veure menys";
#elif L==2
"Zeige weniger";
#elif L==3
"See less";
#elif L==4
"Ver menos";
#elif L==5
"Voir moins";
#elif L==6
"Ver menos"; // Okoteve traducción
#elif L==7
"Vedere meno";
#elif L==8
"Zobacz mniej";
#elif L==9
"Veja menos";
#endif
const char *Txt_See_message =
#if L==1
"Veure missatge";
@ -38102,7 +38123,7 @@ const char *Txt_See_more =
#if L==1
"Veure m&eacute;s";
#elif L==2
"Weitere";
"Zeige mehr";
#elif L==3
"See more";
#elif L==4