Jump to content

Recommended Posts

Posted
Anyone know of a way to view these on iPad? Can view them via OWA on a PC with IE when not in lite mode, but cant find a way to see them on iPad.
Posted (edited)

Neither do we. It connects to our local Exchange server fine from LAN or offsite over the net via our webmail url...

 

I think they updated the app to support this recently. When we originally trialled it yep, it could only connect to 365, same as the Win8 Mail App, but since Win 8.1 released the iOS OWA app and Win8 Mail App have both been updated to connect to native Exchange servers etc.

Edited by Marci
Posted
Neither do we. It connects to our local Exchange server fine from LAN or offsite over the net via our webmail url...

 

I think they updated the app to support this recently. When we originally trialled it yep, it could only connect to 365, same as the Win8 Mail App, but since Win 8.1 released the iOS OWA app and Win8 Mail App have both been updated to connect to native Exchange servers etc.

 

I tried this week and computer said no. Will try again.

Posted
Neither do we. It connects to our local Exchange server fine from LAN or offsite over the net via our webmail url...

 

I think they updated the app to support this recently. When we originally trialled it yep, it could only connect to 365, same as the Win8 Mail App, but since Win 8.1 released the iOS OWA app and Win8 Mail App have both been updated to connect to native Exchange servers etc.

 

Just tried again, it's not having it. We have Exchange 2010

  • 5 months later...
Posted
Still looking into this, need a way of showing our global shared calender on mobile devices, BlackBerry, iOS and Android.
Posted (edited)

We're definitely using OWA for iPad with Exch2010 & 2013 hosted onsite without any issues... but as an alternative...

 

If you've got a web server handy upon which you can drop a quick pile of PHP you can use https://github.com/jamesiarmes/php-ews

 

Save the below as calendar.php somewhere publicly accessible on the server, then bash a link to webcal://your.website.add/pathto/calendar.php - click the link on any device supporting webcal:// protocol, and you'll get the prompt to add it into whatever the default calendar app is.

 

Obvs change variables at the top, and $mailBox->EmailAddress...

 


$host = 'your.exchserver.co.uk';
$username = 'areadonlyuser';
$password = 'theirpassword';
$from =  date('c');
$to =  date('c',strtotime("+2 years", strtotime(date('c'))));


require_once('../pathto/ews/EWS_Exception.php');
require_once('../pathto/ews/ExchangeWebServices.php');
require_once('../pathto/ews/EWSType.php');
require_once('../pathto/ews/NTLMSoapClient.php');
require_once('../pathto/ews/NTLMSoapClient/Exchange.php');
require_once('../pathto/ews/EWSType/FindItemType.php');
require_once('../pathto/ews/EWSType/ItemQueryTraversalType.php');
require_once('../pathto/ews/EWSType/DistinguishedFolderIdNameType.php');
require_once('../pathto/ews/EWSType/DefaultShapeNamesType.php');
require_once('../pathto/ews/EWSType/ItemResponseShapeType.php');
require_once('../pathto/ews/EWSType/CalendarViewType.php');
require_once('../pathto/ews/EWSType/NonEmptyArrayOfBaseFolderIdsType.php');
require_once('../pathto/ews/EWSType/DistinguishedFolderIdType.php');
require_once('../pathto/ews/EWSType/EmailAddressType.php');


$ews = new ExchangeWebServices($host, $username, $password);


$request = new EWSType_FindItemType();
$request->Traversal = EWSType_ItemQueryTraversalType::SHALLOW;


$request->ItemShape = new EWSType_ItemResponseShapeType();
$request->ItemShape->BaseShape = EWSType_DefaultShapeNamesType::DEFAULT_PROPERTIES;


$request->CalendarView = new EWSType_CalendarViewType();
$request->CalendarView->StartDate = $from;
$request->CalendarView->EndDate = $to;


$request->ParentFolderIds = new EWSType_NonEmptyArrayOfBaseFolderIdsType();
$request->ParentFolderIds->DistinguishedFolderId = new EWSType_DistinguishedFolderIdType();
$request->ParentFolderIds->DistinguishedFolderId->Id = EWSType_DistinguishedFolderIdNameType::CALENDAR;


$mailBox = new EWSType_EmailAddressType();
$mailBox->EmailAddress = "[email protected]";
$request->ParentFolderIds->DistinguishedFolderId->Mailbox = $mailBox;
       
$response = $ews->FindItem($request);
$array = $response->ResponseMessages->FindItemResponseMessage->RootFolder->Items->CalendarItem;




$SaveAs='sharedcalendar.ics';   //name of the file that is displayed to the browser when the php file is clicked on
     ob_start(); //start output buffering so can offer the output as a file rather than streamed to the users browser
           echo "BEGIN:VCALENDAR\n"; //some static ical headers
           echo "METHOD:PUBLISH\n";
           echo "VERSION:2.0\n";
           echo "PRODID:-//www.yourschool.co.uk//Your School Events Calendar//EN\n";
           echo "X-WR-CALNAME:OA Internal Events\n";
           echo "X-WR-TIMEZONE:Europe/London\n";
           echo "CALSCALE:GREGORIAN\n";
           echo "BEGIN:VTIMEZONE\n";
           echo "TZID:Europe/London\n";
           echo "BEGIN:DAYLIGHT\n";
           echo "TZOFFSETFROM:+0000\n";
           echo "RRULE:FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU\n";
           echo "DTSTART:19810329T010000\n";
           echo "TZNAME:BST\n";
           echo "TZOFFSETTO:+0100\n";
           echo "END:DAYLIGHT\n";
           echo "BEGIN:STANDARD\n";
           echo "TZOFFSETFROM:+0100\n";
           echo "RRULE:FREQ=YEARLY;BYMONTH=10;BYDAY=-1SU\n";
           echo "DTSTART:19961027T020000\n";
           echo "TZNAME:GMT\n";
           echo "TZOFFSETTO:+0000\n";
           echo "END:STANDARD\n";
           echo "END:VTIMEZONE\n";
                       
           $iCalFeed = ""; //setup a variable to hold the iCal feed
           
           foreach ($array as $evt) //keep fetching events until there is no more
           {      
                
               $EvPref='VALUE=DATE:';
               $EventDate = date('Ymd',strtotime($evt->Start));
               $EventEndDate = date('Ymd',strtotime($evt->End));
               
               $EventID = str_replace('/','',$evt->ItemId->Id); //pull data from the database
               $EventSummary = $evt->Subject;
               $EventDescription = $evt->Subject;
               $EventLocation = $evt->Location;
               
               $iCalFeed = $iCalFeed . "BEGIN:VEVENT\n"; //build the ical event and store to feed
                 $iCalFeed = $iCalFeed . "UID:" . $EventDate . $EventID ."\n";
               $iCalFeed = $iCalFeed . "DTSTART;".$EvPref . $EventDate . "\n";
               $iCalFeed = $iCalFeed . "DTEND;".$EvPref . $EventEndDate . "\n";
               $iCalFeed = $iCalFeed . "ORGANIZER: wscalendar\n";
               $iCalFeed = $iCalFeed . "SUMMARY:" . $EventSummary . "\n";
               $iCalFeed = $iCalFeed . "DESCRIPTION:" . $EventDescription . "\n";
               $iCalFeed = $iCalFeed . "LOCATION:" . $EventLocation . "\n";
               
               $iCalFeed = $iCalFeed . "CLASS:PUBLIC\n";
               $iCalFeed = $iCalFeed . "TRANSP:TRANSPARENT\n";
               $iCalFeed = $iCalFeed . "END:VEVENT\n";
           }
    
           $iCalFeed = str_replace("’", "'", $iCalFeed); //swap out any dubious characters that will break the ical feed
           $iCalFeed = str_replace(",", "\,", $iCalFeed);
           $iCalFeed = str_replace("\r\n", " ", $iCalFeed);
    
           echo $iCalFeed; //pump out the ical feed
           echo "END:VCALENDAR";
     $Buffer = ob_get_contents(); //save the output buffer to a variable
     ob_end_clean();  //clean up the output buffer and end capture
    
     /*header("Pragma: public"); //construct some headers that will make the users browsers think a static file is being downloaded
     header("Expires: 0");
     header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
     header("Cache-Control: private", false);
     header("Content-Transfer-Encoding: binary ");
     header('Content-Type: application/force-download');
     header("Content-Type: application/download");
     header('Content-Length: '.strlen($Buffer));
     header('Content-Disposition: attachment; filename="' . $SaveAs . '"');*/
     echo $Buffer; //send the ical feed to the users browser promoting a saveas file dialog
?>

 

We have several links available to our users which all provide the same calendar...

 

For webcal users (iOS & OSX support natively thru Calendar.app, Windows users via Outlook installed or another webcal associated client, Android & Blackberry via plethora of iCal / webcal client apps), a link to the above script.

For gMail users (this is probably what Android users will end up going for), https://www.google.com/calendar/render?cid=webcal://www.yourwebserver.co.uk/rss/calendar.php&safe=vss (which passes the webcal protocol link directly to Google Calendar, giving google account holders the chance to subscribe through Google's systems, rather than needing to give them instructions for manually adding the URL).

For our OWA users, https://our.mailserver.co.uk/owa/[email protected]/?cmd=contents&module=calendar&view=monthly where [email protected] represents the email account tied to the shared calendar in question.

 

Anyone who has subscribed in OWA for desktop, when they login to OWA for iPad (the app) or your OWA URL via Safari, any calendars they've already subscribed to will be there by default. OWA for iPhone apparently still only connects to Office365.

 

We also have a separate set of links that share our exams calendar, and another which just covers term-dates, and another which just covers public events, as well as the main links above which essentially provide all of those in a single calendar.

Edited by Marci
  • Thanks 1

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now



×
×
  • Create New...