Skip to content

Commit 6952d0a

Browse files
Add addTitle to Panel and Modal
1 parent 13cf80a commit 6952d0a

File tree

5 files changed

+224
-8
lines changed

5 files changed

+224
-8
lines changed

src/MyCLabs/MUIH/Collapse.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ public function __construct($id='', $title=null, $content=null)
5050
{
5151
$this->addClass('collapse-wrapper');
5252

53-
$this->link = new GenericTag('a', $title);
53+
$this->link = new GenericTag('a');
5454
$this->link->setAttribute('data-toggle', 'collapse');
5555
$this->title = new GenericTag('legend', $this->link);
5656

@@ -61,6 +61,8 @@ public function __construct($id='', $title=null, $content=null)
6161
$this->setCollapseStateIndicators();
6262

6363
parent::__construct('fieldset', $content);
64+
65+
$this->setTitleContent($title);
6466
}
6567

6668
/**

src/MyCLabs/MUIH/Modal.php

Lines changed: 50 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
*/
99
class Modal extends GenericTag
1010
{
11+
public static $defaultDismiss = '<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>';
1112

1213
/**
1314
* @var GenericTag
@@ -39,15 +40,16 @@ class Modal extends GenericTag
3940
* @param string $content
4041
* @param string $header
4142
* @param string $footer
43+
* @param bool $withDismissButton
4244
*/
43-
public function __construct($content=null, $header=null, $footer=null)
45+
public function __construct($content=null, $header=null, $footer=null, $withDismissButton=true)
4446
{
4547
$this->addClass('modal');
4648

47-
$this->header = new GenericTag('div', $header);
49+
$this->header = new GenericTag('div');
4850
$this->header->addClass('modal-header');
4951

50-
$this->footer = new GenericTag('div', $footer);
52+
$this->footer = new GenericTag('div');
5153
$this->footer->addClass('modal-footer');
5254

5355
$this->body = new GenericTag('div');
@@ -61,6 +63,16 @@ public function __construct($content=null, $header=null, $footer=null)
6163

6264

6365
parent::__construct('div', $content);
66+
67+
if ($header !== null) {
68+
$this->addTitle($header);
69+
}
70+
if ($footer !== null) {
71+
$this->setFooterContent($footer);
72+
}
73+
if ($header !== null && $withDismissButton) {
74+
$this->addDefaultDismissButton();
75+
}
6476
}
6577

6678
/**
@@ -187,6 +199,41 @@ public function getContentAsString()
187199
return (string) $modalDialog;
188200
}
189201

202+
/**
203+
* @return $this
204+
*/
205+
public function addDefaultDismissButton()
206+
{
207+
$this->getHeader()->prependContent(self::$defaultDismiss);
208+
209+
return $this;
210+
}
211+
212+
/**
213+
* @param GenericTag|string $dismissButton
214+
* @return $this
215+
*/
216+
public function addDismissButton($dismissButton)
217+
{
218+
$this->getHeader()->prependContent($dismissButton);
219+
220+
return $this;
221+
}
222+
223+
/**
224+
* @param string $title
225+
* @param string $level
226+
* @return $this
227+
*/
228+
public function addTitle($title, $level='h4')
229+
{
230+
$titleWrapper = new GenericTag($level, $title);
231+
$titleWrapper->addClass('modal-title');
232+
$this->getHeader()->appendContent($titleWrapper);
233+
234+
return $this;
235+
}
236+
190237
/**
191238
* @param bool $replaceBodyOnly
192239
* @return $this

src/MyCLabs/MUIH/Panel.php

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,16 +50,23 @@ public function __construct($content=null, $header=null, $footer=null, $type=se
5050
}
5151
$this->addClass('panel-' . $type);
5252

53-
$this->header = new GenericTag('div', $header);
53+
$this->header = new GenericTag('div');
5454
$this->header->addClass('panel-header');
5555

56-
$this->footer = new GenericTag('div', $footer);
56+
$this->footer = new GenericTag('div');
5757
$this->footer->addClass('panel-footer');
5858

5959
$this->content= new GenericTag('div');
6060
$this->content->addClass('panel-body');
6161

6262
parent::__construct('div', $content);
63+
64+
if ($header !== null) {
65+
$this->addTitle($header);
66+
}
67+
if ($footer !== null) {
68+
$this->setFooterContent($footer);
69+
}
6370
}
6471

6572
/**
@@ -168,4 +175,18 @@ public function getContentAsString()
168175

169176
return $content;
170177
}
178+
179+
/**
180+
* @param string $title
181+
* @param string $level
182+
* @return $this
183+
*/
184+
public function addTitle($title, $level='h3')
185+
{
186+
$titleWrapper = new GenericTag($level, $title);
187+
$titleWrapper->addClass('panel-title');
188+
$this->getHeader()->appendContent($titleWrapper);
189+
190+
return $this;
191+
}
171192
}

tests/MUIHTest/MUIH/ModalTest.php

Lines changed: 116 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,27 @@ public function testConstructor()
3535
'<div class="modal">'.
3636
'<div class="modal-dialog">'.
3737
'<div class="modal-content">'.
38-
'<div class="modal-header">bar</div>'.
38+
'<div class="modal-header">'.
39+
'<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>'.
40+
'<h4 class="modal-title">bar</h4>'.
41+
'</div>'.
42+
'<div class="modal-body">foo</div>'.
43+
'<div class="modal-footer">baz</div>'.
44+
'</div>'.
45+
'</div>'.
46+
'</div>',
47+
$tag->getHTML()
48+
);
49+
50+
$tag = new Modal('foo', 'bar', 'baz', false);
51+
52+
$this->assertEquals(
53+
'<div class="modal">'.
54+
'<div class="modal-dialog">'.
55+
'<div class="modal-content">'.
56+
'<div class="modal-header">'.
57+
'<h4 class="modal-title">bar</h4>'.
58+
'</div>'.
3959
'<div class="modal-body">foo</div>'.
4060
'<div class="modal-footer">baz</div>'.
4161
'</div>'.
@@ -202,6 +222,101 @@ public function testAppendContent()
202222
);
203223
}
204224

225+
public function testAddDefaultDismissButton()
226+
{
227+
$tag = new Modal();
228+
229+
$tag->addDefaultDismissButton();
230+
$this->assertEquals(
231+
'<div class="modal">'.
232+
'<div class="modal-dialog">'.
233+
'<div class="modal-content">'.
234+
'<div class="modal-header">'.
235+
'<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>'.
236+
'</div>'.
237+
'<div class="modal-body"></div>'.
238+
'</div>'.
239+
'</div>'.
240+
'</div>',
241+
$tag->getHTML()
242+
);
243+
}
244+
245+
public function testAddDismissButton()
246+
{
247+
$tag = new Modal();
248+
249+
$tag->addDismissButton('foo');
250+
$this->assertEquals(
251+
'<div class="modal">'.
252+
'<div class="modal-dialog">'.
253+
'<div class="modal-content">'.
254+
'<div class="modal-header">'.
255+
'foo'.
256+
'</div>'.
257+
'<div class="modal-body"></div>'.
258+
'</div>'.
259+
'</div>'.
260+
'</div>',
261+
$tag->getHTML()
262+
);
263+
264+
$tag = new Modal('foo', 'bar', null, false);
265+
266+
$tag->addDismissButton('fu');
267+
$this->assertEquals(
268+
'<div class="modal">'.
269+
'<div class="modal-dialog">'.
270+
'<div class="modal-content">'.
271+
'<div class="modal-header">'.
272+
'fu'.
273+
'<h4 class="modal-title">bar</h4>'.
274+
'</div>'.
275+
'<div class="modal-body">foo</div>'.
276+
'</div>'.
277+
'</div>'.
278+
'</div>',
279+
$tag->getHTML()
280+
);
281+
}
282+
283+
public function testAddTitle()
284+
{
285+
$tag = new Modal();
286+
287+
$tag->addTitle('foo');
288+
$this->assertEquals(
289+
'<div class="modal">'.
290+
'<div class="modal-dialog">'.
291+
'<div class="modal-content">'.
292+
'<div class="modal-header">'.
293+
'<h4 class="modal-title">foo</h4>'.
294+
'</div>'.
295+
'<div class="modal-body"></div>'.
296+
'</div>'.
297+
'</div>'.
298+
'</div>',
299+
$tag->getHTML()
300+
);
301+
302+
$tag = new Modal();
303+
304+
$tag->addTitle('foo', 'bar');
305+
$this->assertEquals(
306+
'<div class="modal">'.
307+
'<div class="modal-dialog">'.
308+
'<div class="modal-content">'.
309+
'<div class="modal-header">'.
310+
'<bar class="modal-title">foo</bar>'.
311+
'</div>'.
312+
'<div class="modal-body"></div>'.
313+
'</div>'.
314+
'</div>'.
315+
'</div>',
316+
$tag->getHTML()
317+
);
318+
}
319+
205320
public function testAjax()
206321
{
207322
$tag = new Modal();

tests/MUIHTest/MUIH/PanelTest.php

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ public function testConstructor()
2929

3030
$this->assertEquals(
3131
'<div class="panel panel-info">'.
32-
'<div class="panel-header">bar</div>'.
32+
'<div class="panel-header">'.
33+
'<h3 class="panel-title">bar</h3>'.
34+
'</div>'.
3335
'<div class="panel-body">foo</div>'.
3436
'<div class="panel-footer">baz</div>'.
3537
'</div>',
@@ -141,4 +143,33 @@ public function testAppendContent()
141143
$tag->getHTML()
142144
);
143145
}
146+
147+
public function testAddTitle()
148+
{
149+
$tag = new Panel();
150+
151+
$tag->addTitle('foo');
152+
$this->assertEquals(
153+
'<div class="panel panel-default">'.
154+
'<div class="panel-header">'.
155+
'<h3 class="panel-title">foo</h3>'.
156+
'</div>'.
157+
'<div class="panel-body"></div>'.
158+
'</div>',
159+
$tag->getHTML()
160+
);
161+
162+
$tag = new Panel();
163+
164+
$tag->addTitle('foo', 'bar');
165+
$this->assertEquals(
166+
'<div class="panel panel-default">'.
167+
'<div class="panel-header">'.
168+
'<bar class="panel-title">foo</bar>'.
169+
'</div>'.
170+
'<div class="panel-body"></div>'.
171+
'</div>',
172+
$tag->getHTML()
173+
);
174+
}
144175
}

0 commit comments

Comments
 (0)