Программирование с Visio в SharePoint, создать новую встречу Outlook в?Javascript?

Я немного экспериментирую с Visio, и я хочу показать файл Visio в SharePoint, файл Visio показывает макет здания, комнаты собраний и их статус + возможность бронировать их с помощью Outlook.

Комнаты собраний определяются в Outlook как адрес электронной почты, и вы можете отправить письмо в комнату, чтобы забронировать его.

Поскольку комнат много, и вы не можете увидеть их наличие, прежде чем добавить комнату в приглашение на встречу, я хочу создать обзор этого в Visio.

Что у меня есть до сих пор: Программа, написанная на C#, которая работает как служба таймера, которая получает информацию о комнатах и ​​собраниях и записывает ее в базу данных SQL2008R2.

2 таблицы:

Комната: RoomEmail, RoomName, FloorNumber, Capacity, RoomStatus(прямо сейчас)

Собрание: MeetingID, RoomEmail (FK), MeetingTitle, MeetingStatus, MeetingStartTime, MeetingEndTime.

Файл Visio добавляется в SharePoint и работает там, прекрасно обновляется. Номера отображаются как красные, если заняты, зеленые, если свободны, и желтые, если предварительно.

Это очень помогает для статуса прямо сейчас, но я хочу еще 2 функциональности.

  • Можно щелкнуть ссылку где-нибудь на диаграмме Visio или в другой веб-части и открыть локальный клиент Outlook с новым собранием и комнатой в поле "тоже"
  • Возможность видеть запланированные встречи в выбранной комнате, чтобы увидеть, когда можно забронировать его, прежде чем открывать Outlook.

После того, что я видел, невозможно связать фигуры с другой, кроме одной конкретной строки, когда вы соединяете данные в Visio (именно поэтому я добавил roomStatus в таблицу Room). До сих пор я видел в Javascript возможность создавать логику с помощью фигур Visio.

Я добавил это в веб-часть контента:

<script language="javascript">
var app = Sys.Application;

app.add_load(onApplicationLoad);

// hold an instance of the Visio VWA control
var vwaControl; 

var shapeSelectionChangedHandler = null;


function onApplicationLoad()
{
    vwaControl= new Vwa.VwaControl("WebPartWPQ4");
    vwaControl.addHandler("diagramcomplete", onDiagramComplete);
    vwaControl.addHandler("shapeselectionchanged", shapeSelectionChangedHandler);
}

function onDiagramComplete()
{
    var vwaPage = vwaControl.getActivePage(); 
    vwaPage.setZoom(35); // force the initial zoom level
}


shapeSelectionChangedHandler = function(source, args)
{
    // get the selected shape from the shapes on the page
    var vwaPage = vwaControl.getActivePage(); 
    var vwaShapes = vwaPage.getShapes(); 
    var shape = vwaShapes.getItemById(args);

    // get the data to display for the selected shape
    var data = shape.getShapeData();

    var strRoomName = ""; 
    var strFloorNumber = "";
    var strCapacity = ""; 
    var strStatus = ""; 

    for (var j = 0; j < data.length; j++)
    {
        if (data[j].label == "RoomName")
        {
            strRoomName = data[j].value;
            continue;
        } 

        if (data[j].label == "FloorNumber")
        {
            strFloorNumber = data[j].value;
            continue;
        }

        if (data[j].label == "Capacity")
        {
            strCapacity = data[j].value;
            continue;
        }        

        if (data[j].label == "RoomStatus")
        {
            strStatus = data[j].value;
            continue;
        }                
    }

    // get the selected state input and set its value
    var  inputRoomName = document.getElementById('strRoomName');
    inputRoomName.value = strRoomName;

    var inputFloorNumber = document.getElementById('strFloorNumber');
    inputFloorNumber.value = strFloorNumber;

    var inputCapacity = document.getElementById('strCapacity');
    inputCapacity.value = strCapacity;    

    var inputStatus = document.getElementById('strStatus');
    inputStatus.value = strStatus;        
}


</SCRIPT>

Room Name:<br>
<input id="strRoomName" name="Room Name" style="width: 284px" type="text" />
Floor Number:<br>
<input id="strFloorNumber" name="Floor Number" style="width: 284px" type="text" />
Capacity:<br>
<input id="strCapacity" name="Capacity" style="width: 284px" type="text" />
Status:<br>
<input id="strStatus" name="Status" style="width: 284px" type="text" />

Этот код работает хорошо, когда я щелкаю по комнате, он отображается в веб-части контента. Ссылка: http://msdn.microsoft.com/en-us/library/gg243427.aspx

Итак, я посмотрел на некоторых сайтах, чтобы иметь возможность открыть Outlook из Javascript:

Опс, не могу опубликовать больше ссылок, вот код:

function objappt(Subject, Start, Location, End, RequiredAttendees, Body) {
}

var objOL //As Outlook.Application;
var objAppt //As Outlook.AppointmentItem;
var olAppointmentItem = 1;
var olMeeting = 1;

objOL = new ActiveXObject("Outlook.Application");
objappt = objOL.CreateItem(olAppointmentItem);
// With objappt;
objappt.Subject = "My Test Appointment";
objappt.Start = "11/23/2008 9:00 AM";
objappt.End = "11/23/2008 9:45 AM";
// make it a meeting request;
objappt.MeetingStatus = olMeeting;
objappt.Location = "NSW";
objappt.Body = "Testing";
objappt.RequiredAttendees = "someone@somewhere.dom";
objappt.Display();
// End With;

objAppt = null;
objOL = null 

Nr2:

//Open Meeting Request
function ResMtg(cal,start,end){
//alert(cal+' - '+start+' - '+end);
//Inbox = 6
//Calendar = 9
var mailFolder = ns.getDefaultFolder(9);
var mailItem = mailFolder.Items.Add("IPM.Appointment.ConfRmReq"); 
mailItem.MeetingStatus = 1;
mailItem.Subject = "**Meeting Subject**"; 
mailItem.Start = start;
mailItem.End = end;
var recipient = mailItem.Recipients.Add(cal);//attendees list
recipient.Resolve;
if(recipient.Resolved){mailItem.Display();}
else{alert('Unable to resolve this calendar: '+cal);}
}

Nr3:

  var outlookApp = new ActiveXObject("Outlook.Application");
  var nameSpace = outlookApp.getNameSpace("MAPI");
  mailFolder = nameSpace.getDefaultFolder(6);
  mailItem = mailFolder.Items.add('IPM.Note.FormA');
  mailItem.Subject="CUSTOMER SERVICE";
  mailItem.To = document.frmM.txtEmail.value;
  mailItem.HTMLBody = 

Все они из довольно старых примеров.

Я также хочу показать информацию из таблицы собрания, связанной с выбранной комнатой. У меня есть информация о том, в какой комнате, но у меня нет связи с таблицей собраний. И я знаю, что вы не можете безопасно подключиться к базе данных непосредственно в Javascript.

Раньше я не занимался кодированием в Javascript, поэтому здесь немного не хватает.

Кто-нибудь знает, как я мог сделать эти 2 функции? Я очень благодарен за любую помощь!

0 ответов

Другие вопросы по тегам