每月檔案: 6 月 2009

InfoPath 表單小賣部, 基於表單的身份驗證 (FBA) 與檔的唯一名稱

已經對某些 InfoPath 表單本周在 MOSS 中 FBA 環境中工作和學習, 後要部署到生產環境中使用 FBA 表單區域的使用者名() 功能不起作用. 我用它來生成唯一的檔案名.

井, 該函數不會在 FBA 環境中工作 (至少, 不走出困境). 和, 經過思考, 我曾計畫的方式使用使用者名不會保證了唯一的檔案名在任何事件.

我的解決辦法是使用現在() 函數和觸發表單的載入規則. 我需要將檔案名稱分配資料元素,當它是空白:

image

image

這種方法的優點是只有一次集檔案名稱. (再不在螢幕抓圖, 但只有火當"myFilename"為空時的規則放一個條件). 我用來在資料來源級別設置的檔的名稱. 通常, 我會做的東西 (壞) 喜歡這個:

image

問題是,如果在週一打開表單,使用者 A 和使用者 B 改變了它在週二, 由於兩個不同的使用者將其保存為不同的使用者名稱,你就會最終具有兩種不同形式.

所以, 煩人 FBA 可以是一般和使用 InfoPath 特別是, 它讓我重新思考小但很重要的技術細節和做法,否則不會做!

</結束>

訂閱我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

Technorati 標籤:

確保 SharePoint 清單/文件庫視圖,似乎 (排序的) JQuery 的可能

這是另一個帖子中的我 系列 有關如何使用 jQuery 使用 SharePoint.
如果您想要瞭解更多關於 jQuery, 我強烈建議你: jQuery 在行動 由熊 Bibeault 和 Routes.

第一件事我還以為, 一旦我開始玩 jQuery, 是是否我們可以用它來確保 SharePoint 視圖. 答案是"不" (或至少, 我不宣稱自己可能). 不過, 很有可能要讓人看見的特定視圖的困難.

我的沙箱環境時這項工作的開始. 我寫了關於此處的環境: 快速而方便地: 為 SharePoint 創建您自己的 jQuery 沙箱.

以"安全"視圖, 請按照這些步驟操作:

  1. 創建的視圖如果想要確保. 我那樣做了,稱之為"擔保視圖".

    這是它看起來像當它不"安全":

    image

  2. 將內容編輯器 web 部件添加到視圖的頁面使用沙箱條所述的訣竅 (e 小節. 添加"流覽量 = 共用&ToolPaneView = 2"到的 URL).
  3. 找出您的 SharePoint _spUserId 由以下這些瘋狂的步驟, 信不信:
    1. 登錄到您的 SharePoint 環境.
    2. 在 web 瀏覽器的位址欄位, 類型: "javascript:警報("_spUserId).
    3. 記錄結果 (它是"13"在我的例子).

      image

  4. 將下面的 javascript 代碼添加到您在代碼視圖中的 CEWP:

    <腳本類型 ="文本 javascript"
        src ="../../jQuery Library/jquery-1.3.2.min.js">
    </腳本>
    
    <腳本類型 ="文本 javascript">
      $(功能() {
    
        警報(_spUserId);
    
        var theSecuredView = $(iframe[FilterLink * = 擔保的  view]');
    
        如果 ((theSecuredView.length > 0) && (_spUserId = = 13))
          $(iframe[FilterLink * = 擔保的  view]').父().父().父().html("<背景色 tr = 紅色><運輸署>沒有你的看法!</運輸署></tr>");
      });
    
    </腳本>
    

我已經包括了該警報(_spUserId) 線在那裡展示如何,這不是真的"確保安全"視圖, 但只使它更難見. 更多的時刻.

基本上, jQuery 尋找那些具有一個包含"安全 view"在其值的屬性頁面上的 iFrame. 一旦找到了,它, 我們檢查當前使用者是否是"13". 如果它是, 我們走到 DOM <TR> 標記 (其中我想通了,通過查看源和追蹤它) 然後替換那 TR 標籤與我的消息. 我真的不知道這是多麼旺盛 (我很懷疑, 事實上), 但它在我的沙箱工作. 如果找到了更好的方式, 關於它的博客,我會. 這是的結果:

image

按一下 OK 按鈕,資料會被替換大紅色的消息:

image

正如你可以告訴, 種方式讓我實現這個"安全"解決方案是允許 web 部件來呈現自己. 它完成後, 我用我"沒有視圖為你改寫其內容!"消息.

儘管它不是真的"擔保"視圖, 它是可能是有用的和與一些聰明的工作, 它最終可能安全更正式的意義上. 根本的問題是,用戶端獲取的所有資料,然後, 它獲取的資料後才, 它擦乾,再. 如果用戶端獲取資料, 聰明的使用者可以防止 jQuery 在所有運行並查看想看到什麼.

有其他缺點. 這種"安全"的方法基於 _spUserId. 我們想要真正安全的基礎完整的 SharePoint 安全模型, 或者說,至少按使用者名稱. 那變得越來越難, 但我看到就此主題寫一些好的東西, 所以我希望這一問題的好答案.

應修整自己的視圖清單, 如果可能的話. 我還沒有嘗試去弄明白. 是它可能, 但真的並不能解決根本的安全問題,因為有人可能仍然只是鍵入 URL 的他們想要的視圖 (如果他們知道它). 不過, 切邊有道理. 這是一個良好的可用性功能,它有助於混淆的東西. 如果最終使用者並不知道查看事件的存在, 他們可能不會嘗試使用它. 有時, 這就是不夠好.

運氣好的話, 我會有更多的要寫上這一問題隨著時間的推移.

</結束>

訂閱我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

快速而方便地: 更好的對使用 jQuery 隱藏 SharePoint Form 上的文字欄位

這是另一個帖子中的我 系列 有關如何使用 jQuery 使用 SharePoint.
如果您想要瞭解更多關於 jQuery, 我強烈建議你: jQuery 在行動 由熊 Bibeault 和 Routes.

以前, 我寫了關於如何使用 jQuery 來查找和隱藏表單的文字欄位. 我不在乎的具體辦法 (我被束縛的父母 — — 那只是不做這些天, 至少在家庭的品質).

當開始去想它, 我知道我需要去找 <TR> 我可以調用隱藏() 方法. 我找到正確的早期努力 <TR> 這像是:

$(' tr:已(輸入[標題 = 隱藏我!])');

問題是它會找到每個 <TR> 我有任何父關係到隱藏的標記! 欄位, 即使隱藏我! 是多層深的嵌套 <TR>的. 原來,在我的沙箱表單, 該運算式找到 9 不同 TR 的有隱藏我! 作為一個孩子在其 DOM 樹的某個地方. 我意識到,能回到上一棵樹從輸入欄位本身走, 這就是我如何結束濫用父母, 但它不好我坐在一起.

給這一些想法和我讀了最後的事情之一是合情合理的: 我可以用不() 方法以修剪出 <TR>我不想在我包裝一套. 我被引到這:

$(' tr:已(輸入[標題 = 隱藏我!])').不(' tr:已(tr)').隱藏();

第一位發現所有 <TR> 我有隱藏的標記! 他們自己層次結構中任何位置的欄位. 它然後帶出任何 <TR> 那也有一個孩子 <TR>. 這使我們與單 <TR> 那:

1) 有無 <TR> 子記錄

2) 沒有輸入的欄位作為孩子.

然後,我們可以應用隱藏() 設置到結果的方法和我們做完了.

我還是有點緊張, 但作為連結的父母不一樣緊張.

我不知道這不是是一種最佳做法. 可能更適當的方式確定的只是 <TR> 我們關心的 SharePoint 表單中. 如果你知道, 請張貼評論.

</結束>

訂閱我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

快速而方便地: 使用 jQuery 隱藏 SharePoint Form 上的文字欄位

這是另一個帖子中的我 系列 有關如何使用 jQuery 使用 SharePoint.
如果您想要瞭解更多關於 jQuery, 我強烈建議你: jQuery 在行動 由熊 Bibeault 和 Routes.

更新 (已經!): 我沒有想到更好的方法來定位 <TR> 我想要隱藏的標記和 在這裡寫了關於它. 你可能仍然覺得這篇文章有趣反正所以我 leavnig 起來.

我想要隱藏的文字欄位, "隱藏我!"如圖所示:

image

下面的 jQuery 我的戲法:

<腳本類型 ="文本 javascript">

  $(功能() {


    $(' 輸入[標題 = 隱藏我!]').父().父().父().隱藏();

  });

</腳本>

該代碼說, "查找我所有輸入欄位的標題 = 隱藏我!. 然後, 獲取其父,然後下一步父和 * 下一步 * 父 (籲!) 和調用隱藏() 關於那件事的方法, 不管它恰好是.

我想出這種父結構通過查看 HTML 的表單的 SharePoint 創建如圖所示:

<TR>
    <TD nowrap="true" 底邊對齊="強" 寬度="190px" ="ms-formlabel">
        <H3 ="ms-standardheader">
            <nobr>隱藏我!</nobr>
        </H3>
    </TD>

    <TD 底邊對齊="強" ="ms formbody" 寬度="400px">
        <!-- FieldName ="隱藏我!"
                 FieldInternalName ="Hide_x0020_Me_x0021_"
                 FieldType ="SPFieldText"
        -->
        <大跨度 dir="none">
            <輸入
                名稱="ctl00$ m$ g_bdb23c2c_fde7_495f_8676_69714a308d8e$ ctl00$ ctl04$ ctl02$ ctl00$ ctl00$ ctl04$ ctl00$ ctl00$ 文字欄位"
                類型="文本"
                maxlength="255"
                id="ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
                標題="隱藏我!"
                ="ms 長" />
                <br>
        </大跨度>


    </TD>
</TR>

此圖片顯示了相同, 但標有父母:

image

第一父 (1) 是 span 標記. 跨度的父 (2) 是 TD 標籤,然後最後我們來到了真正的我想要隱藏的父 (3) 哪個是 TR 標籤本身.

這是一個相當可怕的方法,我認為因為它非常依賴于這種形式非常特定的結構. 當 SharePoint 2010 出來, 這整個的結構可以改變,打破這種方法. 我真的想做是一個 jQuery 選擇器,是沿著線的工藝"找到我所有 TR 的 (和唯一 TR 標籤) 有某個地方在它們的子項目一個輸入的欄位的標題 = 隱藏我!”. 我從底部開始,向上移動. 假設我把這弄, 我會發佈最新"快速和容易 ' 開機自檢.

</結束>

訂閱我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

del.icio.us 標籤: ,

快速而方便地: 為 SharePoint 創建您自己的 jQuery 沙箱

這是另一個帖子中的我 系列 有關如何使用 jQuery 使用 SharePoint.
如果您想要瞭解更多關於 jQuery, 我強烈建議你: jQuery 在行動 由熊 Bibeault 和 Routes.

在 SharePoint 中的 jQuery 入門是非常的簡單 (對我來說). (我有嚴重的問題,關於"最佳做法"的做法對生產部署這些東西, 但這是另一天). 我剛開始玩這種技術,並為此目的, 我創建了一個沙箱環境使用. 如果你想要瞭解的 jQuery 入門, 您可能會發現這種方法很有用.

1. 創建一個空白網站

在您的網站在某個地方創建一個空白網站和叫它像"jQuery 沙箱"聰明的東西.

2. 下載 jQuery

您可以從這裡下載的 jQuery javascript 庫: http://docs.jquery.com/Downloading_jQuery

要保存到您的桌面.

我一直在用的"還是測試"的版本.

3. 創建一個 SharePoint 文件庫

在沙箱網站, 創建文件庫.

4. 上載到 SharePoint 的 jQuery 庫

訪問您剛剛創建的文件庫和上傳的 jQuery 庫.

5. 創建自訂 SharePoint 清單

因為我想要標準 SharePoint 形式再亂動,我已經開始自訂清單. 您還可以創建頁面庫中的網頁或 web 部件頁和可能很多其他的地方.

將一些列添加到自訂清單,所以,你有什麼要運行 jQuery 反對. 我最初的目標是 ︰:

  1. 隱藏欄位.
  2. 將一個值分配給欄位.

與這一目標, 我添加了兩個文字欄位. 隨著時間的推移, 我會玩的連結, 圖像, 查找, 等.

6. NewForm.aspx Web 組件頁面修改和添加內容編輯器 Web 組件

這是一個小的黑色 magic-ish , 它是一個新的概念,對我. 我第一次聽說這從 保羅翼, SharePoint jQuery 超級巨星, 他 CodePlex 專案工地: http://spff.codeplex.com/.

請按照以下步驟添加到同一頁,為任何自訂的清單中顯示 NewForm.aspx 的布魯塞爾:

  1. 訪問自訂清單,並按一下新建.
  2. 將以下內容追加到 URL: 流覽量 = 共用&ToolPaneView = 2

這將改變你無聊的香草的資料輸入表單從這樣的事情:

image

到這:

image

向頁面添加內容編輯器 web 部件.

7. 寫你的第一個 jQuery 代碼

開放,CEWP 在代碼視圖中,添加以下內容:

image

這是實際的代碼,如果你想要複製/粘貼:

<腳本類型 ="文本 javascript"
    src ="../../jQuery Library/jquery-1.3.2.min.js">
</腳本>

<腳本類型 ="文本 javascript">
  $(功能() {

    $('' #resultsID).html(' 有 ' + $('' a).大小() + ' 標記此頁上標籤 '。);

  });
</腳本>

結果:
<div id ='' resultsID></div>
/結果

請注意,第一次 <腳本> 標記引用實際的 jQuery 庫. 大概是, 這些東西隨著時間的推移改變, 所以你要確保你) 使用合適的名稱,b) 它指向正確的 SharePoint 文件庫.

沐浴在榮耀

如果你能做到正確, 您將看到類似于以下內容的結果:

image

總結

這不是唯一的方法,要開始, 但它是快, 容易與您現有的 SharePoint 環境隔絕.

</結束>

訂閱我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin

del.icio.us 標籤: ,

快速而方便地: SharePoint 表單上使用 jQuery 為設置文本域的值

我開始玩, jQuery 昨天. 我一直想這樣做很長時間, 自從 保羅翼 開始寫 他的系列 關於 jQuery 為最終使用者在尊者 www.endusersharepoint.com web 網站. 當我使用它, 我希望能添加一系列的"快速和容易"職位像這樣. 這篇文章描述了如何將一個已知的文字欄位值設置為你想要的一切.

在此方案中, 我創建了其"新"的表單看起來如圖所示的自訂清單:

image

這是一個自訂清單的預設標題列的新表單和兩個清單列 (沒有為網站列; 我不認為它應該沒有區別).

目標是將任意值分配給欄位, ""DefaultMeFieldNoSpaces (你能告訴我是有點懦夫與"不能有空格"事, 但我做辣一點在結束了這篇文章).

此位 jQuery 為我工作:

<腳本類型 ="文本 javascript">

  $(功能() {

    $(' 輸入[標題 = DefaultMeFieldNoSpaces]').attr(
        {價值: ' 你是在曲折迂回的通道, 都一樣.'});

  });

</腳本>

據我所知這位 jQuery 說, "我找任何輸入標記的標題 = DefaultMeFieldNoSpaces. 然後, 設置所有其值為一句名言從舊的電腦遊戲。

因為只會有一個欄位在表單的標題上等於"DefaultMeFieldNoSpaces"我們是放心地將一個值分配給該欄位,而且沒有其他.

一個欄位的名稱中有空格呢? 它是幾乎相同:

<腳本類型 ="文本 javascript">

  $(功能() {
     $(' 輸入[標題 = 分配欄位與空間]').attr(
        {價值: ' 你是在曲折迂回的通道, 都一樣.'});

  });

</腳本>

我覺得這是一個相當安全的方法, 意思我們應該能夠找到我們想要的欄位和欄位只我們想要. 如果你看看 HTML SharePoint 給我們, 它是有點亂:

<輸入
名稱="ctl00$ m$ g_bdb23c2c_fde7_495f_8676_69714a308d8e$ ctl00$ ctl04$ ctl02$ ctl00$ ctl00$ ctl04$ ctl00$ ctl00$ 文字欄位"
類型="文本"
maxlength="255"
id="ctl00_m_g_bdb23c2c_fde7_495f_8676_69714a308d8e_ctl00_ctl04_ctl02_ctl00_ctl00_ctl04_ctl00_ctl00_TextField"
標題="DefaultMeFieldNoSpaces"
="ms 長"
/>

"標題"突出的可識別和希望獨特的屬性,以説明我們確定我們想要將我們任意值分配到特定的列.

這是一個基本的概念. 以任意的方式,這樣的欄位設置不會贏得任何獎項. 不過, 如果我們想要做更多有趣的表單級東西 (我們所有人總是想做, 答案是肯定的, 就在我們完成洗碗之後), 像更改的自動基於的值"欄位 b"值"欄位", 我們 (我) 需要學習這些東西.

我認為我們最好的機會,以獲得真正有用的價值是通過標題, 至少對於文字欄位. 可能有一個更好, 更可靠的方法. 如果我找到它, 我將更新這個帖子. 如果你知道一個更好的方式, 請留下評論。</結束>

</結束>

訂閱我的博客.

跟我在 Twitter 上 http://www.twitter.com/pagalvin