Skip to content

Instantly share code, notes, and snippets.

@bgilbert6
Created June 12, 2015 14:12
Show Gist options
  • Save bgilbert6/3e0e1e2d9ff8bf9ea861 to your computer and use it in GitHub Desktop.
Save bgilbert6/3e0e1e2d9ff8bf9ea861 to your computer and use it in GitHub Desktop.
ModalWindow.vb
Imports Microsoft.VisualBasic
Public Class ModalWindow
Inherits BaseModal
Public Property HeadingTitle As String = ""
Public Property PreventDefault As Boolean = False
Public Property DataID As String
Get
Dim o As Object = ViewState("DataID")
If o IsNot Nothing Then
Return DirectCast(o, String)
End If
Return String.Empty
End Get
Set(ByVal value As String)
ViewState("DataID") = value
End Set
End Property
Public btnClose As LinkButton = New LinkButton()
Public btnSave As LinkButton = New LinkButton()
Public btnClose2 As LinkButton = New LinkButton()
Public lblErrors As Literal = New Literal()
Private _small As Boolean = False
Public Property Small As Boolean
Get
Return _small
End Get
Set(ByVal value As Boolean)
_small = value
End Set
End Property
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
writer.Write("<style type='text/css'>html, body { overflow:hidden; } </style>")
writer.Write("<div class=""modal-backdrop fade in""></div>")
writer.Write("<div class=""modal hide fade in"" aria-hidden=""false"" style=""display: block;" & IIf(Small, "width:300px; margin-left:-150px;", "") & """>")
writer.Write("<div class=""modal-header"">")
btnClose2.RenderControl(writer)
writer.Write("<h3>" & HeadingTitle & "</h3>")
writer.Write("</div>")
writer.Write("<div class=""modal-body"" style=""overflow-x: hidden;"">")
writer.WriteLine()
lblErrors.RenderControl(writer)
MyBase.Render(writer)
writer.Write("</div>")
writer.Write("<div class=""modal-footer"">")
writer.Write("<div style='float:left; width:40%;'>")
writer.Write("</div>")
writer.Write("<div style='float:right;width:60%;'>")
btnClose.RenderControl(writer)
btnSave.RenderControl(writer)
writer.Write("</div>")
writer.Write("</div>")
writer.Write("</div>")
writer.WriteLine()
End Sub
Protected Overrides Sub CreateChildControls()
MyBase.CreateChildControls()
btnClose.ID = "btnClose"
btnClose.Text = "Close"
btnClose.CssClass = "btn button-gray"
btnClose2.ID = "btnClose2"
btnClose2.Text = "×"
btnClose2.CssClass = "close"
btnSave.ID = "btnSave"
btnSave.Text = "Save Changes"
btnSave.CssClass = "btn button-blue"
Me.Controls.Add(btnClose)
Me.Controls.Add(btnClose2)
Me.Controls.Add(btnSave)
AddHandler btnClose.Click, AddressOf btnClose_Click
AddHandler btnClose2.Click, AddressOf btnClose_Click
AddHandler btnSave.Click, AddressOf OnSave2
End Sub
Protected Overrides Sub RenderChildren(ByVal output As HtmlTextWriter)
If HasControls() Then
Dim i As Integer
For i = 0 To Controls.Count - 1 Step 1
'Skip rendering these ones
If (Controls(i) Is btnClose) Or (Controls(i) Is btnSave) Or (Controls(i) Is btnClose2) Or (Controls(i) Is lblErrors) Then
Continue For
End If
Controls(i).RenderControl(output)
Next
End If
End Sub
Public Sub Show()
Visible = True
OnShown()
End Sub
Protected Overridable Sub OnShown()
End Sub
Public Sub Hide()
Visible = False
OnHide()
End Sub
Protected Overridable Sub OnHide()
End Sub
Sub btnClose_Click()
ClearControls()
Me.Visible = False
OnClose()
End Sub
Public Overridable Sub OnSave()
End Sub
Public Sub OnSave2()
Errors.Clear()
lblErrors.Text = ""
CheckForErrors()
If Errors.Count > 0 Then
Dim s As String = ""
For Each Err As String In Errors
s = s & Err & "<br/>"
Next
lblErrors.Text = "<div class=""albox errorbox"">" & s & "</div>"
Exit Sub
End If
OnSave()
If PreventDefault = False Then
Hide()
ClearControls()
End If
End Sub
Public Overridable Sub OnClose()
End Sub
Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
EnsureChildControls()
'Visible = False
End Sub
End Class
Imports Microsoft.VisualBasic
Public Class LargeModalWindow
Inherits BaseModal
Public Property HeadingTitle As String = ""
Public Property DataID As String
Get
Dim o As Object = ViewState("DataID")
If o IsNot Nothing Then
Return DirectCast(o, String)
End If
Return String.Empty
End Get
Set(ByVal value As String)
ViewState("DataID") = value
End Set
End Property
Public btnClose As LinkButton = New LinkButton()
Public btnSave As LinkButton = New LinkButton()
Public btnClose2 As LinkButton = New LinkButton()
Public lblErrors As Literal = New Literal()
Public btnSave2 As LinkButton = New LinkButton()
Public pnlLeftFooter As PlaceHolder = New PlaceHolder()
Dim IgnoreControls As List(Of Control) = New List(Of Control)
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)
writer.Write("<style type='text/css'>html, body { overflow:hidden; } </style>")
writer.Write("<div class=""modal-backdrop fade in""></div>")
writer.Write("<div class=""modal hide fade in"" aria-hidden=""false"" style=""display: block; width: 900px; margin-left:-450px;"">")
writer.Write("<div class=""modal-header"">")
btnClose2.RenderControl(writer)
writer.Write("<h3>" & HeadingTitle & "</h3>")
writer.Write("</div>")
writer.Write("<div class=""modal-body"" style=""overflow-x: hidden; max-height:600px; padding:0px;"">")
writer.WriteLine()
lblErrors.RenderControl(writer)
MyBase.Render(writer)
writer.Write("</div>")
writer.Write("<div class=""modal-footer"">")
writer.Write("<div style='float:left; width:50%; text-align:left;'>")
pnlLeftFooter.RenderControl(writer)
writer.Write("</div>")
writer.Write("<div style='float:right;width:50%;'>")
btnClose.RenderControl(writer)
btnSave.RenderControl(writer)
btnSave2.RenderControl(writer)
writer.Write("</div>")
writer.Write("<div style='clear:both'></div>")
writer.Write("</div>")
writer.Write("</div>")
writer.WriteLine()
End Sub
Protected Overrides Sub CreateChildControls()
MyBase.CreateChildControls()
btnClose.ID = "btnClose"
btnClose.Text = "Close"
btnClose.CssClass = "btn button-gray"
btnClose2.ID = "btnClose2"
btnClose2.Text = "×"
btnClose2.CssClass = "close"
btnSave.ID = "btnSave"
btnSave.Text = "Save Changes"
btnSave.CssClass = "btn button-blue"
btnSave2.ID = "btnSave2"
btnSave2.Text = "<i class='icon-globe'></i>Save & Publish"
btnSave2.CssClass = "btn button-green"
pnlLeftFooter.ID = "pnlLeftFooter"
Me.Controls.Add(pnlLeftFooter)
Me.Controls.Add(btnClose)
Me.Controls.Add(btnClose2)
Me.Controls.Add(btnSave)
Me.Controls.Add(btnSave2)
Me.IgnoreControls.Add(pnlLeftFooter)
Me.IgnoreControls.Add(btnClose)
Me.IgnoreControls.Add(btnClose2)
Me.IgnoreControls.Add(btnSave)
Me.IgnoreControls.Add(btnSave2)
AddHandler btnClose.Click, AddressOf btnClose_Click
AddHandler btnClose2.Click, AddressOf btnClose_Click
AddHandler btnSave.Click, AddressOf OnSave2
AddHandler btnSave2.Click, AddressOf SavePublish
End Sub
Protected Overrides Sub RenderChildren(ByVal output As HtmlTextWriter)
If HasControls() Then
Dim i As Integer
For i = 0 To Controls.Count - 1 Step 1
'Skip rendering these ones
If IgnoreControls.Contains(Controls(i)) Then
Continue For
End If
Controls(i).RenderControl(output)
Next
End If
End Sub
Public Sub Show()
Visible = True
OnShown()
End Sub
Protected Overridable Sub OnShown()
End Sub
Sub btnClose_Click()
ClearControls()
Me.Visible = False
OnClose()
End Sub
Public Sub SavePublish()
Errors.Clear()
lblErrors.Text = ""
CheckForErrors()
If Errors.Count > 0 Then
Dim s As String = ""
For Each Err As String In Errors
s = s & Err & "<br/>"
Next
lblErrors.Text = "<div class=""albox errorbox"" style='margin:10px;'>" & s & "</div>"
Exit Sub
End If
OnSavePublish()
ClearControls()
End Sub
Public Sub OnSave2()
Errors.Clear()
lblErrors.Text = ""
CheckForErrors()
If Errors.Count > 0 Then
Dim s As String = ""
For Each Err As String In Errors
s = s & Err & "<br/>"
Next
lblErrors.Text = "<div class=""albox errorbox"" style='margin:10px;'>" & s & "</div>"
Exit Sub
End If
OnSave()
ClearControls()
End Sub
Public Overridable Sub OnSave()
End Sub
Public Overridable Sub OnSavePublish()
End Sub
Public Overridable Sub OnClose()
End Sub
Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
EnsureChildControls()
Visible = False
If Page.IsPostBack = False Then
btnSave2.Visible = False
End If
End Sub
Public Overridable Sub ReceiveCommand(ByVal name As String, ByVal data As Object)
End Sub
End Class
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment