chrismunden / cmsfromscratch

Automatically exported from code.google.com/p/cmsfromscratch
0 stars 0 forks source link

set rows are not displayed in IE7 #3

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
What steps will reproduce the problem?
1. in IE7, create a set template
2. add a set to a page based on this template
3. try to fill the set with rows

What is the expected output? 
empty boxes you can fill with text

What do you see instead?
no textboxes, only the up and down arrows
You cannot add rows
(see attached picture)

What version of the product are you using? 
SMCMS v 1.1.3 - 2007/10/31

On what operating system?
Editor on Windows Vista
Website on Linux / apache

Original issue reported on code.google.com by arjen.ru...@gmail.com on 11 Feb 2008 at 7:15

Attachments:

GoogleCodeExporter commented 8 years ago
Solved by doing this:

In file edit-set.js, function 'addDataCell', 
change: 
newTextInput.style.width = "20em;" ;
into:
newTextInput.style.width = "20em" ;

Original comment by arjen.ru...@gmail.com on 17 Feb 2008 at 12:12

GoogleCodeExporter commented 8 years ago
I made the change suggested by Arjen but there is still an issue with sets 
being displayed in ie7 if you use links. 

Original comment by hellom...@gmail.com on 19 Feb 2008 at 5:39

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
Thanks for the tip. We noticed this defect a couple of weeks ago too. Strange 
why IE7
would barf though. I'll try to find a fix in the next couple of weeks.

Original comment by designfr...@gmail.com on 20 Feb 2008 at 4:12

GoogleCodeExporter commented 8 years ago
I searced arround a little more and found that in file 'edit-set.js' there's a 
function addRow(). Apparently this function first checks if there are any rows 
in 
the set. If not [if (isBlank == true)], it calls another function addDataCell().

addDataCell() tries to insert a new blank line before a th-tag:

'var deleteRowCell = targetRow.getElementsByTagName("th")[0] ;
'targetRow.insertBefore(newTD, deleteRowCell) ; 

but this function is called in addRow() before a th-element is created.

When I put the the following chunk of code from addRow():

if (isBlank == true) {
// For each column, create a new TD with the appropriate inputs in
var numCols = countCols() ;
  for (var iCol=0; iCol<numCols; iCol++) {
    colDataType = colHeads[iCol].getElementsByTagName("input")[1].value ;
    addDataCell(newRow, colDataType, "") ;
  }
}

behind the code for creation of the first th-element (of the arrow up), this 
means 
in the addRow function behind:
newRow.appendChild(newUpCell) ;

, I got a perfectly good first blank line in my set in IE7.

Unfortunately, this only seems to work when you don't use images in your set.

I hope this can help?

Original comment by arjen.ru...@gmail.com on 21 Feb 2008 at 8:58

GoogleCodeExporter commented 8 years ago
I got the sets displayed fine now in IE7:

my comment above + 

in core.js, IE7 gives an error on line nr 35:
if (element.href) element.href="javascript:void('');" ;
comment that line out

in edit-set.js:
function addDataCell()
case file:
comment out: //newSelectLinkButton.type = "button" ;
case link:
comment out: //newSelectLinkButton.type = "button" ;

after this Sets seem to work for me in ie7, images, links and files too

Arjen

Original comment by arjen.ru...@gmail.com on 28 Mar 2008 at 11:44

GoogleCodeExporter commented 8 years ago
Hi Arjen ... I'm trying to get this to work for a client of mine. However, 
being a 
newbie with JS I'm struggling to apply your fix.

In edit-set.js, are you telling me to move (line 138-145):

if (isBlank == true) {
// For each column, create a new TD with the appropriate inputs in
var numCols = countCols() ;
  for (var iCol=0; iCol<numCols; iCol++) {
    colDataType = colHeads[iCol].getElementsByTagName("input")[1].value ;
    addDataCell(newRow, colDataType, "") ;
  }
}

below the following code (line 286-287):

'var deleteRowCell = targetRow.getElementsByTagName("th")[0] ;
'targetRow.insertBefore(newTD, deleteRowCell) ;

Apologies if this is unclear.

Original comment by hews...@gmail.com on 30 May 2008 at 1:03

GoogleCodeExporter commented 8 years ago
I've found a fix that seems to work - and it's miniscule!

On line 199... newTextInput.style.width = "20em;"
Just remove the semicolon >>> newTextInput.style.width = "20em" ;

I'll include this in the next upload.
Ben

Original comment by ben.hunt...@gmail.com on 5 Jun 2008 at 9:26

GoogleCodeExporter commented 8 years ago

Original comment by ben.hunt...@gmail.com on 5 Jun 2008 at 9:27

GoogleCodeExporter commented 8 years ago
On testing, we found another couple of bugs in IE..

One was that the JS was failing to add the <td>s before the final <th>s 
(delete, up ,
down), as IE hadn't finished the creation of those <th>s yet.. A simple check, 
pause, 
try again loop seems to have fixed that.

The other bug affected the "link" data type only. IE wouldn't let me set the 
text on
a <button> control using innerHTML property, so I've switched to building & 
appending
a text node.

Seems to work... Please verify.

Original comment by ben.hunt...@gmail.com on 5 Jun 2008 at 2:59

Attachments:

GoogleCodeExporter commented 8 years ago
Subsequent fix. Use this version of the file.

- Ben

Original comment by designfr...@gmail.com on 6 Jun 2008 at 9:28

Attachments: