Return to templates.c CVS log | Up to [Public] / Amaya / amaya |
1.1 cvs 1: /* 2: * 3: * COPYRIGHT MIT and INRIA, 1996. 4: * Please first read the full copyright statement in file COPYRIGHT. 5: * 6: */ 7: 8: /* 9: * Amaya browser functions called form Thot and declared in HTML.A. 10: * These functions concern links and other HTML general features. 11: * 12: * Authors: L. Bonameau, S. Bonhomme (INRIA) - HTML templates 13: * 14: */ 15: 16: /* Included headerfiles */ 17: #define THOT_EXPORT extern 18: #include "amaya.h" 19: #include "css.h" 20: 21: #include "document.h" 22: #include "view.h" 23: 24: 25: /* content of the attr name of the meta tag defining the doc's destination URL */ 1.4 cvs 26: #if defined(_I18N_) || defined(__JIS__) 27: # define META_TEMPLATE_NAME L"AMAYA_TEMPLATE" 28: #else /* defined(_I18N_) || defined(__JIS__) */ 29: # define META_TEMPLATE_NAME "AMAYA_TEMPLATE" 30: #endif /* defined(_I18N_) || defined(__JIS__) */ 1.1 cvs 31: /* URL of the script providing templates (for reload) */ 1.11 ! cvs 32: static CHAR_T* script_URL; 1.1 cvs 33: 1.3 cvs 34: #include "init_f.h" 35: 36: 1.1 cvs 37: /*---------------------------------------------------------------------- 38: NewTemplate: Opens a template form on the remote template server 39: ----------------------------------------------------------------------*/ 40: #ifdef __STDC__ 41: void NewTemplate (Document doc, View view) 42: #else /* __STDC__ */ 43: void NewTemplate (doc, view) 44: Document doc; 45: View view; 46: #endif /* __STDC__ */ 47: 48: { 1.10 cvs 49: STRING url; 1.1 cvs 50: 1.10 cvs 51: url = TtaGetEnvString ("TEMPLATE_URL"); 52: if (url) 53: GetHTMLDocument (url, NULL, 0, 0, CE_ABSOLUTE, FALSE, NULL, NULL); 1.1 cvs 54: } 55: /*---------------------------------------------------------------------- 56: OpenTemplateDocument: Process the meta of a template document, 57: changes the URL, try to save it and warn the user if it cannot be 58: saved. 59: ----------------------------------------------------------------------*/ 60: #ifdef __STDC__ 61: void OpenTemplateDocument (Document doc) 62: #else /* __STDC__ */ 63: void OpenTemplateDocument (doc) 64: Document doc; 65: #endif /* __STDC__ */ 66: 67: { 68: ElementType metaElType; 69: Element metaEl; 70: Attribute metaAttr; 71: AttributeType metaAttrType; 72: ThotBool found = FALSE; 73: ThotBool ok = FALSE; 74: int length; 75: CHAR_T buffer[MAX_LENGTH]; 76: CHAR_T *URLdir; 77: CHAR_T *URLname; 78: 79: metaElType.ElSSchema = TtaGetDocumentSSchema (doc); 80: metaElType.ElTypeNum = HTML_EL_META; 81: metaAttrType.AttrSSchema = TtaGetDocumentSSchema (doc); 82: metaAttrType.AttrTypeNum = HTML_ATTR_meta_name; 83: /* search the meta element */ 84: metaEl = TtaGetMainRoot (doc); 85: do 86: { 87: metaEl = TtaSearchTypedElement (metaElType, SearchForward, metaEl); 88: if (metaEl != NULL) 89: { 90: metaAttr = TtaGetAttribute (metaEl, metaAttrType); 91: if (metaAttr != NULL) 92: { 93: length = MAX_LENGTH - 1; 94: TtaGiveTextAttributeValue (metaAttr, buffer, &length); 95: found = !ustrcmp (buffer, META_TEMPLATE_NAME); 96: } 97: } 98: } 99: while (metaEl != NULL && !found); 100: if (found) 101: { 102: /* get the url of the document */ 103: metaAttrType.AttrTypeNum = HTML_ATTR_meta_content; 104: metaAttr = TtaGetAttribute (metaEl, metaAttrType); 105: if (metaAttr != NULL) 106: { 107: length = MAX_LENGTH - 1; 108: TtaGiveTextAttributeValue (metaAttr, buffer, &length); 109: } 110: /* Delete the meta element */ 111: TtaDeleteTree (metaEl, doc); 112: /* try to save to the new url */ 113: #ifdef WITH_PRELABLE_SAVE_POUR_VOIR 114: ok = SaveDocumentThroughNet (doc, 1, buffer, FALSE, TRUE, TRUE); 115: #else 116: ok = TRUE; 117: #endif 118: if (ok) 119: { 120: if (script_URL == NULL) 1.11 ! cvs 121: script_URL = TtaWCSdup (DocumentURLs[doc]); 1.1 cvs 122: TtaFreeMemory (DocumentURLs[doc]); 1.11 ! cvs 123: DocumentURLs[doc] = TtaWCSdup (buffer); 1.1 cvs 124: DocumentMeta[doc]->method = CE_TEMPLATE; 125: TtaSetTextZone (doc, 1, 1, DocumentURLs[doc]); 126: TtaSetDocumentUnmodified (doc); 127: 128: } 129: else 130: { 131: /* save failed : print warning message */ 132: 133: } 134: 135: /* set the document name and dir */ 136: 137: URLname = ustrrchr (buffer, URL_SEP); 1.5 cvs 138: if (URLname) 139: { 140: URLname[0] = EOS; 141: URLname++; 142: URLdir = buffer; 143: TtaSetDocumentDirectory (doc, URLdir); 1.9 cvs 144: TtaSetDocumentName (doc, URLname); 1.5 cvs 145: /* SetBrowserEditor(doc); */ 146: } 147: else 148: { 1.11 ! cvs 149: TtaSetDocumentDirectory (doc, TEXT("")); 1.5 cvs 150: TtaSetDocumentName (doc, buffer); 151: } 1.9 cvs 152: SetWindowTitle (doc, doc, 0); 1.1 cvs 153: } 1.5 cvs 154: 1.1 cvs 155: } 156: 157: /*---------------------------------------------------------------------- 158: ReloadTemplateParams : restores the script URL and method into meta 159: to reload a template 160: ----------------------------------------------------------------------*/ 161: #ifdef __STDC__ 1.11 ! cvs 162: void ReloadTemplateParams (CHAR_T* docURL, ClickEvent *method) 1.1 cvs 163: #else /* __STDC__ */ 164: void ReloadTemplateParams (docURL, method) 1.11 ! cvs 165: CHAR_T* docURL; 1.1 cvs 166: ClickEvent *method; 167: #endif /* __STDC__ */ 168: { 169: *method = CE_FORM_GET; 1.5 cvs 170: TtaFreeMemory (*docURL); 1.11 ! cvs 171: *docURL = TtaWCSdup (script_URL); 1.1 cvs 172: }