Как сделать окно опроса Sharepoint открытым при загрузке страницы - PullRequest
1 голос
/ 09 марта 2011

Я работал над поиском ответа на этот вопрос в течение нескольких дней.Я создал опрос на сайте Sharepoint 2010, и человек, для которого я его создал, хочет, чтобы он открывался в модальном окне при загрузке страницы, вместо того чтобы нажимать «Ответить на опрос», чтобы это произошло.

Я пробовал несколько решений на основе JavaScript, и пока ничего не получил.Есть какой-либо способ сделать это?И, если есть, возможно ли, что это решение может быть перенесено на другие страницы, чтобы я мог сделать другие опросы или другие страницы sharepoint открытыми в модальном окне (при загрузке страницы) вместо отдельной страницы?

Ответы [ 2 ]

2 голосов
/ 18 января 2013

Использовать ... / yoursite / lists / yoursurvey / NewForm.aspx - кажется, что расширенная настройка "использовать открытые формы в диалоге" не работает.

0 голосов
/ 13 мая 2011

Я сделал это для окна политики. Я сделал все это внутри веб-части редактора контента, которая в основном невидима, потому что у кода нет внешнего вида, и я установил тип хрома в none.

Другой вариант - это функция, которая заменяет главную страницу, которая также не является сложной, но требует системы разработки для VS2010.

Для первого упомянутого метода. Возможно, вам придется удалить файлы cookie, если вы хотите, чтобы они загружались каждый раз. Создайте новую веб-часть редактора контента с этим:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.5.2.min.js"></script>
<script type="text/javascript" src="disclaimer.js"></script>

Затем создайте disclaimer.js:

_spBodyOnLoadFunctionNames.push("initialDisclaimerSetup");

var dialogTitle = "";
var dialogBody = "";
var dialogReturn = "";
var userID = _spUserId;

function initialDisclaimerSetup() {
    if(getCookie("DisclaimerShown" + userID) == "Yes") {
        return;
    } else {
        setCookie("DisclaimerShown" + userID, "No", 365);
    }

    getDisclaimerListItems();
}

function setCookie(cookieName, cookieValue, numExpireDays) {
    var expirationDate = new Date();
    expirationDate.setDate(expirationDate.getDate() + numExpireDays);
    document.cookie = cookieName + "=" + cookieValue + ";" +
        "expires=" + ((numExpireDays == null) ? "" : expirationDate.toUTCString());
}

function getCookie(cookieName) {
    if(document.cookie.length > 0) {
        return document.cookie.split(";")[0].split("=")[1];
    } else {
        return "";
    }
}

function getDisclaimerListItems() {
    var listName = "Disclaimer";

    var soapEnv = "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
        + "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "
        + "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" "
        + "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope\/\">"
        + "<soap:Body>"
        + "<GetListItems xmlns=\"http://schemas.microsoft.com/sharepoint/soap/\">"
        + "<listName>" + listName + "</listName>"
        + "<query><Query><Where><IsNotNull><FieldRef Name=\"Title\" /></IsNotNull></Where></Query></query>"
        + "<ViewFields><ViewFields>"
        + "<FieldRef Name=\"Title\"/><FieldRef Name=\"Disclaimer\"/>"
        + "</ViewFields></ViewFields>"
        + "</GetListItems>"
        + "</soap:Body>"
        + "</soap:Envelope>";

    $.ajax({
        url: "_vti_bin/Lists.asmx",
        type: "POST",
        dataType: "xml",
        data: soapEnv,
        contentType: "text/xml; charset=\"utf-8\"",
        complete: processResult
    });
}

function processResult(xData, status) {
    $(xData.responseXML).find("z\\:row").each(function() {
        dialogTitle = $(this).attr("ows_Title");
        dialogBody = $(this).attr("ows_Disclaimer");
        launchModelessDialog();

        if(dialogReturn == 0) {
            return false;
        } else if(dialogReturn == 1) {
        } else if(dialogReturn == 2) {
            return false;
        }
    });

    if(dialogReturn == 0) {
        getDisclaimerListItems();               
    } else if(dialogReturn == 1) {
        setCookie("DisclaimerShown" + userID, "Yes", 365);
    } else if(dialogReturn == 2) {
        window.close();
    }
}

function GetRootUrl() {
    var urlParts = document.location.pathname.split("/");
    urlParts[urlParts.length - 1] = "";
    return "https://" + document.location.hostname + urlParts.join("/");
}

function launchModelessDialog(){
    if (window.showModalDialog) {
        window.showModalDialog("./disclaimer.htm", window, "dialogWidth:700px;dialogHeight:700px");
    } else {
        objPopup = window.open("./disclaimer.htm", "popup1", "left=100,top=100,width=800,height=800,location=no,status=yes,scrollbars=yes,resizable=yes, modal=yes");
        objPopup.focus();
    }
}

Затем создайте disclaimer.htm:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title></title>
<script type="text/javascript">

    function initialRun() {
        //var allArgs = dialogArguments;
        var dialogTitle = dialogArguments.dialogTitle;
        var dialogBody = dialogArguments.dialogBody;
        dialogArguments.dialogReturn = "0";

        document.getElementById('mainWrapper').innerHTML = "<h1>" + dialogTitle + "</h1>"
            + "<br/>" + dialogBody + "<br/><br/>";
    }

    function returnYes() {
        dialogArguments.dialogReturn = 1;
        window.close();
    }

    function returnNo() {
        dialogArguments.dialogReturn = 0;
        window.close();
    }

    function returnClose() {
        dialogArguments.dialogReturn = 2;
        window.close();
    }
</script>
</head>

<body onload="initialRun()">
<div id="mainWrapper">
</div>
<div align="center">
    <input name="acceptTOS" type="button" value="I Accept" onClick="returnYes();" />
    <input name="acceptTOS" type="button" value="I Do NOT Accept" onClick="returnNo();" />
    <input name="acceptTOS" type="button" value="Close" onClick="returnClose();" />
</div>
</body>
</html>

Затем создайте новый пользовательский список с именем «Отказ от ответственности» и добавьте новый столбец с именем «Отказ от ответственности», который допускает свободный текст.

...