Alpha Software Mobile Development Tools:   Alpha Anywhere    |   Alpha TransForm subscribe to our YouTube Channel  Follow Us on LinkedIn  Follow Us on Twitter  Follow Us on Facebook

Announcement

Collapse

The Alpha Software Forum Participation Guidelines

The Alpha Software Forum is a free forum created for Alpha Software Developer Community to ask for help, exchange ideas, and share solutions. Alpha Software strives to create an environment where all members of the community can feel safe to participate. In order to ensure the Alpha Software Forum is a place where all feel welcome, forum participants are expected to behave as follows:
  • Be professional in your conduct
  • Be kind to others
  • Be constructive when giving feedback
  • Be open to new ideas and suggestions
  • Stay on topic


Be sure all comments and threads you post are respectful. Posts that contain any of the following content will be considered a violation of your agreement as a member of the Alpha Software Forum Community and will be moderated:
  • Spam.
  • Vulgar language.
  • Quotes from private conversations without permission, including pricing and other sales related discussions.
  • Personal attacks, insults, or subtle put-downs.
  • Harassment, bullying, threatening, mocking, shaming, or deriding anyone.
  • Sexist, racist, homophobic, transphobic, ableist, or otherwise discriminatory jokes and language.
  • Sexually explicit or violent material, links, or language.
  • Pirated, hacked, or copyright-infringing material.
  • Encouraging of others to engage in the above behaviors.


If a thread or post is found to contain any of the content outlined above, a moderator may choose to take one of the following actions:
  • Remove the Post or Thread - the content is removed from the forum.
  • Place the User in Moderation - all posts and new threads must be approved by a moderator before they are posted.
  • Temporarily Ban the User - user is banned from forum for a period of time.
  • Permanently Ban the User - user is permanently banned from the forum.


Moderators may also rename posts and threads if they are too generic or do not property reflect the content.

Moderators may move threads if they have been posted in the incorrect forum.

Threads/Posts questioning specific moderator decisions or actions (such as "why was a user banned?") are not allowed and will be removed.

The owners of Alpha Software Corporation (Forum Owner) reserve the right to remove, edit, move, or close any thread for any reason; or ban any forum member without notice, reason, or explanation.

Community members are encouraged to click the "Report Post" icon in the lower left of a given post if they feel the post is in violation of the rules. This will alert the Moderators to take a look.

Alpha Software Corporation may amend the guidelines from time to time and may also vary the procedures it sets out where appropriate in a particular case. Your agreement to comply with the guidelines will be deemed agreement to any changes to it.



Bonus TIPS for Successful Posting

Try a Search First
It is highly recommended that a Search be done on your topic before posting, as many questions have been answered in prior posts. As with any search engine, the shorter the search term, the more "hits" will be returned, but the more specific the search term is, the greater the relevance of those "hits". Searching for "table" might well return every message on the board while "tablesum" would greatly restrict the number of messages returned.

When you do post
First, make sure you are posting your question in the correct forum. For example, if you post an issue regarding Desktop applications on the Mobile & Browser Applications board , not only will your question not be seen by the appropriate audience, it may also be removed or relocated.

The more detail you provide about your problem or question, the more likely someone is to understand your request and be able to help. A sample database with a minimum of records (and its support files, zipped together) will make it much easier to diagnose issues with your application. Screen shots of error messages are especially helpful.

When explaining how to reproduce your problem, please be as detailed as possible. Describe every step, click-by-click and keypress-by-keypress. Otherwise when others try to duplicate your problem, they may do something slightly different and end up with different results.

A note about attachments
You may only attach one file to each message. Attachment file size is limited to 2MB. If you need to include several files, you may do so by zipping them into a single archive.

If you forgot to attach your files to your post, please do NOT create a new thread. Instead, reply to your original message and attach the file there.

When attaching screen shots, it is best to attach an image file (.BMP, .JPG, .GIF, .PNG, etc.) or a zip file of several images, as opposed to a Word document containing the screen shots. Because Word documents are prone to viruses, many message board users will not open your Word file, therefore limiting their ability to help you.

Similarly, if you are uploading a zipped archive, you should simply create a .ZIP file and not a self-extracting .EXE as many users will not run your EXE file.
See more
See less

Creating ICS, vCAl, iCal

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Creating ICS, vCAl, iCal

    Has anyone tackled this on Alpha? MySQL?

    I would love to create an .ics file that users could import into their phones, work Outlook, etc. This would keep them updated with the Alpha Calendar without having to check the website.
    Thanks,

    Roderick Silva
    [email protected]

    About Me: rodericksilva.com
    Twitter: rodericksilva

    #2
    Re: Creating ICS, vCAl, iCal

    This thread http://msgboard.alphasoftware.com/al...calendar-event may help.
    This creates the file that can be attached to an email. I did it a long time ago and SQL or dbf makes no difference.

    Comment


      #3
      Re: Creating ICS, vCAl, iCal

      Gary your code is perfect to attach a single event to an email, etc. That is a great feature that should be built into the A5 calendar. I was thinking more along the lines of a subscription to a calendar this way as events are added on the A5 web app the user's/subscriber's Outlook calendar would be updated regularly.
      Thanks,

      Roderick Silva
      [email protected]

      About Me: rodericksilva.com
      Twitter: rodericksilva

      Comment


        #4
        Re: Creating ICS, vCAl, iCal

        You'd want that code imbedded in an a5w page. www.example.com/a5cal.a5w

        Then have it create the code, and echo it out properly so Outlook can understand it. (I'm not sure how it would work with Outlook as I'm not sure if it allows web based ical's. Try Google calendar, but Gcal only updates ical's once every couple hours)

        Comment


          #5
          Re: Creating ICS, vCAl, iCal

          I just came across this thread and thought I'd share my success with something similar. The code below creates an .ics file from database records that a user can subscribe to for read-only viewing in her/his calendar application (Outlook, Thunderbird, Google calendar, mobile devices, etc). I did include a link in the description that can theoretically open the record in your application from the user's calendar application but without having dealt with security issues here, it's not always useful. And on a similar note, the calendar files have to be sitting on the server and accessible to the outside world, so I'm using security by obfuscation--i.e. putting the files in directories named with GUID strings rather than something a bot could easily break into.

          It's created with the idea that the entire file is deleted and recreated when events change--not ideal, but it's not resource-intensive either. I pieced it together from a number of sources online and I can assure you there would be ways to do it better, but it's working for us. I'm using MySQL and Jim Coltz's A5 jqCalendar, so my database tables/columns and syntax reflect that, but I think most can still figure out what's going on.

          Code:
          FUNCTION ICSFile   AS C (cEmp_ID AS C)
          
          dim cn as sql::Connection
          cn.Open("::Name::MyServerConnection")
          dim args as sql::arguments
          
          args.add("Emp_ID",cEmp_ID)
          
          cn.Execute("SELECT Emp_CalURL FROM employee WHERE emp_ID = :Emp_ID",args)
          
          empCalURL = cn.ResultSet.data("Emp_CalURL")
          
          dim calendarFile as C = filename_decode("[PathAlias.File_Path]") + "\Calendars\\" + empCalURL + "\mySite.ics"
          
          if file.exists(calendarfile)
          	a5_file_remove(calendarfile)
          end if
          
          dir_create_recurse(filename_decode("[PathAlias.File_Path]") + "\Calendars\\" + empCalURL + "\\")
          
          file.create(calendarfile,FILE_RW_SHARED)
          
          dim calendarHeader as C = <<%txt%
          BEGIN:VCALENDAR
          VERSION:2.0
          PRODID:-//MySite//MyCompany//EN
          CALSCALE:GREGORIAN
          METHOD:PUBLISH
          X-WR-RELCALID:ABC
          BEGIN:VTIMEZONE
          TZID:America/New_York
          X-LIC-LOCATION:America/New_York
          BEGIN:DAYLIGHT
          TZOFFSETFROM:-0500
          TZOFFSETTO:-0400
          TZNAME:EDT
          DTSTART:19700308T020000
          RRULE:FREQ=YEARLY;BYDAY=2SU;BYMONTH=3
          END:DAYLIGHT
          BEGIN:STANDARD
          TZOFFSETFROM:-0400
          TZOFFSETTO:-0500
          TZNAME:EST
          DTSTART:19701101T020000
          RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=11
          END:STANDARD
          END:VTIMEZONE%txt%
          
          file.append_line(calendarfile,calendarHeader)
          
          dim sqlSelect as C = <<%txt%
          SELECT ID, Subject, Location, Description, StartTime, EndTime, IsAllDayEvent, Color, StartDate, EndDate
          FROM jqcalendar 
          WHERE Employee = :Emp_ID
          AND StartDate BETWEEN ADDDATE(CURDATE(),INTERVAL -60 DAY) AND ADDDATE(CURDATE(),INTERVAL 120 DAY)
          %txt%
          
          cn.Execute(sqlSelect, args)
          dim rs as sql::ResultSet
          rs = cn.ResultSet
          
          rsFlag = rs.nextRow()
          while rsFlag
          'debug(2)
          	UID = convert_type(rs.data("ID"),"C")
          	Summary = stritran(stritran(rs.data("Subject"),"\\","\\\"),",","\,")
          	Summary = stritran(Summary,";","\;") 'this didn't work when added to line above for some reason
          	Description = stritran(stritran(rs.data("Description"),"\\","\\\"),",","\,")
          	Description = stritran(Description,";","\;") + "\n\nClick or paste in a browser to edit: https://www.mysite.com/MyCalendarEventPage.a5w?id=" + UID
          	IsAllDayEvent = convert_type(rs.data("IsAllDayEvent"),"C")
          	if IsAllDayEvent = "0"
          		DtStart = "DTSTART;VALUE=DATE-TIME:" + time("yyyyMMdd",rs.data("StartDate")) + "T" + time("0h0m0s",rs.data("StartTime"))
          		DtEnd = "DTEND;VALUE=DATE-TIME:" + time("yyyyMMdd",rs.data("EndDate")) + "T" + time("0h0m0s",rs.data("EndTime"))
          	else
          		DtStart = "DTSTART;VALUE=DATE:" + time("yyyyMMdd",rs.data("StartDate"))
          		DtEnd = "DTEND;VALUE=DATE:" + time("yyyyMMdd",rs.data("EndDate"))
          	end if		
          
          	dim eventString as C = "BEGIN:VEVENT" + crlf() + "UID:" + UID + crlf() + "SUMMARY:" + Summary + crlf() + "DESCRIPTION:" + Description + crlf() + DtStart + crlf() + DtEnd + crlf() + "TRANSP:OPAQUE" + crlf() + "STATUS:CONFIRMED" + crlf() + "END:VEVENT"
          	file.append_line(calendarfile,eventString)
          	
          	rsFlag = rs.nextRow()
          end while
          
          cn.close()
          
          file.append_line(calendarfile,"END:VCALENDAR")
          
          END FUNCTION

          Comment

          Working...
          X