- Timestamp:
- 11/24/06 16:23:35 (2 years ago)
- Location:
- branches/multiuser
- Files:
-
- 21 modified
-
admin/channels.php (modified) (2 diffs)
-
api.php (modified) (4 diffs)
-
cls/items.php (modified) (8 diffs)
-
cls/l10n.php (modified) (1 diff)
-
cls/update.php (modified) (5 diffs)
-
cls/wrappers/header.php (modified) (2 diffs)
-
cls/wrappers/item.php (modified) (1 diff)
-
constants.php (modified) (1 diff)
-
extlib/rss_fetch.inc (modified) (2 diffs)
-
index.php (modified) (1 diff)
-
themes/default/mobile/feed.php (modified) (1 diff)
-
themes/default/mobile/footer.php (modified) (1 diff)
-
themes/default/mobile/header.php (modified) (1 diff)
-
themes/default/mobile/index.php (modified) (2 diffs)
-
themes/default/mobile/item.php (modified) (2 diffs)
-
themes/default/mobile/itemlist.php (modified) (1 diff)
-
themes/default/mobile/nav.php (modified) (2 diffs)
-
themes/default/mobile/navitem.php (modified) (1 diff)
-
themes/default/mobile/plugins.php (modified) (2 diffs)
-
themes/default/mobile/style.css (modified) (1 diff)
-
themes/default/web/item.php (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/multiuser/admin/channels.php
r1606 r1639 281 281 282 282 if ($label != 'http://' && substr($label, 0,4) == "http") { 283 $tags = $_REQUEST['channel_tags'];283 $tags = @$_REQUEST['channel_tags']; 284 284 $ret = add_channel($label,$fid,null,null,$tags); 285 285 //var_dump($ret); … … 900 900 901 901 // Description 902 $descr = strip_tags($descr);902 $descr = trim(strip_tags($descr)); 903 903 echo "<p><label for=\"c_descr\">". __('Description:') ."</label>\n" 904 904 ."<input type=\"text\" id=\"c_descr\" name=\"c_descr\" value=\"$descr\" /></p>\n"; -
branches/multiuser/api.php
r1628 r1639 52 52 rss_require('extlib/JSON.php'); 53 53 $json = new Services_JSON(); 54 $query = sanitize(@$_REQUEST['q'], RSS_SANITIZER_WORDS);54 $query = preg_replace('#[^a-z0-9\s]#','',@$_REQUEST['q']); 55 55 if ($query) { 56 56 $res = osSearch($query); 57 57 } else { 58 $res = array($query,array() );58 $res = array($query,array(),array(),array()); 59 59 } 60 header('Content-Type: application/json');60 header('Content-Type: text/plain'); 61 61 die ($json->encode($res)); 62 62 break; … … 80 80 ." c.id, c.title, c.url, c.siteurl, f.name " 81 81 ." from ".getTable("channels")." c " 82 . " inner join " . getTable("folders")." f on f.id = c.parent"; 82 ." inner join " . getTable("folders")." f " 83 ." on f.id = c.parent"; 83 84 84 85 if (hidePrivate()) { … … 149 150 ." unix_timestamp(ifnull(i.pubdate, i.added)) as idate ,i.id as iid" 150 151 ." from ".getTable('item')." i " 151 . " inner join ".getTable('channels') ." c " 152 ." on i.cid=c.id where i.unread & ". RSS_MODE_UNREAD_STATE ." and c.id=$cid"; 152 ." inner join " .getTable('channels') ." c " 153 ." on c.id = i.cid " 154 ." where i.unread & ". RSS_MODE_UNREAD_STATE ." and c.id=$cid"; 153 155 154 156 if ($date) { … … 216 218 } 217 219 } 218 return array($q,$results );220 return array($q,$results,array(),array()); 219 221 } 220 222 ?> -
branches/multiuser/cls/items.php
r1604 r1639 60 60 * ctor 61 61 */ 62 function Item($id, $title, $url, $enclosure, $parent, $author, $description, $date, $isPubDate, $unread, $private, $sticky, $flagged) {62 function Item($id, $title, $url, $enclosure, $parent, $author, $description, $date, $isPubDate, $unread, $rating) { 63 63 $this->rss = &$GLOBALS['rss']; 64 64 $this->id = $id; 65 //$this->flags = $unread;65 $this->flags = $unread; 66 66 if ($title) { 67 67 $this->title = $title; … … 87 87 $this -> tags=array(); 88 88 $this -> rating = $rating; 89 $this ->isUnread = $unread ;90 $this ->isPrivate = $ private;91 $this ->isDeleted = $ deleted;92 $this ->isSticky = $ sticky;93 $this ->isFlag = $flagged;89 $this ->isUnread = $unread & RSS_MODE_UNREAD_STATE; 90 $this ->isPrivate = $unread & RSS_MODE_PRIVATE_STATE; 91 $this ->isDeleted = $unread & RSS_MODE_DELETED_STATE; 92 $this ->isSticky = $unread & RSS_MODE_STICKY_STATE; 93 $this ->isFlag = $unread & RSS_MODE_FLAG_STATE; 94 94 //$this -> key = md5(rand(0,10000)); 95 95 … … 193 193 $this->items[] = $item; 194 194 195 if ((!$this -> hasUnreadItems) && $item-> isUnread) {195 if ((!$this -> hasUnreadItems) && $item->flags & RSS_MODE_UNREAD_STATE) { 196 196 $this -> hasUnreadItems = true; 197 197 } … … 260 260 261 261 // Predefined alternate ordering 262 $this -> ORDER_BY_UNREAD_FIRST = " order by i2u.flgunread desc, ";262 $this -> ORDER_BY_UNREAD_FIRST = " order by i2u.flgunread & " . RSS_MODE_UNREAD_STATE . " desc, "; 263 263 if (getConfig('rss.config.absoluteordering')) { 264 264 $this -> ORDER_BY_UNREAD_FIRST .= " f.position asc, c2u.position asc"; 265 265 } else { 266 $this -> ORDER_BY_UNREAD_FIRST .= " f.name asc, c .title asc";266 $this -> ORDER_BY_UNREAD_FIRST .= " f.name asc, c2u.title asc"; 267 267 } 268 268 $this -> ORDER_BY_UNREAD_FIRST .= ", i.added desc, i.id asc"; … … 271 271 272 272 /** 273 * Populates a an ItemList with items from the Database. Note that this meth do273 * Populates a an ItemList with items from the Database. Note that this method 274 274 * can be invoked several times on the same ItemList object instance: upon each 275 275 * call the new items will be aggregated to the existing ones. … … 283 283 284 284 _pf('ItemList::populate()'); 285 $this -> _sqlActualWhat = " i.title, c.title, c.id, " 286 ."i2u.flgunread, i2u.flgprivate, i2u.flgsticky, i2u.flgdeleted, " 287 ." i2u.flgflagged," 285 $this -> _sqlActualWhat = " i.title, c.title, c.id, i2u.flgunread, " 288 286 ."i.url, i.enclosure, i.author, i.description, c2u.icon, " 289 287 ." unix_timestamp(ifnull(i.pubdate,i.added)) as ts, " … … 360 358 $this -> _sqlActualLimit = " $startItem, $itemCount"; 361 359 362 $sql = " \nselect\n\t "360 $sql = "select " 363 361 .$this -> _sqlActualWhat 364 . " \nfrom\n\t"362 . " from " 365 363 .$this -> _sqlActualFrom 366 . " \nwhere\n\t"364 . " where " 367 365 . $this -> _sqlActualWhere 368 . " \norder by\n\t"366 . " order by " 369 367 . $this -> _sqlActualOrder 370 . " \nlimit "368 . " limit " 371 369 . $this -> _sqlActualLimit; 372 370 373 // die( $sql );371 //echo $sql; 374 372 $this -> iids = array(); 375 $res = rss_query($sql);373 $res = $GLOBALS['rss_db']->rss_query($sql); 376 374 $this -> rowCount = $GLOBALS['rss_db']->rss_num_rows($res); 377 375 $prevCid = -1; 378 376 $curIdx = 0; 379 377 $f=null; 380 while (list ($ititle_, $ctitle_, $cid_, $iunread_, $i private_, $isticky_, $ideleted_, $iflagged_, $iurl_, $ienclosure_, $iauthor_, $idescr_, $cicon_, $its_, $iispubdate_, $iid_) = $GLOBALS['rss_db']->rss_fetch_row($res)) {378 while (list ($ititle_, $ctitle_, $cid_, $iunread_, $iurl_, $ienclosure_, $iauthor_, $idescr_, $cicon_, $its_, $iispubdate_, $iid_) = $GLOBALS['rss_db']->rss_fetch_row($res)) { 381 379 382 380 // Built a new Item 383 $i = new Item($iid_, $ititle_, $iurl_, $ienclosure_, $cid_, $iauthor_, $idescr_, $its_, $iispubdate_, $iunread_ , $iprivate_, $isticky_, $iflagged_);381 $i = new Item($iid_, $ititle_, $iurl_, $ienclosure_, $cid_, $iauthor_, $idescr_, $its_, $iispubdate_, $iunread_); 384 382 385 383 // no dupes, please … … 413 411 // Some stats... 414 412 $this -> itemCount++; 415 if ($iunread_ ) {413 if ($iunread_ & RSS_MODE_UNREAD_STATE) { 416 414 $this -> unreadCount++; 417 415 $this -> unreadIids[] = $iid_; -
branches/multiuser/cls/l10n.php
r1628 r1639 75 75 } 76 76 /** 77 * Detect users preferred language. Losely based on http://grep.be/data/accept-to-gettext.inc 77 * Detect user's preferred language. 78 * Loosely based on http://grep.be/data/accept-to-gettext.inc 78 79 */ 79 80 function __detectUserLang() { 80 if (isset($_REQUEST['lang']) && preg_match('#^[a-z]{2}_?([A-Z]{2})?$#',$_REQUEST['lang']) && ($_REQUEST['lang'] == 'en' || file_exists(GREGARIUS_HOME .'intl/'.$_REQUEST['lang']))) { 81 // Language overridden? 82 if (defined('RSS_LANGUAGE_OVERRIDE')) { 83 return constant('RSS_LANGUAGE_OVERRIDE'); 84 // Language defined in the request (?lang=) 85 } elseif (isset($_REQUEST['lang']) && preg_match('#^[a-z]{2}_?([A-Z]{2})?$#',$_REQUEST['lang']) && ($_REQUEST['lang'] == 'en' || file_exists(GREGARIUS_HOME .'intl/'.$_REQUEST['lang']))) { 81 86 $this -> __setLocaleCookie($_REQUEST['lang']); 82 87 rss_invalidate_cache(); -
branches/multiuser/cls/update.php
r1604 r1639 99 99 if (!hidePrivate() || $ignorePrivate) { 100 100 if (count($newIds) > 0 && getConfig('rss.config.markreadonupdate')) { 101 rss_query("update ".getTable("item2user")." i2u set i2u.flgunread=0 where i2u.flgunread=1" 101 rss_query("update ".getTable("item2user")." i2u set i2u.flgunread = unread & " 102 .SET_MODE_READ_STATE." where unread & ".RSS_MODE_UNREAD_STATE 102 103 ." and i2u.fkiid not in (".implode(",", $newIds).")"); 103 104 } … … 113 114 114 115 function magpieError($error) { 115 if ( $error & MAGPIE_FEED_ORIGIN_CACHE) {116 if (is_numeric($error) && ($error & MAGPIE_FEED_ORIGIN_CACHE)) { 116 117 if ($error & MAGPIE_FEED_ORIGIN_HTTP_304) { 117 118 $label = __('OK (304 Not modified)'); … … 120 121 elseif ($error & MAGPIE_FEED_ORIGIN_HTTP_TIMEOUT) { 121 122 $label = __('HTTP Timeout (Local cache)'); 122 $cls = ERROR_ WARNING;123 $cls = ERROR_ERROR; 123 124 } 124 125 elseif ($error & MAGPIE_FEED_ORIGIN_NOT_FETCHED) { … … 129 130 $label = __('404 Not Found (Local cache)'); 130 131 $cls = ERROR_ERROR; 132 } elseif ($error & MAGPIE_FEED_ORIGIN_HTTP_403) { 133 $label = __('403 Forbidden (Local cache)'); 134 $cls = ERROR_ERROR; 131 135 } 132 136 else { … … 141 145 else { 142 146 if (is_numeric($error)) { 143 $label = __('ERROR') ;147 $label = __('ERROR') ." $error"; 144 148 $cls = ERROR_ERROR; 145 149 } else { -
branches/multiuser/cls/wrappers/header.php
r1604 r1639 135 135 } 136 136 137 function rss_header_logininfo( ) {137 function rss_header_logininfo($showLoginBox = true) { 138 138 139 139 $ret = "<div id=\"loginfo\">\n"; … … 142 142 $ret .= sprintf(__('Logged in as <strong>%s</strong>'), rss_user_name()) 143 143 ." | <a href=\"".getPath()."?logout\">".__('Logout')."</a>\n"; 144 } else {144 } else if(true == $showLoginBox) { 145 145 $ret .= __('Not logged in') 146 146 ." | <a href=\"#\" onclick=\"miniloginform(); return false;\">".__('Login')."</a>"; -
branches/multiuser/cls/wrappers/item.php
r1606 r1639 47 47 if (getConfig('rss.output.usepermalinks')) { 48 48 list ($ply, $plm, $pld) = explode(":", rss_date("Y:m:d", $GLOBALS['rss'] -> currentItem -> date, false)); 49 $ptitle = ($label."'".$GLOBALS['rss'] -> currentItem -> parent -> escapedTitle 50 ."/$ply/$plm/$pld/".$GLOBALS['rss'] -> currentItem -> escapedTitle."'"); 51 } 52 return $ptitle; 49 $ptitle = ($label."'". htmlentities($GLOBALS['rss'] -> currentItem -> title,ENT_QUOTES ,'UTF-8') ."'"); 50 } 51 return @$ptitle; 53 52 } 54 53 -
branches/multiuser/constants.php
r1530 r1639 177 177 // Profiling 178 178 // - The profiling information is "html commented out" at the end of every html page 179 define('PROFILING', 1);180 define('PROFILING_DB', 1);179 //define('PROFILING', 1); 180 //define('PROFILING_DB', 1); 181 181 182 182 ?> -
branches/multiuser/extlib/rss_fetch.inc
r1164 r1639 50 50 // Not fetched because age < MAGPIE_CACHE_AGE 51 51 define ('MAGPIE_FEED_ORIGIN_NOT_FETCHED', 64); 52 // 403 Forbidden 53 define ('MAGPIE_FEED_ORIGIN_HTTP_403', 128); 52 54 53 55 /* … … 236 238 if (is_object($resp) && isset($resp->status)) { 237 239 switch ($resp->status) { 240 case '403': 241 $rss -> rss_origin |= MAGPIE_FEED_ORIGIN_HTTP_403; 242 break; 238 243 case '404': 239 244 $rss -> rss_origin |= MAGPIE_FEED_ORIGIN_HTTP_404; -
branches/multiuser/index.php
r1604 r1639 122 122 $unreadItems = new ItemList(); 123 123 $numItems = getConfig('rss.output.frontpage.numitems'); 124 125 126 $unreadItems -> populate(" i2u.flgunread=1 ", "", 0, $numItems,ITEM_SORT_HINT_UNREAD); 124 /* 125 $hiddenIds = getHiddenChannelIds(); 126 if (count($hiddenIds)) { 127 $sqlWhereHidden = " and c.id not in (" . implode(',',$hiddenIds) . ") "; 128 } else { 129 $sqlWhereHidden = ""; 130 } 131 */ 132 $sqlWhereHidden = ""; 133 134 $unreadItems -> populate("i2u.flgunread=1 & " . RSS_MODE_UNREAD_STATE . $sqlWhereHidden, "", 0, $numItems,ITEM_SORT_HINT_UNREAD); 127 135 //var_dump($unreadItems); 128 136 _pf('end populate unread items'); -
branches/multiuser/themes/default/mobile/feed.php
r1302 r1639 1 1 <?php if(rss_feed_do_title()) { ?> 2 <h3><a href="<?php echo rss_feed_url(); ?>"><?php echo rss_feed_title(); ?></a></h3> 2 <h3> 3 <?php if (rss_feed_favicon_url()) { ?> 4 <img src="<?php echo rss_feed_favicon_url(); ?>" class="favicon" width="16" height="16" alt="" /> 5 <?php } ?> 6 <a href="<?php echo rss_feed_url(); ?>"><?php echo rss_feed_title(); ?></a></h3> 3 7 <?php } 4 8 rss_feed_items(); -
branches/multiuser/themes/default/mobile/footer.php
r1302 r1639 1 <span><a href="#top">TOP</a></span> 2 <span><a href="http://gregarius.net/">Gregarius</a> <?php echo _VERSION_; ?><?php echo rss_svn_rev('.'); ?></span> 3 <span><a href="http://validator.w3.org/check/referer">XHTML1.0-MP</a></span> 4 <span>Last update: <?php echo rss_footer_last_modif(); ?></span> 1 <div id="footer"> 2 <?php echo rss_nav() ?> 3 </div> -
branches/multiuser/themes/default/mobile/header.php
r1302 r1639 1 1 <title><?php echo rss_header_title() ?></title> 2 <link rel="stylesheet" type="text/css" href="<?php echo getExternalThemeFile( 'style.css' ) ?>" />2 <link rel="stylesheet" type="text/css" href="<?php echo getExternalThemeFile( 'style.css' ) ?>"> -
branches/multiuser/themes/default/mobile/index.php
r1309 r1639 4 4 <?php rss_main_header(); ?> 5 5 </head> 6 <body> 7 <a name="top"></a> 6 <body id="top"> 8 7 <?php 9 8 if( array_key_exists('feeds',$_REQUEST) ) { … … 20 19 </div> 21 20 <?php } ?> 22 <?php echo rss_nav() ?> 23 <div id="ftr"> 24 <?php rss_main_footer(); ?> 25 </div> 21 <?php rss_main_footer(); ?> 26 22 </body> 27 23 </html> -
branches/multiuser/themes/default/mobile/item.php
r1604 r1639 1 <br /><br /><h4><a href="<?php 1 <?php 2 if (!isset($GLOBALS['__item__idx__'])) { 3 $GLOBALS['__item__idx__']=0; 4 } 5 $cls = $GLOBALS['__item__idx__']++ % 2 ? 'e':'o'; 6 ?> 7 <div class="item <?php echo $cls; ?>"> 8 <h4><a href="<?php 2 9 $url = rss_item_url(); 3 10 if (substr($url,0,4) == 'http') { … … 8 15 ?>"><?php echo rss_item_title(); 9 16 ?></a></h4> 10 <h5><?php echo rss_item_date(); ?> <?php echo rss_item_author(); ?></h5>17 <h5><?php echo rss_item_date(); ?> <?php echo rss_item_author(); ?></h5> 11 18 <?php if (rss_item_has_enclosure()) { ?> 12 19 <h5><?php echo __('Enclosure:'); ?> [<a href="<?php echo rss_item_enclosure(); ?>"><?php echo __('download'); ?></a>]</h5> 13 20 <?php } ?> 14 21 <?php if (rss_item_display_tags() && count($GLOBALS['rss']->currentItem->tags)) { ?> 15 <h5><a href="<?php echo rss_item_tagslink(); ?>"><?php echo __('Tags'); ?></a>: <span><?php echo rss_item_tags(); ?></ h5>22 <h5><a href="<?php echo rss_item_tagslink(); ?>"><?php echo __('Tags'); ?></a>: <span><?php echo rss_item_tags(); ?></span></h5> 16 23 <?php } ?> 17 <br />18 24 <div class="content"> 19 25 <?php echo rss_item_content(); ?> 20 26 21 27 <?php if(!hidePrivate()) { ?> 22 <br /> 23 <div class="mobileform"> 24 <input type="radio" value="mobile_read" name="<?= rss_item_id(); ?>" <?php 25 if( !$GLOBALS['rss'] -> currentItem -> isUnread && !$GLOBALS['rss'] -> currentItem -> isSticky ) { 26 echo "checked"; 27 } 28 ?> >read 29 <input type="radio" name="<?= rss_item_id(); ?>" <?php 30 if( $GLOBALS['rss'] -> currentItem -> isUnread ) { 31 echo "checked"; 32 } 33 ?> >unread 34 <input type="radio" value="mobile_sticky" name="<?= rss_item_id(); ?>" <?php 35 if( $GLOBALS['rss'] -> currentItem -> isSticky ) { 36 echo "checked"; 37 } 38 ?> >sticky 39 </div> 28 <div class="mobileform"> 29 <label for="it_<?= rss_item_id(); ?>">State:</label> 30 <select id="it_<?= rss_item_id(); ?>" name="<?= rss_item_id(); ?>"> 31 <option value="mobile_read" <?php 32 if(!$GLOBALS['rss'] -> currentItem -> isSticky ) { 33 echo "selected=\"selected\""; 34 } ?>><?= __('Read'); ?></option> 35 <option value="mobile_unread"><?= __('Unread'); ?></option> 36 <option value="mobile_sticky" <?php 37 if( $GLOBALS['rss'] -> currentItem -> isSticky ) { 38 echo "selected=\"selected\""; 39 } 40 ?>><?= __('Sticky'); ?></option> 41 </select> 42 </div> 40 43 <?php } ?> 41 44 -
branches/multiuser/themes/default/mobile/itemlist.php
r1356 r1639 1 <?php if ($title = rss_itemlist_title()) { ?> 2 < <h2><?php echo $title; ?></h2> 1 3 <?php if(hidePrivate()) { ?> 2 <p>(<a href="<?php echo getPath(); ?>?mobilelogin& media=mobile">Login</a> to mark items read)</p>4 <p>(<a href="<?php echo getPath(); ?>?mobilelogin&media=mobile">Login</a> to mark items read)</p> 3 5 <?php } ?> 4 <?php if ($title = rss_itemlist_title()) { ?> 5 <h2><?php echo $title; ?></h2> 6 <form method="POST" style="display: inline;"> 6 <form method="post" action="<?= getPath(); ?>"> 7 7 <?php } rss_itemlist_feeds(); ?> 8 8 <?php if( !isMobileDevice() ) { ?> 9 <input type='hidden' name='mobile' >9 <input type='hidden' name='mobile' /> 10 10 <?php } ?> 11 < input type='submit' value='next'>11 <p id="nextitems"><input type='submit' value='Next »»' /></p> 12 12 </form> 13 <?php rss_plugin_hook('rss.plugins.bodyend.media', getThemeMedia()); ?> -
branches/multiuser/themes/default/mobile/nav.php
r1604 r1639 1 <div class="navlist">2 1 <?php 3 2 $GLOBALS['rss']->nav->appendNavItem(getPath()."?feeds",__('Feeds')); 4 3 $GLOBALS['rss']->nav->appendNavItem(getPath()."?cats",__('Categories')); 5 $GLOBALS['rss']->nav->appendNavItem(getPath()."update.php?mobile", __('<span>R</span>efresh')); 4 $GLOBALS['rss']->nav->appendNavItem(getPath()."update.php?mobile", __('Refresh')); 5 $GLOBALS['rss']->nav->appendNavItem("#top",'TOP of Page'); 6 6 7 7 foreach ($GLOBALS['rss']->nav->items as $item) { … … 12 12 13 13 ?> 14 </div> -
branches/multiuser/themes/default/mobile/navitem.php
r1302 r1639 1 <span<?php echo rss_nav_item_class(); ?>><a href="<?php echo rss_nav_item_href(); ?>"><?php echo rss_nav_item_label(); ?></a></span> 1 <?php 2 if (!isset($GLOBALS['__ak__'])) { 3 $GLOBALS['__ak__']=0; 4 } 5 $ak = ++$GLOBALS['__ak__']; 6 ?> 7 <p><span>[<?= $ak; ?>] </span><a accesskey="<?= $ak; ?>" href="<?php echo rss_nav_item_href(); ?>"><?php echo rss_nav_item_label(); ?></a></p> -
branches/multiuser/themes/default/mobile/plugins.php
r1442 r1639 18 18 function __mobile_truncate_content($i) { 19 19 $ml = rss_theme_config_override_option('rss.output.maxlength',DEFAULT_MOBILE_OUTPUT_MAXLENGTH); 20 $i -> description = html_substr($i -> description, $ml) ; 20 if ($ml) { 21 $i -> description = html_substr($i -> description, $ml) ; 22 } 21 23 return $i; 22 24 } … … 29 31 rss_set_hook('rss.plugins.items.beforerender','__mobile_truncate_content'); 30 32 } 31 32 33 /*else {34 setProperty('rss.prop.theme.default.mobile','rss.content.strip.images','theme',true) ;35 }*/36 33 37 34 function mobileLoginForm() { -
branches/multiuser/themes/default/mobile/style.css
r1357 r1639 1 img { border: 0px; } 2 h4,h5 { display:block;margin:0;padding:0 } 3 div.mobileform { 4 border: 1px dashed black; 5 margin: 0 13px 13px 0; 6 display:block; 7 } 1 body { 2 background-color:white; 3 padding: 0; 4 margin:0; 5 font: normal x-small Verdana, Arial, "MS Trebuchet", sans-serif; 6 color: #333; 7 < input,select,option{font-size:xx-small;} 8 < div,p,h4,h5,ul {margin:0;padding:0;} 9 < div.item { border-top: 1px solid #ccc; border-bottom: 1px solid #ccc; margin:0.3em 0; padding: 0 ;} 10 < div.item.e { background-color: #efefef;} 11 < div.item.o { background-color: #f6f6f6;} 12 < div.item .content { padding: 1em 4px; } 13 < a {color:#d54; text-decoration:none;} 14 < img {border: 0px;} 15 < h2
