From 38b5bbe163845801171e056eefd37f2a5aeae32c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Antonio=20Ca=C3=B1as=20Vargas?= Date: Fri, 13 Dec 2019 23:38:29 +0100 Subject: [PATCH] Version19.91 --- js/{swad19.90.js => swad19.91.js} | 47 +++- swad_HTML.c | 375 +++++++++++++++--------------- swad_HTML.h | 2 +- swad_action.c | 4 +- swad_action.h | 12 +- swad_changelog.h | 6 +- swad_layout.c | 4 +- swad_match.c | 135 +++++++---- swad_match.h | 3 +- swad_timeline.c | 4 +- 10 files changed, 346 insertions(+), 246 deletions(-) rename js/{swad19.90.js => swad19.91.js} (97%) diff --git a/js/swad19.90.js b/js/swad19.91.js similarity index 97% rename from js/swad19.90.js rename to js/swad19.91.js index c276e21af..10cf49d5a 100644 --- a/js/swad19.90.js +++ b/js/swad19.91.js @@ -572,9 +572,9 @@ function readMatchStdData () { if (objXMLHttpReqMchStd.status == 200) { var htmlMatch = objXMLHttpReqMchStd.responseText; // Get HTML code - var divMatch = document.getElementById('match'); // Access to refreshable DIV - if (divMatch) - divMatch.innerHTML = htmlMatch; // Update refreshable DIV + var div = document.getElementById('match'); // Access to refreshable DIV + if (div) + div.innerHTML = htmlMatch; // Update DIV content // Global delay variable is set initially in swad-core setTimeout('refreshMatchStd()',delayMatch); } @@ -608,15 +608,50 @@ function readMatchTchData () { var Id = objXMLHttpReqMchTch.responseText.substring(0,endOfId); // Get Id var htmlMatch = objXMLHttpReqMchTch.responseText.substring(endOfId + 1); // Get HTML code - var divMatch = document.getElementById(Id); // Access to refreshable DIV - if (divMatch) - divMatch.innerHTML = htmlMatch; // Update refreshable DIV + var div = document.getElementById(Id); // Access to refreshable DIV + if (div) { + div.innerHTML = htmlMatch; // Update DIV content + + // Scripts in div got via AJAX are not executed ==> execute them + evalScriptsInElem (div); + + // Process mathematics; see http://docs.mathjax.org/en/latest/advanced/typeset.html + MathJax.Hub.Queue(["Typeset",MathJax.Hub,div]); + } + // Global delay variable is set initially in swad-core setTimeout('refreshMatchTch()',delayMatch); } } } +/*****************************************************************************/ +/****************** Update match control area using AJAX *********************/ +/*****************************************************************************/ + +// This function is called when user submit a form inside two parent divs +function updateMatchTch (id,Params) { + var objXMLHttp = false; + + objXMLHttp = AJAXCreateObject (); + if (objXMLHttp) { + /* Send request to server */ + objXMLHttp.onreadystatechange = function() { // onreadystatechange must be lowercase + if (objXMLHttp.readyState == 4) { // Check if data have been received + if (objXMLHttp.status == 200) + if (id) { + var div = document.getElementById(id); // Access to DIV + if (div) + div.innerHTML = objXMLHttp.responseText; // Update DIV content + } + } + }; + objXMLHttp.open('POST',ActionAJAX,true); + objXMLHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); + objXMLHttp.send(Params); + } +} + /*****************************************************************************/ /**************** Automatic refresh of last clicks using AJAX ****************/ /*****************************************************************************/ diff --git a/swad_HTML.c b/swad_HTML.c index 08a5d81f8..7216191e5 100644 --- a/swad_HTML.c +++ b/swad_HTML.c @@ -106,6 +106,8 @@ static void HTM_TEXTAREA_BeginWithoutAttr (void); static void HTM_SELECT_BeginWithoutAttr (void); +static void HTM_SPTxt (const char *Txt); + /*****************************************************************************/ /******************************* Start/end table *****************************/ /*****************************************************************************/ @@ -127,7 +129,7 @@ void HTM_TABLE_Begin (const char *fmt,...) Lay_NotEnoughMemoryExit (); /***** Print HTML *****/ - fprintf (Gbl.F.Out,"",Class); + HTM_TxtF ("
",Class); HTM_TABLE_NestingLevel++; @@ -144,8 +146,8 @@ void HTM_TABLE_BeginPadding (unsigned CellPadding) { if (CellPadding) { - fprintf (Gbl.F.Out,"
", - CellPadding); // CellPadding must be 0, 1, 2, 5 or 10 + HTM_TxtF ("
", + CellPadding); // CellPadding must be 0, 1, 2, 5 or 10 HTM_TABLE_NestingLevel++; } @@ -155,7 +157,7 @@ void HTM_TABLE_BeginPadding (unsigned CellPadding) static void HTM_TABLE_BeginWithoutAttr (void) { - fprintf (Gbl.F.Out,"
"); + HTM_Txt ("
"); HTM_TABLE_NestingLevel++; } @@ -164,8 +166,8 @@ void HTM_TABLE_BeginCenterPadding (unsigned CellPadding) { if (CellPadding) { - fprintf (Gbl.F.Out,"
", - CellPadding); // CellPadding must be 0, 1, 2, 5 or 10 + HTM_TxtF ("
", + CellPadding); // CellPadding must be 0, 1, 2, 5 or 10 HTM_TABLE_NestingLevel++; } @@ -175,7 +177,7 @@ void HTM_TABLE_BeginCenterPadding (unsigned CellPadding) void HTM_TABLE_BeginCenter (void) { - fprintf (Gbl.F.Out,"
"); + HTM_Txt ("
"); HTM_TABLE_NestingLevel++; } @@ -184,8 +186,8 @@ void HTM_TABLE_BeginWidePadding (unsigned CellPadding) { if (CellPadding) { - fprintf (Gbl.F.Out,"
", - CellPadding); // CellPadding must be 0, 1, 2, 5 or 10 + HTM_TxtF ("
", + CellPadding); // CellPadding must be 0, 1, 2, 5 or 10 HTM_TABLE_NestingLevel++; } @@ -195,7 +197,7 @@ void HTM_TABLE_BeginWidePadding (unsigned CellPadding) void HTM_TABLE_BeginWide (void) { - fprintf (Gbl.F.Out,"
"); + HTM_Txt ("
"); HTM_TABLE_NestingLevel++; } @@ -204,8 +206,8 @@ void HTM_TABLE_BeginWideMarginPadding (unsigned CellPadding) { if (CellPadding) { - fprintf (Gbl.F.Out,"
", - CellPadding); // CellPadding must be 0, 1, 2, 5 or 10 + HTM_TxtF ("
", + CellPadding); // CellPadding must be 0, 1, 2, 5 or 10 HTM_TABLE_NestingLevel++; } @@ -215,7 +217,7 @@ void HTM_TABLE_BeginWideMarginPadding (unsigned CellPadding) void HTM_TABLE_BeginWideMargin (void) { - fprintf (Gbl.F.Out,"
"); + HTM_Txt ("
"); HTM_TABLE_NestingLevel++; } @@ -225,7 +227,7 @@ void HTM_TABLE_End (void) if (HTM_TABLE_NestingLevel == 0) // No TABLE open Ale_ShowAlert (Ale_ERROR,"Trying to close unopened TABLE."); - fprintf (Gbl.F.Out,"
"); + HTM_Txt (""); HTM_TABLE_NestingLevel--; } @@ -251,7 +253,7 @@ void HTM_TR_Begin (const char *fmt,...) Lay_NotEnoughMemoryExit (); /***** Print HTML *****/ - fprintf (Gbl.F.Out,"",Attr); + HTM_TxtF ("",Attr); free (Attr); } @@ -266,7 +268,7 @@ void HTM_TR_Begin (const char *fmt,...) static void HTM_TR_BeginWithoutAttr (void) { - fprintf (Gbl.F.Out,""); + HTM_Txt (""); } void HTM_TR_End (void) @@ -274,7 +276,7 @@ void HTM_TR_End (void) if (HTM_TR_NestingLevel == 0) // No TR open Ale_ShowAlert (Ale_ERROR,"Trying to close unopened TR."); - fprintf (Gbl.F.Out,""); + HTM_Txt (""); HTM_TR_NestingLevel--; } @@ -348,7 +350,7 @@ static void HTM_TH_BeginAttr (const char *fmt,...) Lay_NotEnoughMemoryExit (); /***** Print HTML *****/ - fprintf (Gbl.F.Out,"",Attr); + HTM_TxtF ("",Attr); free (Attr); } @@ -363,7 +365,7 @@ static void HTM_TH_BeginAttr (const char *fmt,...) static void HTM_TH_BeginWithoutAttr (void) { - fprintf (Gbl.F.Out,""); + HTM_Txt (""); } void HTM_TH_End (void) @@ -371,7 +373,7 @@ void HTM_TH_End (void) if (HTM_TH_NestingLevel == 0) // No TH open Ale_ShowAlert (Ale_ERROR,"Trying to close unopened TR."); - fprintf (Gbl.F.Out,""); + HTM_Txt (""); HTM_TH_NestingLevel--; } @@ -410,7 +412,7 @@ void HTM_TD_Begin (const char *fmt,...) Lay_NotEnoughMemoryExit (); /***** Print HTML *****/ - fprintf (Gbl.F.Out,"",Attr); + HTM_TxtF ("",Attr); free (Attr); } @@ -425,7 +427,7 @@ void HTM_TD_Begin (const char *fmt,...) static void HTM_TD_BeginWithoutAttr (void) { - fprintf (Gbl.F.Out,""); + HTM_Txt (""); } void HTM_TD_End (void) @@ -433,7 +435,7 @@ void HTM_TD_End (void) if (HTM_TD_NestingLevel == 0) // No TD open Ale_ShowAlert (Ale_ERROR,"Trying to close unopened TD."); - fprintf (Gbl.F.Out,""); + HTM_Txt (""); HTM_TD_NestingLevel--; } @@ -485,7 +487,7 @@ void HTM_DIV_Begin (const char *fmt,...) Lay_NotEnoughMemoryExit (); /***** Print HTML *****/ - fprintf (Gbl.F.Out,"
",Attr); + HTM_TxtF ("
",Attr); free (Attr); } @@ -500,7 +502,7 @@ void HTM_DIV_Begin (const char *fmt,...) static void HTM_DIV_BeginWithoutAttr (void) { - fprintf (Gbl.F.Out,"
"); + HTM_Txt ("
"); } void HTM_DIV_End (void) @@ -508,7 +510,7 @@ void HTM_DIV_End (void) if (HTM_DIV_NestingLevel == 0) // No DIV open Ale_ShowAlert (Ale_ERROR,"Trying to close unopened DIV."); - fprintf (Gbl.F.Out,"
"); + HTM_Txt ("
"); HTM_DIV_NestingLevel--; } @@ -519,12 +521,12 @@ void HTM_DIV_End (void) void HTM_MAIN_Begin (const char *Class) { - fprintf (Gbl.F.Out,"
",Class); + HTM_TxtF ("
",Class); } void HTM_MAIN_End (void) { - fprintf (Gbl.F.Out,"
"); + HTM_Txt ("
"); } /*****************************************************************************/ @@ -533,12 +535,12 @@ void HTM_MAIN_End (void) void HTM_ARTICLE_Begin (const char *ArticleId) { - fprintf (Gbl.F.Out,"
",ArticleId); + HTM_TxtF ("
",ArticleId); } void HTM_ARTICLE_End (void) { - fprintf (Gbl.F.Out,"
"); + HTM_Txt ("
"); } /*****************************************************************************/ @@ -547,12 +549,12 @@ void HTM_ARTICLE_End (void) void HTM_SECTION_Begin (const char *SectionId) { - fprintf (Gbl.F.Out,"
",SectionId); + HTM_TxtF ("
",SectionId); } void HTM_SECTION_End (void) { - fprintf (Gbl.F.Out,"
"); + HTM_Txt ("
"); } /*****************************************************************************/ @@ -576,7 +578,7 @@ void HTM_SPAN_Begin (const char *fmt,...) Lay_NotEnoughMemoryExit (); /***** Print HTML *****/ - fprintf (Gbl.F.Out,"",Attr); + HTM_TxtF ("",Attr); free (Attr); } @@ -591,7 +593,7 @@ void HTM_SPAN_Begin (const char *fmt,...) static void HTM_SPAN_BeginWithoutAttr (void) { - fprintf (Gbl.F.Out,""); + HTM_Txt (""); } void HTM_SPAN_End (void) @@ -599,7 +601,7 @@ void HTM_SPAN_End (void) if (HTM_SPAN_NestingLevel == 0) // No SPAN open Ale_ShowAlert (Ale_ERROR,"Trying to close unopened SPAN."); - fprintf (Gbl.F.Out,""); + HTM_Txt (""); HTM_SPAN_NestingLevel--; } @@ -610,7 +612,7 @@ void HTM_SPAN_End (void) void HTM_OL_Begin (void) { - fprintf (Gbl.F.Out,"
    "); + HTM_Txt ("
      "); HTM_OL_NestingLevel++; } @@ -620,7 +622,7 @@ void HTM_OL_End (void) if (HTM_OL_NestingLevel == 0) // No OL open Ale_ShowAlert (Ale_ERROR,"Trying to close unopened OL."); - fprintf (Gbl.F.Out,"
    "); + HTM_Txt ("
"); HTM_OL_NestingLevel--; } @@ -642,7 +644,7 @@ void HTM_UL_Begin (const char *fmt,...) Lay_NotEnoughMemoryExit (); /***** Print HTML *****/ - fprintf (Gbl.F.Out,"
    ",Attr); + HTM_TxtF ("
      ",Attr); free (Attr); } @@ -657,7 +659,7 @@ void HTM_UL_Begin (const char *fmt,...) static void HTM_UL_BeginWithoutAttr (void) { - fprintf (Gbl.F.Out,"
        "); + HTM_Txt ("
          "); } void HTM_UL_End (void) @@ -665,7 +667,7 @@ void HTM_UL_End (void) if (HTM_UL_NestingLevel == 0) // No UL open Ale_ShowAlert (Ale_ERROR,"Trying to close unopened UL."); - fprintf (Gbl.F.Out,"
        "); + HTM_Txt ("
      "); HTM_UL_NestingLevel--; } @@ -691,7 +693,7 @@ void HTM_LI_Begin (const char *fmt,...) Lay_NotEnoughMemoryExit (); /***** Print HTML *****/ - fprintf (Gbl.F.Out,"
    • ",Attr); + HTM_TxtF ("
    • ",Attr); free (Attr); } @@ -706,7 +708,7 @@ void HTM_LI_Begin (const char *fmt,...) static void HTM_LI_BeginWithoutAttr (void) { - fprintf (Gbl.F.Out,"
    • "); + HTM_Txt ("
    • "); } void HTM_LI_End (void) @@ -714,7 +716,7 @@ void HTM_LI_End (void) if (HTM_LI_NestingLevel == 0) // No LI open Ale_ShowAlert (Ale_ERROR,"Trying to close unopened LI."); - fprintf (Gbl.F.Out,"
    • "); + HTM_Txt (""); HTM_LI_NestingLevel--; } @@ -725,7 +727,7 @@ void HTM_LI_End (void) void HTM_DL_Begin (void) { - fprintf (Gbl.F.Out,"
      "); + HTM_Txt ("
      "); HTM_DL_NestingLevel++; } @@ -735,14 +737,14 @@ void HTM_DL_End (void) if (HTM_DL_NestingLevel == 0) // No DL open Ale_ShowAlert (Ale_ERROR,"Trying to close unopened DL."); - fprintf (Gbl.F.Out,"
      "); + HTM_Txt ("
      "); HTM_DL_NestingLevel--; } void HTM_DT_Begin (void) { - fprintf (Gbl.F.Out,"
      "); + HTM_Txt ("
      "); HTM_DT_NestingLevel++; } @@ -752,14 +754,14 @@ void HTM_DT_End (void) if (HTM_DL_NestingLevel == 0) // No DT open Ale_ShowAlert (Ale_ERROR,"Trying to close unopened DT."); - fprintf (Gbl.F.Out,"
      "); + HTM_Txt (""); HTM_DT_NestingLevel--; } void HTM_DD_Begin (void) { - fprintf (Gbl.F.Out,"
      "); + HTM_Txt ("
      "); HTM_DD_NestingLevel++; } @@ -769,7 +771,7 @@ void HTM_DD_End (void) if (HTM_DD_NestingLevel == 0) // No DD open Ale_ShowAlert (Ale_ERROR,"Trying to close unopened DD."); - fprintf (Gbl.F.Out,"
      "); + HTM_Txt (""); HTM_DD_NestingLevel--; } @@ -795,7 +797,7 @@ void HTM_A_Begin (const char *fmt,...) Lay_NotEnoughMemoryExit (); /***** Print HTML *****/ - fprintf (Gbl.F.Out,"",Attr); + HTM_TxtF ("",Attr); free (Attr); } @@ -810,7 +812,7 @@ void HTM_A_Begin (const char *fmt,...) static void HTM_A_BeginWithoutAttr (void) { - fprintf (Gbl.F.Out,""); + HTM_Txt (""); } void HTM_A_End (void) @@ -818,7 +820,7 @@ void HTM_A_End (void) if (HTM_A_NestingLevel == 0) // No A open Ale_ShowAlert (Ale_ERROR,"Trying to close unopened A."); - fprintf (Gbl.F.Out,""); + HTM_Txt (""); HTM_A_NestingLevel--; } @@ -829,14 +831,14 @@ void HTM_A_End (void) void HTM_SCRIPT_Begin (const char *URL,const char *CharSet) { - fprintf (Gbl.F.Out,"\n"); + HTM_Txt ("\n"); HTM_SCRIPT_NestingLevel--; } @@ -872,7 +874,7 @@ void HTM_PARAM (const char *Name, Lay_NotEnoughMemoryExit (); /***** Print HTML *****/ - fprintf (Gbl.F.Out,"\n",Name,Value); + HTM_TxtF ("\n",Name,Value); free (Value); } @@ -899,7 +901,7 @@ void HTM_LABEL_Begin (const char *fmt,...) Lay_NotEnoughMemoryExit (); /***** Print HTML *****/ - fprintf (Gbl.F.Out,"