Make WordPress Core

Changeset 31534


Ignore:
Timestamp:
02/25/2015 01:49:26 AM (10 years ago)
Author:
azaozz
Message:

PressThis v2, first run. Props michael-arestad, stephdau, marcelomazza, DrewAPicture, iseulde, afercia, kraftbj, rachelbaker, AramZS, dd32. See #31373.

Location:
trunk/src
Files:
5 added
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-admin/admin-ajax.php

    r31333 r31534  
    6262    'send-attachment-to-editor', 'save-attachment-order', 'heartbeat', 'get-revision-diffs',
    6363    'save-user-color-scheme', 'update-widget', 'query-themes', 'parse-embed', 'set-attachment-thumbnail',
    64     'parse-media-shortcode', 'destroy-sessions', 'install-plugin', 'update-plugin'
     64    'parse-media-shortcode', 'destroy-sessions', 'install-plugin', 'update-plugin', 'press-this-save-post',
     65    'press-this-add-category',
    6566);
    6667
  • trunk/src/wp-admin/css/forms.css

    r31422 r31534  
    685685.pressthis {
    686686    margin: 20px 0;
     687    vertical-align: top;
     688    position: relative;
     689    z-index: 1;
    687690}
    688691
     
    749752}
    750753
     754.pressthis .button {
     755    margin-left: 10px;
     756    padding: 0;
     757    height: auto;
     758    vertical-align: top;
     759}
     760
     761.pressthis button .dashicons {
     762    margin: 5px 8px 6px 7px;
     763    color: #777;
     764}
     765
     766.press-this-install {
     767    margin: 20px 0 0 0;
     768    padding: 0.7em 2em 1em;
     769    max-width: 520px;
     770}
     771
     772.press-this-install textarea {
     773    width: 100%;
     774    font-size: 1em;
     775}
     776
     777.press-this-install h4 {
     778    margin: 2em 0 1em;
     779}
     780
     781/* to override the button class being applied */
     782.pressthis .button.button {
     783    margin-left: 10px;
     784    padding: 0;
     785    height: auto;
     786    vertical-align: top;
     787}
     788
     789.pressthis button .dashicons {
     790    margin: 5px 8px 6px 7px;
     791    color: #777;
     792}
     793
     794.press-this-install {
     795    margin: 20px 0 0 0;
     796    padding: 0.7em 2em 1em;
     797    max-width: 520px;
     798}
     799
     800.press-this-install textarea {
     801    width: 100%;
     802    font-size: 1em;
     803}
     804
     805.press-this-install h4 {
     806    margin: 2em 0 1em;
     807}
     808
     809
    751810/*------------------------------------------------------------------------------
    752811  20.0 - Settings
  • trunk/src/wp-admin/css/press-this.css

    r31422 r31534  
    1 .press-this #message {
    2     border-left: 4px solid #7ad03a;
    3     padding: 1px 12px;
    4     background-color: #fff;
    5     -webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1);
    6     box-shadow: 0 1px 1px 0 rgba(0,0,0,0.1);
    7 }
    8 
    9 .press-this #side-sortables .category-tabs li {
    10     display: inline;
    11     line-height: 1.35em;
    12 }
    13 
    14 body.press-this ul.category-tabs li.tabs a {
    15     color: #32373c;
    16 }
    17 
    18 .press-this #content-resize-handle {
    19     bottom: 2px;
    20 }
    21 
    22 body.press-this {
    23     color: #32373c;
     1/*
     2Press This styles :)
     3*/
     4
     5
     6/**
     7* Normalize
     8*
     9* normalize.css v3.0.0 | MIT License | git.io/normalize
     10*/
     11html {
     12    font-family: sans-serif;
     13    -ms-text-size-adjust: 100%;
     14    -webkit-text-size-adjust: 100%;
     15}
     16
     17body {
    2418    margin: 0;
    25     padding: 0;
    26     min-width: 708px;
    27     min-height: 400px;
    28 }
    29 
    30 .press-this #titlediv #title {
    31     font-size: 1.4em;
    32 }
    33 
    34 .press-this #site-heading:before {
    35     top: 3px;
    36     position: relative;
    37     display: inline-block;
    38     font: normal 18px/1 'dashicons';
    39     speak: none;
    40     color: #727272;
    41     content: '\f120';
    42     -webkit-font-smoothing: antialiased;
    43     -moz-osx-font-smoothing: grayscale;
    44 }
    45 
    46 .press-this #wphead {
    47     height: 32px;
    48     margin-left: 0;
    49     margin-right: 0;
    50     margin-bottom: 5px;
    51 }
    52 
    53 .press-this #header-logo {
    54     float: left;
    55     margin: 7px 7px 0;
    56     -webkit-user-select: none;
    57     -moz-user-select: none;
    58     -ms-user-select: none;
    59     user-select: none;
    60 }
    61 
    62 .press-this #wphead h1 {
    63     font-weight: normal;
    64     font-size: 16px;
    65     line-height: 32px;
    66     margin: 0;
    67     float: left;
    68 }
    69 
    70 .press-this #wphead h1 a {
    71     text-decoration: none;
    72 }
    73 
    74 .press-this #wphead h1 a:hover {
    75     text-decoration: underline;
    76 }
    77 
    78 .press-this #message {
    79     margin: 10px 0;
    80 }
    81 
    82 .press-this .posting {
    83     margin-right: 250px;
    84 }
    85 
    86 .press-this-sidebar {
    87     float: right;
    88     width: 240px;
    89     padding-top: 10px;
    90 }
    91 
    92 .press-this #title {
    93     margin-left: 0;
    94     margin-right: 0;
     19}
     20
     21*,
     22*:before,
     23*:after {
    9524    -webkit-box-sizing: border-box;
    9625    -moz-box-sizing: border-box;
    9726    box-sizing: border-box;
    9827}
    99 
    100 .press-this .tagchecklist {
    101     margin-top: 8px;
    102 }
    103 
    104 .press-this #titlediv {
     28@media only screen and (-webkit-min-device-pixel-ratio: 1.5), only screen and (min-resolution: 144dpi) {
     29    *,
     30    *:before,
     31    *:after {
     32        -webkit-font-smoothing: antialiased;
     33    }
     34}
     35
     36article,
     37aside,
     38details,
     39figcaption,
     40figure,
     41footer,
     42header,
     43hgroup,
     44main,
     45nav,
     46section,
     47summary {
     48    display: block;
     49}
     50
     51audio,
     52canvas,
     53progress,
     54video {
     55    display: inline-block;
     56    vertical-align: baseline;
     57}
     58
     59audio:not([controls]) {
     60    display: none;
     61    height: 0;
     62}
     63
     64[hidden],
     65template {
     66    display: none;
     67}
     68
     69a {
     70    background: transparent;
     71}
     72
     73a:active,
     74a:hover {
     75    outline: 0;
     76}
     77
     78abbr[title] {
     79    border-bottom: 1px dotted;
     80}
     81
     82b,
     83strong {
     84    font-weight: bold;
     85}
     86
     87dfn {
     88    font-style: italic;
     89}
     90
     91h1 {
     92    font-size: 2em;
     93    margin: 0.67em 0;
     94}
     95
     96mark {
     97    background: #ff0;
     98    color: #000;
     99}
     100
     101small {
     102    font-size: 80%;
     103}
     104
     105sub,
     106sup {
     107    font-size: 75%;
     108    line-height: 0;
     109    position: relative;
     110    vertical-align: baseline;
     111}
     112
     113sup {
     114    top: -0.5em;
     115}
     116
     117sub {
     118    bottom: -0.25em;
     119}
     120
     121img {
     122    border: 0;
     123}
     124
     125svg:not(:root) {
     126    overflow: hidden;
     127}
     128
     129figure {
     130    margin: 1em 40px;
     131}
     132
     133hr {
     134    -webkit-box-sizing: content-box;
     135    -moz-box-sizing: content-box;
     136    box-sizing: content-box;
     137    height: 0;
     138}
     139
     140pre {
     141    overflow: auto;
     142}
     143
     144code,
     145kbd,
     146pre,
     147samp {
     148    font-family: monospace, monospace;
     149    font-size: 1em;
     150}
     151
     152button,
     153input,
     154optgroup,
     155select,
     156textarea {
     157    color: inherit;
     158    font: inherit;
    105159    margin: 0;
    106160}
    107161
    108 .press-this #wp-content-wrap #wp-content-editor-tools {
     162button {
     163    overflow: visible;
     164}
     165
     166button,
     167select {
     168    text-transform: none;
     169}
     170
     171button,
     172html input[type="button"],
     173input[type="reset"],
     174input[type="submit"] {
     175    -webkit-appearance: button;
     176    cursor: pointer;
     177}
     178
     179button[disabled],
     180html input[disabled] {
     181    cursor: default;
     182}
     183
     184button::-moz-focus-inner,
     185input::-moz-focus-inner {
     186    border: 0;
    109187    padding: 0;
    110     top: 3px;
     188}
     189
     190input {
     191    line-height: normal;
     192}
     193
     194input[type="checkbox"],
     195input[type="radio"] {
     196    -webkit-box-sizing: border-box;
     197    -moz-box-sizing: border-box;
     198    box-sizing: border-box;
     199    padding: 0;
     200}
     201
     202input[type="number"]::-webkit-inner-spin-button,
     203input[type="number"]::-webkit-outer-spin-button {
     204    height: auto;
     205}
     206
     207input[type="search"] {
     208    -webkit-appearance: textfield;
     209    -webkit-box-sizing: content-box;
     210    -moz-box-sizing: content-box;
     211    box-sizing: content-box;
     212}
     213
     214input[type="search"]::-webkit-search-cancel-button,
     215input[type="search"]::-webkit-search-decoration {
     216    -webkit-appearance: none;
     217}
     218
     219fieldset {
     220    border: 1px solid #c0c0c0;
     221    margin: 0 2px;
     222    padding: 0.35em 0.625em 0.75em;
     223}
     224
     225legend {
     226    border: 0;
     227    padding: 0;
     228}
     229
     230textarea {
     231    overflow: auto;
     232}
     233
     234optgroup {
     235    font-weight: bold;
     236}
     237
     238table {
     239    border-collapse: collapse;
     240    border-spacing: 0;
     241}
     242
     243td,
     244th {
     245    padding: 0;
     246}
     247
     248.clearfix:before,
     249.clearfix:after {
     250    content: "";
     251    display: table;
     252}
     253.clearfix:after {
     254    clear: both;
     255}
     256
     257.hide-if-js {
     258    display: none;
     259}
     260
     261.screen-reader-text,
     262.taghint {
     263    position: absolute;
     264    margin: -1px;
     265    padding: 0;
     266    height: 1px;
     267    width: 1px;
    111268    overflow: hidden;
    112 }
    113 
    114 .press-this .wp-media-buttons {
     269    clip: rect(0 0 0 0);
     270    border: 0;
     271}
     272
     273
     274/**
     275* Typography
     276*
     277* Base element typographic styles.
     278*/
     279body,
     280button,
     281input,
     282select,
     283textarea {
     284    color: #404040;
     285    font-family: "Open Sans", Helvetica, Arial, sans-serif;
     286    font-size: 20px;
     287    font-weight: 400;
     288    line-height: 1.6;
     289}
     290
     291h1,
     292h2,
     293h3,
     294h4,
     295h5,
     296h6 {
     297    clear: both;
     298}
     299
     300p {
     301    margin-bottom: 1.5em;
     302}
     303
     304b,
     305strong {
     306    font-weight: 700;
     307}
     308
     309
     310/**
     311* Buttons
     312*
     313* Pushing buttons is what I do.
     314*/
     315.button-primary,
     316.button-subtle,
     317.scan-submit {
     318    display: inline-block;
     319    margin: 0;
     320    padding: 0 10px 1px;
     321    border-width: 1px;
     322    border-style: solid;
     323    -webkit-border-radius: 3px;
     324    border-radius: 3px;
     325    font-size: 13px;
     326    line-height: 2;
     327    text-decoration: none;
     328    white-space: nowrap;
     329    cursor: pointer;
     330    -webkit-appearance: none;
     331}
     332
     333.button-primary {
     334    background: #2ea2cc;
     335    border-color: #2581a2;
     336    color: #fff;
     337}
     338
     339.button-primary:hover,
     340.button-primary:focus {
     341    background: #2991b7;
     342    border-color: #20708e;
     343    color: #fff;
     344    outline: 0;
     345}
     346
     347.button-primary:active {
     348    background: #2581a2;
     349    border-color: #20708e;
     350    color: #fff;
     351}
     352
     353.button-primary[disabled],
     354.button-primary:disabled {
     355    color: #c7ced1 !important;
     356    background: #2688ab !important;
     357    border-color: #20708e !important;
     358}
     359
     360.button-primary:visited {
     361    color: #fff;
     362}
     363
     364.button-subtle {
     365    background: none;
     366    border: 0;
     367    color: #0074a2;
     368}
     369
     370.button-subtle:visited {
     371    color: #0074a2;
     372}
     373
     374.button-subtle:focus,
     375.button-subtle:hover,
     376.button-subtle:active {
     377    color: #2ea2cc;
     378}
     379
     380.button-subtle:focus,
     381.button-subtle:active {
     382    outline: 0;
     383    text-decoration: underline;
     384}
     385
     386.button-reset {
     387    margin: 0;
     388    padding: 0;
     389    border: 0;
     390    background: none;
     391    cursor: pointer;
     392    -webkit-appearance: none;
     393}
     394
     395.button-reset:focus {
     396    outline: 0;
     397}
     398
     399
     400/**
     401* Forms
     402*
     403* So many input types.
     404*/
     405button,
     406input,
     407select,
     408textarea {
     409    font-size: 100%;
     410    margin: 0;
     411    vertical-align: baseline;
     412    *vertical-align: middle;
     413}
     414
     415[type="checkbox"],
     416[type="radio"] {
     417    padding: 0;
     418}
     419
     420[type="search"] {
     421    -webkit-appearance: textfield;
     422    -webkit-box-sizing: content-box;
     423    -moz-box-sizing: content-box;
     424    box-sizing: content-box;
     425}
     426
     427[type="search"]::-webkit-search-decoration {
     428    -webkit-appearance: none;
     429}
     430
     431button::-moz-focus-inner,
     432input::-moz-focus-inner {
     433    border: 0;
     434    padding: 0;
     435}
     436
     437[type="text"],
     438[type="email"],
     439[type="url"],
     440[type="password"],
     441[type="search"],
     442textarea {
     443    padding: 0.4em 0.75em;
     444    color: #333;
     445    border: 1px solid #ccc;
     446}
     447
     448[type="text"]:focus,
     449[type="email"]:focus,
     450[type="url"]:focus,
     451[type="password"]:focus,
     452[type="search"]:focus,
     453textarea:focus {
     454    color: #333;
     455    outline: 0;
     456}
     457
     458textarea {
     459    overflow: auto;
     460    padding-left: 3px;
     461    vertical-align: top;
     462}
     463
     464
     465/**
     466* Links
     467*/
     468a {
     469    color: #0074a2;
     470}
     471
     472a:visited {
     473    color: #0074a2;
     474}
     475
     476a:hover,
     477a:focus,
     478a:active {
     479    color: #2ea2cc;
     480}
     481
     482
     483/**
     484* Lists
     485*/
     486ul,
     487ol {
     488    margin: 0 0 1.5em 3em;
     489}
     490
     491ul {
     492    list-style: disc;
     493}
     494
     495ol {
     496    list-style: decimal;
     497}
     498
     499li > ul,
     500li > ol {
     501    margin-bottom: 0;
     502    margin-left: 1.5em;
     503}
     504
     505dt {
     506    font-weight: 700;
     507}
     508
     509dd {
     510    margin: 0 1.5em 1.5em;
     511}
     512
     513
     514/**
     515* Post formats
     516*
     517* Complete styles for post formats UI
     518*/
     519/* TODO if we remove the <br> during merge, this can go. */
     520#post-formats-select br {
     521    display: none;
     522}
     523
     524/* TODO Needed after merge? */
     525.post-format {
     526    width: 0;
     527    height: 0;
     528    position: absolute;
     529    top: -9999px;
     530}
     531
     532.lt-ie9 .post-format {
     533    margin: 17px 12px 0 13px;
     534    width: auto;
     535    height: auto;
     536    position: static;
     537    top: auto;
     538    float: left;
     539    width: 16px;
     540    height: 16px;
     541}
     542
     543.post-format-icon {
     544    position: relative;
     545    display: block;
     546    padding: 13px 2px 14px 13px;
     547    cursor: pointer;
     548}
     549
     550.post-format-icon:before,
     551.post-format-icon:after {
     552    content: "";
     553    display: inline-block;
     554    width: 20px;
     555    height: 20px;
     556    margin-right: 10px;
     557    font-size: 20px;
     558    line-height: 1;
     559    font-family: dashicons;
     560    text-decoration: inherit;
     561    color: #9ea7af;
     562    font-weight: 400;
     563    font-style: normal;
     564    vertical-align: top;
     565    text-align: center;
     566    -webkit-transition: color .1s ease-in 0;
     567    transition: color .1s ease-in 0;
     568    -webkit-font-smoothing: antialiased;
     569    -moz-osx-font-smoothing: grayscale;
     570}
     571
     572.post-format-icon:before {
     573    content: "\f109";
     574}
     575
     576.post-format-icon:after {
     577    display: none;
     578    content: "\f147";
     579    float: right;
     580}
     581
     582.post-format:checked + .post-format-icon {
     583    -webkit-box-shadow: inset 6px 0 0 #2ea2cc;
     584    box-shadow: inset 6px 0 0 #2ea2cc;
     585    background: rgba(46, 162, 204, 0.1);
     586}
     587
     588.post-format:checked + .post-format-icon:before,
     589.post-format:checked + .post-format-icon:after {
     590    color: #333;
     591}
     592
     593.post-format:focus + .post-format-icon {
     594    background: #2ea2cc;
     595    color: #fff;
     596}
     597
     598.post-format:focus + .post-format-icon:before,
     599.post-format:focus + .post-format-icon:after {
     600    color: #fff;
     601}
     602
     603.post-format:checked + .post-format-icon:after {
     604    display: block;
     605}
     606
     607.lt-ie9 .post-format-icon {
     608    margin-left: 16px;
     609}
     610
     611.post-format-aside:before {
     612    content: "\f123";
     613}
     614
     615.post-format-image:before {
     616    content: "\f128";
     617}
     618
     619.post-format-video:before {
     620    content: "\f126";
     621}
     622
     623.post-format-audio:before {
     624    content: "\f127";
     625}
     626
     627.post-format-quote:before {
     628    content: "\f122";
     629}
     630
     631.post-format-link:before {
     632    content: "\f103";
     633}
     634
     635.post-format-gallery:before {
     636    content: "\f161";
     637}
     638
     639
     640/**
     641* Tags
     642*
     643* Complete styles for tags UI
     644*/
     645.tagsdiv p {
     646    margin: 0;
     647}
     648
     649.tagsdiv .ajaxtag {
     650    position: relative;
     651}
     652
     653.tagsdiv .newtag {
     654    display: block;
     655    position: relative;
     656    padding: 11px 58px 11px 16px;
     657    width: 100%;
     658    border: 0;
     659    border-bottom: 1px solid #e5e5e5;
     660    font-size: 16px;
     661}
     662
     663.tagsdiv .tagadd {
     664    position: absolute;
     665    top: 0;
     666    right: 0;
     667    bottom: 1px;
     668    border: 0;
     669    -webkit-border-radius: 0;
     670    border-radius: 0;
     671    padding: 0 16px;
     672    background: #f7f7f7;
     673    border-left: 1px solid #f1f1f1;
     674}
     675
     676.tagsdiv .tagadd:hover,
     677.tagsdiv .tagadd:active,
     678.tagsdiv .tagadd:focus {
     679    outline: 0;
     680    background: #2991b7;
     681    border-color: #20708e;
     682    color: #fff;
     683}
     684
     685.tagsdiv .howto {
     686    color: #727272;
     687    font-style: italic;
     688    margin: 10px 0 6px 16px;
     689}
     690
     691
     692/* Tag hint TODO needed? */
     693/* Tag suggestions */
     694.ac_results {
     695    padding: 0;
     696    margin: -1px 0 0 -1px;
     697    list-style: none;
     698    position: absolute;
     699    z-index: 10000;
     700    display: none;
     701    border: 1px solid #d8d8d8;
     702    background-color: #fff;
     703    font-size: 14px;
     704}
     705
     706.ac_results li {
     707    padding: 6px 16px;
     708    white-space: nowrap;
     709    color: #101010;
     710    text-align: left;
     711}
     712
     713.ac_results .ac_over {
     714    background-color: #e5e5e5;
     715    background-color: #2ea2cc;
     716    color: #fff;
     717    cursor: pointer;
     718}
     719
     720.ac_match {
     721    text-decoration: underline;
     722}
     723
     724/* Tags */
     725.tagchecklist {
     726    padding: 16px 28px 5px;
     727}
     728
     729.tagchecklist:before,
     730.tagchecklist:after {
     731    content: "";
     732    display: table;
     733}
     734
     735.tagchecklist:after {
     736    clear: both;
     737}
     738
     739.tagchecklist span {
     740    display: block;
     741    margin-right: 25px;
     742    float: left;
     743    font-size: 13px;
     744    line-height: 1.8;
     745    white-space: nowrap;
    115746    cursor: default;
    116     padding: 8px 8px 6px;
    117 }
    118 
    119 .press-this #wp-content-wrap #wp-content-media-buttons a {
    120     padding: 0;
    121     line-height: normal;
    122     height: auto;
    123     font-size: 16px;
    124 }
    125 
    126 .press-this #wp-content-wrap .mce-toolbar .mce-btn-group .mce-btn {
    127     margin: 0 1px;
    128 }
    129 
    130 .press-this #wp-content-wrap .mce-toolbar .mce-btn button {
    131     padding: 2px 3px;
    132 }
    133 
    134 .press-this #wp-content-wrap div.mce-toolbar-grp,
    135 .press-this #wp-content-wrap .quicktags-toolbar {
    136     padding-right: 3px;
    137 }
    138 
    139 .press-this .howto {
    140     margin-top: 2px;
    141     margin-bottom: 3px;
    142     font-size: 12px;
    143     font-style: italic;
    144     display: block;
    145 }
    146 
    147 .press-this #wp-content-editor-container {
    148     clear: none;
    149 }
    150 
    151 .press-this #poststuff .inside {
    152     margin-top: 18px;
    153 }
    154 
    155 .press-this .category-tabs {
    156     margin-bottom: 3px;
    157 }
    158 
    159 /* Editor/Main Column */
    160 .press-this #poststuff {
    161     margin: 0 8px;
    162     padding: 0;
    163 }
    164 
    165 .press-this #photo-add-url-div input[type="text"] {
    166     width: 220px;
    167 }
    168 
    169 #poststuff #editor-toolbar {
    170     height: 30px;
    171 }
    172 
    173 .posting {
    174     margin-right: 212px;
    175     position: relative;
    176 }
    177 
    178 .press-this .inner-sidebar {
    179     width: 200px;
    180 }
    181 
    182 .press-this .inner-sidebar .sleeve {
    183     padding-top: 5px;
    184 }
    185 
    186 .press-this #submitdiv p {
    187     margin: 0;
    188     padding: 6px;
    189 }
    190 
    191 .press-this #submitdiv #publishing-actions {
    192     border-bottom: 1px solid #dfdfdf;
    193 }
    194 
    195 .press-this #publish {
    196     float: right;
    197 }
    198 
    199 .press-this #poststuff h2,
    200 .press-this #poststuff h3 {
    201     font-size: 14px;
    202     line-height: 1;
    203 }
    204 
    205 .press-this #tagsdiv-post_tag h3,
    206 .press-this #categorydiv h3 {
     747}
     748
     749@media (max-width: 600px) {
     750    .tagchecklist span {
     751        margin-bottom: 15px;
     752        font-size: 16px;
     753        line-height: 1.3;
     754    }
     755}
     756
     757.tagchecklist .ntdelbutton {
     758    margin: 1px 0 0 -17px;
    207759    cursor: pointer;
    208 }
    209 
    210 .press-this #submitdiv h3 {
    211     cursor: default;
    212 }
    213 
    214 h3.tb {
    215     font-weight: 600;
    216     font-size: 12px;
    217     margin-left: 5px;
    218 }
    219 
    220 .press-this .postbox,
    221 .press-this .stuffbox {
    222     margin-bottom: 10px;
    223     min-width: 0;
    224 }
    225 
    226 .press-this #submitdiv:hover .handlediv {
    227     background: none;
    228 }
    229 
    230 .tbtitle {
    231     font-size: 1.7em;
    232     outline: none;
    233     padding: 3px 4px;
    234     border: 1px solid #dfdfdf;
    235 }
    236 
    237 .press-this .actions {
    238     float: right;
    239     margin: -19px 0 0;
    240 }
    241 
    242 .press-this #extra-fields .actions {
    243     margin: -32px -7px 0 0;
    244 }
    245 
    246 .press-this .actions li {
    247     float: left;
    248     list-style: none;
    249     margin-right: 10px;
    250 }
    251 
    252 #extra-fields .button {
    253     margin-right: 5px;
    254 }
    255 
    256 /* Photo Styles */
    257 #photo_saving {
    258     margin: 0 8px 8px;
    259     vertical-align: middle;
    260 }
    261 
    262 #img_container_container {
    263     overflow: auto;
    264 }
    265 
    266 #extra-fields {
    267     margin-top: 10px;
    268     position: relative;
    269 }
    270 
    271 #extra-fields h2 {
    272     margin: 12px;
    273 }
    274 
    275 #waiting {
    276     margin-top: 10px;
    277     overflow: hidden;
    278 }
    279 
    280 #waiting span {
    281     float: right;
    282     margin: 0 0 0 5px;
    283 }
    284 
    285 #waiting .spinner {
    286     display: block;
    287 }
    288 
    289 #extra-fields .postbox {
    290     margin-bottom: 5px;
    291 }
    292 
    293 #extra-fields .titlewrap {
    294     padding: 0;
    295     overflow: auto;
    296     height: 120px;
    297 }
    298 
    299 #img_container a {
     760    width: 20px;
     761    height: 20px;
    300762    display: block;
    301763    float: left;
     764    text-indent: 0;
    302765    overflow: hidden;
    303 }
    304 
    305 #img_container img,
    306 #img_container a {
    307     width: 68px;
    308     height: 68px;
    309 }
    310 
    311 #img_container img {
     766    position: absolute;
     767    outline: 0;
     768}
     769
     770.tagchecklist .ntdelbutton:before {
     771    content: '\f153';
     772    display: block;
     773    margin: 2px 0;
     774    height: 20px;
     775    width: 20px;
     776    background: 0 0;
     777    color: #9ea7af;
     778    font: 400 16px/1 dashicons;
     779    text-align: center;
     780    speak: none;
     781    -webkit-font-smoothing: antialiased;
     782}
     783
     784.tagchecklist .ntdelbutton:focus:before {
     785    color: #2ea2cc;
     786}
     787
     788
     789/* THE TAG CLOUD. */
     790.tagsdiv + p {
     791    margin: 0;
     792}
     793
     794.tagcloud-link {
     795    display: block;
     796    padding: 0 16px;
     797    text-decoration: none;
     798    outline: 0;
     799}
     800
     801.tagcloud-link:focus {
     802    text-decoration: underline;
     803}
     804
     805.popular-tags {
    312806    border: none;
    313     background-color: #f4f4f4;
     807    line-height: 2em;
     808    padding: 8px 12px 12px;
     809    text-align: justify;
     810}
     811
     812.popular-tags a {
     813    padding: 0 3px;
     814}
     815
     816.the-tagcloud {
     817    margin: 0;
     818    padding: 16px;
     819}
     820
     821.the-tagcloud a {
     822    text-decoration: none;
     823    outline: 0;
     824}
     825
     826.the-tagcloud a:focus {
     827    text-decoration: underline;
     828}
     829
     830.tagcloud h3 {
     831    margin: 2px 0 12px;
     832}
     833
     834
     835/**
     836* Categories
     837*
     838* Complete styles for post categories UI
     839*/
     840input[type="search"].categories-search,
     841.add-category-name {
     842    display: block;
     843    width: 100%;
     844    padding: 0.85714em 1.07143em;
     845    border: 0;
     846    -webkit-border-radius: 0;
     847    border-radius: 0;
     848    border-bottom: 1px solid #e5e5e5;
     849    font-size: 14px;
     850    -webkit-appearance: none;
     851    appearance: none;
     852}
     853
     854@media (max-width: 600px) {
     855    input[type="search"].categories-search,
     856    .add-category-name {
     857        /* Needs to be 16px to prevent zooming on iOS. Guh. */
     858        font-size: 16px;
     859    }
     860}
     861
     862.add-cat-toggle {
     863    float: right;
     864    margin-top: -33px;
     865}
     866
     867.add-cat-toggle:focus {
     868    text-decoration: none;
     869    color: #2ea2cc;
     870}
     871
     872.add-cat-toggle.is-toggled {
     873    margin-top: -36px;
     874}
     875
     876.add-cat-toggle.is-toggled .dashicons:before {
     877    content: "\f179";
     878}
     879
     880.add-category {
     881    position: relative;
     882    border-bottom: 1px solid #e5e5e5;
     883}
     884
     885.add-category.is-hidden {
     886    display: none;
     887}
     888
     889.add-category .add-cat-submit {
     890    position: absolute;
     891    top: 0;
     892    right: 0;
     893    border: 0;
     894    -webkit-border-radius: 0;
     895    border-radius: 0;
     896    padding: 12px 16px;
     897    background: #f7f7f7;
     898    border-left: 1px solid #f1f1f1;
     899}
     900
     901.add-category .add-cat-submit:hover,
     902.add-category .add-cat-submit:active,
     903.add-category .add-cat-submit:focus {
     904    outline: 0;
     905    background: #2991b7;
     906    border-color: #20708e;
     907    color: #fff;
     908}
     909
     910/* Parent category select */
     911.postform-wrapper {
     912    padding: 12px;
     913}
     914
     915.postform {
     916    display: block;
     917    margin: 0;
     918    width: 100%;
     919    height: 34px;
     920    border: 0;
     921    -webkit-border-radius: 0;
     922    border-radius: 0;
     923    border: 1px solid #e5e5e5;
     924    background: #fff;
     925    -webkit-background-size: 20px 20px;
     926    background-size: 20px 20px;
     927    overflow: hidden;
     928    line-height: 21px;
     929    text-overflow: ellipsis;
     930    text-decoration: none;
     931    vertical-align: top;
     932    white-space: nowrap;
    314933    cursor: pointer;
    315 }
    316 
    317 #img_container a,
    318 #img_container a:link,
    319 #img_container a:visited {
    320     border: 1px solid #ccc;
     934    outline: 0;
     935}
     936
     937.postform:focus {
     938    border-color: #0074a2;
     939    -webkit-box-shadow: 0 0 0 3px #2ea2cc;
     940    box-shadow: 0 0 0 3px #2ea2cc;
     941    outline: 0;
     942    -moz-outline: none;
     943    -moz-user-focus: ignore;
     944}
     945
     946.postform::-ms-expand {
     947    display: none;
     948}
     949
     950.postform::-ms-value {
     951    background: none;
     952    color: #727272;
     953}
     954
     955.postform:-moz-focusring {
     956    color: transparent;
     957    text-shadow: 0 0 0 #727272;
     958}
     959
     960/* Category list */
     961.categories-select {
     962    margin: 0;
     963    padding: 0;
     964    list-style: none;
     965}
     966
     967.categories-select ul {
     968    margin: 0;
     969    padding: 0;
     970    list-style: none;
     971}
     972
     973.categories-select input {
     974    clear: none;
     975    position: absolute;
     976    top: 0;
     977    left: 0;
    321978    display: block;
     979    line-height: 0;
     980    width: 100%;
     981    height: 100%;
     982    outline: 0;
     983    padding: 0;
     984    border: 0;
     985    -webkit-border-radius: 0;
     986    border-radius: 0;
     987    text-align: center;
     988    vertical-align: middle;
     989    -webkit-appearance: none;
     990    appearance: none;
     991    cursor: pointer;
     992}
     993
     994.categories-select input:checked {
     995    -webkit-box-shadow: inset 6px 0 0 #2ea2cc;
     996    box-shadow: inset 6px 0 0 #2ea2cc;
     997    background: rgba(46, 162, 204, 0.1);
     998}
     999
     1000.categories-select input:checked:after {
     1001    display: inline-block;
     1002    content: "\f147";
     1003    position: absolute;
     1004    top: 13px;
     1005    right: 0;
     1006    width: 20px;
     1007    height: 20px;
     1008    margin-right: 10px;
     1009    font-size: 20px;
     1010    line-height: 1;
     1011    font-family: dashicons;
     1012    text-decoration: inherit;
     1013    color: #222;
     1014    font-weight: 400;
     1015    font-style: normal;
     1016    vertical-align: top;
     1017    text-align: center;
     1018    -webkit-transition: color .1s ease-in 0;
     1019    transition: color .1s ease-in 0;
     1020    -webkit-font-smoothing: antialiased;
     1021    -moz-osx-font-smoothing: grayscale;
     1022}
     1023
     1024.categories-select input:focus {
     1025    -webkit-box-shadow: inset 6px 0 0 #2ea2cc;
     1026    box-shadow: inset 6px 0 0 #2ea2cc;
     1027    background: rgba(46, 162, 204, 0.05);
     1028}
     1029
     1030.categories-select label {
    3221031    position: relative;
    323 }
    324 
    325 #img_container a:hover,
    326 #img_container a:active {
    327     border-color: #000;
    328     z-index: 1000;
    329     border-width: 1px;
    330 }
    331 
    332 /* Video */
    333 #embed-code {
     1032    display: block;
     1033    padding: 13px 16px 14px 16px;
     1034    cursor: pointer;
     1035    background: #fff;
     1036}
     1037
     1038.categories-select ul label {
     1039    padding-left: 24px;
     1040}
     1041
     1042.categories-select ul ul label {
     1043    padding-left: 32px;
     1044}
     1045
     1046.categories-select ul ul ul label {
     1047    padding-left: 40px;
     1048}
     1049
     1050.categories-select ul ul ul ul label {
     1051    padding-left: 48px;
     1052}
     1053
     1054.categories-select ul ul ul ul ul label {
     1055    padding-left: 56px;
     1056}
     1057
     1058.categories-select ul ul ul ul ul ul label {
     1059    padding-left: 64px;
     1060}
     1061
     1062.categories-select .is-hidden {
     1063    display: none;
     1064}
     1065
     1066.categories-select .is-hidden.searched-parent {
     1067    display: block;
     1068}
     1069
     1070.lt-ie9 .categories-select input {
     1071    top: 50%;
     1072    right: 10px;
     1073    left: auto;
     1074    margin-top: -8px;
     1075    width: 16px;
     1076    height: 16px;
     1077}
     1078
     1079/* TODO Reformats checkbox on Firefox until we remove checkbox in merge */
     1080@-moz-document url-prefix() {
     1081    .categories-select input {
     1082        top: 50%;
     1083        right: 10px;
     1084        left: auto;
     1085        margin-top: -8px;
     1086        width: 16px;
     1087        height: 16px;
     1088    }
     1089}
     1090
     1091/* Category search */
     1092.categories-search-wrapper {
     1093    position: relative;
     1094}
     1095
     1096.categories-search-wrapper.is-hidden {
     1097    display: none;
     1098}
     1099
     1100.categories-search-wrapper label {
     1101    position: absolute;
     1102    top: 50%;
     1103    right: 10px;
     1104    margin-top: -10px;
     1105    color: #9ea7af;
     1106}
     1107
     1108
     1109/**
     1110* Main
     1111*/
     1112html,
     1113body {
     1114    overflow-x: hidden;
     1115}
     1116
     1117@media (min-width: 901px) {
     1118    html,
     1119    body {
     1120        height: 100%;
     1121    }
     1122}
     1123
     1124html {
     1125    background: #fff;
     1126    -webkit-box-shadow: -10px 0 0 rgba(0, 0, 0, 0.3);
     1127    box-shadow: -10px 0 0 rgba(0, 0, 0, 0.3);
     1128}
     1129
     1130@media (max-width: 900px) {
     1131    body {
     1132        font-size: 16px;
     1133    }
     1134}
     1135
     1136@media (max-width: 320px) {
     1137    body {
     1138        font-size: 14px;
     1139    }
     1140}
     1141
     1142.lt-ie9 {
     1143    overflow: visible;
     1144}
     1145
     1146.adminbar {
     1147    position: relative;
    3341148    width: 100%;
    335     height: 98px;
    336 }
    337 
    338 /* Categories */
    339 .press-this .categorydiv div.tabs-panel {
    340     height: 100px;
    341 }
    342 
    343 /* Tags */
    344 .press-this .tagsdiv .newtag {
    345     width: 120px;
    346 }
    347 
    348 .press-this #content {
    349     margin: 5px 0;
    350     padding: 0 5px;
    351     border: 0 none;
    352     height: 340px;
    353     font-family: Consolas, Monaco, monospace;
     1149    padding: 0 0.8em;
     1150    min-height: 3.2em;
     1151    background: #222;
     1152    color: #fff;
     1153    z-index: 9999;
     1154}
     1155
     1156.adminbar:before,
     1157.adminbar:after {
     1158    content: "";
     1159    display: table;
     1160}
     1161
     1162.adminbar:after {
     1163    clear: both;
     1164}
     1165
     1166.adminbar .dashicons {
     1167    color: #999;
     1168}
     1169
     1170.adminbar button {
     1171    position: absolute;
     1172    top: 50%;
     1173    right: 6px;
     1174    margin-top: -13px;
     1175}
     1176
     1177@media (max-width: 320px) {
     1178    .adminbar {
     1179        min-height: 45px;
     1180    }
     1181}
     1182
     1183.current-site {
     1184    margin-top: 0.5625em;
     1185    font-size: 16px;
     1186    line-height: 44px;
     1187    font-weight: 400;
     1188    overflow: hidden;
     1189    white-space: nowrap;
     1190    text-overflow: ellipsis;
     1191}
     1192
     1193@media (max-width: 600px) {
     1194    .current-site {
     1195        margin: 3px 0 0;
     1196    }
     1197}
     1198
     1199@media (max-width: 320px) {
     1200    .current-site {
     1201        margin: 0;
     1202        font-size: 14px;
     1203    }
     1204}
     1205
     1206.current-site span:nth-child(2) {
     1207    color: #ededed;
     1208}
     1209
     1210@media (max-width: 320px) {
     1211    .current-site span:nth-child(2) {
     1212        font-weight: 600;
     1213    }
     1214}
     1215
     1216.current-site .dashicons-wordpress {
     1217    position: relative;
     1218    top: -1px;
     1219    margin-right: 10px;
     1220    vertical-align: middle;
     1221}
     1222
     1223.options-open,
     1224.options-close {
     1225    display: none;
     1226}
     1227
     1228@media (max-width: 900px) {
     1229    .options-open,
     1230    .options-close {
     1231        display: block;
     1232    }
     1233}
     1234
     1235.options-open.is-hidden,
     1236.options-close.is-hidden {
     1237    display: none;
     1238}
     1239
     1240.options-open:focus .dashicons {
     1241    color: #fff;
     1242    text-decoration: none;
     1243}
     1244
     1245.options-open .dashicons {
     1246    margin-top: 3px;
     1247}
     1248
     1249.options-close {
     1250    color: #2ea2cc;
     1251}
     1252
     1253.alert {
     1254    position: relative;
     1255    margin: 0;
     1256    padding: 16px 50px;
     1257    border-bottom: 1px solid #e5e5e5;
     1258    font-size: 14px;
     1259}
     1260
     1261.alert:before {
     1262    content: '';
     1263    position: absolute;
     1264    top: 50%;
     1265    left: 30px;
     1266    width: 8px;
     1267    height: 8px;
     1268    margin-top: -4px;
     1269    -webkit-border-radius: 50%;
     1270    border-radius: 50%;
     1271    background: #2ea2cc;
     1272}
     1273
     1274@media (max-width: 600px) {
     1275    .alert {
     1276        padding: 16px 35px;
     1277    }
     1278    .alert:before {
     1279        left: 15px;
     1280    }
     1281}
     1282
     1283.alert.is-hidden {
     1284    display: none;
     1285}
     1286.alert.is-error:before {
     1287    background: red;
     1288}
     1289
     1290.scan {
     1291    position: relative;
     1292    border-bottom: 1px solid #e5e5e5;
     1293}
     1294
     1295@media (max-width: 900px) {
     1296    .scan form {
     1297        -webkit-transition: opacity .3s ease-in-out;
     1298        transition: opacity .3s ease-in-out;
     1299    }
     1300    .scan.is-hidden form {
     1301        opacity: .2;
     1302        pointer-events: none;
     1303    }
     1304}
     1305
     1306.scan-url {
     1307    display: block;
     1308    border: 0;
     1309    padding: 0.85714em 1.07143em;
     1310    font-size: 14px;
     1311    width: 100%;
     1312}
     1313
     1314@media (max-width: 600px) {
     1315    .scan-url {
     1316        font-size: 16px;
     1317    }
     1318}
     1319
     1320.scan-submit {
     1321    position: absolute;
     1322    top: 0;
     1323    right: 0;
     1324    bottom: 0;
     1325    padding: 0.85714em 1.07143em;
     1326    background: #f7f7f7;
     1327    border-color: #dedede;
     1328    border-bottom: 0;
     1329    border-left: 1px solid #f1f1f1;
     1330    -webkit-border-radius: 0;
     1331    border-radius: 0;
     1332    color: #555;
     1333    font-size: 14px;
     1334    line-height: 1.6;
     1335}
     1336
     1337.scan-submit:hover,
     1338.scan-submit:focus {
     1339    background: #2991b7;
     1340    border-color: #20708e;
     1341    color: #fff;
     1342    outline: 0;
     1343}
     1344
     1345.scan-submit:active {
     1346    background: #2581a2;
     1347    border-color: #20708e;
     1348    color: #fff;
     1349}
     1350
     1351.scan-submit:visited {
     1352    color: #555;
     1353}
     1354
     1355.wrapper {
     1356    position: relative;
     1357    margin-bottom: 60px;
     1358    margin-right: 320px;
     1359}
     1360
     1361.wrapper:before,
     1362.wrapper:after {
     1363    content: "";
     1364    display: table;
     1365}
     1366
     1367.wrapper:after {
     1368    clear: both;
     1369}
     1370
     1371@media (max-width: 900px) {
     1372    .wrapper {
     1373        margin: 0;
     1374        width: 100%;
     1375    }
     1376}
     1377
     1378.editor-wrapper {
     1379    overflow: auto;
     1380    float: left;
     1381    width: 100%;
     1382}
     1383
     1384.editor-wrapper:before,
     1385.editor-wrapper:after {
     1386    content: "";
     1387    display: table;
     1388}
     1389
     1390.editor-wrapper:after {
     1391    clear: both;
     1392}
     1393
     1394.editor {
     1395    padding: 0 1.5em 4.75em;
     1396    max-width: 700px;
     1397    margin: 0 auto;
     1398}
     1399
     1400@media (min-width: 901px) {
     1401    .editor {
     1402        max-width: 760px;
     1403    }
     1404}
     1405
     1406@media (max-width: 320px) {
     1407    .editor {
     1408        padding: 0;
     1409    }
     1410}
     1411
     1412.post-title,
     1413.post-title-placeholder {
     1414    margin: 0;
     1415    padding: .83em 0;
     1416    width: 100%;
     1417    border-bottom: 1px solid #e5e5e5;
     1418    font-size: 32px;
     1419    line-height: 1.4;
     1420    font-weight: 700;
     1421}
     1422
     1423.post-title:active,
     1424.post-title:focus,
     1425.post-title-placeholder:active,
     1426.post-title-placeholder:focus {
     1427    outline: 0;
     1428    -webkit-box-shadow: inset 0px -3px 0 #2ea2cc;
     1429    box-shadow: inset 0px -3px 0 #2ea2cc;
     1430    border-color: #2ea2cc;
     1431}
     1432
     1433@media (max-width: 900px) {
     1434    .post-title,
     1435    .post-title-placeholder {
     1436        font-size: 24px;
     1437    }
     1438}
     1439
     1440@media (max-height: 400px) {
     1441    .post-title,
     1442    .post-title-placeholder {
     1443        padding: 15px 0;
     1444        font-size: 16px;
     1445    }
     1446}
     1447
     1448@media (max-width: 320px) {
     1449    .post-title,
     1450    .post-title-placeholder {
     1451        font-size: 16px;
     1452        font-weight: 600;
     1453        padding: 1.14286em 1.42857em;
     1454    }
     1455}
     1456
     1457.post-title {
     1458    /* IE8 fallback */
     1459    background: url(data:image/gif;base64,R0lGODlhAQABAJEAAAAAAP///////wAAACH5BAEHAAIALAAAAAABAAEAAAICVAEAOw==);
     1460    background: none, none;
     1461}
     1462
     1463.post-title:before {
     1464    /* Keeps empty container from collapsing */
     1465    content: '\a0';
     1466    display: inline-block;
     1467    width: 0;
     1468    speak: none;
     1469}
     1470
     1471.post-title-placeholder {
     1472    position: absolute;
     1473    border: 0;
     1474    color: #9ea7af;
     1475    z-index: -1;
     1476}
     1477
     1478.post-title-placeholder.is-hidden {
     1479    display: none;
     1480}
     1481
     1482/* Suggested images */
     1483.featured-container {
     1484    position: relative;
     1485    padding: 2px 0;
     1486    border-bottom: 1px solid #e5e5e5;
     1487}
     1488
     1489.all-media {
     1490    display: none;
     1491    overflow: auto;
     1492    max-height: 150px;
     1493    max-height: 40vw;
     1494}
     1495
     1496.all-media:before, .all-media:after {
     1497    content: "";
     1498    display: table;
     1499}
     1500
     1501.all-media:after {
     1502    clear: both;
     1503}
     1504
     1505@media (min-width: 321px) {
     1506    .all-media {
     1507        max-height: 250px;
     1508        max-height: 40vw;
     1509    }
     1510}
     1511
     1512@media (min-width: 601px) {
     1513    .all-media {
     1514        max-height: 200px;
     1515        max-height: 18.75vw;
     1516    }
     1517}
     1518
     1519.wppt-all-media-list {
     1520    list-style: none;
     1521    margin: 0;
     1522    padding: 0;
     1523}
     1524
     1525.suggested-media-thumbnail:focus,
     1526.suggested-media-embed:focus {
     1527    outline: 0;
     1528    -webkit-box-shadow: inset 0 0 0 3px #2ea2cc;
     1529    box-shadow: inset 0 0 0 3px #2ea2cc;
     1530}
     1531
     1532.suggested-media-thumbnail {
     1533    position: relative;
     1534    display: block;
     1535    float: left;
     1536    width: 16.66%;
     1537    padding: 16.66% 0 0 16.66%;
     1538    background-position: center;
     1539    background-repeat: no-repeat;
     1540    -webkit-background-size: cover;
     1541    background-size: cover;
     1542    background-color: #d8d8d8;
     1543    color: #fff;
     1544    color: rgba(255, 255, 255, 0.6);
     1545    cursor: pointer;
     1546}
     1547
     1548.suggested-media-thumbnail:hover,
     1549.suggested-media-thumbnail:active,
     1550.suggested-media-thumbnail:focus {
     1551    color: #fff;
     1552}
     1553
     1554.suggested-media-thumbnail:before,
     1555.suggested-media-thumbnail:after {
     1556    display: inline-block;
     1557    position: absolute;
     1558    font-size: 20px;
     1559    line-height: 1;
     1560    font-family: dashicons;
     1561    text-decoration: inherit;
     1562    font-weight: 400;
     1563    font-style: normal;
     1564    -webkit-transition: color .1s ease-in 0;
     1565    transition: color .1s ease-in 0;
     1566    -webkit-font-smoothing: antialiased;
     1567    -moz-osx-font-smoothing: grayscale;
     1568}
     1569
     1570.suggested-media-thumbnail:before {
     1571    left: 50%;
     1572    top: 50%;
     1573    margin: -20px 0 0 -20px;
     1574    font-size: 40px;
     1575}
     1576
     1577.suggested-media-thumbnail:after {
     1578    content: "\f132";
     1579    right: 3%;
     1580    bottom: 2%;
     1581}
     1582
     1583@media (min-width: 601px) {
     1584    .suggested-media-thumbnail {
     1585        width: 12.5%;
     1586        padding: 12.5% 0 0 12.5%;
     1587    }
     1588}
     1589
     1590.suggested-media-embed:before {
     1591    content: "\f104";
     1592    color: #fff;
     1593    color: rgba(255, 255, 255, 0.9);
     1594}
     1595
     1596.suggested-media-embed.is-audio:hover:before,
     1597.suggested-media-embed.is-audio:active:before,
     1598.suggested-media-embed.is-audio:focus:before,
     1599.suggested-media-embed.is-tweet:hover:before,
     1600.suggested-media-embed.is-tweet:active:before,
     1601.suggested-media-embed.is-tweet:focus:before {
     1602    color: #fff;
     1603}
     1604
     1605.suggested-media-embed.is-video {
     1606    background-color: #222;
     1607}
     1608
     1609.suggested-media-embed.is-video:hover:before,
     1610.suggested-media-embed.is-video:active:before,
     1611.suggested-media-embed.is-video:focus:before {
     1612    color: rgba(255, 255, 255, 0.2);
     1613}
     1614
     1615.suggested-media-embed.is-video:before {
     1616    content: "\f236";
     1617}
     1618
     1619.suggested-media-embed.is-audio {
     1620    background-color: #ff7d44;
     1621}
     1622
     1623.suggested-media-embed.is-audio:before {
     1624    content: "\f127";
     1625}
     1626
     1627.suggested-media-embed.is-tweet {
     1628    background-color: #55acee;
     1629}
     1630
     1631.suggested-media-embed.is-tweet:before {
     1632    content: "\f301";
     1633}
     1634
     1635.all-media-visible .all-media {
     1636    display: block;
     1637}
     1638
     1639.no-media {
     1640    margin: 0;
     1641    padding: 0;
     1642    border: 0;
     1643}
     1644
     1645/* Actions bar */
     1646.press-this-actions {
     1647    position: fixed;
     1648    bottom: 0;
     1649    left: 0;
     1650    width: 100%;
     1651    background: #f1f1f1;
     1652    background: rgba(241, 241, 241, 0.9);
     1653    border-top: 1px solid #e5e5e5;
     1654}
     1655
     1656@media (max-width: 900px) {
     1657    .press-this-actions {
     1658        -webkit-transform: translateY(0);
     1659        -ms-transform: translateY(0);
     1660        transform: translateY(0);
     1661        -webkit-transition: -webkit-transform .3s ease-in-out;
     1662        transition: transform .3s ease-in-out;
     1663    }
     1664    .press-this-actions.is-hidden {
     1665        -webkit-transform: translateY(100%);
     1666        -ms-transform: translateY(100%);
     1667        transform: translateY(100%);
     1668    }
     1669}
     1670
     1671.add-media {
     1672    float: left;
     1673    margin: 14px 0 14px 30px;
     1674    font-size: 0;
     1675}
     1676
     1677@media (max-width: 320px) {
     1678    .add-media {
     1679        margin: 10px 0 10px 10px;
     1680    }
     1681}
     1682
     1683.insert-media {
     1684    color: #9ea7af;
     1685    float: left;
     1686    margin: 0;
     1687    padding: 0;
     1688    border: 0;
     1689    border-right: 1px solid #e5e5e5;
     1690    -webkit-border-radius: 0;
     1691    border-radius: 0;
     1692    background: none;
     1693    -webkit-box-shadow: none;
     1694    box-shadow: none;
     1695    overflow: hidden;
     1696}
     1697
     1698.insert-media:hover,
     1699.insert-media:focus,
     1700.insert-media:active {
     1701    margin: 0;
     1702    background: none;
     1703    border-color: #e5e5e5;
     1704    color: #222;
     1705}
     1706
     1707.insert-media:focus,
     1708.insert-media:active {
     1709    outline: 0;
     1710    color: #2ea2cc;
     1711    text-decoration: none;
     1712}
     1713
     1714.insert-media .dashicons {
     1715    padding: 11px;
     1716    width: 63px;
     1717    height: 58px;
     1718    font-size: 40px;
     1719}
     1720
     1721@media (max-width: 320px) {
     1722    .insert-media .dashicons {
     1723        width: 55px;
     1724        height: 49px;
     1725        padding: 14px;
     1726        font-size: 20px;
     1727    }
     1728}
     1729
     1730.post-actions {
     1731    float: right;
     1732    margin: 14px 30px 14px 0;
     1733    font-size: 0;
     1734}
     1735
     1736@media (max-width: 320px) {
     1737    .post-actions {
     1738        margin: 10px 10px 10px 0;
     1739    }
     1740}
     1741
     1742/* TinyMCE styles */
     1743.editor .wp-media-buttons {
     1744    float: none;
     1745}
     1746
     1747.editor div.mce-toolbar-grp {
     1748    padding: 0.71429em 0;
     1749    background: none;
     1750    border: 0;
     1751}
     1752
     1753@media (max-height: 400px), (max-width: 320px) {
     1754    .editor div.mce-toolbar-grp {
     1755        padding: 0;
     1756    }
     1757}
     1758
     1759.mce-stack-layout:before,
     1760.mce-stack-layout:after {
     1761    content: "";
     1762    display: table;
     1763}
     1764
     1765.mce-stack-layout:after {
     1766    clear: both;
     1767}
     1768
     1769.mce-container.mce-toolbar {
     1770    float: left;
     1771}
     1772
     1773.mce-container.mce-toolbar:nth-child(2) {
     1774    float: right;
     1775}
     1776
     1777@media (max-width: 600px) {
     1778    #mceu_11,
     1779    #mceu_12 {
     1780        position: absolute;
     1781        margin: -1px;
     1782        padding: 0;
     1783        height: 1px;
     1784        width: 1px;
     1785        overflow: hidden;
     1786        clip: rect(0 0 0 0);
     1787        border: 0;
     1788    }
     1789
     1790    #mceu_11:focus,
     1791    #mceu_12:focus {
     1792        position: static;
     1793        margin: 1px;
     1794        padding: inherit;
     1795        height: auto;
     1796        width: auto;
     1797        overflow: visible;
     1798        clip: auto;
     1799        border: 1px solid #999;
     1800    }
     1801}
     1802
     1803#wp-link-wrap.search-panel-visible {
    3541804    font-size: 13px;
    355     line-height: 19px;
    356     background: transparent;
    357 }
    358 
    359 /* Submit */
    360 .press-this #publishing-actions .spinner {
    361     display: inline;
    362     vertical-align: middle;
    363 }
    364 
    365 /* =Media Queries
    366 -------------------------------------------------------------- */
    367 
    368 /* Reset responsive styles in Press This */
    369 @media screen and ( max-width: 782px ) {
    370     .press-this ul.category-tabs li.tabs {
    371         padding: 3px 5px 5px; /* Reset tabs in Press This to standard size */
    372     }
    373 
    374     .press-this a.wp-switch-editor {
    375         font: 13px/19px "Open Sans", sans-serif;
    376         margin: 5px 0 0 5px;
    377         padding: 3px 8px 4px;
    378     }
    379 
    380     .press-this #wp-content-media-buttons a {
    381         padding: 0;
    382         line-height: normal;
    383         height: auto;
    384     }
    385 
    386     .press-this #wp-content-editor-tools {
    387         padding: 0;
    388         top: 3px;
    389     }
    390 
    391     .press-this .category-tabs {
    392         margin-top: 0;
    393     }
    394 
    395     .press-this .tagsdiv .newtag {
    396         width: 120px;
    397         padding: 3px 5px;
    398         margin-bottom: 0;
    399     }
    400 
    401     .press-this .tagchecklist {
    402         padding: 0;
    403         margin-bottom: 0;
    404     }
    405 
    406     .press-this .wp_themeSkin a.mceButton {
    407         width: 20px;
    408         height: 20px;
    409     }
    410 
    411     .press-this .wp_themeSkin .mceButton .mceIcon {
    412         margin: 0;
    413     }
    414 
    415     .press-this #poststuff h3,
    416     .press-this .metabox-holder h3 {
    417         padding: 7px 12px;
    418     }
    419 
    420     .press-this input[type=checkbox],
    421     .press-this input[type=radio] {
    422         height: 16px;
    423         width: 16px;
    424     }
    425 
    426     .press-this input[type=checkbox]:checked:before {
    427         width: 16px;
    428         font: normal 21px/1 'dashicons';
    429         margin: -3px 0 0 -4px;
    430     }
    431 
    432     .press-this input[type=radio]:checked:before {
    433         font: normal 21px/1 'dashicons';
    434         width: 6px;
    435         height: 6px;
    436         margin: 4px;
    437     }
    438 
    439     .press-this ul.categorychecklist ul,
    440     .press-this ul.categorychecklist li {
    441         margin-top: 0;
    442         margin-bottom: 0;
    443     }
    444 
    445     .press-this div.quicktags-toolbar input {
    446         padding: 2px 4px;
    447     }
    448 
    449     .press-this textarea,
    450     .press-this input {
    451         font-size: 14px;
    452     }
    453 
    454     .press-this .tagchecklist span {
    455         font-size: 13px;
    456         line-height: 1.8em;
    457     }
    458 }
     1805}
     1806
     1807/* Options panel (sidebar) */
     1808.options-panel {
     1809    position: relative;
     1810    float: right;
     1811    margin-right: -320px;
     1812    width: 320px;
     1813    border-left: 1px solid #e5e5e5;
     1814    font-size: 14px;
     1815    /* Keeps background the full height of the screen */
     1816    -webkit-box-shadow: 5001px 5000px 0 5000px #fff, 5000px 5000px 0 5000px #e5e5e5;
     1817    box-shadow: 5001px 5000px 0 5000px #fff, 5000px 5000px 0 5000px #e5e5e5;
     1818}
     1819
     1820@media (max-width: 900px) {
     1821    .options-panel {
     1822        background: #fff;
     1823        -webkit-transform: translateX(-100%);
     1824        -ms-transform: translateX(-100%);
     1825        transform: translateX(-100%);
     1826        -webkit-transition: -webkit-transform .3s ease-in-out;
     1827        transition: transform .3s ease-in-out;
     1828    }
     1829
     1830    .options-panel.is-hidden {
     1831        visibility: hidden;
     1832    }
     1833
     1834    .options-panel.is-off-screen {
     1835        -webkit-transform: translateX(0);
     1836        -ms-transform: translateX(0);
     1837        transform: translateX(0);
     1838    }
     1839}
     1840
     1841@media (max-width: 320px) {
     1842    .options-panel {
     1843        margin-right: -100%;
     1844        width: 100%;
     1845        border: 0;
     1846        -webkit-box-shadow: 5001px 5000px 0 5000px #fff;
     1847        box-shadow: 5001px 5000px 0 5000px #fff;
     1848    }
     1849}
     1850
     1851.post-options {
     1852    background: #fff;
     1853    position: absolute;
     1854    right: 0;
     1855    width: 100%;
     1856    overflow-x: hidden;
     1857}
     1858
     1859.post-options .post-option-contents {
     1860    margin-left: 3px;
     1861    color: #333;
     1862}
     1863
     1864.post-options .dashicons-arrow-right-alt2 {
     1865    position: absolute;
     1866    top: 50%;
     1867    right: 8px;
     1868    margin-top: -10px;
     1869}
     1870
     1871.lt-ie9 .options-panel,
     1872.lt-ie9 .post-options {
     1873    border-left: 1px solid #e5e5e5;
     1874}
     1875
     1876.lt-ie9 .post-options.is-off-screen {
     1877    border: 0;
     1878}
     1879
     1880.post-option {
     1881    position: relative;
     1882}
     1883
     1884.post-options .post-option {
     1885    display: block;
     1886    width: 100%;
     1887    padding: 13px 37px 13px 14px;
     1888    border-bottom: 1px solid #e5e5e5;
     1889    text-decoration: none;
     1890    text-align: left;
     1891    color: #9ea7af;
     1892    text-overflow: ellipsis;
     1893    white-space: nowrap;
     1894    overflow: hidden;
     1895    -webkit-transition: -webkit-transform .3s ease-in-out;
     1896    transition: transform .3s ease-in-out;
     1897}
     1898
     1899.post-options .post-option:focus {
     1900    outline: 0;
     1901    -webkit-box-shadow: inset 5px 0 0 #2ea2cc;
     1902    box-shadow: inset 5px 0 0 #2ea2cc;
     1903}
     1904
     1905.is-off-screen > .post-option {
     1906    right: 100%;
     1907}
     1908
     1909.is-hidden > .post-option {
     1910    visibility: hidden;
     1911}
     1912
     1913@media (min-width: 1px) {
     1914    .is-off-screen > .post-option {
     1915        right: auto;
     1916        -webkit-transform: translateX(-100%);
     1917        -ms-transform: translateX(-100%);
     1918        transform: translateX(-100%);
     1919    }
     1920}
     1921
     1922.post-option-title {
     1923    display: inline-block;
     1924    margin: 0 0 0 8px;
     1925    font-size: 14px;
     1926    font-weight: normal;
     1927}
     1928
     1929.setting-modal {
     1930    position: relative;
     1931    top: 0;
     1932    left: 0;
     1933    width: 100%;
     1934    overflow: hidden;
     1935    -webkit-transition: -webkit-transform .3s ease-in-out;
     1936    transition: transform .3s ease-in-out;
     1937}
     1938
     1939.setting-modal.is-hidden {
     1940    visibility: hidden;
     1941    height: 0;
     1942}
     1943
     1944.setting-modal.is-off-screen {
     1945    left: 100%;
     1946}
     1947
     1948@media (min-width: 1px) {
     1949    .setting-modal.is-off-screen {
     1950        left: 0;
     1951        -webkit-transform: translateX(100%);
     1952        -ms-transform: translateX(100%);
     1953        transform: translateX(100%);
     1954    }
     1955}
     1956
     1957.modal-close {
     1958    display: block;
     1959    width: 100%;
     1960    padding: 13px 14px;
     1961    border-bottom: 1px solid #e5e5e5;
     1962    color: #2ea2cc;
     1963    text-decoration: none;
     1964    text-align: left;
     1965}
     1966
     1967.modal-close:focus {
     1968    outline: 0;
     1969    -webkit-box-shadow: inset 5px 0 0 #2ea2cc;
     1970    box-shadow: inset 5px 0 0 #2ea2cc;
     1971}
     1972
     1973.setting-title {
     1974    position: relative;
     1975    top: -1px;
     1976    margin-left: 11px;
     1977}
  • trunk/src/wp-admin/css/wp-admin.css

    r27199 r31534  
    88@import url(media.css);
    99@import url(themes.css);
    10 @import url(press-this.css);
    1110@import url(about.css);
    1211@import url(nav-menus.css);
  • trunk/src/wp-admin/includes/ajax-actions.php

    r31511 r31534  
    29552955    wp_send_json_success( $status );
    29562956}
     2957
     2958/**
     2959 * AJAX handler for saving a post from Ptrss This.
     2960 *
     2961 * @since 4.2.0
     2962 */
     2963function wp_ajax_press_this_save_post() {
     2964    if ( empty( $GLOBALS['wp_press_this'] ) ) {
     2965        include( ABSPATH . 'wp-admin/includes/class-wp-press-this.php' );
     2966    }
     2967
     2968    $GLOBALS['wp_press_this']->save_post();
     2969}
     2970
     2971/**
     2972 * AJAX handler for creating new category from Ptrss This.
     2973 *
     2974 * @since 4.2.0
     2975 */
     2976function wp_ajax_press_this_add_category() {
     2977    if ( empty( $GLOBALS['wp_press_this'] ) ) {
     2978        include( ABSPATH . 'wp-admin/includes/class-wp-press-this.php' );
     2979    }
     2980
     2981    $GLOBALS['wp_press_this']->add_category();
     2982}
  • trunk/src/wp-admin/js/post.js

    r30698 r31534  
    88window.wp = window.wp || {};
    99
    10 // return an array with any duplicate, whitespace or values removed
    11 function array_unique_noempty(a) {
    12     var out = [];
    13     jQuery.each( a, function(key, val) {
    14         val = jQuery.trim(val);
    15         if ( val && jQuery.inArray(val, out) == -1 )
    16             out.push(val);
    17         } );
    18     return out;
    19 }
    20 
    21 ( function($) {
     10( function( $ ) {
    2211    var titleHasFocus = false;
    23 
    24 tagBox = {
    25     clean : function(tags) {
    26         var comma = postL10n.comma;
    27         if ( ',' !== comma )
    28             tags = tags.replace(new RegExp(comma, 'g'), ',');
    29         tags = tags.replace(/\s*,\s*/g, ',').replace(/,+/g, ',').replace(/[,\s]+$/, '').replace(/^[,\s]+/, '');
    30         if ( ',' !== comma )
    31             tags = tags.replace(/,/g, comma);
    32         return tags;
    33     },
    34 
    35     parseTags : function(el) {
    36         var id = el.id, num = id.split('-check-num-')[1], taxbox = $(el).closest('.tagsdiv'),
    37             thetags = taxbox.find('.the-tags'), comma = postL10n.comma,
    38             current_tags = thetags.val().split(comma), new_tags = [];
    39         delete current_tags[num];
    40 
    41         $.each( current_tags, function(key, val) {
    42             val = $.trim(val);
    43             if ( val ) {
    44                 new_tags.push(val);
    45             }
    46         });
    47 
    48         thetags.val( this.clean( new_tags.join(comma) ) );
    49 
    50         this.quickClicks(taxbox);
    51         return false;
    52     },
    53 
    54     quickClicks : function(el) {
    55         var thetags = $('.the-tags', el),
    56             tagchecklist = $('.tagchecklist', el),
    57             id = $(el).attr('id'),
    58             current_tags, disabled;
    59 
    60         if ( !thetags.length )
    61             return;
    62 
    63         disabled = thetags.prop('disabled');
    64 
    65         current_tags = thetags.val().split(postL10n.comma);
    66         tagchecklist.empty();
    67 
    68         $.each( current_tags, function( key, val ) {
    69             var span, xbutton;
    70 
    71             val = $.trim( val );
    72 
    73             if ( ! val )
    74                 return;
    75 
    76             // Create a new span, and ensure the text is properly escaped.
    77             span = $('<span />').text( val );
    78 
    79             // If tags editing isn't disabled, create the X button.
    80             if ( ! disabled ) {
    81                 xbutton = $( '<a id="' + id + '-check-num-' + key + '" class="ntdelbutton">X</a>' );
    82                 xbutton.click( function(){ tagBox.parseTags(this); });
    83                 span.prepend('&nbsp;').prepend( xbutton );
    84             }
    85 
    86             // Append the span to the tag list.
    87             tagchecklist.append( span );
    88         });
    89     },
    90 
    91     flushTags : function(el, a, f) {
    92         var tagsval, newtags, text,
    93             tags = $('.the-tags', el),
    94             newtag = $('input.newtag', el),
    95             comma = postL10n.comma;
    96         a = a || false;
    97 
    98         text = a ? $(a).text() : newtag.val();
    99         tagsval = tags.val();
    100         newtags = tagsval ? tagsval + comma + text : text;
    101 
    102         newtags = this.clean( newtags );
    103         newtags = array_unique_noempty( newtags.split(comma) ).join(comma);
    104         tags.val(newtags);
    105         this.quickClicks(el);
    106 
    107         if ( !a )
    108             newtag.val('');
    109         if ( 'undefined' == typeof(f) )
    110             newtag.focus();
    111 
    112         return false;
    113     },
    114 
    115     get : function(id) {
    116         var tax = id.substr(id.indexOf('-')+1);
    117 
    118         $.post(ajaxurl, {'action':'get-tagcloud', 'tax':tax}, function(r, stat) {
    119             if ( 0 === r || 'success' != stat )
    120                 r = wpAjax.broken;
    121 
    122             r = $('<p id="tagcloud-'+tax+'" class="the-tagcloud">'+r+'</p>');
    123             $('a', r).click(function(){
    124                 tagBox.flushTags( $(this).closest('.inside').children('.tagsdiv'), this);
    125                 return false;
    126             });
    127 
    128             $('#'+id).after(r);
    129         });
    130     },
    131 
    132     init : function() {
    133         var t = this, ajaxtag = $('div.ajaxtag');
    134 
    135         $('.tagsdiv').each( function() {
    136             tagBox.quickClicks(this);
    137         });
    138 
    139         $('input.tagadd', ajaxtag).click(function(){
    140             t.flushTags( $(this).closest('.tagsdiv') );
    141         });
    142 
    143         $('div.taghint', ajaxtag).click(function(){
    144             $(this).css('visibility', 'hidden').parent().siblings('.newtag').focus();
    145         });
    146 
    147         $('input.newtag', ajaxtag).blur(function() {
    148             if ( '' === this.value )
    149                 $(this).parent().siblings('.taghint').css('visibility', '');
    150         }).focus(function(){
    151             $(this).parent().siblings('.taghint').css('visibility', 'hidden');
    152         }).keyup(function(e){
    153             if ( 13 == e.which ) {
    154                 tagBox.flushTags( $(this).closest('.tagsdiv') );
    155                 return false;
    156             }
    157         }).keypress(function(e){
    158             if ( 13 == e.which ) {
    159                 e.preventDefault();
    160                 return false;
    161             }
    162         }).each(function(){
    163             var tax = $(this).closest('div.tagsdiv').attr('id');
    164             $(this).suggest( ajaxurl + '?action=ajax-tag-search&tax=' + tax, { delay: 500, minchars: 2, multiple: true, multipleSep: postL10n.comma + ' ' } );
    165         });
    166 
    167         // save tags on post save/publish
    168         $('#post').submit(function(){
    169             $('div.tagsdiv').each( function() {
    170                 tagBox.flushTags(this, false, 1);
    171             });
    172         });
    173 
    174         // tag cloud
    175         $('a.tagcloud-link').click(function(){
    176             tagBox.get( $(this).attr('id') );
    177             $(this).unbind().click(function(){
    178                 $(this).siblings('.the-tagcloud').toggle();
    179                 return false;
    180             });
    181             return false;
    182         });
    183     }
    184 };
    18512
    18613commentsBox = {
     
    573400    // multi-taxonomies
    574401    if ( $('#tagsdiv-post_tag').length ) {
    575         tagBox.init();
     402        window.tagBox && window.tagBox.init();
    576403    } else {
    577404        $('#side-sortables, #normal-sortables, #advanced-sortables').children('div.postbox').each(function(){
    578405            if ( this.id.indexOf('tagsdiv-') === 0 ) {
    579                 tagBox.init();
     406                window.tagBox && window.tagBox.init();
    580407                return false;
    581408            }
  • trunk/src/wp-admin/options-writing.php

    r28083 r31534  
    114114</table>
    115115
    116 <h3 class="title"><?php _e('Press This') ?></h3>
    117 <p><?php _e('Press This is a bookmarklet: a little app that runs in your browser and lets you grab bits of the web.');?></p>
    118 <p><?php _e('Use Press This to clip text, images and videos from any web page. Then edit and add more straight from Press This before you save or publish it in a post on your site.'); ?></p>
    119 <p><?php _e('Drag-and-drop the following link to your bookmarks bar or right click it and add it to your favorites for a posting shortcut.') ?></p>
    120 <p class="pressthis"><a onclick="return false;" oncontextmenu="if(window.navigator.userAgent.indexOf('WebKit')!=-1||window.navigator.userAgent.indexOf('MSIE')!=-1){jQuery('.pressthis-code').show().find('textarea').focus().select();return false;}" href="<?php echo htmlspecialchars( get_shortcut_link() ); ?>"><span><?php _e('Press This') ?></span></a></p>
    121 <div class="pressthis-code" style="display:none;">
    122     <p class="description"><?php _e('If your bookmarks toolbar is hidden: copy the code below, open your Bookmarks manager, create new bookmark, type Press This into the name field and paste the code into the URL field.') ?></p>
    123     <p><textarea rows="5" cols="120" readonly="readonly"><?php echo htmlspecialchars( get_shortcut_link() ); ?></textarea></p>
    124 </div>
    125 
    126116<?php
    127117/** This filter is documented in wp-admin/options.php */
  • trunk/src/wp-admin/press-this.php

    r31034 r31534  
    1212require_once( dirname( __FILE__ ) . '/admin.php' );
    1313
    14 header('Content-Type: ' . get_option('html_type') . '; charset=' . get_option('blog_charset'));
    15 
    1614if ( ! current_user_can( 'edit_posts' ) || ! current_user_can( get_post_type_object( 'post' )->cap->create_posts ) )
    1715    wp_die( __( 'Cheatin&#8217; uh?' ), 403 );
    1816
    19 /**
    20  * Press It form handler.
    21  *
    22  * @since 2.6.0
    23  *
    24  * @return int Post ID
    25  */
    26 function press_it() {
    27 
    28     $post = get_default_post_to_edit();
    29     $post = get_object_vars($post);
    30     $post_ID = $post['ID'] = (int) $_POST['post_id'];
    31 
    32     if ( !current_user_can('edit_post', $post_ID) )
    33         wp_die(__('You are not allowed to edit this post.'));
    34 
    35     $post['post_category'] = isset($_POST['post_category']) ? $_POST['post_category'] : '';
    36     $post['tax_input'] = isset($_POST['tax_input']) ? $_POST['tax_input'] : '';
    37     $post['post_title'] = isset($_POST['title']) ? $_POST['title'] : '';
    38     $content = isset($_POST['content']) ? $_POST['content'] : '';
    39 
    40     $upload = false;
    41     if ( !empty($_POST['photo_src']) && current_user_can('upload_files') ) {
    42         foreach( (array) $_POST['photo_src'] as $key => $image) {
    43             // See if files exist in content - we don't want to upload non-used selected files.
    44             if ( strpos($_POST['content'], htmlspecialchars($image)) !== false ) {
    45                 $desc = isset($_POST['photo_description'][$key]) ? $_POST['photo_description'][$key] : '';
    46                 $upload = media_sideload_image($image, $post_ID, $desc);
    47 
    48                 // Replace the POSTED content <img> with correct uploaded ones. Regex contains fix for Magic Quotes
    49                 if ( !is_wp_error($upload) )
    50                     $content = preg_replace('/<img ([^>]*)src=\\\?(\"|\')'.preg_quote(htmlspecialchars($image), '/').'\\\?(\2)([^>\/]*)\/*>/is', $upload, $content);
    51             }
    52         }
    53     }
    54     // Set the post_content and status.
    55     $post['post_content'] = $content;
    56     if ( isset( $_POST['publish'] ) && current_user_can( 'publish_posts' ) )
    57         $post['post_status'] = 'publish';
    58     elseif ( isset( $_POST['review'] ) )
    59         $post['post_status'] = 'pending';
    60     else
    61         $post['post_status'] = 'draft';
    62 
    63     // Error handling for media_sideload.
    64     if ( is_wp_error($upload) ) {
    65         wp_delete_post($post_ID);
    66         wp_die( esc_html( $upload->get_error_message() ) );
    67     } else {
    68         // Post formats.
    69         if ( isset( $_POST['post_format'] ) ) {
    70             if ( current_theme_supports( 'post-formats', $_POST['post_format'] ) )
    71                 set_post_format( $post_ID, $_POST['post_format'] );
    72             elseif ( '0' == $_POST['post_format'] )
    73                 set_post_format( $post_ID, false );
    74         }
    75 
    76         $post_ID = wp_update_post($post);
    77     }
    78 
    79     return $post_ID;
     17if ( empty( $GLOBALS['wp_press_this'] ) ) {
     18    include( ABSPATH . 'wp-admin/includes/class-wp-press-this.php' );
    8019}
    8120
    82 // For submitted posts.
    83 if ( isset($_REQUEST['action']) && 'post' == $_REQUEST['action'] ) {
    84     check_admin_referer('press-this');
    85     $posted = $post_ID = press_it();
    86 } else {
    87     $post = get_default_post_to_edit('post', true);
    88     $post_ID = $post->ID;
    89 }
    90 
    91 // Set Variables
    92 $title = isset( $_GET['t'] ) ? trim( strip_tags( html_entity_decode( wp_unslash( $_GET['t'] ) , ENT_QUOTES) ) ) : '';
    93 
    94 $selection = '';
    95 if ( !empty($_GET['s']) ) {
    96     $selection = str_replace('&apos;', "'", wp_unslash($_GET['s']));
    97     $selection = trim( htmlspecialchars( html_entity_decode($selection, ENT_QUOTES) ) );
    98 }
    99 
    100 if ( ! empty($selection) ) {
    101     $selection = preg_replace('/(\r?\n|\r)/', '</p><p>', $selection);
    102     $selection = '<p>' . str_replace('<p></p>', '', $selection) . '</p>';
    103 }
    104 
    105 $url = isset($_GET['u']) ? esc_url($_GET['u']) : '';
    106 $image = isset($_GET['i']) ? $_GET['i'] : '';
    107 
    108 if ( !empty($_REQUEST['ajax']) ) {
    109     switch ($_REQUEST['ajax']) {
    110         case 'video': ?>
    111             <script type="text/javascript">
    112                 jQuery('.select').click(function() {
    113                     append_editor(jQuery('#embed-code').val());
    114                     jQuery('#extra-fields').hide();
    115                     jQuery('#extra-fields').html('');
    116                 });
    117                 jQuery('.close').click(function() {
    118                     jQuery('#extra-fields').hide();
    119                     jQuery('#extra-fields').html('');
    120                 });
    121             </script>
    122             <div class="postbox">
    123                 <h2><label for="embed-code"><?php _e('Embed Code') ?></label></h2>
    124                 <div class="inside">
    125                     <textarea name="embed-code" id="embed-code" rows="8" cols="40"><?php echo esc_textarea( $selection ); ?></textarea>
    126                     <p id="options"><a href="#" class="select button"><?php _e('Insert Video'); ?></a> <a href="#" class="close button"><?php _e('Cancel'); ?></a></p>
    127                 </div>
    128             </div>
    129             <?php break;
    130 
    131         case 'photo_thickbox': ?>
    132             <script type="text/javascript">
    133                 jQuery('.cancel').click(function() {
    134                     tb_remove();
    135                 });
    136                 jQuery('.select').click(function() {
    137                     image_selector(this);
    138                 });
    139             </script>
    140             <h3 class="tb"><label for="tb_this_photo_description"><?php _e('Description') ?></label></h3>
    141             <div class="titlediv">
    142                 <div class="titlewrap">
    143                     <input id="tb_this_photo_description" name="photo_description" class="tb_this_photo_description tbtitle text" type="text" onkeypress="if(event.keyCode==13) image_selector(this);" value="<?php echo esc_attr($title);?>"/>
    144                 </div>
    145             </div>
    146 
    147             <p class="centered">
    148                 <input type="hidden" name="this_photo" value="<?php echo esc_attr( $image ); ?>" id="tb_this_photo" class="tb_this_photo" />
    149                 <a href="#" class="select">
    150                     <img src="<?php echo esc_url( $image ); ?>" alt="<?php esc_attr_e( 'Click to insert.' ); ?>" title="<?php esc_attr_e( 'Click to insert.' ); ?>" />
    151                 </a>
    152             </p>
    153 
    154             <p id="options"><a href="#" class="select button"><?php _e('Insert Image'); ?></a> <a href="#" class="cancel button"><?php _e('Cancel'); ?></a></p>
    155             <?php break;
    156     case 'photo_images':
    157         /**
    158          * Retrieve all image URLs from given URI.
    159          *
    160          * @since 2.6.0
    161          *
    162          * @param string $uri
    163          * @return string
    164          */
    165         function get_images_from_uri($uri) {
    166             $uri = preg_replace('/\/#.+?$/','', $uri);
    167             if ( preg_match( '/\.(jpe?g|jpe|gif|png)\b/i', $uri ) && !strpos( $uri, 'blogger.com' ) )
    168                 return "'" . esc_attr( html_entity_decode($uri) ) . "'";
    169             $content = wp_remote_fopen($uri);
    170             if ( false === $content )
    171                 return '';
    172             $host = parse_url($uri);
    173             $pattern = '/<img ([^>]*)src=(\"|\')([^<>\'\"]+)(\2)([^>]*)\/*>/i';
    174             $content = str_replace(array("\n","\t","\r"), '', $content);
    175             preg_match_all($pattern, $content, $matches);
    176             if ( empty($matches[0]) )
    177                 return '';
    178             $sources = array();
    179             foreach ($matches[3] as $src) {
    180 
    181                 // If no http in URL.
    182                 if (strpos($src, 'http') === false)
    183                     // If it doesn't have a relative URI.
    184                     if ( strpos($src, '../') === false && strpos($src, './') === false && strpos($src, '/') === 0)
    185                         $src = 'http://'.str_replace('//','/', $host['host'].'/'.$src);
    186                     else
    187                         $src = 'http://'.str_replace('//','/', $host['host'].'/'.dirname($host['path']).'/'.$src);
    188                 $sources[] = esc_url($src);
    189             }
    190             return "'" . implode("','", $sources) . "'";
    191         }
    192         $url = wp_kses(urldecode($url), null);
    193         echo 'new Array('.get_images_from_uri($url).')';
    194         break;
    195 
    196     case 'photo_js': ?>
    197         // Gather images and load some default JS.
    198         var last = null
    199         var img, img_tag, aspect, w, h, skip, i, strtoappend = "";
    200         if(photostorage == false) {
    201         var my_src = eval(
    202             jQuery.ajax({
    203                 type: "GET",
    204                 url: "<?php echo esc_url($_SERVER['PHP_SELF']); ?>",
    205                 cache : false,
    206                 async : false,
    207                 data: "ajax=photo_images&u=<?php echo urlencode($url); ?>",
    208                 dataType : "script"
    209             }).responseText
    210         );
    211         if(my_src.length == 0) {
    212             var my_src = eval(
    213                 jQuery.ajax({
    214                     type: "GET",
    215                     url: "<?php echo esc_url($_SERVER['PHP_SELF']); ?>",
    216                     cache : false,
    217                     async : false,
    218                     data: "ajax=photo_images&u=<?php echo urlencode($url); ?>",
    219                     dataType : "script"
    220                 }).responseText
    221             );
    222             if(my_src.length == 0) {
    223                 strtoappend = '<?php _e('Unable to retrieve images or no images on page.'); ?>';
    224             }
    225         }
    226         }
    227         for (i = 0; i < my_src.length; i++) {
    228             img = new Image();
    229             img.src = my_src[i];
    230             img_attr = 'id="img' + i + '"';
    231             skip = false;
    232 
    233             maybeappend = '<a href="?ajax=photo_thickbox&amp;i=' + encodeURIComponent(img.src) + '&amp;u=<?php echo urlencode($url); ?>&amp;height=400&amp;width=500" title="" class="thickbox"><img src="' + img.src + '" ' + img_attr + '/></a>';
    234 
    235             if (img.width && img.height) {
    236                 if (img.width >= 30 && img.height >= 30) {
    237                     aspect = img.width / img.height;
    238                     scale = (aspect > 1) ? (71 / img.width) : (71 / img.height);
    239 
    240                     w = img.width;
    241                     h = img.height;
    242 
    243                     if (scale < 1) {
    244                         w = parseInt(img.width * scale);
    245                         h = parseInt(img.height * scale);
    246                     }
    247                     img_attr += ' style="width: ' + w + 'px; height: ' + h + 'px;"';
    248                     strtoappend += maybeappend;
    249                 }
    250             } else {
    251                 strtoappend += maybeappend;
    252             }
    253         }
    254 
    255         function pick(img, desc) {
    256             if (img) {
    257                 if('object' == typeof jQuery('.photolist input') && jQuery('.photolist input').length != 0) length = jQuery('.photolist input').length;
    258                 if(length == 0) length = 1;
    259                 jQuery('.photolist').append('<input name="photo_src[' + length + ']" value="' + img +'" type="hidden"/>');
    260                 jQuery('.photolist').append('<input name="photo_description[' + length + ']" value="' + desc +'" type="hidden"/>');
    261                 insert_editor( "\n\n" + encodeURI('<p style="text-align: center;"><a href="<?php echo $url; ?>"><img src="' + img +'" alt="' + desc + '" /></a></p>'));
    262             }
    263             return false;
    264         }
    265 
    266         function image_selector(el) {
    267             var desc, src, parent = jQuery(el).closest('#photo-add-url-div');
    268 
    269             if ( parent.length ) {
    270                 desc = parent.find('input.tb_this_photo_description').val() || '';
    271                 src = parent.find('input.tb_this_photo').val() || ''
    272             } else {
    273                 desc = jQuery('#tb_this_photo_description').val() || '';
    274                 src = jQuery('#tb_this_photo').val() || ''
    275             }
    276 
    277             tb_remove();
    278             pick(src, desc);
    279             jQuery('#extra-fields').hide();
    280             jQuery('#extra-fields').html('');
    281             return false;
    282         }
    283 
    284         jQuery('#extra-fields').html('<div class="postbox"><h2><?php _e( 'Add Photos' ); ?> <small id="photo_directions">(<?php _e("click images to select") ?>)</small></h2><ul class="actions"><li><a href="#" id="photo-add-url" class="button button-small"><?php _e("Add from URL") ?> +</a></li></ul><div class="inside"><div class="titlewrap"><div id="img_container"></div></div><p id="options"><a href="#" class="close button"><?php _e('Cancel'); ?></a><a href="#" class="refresh button"><?php _e('Refresh'); ?></a></p></div>');
    285         jQuery('#img_container').html(strtoappend);
    286         <?php break;
    287 }
    288 die;
    289 }
    290 
    291     wp_enqueue_style( 'colors' );
    292     wp_enqueue_script( 'post' );
    293     add_thickbox();
    294     _wp_admin_html_begin();
    295 ?>
    296 <title><?php _e('Press This') ?></title>
    297 <script type="text/javascript">
    298 addLoadEvent = function(func){if(typeof jQuery!="undefined")jQuery(document).ready(func);else if(typeof wpOnload!='function'){wpOnload=func;}else{var oldonload=wpOnload;wpOnload=function(){oldonload();func();}}};
    299 var ajaxurl = '<?php echo admin_url( 'admin-ajax.php', 'relative' ); ?>', pagenow = 'press-this', isRtl = <?php echo (int) is_rtl(); ?>;
    300 var photostorage = false;
    301 </script>
    302 
    303 <?php
    304     /** This action is documented in wp-admin/admin-header.php */
    305     do_action( 'admin_enqueue_scripts', 'press-this.php' );
    306 
    307     /**
    308      * Fires when styles are printed for the Press This admin page.
    309      *
    310      * @since 3.7.0
    311      */
    312     do_action( 'admin_print_styles-press-this.php' );
    313 
    314     /** This action is documented in wp-admin/admin-header.php */
    315     do_action( 'admin_print_styles' );
    316 
    317     /**
    318      * Fires when scripts are printed for the Press This admin page.
    319      *
    320      * @since 3.7.0
    321      */
    322     do_action( 'admin_print_scripts-press-this.php' );
    323 
    324     /** This action is documented in wp-admin/admin-header.php */
    325     do_action( 'admin_print_scripts' );
    326 
    327     /**
    328      * Fires in the head tag on the Press This admin page.
    329      *
    330      * @since 3.7.0
    331      */
    332     do_action( 'admin_head-press-this.php' );
    333 
    334     /** This action is documented in wp-admin/admin-header.php */
    335     do_action( 'admin_head' );
    336 ?>
    337     <script type="text/javascript">
    338     var wpActiveEditor = 'content';
    339 
    340     function insert_plain_editor(text) {
    341         if ( typeof(QTags) != 'undefined' )
    342             QTags.insertContent(text);
    343     }
    344     function set_editor(text) {
    345         if ( '' == text || '<p></p>' == text )
    346             text = '<p><br /></p>';
    347 
    348         if ( tinyMCE.activeEditor )
    349             tinyMCE.execCommand('mceSetContent', false, text);
    350     }
    351     function insert_editor(text) {
    352         if ( '' != text && tinyMCE.activeEditor && ! tinyMCE.activeEditor.isHidden()) {
    353             tinyMCE.execCommand('mceInsertContent', false, '<p>' + decodeURI(tinymce.DOM.decode(text)) + '</p>', {format : 'raw'});
    354         } else {
    355             insert_plain_editor(decodeURI(text));
    356         }
    357     }
    358     function append_editor(text) {
    359         if ( '' != text && tinyMCE.activeEditor && ! tinyMCE.activeEditor.isHidden()) {
    360             tinyMCE.execCommand('mceSetContent', false, tinyMCE.activeEditor.getContent({format : 'raw'}) + '<p>' + text + '</p>');
    361         } else {
    362             insert_plain_editor(text);
    363         }
    364     }
    365 
    366     function show(tab_name) {
    367         jQuery('#extra-fields').html('');
    368         switch(tab_name) {
    369             case 'video' :
    370                 jQuery('#extra-fields').load('<?php echo esc_url($_SERVER['PHP_SELF']); ?>', { ajax: 'video', s: '<?php echo esc_attr($selection); ?>'}, function() {
    371                     <?php
    372                     $content = '';
    373                     if ( preg_match("/youtube\.com\/watch/i", $url) ) {
    374                         list($domain, $video_id) = explode("v=", $url);
    375                         $video_id = esc_attr($video_id);
    376                         $content = '<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/' . $video_id . '"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/' . $video_id . '" type="application/x-shockwave-flash" wmode="transparent" width="425" height="350"></embed></object>';
    377 
    378                     } elseif ( preg_match("/vimeo\.com\/[0-9]+/i", $url) ) {
    379                         list($domain, $video_id) = explode(".com/", $url);
    380                         $video_id = esc_attr($video_id);
    381                         $content = '<object width="400" height="225"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=' . $video_id . '&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" />  <embed src="http://www.vimeo.com/moogaloop.swf?clip_id=' . $video_id . '&amp;server=www.vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="225"></embed></object>';
    382 
    383                         if ( trim($selection) == '' )
    384                             $selection = '<p><a href="http://www.vimeo.com/' . $video_id . '?pg=embed&sec=' . $video_id . '">' . $title . '</a> on <a href="http://vimeo.com?pg=embed&sec=' . $video_id . '">Vimeo</a></p>';
    385 
    386                     } elseif ( strpos( $selection, '<object' ) !== false ) {
    387                         $content = $selection;
    388                     }
    389                     ?>
    390                     jQuery('#embed-code').prepend('<?php echo htmlentities($content); ?>');
    391                 });
    392                 jQuery('#extra-fields').show();
    393                 return false;
    394                 break;
    395             case 'photo' :
    396                 function setup_photo_actions() {
    397                     jQuery('.close').click(function() {
    398                         jQuery('#extra-fields').hide();
    399                         jQuery('#extra-fields').html('');
    400                     });
    401                     jQuery('.refresh').click(function() {
    402                         photostorage = false;
    403                         show('photo');
    404                     });
    405                     jQuery('#photo-add-url').click(function(){
    406                         var form = jQuery('#photo-add-url-div').clone();
    407                         jQuery('#img_container').empty().append( form.show() );
    408                     });
    409                     jQuery('#waiting').hide();
    410                     jQuery('#extra-fields').show();
    411                 }
    412 
    413                 jQuery('#waiting').show();
    414                 if(photostorage == false) {
    415                     jQuery.ajax({
    416                         type: "GET",
    417                         cache : false,
    418                         url: "<?php echo esc_url($_SERVER['PHP_SELF']); ?>",
    419                         data: "ajax=photo_js&u=<?php echo urlencode($url)?>",
    420                         dataType : "script",
    421                         success : function(data) {
    422                             eval(data);
    423                             photostorage = jQuery('#extra-fields').html();
    424                             setup_photo_actions();
    425                         }
    426                     });
    427                 } else {
    428                     jQuery('#extra-fields').html(photostorage);
    429                     setup_photo_actions();
    430                 }
    431                 return false;
    432                 break;
    433         }
    434     }
    435     jQuery(document).ready(function($) {
    436         var $contnet = $( '#content' );
    437 
    438         // Resize screen.
    439         window.resizeTo(760,580);
    440 
    441         // Set button actions.
    442         jQuery('#photo_button').click(function() { show('photo'); return false; });
    443         jQuery('#video_button').click(function() { show('video'); return false; });
    444 
    445         // Auto select.
    446         <?php if ( preg_match("/youtube\.com\/watch/i", $url) ) { ?>
    447             show('video');
    448         <?php } elseif ( preg_match("/vimeo\.com\/[0-9]+/i", $url) ) { ?>
    449             show('video');
    450         <?php } elseif ( preg_match("/flickr\.com/i", $url) ) { ?>
    451             show('photo');
    452         <?php } ?>
    453         jQuery('#title').unbind();
    454         jQuery('#publish, #save').click(function() { jQuery('.press-this #publishing-actions .spinner').css('display', 'inline-block'); });
    455 
    456         $('#tagsdiv-post_tag, #categorydiv').children('h3, .handlediv').click(function(){
    457             $(this).siblings('.inside').toggle();
    458         });
    459 
    460         if ( $( '#wp-content-wrap' ).hasClass( 'html-active' ) && window.switchEditors &&
    461             ( tinyMCEPreInit.mceInit.content && tinyMCEPreInit.mceInit.content.wpautop ) ) {
    462             // The Text editor is default, run the initial content through pre_wpautop() to convert the paragraphs
    463             $contnet.text( window.switchEditors.pre_wpautop( $contnet.text() ) );
    464         }
    465     });
    466 </script>
    467 </head>
    468 <?php
    469 $admin_body_class = ( is_rtl() ) ? 'rtl' : '';
    470 $admin_body_class .= ' locale-' . sanitize_html_class( strtolower( str_replace( '_', '-', get_locale() ) ) );
    471 ?>
    472 <body class="press-this wp-admin wp-core-ui <?php echo $admin_body_class; ?>">
    473 <form action="press-this.php?action=post" method="post">
    474 <div id="poststuff" class="metabox-holder">
    475     <div id="side-sortables" class="press-this-sidebar">
    476         <div class="sleeve">
    477             <?php wp_nonce_field('press-this') ?>
    478             <input type="hidden" name="post_type" id="post_type" value="text"/>
    479             <input type="hidden" name="autosave" id="autosave" />
    480             <input type="hidden" id="original_post_status" name="original_post_status" value="draft" />
    481             <input type="hidden" id="prev_status" name="prev_status" value="draft" />
    482             <input type="hidden" id="post_id" name="post_id" value="<?php echo (int) $post_ID; ?>" />
    483 
    484             <!-- This div holds the photo metadata -->
    485             <div class="photolist"></div>
    486 
    487             <div id="submitdiv" class="postbox">
    488                 <div class="handlediv" title="<?php esc_attr_e( 'Click to toggle' ); ?>"><br /></div>
    489                 <h3 class="hndle"><?php _e('Press This') ?></h3>
    490                 <div class="inside">
    491                     <p id="publishing-actions">
    492                     <?php
    493                         submit_button( __( 'Save Draft' ), 'button', 'draft', false, array( 'id' => 'save' ) );
    494                         if ( current_user_can('publish_posts') ) {
    495                             submit_button( __( 'Publish' ), 'primary', 'publish', false );
    496                         } else {
    497                             echo '<br /><br />';
    498                             submit_button( __( 'Submit for Review' ), 'primary', 'review', false );
    499                         } ?>
    500                         <span class="spinner" style="display: none;"></span>
    501                     </p>
    502                     <?php if ( current_theme_supports( 'post-formats' ) && post_type_supports( 'post', 'post-formats' ) ) :
    503                             $post_formats = get_theme_support( 'post-formats' );
    504                             if ( is_array( $post_formats[0] ) ) :
    505                                 $default_format = get_option( 'default_post_format', '0' );
    506                         ?>
    507                     <p>
    508                         <label for="post_format"><?php _e( 'Post Format:' ); ?>
    509                         <select name="post_format" id="post_format">
    510                             <option value="0"><?php echo get_post_format_string( 'standard' ); ?></option>
    511                         <?php foreach ( $post_formats[0] as $format ): ?>
    512                             <option<?php selected( $default_format, $format ); ?> value="<?php echo esc_attr( $format ); ?>"> <?php echo esc_html( get_post_format_string( $format ) ); ?></option>
    513                         <?php endforeach; ?>
    514                         </select></label>
    515                     </p>
    516                     <?php endif; endif; ?>
    517                 </div>
    518             </div>
    519 
    520             <?php $tax = get_taxonomy( 'category' ); ?>
    521             <div id="categorydiv" class="postbox">
    522                 <div class="handlediv" title="<?php esc_attr_e( 'Click to toggle' ); ?>"><br /></div>
    523                 <h3 class="hndle"><?php _e('Categories') ?></h3>
    524                 <div class="inside">
    525                 <div id="taxonomy-category" class="categorydiv">
    526 
    527                     <ul id="category-tabs" class="category-tabs">
    528                         <li class="tabs"><a href="#category-all"><?php echo $tax->labels->all_items; ?></a></li>
    529                         <li class="hide-if-no-js"><a href="#category-pop"><?php _e( 'Most Used' ); ?></a></li>
    530                     </ul>
    531 
    532                     <div id="category-pop" class="tabs-panel" style="display: none;">
    533                         <ul id="categorychecklist-pop" class="categorychecklist form-no-clear" >
    534                             <?php $popular_ids = wp_popular_terms_checklist( 'category' ); ?>
    535                         </ul>
    536                     </div>
    537 
    538                     <div id="category-all" class="tabs-panel">
    539                         <ul id="categorychecklist" data-wp-lists="list:category" class="categorychecklist form-no-clear">
    540                             <?php wp_terms_checklist($post_ID, array( 'taxonomy' => 'category', 'popular_cats' => $popular_ids ) ) ?>
    541                         </ul>
    542                     </div>
    543 
    544                     <?php if ( !current_user_can($tax->cap->assign_terms) ) : ?>
    545                     <p><em><?php _e('You cannot modify this Taxonomy.'); ?></em></p>
    546                     <?php endif; ?>
    547                     <?php if ( current_user_can($tax->cap->edit_terms) ) : ?>
    548                         <div id="category-adder" class="wp-hidden-children">
    549                             <h4>
    550                                 <a id="category-add-toggle" href="#category-add" class="hide-if-no-js">
    551                                     <?php printf( __( '+ %s' ), $tax->labels->add_new_item ); ?>
    552                                 </a>
    553                             </h4>
    554                             <p id="category-add" class="category-add wp-hidden-child">
    555                                 <label class="screen-reader-text" for="newcategory"><?php echo $tax->labels->add_new_item; ?></label>
    556                                 <input type="text" name="newcategory" id="newcategory" class="form-required form-input-tip" value="<?php echo esc_attr( $tax->labels->new_item_name ); ?>" aria-required="true"/>
    557                                 <label class="screen-reader-text" for="newcategory_parent">
    558                                     <?php echo $tax->labels->parent_item_colon; ?>
    559                                 </label>
    560                                 <?php wp_dropdown_categories( array( 'taxonomy' => 'category', 'hide_empty' => 0, 'name' => 'newcategory_parent', 'orderby' => 'name', 'hierarchical' => 1, 'show_option_none' => '&mdash; ' . $tax->labels->parent_item . ' &mdash;' ) ); ?>
    561                                 <input type="button" id="category-add-submit" data-wp-lists="add:categorychecklist:category-add" class="button category-add-submit" value="<?php echo esc_attr( $tax->labels->add_new_item ); ?>" />
    562                                 <?php wp_nonce_field( 'add-category', '_ajax_nonce-add-category', false ); ?>
    563                                 <span id="category-ajax-response"></span>
    564                             </p>
    565                         </div>
    566                     <?php endif; ?>
    567                 </div>
    568                 </div>
    569             </div>
    570 
    571             <div id="tagsdiv-post_tag" class="postbox">
    572                 <div class="handlediv" title="<?php esc_attr_e( 'Click to toggle' ); ?>"><br /></div>
    573                 <h3><span><?php _e('Tags'); ?></span></h3>
    574                 <div class="inside">
    575                     <div class="tagsdiv" id="post_tag">
    576                         <div class="jaxtag">
    577                             <label class="screen-reader-text" for="newtag"><?php _e('Tags'); ?></label>
    578                             <input type="hidden" name="tax_input[post_tag]" class="the-tags" id="tax-input[post_tag]" value="" />
    579                             <div class="ajaxtag">
    580                                 <input type="text" name="newtag[post_tag]" class="newtag form-input-tip" size="16" autocomplete="off" value="" />
    581                                 <input type="button" class="button tagadd" value="<?php esc_attr_e('Add'); ?>" />
    582                             </div>
    583                         </div>
    584                         <div class="tagchecklist"></div>
    585                     </div>
    586                     <p class="tagcloud-link"><a href="#titlediv" class="tagcloud-link" id="link-post_tag"><?php _e('Choose from the most used tags'); ?></a></p>
    587                 </div>
    588             </div>
    589         </div>
    590     </div>
    591     <div class="posting">
    592 
    593         <div id="wphead">
    594             <h1 id="site-heading">
    595                 <a href="<?php echo get_option('home'); ?>/" target="_blank">
    596                     <span id="site-title"><?php bloginfo('name'); ?></span>
    597                 </a>
    598             </h1>
    599         </div>
    600 
    601         <?php
    602         if ( isset($posted) && intval($posted) ) {
    603             $post_ID = intval($posted); ?>
    604             <div id="message" class="updated">
    605             <p><strong><?php _e('Your post has been saved.'); ?></strong>
    606             <a onclick="window.opener.location.replace(this.href); window.close();" href="<?php echo get_permalink($post_ID); ?>"><?php _e('View post'); ?></a>
    607             | <a href="<?php echo get_edit_post_link( $post_ID ); ?>" onclick="window.opener.location.replace(this.href); window.close();"><?php _e('Edit Post'); ?></a>
    608             | <a href="#" onclick="window.close();"><?php _e('Close Window'); ?></a></p>
    609             </div>
    610         <?php } ?>
    611 
    612         <div id="titlediv">
    613             <div class="titlewrap">
    614                 <input name="title" id="title" class="text" type="text" value="<?php echo esc_attr($title);?>"/>
    615             </div>
    616         </div>
    617 
    618         <div id="waiting" style="display: none"><span class="spinner"></span> <span><?php esc_html_e( 'Loading&hellip;' ); ?></span></div>
    619 
    620         <div id="extra-fields" style="display: none"></div>
    621 
    622         <div class="postdivrich">
    623         <?php
    624 
    625         $editor_settings = array(
    626             'teeny' => true,
    627             'textarea_rows' => '15'
    628         );
    629 
    630         $content = '';
    631         if ( $selection )
    632             $content .= $selection;
    633 
    634         if ( $url ) {
    635             $content .= '<p>';
    636 
    637             if ( $selection )
    638                 $content .= __('via ');
    639 
    640             $content .= sprintf( "<a href='%s'>%s</a>.</p>", esc_url( $url ), esc_html( $title ) );
    641         }
    642 
    643         remove_action( 'media_buttons', 'media_buttons' );
    644         add_action( 'media_buttons', 'press_this_media_buttons' );
    645         function press_this_media_buttons() {
    646             _e( 'Add:' );
    647 
    648             if ( current_user_can('upload_files') ) {
    649                 ?>
    650                 <a id="photo_button" title="<?php esc_attr_e('Insert an Image'); ?>" href="#">
    651                 <img alt="<?php esc_attr_e('Insert an Image'); ?>" src="<?php echo esc_url( admin_url( 'images/media-button-image.gif?ver=20100531' ) ); ?>"/></a>
    652                 <?php
    653             }
    654             ?>
    655             <a id="video_button" title="<?php esc_attr_e('Embed a Video'); ?>" href="#"><img alt="<?php esc_attr_e('Embed a Video'); ?>" src="<?php echo esc_url( admin_url( 'images/media-button-video.gif?ver=20100531' ) ); ?>"/></a>
    656             <?php
    657         }
    658 
    659         wp_editor( $content, 'content', $editor_settings );
    660 
    661         ?>
    662         </div>
    663     </div>
    664 </div>
    665 </form>
    666 <div id="photo-add-url-div" style="display:none;">
    667     <table><tr>
    668     <td><label for="this_photo"><?php _e('URL') ?></label></td>
    669     <td><input type="text" id="this_photo" name="this_photo" class="tb_this_photo text" onkeypress="if(event.keyCode==13) image_selector(this);" /></td>
    670     </tr><tr>
    671     <td><label for="this_photo_description"><?php _e('Description') ?></label></td>
    672     <td><input type="text" id="this_photo_description" name="photo_description" class="tb_this_photo_description text" onkeypress="if(event.keyCode==13) image_selector(this);" value="<?php echo esc_attr($title);?>"/></td>
    673     </tr><tr>
    674     <td><input type="button" class="button" onclick="image_selector(this)" value="<?php esc_attr_e('Insert Image'); ?>" /></td>
    675     </tr></table>
    676 </div>
    677 <?php
    678 /** This action is documented in wp-admin/admin-footer.php */
    679 do_action( 'admin_footer' );
    680 /** This action is documented in wp-admin/admin-footer.php */
    681 do_action( 'admin_print_footer_scripts' );
    682 ?>
    683 <script type="text/javascript">if(typeof wpOnload=='function')wpOnload();</script>
    684 </body>
    685 </html>
     21$GLOBALS['wp_press_this']->html();
  • trunk/src/wp-admin/tools.php

    r27469 r31534  
    3939<div class="tool-box">
    4040    <h3 class="title"><?php _e('Press This') ?></h3>
    41     <p><?php _e('Press This is a bookmarklet: a little app that runs in your browser and lets you grab bits of the web.');?></p>
     41    <div class="postbox press-this-install">
     42        <p><?php _e( 'Press This is a little app that lets you grab bits of the web and create new posts with ease.' );?></p>
     43        <p><?php _e( 'Use Press This to clip text, images and videos from any web page. Then edit and add more straight from Press This before you save or publish it in a post on your site.' ); ?></p>
     44    </div>
    4245
    43     <p><?php _e('Use Press This to clip text, images and videos from any web page. Then edit and add more straight from Press This before you save or publish it in a post on your site.'); ?></p>
    44     <p class="description"><?php _e('Drag-and-drop the following link to your bookmarks bar or right click it and add it to your favorites for a posting shortcut.') ?></p>
    45     <p class="pressthis"><a onclick="return false;" oncontextmenu="if(window.navigator.userAgent.indexOf('WebKit')!=-1||window.navigator.userAgent.indexOf('MSIE')!=-1){jQuery('.pressthis-code').show().find('textarea').focus().select();return false;}" href="<?php echo htmlspecialchars( get_shortcut_link() ); ?>"><span><?php _e('Press This') ?></span></a></p>
    46     <div class="pressthis-code" style="display:none;">
    47     <p class="description"><?php _e('If your bookmarks toolbar is hidden: copy the code below, open your Bookmarks manager, create new bookmark, type Press This into the name field and paste the code into the URL field.') ?></p>
    48     <p><textarea rows="5" cols="120" readonly="readonly"><?php echo htmlspecialchars( get_shortcut_link() ); ?></textarea></p>
     46    <form>
     47    <div class="postbox press-this-install">
     48        <h3><?php _e( 'Install Press This' ); ?></h3>
     49        <h4><?php _e( 'Bookmarklet' ); ?></h4>
     50        <p><?php _e( 'Drag the bookmarklet below to your bookmarks bar. Then, when you\'re on a page you want to share, simply "press" it.' ); ?></p>
     51
     52        <p class="pressthis">
     53            <a class="" onclick="return false;" href="<?php echo htmlspecialchars( get_shortcut_link() ); ?>"><span><?php _e( 'Press This' ) ?></span></a>
     54            <button type="button" class="button button-secondary js-show-pressthis-code-wrap" aria-expanded="false" aria-controls="pressthis-code-wrap">
     55                <span class="dashicons dashicons-clipboard"></span>
     56                <span class="screen-reader-text"><?php _e( 'Copy Press This Bookmarklet' ) ?></span>
     57            </button>
     58        </p>
     59
     60        <div class="hidden js-pressthis-code-wrap">
     61            <p id="pressthis-code-desc">
     62                <?php _e( 'If you can\'t drag it to your bookmarks, copy the following code and create new bookmark. Paste the code into the new bookmark\'s URL field.' ) ?>
     63            </p>
     64            <p>
     65                <textarea class="js-pressthis-code" rows="5" cols="120" readonly="readonly" aria-labelledby="pressthis-code-desc"><?php echo htmlspecialchars( get_shortcut_link() ); ?></textarea>
     66            </p>
     67        </div>
     68
     69        <h4><?php _e( 'Direct link (best for mobile)' ); ?></h4>
     70        <p><?php _e( 'Follow the link to open Press This. Then add it to your device\'s bookmarks or home screen.' ); ?></p>
     71
     72        <p>
     73            <a class="button button-secondary" href="<?php echo htmlspecialchars( admin_url( 'press-this.php' ) ); ?>"><?php _e( 'Open Press This' ) ?></a>
     74        </p>
     75        <script>
     76            jQuery( document ).ready( function( $ ) {
     77                var $showPressThisWrap = $( '.js-show-pressthis-code-wrap' );
     78                var $pressthisCode = $( '.js-pressthis-code' );
     79
     80                $showPressThisWrap.on( 'click', function( event ) {
     81                    var $this = $( this );
     82
     83                    $this.parent().next( '.js-pressthis-code-wrap' ).slideToggle( 200 );
     84                    $this.attr( 'aria-expanded', $this.attr( 'aria-expanded' ) === 'false' ? 'true' : 'false' );
     85                });
     86
     87                // Select Press This code when focusing (tabbing) or clicking the textarea.
     88                $pressthisCode.on( 'click focus', function() {
     89                    var self = this;
     90                    setTimeout( function() { self.select(); }, 50 );
     91                });
     92
     93            });
     94        </script>
    4995    </div>
     96    </form>
    5097</div>
    5198<?php
  • trunk/src/wp-includes/link-template.php

    r31480 r31534  
    25952595 */
    25962596function get_shortcut_link() {
    2597     // In case of breaking changes, version this. #WP20071
    2598     $link = "javascript:
    2599             var d=document,
    2600             w=window,
    2601             e=w.getSelection,
    2602             k=d.getSelection,
    2603             x=d.selection,
    2604             s=(e?e():(k)?k():(x?x.createRange().text:0)),
    2605             f='" . admin_url('press-this.php') . "',
    2606             l=d.location,
    2607             e=encodeURIComponent,
    2608             u=f+'?u='+e(l.href)+'&t='+e(d.title)+'&s='+e(s)+'&v=4';
    2609             a=function(){if(!w.open(u,'t','toolbar=0,resizable=1,scrollbars=1,status=1,width=720,height=570'))l.href=u;};
    2610             if (/Firefox/.test(navigator.userAgent)) setTimeout(a, 0); else a();
    2611             void(0)";
    2612 
    2613     $link = str_replace(array("\r", "\n", "\t"),  '', $link);
     2597    global $is_IE, $wp_version;
     2598
     2599    $bookmarklet_version = 5;
     2600    $link = '';
     2601
     2602    if ( $is_IE ) {
     2603        /**
     2604         * Return the old/shorter bookmarklet code for MSIE 8 and lower,
     2605         * since they only support a max length of ~2000 characters for
     2606         * bookmark[let] URLs, which is way to small for our smarter one.
     2607         * Do update the version number so users do not get the "upgrade your
     2608         * bookmarklet" notice when using PT in those browsers.
     2609         */
     2610        $ua = $_SERVER['HTTP_USER_AGENT'];
     2611       
     2612        if ( ! empty( $ua ) && preg_match( '/\bMSIE (\d)/', $ua, $matches ) && (int) $matches[1] <= 8 ) {
     2613            $link = "javascript:
     2614                var d=document,
     2615                w=window,
     2616                e=w.getSelection,
     2617                k=d.getSelection,
     2618                x=d.selection,
     2619                s=(e?e():(k)?k():(x?x.createRange().text:0)),
     2620                f='" . admin_url('press-this.php') . "',
     2621                l=d.location,
     2622                e=encodeURIComponent,
     2623                u=f+'?u='+e(l.href)+'&t='+e(d.title)+'&s='+e(s)+'&v=" . $bookmarklet_version . "';
     2624                a=function(){if(!w.open(u,'t','toolbar=0,resizable=1,scrollbars=1,status=1,width=600,height=700'))l.href=u;};
     2625                if (/Firefox/.test(navigator.userAgent)) setTimeout(a, 0); else a();
     2626                void(0)";
     2627        }
     2628    }
     2629
     2630    if ( empty( $link ) ) {
     2631        $suffix = '.min';
     2632        $develop_src = false !== strpos( $wp_version, '-src' );
     2633
     2634        if ( $develop_src || ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG ) ) {
     2635            $suffix = '';
     2636        }
     2637
     2638        $url = admin_url( 'press-this.php' ) . '?v=' . $bookmarklet_version;
     2639
     2640        $link = 'javascript:' . file_get_contents( ABSPATH . "wp-admin/js/bookmarklet$suffix.js" );
     2641        $link = str_replace( 'window.pt_url', wp_json_encode( $url ), $link );
     2642    }
     2643
     2644    $link = str_replace( array( "\r", "\n", "\t" ),  '', $link );
    26142645
    26152646    /**
  • trunk/src/wp-includes/script-loader.php

    r31526 r31534  
    440440        $scripts->add( 'postbox', "/wp-admin/js/postbox$suffix.js", array('jquery-ui-sortable'), false, 1 );
    441441
    442         $scripts->add( 'post', "/wp-admin/js/post$suffix.js", array('suggest', 'wp-lists', 'postbox'), false, 1 );
     442        $scripts->add( 'tags-box', "/wp-admin/js/tags-box$suffix.js", array( 'jquery', 'suggest' ), false, 1 );
     443        did_action( 'init' ) && $scripts->localize( 'tags-box', 'tagsBoxL10n', array(
     444            'tagDelimiter' => _x( ',', 'tag delimiter' ),
     445        ) );
     446
     447        $scripts->add( 'post', "/wp-admin/js/post$suffix.js", array( 'suggest', 'wp-lists', 'postbox', 'tags-box' ), false, 1 );
    443448        did_action( 'init' ) && $scripts->localize( 'post', 'postL10n', array(
    444449            'ok' => __('OK'),
     
    462467            'privatelyPublished' => __('Privately Published'),
    463468            'published' => __('Published'),
    464             'comma' => _x( ',', 'tag delimiter' ),
    465469            'saveAlert' => __('The changes you made will be lost if you navigate away from this page.'),
    466470            'savingText' => __('Saving Draft&#8230;'),
    467471        ) );
    468472
     473        $scripts->add( 'press-this', "/wp-admin/js/press-this$suffix.js", array( 'jquery', 'tags-box' ), false, 1 );
     474        did_action( 'init' ) && $scripts->localize( 'press-this', 'pressThisL10n', array(
     475            /**
     476             * press_this_source_string: string displayed before the source attribution string, defaults to "Source:".
     477             *
     478             * @since 4.2
     479             * @see https://github.com/MichaelArestad/Press-This/issues/25
     480             *
     481             * @param string $string Internationalized source string
     482             *
     483             * @return string Source string
     484             */
     485            'source' => apply_filters( 'press_this_source_string', __( 'Source:' ) ),
     486
     487            /**
     488             * press_this_source_link: HTML link format for the source attribution, can control target, class, etc
     489             *
     490             * @since 4.2
     491             * @see https://github.com/MichaelArestad/Press-This/issues/25
     492             *
     493             * @param string $link_format Internationalized link format, %1$s is link href, %2$s is link text
     494             *
     495             * @return string Link markup
     496             */
     497            'sourceLink' => apply_filters( 'press_this_source_link', __( '<a href="%1$s">%2$s</a>' ) ),
     498            'newPost' => __( 'Title' ),
     499            'unexpectedError' => __( 'Sorry, but an unexpected error occurred.' ),
     500            'saveAlert' => __( 'The changes you made will be lost if you navigate away from this page.' ),
     501            'allMediaHeading' => __( 'Suggested media' ),
     502            'suggestedEmbedAlt' => __( 'Suggested embed #%d' ),
     503            'suggestedImgAlt' => __( 'Suggested image #%d' ),
     504        ) );
     505       
    469506        $scripts->add( 'editor-expand', "/wp-admin/js/editor-expand$suffix.js", array( 'jquery' ), false, 1 );
    470507
     
    634671    $styles->add( 'customize-controls', "/wp-admin/css/customize-controls$suffix.css", array( 'wp-admin', 'colors', 'ie', 'imgareaselect' ) );
    635672    $styles->add( 'customize-widgets',  "/wp-admin/css/customize-widgets$suffix.css", array( 'wp-admin', 'colors' ) );
     673    $styles->add( 'press-this',         "/wp-admin/css/press-this$suffix.css", array( 'open-sans' ) );
     674
    636675    $styles->add( 'ie',                 "/wp-admin/css/ie$suffix.css" );
    637 
    638676    $styles->add_data( 'ie', 'conditional', 'lte IE 7' );
    639677
Note: See TracChangeset for help on using the changeset viewer.