2012-04-17 17 views
0

我想修改登錄頁面的外觀。我已經添加了一些jQuery和JavaScript到DesktopModules/AuthenticationServices/DNN/Login.ascx,所以我可以有一個虛擬鍵盤,用戶可以使用它來輸入用戶名和密碼。問題是,當登錄失敗時,在我看來,jQuery和JavaScript腳本沒有執行,因此虛擬鍵盤不會出現。修改登錄頁面的外觀,登錄失敗時運行javascript/jquery

我在這個上做了很多搜索。我正在考慮製作一個新的登錄模塊,但我不確定如何或如果這將使我能夠解決問題。

有什麼建議嗎?

DNN版本:6.1.3

+0

爲什麼登錄失敗? – Ehsan 2012-04-18 10:35:06

+0

如果用戶輸入錯誤的密碼或用戶名,登錄可能會失敗。 – luistm 2012-04-18 11:12:14

回答

1

我建議不要直接更改核心登錄,因爲它被認爲是一個「核變」,將在升級被覆蓋。這需要您在每次升級之前合併您的更改。相反,如果你需要這個級別的訪問權限,我建議你創建你自己的登錄模組。

雖然看着你的問題,但我不認爲這是必要的。你可以通過創建和實現一個皮膚小部件來達到同樣的效果。因爲您可以使用jQuery並注入jQuery插件,所以Skin小部件將允許您以幾乎任何您可以想到的方式操縱UI。

這是一個更加優雅的解決方案,可以擴展,可測試,可安全地抵禦升級,並允許您在多個站點和安裝中根據需要重用它。

小工具和文檔的例子可以在以下兩個鏈接中找到:

DNN Widget Suite Project Skin Widget Wiki Article很多鏈接資源

+0

我不再與DNN合作。無論如何,謝謝你的答案。 – luistm 2012-09-17 09:45:20

0

就像威爾說,你絕對不應該修改或添加代碼的核心文件,因爲它們將在DNN升級中被覆蓋。你應該可以用Javascript解決這個問題,但是你也可以看看像這樣的第三方登錄模塊:http://www.dnnspot.com/Modules/DotNetNuke-Custom-Login 具有自定義登錄視圖,登錄視圖,甚至錯誤消息的功能。所以你應該能夠在不同情況下根據需要注入不同的javascript。

免責聲明 - 我隸屬於DNNspot。

0

我用這個JavaScript的屏幕上的鍵盤(OSK)這是可愛的。 (http://www.greywyvern.com/code/javascript/keyboard

我使用的是DNN 5.6.8,所以我不確定我的解決方案是否適用於DNN 6.x。

我修改了我使用的「皮膚」的「page.ascx」文件,但我認爲您也可以修改默認皮膚的「page.ascx」。

在page.ascx的頂部,下面的「註冊」的名單我寫了這個:

<script type="text/javascript" src="/js/keyboard.js" charset="UTF-8"></script> 
<link rel="stylesheet" type="text/css" href="/js/keyboard.css"> 

這2個文件(keyboard.js和keyboard.css)是屏幕上的-鍵盤。您可以將它們存儲在當然不是「/ js」的其他文件夾中。

在page.ascx的底部,我把這個腳本:

<script type="text/javascript"> 
$(document).ready(function() { 
    if (document.getElementById('dnn_ctr_Login_Login_DNN_txtUsername') != null) { 
     $("#dnn_ctr_Login_Login_DNN_txtUsername").attr("lang", "es"); 
     $("#dnn_ctr_Login_Login_DNN_txtPassword").attr("lang", "es"); 
     VKI_attach(document.getElementById('dnn_ctr_Login_Login_DNN_txtUsername')); 
     VKI_attach(document.getElementById('dnn_ctr_Login_Login_DNN_txtPassword')); 
    } 
}); 
</script> 

這些名字:「dnn_ctr_Login_Login_DNN_txtUsername」和「dnn_ctr_Login_Login_DNN_txtPassword」是我看到通過右擊和「查看源代碼」的那些我的DNN網站正在運行,我認爲沒有理由認爲它們在其他DNN網站上可能會有所不同,但是您可以檢查您的網站。

很明顯,您必須在您的DNN安裝中啓用jQuery。 :)

就是這樣。它非常棒!

HTH!