<% '---------------------------------------------------- ' ASP XML Script to manage simple tasks via web ' Nick Sumner 17.08.2003 ' scripts@nicksumner.com ' www.nicksumner.com/scripts '---------------------------------------------------- %> <% Option Explicit %> XML TaskList

XML TaskList - <% = Request.ServerVariables("SERVER_NAME") %>

View Tasks | Manage Tasks | New Task | Notes | Clear Tasks | Info

<% Dim strFile strFile = Server.MapPath("tasks.xml") Dim msg msg = "" 'load XML file Dim objXML, objRoot, AllItems, TaskItem Set objXML = Server.CreateObject("Microsoft.XMLDOM") XMLLoad() Dim TaskID Dim TaskName Dim TaskEmail Dim TaskDesc Dim TaskNotes Dim TaskDone Dim TaskDate Dim Task_ID Dim Task_Name Dim Task_Email Dim Task_Desc Dim Task_Notes Dim Task_Done Dim Task_Date TaskID = Trim(Request("task_id")) TaskName = Trim(Request("task_name")) TaskEmail = Trim(Request("task_email")) TaskDesc = Trim(Request("task_desc")) TaskNotes = Trim(Request("task_notes")) TaskDone = Trim(Request("task_done")) TaskDate = Now() If TaskName<>"" Then Session("TaskName") = TaskName If TaskEmail<>"" Then Session("TaskEmail") = TaskEmail If Trim(Request("task_new"))="1" Then Call newXMLField(strFile) Else Call UpdateTasks() End If Set objRoot = Nothing Set AllItems = Nothing Set objXML = Nothing FUNCTION XMLLoad() objXML.async = False objXML.Load (strFile) Set AllItems = objXML.selectNodes("//task") Set objRoot = objXML.documentElement END FUNCTION FUNCTION UpdateTasks() If (TaskName<>"" And TaskDesc<>"") Or _ TaskDone<>"" Then If TaskID<>"" Then Call updateXMLField(TaskID, TaskName, TaskEmail, TaskDesc, TaskNotes, TaskDone, strFile) Else Call insertXMLField(TaskName, TaskEmail, TaskDesc, TaskNotes, TaskDone, strFile) End If End If XMLLoad() If (TaskID<>"") Then If TaskName="" And TaskDesc="" And TaskDone<>"" Then Response.Redirect "tasks.asp?" Response.End End If Call DisplayTask(TaskID) Else Call DisplayTasks() End If END FUNCTION FUNCTION DisplayTask(task) Dim I If task="0" Then task="" Dim strTaskName Dim strTaskEmail Dim strTaskDesc Dim strTaskNotes Dim strTaskDone Dim strTaskDate For I = 0 to (AllItems.Length - 1) Set Task_ID = AllItems(I).selectNodes("task_id") If ((Task_ID(0).text) = trim(task)) Then Set Task_Name = AllItems(I).selectNodes("task_name") Set Task_Email = AllItems(I).selectNodes("task_email") Set Task_Desc = AllItems(I).selectNodes("task_desc") Set Task_Notes = AllItems(I).selectNodes("task_notes") Set Task_Done = AllItems(I).selectNodes("task_done") Set Task_Date = AllItems(I).selectNodes("task_date") strTaskName = Task_Name(0).text strTaskEmail = Task_Email(0).text strTaskDesc = Task_Desc(0).text strTaskNotes = Task_Notes(0).text strTaskDone = Task_Done(0).text strTaskDate = Task_Date(0).text EXIT FOR End If Next If strTaskName="" Then strTaskName = Session("TaskName") If strTaskEmail="" Then strTaskEmail = Session("TaskEmail") Response.Write "
" & vbcrlf Response.Write "" & vbcrlf Response.Write "" & vbcrlf Response.Write "" & vbcrlf Response.Write "" & vbcrlf Response.Write "" & vbcrlf Response.Write "" & vbcrlf Response.Write "" & vbcrlf Response.Write "" & vbcrlf Response.Write "
" & vbcrlf Response.Write "ID: " Response.Write "" & vbcrlf Response.Write "" & Task Response.Write "
" & vbcrlf Response.Write "Name:" Response.Write "" & vbcrlf Response.Write "" Response.Write "
" & vbcrlf Response.Write "Email:" Response.Write "" & vbcrlf Response.Write "" Response.Write "
" & vbcrlf Response.Write "Task:" Response.Write "" & vbcrlf Response.Write "" Response.Write "
" & vbcrlf Response.Write "Description:" Response.Write "" & vbcrlf Response.Write "" Response.Write "
" & vbcrlf Response.Write "Complete:" Response.Write "" & vbcrlf Response.Write "" Response.Write "
" & vbcrlf Response.Write "" & vbcrlf Response.Write "
 " Response.Write "
" & vbcrlf Response.Write "
" & vbcrlf END FUNCTION FUNCTION DisplayTasks() Dim I Dim strTaskID Dim strTaskName Dim strTaskEmail Dim strTaskDesc Dim strTaskNotes Dim strTaskDone Dim strTaskDate Response.Write "" & vbcrlf Response.Write "" & vbcrlf For I = 0 to (AllItems.Length - 1) Set Task_ID = AllItems(I).selectNodes("task_id") Set Task_Name = AllItems(I).selectNodes("task_name") Set Task_Email = AllItems(I).selectNodes("task_email") Set Task_Desc = AllItems(I).selectNodes("task_desc") Set Task_Notes = AllItems(I).selectNodes("task_notes") Set Task_Done = AllItems(I).selectNodes("task_done") Set Task_Date = AllItems(I).selectNodes("task_date") strTaskID = Task_ID(0).text strTaskName = Task_Name(0).text strTaskEmail = Task_Email(0).text strTaskDesc = Task_Desc(0).text strTaskNotes = Task_Notes(0).text strTaskDone = Task_Done(0).text strTaskDate = Task_Date(0).text Response.Write "" & vbcrlf Next Response.Write "
" & vbcrlf Response.Write "ID" Response.Write " " & vbcrlf Response.Write "" & vbcrlf Response.Write "Name" Response.Write "" & vbcrlf Response.Write "Task" Response.Write "" & vbcrlf Response.Write "Date" Response.Write "
" & vbcrlf Response.Write "" Response.Write strTaskID Response.Write "" Response.Write "" & vbcrlf Response.Write "" Response.Write "" & vbcrlf Response.Write "" Response.Write strTaskName Response.Write "" Response.Write "" & vbcrlf Response.Write "" Response.Write Left(strTaskDesc, 35) If LEN(strTaskDesc)>35 Then Response.Write "..." Response.Write "" If Trim(Request("notes"))="1" Then Response.Write "
" strTaskNotes = Trim(Replace(" " & strTaskNotes, Chr(10), "
")) Response.Write strTaskNotes End If Response.Write "
" & vbcrlf Response.Write strTaskDate Response.Write " 
" & vbcrlf END FUNCTION FUNCTION updateXMLField(elem_id, task_name_str, task_email_str, task_desc_str, task_notes_str, task_done_str, strXMLFile) Dim objField, I, found 'update - find the element For I = 0 to (AllItems.Length - 1) Set Task_ID = AllItems(I).selectNodes("task_id") If ((Task_ID(0).text) = trim(elem_id)) Then Set Task_Name = AllItems(I).selectNodes("task_name") Set Task_Email = AllItems(I).selectNodes("task_email") Set Task_Desc = AllItems(I).selectNodes("task_desc") Set Task_Notes = AllItems(I).selectNodes("task_notes") Set Task_Done = AllItems(I).selectNodes("task_done") Set Task_Date = AllItems(I).selectNodes("task_date") If (task_done_str="") Then task_done_str="0" If Trim(task_name_str)<>"" Then Task_Name(0).Text = Trim(task_name_str) If Trim(task_email_str)<>"" Then Task_Email(0).Text = Trim(task_email_str) If Trim(task_desc_str)<>"" Then Task_Desc(0).Text = Trim(task_desc_str) If Trim(task_notes_str)<>"" Then Task_Notes(0).Text = Trim(task_notes_str) If Trim(task_done_str)<>"" Then Task_Done(0).Text = Trim(task_done_str) Task_Date(0).Text = Now() found = True EXIT FOR End If Next If found Then objXML.save strXMLFile updateXMLField = True End if Set objField = Nothing msg = "

Task updated

" END FUNCTION FUNCTION insertXMLField(task_name_str, task_email_str, task_desc_str, task_notes_str, task_done_str, strXMLFile) Dim objField, I, found, max_elem_id, elem_id 'update - find the element elem_id = 1 max_elem_id = 1 For I = 0 to (AllItems.Length - 1) Set Task_ID = AllItems(I).selectNodes("task_id") elem_id = CINT(Task_ID(0).text) If (elem_id => max_elem_id) Then max_elem_id = elem_id + 1 End If Next If (task_done_str="") Then task_done_str="0" 'create and add the elment Dim objTask, obj Set objTask = objXML.createElement("task") objRoot.appendChild(objTask) Set obj = objXML.createElement("task_id") objTask.appendChild(obj) obj.text = max_elem_id Set obj = objXML.createElement("task_name") objTask.appendChild(obj) obj.text = task_name_str Set obj = objXML.createElement("task_email") objTask.appendChild(obj) obj.text = task_email_str Set obj = objXML.createElement("task_desc") objTask.appendChild(obj) obj.text = task_desc_str Set obj = objXML.createElement("task_notes") objTask.appendChild(obj) obj.text = task_notes_str Set obj = objXML.createElement("task_done") objTask.appendChild(obj) obj.text = task_done_str Set obj = objXML.createElement("task_date") objTask.appendChild(obj) obj.text = Now() objXML.save strXMLFile insertXMLField = True Set objField = Nothing msg = "

Task inserted

" END FUNCTION FUNCTION newXMLField(strXMLFile) 'create xml objXML.LoadXML("") objXML.save strXMLFile msg = "

Tasks deleted

" END FUNCTION Response.Write msg %>

XML TaskList © 2003 Nick Sumner www.nicksumner.com