diff --git a/DB/db_simple_blog.sql b/DB/db_simple_blog.sql new file mode 100644 index 00000000..43a412af --- /dev/null +++ b/DB/db_simple_blog.sql @@ -0,0 +1,152 @@ +-- phpMyAdmin SQL Dump +-- version 4.1.6 +-- http://www.phpmyadmin.net +-- +-- Host: 127.0.0.1 +-- Generation Time: Nov 29, 2014 at 09:15 AM +-- Server version: 5.6.16 +-- PHP Version: 5.5.9 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; + +-- +-- Database: `db_simple_blog` +-- + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tbl_comment` +-- + +CREATE TABLE IF NOT EXISTS `tbl_comment` ( + `id_comment` int(10) NOT NULL AUTO_INCREMENT, + `id_post` int(10) NOT NULL, + `nama` varchar(50) NOT NULL, + `email` varchar(50) NOT NULL, + `tanggal` datetime NOT NULL, + `komentar` text NOT NULL, + PRIMARY KEY (`id_comment`), + KEY `id_post` (`id_post`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ; + +-- +-- Dumping data for table `tbl_comment` +-- + +INSERT INTO `tbl_comment` (`id_comment`, `id_post`, `nama`, `email`, `tanggal`, `komentar`) VALUES +(1, 5, 'Anonymous', 'saya@simail.com', '2014-10-12 00:00:00', 'loerem'), +(4, 13, 'rapi', 'rapi@simail.com', '2014-10-13 00:00:00', 'top'), +(5, 13, 'Anonymous', 'tanpa@simail.com', '2014-10-13 00:00:00', 'sip'), +(6, 5, 'saya', 'saya@saya.com', '2014-10-15 00:00:00', 'oy'), +(7, 5, 'aink', 'aink@aink.com', '2014-11-28 08:26:10', 'a'), +(8, 5, 'midum', 'aink@aink.com', '2014-11-28 13:09:53', 'sadasd'), +(9, 5, 'ad', 'asds', '2014-11-28 13:13:38', 'asdas'), +(10, 5, 'dasasd', 'asdasd', '2014-11-28 13:15:29', 'asdsa'), +(11, 5, 'asdasd', 'asdasdasd', '2014-11-28 15:52:56', 'asdsadasd'), +(12, 5, 'ere', 'dzir.shhh@gmail.com', '2014-11-28 16:14:12', 'erere'), +(13, 5, 'aink', 'aink@aink.aink', '2014-11-28 16:15:27', 'sdasdsd'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tbl_posting` +-- + +CREATE TABLE IF NOT EXISTS `tbl_posting` ( + `id_post` int(10) NOT NULL AUTO_INCREMENT, + `judul` varchar(30) NOT NULL, + `tanggal` date NOT NULL, + `konten` text NOT NULL, + `status_published` tinyint(1) NOT NULL DEFAULT '0', + `status_delete` tinyint(1) NOT NULL DEFAULT '0', + PRIMARY KEY (`id_post`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ; + +-- +-- Dumping data for table `tbl_posting` +-- + +INSERT INTO `tbl_posting` (`id_post`, `judul`, `tanggal`, `konten`, `status_published`, `status_delete`) VALUES +(5, 'Apa itu Simple Blog?', '2014-07-15', 'Lorem ipsum dolor sit amet, consectetur adipisicing elit. Blanditiis aliquam minus consequuntur amet nulla eius, neque beatae, nostrum possimus, officiis eaque consectetur. Sequi sunt maiores dolore, illum quidem eos explicabo! Lorem ipsum dolor sit amet, consectetur adipisicing elit. Magnam consequuntur consequatur molestiae saepe sed, incidunt sunt inventore minima voluptatum adipisci hic, est ipsa iste. Nobis, aperiam provident quae. Reprehenderit, iste.\r\n\r\nLorem ipsum dolor sit amet, consectetur adipisicing elit. Asperiores animi tenetur nam delectus eveniet iste non culpa laborum provident minima numquam excepturi rem commodi, officia accusamus eos voluptates obcaecati. Possimus?', 1, 0), +(13, 'Hari ini?', '2014-10-13', 'Hari ini pengumpulan nge-pull request WBD', 1, 1), +(14, 'Barutut', '2014-11-28', 'Lorem ', 0, 0), +(15, 'Barutut explain 2', '2014-11-29', 'Lorem X', 0, 0); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tbl_role` +-- + +CREATE TABLE IF NOT EXISTS `tbl_role` ( + `role_id` int(10) NOT NULL AUTO_INCREMENT, + `role_name` varchar(25) NOT NULL, + `description` varchar(50) NOT NULL, + PRIMARY KEY (`role_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; + +-- +-- Dumping data for table `tbl_role` +-- + +INSERT INTO `tbl_role` (`role_id`, `role_name`, `description`) VALUES +(1, 'Guest', 'User biasa'), +(2, 'Admin', 'Administrator'), +(3, 'Owner', 'Pemilik Blog'), +(4, 'Editor', 'Penulis'); + +-- -------------------------------------------------------- + +-- +-- Table structure for table `tbl_user` +-- + +CREATE TABLE IF NOT EXISTS `tbl_user` ( + `user_id` int(20) NOT NULL AUTO_INCREMENT, + `username` varchar(50) NOT NULL, + `password` varchar(50) NOT NULL, + `name` varchar(50) NOT NULL, + `email` varchar(50) NOT NULL, + `role_id` int(10) DEFAULT '1', + PRIMARY KEY (`user_id`), + UNIQUE KEY `username` (`username`), + KEY `role_id` (`role_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ; + +-- +-- Dumping data for table `tbl_user` +-- + +INSERT INTO `tbl_user` (`user_id`, `username`, `password`, `name`, `email`, `role_id`) VALUES +(1, 'admin', 'admin', 'administrator', '', 2), +(2, 'aink', 'pisan', 'aaa', 'aaa', 3), +(3, 'aku', 'iya', 'aku', 'aku', 4), +(4, 'abc', '5dasar', 'aink', 'asink@ain.com', 2); + +-- +-- Constraints for dumped tables +-- + +-- +-- Constraints for table `tbl_comment` +-- +ALTER TABLE `tbl_comment` + ADD CONSTRAINT `tbl_comment_ibfk_1` FOREIGN KEY (`id_post`) REFERENCES `tbl_posting` (`id_post`) ON DELETE CASCADE ON UPDATE CASCADE; + +-- +-- Constraints for table `tbl_user` +-- +ALTER TABLE `tbl_user` + ADD CONSTRAINT `tbl_user_ibfk_1` FOREIGN KEY (`role_id`) REFERENCES `tbl_role` (`role_id`) ON DELETE CASCADE ON UPDATE CASCADE; + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/index.html b/index.html deleted file mode 100644 index 07cff0ba..00000000 --- a/index.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Simple Blog - - - - - -
- - - -
-
- -
-
- - - -
- - - - - - - - \ No newline at end of file diff --git a/jsf-blank/.classpath b/jsf-blank/.classpath new file mode 100644 index 00000000..0e4ab74b --- /dev/null +++ b/jsf-blank/.classpath @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/jsf-blank/.metadata/WebContent/WEB-INF/faces-config.pageflow b/jsf-blank/.metadata/WebContent/WEB-INF/faces-config.pageflow new file mode 100644 index 00000000..5f8c8a3d --- /dev/null +++ b/jsf-blank/.metadata/WebContent/WEB-INF/faces-config.pageflow @@ -0,0 +1,2 @@ + + diff --git a/jsf-blank/.project b/jsf-blank/.project new file mode 100644 index 00000000..0b0e5b64 --- /dev/null +++ b/jsf-blank/.project @@ -0,0 +1,36 @@ + + + jsf-blank + + + + + + org.eclipse.wst.jsdt.core.javascriptValidator + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.wst.common.project.facet.core.builder + + + + + org.eclipse.wst.validation.validationbuilder + + + + + + org.eclipse.jem.workbench.JavaEMFNature + org.eclipse.wst.common.modulecore.ModuleCoreNature + org.eclipse.wst.common.project.facet.core.nature + org.eclipse.jdt.core.javanature + org.eclipse.wst.jsdt.core.jsNature + + diff --git a/jsf-blank/.settings/.jsdtscope b/jsf-blank/.settings/.jsdtscope new file mode 100644 index 00000000..3a28de0c --- /dev/null +++ b/jsf-blank/.settings/.jsdtscope @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/jsf-blank/.settings/org.eclipse.jdt.core.prefs b/jsf-blank/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 00000000..f42de363 --- /dev/null +++ b/jsf-blank/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,7 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 +org.eclipse.jdt.core.compiler.compliance=1.7 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.source=1.7 diff --git a/jsf-blank/.settings/org.eclipse.wst.common.component b/jsf-blank/.settings/org.eclipse.wst.common.component new file mode 100644 index 00000000..67d6a4d5 --- /dev/null +++ b/jsf-blank/.settings/org.eclipse.wst.common.component @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/jsf-blank/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml b/jsf-blank/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml new file mode 100644 index 00000000..9b4b9fcf --- /dev/null +++ b/jsf-blank/.settings/org.eclipse.wst.common.project.facet.core.prefs.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/jsf-blank/.settings/org.eclipse.wst.common.project.facet.core.xml b/jsf-blank/.settings/org.eclipse.wst.common.project.facet.core.xml new file mode 100644 index 00000000..5168912b --- /dev/null +++ b/jsf-blank/.settings/org.eclipse.wst.common.project.facet.core.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/jsf-blank/.settings/org.eclipse.wst.jsdt.ui.superType.container b/jsf-blank/.settings/org.eclipse.wst.jsdt.ui.superType.container new file mode 100644 index 00000000..3bd5d0a4 --- /dev/null +++ b/jsf-blank/.settings/org.eclipse.wst.jsdt.ui.superType.container @@ -0,0 +1 @@ +org.eclipse.wst.jsdt.launching.baseBrowserLibrary \ No newline at end of file diff --git a/jsf-blank/.settings/org.eclipse.wst.jsdt.ui.superType.name b/jsf-blank/.settings/org.eclipse.wst.jsdt.ui.superType.name new file mode 100644 index 00000000..05bd71b6 --- /dev/null +++ b/jsf-blank/.settings/org.eclipse.wst.jsdt.ui.superType.name @@ -0,0 +1 @@ +Window \ No newline at end of file diff --git a/jsf-blank/WebContent/META-INF/MANIFEST.MF b/jsf-blank/WebContent/META-INF/MANIFEST.MF new file mode 100644 index 00000000..254272e1 --- /dev/null +++ b/jsf-blank/WebContent/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Class-Path: + diff --git a/jsf-blank/WebContent/WEB-INF/faces-config.xml b/jsf-blank/WebContent/WEB-INF/faces-config.xml new file mode 100644 index 00000000..50578b79 --- /dev/null +++ b/jsf-blank/WebContent/WEB-INF/faces-config.xml @@ -0,0 +1,19 @@ + + + + diff --git a/jsf-blank/WebContent/WEB-INF/lib/javax.faces-2.2.5.jar b/jsf-blank/WebContent/WEB-INF/lib/javax.faces-2.2.5.jar new file mode 100644 index 00000000..4e92c387 Binary files /dev/null and b/jsf-blank/WebContent/WEB-INF/lib/javax.faces-2.2.5.jar differ diff --git a/jsf-blank/WebContent/WEB-INF/lib/mysql-connector-java-5.1.23-bin.jar b/jsf-blank/WebContent/WEB-INF/lib/mysql-connector-java-5.1.23-bin.jar new file mode 100644 index 00000000..dd2585e0 Binary files /dev/null and b/jsf-blank/WebContent/WEB-INF/lib/mysql-connector-java-5.1.23-bin.jar differ diff --git a/jsf-blank/WebContent/WEB-INF/web.xml b/jsf-blank/WebContent/WEB-INF/web.xml new file mode 100644 index 00000000..527ba25f --- /dev/null +++ b/jsf-blank/WebContent/WEB-INF/web.xml @@ -0,0 +1,51 @@ + + + + + Faces Servlet + javax.faces.webapp.FacesServlet + + + Faces Servlet + *.jsf + + + javax.faces.PROJECT_STAGE + Development + + + State saving method: 'client' or 'server' (default). See JSF Specification section 2.5.2 + javax.faces.STATE_SAVING_METHOD + client + + + + index.jsf + welcome.jsf + index.html + index.jsp + + + + MySQL Datasource + jdbc/db_simple_blog + javax.sql.DataSource + Container + + \ No newline at end of file diff --git a/jsf-blank/WebContent/add-post.xhtml b/jsf-blank/WebContent/add-post.xhtml new file mode 100644 index 00000000..39a12c93 --- /dev/null +++ b/jsf-blank/WebContent/add-post.xhtml @@ -0,0 +1,49 @@ + +Add Post + + + +

Add Post

+ + + +
+ + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
\ No newline at end of file diff --git a/jsf-blank/WebContent/add-user.xhtml b/jsf-blank/WebContent/add-user.xhtml new file mode 100644 index 00000000..ef81ad3b --- /dev/null +++ b/jsf-blank/WebContent/add-user.xhtml @@ -0,0 +1,55 @@ + +Add Post + + + + + + +

Add User

+
+ + + + + + + + + + + + + + + + + + +

+ + + +
+
+ +
+ + + + +
+
\ No newline at end of file diff --git a/jsf-blank/WebContent/deleted-post.xhtml b/jsf-blank/WebContent/deleted-post.xhtml new file mode 100644 index 00000000..606bdb14 --- /dev/null +++ b/jsf-blank/WebContent/deleted-post.xhtml @@ -0,0 +1,47 @@ + +Deleted Post + + + + +

Deleted Post

+ +
+
+ + + +
+
\ No newline at end of file diff --git a/jsf-blank/WebContent/edit-user.xhtml b/jsf-blank/WebContent/edit-user.xhtml new file mode 100644 index 00000000..a464c2de --- /dev/null +++ b/jsf-blank/WebContent/edit-user.xhtml @@ -0,0 +1,56 @@ + +Add Post + + + + + + +

Edit User currentUser=#{userLoader.currentUser.name}

+
+ + + + + + + + + + + + + + + + + + +

+ + + + +
+
+ +
+ + + + +
+
\ No newline at end of file diff --git a/jsf-blank/WebContent/edit.xhtml b/jsf-blank/WebContent/edit.xhtml new file mode 100644 index 00000000..35e065ec --- /dev/null +++ b/jsf-blank/WebContent/edit.xhtml @@ -0,0 +1,42 @@ + +Edit Post + + + +

Edit Post

+ +
+ + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
\ No newline at end of file diff --git a/jsf-blank/WebContent/images/blog_bottom.png b/jsf-blank/WebContent/images/blog_bottom.png new file mode 100644 index 00000000..d0fd7417 Binary files /dev/null and b/jsf-blank/WebContent/images/blog_bottom.png differ diff --git a/jsf-blank/WebContent/images/blog_footer.jpg b/jsf-blank/WebContent/images/blog_footer.jpg new file mode 100644 index 00000000..9d8ea73e Binary files /dev/null and b/jsf-blank/WebContent/images/blog_footer.jpg differ diff --git a/jsf-blank/WebContent/images/blog_header.png b/jsf-blank/WebContent/images/blog_header.png new file mode 100644 index 00000000..3e7cf126 Binary files /dev/null and b/jsf-blank/WebContent/images/blog_header.png differ diff --git a/jsf-blank/WebContent/images/bullet.png b/jsf-blank/WebContent/images/bullet.png new file mode 100644 index 00000000..6ff1c538 Binary files /dev/null and b/jsf-blank/WebContent/images/bullet.png differ diff --git a/assets/img/favicon.ico b/jsf-blank/WebContent/images/favicon.ico similarity index 100% rename from assets/img/favicon.ico rename to jsf-blank/WebContent/images/favicon.ico diff --git a/assets/img/pre.png b/jsf-blank/WebContent/images/pre.png similarity index 100% rename from assets/img/pre.png rename to jsf-blank/WebContent/images/pre.png diff --git a/jsf-blank/WebContent/index.xhtml b/jsf-blank/WebContent/index.xhtml new file mode 100644 index 00000000..706d7c05 --- /dev/null +++ b/jsf-blank/WebContent/index.xhtml @@ -0,0 +1,36 @@ + +Halaman Utama + + + + + + + \ No newline at end of file diff --git a/jsf-blank/WebContent/invalid.xhtml b/jsf-blank/WebContent/invalid.xhtml new file mode 100644 index 00000000..e40cb9cc --- /dev/null +++ b/jsf-blank/WebContent/invalid.xhtml @@ -0,0 +1,19 @@ + +Invalid + + + +

Unsuccessfully logged in

+ +

Back to Home Page

+
+
+ +
+
\ No newline at end of file diff --git a/jsf-blank/WebContent/konten.xhtml b/jsf-blank/WebContent/konten.xhtml new file mode 100644 index 00000000..0c02260e --- /dev/null +++ b/jsf-blank/WebContent/konten.xhtml @@ -0,0 +1,80 @@ + +Content + + + +

Back to Admin Page

+
+ +
+
+

#{contentLoader.currentContent.stringTanggal}

+

#{contentLoader.currentContent.judul}

+

+
+
+ +
+
+
+

#{contentLoader.currentContent.content}

+ +

Komentar

+ +
+ + + + + + + + + +

+ + + + + +
+
+ + +

+ + + + + +
+
+
+
    + + +
  • +
    +

    #{komentar.nama}

    +
    #{komentar.stringTanggal}
    +

    #{komentar.komentar}

    +
    +
  • +
    +
    + +
+
+
+
+
\ No newline at end of file diff --git a/jsf-blank/WebContent/list-post.xhtml b/jsf-blank/WebContent/list-post.xhtml new file mode 100644 index 00000000..db5b0fda --- /dev/null +++ b/jsf-blank/WebContent/list-post.xhtml @@ -0,0 +1,35 @@ + +List Post + + + + +

Back to Admin Page

+
+ + +
+
\ No newline at end of file diff --git a/jsf-blank/WebContent/logout.xhtml b/jsf-blank/WebContent/logout.xhtml new file mode 100644 index 00000000..3693f1cf --- /dev/null +++ b/jsf-blank/WebContent/logout.xhtml @@ -0,0 +1,22 @@ + +Log Out + + + +

Success Logged out

+ +

Home Page

+
+
+ + + + +
+
\ No newline at end of file diff --git a/jsf-blank/WebContent/manajemen-user.xhtml b/jsf-blank/WebContent/manajemen-user.xhtml new file mode 100644 index 00000000..fffc4517 --- /dev/null +++ b/jsf-blank/WebContent/manajemen-user.xhtml @@ -0,0 +1,85 @@ + +Management User + + + + + +

List of User

+
+ + + +
+ + + + + Username + + #{u.username} + + + + + Name + + #{u.name} + + + + + Role + + #{u.roleString} + + + + + Email + + #{u.email} + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + +
+
\ No newline at end of file diff --git a/jsf-blank/WebContent/not_allowed.xhtml b/jsf-blank/WebContent/not_allowed.xhtml new file mode 100644 index 00000000..cf02d91b --- /dev/null +++ b/jsf-blank/WebContent/not_allowed.xhtml @@ -0,0 +1,7 @@ + +

You're not allowed this page.

+
+

Back to Home Page

+
\ No newline at end of file diff --git a/assets/css/screen.css b/jsf-blank/WebContent/resources/css/screen.css similarity index 96% rename from assets/css/screen.css rename to jsf-blank/WebContent/resources/css/screen.css index 1d8fdf3b..5af5f3ea 100644 --- a/assets/css/screen.css +++ b/jsf-blank/WebContent/resources/css/screen.css @@ -147,7 +147,11 @@ a:hover { /* Nav ================================================== */ .nav { +<<<<<<< HEAD + position: relative; +======= position: absolute; +>>>>>>> 995cea6f7f68cf98b3a33285204a120951e7c074 top: 0; left: 50%; height: 70px; @@ -233,7 +237,11 @@ div.cover > img { } /* Contains the time, title and subtitle for an article */ .art-header-inner { +<<<<<<< HEAD + position: relative; +======= position: fixed; +>>>>>>> 995cea6f7f68cf98b3a33285204a120951e7c074 top: 300px; left: 50%; margin-left: -490px; @@ -290,6 +298,11 @@ div.cover > img { font-style: normal; font-size: 21px; line-height: 1.5; +<<<<<<< HEAD + position: relative; + bottom: 100px; +======= +>>>>>>> 995cea6f7f68cf98b3a33285204a120951e7c074 } .art-body-inner a:hover { border-bottom: 1px solid #F40034; @@ -386,6 +399,10 @@ div.cover > img { .art-list-body { position: relative; overflow: hidden; +<<<<<<< HEAD + bottom: 100px; +======= +>>>>>>> 995cea6f7f68cf98b3a33285204a120951e7c074 } .art-list-item { padding: 40px 0; @@ -829,6 +846,10 @@ hr.featured-article:after { #contact-area { width: 600px; margin-top: 25px; +<<<<<<< HEAD + margin-bottom: 100px; +======= +>>>>>>> 995cea6f7f68cf98b3a33285204a120951e7c074 } #contact-area input, #contact-area textarea { diff --git a/jsf-blank/WebContent/resources/css/simple_blog.css b/jsf-blank/WebContent/resources/css/simple_blog.css new file mode 100644 index 00000000..a42c8ed9 --- /dev/null +++ b/jsf-blank/WebContent/resources/css/simple_blog.css @@ -0,0 +1,599 @@ +/* Body +================================================== */ +body { + margin: 0; + padding: 0; + color: #666; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + line-height: 1.4em; + background-color: #fff; + background-position: top; + background-repeat: repeat-x; +} + +#subpage { background-image: url(../images/blog_header.png) } + +/* Typography +================================================== */ +h1, h2, h3, h4, h5, h6 { + font-family: Georgia, "Times New Roman", Times, serif; + text-transform: uppercase; + font-weight:400; + color: #333; + padding: 0; + margin: 0 0 10px 0; + text-rendering: optimizeLegibility; +} + +h1 { font-size:32px } +h2 { font-size:26px; margin-bottom: 30px; line-height: 20px; } +h3 { font-size:20px } +h4 { font-size:18px } +h5 { font-size:16px } +h6 { font-size:12px } + +/* Other */ +.left { float:left } +.right { float:right } +.clear { clear: both } +.h30 { height: 30px } +.h60 { height: 60px } + +img { margin: 0; padding: 0; border: 0 } +.img_border { border: 1px solid #999; background: #fff; padding: 3px; } +.img_border_b { border: 1px solid #999; background: #fff; padding: 6px } +.img_nom { display: block; margin-bottom: 15px } +.img_fl { float: left; display: block; margin: 1px 20px 8px 0 } +.img_fr { float: right; margin: 1px 0 8px 20px } + +p { margin: 0 0 10px 0; padding: 0 } +em { color: #333 } +hr { margin-bottom: 40px; padding-top: 20px; border: none; border-bottom: 1px solid #ccc } + +ul.nobullet { margin: 0; padding: 0; list-style: none } +ul.nobullet li { margin: 0; padding: 0 } + +ul.list_bullet { margin: 10px 0 10px 15px; padding: 0; list-style: none } +ul.list_bullet li { color:#555; margin: 0 0 7px 0; padding: 0 0 0 20px; background: url(../images/bullet.png) no-repeat scroll 0 5px } +ul.list_bullet li a { color: #555; font-weight: normal; text-decoration: none } +ul.list_bullet li a:hover { color: #555 } + +td label{ text-align: left; } + +/* Links +================================================== */ +a { + text-decoration: none; + -webkit-transition: color .2s ease-in-out; + -moz-transition: color .2s ease-in-out; + transition: color .2s ease-in-out; +} +a:link, a:visited { color:#76a33b; text-decoration: none} +a:hover { color: #F40034;} +a:hover,a:active { outline:none } + +/* Layout +================================================== */ +#blog_wrapper{ + width: 960px; + padding: 0 10px; + margin: 0 auto; +} + +#blog_header{ + height: 80px; + padding: 30px 70px 20px 70px; +} + +#blog_main{ + clear: both; + width: 960px; + margin: 0 auto 40px; +} + +#blog_bottom_wrapper{ + width: 100%; + background: #646464 url(../images/blog_bottom.png) top repeat-x; +} + +#blog_bottom{ + width: 960px; + margin: 0 auto; + padding: 20px 10px 0; + color: #ccc +} + +#blog_footer_wrapper { + width: 100%; + background: url(../images/blog_footer.png) top repeat-x +} +#blog_footer { + width: 960px; + margin: 0 auto; + padding: 10px 10px 10px; + text-align: center +} +#blog_content{ + width: 760px; +} +#blog_sidebar{ + width: 200px; +} + +/* Containers to keep content to a set width */ + +.nav, +.art-body-inner, +.footer, +.art-list, +.abt, +.fourohfour { + position: relative; + margin: 0 auto; +} + +/* LOGO +================================================== */ +#logo { + float: left; + padding: 20px 0 0 0; +} +#logo h1{ + font-family: "proxima-nova", "helvetica neue", "helvetica", sans-serif; + font-weight: 700; + font-size: 13px; + line-height: 30px; + color: #000; + text-transform: uppercase; +} +#logo h1 { + height: 30px; + margin-left: 0px; + letter-spacing: 1px; + font-family: 'Questrial', sans-serif; + font-size: 30px; +} +#logo h1 span{ + color: #76a33b !important; +} + +/* Sidebar +================================================== */ +#blog_sidebar h3 { + margin-bottom: 15px +} + +.sidebar_section { + margin-bottom: 40px; +} + +.sidebar_section_bg { + padding: 20px; + background: #f3f3f3 +} +.sidebar_link_list { + margin: 0; + padding: 0; + list-style: none +} +.sidebar_link_list li { + margin: 0; + padding: 10px; + border-bottom: 1px dashed #fff +} + +/* Menu +================================================== */ +#menu{ + float: right; +} + +/* 404 page +================================================== */ +.fourohfour { + padding: 240px 0 100px; + text-align: center; +} + +/* Code +================================================== */ + +code, tt { +background: #ededee; +color: #3C4043; +font-size: 90%; +padding: 1px 3px; +} + +pre { + width: 92%; + overflow: auto; + margin: 2rem 0; + padding: 1rem 0.8rem 1rem 1.2rem; + color: #3f3b36; + border: 1px solid #ccc; + border-left: 1rem solid #ccc; + font: lighter 1.2rem/2rem monospace; + background: url(/assets/img/pre.png) repeat 0 -0.9rem; + background-size: 1px 4rem; +} + +pre code, tt { +font-size: inherit; +white-space: -moz-pre-wrap; +white-space: pre-wrap; +background: transparent; +border: none; +padding: 0; +} + + +.gist { + font-size: 14px; +} + +/* Misc +================================================== */ +::selection { + background: #000; + color: #fff; +} +::-moz-selection { + background: #000; + color: #fff; +} +img.left { + float: left; + margin-right: 20px; +} +img.right { + float: right; + margin-left: 20px; +} +/* Clearfixing pile */ +.nav:before, +.art-body-inner:before, +.footer:before, +.art-list:before { + content:""; + display:table; +} +.nav:after, +.art-body-inner:after, +.footer:after, +.art-list:after { + clear:both; +} +.nav, +.art-body-inner, +.footer, +.art-list { + zoom:1; /* For IE 6/7 (trigger hasLayout) */ +} + + +@-webkit-keyframes le-fade { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@-moz-keyframes le-fade { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +/* FORM */ + +#contact-area { + width: 600px; + margin-top: 25px; +<<<<<<< HEAD + margin-bottom: 100px; +======= +>>>>>>> 995cea6f7f68cf98b3a33285204a120951e7c074 +} + +#contact-area input, #contact-area textarea { + padding: 5px; + width: 471px; + font-family: Helvetica, sans-serif; + margin: 0px 0px 10px 0px; + border: 2px solid #ccc; +} + +#contact-area textarea { + height: 90px; +} + +#contact-area textarea:focus, #contact-area input:focus { + border: 2px solid #900; +} + +#contact-area input.submit-button { + width: 100px; + +} +.input_form{ + width: 400px; +} + +label { + float: left; + text-align: right; + margin-right: 15px; + width: 100px; + padding-top: 5px; +} + +/* Pagingination */ +.paging { margin: 0 0 20px; padding: 0 } +.paging ul { margin: 0; padding: 0; list-style: none } +.paging ul li { margin: 0; padding: 0; display: inline } + +.paging ul li a { float: left; + display: block; + color: #666; + text-decoration: none; + margin-right: 5px; + padding: 5px 10px; + background: #ebe7e4; + border: 1px solid #d6d0cc; +} + +.paging ul li a:hover { color: #fff; background: #91c63e; border: 1px solid #5f8c19 } + +/* Article +================================================== */ +.art { + margin-top: -131px; +} +/* Header */ +.art-header { + height: 300px; + /* Background image is defined in the post */ + background-position: top center; + background-attachment: fixed; + overflow: hidden; +} +/* Contains the time, title and subtitle for an article */ +.art-header-inner { +<<<<<<< HEAD + position: relative; +======= + position: fixed; +>>>>>>> 995cea6f7f68cf98b3a33285204a120951e7c074 + top: 300px; + left: 50%; +} +.art-time, +.art-title, +.art-subtitle { + text-align: center; + text-transform: uppercase; +} +.art-time { + font-size: 14px; + line-height: 1.8; + letter-spacing: 4px; +} +.art-title { + font-size: 100px; + line-height: .9; + letter-spacing: -2px; +} +.art-subtitle { + margin-top: 4px; + font-size: 14px; + line-height: 1.3; + letter-spacing: 4px; +} + +/* If small header, make few adjustments */ +.small .art-title { + font-size: 70px; + line-height: 65px; +} +.small.art-header-inner { + top: 320px; +} + +/* Body */ +.art-body { + position: relative; + width: 100%; + background: #fff; +} +.art-body-inner { + font-family: Georgia,Cambria,"Times New Roman",Times,serif; + max-width: 640px; + padding: 80px 0 50px; + letter-spacing: 0.01rem; + font-weight: 400; + font-style: normal; + font-size: 21px; + line-height: 1.5; +<<<<<<< HEAD + position: relative; + bottom: 100px; +======= +>>>>>>> 995cea6f7f68cf98b3a33285204a120951e7c074 +} +.art-body-inner a:hover { + border-bottom: 1px solid #F40034; + padding-bottom:2px; +} +.art-body-inner ul, +.art-body-inner ol { /* For lists in the article body */ + margin-bottom: 26px; +} +.art-body-inner ul li { + list-style: disc; +} + +.art-body-inner mark { + background-color: #fdffb6; + padding: 2px; + -webkit-box-shadow: #fdffb6 0 0 5px; + -moz-box-shadow: #fdffb6 0 0 5px; + box-shadow: #fdffb6 0 0 5px; +} + +.art-body-inner blockquote { + font-size: 16px; + background: #f9f9f9; + border-left: 10px solid #ccc; + margin: 1.5em 10px; + padding: 0.5em 10px; + quotes: "\201C""\201D""\2018""\2019"; +} + +.art-body-inner blockquote p:first-child:before { + color: #ccc; + content: "“"; + font-size: 4em; + line-height: 0.1em; + margin-right: 0.25em; + vertical-align: -0.4em; +} + +.art-body-inner blockquote p { + margin-bottom: 1.5em; +} + +.art-body-inner blockquote p:last-child { + margin-bottom: 0; +} + + +.dropcap { /* First character on articles */ + float: left; + margin: 47px 10px 20px 0; + font-size: 100px; + line-height: 0; +} +.art-subhead { /* Subheads are used to break up sections of an article */ + margin: 60px 0 15px; + font-size: 20px; + line-height: 28px; + letter-spacing: 3px; +} +.callout { /* Callouts are like large pullquotes */ + font-weight: bold; +} +.art-body-inner img { + max-width: 100%; + max-height: 600px; + margin-bottom: 26px; +} +.art-body-inner img.center { + display: block; + margin-left: auto; + margin-right: auto; +} +.art-body-inner .art-reference { + font-size: 80%; + color: #999; + margin-top: 50px; +} + +/* For simple, white background posts */ +.simple .art-body { + background: none; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + + +/* List of Articles +================================================== */ +.art-list { + padding: 0 0 0; +} +.art-list-body { + position: relative; + overflow: hidden; +<<<<<<< HEAD + bottom: 100px; +======= +>>>>>>> 995cea6f7f68cf98b3a33285204a120951e7c074 +} +.art-list-item { + padding: 40px 0; + list-style: none; + overflow: hidden; + border-bottom: 1px solid #ccc; +} +.art-list-item:last-child { + border-bottom: none; +} +.art-list-title { + font-size: 26px; + line-height: 26px; + font-weight: 700; +} +.art-list-item-title-and-time { + float: left; + width: 30%; + margin-bottom: 10px; +} +.art-list-time { + font-size: 12px; + line-height: 20px; + letter-spacing: 2px; + text-transform: uppercase; + color: #999; +} +.art-list-title a { + color: #76a33b; +} +.art-list-title a:hover { + color: #F40034; +} +.art-list-item p { + width: 65%; + float: left; + margin-left: 5%; + margin-bottom: 0; + font-size: 16px; + line-height: 24px; +} +.alter_link{ + width: 65%; + float: left; + margin-left: 5%; + margin-bottom: 0; + font-size: 16px; + line-height: 24px; +} + +/* TABLE */ +table.gridtable { + font-size:11px; + color:#333333; + border-width: 1px; + border-color: #666666; + border-collapse: collapse; +} +table.gridtable th { + border-width: 1px; + padding: 8px; + border-style: solid; + border-color: #666666; + background-color: #dedede; +} +table.gridtable td { + border-width: 1px; + padding: 8px; + border-style: solid; + border-color: #666666; + background-color: #ffffff; +} \ No newline at end of file diff --git a/jsf-blank/WebContent/resources/css/styles.css b/jsf-blank/WebContent/resources/css/styles.css new file mode 100644 index 00000000..3466f9f7 --- /dev/null +++ b/jsf-blank/WebContent/resources/css/styles.css @@ -0,0 +1,60 @@ +body { + background-color: #e9e9e9; +} +a:hover { + color: red +} +h1,h2,h3 { + text-align: center; + font-family: Verdana, Arial, Helvetica, sans-serif; + color: black; +} +h1.title { + display: table; + margin: auto; + background-color: #afc4d6; + border-width: 4px; + border-style: outset; + border-color: #9fd1ff; + padding: 5px 8px; + letter-spacing: -.025em; +} /* If prompt and input are in two cells of one row, the prompt will be R-aligned. */ +.formTable { + display: table; +} +.formTable td:first-child { + text-align: right; +} +th { background-color: #afc4d6; + font-size: 110%; + font-family: Arial, Helvetica, sans-serif; +} +legend { + font-weight: bold; + color: black; + background-color: #afc4d6; + border: 1px solid #1a55bf; + padding: 3px 5px; +} +input, textarea { + background-color: #ecedf2; + text-align: left; +} +input[type="checkbox"] { + background-color: transparent; /* For IE -- doesn't matter in FF or Chrome */ +} +input[type="text"]:focus, input[type="password"]:focus, textarea:focus { + background-color: #9fd1ff; +} +.error { + color: red; + font-weight: bold; +} +.blue-error { + color: blue; + font-weight: bold; +} +ul.aligned { /* So if in centered div, the bullets line up under each other */ + display: inline-block; + text-align: left; +} diff --git a/jsf-blank/WebContent/resources/js/validate-email.js b/jsf-blank/WebContent/resources/js/validate-email.js new file mode 100644 index 00000000..6109295e --- /dev/null +++ b/jsf-blank/WebContent/resources/js/validate-email.js @@ -0,0 +1,34 @@ +function hitungAt(email) { + var i; + var count=0; + for (i=0; i < email.length; i++) { + if (email.charAt(i) == '@') { + count++; + } + } + return count; +} +function cekEmail(email) { + var at = email.indexOf("@"); + var dot = email.lastIndexOf("."); + if (hitungAt(email) > 1 || at < 1 || dot < at+2 || dot+2 > email.length) { + return false; + } + return true; +} +function validateEmail(elementID) { + var email = document.getElementById(elementID).value; + if(email.length > 0) { + var b = cekEmail(email); + if(!b) { + alert("Email salah!"); + } + return b; + } else { + return false; + } +} +function tes() { + alert("Oi!"); + return false; +} \ No newline at end of file diff --git a/jsf-blank/WebContent/resources/js/validate-post.js b/jsf-blank/WebContent/resources/js/validate-post.js new file mode 100644 index 00000000..4fdd48da --- /dev/null +++ b/jsf-blank/WebContent/resources/js/validate-post.js @@ -0,0 +1,134 @@ +function validateDateFormat(inputDate) { + if (inputDate.length == 10) { + var i; + for (i=0; i<4; i++) { + if (inputDate.charAt(i) < '0' || inputDate.charAt(i) > '9') { + return false; + } + } + if (inputDate.charAt(4) != '-') { + alert ("karakter ke " + i + " salah!"); + return false; + } + for (i=5; i<6; i++) { + if (inputDate.charAt(i) < '0' || inputDate.charAt(i) > '9') { + alert ("karakter ke " + i + " salah!"); + return false; + } + } + if (inputDate.charAt(7) != '-') { + alert ("karakter ke " + i + " salah!"); + return false; + } + for (i=8; i<9; i++) { + if (inputDate.charAt(i) < '0' || inputDate.charAt(i) > '9') { + alert ("karakter ke " + i + " salah!"); + return false; + } + } + return true; + } else { + return false; + } +} +function isKabisat(tahun) { + if (tahun % 400 == 0) { + alert("kabisat"); + return true; + } else if (tahun % 100 == 0) { + alert("bukan kabisat"); + return false; + } else if (tahun % 4 == 0) { + alert("kabisat"); + return true; + } else { + alert("bukan kabisat"); + return false; + } +} +function validateDateConstraints(inputDate) { + var arr = inputDate.split("-"); + var tanggal = Number(arr[2]); + var bulan = Number(arr[1]); + var tahun = Number(arr[0]); + + if (bulan < 1 || bulan > 12) { + return false; + } + if (bulan == 2) { + var max; + if (isKabisat(tahun) == true) { + max = 29; + } else { + max = 28; + } + if (tanggal < 1 || tanggal > max) { + return false; + } + } else if (bulan == 4 || bulan == 6 || bulan == 9 || bulan == 11) { + if (tanggal < 1 || tanggal > 30) { + return false; + } + } else { + if (tanggal < 1 || tanggal > 31) { + return false; + } + } + return true; +} +function validateDateNow(inputDate, tanggal) { + var dateNow = new Date(); + + var tglPost = inputDate.substr(8,2); + + var blnPost = inputDate.substr(5,2); + blnPost = parseInt(blnPost, 10); + blnPost -= 1; + + var thnPost = inputDate.substr(0,4); + var datePost = new Date(); + + datePost.setFullYear(thnPost, blnPost, tglPost); + + if (datePost < dateNow) { + alert("Tanggal tidak boleh kurang dari sekarang!"); + document.getElementById(tanggal).focus(); + return false; + } else { + return true; + } +} +function validateDate(inputDate, tanggal) { + inputDate = inputDate.trim(); + if (validateDateFormat(inputDate) == true) { + if (validateDateConstraints(inputDate) == false) { + alert ("Tanggal salah!"); + document.getElementById(tanggal).focus(); + return false; + } else { + return validateDateNow(inputDate, tanggal); + } + } else { + alert ("Format tanggal (YYYY-MM-DD) "); + document.getElementById(tanggal).focus(); + return false; + } +} +function validatePost(judul, konten, tanggal) { + var judulPost = document.getElementById(judul).value; + if (judulPost == "") { + alert("Judul tidak boleh kosong!"); + document.getElementById(judul).focus(); + return false; + } + + var kontenPost = document.getElementById(konten).value; + if (kontenPost == "") { + alert("Konten tidak boleh kosong!"); + document.getElementById(konten).focus(); + return false; + } + + var inputDate = document.getElementById(tanggal).value; + return validateDate(inputDate, tanggal); +} \ No newline at end of file diff --git a/jsf-blank/WebContent/resources/js/validate-username.js b/jsf-blank/WebContent/resources/js/validate-username.js new file mode 100644 index 00000000..deb611b5 --- /dev/null +++ b/jsf-blank/WebContent/resources/js/validate-username.js @@ -0,0 +1,23 @@ +function validateUsername(usernameID) { + var username = document.getElementById(usernameID).value; + if (username.length <= 0) { + alert("Username tidak boleh kosong!"); + return false; + } + if(!cekString(username)) { + alert("Username hanya bisa menggunakan alfabet dan angka"); + return false; + } + else { + return true; + } +} + +function cekString(username) { + for (var i=0; i= 48 && cek <= 80) || (cek >=65 && cek <= 90) || (cek >= 97 && cek <= 122)) ) + return false; + } + return true; +} \ No newline at end of file diff --git a/jsf-blank/WebContent/samples/README.txt b/jsf-blank/WebContent/samples/README.txt new file mode 100644 index 00000000..4fd6c49f --- /dev/null +++ b/jsf-blank/WebContent/samples/README.txt @@ -0,0 +1,54 @@ +The files in the "samples" folder are meant to be used as a starting point +for your own JSF facelets (i.e., .xhtml) files, to save you from typing in +the long and tedious DOCTYPE, declaration, and basic tags. + +Please note that the files use the JSF 2.2 format, and are not compatible with +JSF 2.1 and earlier. + +The the versions that say "with-comments" have some explanations inside the +files in HTML comments. Most of the time, you probably want to use the +other versions, that do NOT say "with-comments", because you do not want your +final files to contain the comments. For each (with and without comments), +there is a version for the case when you are making a form, and another +version for the case where you have a pure output (results) page that contains +no form. + +You have two main options: copying the files into your own JSF project, +or copying and renaming the entire jsf-blank project as described in +the notes. + +A) If you make a new project of your own, start by specifying the JSF 2.2 +user library (you have to do this the FIRST time only). Go to Window, +Preferences, Java, Build Path, User Libraries, do Add, name it something +like JSF-2.2-Library, then Add External JARs, then point at your JSF +2.2 JAR file. Then make a Dynamic Web Project, and choose "JavaServer Faces +v 2.2 project". You probably want to remove the default URL mapping and +use *.jsf instead. Then, copy the appropriate .xhtml file +from jsf-blank/WebContent/samples into the WebContent +(not the WebContent/samples) folder of your app. Rename the file to +give it a name that is meaningful for your app. + Optional: copy web.xml and faces-config.xml from jsf-blank/WebContent/WEB-INF +into the WEB-INF folder of your new app. In particular, the web.xml made +by the Eclipse wizard is not what you usually want, since it has some +extraneous things and since it omits the Development value for +javax.faces.PROJECT_STAGE, which is VERY useful during development. + Optional: also copy the "css" folder from jsf-blank/WebContent/ into +the WebContent folder of your app. You can omit this step, but then you +won't have a style sheet, and your pages will not look the same as my +examples. + +B) If you copy and rename the entire jsf-blank project, first remember that +you have to patch the .component file as described in the tutorial. Then, copy +sample-file-no-form.xhtml and sample-file-with-form.xhtml into WebContent and +rename them to have meaningful names. You should delete index.xhtml, page-b.xhtml, +the samples folder, and the somepackage Java package, so that your project does +not have extraneous files. + +Either way, the samples are simply supposed to save you from typing in the core +.xhtml tags. You still have to write all the Java code as described in the +tutorial. + + + +Taken from http://www.coreservlets.com/JSF-Tutorial/jsf2/ -- +MANY more details on creating and copying JSF projects there. \ No newline at end of file diff --git a/jsf-blank/WebContent/samples/sample-file-no-form-with-comments.xhtml b/jsf-blank/WebContent/samples/sample-file-no-form-with-comments.xhtml new file mode 100644 index 00000000..f85502e2 --- /dev/null +++ b/jsf-blank/WebContent/samples/sample-file-no-form-with-comments.xhtml @@ -0,0 +1,18 @@ + + + +Your Title Here + + + +

Your Heading Here

+ + + +#{yourBean.yourProperty} + + +
\ No newline at end of file diff --git a/jsf-blank/WebContent/samples/sample-file-no-form.xhtml b/jsf-blank/WebContent/samples/sample-file-no-form.xhtml new file mode 100644 index 00000000..efcc02e1 --- /dev/null +++ b/jsf-blank/WebContent/samples/sample-file-no-form.xhtml @@ -0,0 +1,13 @@ + + + +Your Title Here + + + +

Your Heading Here

+ +
\ No newline at end of file diff --git a/jsf-blank/WebContent/samples/sample-file-with-form-with-comments.xhtml b/jsf-blank/WebContent/samples/sample-file-with-form-with-comments.xhtml new file mode 100644 index 00000000..5173b49d --- /dev/null +++ b/jsf-blank/WebContent/samples/sample-file-with-form-with-comments.xhtml @@ -0,0 +1,30 @@ + + + + +Your Title Here + + + + +

Your Heading Here

+ + + + + + + + + + + +
\ No newline at end of file diff --git a/jsf-blank/WebContent/samples/sample-file-with-form.xhtml b/jsf-blank/WebContent/samples/sample-file-with-form.xhtml new file mode 100644 index 00000000..248896bf --- /dev/null +++ b/jsf-blank/WebContent/samples/sample-file-with-form.xhtml @@ -0,0 +1,17 @@ + + + +Your Title Here + + + +

Your Heading Here

+ + + + + +
\ No newline at end of file diff --git a/jsf-blank/WebContent/success.xhtml b/jsf-blank/WebContent/success.xhtml new file mode 100644 index 00000000..21863957 --- /dev/null +++ b/jsf-blank/WebContent/success.xhtml @@ -0,0 +1,21 @@ + +Success + + + +

Successfully logged in

+

Hi, #{userLoader.getValueCookie()}

+

Back to Home Page

+
+ + + + +
+
\ No newline at end of file diff --git a/jsf-blank/WebContent/templates/page-template.xhtml b/jsf-blank/WebContent/templates/page-template.xhtml new file mode 100644 index 00000000..0e7fefdc --- /dev/null +++ b/jsf-blank/WebContent/templates/page-template.xhtml @@ -0,0 +1,89 @@ + + + + <ui:insert name="title">Simple Blog</ui:insert> + + + + + + + + +
+
+ + +
+ +
+ +
+ Default Body Content +
+
+ +
+
+ + Default Body Content + +
+
+ +
+ +
+
+ +
+
+ + + +
+ \ No newline at end of file diff --git a/jsf-blank/WebContent/templates/view-template.xhtml b/jsf-blank/WebContent/templates/view-template.xhtml new file mode 100644 index 00000000..bf4015cb --- /dev/null +++ b/jsf-blank/WebContent/templates/view-template.xhtml @@ -0,0 +1,62 @@ + + + + <ui:insert name="title">Simple Blog</ui:insert> + + + + + + + + +
+
+ + +
+ +
+ Default Body Content +
+
+ +
+ +
+
+
+
+ + + +
+ \ No newline at end of file diff --git a/jsf-blank/WebContent/unpublished-post.xhtml b/jsf-blank/WebContent/unpublished-post.xhtml new file mode 100644 index 00000000..1c945ff1 --- /dev/null +++ b/jsf-blank/WebContent/unpublished-post.xhtml @@ -0,0 +1,46 @@ + +Unpublished Post + + + + +

Unpublished Post

+ +
+
+ + + +
+
\ No newline at end of file diff --git a/jsf-blank/build/classes/adminPackage/User.class b/jsf-blank/build/classes/adminPackage/User.class new file mode 100644 index 00000000..bc7f0c48 Binary files /dev/null and b/jsf-blank/build/classes/adminPackage/User.class differ diff --git a/jsf-blank/build/classes/adminPackage/UserAdder.class b/jsf-blank/build/classes/adminPackage/UserAdder.class new file mode 100644 index 00000000..40abf759 Binary files /dev/null and b/jsf-blank/build/classes/adminPackage/UserAdder.class differ diff --git a/jsf-blank/build/classes/adminPackage/UserLoader.class b/jsf-blank/build/classes/adminPackage/UserLoader.class new file mode 100644 index 00000000..34fb42d1 Binary files /dev/null and b/jsf-blank/build/classes/adminPackage/UserLoader.class differ diff --git a/jsf-blank/build/classes/somepackage/Comment.class b/jsf-blank/build/classes/somepackage/Comment.class new file mode 100644 index 00000000..002bd745 Binary files /dev/null and b/jsf-blank/build/classes/somepackage/Comment.class differ diff --git a/jsf-blank/build/classes/somepackage/CommentAdder.class b/jsf-blank/build/classes/somepackage/CommentAdder.class new file mode 100644 index 00000000..f7016cf1 Binary files /dev/null and b/jsf-blank/build/classes/somepackage/CommentAdder.class differ diff --git a/jsf-blank/build/classes/somepackage/CommentLoader.class b/jsf-blank/build/classes/somepackage/CommentLoader.class new file mode 100644 index 00000000..07bbc736 Binary files /dev/null and b/jsf-blank/build/classes/somepackage/CommentLoader.class differ diff --git a/jsf-blank/build/classes/somepackage/Connector.class b/jsf-blank/build/classes/somepackage/Connector.class new file mode 100644 index 00000000..44ca82cc Binary files /dev/null and b/jsf-blank/build/classes/somepackage/Connector.class differ diff --git a/jsf-blank/build/classes/somepackage/Content.class b/jsf-blank/build/classes/somepackage/Content.class new file mode 100644 index 00000000..36b48415 Binary files /dev/null and b/jsf-blank/build/classes/somepackage/Content.class differ diff --git a/jsf-blank/build/classes/somepackage/ContentLoader.class b/jsf-blank/build/classes/somepackage/ContentLoader.class new file mode 100644 index 00000000..479846cc Binary files /dev/null and b/jsf-blank/build/classes/somepackage/ContentLoader.class differ diff --git a/jsf-blank/build/classes/somepackage/PostAdder.class b/jsf-blank/build/classes/somepackage/PostAdder.class new file mode 100644 index 00000000..fcb960e1 Binary files /dev/null and b/jsf-blank/build/classes/somepackage/PostAdder.class differ diff --git a/jsf-blank/src/adminPackage/User.java b/jsf-blank/src/adminPackage/User.java new file mode 100644 index 00000000..70923073 --- /dev/null +++ b/jsf-blank/src/adminPackage/User.java @@ -0,0 +1,80 @@ +package adminPackage; + +import javax.faces.bean.ManagedBean; + +@ManagedBean +public class User { + private int ID; + private String username; + private String password; + private String name; + private String email; + private String roleString; + private int role_id; + + public int getID() { + return ID; + } + public void setID(int iD) { + ID = iD; + } + public String getUsername() { + return username; + } + public void setUsername(String username) { + this.username = username; + } + public String getPassword() { + return password; + } + public void setPassword(String password) { + this.password = password; + } + public String getName() { + return name; + } + public void setName(String name) { + this.name = name; + } + public String getEmail() { + return email; + } + public void setEmail(String email) { + this.email = email; + } + public int getRole_id() { + return role_id; + } + public void setRole_id(int role_id) { + this.role_id = role_id; + roleString = toRoleString(role_id); + } + public void setRoleString(String roleString) { + this.roleString = roleString; + } + public String getRoleString() { + return roleString; + } + private String toRoleString(int idRole) { + switch(idRole) { + case 1 : return "guest"; + case 2 : return "admin"; + case 3 : return "owner"; + case 4 : return "editor"; + default : return ""; + } + } + + public int toRoleID(String role) { + if (role.equals("guest")) + return 1; + if (role.equals("admin")) + return 2; + if (role.equals("owner")) + return 3; + if (role.equals("editor")) + return 4; + return 0; + } + +} diff --git a/jsf-blank/src/adminPackage/UserAdder.java b/jsf-blank/src/adminPackage/UserAdder.java new file mode 100644 index 00000000..ec17a1bd --- /dev/null +++ b/jsf-blank/src/adminPackage/UserAdder.java @@ -0,0 +1,97 @@ +package adminPackage; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.LinkedHashMap; +import java.util.Map; + +import javax.faces.bean.ManagedBean; + +import somepackage.Connector; + +@ManagedBean +public class UserAdder { + private Connector con; + private String username, password, name, email; + int role; + private Map roleMap; + + public UserAdder() { + try { + con = new Connector("db_simple_blog", "root", ""); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + public String getUsername() { + return username; + } + + public String getPassword() { + return password; + } + + public String getName() { + return name; + } + + public String getEmail() { + return email; + } + + public int getRole() { + return role; + } + + public Map getRoleMap() throws SQLException { + roleMap = new LinkedHashMap(); + try (ResultSet rs = con.executeQuery("select * from tbl_role ")) { + while(rs.next()) { + roleMap.put(rs.getString("role_name"), Integer.parseInt(rs.getString("role_id"))); + } + } + con.closeConnection(); + return roleMap; + } + + public void setUsername(String username) { + this.username = username; + } + + public void setPassword(String password) { + this.password = password; + } + + public void setName(String name) { + this.name = name; + } + + public void setEmail(String email) { + this.email = email; + } + + public void setRole(int role) { + this.role = role; + } + + private void reset() { + username = ""; + password = ""; + name = ""; + email = ""; + role = 1; + } + + public void addUser() throws SQLException { + String susername = "'" + username + "'"; + String spassword = "'" + password + "'"; + String sname = "'" + name + "'"; + String semail = "'" + email + "'"; + con.executeUpdate("INSERT INTO `tbl_user`(`username`, `password`, `name`, `email`, `role_id`) VALUES (" + + susername+", "+spassword+", "+sname+", "+semail+", "+role+")"); + reset(); + } + +} diff --git a/jsf-blank/src/adminPackage/UserLoader.java b/jsf-blank/src/adminPackage/UserLoader.java new file mode 100644 index 00000000..8f7642a8 --- /dev/null +++ b/jsf-blank/src/adminPackage/UserLoader.java @@ -0,0 +1,290 @@ +package adminPackage; + +import java.io.IOException; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; +import java.util.LinkedHashMap; +import java.util.Map; + +import javax.faces.bean.ManagedBean; +import javax.faces.bean.SessionScoped; +import javax.faces.context.FacesContext; +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.omg.PortableInterceptor.USER_EXCEPTION; + +import com.sun.xml.internal.bind.v2.schemagen.xmlschema.List; + +import somepackage.Connector; + +@ManagedBean +@SessionScoped +public class UserLoader { + private String usname; + private String uspass; + private static Connector con; + private ArrayList user, users; + public static int UNDEFINED = -999; + public static int currentUserID = UNDEFINED; + private User currentUser; + private Map roleMap; + + private UserAdder userAdder; + + private Cookie cookie; + + public UserLoader(){ + try { + con = new Connector("db_simple_blog", "root",""); + retrieveUsers(); + buildRoleMap(); +// changeCurrentUser(); + userAdder = new UserAdder(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + public String getUsname() { + return usname; + } + + public void setUsname(String usname) { + this.usname = usname; + } + + public String getUspass() { + return uspass; + } + + public void setUspass(String uspass) { + this.uspass = uspass; + } + + public Cookie getCookie() { + return cookie; + } + + public void setCookie(Cookie cookie) { + this.cookie = cookie; + } + + public ArrayList getUser() { + return user; + } + public ArrayList getUsers() { + return users; + } + + public void setUser(ArrayList user) { + this.user = user; + } + + public Map getRoleMap() { + return roleMap; + } + + public User getCurrentUser() { + return currentUser; + } + + private void retrieveUsers() throws SQLException { + users = new ArrayList<>(); + try(ResultSet rs = con.executeQuery("SELECT * FROM `tbl_user`")){ + while(rs.next()) { + User temp = new User(); + temp.setUsername(rs.getString("username")); + temp.setPassword(rs.getString("password")); + temp.setName(rs.getString("name")); + temp.setID(Integer.parseInt(rs.getString("user_id"))); + temp.setEmail(rs.getString("email")); + temp.setRole_id(Integer.parseInt(rs.getString("role_id"))); + users.add(temp); + } + } + con.closeConnection(); + } + + public void updateUsers() { + try { + retrieveUsers(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + public String toEditUser(int id) { + currentUserID = id; + changeCurrentUser(); + return("edit-user?faces-redirect=true"); + } + + private void changeCurrentUser() { + if (currentUserID != UNDEFINED) { + for (User user : users) { + if (user.getID() == currentUserID) { + currentUser = user; + break; + } + } + } + } + + private void buildRoleMap() throws SQLException { + roleMap = new LinkedHashMap(); + try(ResultSet rs = con.executeQuery("SELECT * FROM `tbl_role`")){ + while(rs.next()) { + roleMap.put(rs.getString("role_name"), Integer.parseInt(rs.getString("role_id"))); + } + } + con.closeConnection(); + } + + public String editUser() throws SQLException { + String username = "'" + currentUser.getUsername() + "'"; + String password = "'" + currentUser.getPassword() + "'"; + String name = "'" + currentUser.getName() + "'"; + String email = "'" + currentUser.getEmail() + "'"; + + con.executeUpdate("UPDATE tbl_user SET username=" + username + ", password=" + password + + ", name=" + name + ", email=" + email + ", role_id=" + currentUser.getRole_id() + + " WHERE user_id=" + currentUser.getID()); + retrieveUsers(); + + return("manajemen-user?faces-redirect=true"); + } + + public String deleteUser(int id) throws SQLException { + con.executeUpdate("DELETE FROM tbl_user WHERE user_id=" + id); + retrieveUsers(); + return("manajemen-user?faces-redirect=true"); + } + + public void getUserFromDatabase() throws SQLException { + user = new ArrayList<>(); + try (ResultSet rs = con.executeQuery("select * from tbl_user where username = '" + usname + "'")) { + while(rs.next()) { + User temp = new User(); + temp.setID(Integer.parseInt(rs.getString("user_id"))); + temp.setUsername(rs.getString("username")); + temp.setPassword(rs.getString("password")); + temp.setName(rs.getString("name")); + temp.setRole_id(Integer.parseInt(rs.getString("role_id"))); + user.add(temp); + } + } + con.closeConnection(); + setUser(user); + } + + + public UserAdder getUserAdder() { + return userAdder; + } + + public void setUserAdder(UserAdder userAdder) { + this.userAdder = userAdder; + } + + public String addUser() throws SQLException { + userAdder.addUser(); + retrieveUsers(); + return("manajemen-user?faces-redirect=true"); + } + + public void login() throws SQLException, IOException{ + getUserFromDatabase(); + HttpServletResponse httpServletResponse = + (HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse(); + if (usname.equals(user.get(0).getUsername()) && uspass.equals(user.get(0).getPassword())) { // berhasil login + + Cookie cook = new Cookie("userName", usname); + cook.setMaxAge(3600); + httpServletResponse.addCookie(cook); + httpServletResponse.sendRedirect("success.jsf"); + setCookie(cook); + } + else{ // tidak berhasil login + httpServletResponse.sendRedirect("invalid.jsf"); + } + } + + public void logout() throws IOException { + + Cookie cookieX = getCookie(); + cookieX.setValue(null); + cookieX.setMaxAge(0); + setCookie(cookieX); + + HttpServletResponse httpServletResponse = + (HttpServletResponse)FacesContext.getCurrentInstance().getExternalContext().getResponse(); + + httpServletResponse.addCookie(cookieX); + httpServletResponse.sendRedirect("logout.jsf"); + } + + public String getValueCookie(){ + HttpServletRequest httpServletRequest = + (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest(); + + Cookie[] cookies = httpServletRequest.getCookies(); + String cookieValue = ""; + if (cookies != null) { + for(int i=0; i listComment; + private int postID; + + public CommentLoader() throws SQLException { + con = new Connector("db_simple_blog","root",""); + postID = ContentLoader.staticCurrentID; + } + + public int getPostID() { + return postID; + } + public void setPostID(int id) { + postID=id; + } + + public ArrayList getListComment() throws SQLException { + listComment = new ArrayList<>(); + String id = "'"+ postID +"'"; + try(ResultSet rs = con.executeQuery("SELECT * FROM tbl_comment WHERE id_post="+id + + "ORDER BY tanggal desc")){ + while(rs.next()) { + Comment temp = new Comment(); + temp.setPostID(postID); + temp.setNama(rs.getString("nama")); + temp.setEmail(rs.getString("email")); + temp.setTanggal((rs.getString("tanggal"))); + temp.setKomentar(rs.getString("komentar")); + listComment.add(temp); + } + } + con.closeConnection(); + + return listComment; + } + +} diff --git a/jsf-blank/src/somepackage/Connector.java b/jsf-blank/src/somepackage/Connector.java new file mode 100644 index 00000000..44db397e --- /dev/null +++ b/jsf-blank/src/somepackage/Connector.java @@ -0,0 +1,49 @@ +package somepackage; + +import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.SQLException; + +import com.mysql.jdbc.Connection; +import com.mysql.jdbc.Statement; + +public class Connector { + + private Connection con; + private String database, user, pass; + private static String LOCAL = "jdbc:mysql://localhost/"; + + public Connector(String db, String user, String pass) throws SQLException{ + database=db; + this.user=user; + this.pass=pass; + } + + private void makeConnection() throws SQLException { + try { + Class.forName("com.mysql.jdbc.Driver"); + } catch (ClassNotFoundException ex) {} + + //get database connection + con = (Connection) DriverManager.getConnection(LOCAL+database,user,pass); + } + + public void executeUpdate(String update) throws SQLException { + makeConnection(); + Statement statement = (Statement)con.createStatement(); + statement.executeUpdate(update); + con.close(); + } + + public ResultSet executeQuery(String query) throws SQLException { + makeConnection(); + Statement statement = (Statement)con.createStatement(); + ResultSet rs = statement.executeQuery(query); + return rs; + } + + public void closeConnection() throws SQLException{ + con.close(); + } + +} diff --git a/jsf-blank/src/somepackage/Content.java b/jsf-blank/src/somepackage/Content.java new file mode 100644 index 00000000..c7bb1b53 --- /dev/null +++ b/jsf-blank/src/somepackage/Content.java @@ -0,0 +1,83 @@ +package somepackage; + +import javax.faces.bean.ManagedBean; + +@ManagedBean (name="managedBean", eager=true) +public class Content { + + private int ID; + private String judul, content, descContent; + private String tanggal, stringTanggal; + private boolean published, deleted; + + public int getID() { + return ID; + } + public String getJudul() { + return judul; + } + public String getContent() { + return content; + } + public String getTanggal() { + return tanggal; + } + public String getDescContent() { + int max = 200; + if (content.length() <= max) { + descContent = content; + } else { + descContent = content.substring(0, max); + descContent += "..."; + } + return descContent; + } + public String getStringTanggal() { + String tahun = tanggal.substring(0, 4); + int stanggal = Integer.parseInt(tanggal.substring(8,10)); + int bulan = Integer.parseInt(tanggal.substring(5,7)); + stringTanggal = stanggal + " " + convertBulan(bulan) + " " + tahun; + return stringTanggal; + } + public boolean isPublished() { + return published; + } + public boolean isDeleted() { + return deleted; + } + public void setID(int iD) { + ID = iD; + } + public void setJudul(String judul) { + this.judul = judul; + } + public void setContent(String content) { + this.content = content.replaceAll("\n", "
"); + } + public void setTanggal(String tanggal) { + this.tanggal = tanggal; + } + public void setPublished(boolean published) { + this.published=published; + } + public void setDeleted(boolean deleted) { + this.deleted = deleted; + } + private String convertBulan(int bulan) { + switch(bulan) { + case 1 : return "Januari"; + case 2 : return "Februari"; + case 3 : return "Maret"; + case 4 : return "April"; + case 5 : return "Mei"; + case 6 : return "Juni"; + case 7 : return "Juli"; + case 8 : return "Agustus"; + case 9 : return "September"; + case 10 : return "Oktober"; + case 11 : return "November"; + case 12 : return "Desember"; + default : return ""; + } + } +} diff --git a/jsf-blank/src/somepackage/ContentLoader.java b/jsf-blank/src/somepackage/ContentLoader.java new file mode 100644 index 00000000..5923c83c --- /dev/null +++ b/jsf-blank/src/somepackage/ContentLoader.java @@ -0,0 +1,150 @@ +package somepackage; + +import java.sql.ResultSet; +import java.sql.SQLException; +import java.util.ArrayList; + +import javax.faces.bean.ManagedBean; + +@ManagedBean (name="contentLoader", eager=true) +public class ContentLoader { + + private Connector con; + private ArrayList posting, publishedPost, unpublishedPost, deletedPost; + private Content currentContent; + public static int staticCurrentID; + + public ContentLoader() { + try { + con = new Connector("db_simple_blog", "root",""); + listPosting(); + addPublishedPost(); + addUnpublishedPost(); + addDeletedPost(); + changeCurrentContent(staticCurrentID); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + public ArrayList getPosting() { + return posting; + } + + public ArrayList getPublishedPost() { + return publishedPost; + } + public ArrayList getUnpublishedPost() { + return unpublishedPost; + } + public ArrayList getDeletedPost(){ + return deletedPost; + } + public void setPosting(ArrayList posting) { + this.posting = posting; + } + + public Content getCurrentContent() { + return currentContent; + } + public void setCurrentContent(Content content) { + currentContent = content; + } + + public String toContentPage(int ID) { + staticCurrentID = ID; + return("konten?faces-redirect=true"); + } + public String toEditPage(int ID){ + staticCurrentID = ID; + return("edit?faces-redirect=true"); + } + + private void listPosting() throws SQLException { + posting = new ArrayList<>(); + try (ResultSet rs = con.executeQuery("select * from tbl_posting order by `tanggal` desc")) { + while(rs.next()) { + Content temp = new Content(); + temp.setJudul(rs.getString("judul")); + temp.setContent(rs.getString("konten")); + temp.setTanggal(rs.getString("tanggal")); + temp.setID(Integer.parseInt(rs.getString("id_post"))); + temp.setPublished(Integer.parseInt(rs.getString("status_published"))==1 ? true : false); + temp.setDeleted(Integer.parseInt(rs.getString("status_delete"))==1 ? true : false); + + posting.add(temp); + } + } + con.closeConnection(); + } + + private void addPublishedPost() { + publishedPost = new ArrayList<>(); + for (Content content : posting) { + if(content.isPublished() && !content.isDeleted()) + publishedPost.add(content); + } + } + + private void addUnpublishedPost() { + unpublishedPost = new ArrayList<>(); + for (Content content : posting) { + if (!content.isPublished() && !content.isDeleted()) + unpublishedPost.add(content); + } + } + + private void addDeletedPost() { + deletedPost = new ArrayList<>(); + for (Content content : posting) { + if (content.isDeleted()) + deletedPost.add(content); + } + } + + public String editPost() throws SQLException { + int id=currentContent.getID(); +// String judul="'" + posting.get(currentIdx).getJudul() + "'"; +// String content="'" + posting.get(currentIdx).getContent() + "'"; +// String tanggal="'" + posting.get(currentIdx).getTanggal() + "'"; + + String judul="'" + currentContent.getJudul() + "'"; + String content="'" + currentContent.getContent() + "'"; + String tanggal="'" + currentContent.getTanggal() + "'"; + + con.executeUpdate("UPDATE tbl_posting SET judul=" + judul + ", tanggal=" + tanggal + ", konten=" + content + + " WHERE id_post=" + id); + return("index?faces-redirect=true"); + } + + private void changeCurrentContent(int id) { + for (Content content : posting) { + if (content.getID() == id) { + currentContent = content; + staticCurrentID = id; + break; + } + } + } + + public String deletePost(int ID) throws SQLException { + staticCurrentID = ID; + int id=currentContent.getID(); + //System.out.println(id); + con.executeUpdate("DELETE FROM tbl_posting WHERE id_post=" + id); + return("index?faces-redirect=true"); + } + public String deletePostTemp(int ID) throws SQLException { + con.executeUpdate("UPDATE tbl_posting SET status_delete= 1 WHERE id_post=" + ID); + return("index?faces-redirect=true"); + } + public String publishPost(int ID) throws SQLException { + con.executeUpdate("UPDATE tbl_posting SET status_published= 1 WHERE id_post=" + ID); + return("index?faces-redirect=true"); + } + public String restorePost(int ID) throws SQLException { + con.executeUpdate("UPDATE tbl_posting SET status_published = 0, status_delete= 0 WHERE id_post=" + ID); + return("index?faces-redirect=true"); + } +} \ No newline at end of file diff --git a/jsf-blank/src/somepackage/PostAdder.java b/jsf-blank/src/somepackage/PostAdder.java new file mode 100644 index 00000000..6196330b --- /dev/null +++ b/jsf-blank/src/somepackage/PostAdder.java @@ -0,0 +1,54 @@ +package somepackage; + +import java.sql.SQLException; + +import javax.faces.bean.ManagedBean; +import javax.faces.context.FacesContext; + + +@ManagedBean +public class PostAdder { + + private Connector con; + private String judul, content, tanggal; + + + public PostAdder() { + try { + con = new Connector("db_simple_blog", "root", ""); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + public String getJudul() { + return judul; + } + public void setJudul(String judul) { + this.judul = judul; + } + public String getContent() { + return content; + } + public void setContent(String content) { + this.content = content; + } + public String getTanggal() { + return tanggal; + } + public void setTanggal(String tanggal) { + this.tanggal = tanggal; + } + + public String addPost() throws SQLException { + tanggal = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("tanggal"); + String sjudul = "'" + judul + "'"; + String scontent = "'" + content + "'"; + String stanggal = "'" + tanggal + "'"; + con.executeUpdate("INSERT into tbl_posting (judul, tanggal, konten) VALUES ("+sjudul+", "+stanggal+", "+scontent+")"); + + return("index?faces-redirect=true"); + } + +} diff --git a/new_post.html b/new_post.html deleted file mode 100644 index fc4e18ee..00000000 --- a/new_post.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Simple Blog | Tambah Post - - - - - -
- - - -
- - -

-

- -
-
-

Tambah Post

- -
-
- - - - - - -
- - - -
-
-
-
- -
- - - -
- - - - - - - - \ No newline at end of file diff --git a/post.html b/post.html deleted file mode 100644 index c0b6f9e6..00000000 --- a/post.html +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Simple Blog | Apa itu Simple Blog? - - - - - -
- - - -
- -
-
- -

Apa itu Simple Blog?

-

-
-
- -
-
-
-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Blanditiis aliquam minus consequuntur amet nulla eius, neque beatae, nostrum possimus, officiis eaque consectetur. Sequi sunt maiores dolore, illum quidem eos explicabo! Lorem ipsum dolor sit amet, consectetur adipisicing elit. Magnam consequuntur consequatur molestiae saepe sed, incidunt sunt inventore minima voluptatum adipisci hic, est ipsa iste. Nobis, aperiam provident quae. Reprehenderit, iste.

-

Lorem ipsum dolor sit amet, consectetur adipisicing elit. Asperiores animi tenetur nam delectus eveniet iste non culpa laborum provident minima numquam excepturi rem commodi, officia accusamus eos voluptates obcaecati. Possimus?

- -
- -

Komentar

- -
-
- - - - - - -
- - - -
-
- -
    -
  • -
    -

    Jems

    -
    2 menit lalu
    -
    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Perferendis repudiandae quae natus quos alias eos repellendus a obcaecati cupiditate similique quibusdam, atque omnis illum, minus ex dolorem facilis tempora deserunt! …

    -
  • - -
  • -
    -

    Kave

    -
    1 jam lalu
    -
    -

    Lorem ipsum dolor sit amet, consectetur adipisicing elit. Perferendis repudiandae quae natus quos alias eos repellendus a obcaecati cupiditate similique quibusdam, atque omnis illum, minus ex dolorem facilis tempora deserunt! …

    -
  • -
-
-
- -
- - - -
- - - - - - - - \ No newline at end of file diff --git a/readme.md b/readme.md deleted file mode 100644 index 5e7e48f5..00000000 --- a/readme.md +++ /dev/null @@ -1,39 +0,0 @@ -# Simple Blog Java - -Tugas 2 IF3110. - -![Simple Blog](http://i655.photobucket.com/albums/uu275/sonnylazuardi/ss-5.jpg) - -## Deskripsi - -Gunakan template ini untuk membuat sebuah blog sederhana dengan menggunakan bahasa pemrograman PHP. - -## Spesifikasi - -Spesifikasi untuk Tugas II IF3110 dapat diakses pada pranala berikut: - -https://www.dropbox.com/sh/ig1hf108ad9fqxi/AAA2PMjPFICSFo3ypdrHl39La?dl=0 - -## Deliverable - -Tiap-tiap Kelompok Membuat Organizationnya masing-masing, dengan langkah: - -1. Klik tanda Tambah disamping username pada Github, Pilih Create New Organization - -2. Buat Organisasi dengan Nama : IF3110-II-Nomor_Kelompok . Nomor Kelompok dapat diakses [disini](https://docs.google.com/spreadsheets/d/1Y-FGJ_feIVYNRv-o0ycBXyfAiKMFXKA17cvw3Mhjd1A/edit?usp=sharing) - -3. Masukkan email address salah satu anggota untuk billing email ( bebas ). - -4. Undang anggota kelompok untuk menjadi anggota Organisasi. - -5. Lakukan Fork Repository ini ke Organisasi yang baru dibentuk - -6. Setelah selesai mengerjakan, lakukan Pull Request. - -## Lisensi - -© 2014 Asisten IF3110 - -Yogi | [Sonny](http://github.com/sonnylazuardi) | Fathan | Renusa | Kelvin | Yanuar - -Dosen: [Yudistira Dwi Wardhana](http://github.com/yudis) \ No newline at end of file