Thursday, September 09, 2010

Viewing Author

Entries for 'admin'

19
Khi bạn gõ văn bản trên Fck editor, bạn sẽ thấy mặc dù không gõ gì, nhưng bạn sẽ thấy có 1 dòng trên phần source view:
<p>&#160;</p> 
Hoặc khi bạn paste 1 đoạn văn bản từ Word vào, đoạn trên cũng sẽ được thêm vào đầu dòng. Điều này gây khó chịu cho người dùng.
Mình mới đọc được thread sau về cách xử lý:
Cách xử lý như sau:
-Tìm trong source code của bạn các file sau:
[dnnroot]\Providers\HtmlEditorProviders\Fck\FCKeditor\fckconfig.js
[dnnroot]\Providers\HtmlEditorProviders\Fck\Custom\fckconfig.js

 -Tìm key FillEmptyBlocks.

-Chỉnh giá trị cho nó về false.
-Save các file lại.
-Restart lại site.

[Read the rest of this article...]

Posted in: Tips
16
Mình đọc được 1 thread sau đây trên dotnetnuke.com nói về cách để các entry trên Blog module luôn hiện toàn bộ nội dung.
-Vào module options.
-Chỉnh Limit Auto-Generated Entry Summary  về 0. Và update.
-Khi bạn nhập 1 entry mới, nhớ đừng có gõ gì vào phần summary.
-Khi đó tất cả các entry sẽ hiện nội dung. Và sẽ không có chữ read more nữa.

 

[Read the rest of this article...]

Posted in: Tips
15
-Đăng nhập với account Admin/Host.
-Vào Admin tab->Pages->Click vào 1 page nào đó.
-Vào Page Settings->Advanced Settings->Page Header Tags.
-Gõ các từ khóa bạn muốn có cho trang của bạn ví dụ như Dotnetnuke.
-Click Update.
Lúc đó trên trang đó, phần header sẽ có
<meta id="MetaKeywords" name="KEYWORDS" content="Dotnetnuke” />
Dùng meta tag để giúp cho các search engine dễ dàng tìm và phân loại từ khóa cho trang của bạn cho phù hợp hơn. ^_^

 

[Read the rest of this article...]

Posted in: Tips
12
Trong bài viết này, mình sẽ nêu 2 cách để tạo drop shadow cho 1 image.
*C1: Dùng CSS
<div class="wrap0" style="background-color:White">
 <div class="wrap1">
 <div class="wrap2">
   <div class="wrap3">
    <img runat="server" src="images/Ball.jpg" alt="The object casting a shadow" />
   </div>
 </div>
 </div>
</div>
Theo cách này thì ta sẽ đặt image trong các div. Cách này có lẽ đã được nhiều bạn dùng. Tuy nhiên nhược điểm của nó là sẽ viết nhiều code. Ví dụ như ta có nhiều image cần tạo hiệu ứng drop shadow thì ta phải viết thêm.
 
*C2: Dùng jQuery
Để khắc phục việc phải viết thêm các div cho mỗi image thì ta dùng jQuery.
<img src="../../../../DesktopModules/MyWrappingImageModule/images/Ball.jpg" class="dropshadow" alt="The object casting a shadow" />
 
<img src="../../../../DesktopModules/MyWrappingImageModule/images/abc.jpg" class="dropshadow" alt="The object casting a shadow" />
 
<script language="javascript" type="text/javascript">
 jQuery.noConflict();
jQuery(document).ready(function(){
 jQuery("img.dropshadow").wrap("<div class='wrap0'><div class='wrap1'><div class='wrap2'>" +"<div class='wrap3'></div></div></div></div>");
});
 
</script>
 
Để dùng được thì các image phải có thêm class="dropshadow".Khi đó jQuery sẽ wrap thêm các div xung quanh cho các image đó.
Link tham khảo các bạn có thể đọc thêm từ Tutorials:Wrapping_Images_With_A_Drop_Shadow. Ngoài ra mình còn up code demo trên trang download.

[Read the rest of this article...]

Posted in: Tips
10
*Miêu tả:
Khi click vào 1 image, nó sẽ expande ra với kích thước thật của nó.
*Nguồn tham khảo:
Lấy link javascript từ expandoimage
*Code:
Các code javascript lấy từ link ở trên. Ngoài ra mình đã thêm các code để nó có thể chạy trên Dotnetnuke.
Đầu tiên là server code:
 private void IncludeScripts()
        {
            if (!ClientAPI.IsClientScriptBlockRegistered(this.Page, "expando.js"))
            {
                ClientAPI.RegisterClientScriptBlock(this.Page, "expando.js", "<script src='" + ResolveUrl("expando.js") + "'></script>");
            }
        }

[Read the rest of this article...]

Posted in: Tips
09
Miêu tả:
Có 1 số trường hợp, ta muốn truyền giá trị từ server code cho 1 html control hoặc tới 1 biến trên client side.
Dưới đây là các cách mình biết.
 
Vd1:
HTML code:
<table id="tb1" runat="server" border="1" width="100%" cellspacing="0" cellpadding="0">
 <tr>
    <td width="50%" bgcolor="#80FF80" id="ignore"><strong>Items sold</strong></td>
    <td width="50%" bgcolor="#80FF80" id="Td1"><strong>Sales</strong></td>
 </tr>
</table>

[Read the rest of this article...]

Posted in: .NET
07
Để truy xuất, lấy thông tin của trang hiện tại, bạn có thể dùng đoạn code sau:
DotNetNuke.Entities.Portals.PortalController.GetCurrentPortalSettings().ActiveTab
Ví dụ như đoạn code sau sẽ lấy title của page hiện tại:
lb1.Text = DotNetNuke.Entities.Portals.PortalController.GetCurrentPortalSettings().ActiveTab.Title;

[Read the rest of this article...]

Posted in: Tips
06
Cho 1 cột các value. Nhiệm vụ là đếm có bao nhiêu lần các value đó xuất hiện trên cột đó.
*Cách làm:
-Đầu tiên là chọn tất cả các item trong cột đó,bao gồm cả header.
-Vào data->advanced filter.
-Chọn Copy to another location.
-Đánh vị trí sẽ hiện kết quả vào Copy to.
-Nhấn ok.
Nó sẽ lọc lấy những item có trong đó.
-Chọn vào 1 ô bên cạnh. Gõ =Countif( và đưa vào các tham số thích hợp. Vui long xem kĩ ví dụ mẫu trong link trên.
-Gõ enter.
Nó sẽ hiện số lần xuất hiện của item đó.

[Read the rest of this article...]

Posted in: Excel
03

Quá trình download các phiên bản của Dotnetnuke phiên bản 5.0.0 về để cài đặt trên local, cộng đồng Dotnetnuke để ý là các code của Dotnetnuke đã được chuyển lên Codeplex. Trước kia, đa số code các module của DNN được đặt trên sourceforge, tuy có 1 vài project được up lên codeplex. Việc thay đổi này đã gây ra sự ngạc nhiên, những câu hỏi đối với cộng đồng.

Để giải đáp những thắc mắc đó, Joe Brinkman, một trong những người quản lý chính trong Dotnetnuke Corp, đã giải thích về vấn đề này trên blog của ông. DotNetNuke-Moves-to-CodePlex

Mình sẽ tóm 1 số ý chính:

-Việc chuyển này đã được lên kế hoạch đã nhiều tháng.

-Tất cả code các project trên sourceforge đã được chuyển sang Codeplex.

-Các lí do chuyển:

+ Có thể kiểm soát việc quảng cáo trên host. Họ không kiểm soát được việc quảng cáo trên sourceforge. Do Dotnetnuke được hỗ trợ bởi Microsoft nên vấn đề tiền bạc thu được từ quảng cáo này không phải quá quan trọng đối với họ.

+Kiểm soát được stats của các project.

+Codeplex có support tốt hơn. Họ sửa các bug, update nhanh hơn. Trong khi sourceforge lại chậm chạp thay đổi.

+Codeplex nhắm đến những người dùng Windows trong khi Sourceforge lại nhắm đến mọi người dùng dù là trên Win hay Linux... Còn DNN thì chủ yếu dành cho những người dùng Win.

+Có quan hệ với Codeplex tốt hơn.

Nói chung theo mình thì các lí do trên có vẻ không thuyết phục lắm. Download từ Codeplex có vẻ chậm hơn, nhiều click phải thực hiện hơn. Chắc có liên quan nhiều đến Microsoft phía sau rồi. Theo những thread mình đọc trên forum dotnetnuke.com thì hình như codeplex là nhóm liên quan đến microsoft.com.

 

[Read the rest of this article...]

Posted in: Dotnetnuke News
30

Những kinh nghiệm này có lẽ các bạn đã nghe nói nhiều rồi. Mình cũng vậy. Nhưng có lẽ các bạn sẽ không thực sự nhớ nó đến khi các bạn gặp phải. Mình cũng vậy. Và mình đã được 1 bài học. Thôi thì mình cũng xin nhắc lại 1 lần nữa.

-Thường xuyên backup database và code của bạn.

Bạn nên đặt tên cho rõ ràng và để ở 1 chỗ nào đó. Khoảng thời gian giữa các lần backup thì tùy bạn. Nhưng nên làm trước mỗi lần thay đổi quan trọng.

-Trước khi upgrade hãy backup code và database.

-Trước khi upgrade code lên phiên bản mới, nên đọc những feedback trên các diễn đàn về phiên bản mới đó.

Đừng nên làm người tiên phong. Vì các phiên bản mới chưa chắc đã ổn định. Như phiên bản 5 vừa rồi, mình có cảm giác nhóm phát triển đã cố gắng đẩy nhanh tiến độ cho Noen và Tết của họ. Do đó chất lượng không bảo đảm. Có nhiều lời phàn nàn khi upgrade trên dotnetnuke.com.

-Hãy test trên site local trước.

Bạn hãy tạo 1 site local với các code y như trên live site. Tiến hành upgrade trên đó trước. Việc upgrade trên local thành công không đồng nghĩa với việc upgrade trên live site thành công. Nhưng ít nhất sẽ biết trước các vấn đề nếu có.

-Khi có vấn đề, hãy xem các bài viết trên site hỗ trợ.

Hãy bình tình. Hãy tìm trên forum của dotnetnuke.com xem có bài viết nào nói về vấn đề mình đang gặp phải không. Nếu cần. hãy viết vấn đề của mình lên đó. Hy vọng sẽ có người giúp.

-Nhiều lúc, vấn đề sẽ nằm ở trên host của mình chứ không phải do code.

-Nếu chưa có cách giải quyết, hãy restore lại bản backup.

Hãy xóa sạch code trong host và cả database nữa. Hãy xóa sạch. Rồi restore chúng lại.

-Có thể có bug khi restore.

Khi restore, do nhiều lí do, có thể có bug. Tìm cách giải quyết. Chẳng hạn như reinstall phiên bản mới nhất của module đó. Reinstall ở đây nghĩa là cài đè lên luôn. Chứ không phải là uninstall rồi cài lại. Như thế sẽ mất dữ liệu.

Chúc các bạn may mắn. ^_^

 

[Read the rest of this article...]

Posted in: Installation
27

Mình đang định chạy 1 cái menu bằng javascript trên Dotnetnuke module. Nhưng việc đầu tiên là phải biết cách lấy các tab của menu từ table. Mò mẫm 2 ngày trên Google mà không biết cách. Cuối cùng đành hỏi trên forum dotnetnuke.com. Và đây là hàm để thực hiện việc đó:

DotNetNuke.Entities.Tabs.TabController tc = new DotNetNuke.Entities.Tabs.TabController();
tc.GetAllTabs();

[Read the rest of this article...]

Posted in: Tips
26
Trong bài trước, mình đã trình bày cách gán giá trị của biến javascript trước khi nhúng file javascript có sử dụng biến đó. Như đã nói, cách trên có nhược điểm là mình phải đặt biến vào 1 file javascript khác. Hôm nay, mình xin trình bày 1 cách tốt hơn 1 chút. ^_^
Mình sẽ tạo thêm code để tạo file javascript, đặt giá trị của biến vào trong đó. Nhờ thế, mình sẽ không phải tạo file javascript bằng tay nữa. Dưới đây là code cho hàm tạo file và gán giá trị vào.
private void Write2File()
        {
            string strImageXMLFilePath = Null.NullString;
            string strImageXMLFilePathInServer = Null.NullString;
            strImageXMLFilePath = ModulePath + "test6.js";
            strImageXMLFilePathInServer = Server.MapPath(strImageXMLFilePath);
 
            if (File.Exists(strImageXMLFilePathInServer))
            {
                File.SetAttributes(strImageXMLFilePathInServer, FileAttributes.Normal);
            }
 
            string fileContent = "var temp=\"This is an advanced test\"";
            //Write XML image list file file
            StreamWriter objStream = File.CreateText(strImageXMLFilePathInServer);
            objStream.WriteLine(fileContent);
            objStream.Close();
        }
Rồi mình đặt nó trong:
private void Method9()
        {
            Write2File();
 
            HtmlGenericControl oLink = new HtmlGenericControl("script");
            oLink.Attributes["language"] = "javascript";
            oLink.Attributes["type"] = "text/javascript";
            oLink.Attributes["src"] = ModulePath + "test6.js";
 
            Control oCSS = Page.FindControl("CSS");
            if (oCSS != null)
            {
                oCSS.Controls.Add(oLink);
            }
        }

Sau đó, ta làm theo các bước như đã hướng dẫn trong bài viết trước. Cách này khá hơn cách trước 1 chút nhưng vẫn chưa phải là cách tốt nhất. Hy vọng mình sẽ tìm ra được cách hay hơn. ^_^

[Read the rest of this article...]

24
Dưới đây là ngữ cảnh mình muốn thực hiện:
Mình có 1 file javascript test4.js. Nội dung của file chỉ là:
alert(temp);
Mình muốn chạy nó trên Dotnetnuke. Tuy nhiên, trước khi include nó vào để chạy, mình muốn gán giá trị cho biến temp trước.
*Cách làm:
Mình đã thử dùng nhiều cách để hòng thực hiện được. Có thể kể ra việc dùng jquery, RegisterClientScriptBlock, … Đặt các hàm theo các thứ tự khác nhau. Nhưng đa phần không làm được trường hợp trên. Cuối cùng mình cũng đã làm được 1 cách sau:
protected void Page_Load(System.Object sender, System.EventArgs e)
        {
            try
            {               
                Method5_1();
            }
            catch (Exception exc) //Module failed to load
            {
                Exceptions.ProcessModuleLoadException(this, exc);
            }

[Read the rest of this article...]

23
-Tạo 1 module Text/HTML module. Mở HTML và đặt javascript code vào. Click update. Nhớ không click Text.
-Đặt javascript trong file skin. 
-Đặt trong header của module. Bẳng cách vào Module Settings->Advanced Settings->Header. Thả javascript code vào. Ví dụ như:
<script type="text/javascript" language="javascript">alert("test1.1"); </script>
Hoặc
<script language="JavaScript" src="http://localhost:2493/DNNWorking3/DesktopModules/MyJSEx/test2.js" ></script>
Khi đó, output sẽ là:

<div class="c_content">

 
        <div id="dnn_ctr550_ContentPane" class="Normal c_contentpane DNNAlignleft">
        <!-- Start_Module_550 -->
        <span class="Normal">
               <script language="JavaScript" src="http://localhost:2493/DNNWorking3/DesktopModules/MyJSEx/test2.js" >
               </script>
        </span>
        <div id="dnn_ctr550_ModuleContent">
               <textarea id="a1" rows="10" cols="50"></textarea>
        <!-- End_Module_550 -->
</div>

[Read the rest of this article...]

22

Dưới đây là các cách kiểm tra 1 biến là null, undefined hay empty trong javascript.

<script language="javascript">

var id1=null;

var id2="";

if(id1==null)

{

alert("id1 la null a");

}

if(!id1)

{

alert("id1 la null b");

}

if(id2=="")

{

alert("id2 la empty a");

}

if(!id2)

{

alert("id2 la empty b");

}

if(typeof(id3) == "undefined")

{

alert("id3 la undefinded a");

}

if(!id3)

{

//Throw exception here

alert("id3 la undefinded b");

}

</script>

 

[Read the rest of this article...]

Posted in: Javascript
Page 1 of 6First   Previous   [1]  2  3  4  5  6  Next   Last   
HomeTrangITForum
Copyright 2010 by Nguyễn Minh ĐứcDesigned by DyNNamiteTerms Of UsePrivacy Statement